]> git.proxmox.com Git - ceph.git/commitdiff
import ceph octopus 15.2.17
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 25 Aug 2022 15:30:28 +0000 (17:30 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 25 Aug 2022 15:30:28 +0000 (17:30 +0200)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
430 files changed:
ceph/CMakeLists.txt
ceph/PendingReleaseNotes
ceph/admin/doc-read-the-docs.txt
ceph/admin/doc-requirements.txt
ceph/alpine/APKBUILD
ceph/ceph.spec
ceph/ceph.spec.in
ceph/changelog.upstream
ceph/cmake/modules/BuildDPDK.cmake
ceph/doc/conf.py
ceph/doc/dev/developer_guide/basic-workflow.rst
ceph/doc/dev/developer_guide/essentials.rst
ceph/doc/dev/developer_guide/issue-tracker.rst
ceph/doc/dev/developer_guide/tests-integration-tests.rst
ceph/doc/dev/developer_guide/tests-unit-tests.rst
ceph/doc/man/8/rbd.rst
ceph/doc/mgr/prometheus.rst
ceph/doc/radosgw/s3.rst
ceph/doc/rbd/rbd-mirroring.rst
ceph/doc/start/hardware-recommendations.rst
ceph/doc/start/intro.rst
ceph/monitoring/grafana/dashboards/host-details.json
ceph/monitoring/grafana/dashboards/hosts-overview.json
ceph/monitoring/grafana/dashboards/osd-device-details.json
ceph/qa/.teuthology_branch [deleted file]
ceph/qa/rbd/krbd_default_map_options.t [new file with mode: 0644]
ceph/qa/suites/krbd/basic/ms_mode/crc$/.qa [new symlink]
ceph/qa/suites/krbd/basic/ms_mode/crc$/crc-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/basic/ms_mode/crc$/crc.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/basic/ms_mode/crc.yaml [deleted file]
ceph/qa/suites/krbd/basic/ms_mode/legacy$/.qa [new symlink]
ceph/qa/suites/krbd/basic/ms_mode/legacy$/legacy-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/basic/ms_mode/legacy$/legacy.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/basic/ms_mode/legacy.yaml [deleted file]
ceph/qa/suites/krbd/fsx/ms_mode$/crc-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/fsx/ms_mode$/legacy-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/fsx/ms_mode$/prefer-crc.yaml [deleted file]
ceph/qa/suites/krbd/ms_modeless/% [new file with mode: 0644]
ceph/qa/suites/krbd/ms_modeless/.qa [new symlink]
ceph/qa/suites/krbd/ms_modeless/bluestore-bitmap.yaml [new symlink]
ceph/qa/suites/krbd/ms_modeless/ceph/.qa [new symlink]
ceph/qa/suites/krbd/ms_modeless/ceph/ceph.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/ms_modeless/clusters/.qa [new symlink]
ceph/qa/suites/krbd/ms_modeless/clusters/fixed-3.yaml [new symlink]
ceph/qa/suites/krbd/ms_modeless/conf.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/ms_modeless/tasks/.qa [new symlink]
ceph/qa/suites/krbd/ms_modeless/tasks/krbd_default_map_options.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/ms_modeless/tasks/krbd_rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/.qa [new symlink]
ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/crc-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/crc.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc.yaml [deleted file]
ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/.qa [new symlink]
ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/legacy-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/legacy.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy.yaml [deleted file]
ceph/qa/suites/krbd/rbd/ms_mode/crc$/.qa [new symlink]
ceph/qa/suites/krbd/rbd/ms_mode/crc$/crc-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd/ms_mode/crc$/crc.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd/ms_mode/crc.yaml [deleted file]
ceph/qa/suites/krbd/rbd/ms_mode/legacy$/.qa [new symlink]
ceph/qa/suites/krbd/rbd/ms_mode/legacy$/legacy-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd/ms_mode/legacy$/legacy.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd/ms_mode/legacy.yaml [deleted file]
ceph/qa/suites/krbd/singleton/ms_mode$/crc-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/singleton/ms_mode$/legacy-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/singleton/ms_mode$/prefer-crc.yaml [deleted file]
ceph/qa/suites/krbd/thrash/ms_mode$/crc-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/thrash/ms_mode$/legacy-rxbounce.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/thrash/ms_mode$/prefer-crc.yaml [deleted file]
ceph/qa/suites/rados/thrash-erasure-code-big/thrashers/mapgap.yaml
ceph/qa/suites/rados/thrash-erasure-code-big/thrashers/pggrow.yaml
ceph/qa/suites/rbd/singleton/all/qemu-iotests-no-cache.yaml
ceph/qa/suites/rbd/singleton/all/qemu-iotests-writearound.yaml
ceph/qa/suites/rbd/singleton/all/qemu-iotests-writeback.yaml
ceph/qa/suites/rbd/singleton/all/qemu-iotests-writethrough.yaml
ceph/qa/suites/rgw/tempest/tasks/rgw_tempest.yaml
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/.qa
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/start.yaml
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml [deleted file]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/octopus-client-x.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa [deleted symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml [deleted file]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml [deleted file]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-workload/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-workload/rbd_notification_tests.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa [deleted symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml [deleted file]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/% [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/+ [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/openstack.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/start.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/1-install/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/1-install/octopus-client-x.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/2-workload/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/2-workload/rbd_notification_tests.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/supported/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/supported/ubuntu_20.04.yaml [new symlink]
ceph/qa/suites/upgrade/nautilus-x/parallel/3-upgrade-sequence/upgrade-mon-osd-mds.yaml
ceph/qa/tasks/ceph.py
ceph/qa/tasks/cephfs/test_data_scan.py
ceph/qa/tasks/cephfs/test_strays.py
ceph/qa/tasks/cephfs/test_volumes.py
ceph/qa/tasks/daemonwatchdog.py
ceph/qa/tasks/qemu.py
ceph/qa/tasks/s3a_hadoop.py
ceph/qa/workunits/cephtool/test.sh
ceph/qa/workunits/rbd/cli_generic.sh
ceph/qa/workunits/rbd/krbd_rxbounce.sh [new file with mode: 0755]
ceph/qa/workunits/rbd/qemu-iotests.sh
ceph/src/.git_version
ceph/src/ceph-volume/ceph_volume/api/lvm.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/batch.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/common.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/migrate.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/zap.py
ceph/src/ceph-volume/ceph_volume/devices/raw/common.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_activate.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_batch.py
ceph/src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py
ceph/src/ceph-volume/ceph_volume/util/arg_validators.py
ceph/src/ceph-volume/ceph_volume/util/device.py
ceph/src/cephadm/cephadm
ceph/src/client/Inode.cc
ceph/src/cls/rbd/cls_rbd_types.cc
ceph/src/cls/rbd/cls_rbd_types.h
ceph/src/cls/rgw/cls_rgw.cc
ceph/src/cls/rgw/cls_rgw_client.cc
ceph/src/cls/rgw/cls_rgw_client.h
ceph/src/cls/rgw/cls_rgw_const.h
ceph/src/cls/rgw/cls_rgw_ops.h
ceph/src/cls/rgw/cls_rgw_types.h
ceph/src/common/WorkQueue.cc
ceph/src/common/bit_vector.hpp
ceph/src/common/ceph_crypto.cc
ceph/src/common/ceph_crypto.h
ceph/src/common/ceph_time.cc
ceph/src/common/ceph_time.h
ceph/src/common/cohort_lru.h
ceph/src/common/iso_8601.cc
ceph/src/common/legacy_config_opts.h
ceph/src/common/options.cc
ceph/src/googletest/.travis.yml
ceph/src/googletest/BUILD.bazel
ceph/src/googletest/CMakeLists.txt
ceph/src/googletest/CONTRIBUTING.md
ceph/src/googletest/README.md
ceph/src/googletest/WORKSPACE
ceph/src/googletest/appveyor.yml
ceph/src/googletest/ci/build-linux-bazel.sh
ceph/src/googletest/ci/env-linux.sh
ceph/src/googletest/ci/env-osx.sh
ceph/src/googletest/ci/install-linux.sh
ceph/src/googletest/ci/install-osx.sh
ceph/src/googletest/ci/log-config.sh
ceph/src/googletest/ci/travis.sh
ceph/src/googletest/googlemock/CMakeLists.txt
ceph/src/googletest/googlemock/README.md
ceph/src/googletest/googlemock/cmake/gmock.pc.in
ceph/src/googletest/googlemock/cmake/gmock_main.pc.in
ceph/src/googletest/googlemock/docs/cheat_sheet.md
ceph/src/googletest/googlemock/docs/community_created_documentation.md [new file with mode: 0644]
ceph/src/googletest/googlemock/docs/cook_book.md
ceph/src/googletest/googlemock/docs/for_dummies.md
ceph/src/googletest/googlemock/docs/gmock_faq.md
ceph/src/googletest/googlemock/docs/pump_manual.md
ceph/src/googletest/googlemock/include/gmock/gmock-actions.h
ceph/src/googletest/googlemock/include/gmock/gmock-function-mocker.h
ceph/src/googletest/googlemock/include/gmock/gmock-generated-actions.h
ceph/src/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump
ceph/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h [deleted file]
ceph/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump [deleted file]
ceph/src/googletest/googlemock/include/gmock/gmock-generated-matchers.h [deleted file]
ceph/src/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump [deleted file]
ceph/src/googletest/googlemock/include/gmock/gmock-matchers.h
ceph/src/googletest/googlemock/include/gmock/gmock-more-actions.h [deleted file]
ceph/src/googletest/googlemock/include/gmock/gmock-more-matchers.h
ceph/src/googletest/googlemock/include/gmock/gmock-nice-strict.h
ceph/src/googletest/googlemock/include/gmock/gmock-spec-builders.h
ceph/src/googletest/googlemock/include/gmock/gmock.h
ceph/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h
ceph/src/googletest/googlemock/include/gmock/internal/gmock-pp.h
ceph/src/googletest/googlemock/scripts/fuse_gmock_files.py
ceph/src/googletest/googlemock/scripts/generator/cpp/ast.py
ceph/src/googletest/googlemock/scripts/generator/cpp/gmock_class.py
ceph/src/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py
ceph/src/googletest/googlemock/src/gmock-matchers.cc
ceph/src/googletest/googlemock/src/gmock-spec-builders.cc
ceph/src/googletest/googlemock/src/gmock.cc
ceph/src/googletest/googlemock/test/BUILD.bazel
ceph/src/googletest/googlemock/test/gmock-actions_test.cc
ceph/src/googletest/googlemock/test/gmock-function-mocker_test.cc
ceph/src/googletest/googlemock/test/gmock-generated-actions_test.cc
ceph/src/googletest/googlemock/test/gmock-generated-function-mockers_test.cc [deleted file]
ceph/src/googletest/googlemock/test/gmock-generated-matchers_test.cc [deleted file]
ceph/src/googletest/googlemock/test/gmock-internal-utils_test.cc
ceph/src/googletest/googlemock/test/gmock-matchers_test.cc
ceph/src/googletest/googlemock/test/gmock-more-actions_test.cc
ceph/src/googletest/googlemock/test/gmock-nice-strict_test.cc
ceph/src/googletest/googlemock/test/gmock_all_test.cc
ceph/src/googletest/googlemock/test/gmock_output_test_golden.txt
ceph/src/googletest/googletest/CMakeLists.txt
ceph/src/googletest/googletest/README.md
ceph/src/googletest/googletest/cmake/gtest_main.pc.in
ceph/src/googletest/googletest/cmake/internal_utils.cmake
ceph/src/googletest/googletest/docs/advanced.md
ceph/src/googletest/googletest/docs/faq.md
ceph/src/googletest/googletest/docs/pkgconfig.md
ceph/src/googletest/googletest/docs/primer.md
ceph/src/googletest/googletest/include/gtest/gtest-death-test.h
ceph/src/googletest/googletest/include/gtest/gtest-matchers.h
ceph/src/googletest/googletest/include/gtest/gtest-param-test.h
ceph/src/googletest/googletest/include/gtest/gtest-printers.h
ceph/src/googletest/googletest/include/gtest/gtest.h
ceph/src/googletest/googletest/include/gtest/internal/gtest-internal.h
ceph/src/googletest/googletest/include/gtest/internal/gtest-param-util.h
ceph/src/googletest/googletest/include/gtest/internal/gtest-port-arch.h
ceph/src/googletest/googletest/include/gtest/internal/gtest-port.h
ceph/src/googletest/googletest/include/gtest/internal/gtest-string.h
ceph/src/googletest/googletest/include/gtest/internal/gtest-type-util.h
ceph/src/googletest/googletest/samples/prime_tables.h
ceph/src/googletest/googletest/src/gtest-death-test.cc
ceph/src/googletest/googletest/src/gtest-filepath.cc
ceph/src/googletest/googletest/src/gtest-internal-inl.h
ceph/src/googletest/googletest/src/gtest-matchers.cc
ceph/src/googletest/googletest/src/gtest-port.cc
ceph/src/googletest/googletest/src/gtest-printers.cc
ceph/src/googletest/googletest/src/gtest-typed-test.cc
ceph/src/googletest/googletest/src/gtest.cc
ceph/src/googletest/googletest/test/BUILD.bazel
ceph/src/googletest/googletest/test/googletest-death-test-test.cc
ceph/src/googletest/googletest/test/googletest-death-test_ex_test.cc
ceph/src/googletest/googletest/test/googletest-env-var-test.py
ceph/src/googletest/googletest/test/googletest-env-var-test_.cc
ceph/src/googletest/googletest/test/googletest-failfast-unittest.py [new file with mode: 0755]
ceph/src/googletest/googletest/test/googletest-failfast-unittest_.cc [new file with mode: 0644]
ceph/src/googletest/googletest/test/googletest-json-output-unittest.py
ceph/src/googletest/googletest/test/googletest-output-test-golden-lin.txt
ceph/src/googletest/googletest/test/googletest-output-test_.cc
ceph/src/googletest/googletest/test/googletest-param-test-test.cc
ceph/src/googletest/googletest/test/googletest-port-test.cc
ceph/src/googletest/googletest/test/googletest-printers-test.cc
ceph/src/googletest/googletest/test/googletest-shuffle-test_.cc
ceph/src/googletest/googletest/test/googletest-test2_test.cc [deleted file]
ceph/src/googletest/googletest/test/gtest-typed-test_test.cc
ceph/src/googletest/googletest/test/gtest-unittest-api_test.cc
ceph/src/googletest/googletest/test/gtest_help_test.py
ceph/src/googletest/googletest/test/gtest_list_output_unittest.py
ceph/src/googletest/googletest/test/gtest_list_output_unittest_.cc
ceph/src/googletest/googletest/test/gtest_test_utils.py
ceph/src/googletest/googletest/test/gtest_unittest.cc
ceph/src/googletest/googletest/test/gtest_xml_outfiles_test.py
ceph/src/googletest/googletest/test/gtest_xml_output_unittest.py
ceph/src/googletest/googletest/test/gtest_xml_output_unittest_.cc
ceph/src/googletest/googletest/test/gtest_xml_test_utils.py
ceph/src/include/denc.h
ceph/src/krbd.cc
ceph/src/librados/librados_c.cc
ceph/src/librados/librados_cxx.cc
ceph/src/librbd/ImageWatcher.cc
ceph/src/librbd/ImageWatcher.h
ceph/src/librbd/api/Config.cc
ceph/src/librbd/api/Image.cc
ceph/src/librbd/cache/WriteAroundObjectDispatch.cc
ceph/src/librbd/deep_copy/ImageCopyRequest.cc
ceph/src/librbd/deep_copy/ImageCopyRequest.h
ceph/src/librbd/librbd.cc
ceph/src/librbd/mirror/snapshot/CreatePrimaryRequest.cc
ceph/src/mds/CInode.cc
ceph/src/mds/Locker.cc
ceph/src/mds/MDCache.cc
ceph/src/mds/MDLog.cc
ceph/src/mds/MDSDaemon.cc
ceph/src/mds/Server.cc
ceph/src/messages/MOSDMarkMeDown.h
ceph/src/messages/MOSDPing.h
ceph/src/mgr/DaemonServer.cc
ceph/src/mon/MonCommands.h
ceph/src/mon/Monitor.cc
ceph/src/mon/MonitorDBStore.h
ceph/src/mon/OSDMonitor.cc
ceph/src/os/bluestore/AvlAllocator.cc
ceph/src/osd/OSD.cc
ceph/src/osd/OSDMap.cc
ceph/src/osd/OSDMap.h
ceph/src/osd/OSDMapMapping.h
ceph/src/osd/OpRequest.h
ceph/src/osd/PeeringState.cc
ceph/src/osd/PrimaryLogPG.cc
ceph/src/osd/SnapMapper.cc
ceph/src/osd/SnapMapper.h
ceph/src/pybind/mgr/cephadm/inventory.py
ceph/src/pybind/mgr/cephadm/module.py
ceph/src/pybind/mgr/cephadm/services/cephadmservice.py
ceph/src/pybind/mgr/cephadm/services/monitoring.py
ceph/src/pybind/mgr/cephadm/services/osd.py
ceph/src/pybind/mgr/cephadm/tests/fixtures.py
ceph/src/pybind/mgr/cephadm/tests/test_cephadm.py
ceph/src/pybind/mgr/cephadm/tests/test_osd_removal.py
ceph/src/pybind/mgr/cephadm/tests/test_services.py
ceph/src/pybind/mgr/dashboard/cherrypy_backports.py
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/index.html
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.1ac2b6e56666a64e1346.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.1ac2b6e56666a64e1346.js.LICENSE.txt [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.aa7c24ee4ac262fc4e51.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.aa7c24ee4ac262fc4e51.js.LICENSE.txt [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/telemetry/telemetry.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/telemetry/telemetry.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/telemetry/telemetry.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/layouts/workbench-layout/workbench-layout.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/motd/motd.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/motd/motd.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/styles/defaults.scss
ceph/src/pybind/mgr/devicehealth/module.py
ceph/src/pybind/mgr/mgr_util.py
ceph/src/pybind/mgr/orchestrator/_interface.py
ceph/src/pybind/mgr/prometheus/module.py
ceph/src/pybind/mgr/prometheus/test_module.py [new file with mode: 0644]
ceph/src/pybind/mgr/rbd_support/mirror_snapshot_schedule.py
ceph/src/pybind/mgr/rbd_support/schedule.py
ceph/src/pybind/mgr/rbd_support/trash_purge_schedule.py
ceph/src/pybind/mgr/requirements.txt
ceph/src/pybind/mgr/telemetry/module.py
ceph/src/pybind/mgr/tox.ini
ceph/src/pybind/mgr/volumes/fs/async_cloner.py
ceph/src/pybind/mgr/volumes/fs/async_job.py
ceph/src/pybind/mgr/volumes/fs/fs_util.py
ceph/src/pybind/mgr/volumes/fs/operations/group.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/metadata_manager.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/subvolume_v1.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/subvolume_v2.py
ceph/src/pybind/mgr/volumes/fs/operations/volume.py
ceph/src/pybind/mgr/volumes/fs/purge_queue.py
ceph/src/pybind/mgr/volumes/fs/vol_spec.py
ceph/src/pybind/mgr/volumes/fs/volume.py
ceph/src/pybind/mgr/volumes/module.py
ceph/src/python-common/ceph/deployment/inventory.py
ceph/src/python-common/ceph/deployment/service_spec.py
ceph/src/rbd_fuse/rbd-fuse.cc
ceph/src/rgw/rgw_admin.cc
ceph/src/rgw/rgw_amqp.cc
ceph/src/rgw/rgw_bucket.cc
ceph/src/rgw/rgw_coroutine.cc
ceph/src/rgw/rgw_crypt.cc
ceph/src/rgw/rgw_etag_verifier.h
ceph/src/rgw/rgw_file.cc
ceph/src/rgw/rgw_file.h
ceph/src/rgw/rgw_keystone.cc
ceph/src/rgw/rgw_lc.cc
ceph/src/rgw/rgw_op.cc
ceph/src/rgw/rgw_op.h
ceph/src/rgw/rgw_putobj_processor.cc
ceph/src/rgw/rgw_rados.cc
ceph/src/rgw/rgw_rados.h
ceph/src/rgw/rgw_reshard.cc
ceph/src/rgw/rgw_rest_role.cc
ceph/src/rgw/rgw_rest_s3.cc
ceph/src/rgw/rgw_rest_swift.cc
ceph/src/rgw/rgw_sal.cc
ceph/src/rgw/rgw_sal.h
ceph/src/rgw/rgw_tools.h
ceph/src/rgw/rgw_url.cc
ceph/src/rgw/rgw_zone.cc
ceph/src/rgw/services/svc_user_rados.cc
ceph/src/rgw/services/svc_zone.cc
ceph/src/test/bufferlist.cc
ceph/src/test/cli/rbd/help.t
ceph/src/test/cls_rgw/test_cls_rgw.cc
ceph/src/test/librados/pool.cc
ceph/src/test/librados/tier_cxx.cc
ceph/src/test/librbd/cache/test_mock_WriteAroundObjectDispatch.cc
ceph/src/test/librbd/deep_copy/test_mock_ImageCopyRequest.cc
ceph/src/test/librbd/mirror/snapshot/test_mock_CreatePrimaryRequest.cc
ceph/src/test/librbd/test_librbd.cc
ceph/src/test/librbd/test_mirroring.cc
ceph/src/test/osd/TestOSDMap.cc
ceph/src/test/rbd_mirror/image_replayer/journal/test_mock_PrepareReplayRequest.cc
ceph/src/test/rbd_mirror/image_replayer/snapshot/test_mock_Replayer.cc
ceph/src/test/rbd_mirror/image_replayer/test_mock_BootstrapRequest.cc
ceph/src/test/rbd_mirror/test_mock_ImageReplayer.cc
ceph/src/test/rgw/test_rgw_url.cc
ceph/src/test/test_rbd_replay.cc
ceph/src/test/test_snap_mapper.cc
ceph/src/tools/ceph_objectstore_tool.cc
ceph/src/tools/cephfs/cephfs-shell
ceph/src/tools/rbd/OptionPrinter.cc
ceph/src/tools/rbd/Schedule.cc
ceph/src/tools/rbd/Schedule.h
ceph/src/tools/rbd/Utils.cc
ceph/src/tools/rbd/Utils.h
ceph/src/tools/rbd/action/Group.cc
ceph/src/tools/rbd/action/Kernel.cc
ceph/src/tools/rbd/action/List.cc
ceph/src/tools/rbd/action/MirrorImage.cc
ceph/src/tools/rbd/action/MirrorPool.cc
ceph/src/tools/rbd/action/MirrorSnapshotSchedule.cc
ceph/src/tools/rbd/action/Namespace.cc
ceph/src/tools/rbd/action/Perf.cc
ceph/src/tools/rbd/action/Pool.cc
ceph/src/tools/rbd/action/Trash.cc
ceph/src/tools/rbd/action/TrashPurgeSchedule.cc
ceph/src/tools/rbd_mirror/ImageReplayer.cc
ceph/src/tools/rbd_mirror/ImageReplayer.h
ceph/src/tools/rbd_mirror/PoolReplayer.cc
ceph/src/tools/rbd_mirror/image_replayer/BootstrapRequest.cc
ceph/src/tools/rbd_mirror/image_replayer/PrepareRemoteImageRequest.cc
ceph/src/tools/rbd_mirror/image_replayer/StateBuilder.cc
ceph/src/tools/rbd_mirror/image_replayer/StateBuilder.h
ceph/src/tools/rbd_mirror/image_replayer/journal/PrepareReplayRequest.cc
ceph/src/tools/rbd_mirror/image_replayer/journal/PrepareReplayRequest.h
ceph/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.cc
ceph/src/tools/rbd_mirror/image_replayer/snapshot/PrepareReplayRequest.h
ceph/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc
ceph/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.cc
ceph/systemd/ceph-mon@.service.in

index b7bd09da76585b112a185975c4227c9a45dc1657..267e565cf217c4f8fa04009561a5a5245bec8ca8 100644 (file)
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.10.2)
 # remove cmake/modules/FindPython* once 3.12 is required
 
 project(ceph
-  VERSION 15.2.16
+  VERSION 15.2.17
   LANGUAGES CXX C ASM)
 
 foreach(policy
index 3cd108a95b1a768c5a048a3c051505262f84c4ed..f3de1ced887e00b46d890ee81da70c9a4a95893e 100644 (file)
@@ -1,3 +1,9 @@
+15.2.16
+-------
+
+* A health warning will now be reported if the ``require-osd-release`` flag is not
+  set to the appropriate release after a cluster upgrade.
+
 15.2.14
 -------
 
index b65cc4638491a583db59c7aeb0d5f8c3cfbfbee1..7e0ecc86d75b004be2dcb37f5f9bca6dd1023893 100644 (file)
@@ -1,2 +1,2 @@
 plantweb
-git+https://github.com/readthedocs/readthedocs-sphinx-search@master
+git+https://github.com/readthedocs/readthedocs-sphinx-search@main
index 1aaac3fd96f67c17d0b1b2276b0961a0f2814793..45c03af9ed421482e87babf9326d6e89044c2ce7 100644 (file)
@@ -1,4 +1,4 @@
-Sphinx == 3.5.4
+Sphinx == 4.4.0
 git+https://github.com/ceph/sphinx-ditaa.git@py3#egg=sphinx-ditaa
 breathe >= 4.20.0
 pyyaml >= 5.1.2
index a3134e196e816b37a1e4500538965a7b550a94d9..43a50614428d4d079dfdc2407311b54d5ed704e9 100644 (file)
@@ -1,7 +1,7 @@
 # Contributor: John Coyle <dx9err@gmail.com>
 # Maintainer: John Coyle <dx9err@gmail.com>
 pkgname=ceph
-pkgver=15.2.16
+pkgver=15.2.17
 pkgrel=0
 pkgdesc="Ceph is a distributed object store and file system"
 pkgusers="ceph"
@@ -63,7 +63,7 @@ makedepends="
        xmlstarlet
        yasm
 "
-source="ceph-15.2.16.tar.bz2"
+source="ceph-15.2.17.tar.bz2"
 subpackages="
        $pkgname-base
        $pkgname-common
@@ -116,7 +116,7 @@ _sysconfdir=/etc
 _udevrulesdir=/etc/udev/rules.d
 _python_sitelib=/usr/lib/python2.7/site-packages
 
-builddir=$srcdir/ceph-15.2.16
+builddir=$srcdir/ceph-15.2.17
 
 build() {
        export CEPH_BUILD_VIRTUALENV=$builddir
index cc21e93a26a44160790dae59a1fbc006af17c155..e5987e3131562123c094d738e0b49a6cdd01a8fd 100644 (file)
@@ -98,7 +98,7 @@
 # main package definition
 #################################################################################
 Name:          ceph
-Version:       15.2.16
+Version:       15.2.17
 Release:       0%{?dist}
 %if 0%{?fedora} || 0%{?rhel}
 Epoch:         2
@@ -114,7 +114,7 @@ License:    LGPL-2.1 and LGPL-3.0 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-
 Group:         System/Filesystems
 %endif
 URL:           http://ceph.com/
-Source0:       %{?_remote_tarball_prefix}ceph-15.2.16.tar.bz2
+Source0:       %{?_remote_tarball_prefix}ceph-15.2.17.tar.bz2
 %if 0%{?suse_version}
 # _insert_obs_source_lines_here
 ExclusiveArch:  x86_64 aarch64 ppc64le s390x
@@ -1141,7 +1141,7 @@ This package provides Ceph’s default alerts for Prometheus.
 # common
 #################################################################################
 %prep
-%autosetup -p1 -n ceph-15.2.16
+%autosetup -p1 -n ceph-15.2.17
 
 %build
 # LTO can be enabled as soon as the following GCC bug is fixed:
@@ -1462,7 +1462,7 @@ exit 0
 %{_mandir}/man8/cephadm.8*
 %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm
 %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm/.ssh
-%attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
+%config(noreplace) %attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
 
 %files common
 %dir %{_docdir}/ceph
index cece4e90120b0983d60e0c16bd78d36959314213..8ac2681fadb195109e77d33ca29dd57200e787ae 100644 (file)
@@ -1462,7 +1462,7 @@ exit 0
 %{_mandir}/man8/cephadm.8*
 %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm
 %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm/.ssh
-%attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
+%config(noreplace) %attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
 
 %files common
 %dir %{_docdir}/ceph
index c9d3407341bd62d74d535daeafc65f6116e5882c..8c99c90a898210b8a2f2c3ca15651eb3e77f83f8 100644 (file)
@@ -1,7 +1,13 @@
-ceph (15.2.16-1bionic) bionic; urgency=medium
+ceph (15.2.17-1bionic) bionic; urgency=medium
 
 
- -- Jenkins Build Slave User <jenkins-build@braggi02.front.sepia.ceph.com>  Tue, 01 Mar 2022 06:57:11 +0000
+ -- Jenkins Build Slave User <jenkins-build@braggi10.front.sepia.ceph.com>  Tue, 09 Aug 2022 17:17:43 +0000
+
+ceph (15.2.17-1) stable; urgency=medium
+
+  * New upstream release
+
+ -- Ceph Release Team <ceph-maintainers@ceph.io>  Tue, 09 Aug 2022 17:06:59 +0000
 
 ceph (15.2.16-1) stable; urgency=medium
 
index a830a99a4b184c297dca5257b50af4c609ae05c5..1bf2a3adc5026dd39a3de981d73928b5f427fbf8 100644 (file)
@@ -95,7 +95,7 @@ function(do_build_dpdk dpdk_dir)
   ExternalProject_Add(dpdk-ext
     SOURCE_DIR ${dpdk_source_dir}
     CONFIGURE_COMMAND ${make_cmd} config O=${dpdk_dir} T=${target}
-    BUILD_COMMAND ${make_cmd} O=${dpdk_dir} CC=${CMAKE_C_COMPILER} EXTRA_CFLAGS=-fPIC
+    BUILD_COMMAND ${make_cmd} O=${dpdk_dir} CC=${CMAKE_C_COMPILER} EXTRA_CFLAGS=-fPIC RTE_DEVEL_BUILD=n
     BUILD_IN_SOURCE 1
     INSTALL_COMMAND "true")
   if(NUMA_FOUND)
index c5638baa4f11df01fef160f35e0e582d3e9464da..4a6e48b67043aaaf9fac38c7251ba9fc8f5a227f 100644 (file)
@@ -102,7 +102,8 @@ breathe_domain_by_extension = {'py': 'py', 'c': 'c', 'h': 'c', 'cc': 'cxx', 'hpp
 breathe_doxygen_config_options = {
     'EXPAND_ONLY_PREDEF': 'YES',
     'MACRO_EXPANSION': 'YES',
-    'PREDEFINED': 'CEPH_RADOS_API= '
+    'PREDEFINED': 'CEPH_RADOS_API= ',
+    'WARN_IF_UNDOCUMENTED': 'NO',
 }
 
 # the docs are rendered with github links pointing to master. the javascript
@@ -113,7 +114,7 @@ edit_on_github_branch = 'master'
 
 # handles edit-on-github and old version warning display
 def setup(app):
-    app.add_javascript('js/ceph.js')
+    app.add_js_file('js/ceph.js')
     if ditaa is None:
         # add "ditaa" as an alias of "diagram"
         from plantweb.directive import DiagramDirective
index 193e372f8c465824de56644feb9d073b26c6db65..a1704393f666ea9e77f2beaae305f220b7743e07 100644 (file)
@@ -28,94 +28,163 @@ The following chart illustrates basic development workflow:
            | pull request |         git push       \-------------/
            \--------------/
 
-Below we present an explanation of this chart. The explanation is written
-with the assumption that you, the reader, are a beginning developer who
-has an idea for a bugfix, but do not know exactly how to proceed. Watch
-the `Getting Started with Ceph Development
-<https://www.youtube.com/watch?v=t5UIehZ1oLs>`_ video for
-a practical summary of the same.
+This page assumes that you are a new contributor with an idea for a bugfix or
+an enhancement, but you do not know how to proceed. Watch the `Getting Started
+with Ceph Development <https://www.youtube.com/watch?v=t5UIehZ1oLs>`_ video for
+a practical summary of this workflow.
 
 Update the tracker
 ------------------
 
-Before you start, you should know the `Issue tracker`_ number of the bug
-you intend to fix. If there is no tracker issue, now is the time to create
-one.
+Find the `Redmine issue tracker <https://tracker.ceph.com>`_ number of
+the bug you intend to fix. If no tracker issue exists, create one. There is
+only one case in which you do not have to create a Redmine tracker issue: the
+case of minor documentation changes.
 
-The tracker is there to explain the issue (bug) to your fellow Ceph
-developers and keep them informed as you make progress toward resolution.
-To this end, then, provide a descriptive title as well as sufficient
-information and details in the description.
+Simple documentation cleanup does not require a corresponding tracker issue.
+Major documenatation changes do require a tracker issue. Major documentation
+changes include adding new documentation chapters or files, and making 
+substantial changes to the structure or content of the documentation.
 
-If you have sufficient tracker permissions, assign the bug to yourself by
-changing the ``Assignee`` field.  If your tracker permissions have not yet
-been elevated, simply add a comment to the issue with a short message like
-"I am working on this issue".
+A (Redmine) tracker ticket explains the issue (bug) to other Ceph developers to
+keep them informed as the bug nears resolution. Provide a useful, clear title
+and include detailed information in the description. When composing the title
+of the ticket, ask yourself "If I need to search for this ticket two years from
+now, which keywords am I likely to search for?" Then include those keywords in
+the title.
 
-Upstream code
--------------
+If your tracker permissions are elevated, assign the bug to yourself by setting
+the ``Assignee`` field. If your tracker permissions have not been elevated,
+just add a comment with a short message that says "I am working on this issue".
+
+Ceph Workflow Overview
+----------------------
+
+Three repositories are involved in the Ceph workflow. They are:
+
+1. The upstream repository (ceph/ceph)
+2. Your fork of the upstream repository (your_github_id/ceph)
+3. Your local working copy of the repository (on your workstation)
+
+The procedure for making changes to the Ceph repository is as follows:
+
+#. Configure your local environment
+
+   #. :ref:`Create a fork<forking>` of the "upstream Ceph"
+      repository.
 
-This section, and the ones that follow, correspond to the nodes in the
-above chart.
+   #. :ref:`Clone the fork<cloning>` to your local filesystem.
 
-The upstream code lives in https://github.com/ceph/ceph.git, which is
-sometimes referred to as the "upstream repo", or simply "upstream". As the
-chart illustrates, we will make a local copy of this code, modify it, test
-our modifications, and submit the modifications back to the upstream repo
-for review.
+#. Fix the bug
 
-A local copy of the upstream code is made by
+   #. :ref:`Synchronize local master with upstream master<synchronizing>`.
+         
+   #. :ref:`Create a bugfix branch<bugfix_branch>` in your local working copy.
+         
+   #. :ref:`Make alterations to the local working copy of the repository in your
+      local filesystem<fixing_bug_locally>`.
+   
+   #. :ref:`Push the changes in your local working copy to your fork<push_changes>`.
 
-1. forking the upstream repo on GitHub, and
-2. cloning your fork to make a local working copy
+#. Create a Pull Request to push the change upstream
 
-See the `the GitHub documentation
+   #. Create a Pull Request that asks for your changes to be added into the
+      "upstream Ceph" repository.
+
+Preparing Your Local Working Copy of the Ceph Repository 
+--------------------------------------------------------
+
+The procedures in this section, "Preparing Your Local Working Copy of the Ceph
+Repository", must be followed only when you are first setting up your local
+environment. If this is your first time working with the Ceph project, then
+these commands are necessary and are the first commands that you should run.
+
+.. _forking:
+
+Creating a Fork of the Ceph Repository
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+See the `GitHub documentation
 <https://help.github.com/articles/fork-a-repo/#platform-linux>`_ for
 detailed instructions on forking. In short, if your GitHub username is
-"mygithubaccount", your fork of the upstream repo will show up at
-https://github.com/mygithubaccount/ceph. Once you have created your fork,
-you clone it by doing:
+"mygithubaccount", your fork of the upstream repo will appear at
+``https://github.com/mygithubaccount/ceph``. 
+
+.. _cloning:
+
+Cloning Your Fork  
+^^^^^^^^^^^^^^^^^
+
+After you have created your fork, clone it by running the following command:
 
 .. code::
 
     $ git clone https://github.com/mygithubaccount/ceph
 
-While it is possible to clone the upstream repo directly, in this case you
-must fork it first. Forking is what enables us to open a `GitHub pull
-request`_.
+You must fork the Ceph repository before you clone it.  If you fail to fork,
+you cannot open a `GitHub pull request
+<https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request>`_.
 
 For more information on using GitHub, refer to `GitHub Help
 <https://help.github.com/>`_.
 
-Local environment
------------------
+Configuring Your Local Environment
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-In the local environment created in the previous step, you now have a
-copy of the ``master`` branch in ``remotes/origin/master``. Since the fork
-(https://github.com/mygithubaccount/ceph.git) is frozen in time and the
-upstream repo (https://github.com/ceph/ceph.git, typically abbreviated to
-``ceph/ceph.git``) is updated frequently by other developers, you will need
-to sync your fork periodically. To do this, first add the upstream repo as
-a "remote" and fetch it::
+The commands in this section configure your local git environment so that it
+generates "Signed-off-by:" tags. They also set up your local environment so
+that it can stay synchronized with the upstream repository.
 
-    $ git remote add ceph https://github.com/ceph/ceph.git
-    $ git fetch ceph
+These commands are necessary only during the initial setup of your local
+working copy. Another way to say that is "These commands are necessary
+only the first time that you are working with the Ceph repository. They are,
+however, unavoidable, and if you fail to run them then you will not be able
+to work on the Ceph repository.".
 
-Fetching downloads all objects (commits, branches) that were added since
-the last sync. After running these commands, all the branches from
-``ceph/ceph.git`` are downloaded to the local git repo as
-``remotes/ceph/$BRANCH_NAME`` and can be referenced as
-``ceph/$BRANCH_NAME`` in certain git commands.
+1. Configure your local git environment with your name and email address.  
 
-For example, your local ``master`` branch can be reset to the upstream Ceph
-``master`` branch by doing::
+   .. prompt:: bash $
 
-    $ git fetch ceph
-    $ git checkout master
-    $ git reset --hard ceph/master
+      git config user.name "FIRST_NAME LAST_NAME"
+      git config user.email "MY_NAME@example.com"
+
+2. Add the upstream repo as a "remote" and fetch it:
+
+   .. prompt:: bash $
+
+      git remote add ceph https://github.com/ceph/ceph.git
+      git fetch ceph
+
+   These commands fetch all the branches and commits from ``ceph/ceph.git`` to
+   the local git repo as ``remotes/ceph/$BRANCH_NAME`` and can be referenced as
+   ``ceph/$BRANCH_NAME`` in local git commands.
+
+Fixing the Bug
+--------------
+
+.. _synchronizing:
+
+Synchronizing Local Master with Upstream Master
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In your local git environment, there is a copy of the ``master`` branch in
+``remotes/origin/master``. This is called "local master". This copy of the
+master branch (https://github.com/your_github_id/ceph.git) is "frozen in time"
+at the moment that you cloned it, but the upstream repo
+(https://github.com/ceph/ceph.git, typically abbreviated to ``ceph/ceph.git``)
+that it was forked from is not frozen in time: the upstream repo is still being
+updated by other contributors. 
+
+Because upstream master is continually receiving updates from other
+contributors, your fork will drift farther and farther from the state of the
+upstream repo when you cloned it.
 
-Finally, the ``master`` branch of your fork can then be synced to upstream
-master by::
+You must keep your fork's master branch synchronized with upstream master in
+order to reduce drift between your fork's master branch and the upstream master
+branch.
+
+Here are the commands for keeping your fork synchronized with the
+upstream repository:
 
     $ git push -u origin master
 
@@ -124,7 +193,10 @@ Bugfix branch
 
 Next, create a branch for the bugfix:
 
-.. code::
+.. _bugfix_branch:
+
+Creating a Bugfix branch
+^^^^^^^^^^^^^^^^^^^^^^^^
 
     $ git checkout master
     $ git checkout -b fix_1
@@ -137,100 +209,177 @@ for long! You are now ready to modify the code.
 Fix bug locally
 ---------------
 
-At this point, change the status of the tracker issue to "In progress" to
-communicate to the other Ceph developers that you have begun working on a
-fix. If you don't have permission to change that field, your comment that
-you are working on the issue is sufficient.
+The first command (git checkout master) makes sure that the bugfix branch
+"fix_1" is created from the most recent state of the master branch of the
+upstream repository. 
+
+The second command (git checkout -b fix_1) creates a "bugfix branch" called
+"fix_1" in your local working copy of the repository. The changes that you make
+in order to fix the bug will be commited to this branch.
+
+The third command (git push -u origin fix_1) pushes the bugfix branch from
+your local working repository to your fork of the upstream repository.
+
+.. _fixing_bug_locally:
+
+Fixing the bug in the local working copy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+#. Updating the tracker 
+
+   In the `Ceph issue tracker <https://tracker.ceph.com>`_, change the status
+   of the tracker issue to "In progress".  This communicates to other Ceph
+   contributors that you have begun working on a fix, which helps to avoid
+   duplication of effort. If you don't have permission to change that field,
+   your comment that you are working on the issue is sufficient.
+
+#. Fixing the bug itself
+
+   This guide cannot tell you how to fix the bug that you have chosen to fix.
+   This guide assumes that you know what required improvement, and that you
+   know what to do to provide that improvement.
+
+   It might be that your fix is simple and requires only minimal testing. But
+   that's unlikely. It is more likely that the process of fixing your bug will
+   be iterative and will involve trial, error, skill, and patience. 
+
+   For a detailed discussion of the tools available for validating bugfixes,
+   see the chapters on testing.
 
-Possibly, your fix is very simple and requires only minimal testing.
-More likely, it will be an iterative process involving trial and error, not
-to mention skill. An explanation of how to fix bugs is beyond the
-scope of this document. Instead, we focus on the mechanics of the process
-in the context of the Ceph project.
+Pushing the Fix to Your Fork
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   
+You have finished work on the bugfix. You have tested the bugfix, and you
+believe that it works. 
+   
+#. Commit the changes to your local working copy.
 
-A detailed discussion of the tools available for validating your bugfixes,
-see the chapters on testing.
+   Commit the changes to the `fix_1` branch of your local working copy by using
+   the ``--signoff`` option (here represented as the `s` portion of the `-as`
+   flag): 
 
-For now, let us just assume that you have finished work on the bugfix and
-that you have tested it and believe it works. Commit the changes to your local
-branch using the ``--signoff`` option::
+   .. prompt:: bash $
 
-    $ git commit -as
+      git commit -as
 
-and push the changes to your fork::
+   .. _push_changes:
 
-    $ git push origin fix_1
+#. Push the changes to your fork:
 
-GitHub pull request
--------------------
+   Push the changes from the `fix_1` branch of your local working copy to the
+   `fix_1` branch of your fork of the upstream repository:
+
+   .. prompt:: bash $
+
+      git push origin fix_1
+   
+   .. note::
+
+      In the command `git push origin fix_1`, `origin` is the name of your fork
+      of the upstream Ceph repository, and can be thought of as a nickname for
+      `git@github.com:username/ceph.git`, where `username` is your GitHub
+      username.
+
+      It is possible that `origin` is not the name of your fork. Discover the
+      name of your fork by running `git remote -v`, as shown here:
+
+      .. code-block:: bash
+
+         $ git remote -v
+         ceph  https://github.com/ceph/ceph.git (fetch)
+         ceph  https://github.com/ceph/ceph.git (push)
+         origin        git@github.com:username/ceph.git (fetch)
+         origin        git@github.com:username/ceph.git (push)
+
+       The line "origin git@github.com:username/ceph.git (fetch)" and the line
+       "origin git@github.com:username/ceph.git (push)" provide the information
+       that "origin" is the name of your fork of the Ceph repository.
 
 The next step is to open a GitHub pull request. The purpose of this step is
 to make your bugfix available to the community of Ceph developers.  They
 will review it and may do additional testing on it.
 
-In short, this is the point where you "go public" with your modifications.
-Psychologically, you should be prepared to receive suggestions and
-constructive criticism. Don't worry! In our experience, the Ceph project is
-a friendly place!
+After you have pushed the bugfix to your fork, open a GitHub pull request
+(PR). This makes your bugfix visible to the community of Ceph contributors.
+They will review it. They may perform additional testing on your bugfix, and
+they might request changes to the bugfix.
+
+Be prepared to receive suggestions and constructive criticism in the form of
+comments within the PR. 
 
-If you are uncertain how to use pull requests, you may read
-`this GitHub pull request tutorial`_.
+If you don't know how to create and manage pull requests, read `this GitHub
+pull request tutorial`_.
 
 .. _`this GitHub pull request tutorial`:
    https://help.github.com/articles/using-pull-requests/
 
-For some ideas on what constitutes a "good" pull request, see
+To learn what constitutes a "good" pull request, see
 the `Git Commit Good Practice`_ article at the `OpenStack Project Wiki`_.
 
 .. _`Git Commit Good Practice`: https://wiki.openstack.org/wiki/GitCommitMessages
 .. _`OpenStack Project Wiki`: https://wiki.openstack.org/wiki/Main_Page
 
-Once your pull request (PR) is opened, update the `Issue tracker`_ by
-adding a comment to the bug pointing the other developers to your PR. The
-update can be as simple as::
+See also our own `Submitting Patches
+<https://github.com/ceph/ceph/blob/master/SubmittingPatches.rst>`_ document.
+
+After your pull request (PR) has been opened, update the `issue tracker
+<https://tracker.ceph.com>`_ by adding a comment directing other contributors
+to your PR. The comment can be as simple as this::
 
     *PR*: https://github.com/ceph/ceph/pull/$NUMBER_OF_YOUR_PULL_REQUEST
 
 Automated PR validation
 -----------------------
 
-When your PR hits GitHub, the Ceph project's `Continuous Integration (CI)
-<https://en.wikipedia.org/wiki/Continuous_integration>`_
-infrastructure will test it automatically. At the time of this writing
-(March 2016), the automated CI testing included a test to check that the
-commits in the PR are properly signed (see `Submitting patches`_) and a
-`make check`_ test.
+When you create or update your PR, the Ceph project's `Continuous Integration
+(CI) <https://en.wikipedia.org/wiki/Continuous_integration>`_ infrastructure
+automatically tests it. At the time of this writing (May 2022), the automated
+CI testing included many tests. These five are among them:
 
-The latter, `make check`_, builds the PR and runs it through a battery of
-tests. These tests run on machines operated by the Ceph Continuous
-Integration (CI) team. When the tests complete, the result will be shown
-on GitHub in the pull request itself.
+#. a test to check that the commits are properly signed (see `Submitting Patches <https://github.com/ceph/ceph/blob/master/SubmittingPatches.rst>`_):
+#. a test to check that the documentation builds
+#. a test to check that the submodules are unmodified
+#. a test to check that the API is in order
+#. a :ref:`make check<make-check>` test
 
-You can (and should) also test your modifications before you open a PR.
-Refer to the chapters on testing for details.
+Additional tests may be run depending on which files your PR modifies.
+
+The :ref:`make check<make-check>` test builds the PR and runs it through a
+battery of tests. These tests run on servers that are operated by the Ceph
+Continuous Integration (CI) team. When the tests have completed their run, the
+result is shown on GitHub in the pull request itself.
+
+Test your modifications before you open a PR.  Refer to the chapters
+on testing for details.
 
 Notes on PR make check test
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-The GitHub `make check`_ test is driven by a Jenkins instance.
+The GitHub :ref:`make check<make-check>` test is driven by a Jenkins instance.
 
-Jenkins merges the PR branch into the latest version of the base branch before
-starting the build, so you don't have to rebase the PR to pick up any fixes.
+Jenkins merges your PR branch into the latest version of the base branch before
+it starts any tests. This means that you don't have to rebase the PR in order
+to pick up any fixes.
 
-You can trigger the PR tests at any time by adding a comment to the PR - the
-comment should contain the string "test this please". Since a human subscribed
-to the PR might interpret that as a request for him or her to test the PR,
-it's good to write the request as "Jenkins, test this please".
+You can trigger PR tests at any time by adding a comment to the PR - the
+comment should contain the string "test this please". Since a human who is
+subscribed to the PR might interpret that as a request for him or her to test
+the PR, you must address Jenkins directly. For example, write "jenkins retest
+this please". If you need to run only one of the tests, you can request it with
+a command like "jenkins test signed". A list of these requests is automatically
+added to the end of each new PR's description, so check there to find the
+single test you need.
 
-The `make check`_ log is the place to go if there is a failure and you're not
-sure what caused it. To reach it, first click on "details" (next to the `make
-check`_ test in the PR) to get into the Jenkins web GUI, and then click on
-"Console Output" (on the left).
+If there is a build failure and you aren't sure what caused it, check the
+:ref:`make check<make-check>` log. To access the make check log, click the
+"details" (next to the :ref:`make check<make-check>` test in the PR) link to
+enter the Jenkins web GUI. Then click "Console Output" (on the left).
 
-Jenkins is set up to grep the log for strings known to have been associated
-with `make check`_ failures in the past. However, there is no guarantee that
-the strings are associated with any given `make check`_ failure. You have to
-dig into the log to be sure.
+Jenkins is configured to search logs for strings that are known to have been
+associated with :ref:`make check<make-check>` failures in the past. However,
+there is no guarantee that these known strings are associated with any given
+:ref:`make check<make-check>` failure. You'll have to read through the log to
+determine the cause of your specific failure.
 
 Integration tests AKA ceph-qa-suite
 -----------------------------------
@@ -245,16 +394,16 @@ sub-directory`_ and are run via the `teuthology framework`_.
 .. _`teuthology framework`: https://github.com/ceph/teuthology
 
 The Ceph community has access to the `Sepia lab
-<https://wiki.sepia.ceph.com/doku.php>`_ where `integration tests`_ can be
-run on real hardware. Other developers may add tags like "needs-qa" to your
-PR. This allows PRs that need testing to be merged into a single branch and
-tested all at the same time. Since teuthology suites can take hours (even
-days in some cases) to run, this can save a lot of time.
+<https://wiki.sepia.ceph.com/doku.php>`_ where :ref:`integration
+tests<integration-tests>` can be run on real hardware. Other developers may add
+tags like "needs-qa" to your PR. This allows PRs that need testing to be merged
+into a single branch and tested all at the same time. Since teuthology suites
+can take hours (even days in some cases) to run, this can save a lot of time.
 
 To request access to the Sepia lab, start `here <https://wiki.sepia.ceph.com/doku.php?id=vpnaccess>`_.
 
-Integration testing is discussed in more detail in the `integration testing`_
-chapter.
+Integration testing is discussed in more detail in the :ref:`integration
+tests<integration-tests>` chapter.
 
 Code review
 -----------
@@ -262,7 +411,7 @@ Code review
 Once your bugfix has been thoroughly tested, or even during this process,
 it will be subjected to code review by other developers. This typically
 takes the form of correspondence in the PR itself, but can be supplemented
-by discussions on `IRC`_ and the `Mailing list`_.
+by discussions on :ref:`IRC<irc>` and the :ref:`mailing-list-subscribe`.
 
 Amending your PR
 ----------------
@@ -290,17 +439,9 @@ Merge
 The bugfixing process culminates when one of the project leads decides to
 merge your PR.
 
-When this happens, it is a signal for you (or the lead who merged the PR)
-to change the `Issue tracker`_ status to "Resolved". Some issues may be
-flagged for backporting, in which case the status should be changed to
-"Pending Backport" (see the `Backporting`_ chapter for details).
-
+When this happens, it is a signal for you (or the lead who merged the PR) to
+change the `Ceph issue tracker <https://tracker.ceph.com>`_ status to
+"Resolved". Some issues may be flagged for backporting, in which case the
+status should be changed to "Pending Backport" (see the
+:ref:`Backporting<backporting>` chapter for details).
 
-.. _make check:
-.. _Backporting: ../essentials/#backporting
-.. _IRC:  ../essentials/#irc
-.. _Issue Tracker: ../issue-tracker
-.. _Integration Tests: ../tests-integration-tests
-.. _Integration Testing: ../tests-integration-tests
-.. _Mailing List: ../essentials/#mailing-list
-.. _Submitting Patches: ../essentials/#submitting-patches
index 4f61a13e81417f6ba3deadb80d96b082292bdbc1..26f756e62453847fca18ed3b7049abddde1423d4 100644 (file)
@@ -89,6 +89,8 @@ click on `New issue`_.
 .. _`jump to the Ceph project`: http://tracker.ceph.com/projects/ceph
 .. _`New issue`: http://tracker.ceph.com/projects/ceph/issues/new
 
+.. _mailing-list-subscribe:
+
 Mailing list
 ------------
 
@@ -129,6 +131,7 @@ There are also `other Ceph-related mailing lists`_.
 
 .. _`other Ceph-related mailing lists`: https://ceph.com/irc/
 
+.. _irc:
 
 IRC
 ---
@@ -225,6 +228,8 @@ Kubernetes/Rook development cluster
 
 See :ref:`kubernetes-dev`
 
+.. _backporting:
+
 Backporting
 -----------
 
index e04c6e3e2df87fe4a80bcd2f0c57a27a50bc65e6..d205fb31bfe6be283c441e9a99c87b828ab6d3df 100644 (file)
@@ -1,3 +1,5 @@
+.. _issue tracker:
+
 Issue Tracker
 =============
 
index c5f258e5ce6385925920fc10a44cdca47882d430..a346ae601cd2cac09e51e698dd1678481c6c7431 100644 (file)
@@ -1,12 +1,14 @@
+.. _integration-tests: 
+
 Testing - Integration Tests
 ===========================
 
-Ceph has two types of tests: `make check`_ tests and integration tests.
-When a test requires multiple machines, root access or lasts for a
-longer time (for example, to simulate a realistic Ceph deployment), it
-is deemed to be an integration test. Integration tests are organized into
-"suites", which are defined in the `ceph/qa sub-directory`_ and run with
-the ``teuthology-suite`` command.
+Ceph has two types of tests: :ref:`make check<make-check>` tests and
+integration tests.  When a test requires multiple machines, root access or
+lasts for a longer time (for example, to simulate a realistic Ceph deployment),
+it is deemed to be an integration test. Integration tests are organized into
+"suites", which are defined in the `ceph/qa sub-directory`_ and run with the
+``teuthology-suite`` command.
 
 The ``teuthology-suite`` command is part of the `teuthology framework`_.
 In the sections that follow we attempt to provide a detailed introduction
@@ -491,7 +493,6 @@ test will be first.
 
 .. _ceph/qa sub-directory: https://github.com/ceph/ceph/tree/master/qa
 .. _Integration testing: testing-integration-tests
-.. _make check:
 .. _Sepia Lab: https://wiki.sepia.ceph.com/doku.php
 .. _teuthology repository: https://github.com/ceph/teuthology
 .. _teuthology framework: https://github.com/ceph/teuthology
index 315811e69676591e9b3889ae7285824dbf9f4c23..27767bc57177d9bf6484a935d9de6a26614f1374 100644 (file)
@@ -1,18 +1,20 @@
 Testing - unit tests
 ====================
 
-Ceph has two types of tests: unit tests (also called `make check`_ tests) and
-integration tests. Strictly speaking, the `make check`_ tests are not "unit
-tests", but rather tests that can be run easily on a single build machine
-after compiling Ceph from source, whereas integration tests require packages
-and multi-machine clusters to run.
+Ceph has two types of tests: unit tests (also called :ref:`make
+check<make-check>` tests) and integration tests. Strictly speaking, the
+:ref:`make check<make-check>` tests are not "unit tests", but rather tests that
+can be run easily on a single build machine after compiling Ceph from source,
+whereas integration tests require packages and multi-machine clusters to run.
+
+.. _make-check:
 
 What does "make check" mean?
 ----------------------------
 
 After compiling Ceph, the code can be run through a battery of tests covering
 various aspects of Ceph. For historical reasons, this battery of tests is
-often referred to as `make check`_ even though the actual command used to run
+often referred to as :ref:`make check<make-check>` even though the actual command used to run
 the tests is now ``ctest``. For inclusion in this battery of tests, a test
 must:
 
@@ -55,8 +57,8 @@ Unit testing of CLI tools
 Some of the CLI tools are tested using special files ending with the extension
 ``.t`` and stored under ``./src/test/cli``. These tests are run using a tool
 called `cram`_ via a shell script ``./src/test/run-cli-tests``.  `cram`_ tests
-that are not suitable for `make check`_ may also be run by teuthology using
-the `cram task`_.
+that are not suitable for :ref:`make check<make-check>` may also be run by
+teuthology using the `cram task`_.
 
 .. _`cram`: https://bitheap.org/cram/
 .. _`cram task`: https://github.com/ceph/ceph/blob/master/qa/tasks/cram.py
@@ -120,5 +122,4 @@ Unit test caveats
    linked against something else. This enables tools like valgrind to be used
    in the tests.
 
-.. _make check:
 .. _teuthology framework: https://github.com/ceph/teuthology
index 407bf36b70b81bad4f70f4f8d63ab0ed889c4e09..b5705ee04ad06dfa8d17c0ae43dc54ff4770024f 100644 (file)
@@ -871,6 +871,15 @@ Per mapping (block device) `rbd device map` options:
   mode (since 5.11).  If the daemon denies 'secure' mode in favor of 'crc'
   mode, agree to 'crc' mode.
 
+* rxbounce - Use a bounce buffer when receiving data (since 5.17).  The default
+  behaviour is to read directly into the destination buffer.  A bounce buffer
+  is needed if the destination buffer isn't guaranteed to be stable (i.e. remain
+  unchanged while it is being read to).  In particular this is the case for
+  Windows where a system-wide "dummy" (throwaway) page may be mapped into the
+  destination buffer in order to generate a single large I/O.  Otherwise,
+  "libceph: ... bad crc/signature" or "libceph: ... integrity error, bad crc"
+  errors and associated performance degradation are expected.
+
 * udev - Wait for udev device manager to finish executing all matching
   "add" rules and release the device before exiting (default).  This option
   is not passed to the kernel.
index 87296be391471de29032959bfabe51b88c9abdbb..f547bc36af362e917451557a328f6feba8b4bcf7 100644 (file)
@@ -168,11 +168,11 @@ drive statistics, special series are output like this:
 
 ::
 
-    ceph_disk_occupation{ceph_daemon="osd.0",device="sdd", exported_instance="myhost"}
+    ceph_disk_occupation_human{ceph_daemon="osd.0", device="sdd", exported_instance="myhost"}
 
 To use this to get disk statistics by OSD ID, use either the ``and`` operator or
 the ``*`` operator in your prometheus query. All metadata metrics (like ``
-ceph_disk_occupation`` have the value 1 so they act neutral with ``*``. Using ``*``
+ceph_disk_occupation_human`` have the value 1 so they act neutral with ``*``. Using ``*``
 allows to use ``group_left`` and ``group_right`` grouping modifiers, so that
 the resulting metric has additional labels from one side of the query.
 
@@ -185,13 +185,24 @@ The goal is to run a query like
 
 ::
 
-    rate(node_disk_bytes_written[30s]) and on (device,instance) ceph_disk_occupation{ceph_daemon="osd.0"}
+    rate(node_disk_bytes_written[30s]) and
+    on (device,instance) ceph_disk_occupation_human{ceph_daemon="osd.0"}
 
 Out of the box the above query will not return any metrics since the ``instance`` labels of
-both metrics don't match. The ``instance`` label of ``ceph_disk_occupation``
+both metrics don't match. The ``instance`` label of ``ceph_disk_occupation_human``
 will be the currently active MGR node.
 
- The following two section outline two approaches to remedy this.
+The following two section outline two approaches to remedy this.
+
+.. note::
+
+    If you need to group on the `ceph_daemon` label instead of `device` and
+    `instance` labels, using `ceph_disk_occupation_human` may not work reliably.
+    It is advised that you use `ceph_disk_occupation` instead.
+
+    The difference is that `ceph_disk_occupation_human` may group several OSDs
+    into the value of a single `ceph_daemon` label in cases where multiple OSDs
+    share a disk.
 
 Use label_replace
 =================
@@ -204,7 +215,13 @@ To correlate an OSD and its disks write rate, the following query can be used:
 
 ::
 
-    label_replace(rate(node_disk_bytes_written[30s]), "exported_instance", "$1", "instance", "(.*):.*") and on (device,exported_instance) ceph_disk_occupation{ceph_daemon="osd.0"}
+    label_replace(
+        rate(node_disk_bytes_written[30s]),
+        "exported_instance",
+        "$1",
+        "instance",
+        "(.*):.*"
+    ) and on (device, exported_instance) ceph_disk_occupation_human{ceph_daemon="osd.0"}
 
 Configuring Prometheus server
 =============================
index 6ede95f8c145d99ccaba6c1e4166c56b33d0fd12..fda34d105526e463c8284399f0a9b32189a638ca 100644 (file)
@@ -40,6 +40,8 @@ The following table describes the support status for current Amazon S3 functiona
 +---------------------------------+-----------------+----------------------------------------+
 | **Bucket Lifecycle**            | Supported       |                                        |
 +---------------------------------+-----------------+----------------------------------------+
+| **Bucket Replication**          | Partial         | Only permitted across zones            |
++---------------------------------+-----------------+----------------------------------------+
 | **Policy (Buckets, Objects)**   | Supported       | ACLs & bucket policies are supported   |
 +---------------------------------+-----------------+----------------------------------------+
 | **Bucket Website**              | Supported       |                                        |
index 9e83aa58baee5879fe182444163fe6b75a9d05be..f5444ada914a114c5299bd71dd40566d963261ce 100644 (file)
@@ -303,7 +303,7 @@ For example::
 
         $ rbd --cluster site-a mirror image snapshot image-pool/image-1
 
-By default only ``3`` mirror-snapshots will be created per-image. The most
+By default up to ``5`` mirror-snapshots will be created per-image. The most
 recent mirror-snapshot is automatically pruned if the limit is reached.
 The limit can be overridden via the ``rbd_mirroring_max_mirroring_snapshots``
 configuration option if required. Additionally, mirror-snapshots are
index 42a0e1e57524576a990b02738d689a3fa70dd173..9086349d6a2c5da36d3c77522b0decedbe9ac53a 100644 (file)
@@ -63,29 +63,31 @@ Memory
 ======
 
 Bluestore uses its own memory to cache data rather than relying on the
-operating system page cache.  In bluestore you can adjust the amount of memory
-the OSD attempts to consume with the ``osd_memory_target`` configuration
-option.
+operating system's page cache. In Bluestore you can adjust the amount of memory
+that the OSD attempts to consume by changing the `osd_memory_target`
+configuration option.
 
-- Setting the osd_memory_target below 2GB is typically not recommended (it may
-  fail to keep the memory that low and may also cause extremely slow performance.
+- Setting the `osd_memory_target` below 2GB is typically not
+  recommended (Ceph may fail to keep the memory consumption under 2GB and 
+  this may cause extremely slow performance).
 
 - Setting the memory target between 2GB and 4GB typically works but may result
   in degraded performance as metadata may be read from disk during IO unless the
   active data set is relatively small.
 
-- 4GB is the current default osd_memory_target size and was set that way to try
-  and balance memory requirements and OSD performance for typical use cases.
+- 4GB is the current default `osd_memory_target` size. This default
+  was chosen for typical use cases, and is intended to balance memory
+  requirements and OSD performance.
 
-- Setting the osd_memory_target higher than 4GB may improve performance when
-  there are many (small) objects or large (256GB/OSD or more) data sets being
-  processed.
+- Setting the `osd_memory_target` higher than 4GB can improve
+  performance when there many (small) objects or when large (256GB/OSD 
+  or more) data sets are processed.
 
 .. important:: The OSD memory autotuning is "best effort".  While the OSD may
    unmap memory to allow the kernel to reclaim it, there is no guarantee that
-   the kernel will actually reclaim freed memory within any specific time
-   frame.  This is especially true in older versions of Ceph where transparent
-   huge pages can prevent the kernel from reclaiming memory freed from
+   the kernel will actually reclaim freed memory within a specific time
+   frame. This applies especially in older versions of Ceph, where transparent
+   huge pages can prevent the kernel from reclaiming memory that was freed from
    fragmented huge pages. Modern versions of Ceph disable transparent huge
    pages at the application level to avoid this, though that still does not
    guarantee that the kernel will immediately reclaim unmapped memory.  The OSD
@@ -95,9 +97,10 @@ option.
    kernel.  That value may be more or less than needed depending on the exact
    configuration of the system.
 
-When using the legacy FileStore backend, the page cache is used for caching
-data, so no tuning is normally needed, and the OSD memory consumption is
-generally related to the number of PGs per daemon in the system.
+When using the legacy FileStore back end, the page cache is used for caching
+data, so no tuning is normally needed. When using the legacy FileStore backend,
+the OSD memory consumption is related to the number of PGs per daemon in the
+system.
 
 
 Data Storage
index 8d7c79887f7f646b052b00ec65030170f3d64ec7..57fb673934109467174717f6bc5d0556c609473a 100644 (file)
@@ -38,8 +38,8 @@ required when running Ceph File System clients.
   ``ceph-osd``) stores data, handles data replication, recovery,
   rebalancing, and provides some monitoring information to Ceph
   Monitors and Managers by checking other Ceph OSD Daemons for a
-  heartbeat. At least 3 Ceph OSDs are normally required for redundancy
-  and high availability.
+  heartbeat. At least three Ceph OSDs are normally required for 
+  redundancy and high availability.
 
 - **MDSs**: A :term:`Ceph Metadata Server` (MDS, ``ceph-mds``) stores
   metadata on behalf of the :term:`Ceph File System` (i.e., Ceph Block
index 88185a95a15559ec0f5cebab197a0a1187db8dc6..d2ac2304f31e633d61cbfc6cbf2c4f69dc880a1a 100644 (file)
       "steppedLine": false,
       "targets": [
         {
-          "expr": "label_replace(\n  (\n    irate(node_disk_writes_completed{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or\n    irate(node_disk_writes_completed_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])\n  ),\n  \"instance\",\n  \"$1\",\n  \"instance\",\n  \"([^:.]*).*\"\n)\n* on(instance, device, ceph_daemon) group_left\n  label_replace(\n    label_replace(\n      ceph_disk_occupation,\n      \"device\",\n      \"$1\",\n      \"device\",\n      \"/dev/(.*)\"\n    ),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n  )",
+          "expr": "label_replace(\n  (\n    irate(node_disk_writes_completed{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or\n    irate(node_disk_writes_completed_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])\n  ),\n  \"instance\",\n  \"$1\",\n  \"instance\",\n  \"([^:.]*).*\"\n)\n* on(instance, device) group_left(ceph_daemon)\n  label_replace(\n    label_replace(\n      ceph_disk_occupation_human,\n      \"device\",\n      \"$1\",\n      \"device\",\n      \"/dev/(.*)\"\n    ),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n  )",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}}({{ceph_daemon}}) writes",
           "textEditor": true
         },
         {
-          "expr": "label_replace(\n    (irate(node_disk_reads_completed{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_reads_completed_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n)\n* on(instance, device, ceph_daemon) group_left\n  label_replace(\n    label_replace(\n      ceph_disk_occupation,\n      \"device\",\n      \"$1\",\n      \"device\",\n      \"/dev/(.*)\"\n    ),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n  )",
+          "expr": "label_replace(\n    (irate(node_disk_reads_completed{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_reads_completed_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n)\n* on(instance, device) group_left(ceph_daemon)\n  label_replace(\n    label_replace(\n      ceph_disk_occupation_human,\n      \"device\",\n      \"$1\",\n      \"device\",\n      \"/dev/(.*)\"\n    ),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n  )",
           "format": "time_series",
           "hide": false,
           "intervalFactor": 1,
       "steppedLine": false,
       "targets": [
         {
-          "expr": "label_replace((irate(node_disk_bytes_written{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_written_bytes_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device, ceph_daemon) group_left label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "label_replace((irate(node_disk_bytes_written{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_written_bytes_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}}({{ceph_daemon}}) write",
           "refId": "B"
         },
         {
-          "expr": "label_replace((irate(node_disk_bytes_read{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_read_bytes_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device, ceph_daemon) group_left label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "label_replace((irate(node_disk_bytes_read{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_read_bytes_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}}({{ceph_daemon}}) read",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "max by(instance,device) (label_replace((irate(node_disk_write_time_seconds_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) )  / clamp_min(irate(node_disk_writes_completed_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]), 0.001) or   (irate(node_disk_read_time_seconds_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) )  / clamp_min(irate(node_disk_reads_completed_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]), 0.001), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")) *  on(instance, device, ceph_daemon) group_left label_replace(label_replace(ceph_disk_occupation{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "max by(instance,device) (label_replace((irate(node_disk_write_time_seconds_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) )  / clamp_min(irate(node_disk_writes_completed_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]), 0.001) or   (irate(node_disk_read_time_seconds_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) )  / clamp_min(irate(node_disk_reads_completed_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]), 0.001), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")) *  on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "hide": false,
           "intervalFactor": 1,
       "steppedLine": false,
       "targets": [
         {
-          "expr": "label_replace(((irate(node_disk_io_time_ms{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) / 10 ) or  irate(node_disk_io_time_seconds_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) * 100), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device, ceph_daemon) group_left label_replace(label_replace(ceph_disk_occupation{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "label_replace(((irate(node_disk_io_time_ms{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) / 10 ) or  irate(node_disk_io_time_seconds_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) * 100), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "hide": false,
           "intervalFactor": 1,
index b179d5717d536c37c37a3d67f96cab130a05fbd9..83929af984177b64f81b568221b62f587d8c069f 100644 (file)
       "tableColumn": "",
       "targets": [
         {
-          "expr" : "avg (\n  label_replace((irate(node_disk_io_time_ms[5m]) / 10 ) or\n   (irate(node_disk_io_time_seconds_total[5m]) * 100), \"instance\", \"$1\", \"instance\", \"([^.:]*).*\"\n  ) *\n  on(instance, device, ceph_daemon) label_replace(label_replace(ceph_disk_occupation{instance=~\"($osd_hosts).*\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^.:]*).*\")\n)",
+          "expr": "avg (\n  label_replace((irate(node_disk_io_time_ms[5m]) / 10 ) or\n   (irate(node_disk_io_time_seconds_total[5m]) * 100), \"instance\", \"$1\", \"instance\", \"([^.:]*).*\"\n  ) *\n  on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~\"($osd_hosts).*\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^.:]*).*\")\n)",
           "format": "time_series",
           "instant": true,
           "intervalFactor": 1,
index eefb5912579172530cf7fe93f8acf98107939d0f..cb0bfb626371fb1f6fed0508c54bf06f40cbc27d 100644 (file)
       "steppedLine": false,
       "targets": [
         {
-          "expr": "(label_replace(irate(node_disk_read_time_seconds_total[1m]) / irate(node_disk_reads_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"))",
+          "expr": "(label_replace(irate(node_disk_read_time_seconds_total[1m]) / irate(node_disk_reads_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"))",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}}/{{device}} Reads",
           "refId": "A"
         },
         {
-          "expr": "(label_replace(irate(node_disk_write_time_seconds_total[1m]) / irate(node_disk_writes_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"))",
+          "expr": "(label_replace(irate(node_disk_write_time_seconds_total[1m]) / irate(node_disk_writes_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"))",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}}/{{device}} Writes",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "label_replace(irate(node_disk_writes_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "label_replace(irate(node_disk_writes_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}} on {{instance}} Writes",
           "refId": "A"
         },
         {
-          "expr": "label_replace(irate(node_disk_reads_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "label_replace(irate(node_disk_reads_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}} on {{instance}} Reads",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "label_replace(irate(node_disk_read_bytes_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "label_replace(irate(node_disk_read_bytes_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}} {{device}} Reads",
           "refId": "A"
         },
         {
-          "expr": "label_replace(irate(node_disk_written_bytes_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "label_replace(irate(node_disk_written_bytes_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}} {{device}} Writes",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "label_replace(irate(node_disk_io_time_seconds_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+          "expr": "label_replace(irate(node_disk_io_time_seconds_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}} on {{instance}}",
diff --git a/ceph/qa/.teuthology_branch b/ceph/qa/.teuthology_branch
deleted file mode 100644 (file)
index 1f7391f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-master
diff --git a/ceph/qa/rbd/krbd_default_map_options.t b/ceph/qa/rbd/krbd_default_map_options.t
new file mode 100644 (file)
index 0000000..5dac5d6
--- /dev/null
@@ -0,0 +1,64 @@
+Set up
+
+  $ ceph osd pool create rbda
+  pool 'rbda' created
+  $ rbd pool init rbda
+  $ rbd create rbda/image1 --size 1000
+
+Test at map options level
+
+  $ OPTIONS="alloc_size=65536,lock_on_read"
+  $ EXPECTED="${OPTIONS}"
+  $ DEV=$(sudo rbd map rbda/image1 --options ${OPTIONS})
+  $ sudo grep -q ${EXPECTED} /sys/bus/rbd/devices/${DEV#/dev/rbd}/config_info
+  $ sudo rbd unmap rbda/image1
+
+Test at global level
+
+  $ OPTIONS="alloc_size=4096,crc"
+  $ EXPECTED="${OPTIONS}"
+  $ rbd config global set global rbd_default_map_options ${OPTIONS}
+  $ DEV=$(sudo rbd map rbda/image1)
+  $ sudo grep -q ${EXPECTED} /sys/bus/rbd/devices/${DEV#/dev/rbd}/config_info
+  $ sudo rbd unmap rbda/image1
+
+  $ OPTIONS="alloc_size=65536,lock_on_read"
+  $ EXPECTED="alloc_size=65536,crc,lock_on_read"
+  $ DEV=$(sudo rbd map rbda/image1 --options ${OPTIONS})
+  $ sudo grep -q ${EXPECTED} /sys/bus/rbd/devices/${DEV#/dev/rbd}/config_info
+  $ sudo rbd unmap rbda/image1
+
+Test at pool level
+
+  $ OPTIONS="alloc_size=8192,share"
+  $ EXPECTED="${OPTIONS}"
+  $ rbd config pool set rbda rbd_default_map_options ${OPTIONS}
+  $ DEV=$(sudo rbd map rbda/image1)
+  $ sudo grep -q ${EXPECTED} /sys/bus/rbd/devices/${DEV#/dev/rbd}/config_info
+  $ sudo rbd unmap rbda/image1
+
+  $ OPTIONS="lock_on_read,alloc_size=65536"
+  $ EXPECTED="alloc_size=65536,lock_on_read,share"
+  $ DEV=$(sudo rbd map rbda/image1 --options ${OPTIONS})
+  $ sudo grep -q ${EXPECTED} /sys/bus/rbd/devices/${DEV#/dev/rbd}/config_info
+  $ sudo rbd unmap rbda/image1
+
+Test at image level
+
+  $ OPTIONS="alloc_size=16384,tcp_nodelay"
+  $ EXPECTED="${OPTIONS}"
+  $ rbd config image set rbda/image1 rbd_default_map_options ${OPTIONS}
+  $ DEV=$(sudo rbd map rbda/image1)
+  $ sudo grep -q ${EXPECTED} /sys/bus/rbd/devices/${DEV#/dev/rbd}/config_info
+  $ sudo rbd unmap rbda/image1
+
+  $ OPTIONS="lock_on_read,alloc_size=65536"
+  $ EXPECTED="alloc_size=65536,lock_on_read,tcp_nodelay"
+  $ DEV=$(sudo rbd map rbda/image1 --options ${OPTIONS})
+  $ sudo grep -q ${EXPECTED} /sys/bus/rbd/devices/${DEV#/dev/rbd}/config_info
+  $ sudo rbd unmap rbda/image1
+
+Teardown
+
+  $ ceph osd pool rm rbda rbda --yes-i-really-really-mean-it
+  pool 'rbda' removed
diff --git a/ceph/qa/suites/krbd/basic/ms_mode/crc$/.qa b/ceph/qa/suites/krbd/basic/ms_mode/crc$/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/basic/ms_mode/crc$/crc-rxbounce.yaml b/ceph/qa/suites/krbd/basic/ms_mode/crc$/crc-rxbounce.yaml
new file mode 100644 (file)
index 0000000..4d27d01
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc,rxbounce
diff --git a/ceph/qa/suites/krbd/basic/ms_mode/crc$/crc.yaml b/ceph/qa/suites/krbd/basic/ms_mode/crc$/crc.yaml
new file mode 100644 (file)
index 0000000..3b07257
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc
diff --git a/ceph/qa/suites/krbd/basic/ms_mode/crc.yaml b/ceph/qa/suites/krbd/basic/ms_mode/crc.yaml
deleted file mode 100644 (file)
index 3b07257..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=crc
diff --git a/ceph/qa/suites/krbd/basic/ms_mode/legacy$/.qa b/ceph/qa/suites/krbd/basic/ms_mode/legacy$/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/basic/ms_mode/legacy$/legacy-rxbounce.yaml b/ceph/qa/suites/krbd/basic/ms_mode/legacy$/legacy-rxbounce.yaml
new file mode 100644 (file)
index 0000000..244e45c
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy,rxbounce
diff --git a/ceph/qa/suites/krbd/basic/ms_mode/legacy$/legacy.yaml b/ceph/qa/suites/krbd/basic/ms_mode/legacy$/legacy.yaml
new file mode 100644 (file)
index 0000000..0048dcb
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy
diff --git a/ceph/qa/suites/krbd/basic/ms_mode/legacy.yaml b/ceph/qa/suites/krbd/basic/ms_mode/legacy.yaml
deleted file mode 100644 (file)
index 0048dcb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=legacy
diff --git a/ceph/qa/suites/krbd/fsx/ms_mode$/crc-rxbounce.yaml b/ceph/qa/suites/krbd/fsx/ms_mode$/crc-rxbounce.yaml
new file mode 100644 (file)
index 0000000..fb9c3de
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc,rxbounce,read_from_replica=balance
diff --git a/ceph/qa/suites/krbd/fsx/ms_mode$/legacy-rxbounce.yaml b/ceph/qa/suites/krbd/fsx/ms_mode$/legacy-rxbounce.yaml
new file mode 100644 (file)
index 0000000..3306c1e
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy,rxbounce,read_from_replica=balance
diff --git a/ceph/qa/suites/krbd/fsx/ms_mode$/prefer-crc.yaml b/ceph/qa/suites/krbd/fsx/ms_mode$/prefer-crc.yaml
deleted file mode 100644 (file)
index a346c75..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=prefer-crc,read_from_replica=balance
diff --git a/ceph/qa/suites/krbd/ms_modeless/% b/ceph/qa/suites/krbd/ms_modeless/%
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/krbd/ms_modeless/.qa b/ceph/qa/suites/krbd/ms_modeless/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/ms_modeless/bluestore-bitmap.yaml b/ceph/qa/suites/krbd/ms_modeless/bluestore-bitmap.yaml
new file mode 120000 (symlink)
index 0000000..a59cf51
--- /dev/null
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/ms_modeless/ceph/.qa b/ceph/qa/suites/krbd/ms_modeless/ceph/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/ms_modeless/ceph/ceph.yaml b/ceph/qa/suites/krbd/ms_modeless/ceph/ceph.yaml
new file mode 100644 (file)
index 0000000..2030acb
--- /dev/null
@@ -0,0 +1,3 @@
+tasks:
+- install:
+- ceph:
diff --git a/ceph/qa/suites/krbd/ms_modeless/clusters/.qa b/ceph/qa/suites/krbd/ms_modeless/clusters/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/ms_modeless/clusters/fixed-3.yaml b/ceph/qa/suites/krbd/ms_modeless/clusters/fixed-3.yaml
new file mode 120000 (symlink)
index 0000000..f75a848
--- /dev/null
@@ -0,0 +1 @@
+.qa/clusters/fixed-3.yaml
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/ms_modeless/conf.yaml b/ceph/qa/suites/krbd/ms_modeless/conf.yaml
new file mode 100644 (file)
index 0000000..30da870
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      global:
+        ms die on skipped message: false
diff --git a/ceph/qa/suites/krbd/ms_modeless/tasks/.qa b/ceph/qa/suites/krbd/ms_modeless/tasks/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/ms_modeless/tasks/krbd_default_map_options.yaml b/ceph/qa/suites/krbd/ms_modeless/tasks/krbd_default_map_options.yaml
new file mode 100644 (file)
index 0000000..c8c12f1
--- /dev/null
@@ -0,0 +1,5 @@
+tasks:
+- cram:
+    clients:
+      client.0:
+      - qa/rbd/krbd_default_map_options.t
diff --git a/ceph/qa/suites/krbd/ms_modeless/tasks/krbd_rxbounce.yaml b/ceph/qa/suites/krbd/ms_modeless/tasks/krbd_rxbounce.yaml
new file mode 100644 (file)
index 0000000..4ecd0e8
--- /dev/null
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+    clients:
+      all:
+        - rbd/krbd_rxbounce.sh
diff --git a/ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/.qa b/ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/crc-rxbounce.yaml b/ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/crc-rxbounce.yaml
new file mode 100644 (file)
index 0000000..4d27d01
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc,rxbounce
diff --git a/ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/crc.yaml b/ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc$/crc.yaml
new file mode 100644 (file)
index 0000000..3b07257
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc
diff --git a/ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc.yaml b/ceph/qa/suites/krbd/rbd-nomount/ms_mode/crc.yaml
deleted file mode 100644 (file)
index 3b07257..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=crc
diff --git a/ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/.qa b/ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/legacy-rxbounce.yaml b/ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/legacy-rxbounce.yaml
new file mode 100644 (file)
index 0000000..244e45c
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy,rxbounce
diff --git a/ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/legacy.yaml b/ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy$/legacy.yaml
new file mode 100644 (file)
index 0000000..0048dcb
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy
diff --git a/ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy.yaml b/ceph/qa/suites/krbd/rbd-nomount/ms_mode/legacy.yaml
deleted file mode 100644 (file)
index 0048dcb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=legacy
diff --git a/ceph/qa/suites/krbd/rbd/ms_mode/crc$/.qa b/ceph/qa/suites/krbd/rbd/ms_mode/crc$/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/rbd/ms_mode/crc$/crc-rxbounce.yaml b/ceph/qa/suites/krbd/rbd/ms_mode/crc$/crc-rxbounce.yaml
new file mode 100644 (file)
index 0000000..4d27d01
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc,rxbounce
diff --git a/ceph/qa/suites/krbd/rbd/ms_mode/crc$/crc.yaml b/ceph/qa/suites/krbd/rbd/ms_mode/crc$/crc.yaml
new file mode 100644 (file)
index 0000000..3b07257
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc
diff --git a/ceph/qa/suites/krbd/rbd/ms_mode/crc.yaml b/ceph/qa/suites/krbd/rbd/ms_mode/crc.yaml
deleted file mode 100644 (file)
index 3b07257..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=crc
diff --git a/ceph/qa/suites/krbd/rbd/ms_mode/legacy$/.qa b/ceph/qa/suites/krbd/rbd/ms_mode/legacy$/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/krbd/rbd/ms_mode/legacy$/legacy-rxbounce.yaml b/ceph/qa/suites/krbd/rbd/ms_mode/legacy$/legacy-rxbounce.yaml
new file mode 100644 (file)
index 0000000..244e45c
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy,rxbounce
diff --git a/ceph/qa/suites/krbd/rbd/ms_mode/legacy$/legacy.yaml b/ceph/qa/suites/krbd/rbd/ms_mode/legacy$/legacy.yaml
new file mode 100644 (file)
index 0000000..0048dcb
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy
diff --git a/ceph/qa/suites/krbd/rbd/ms_mode/legacy.yaml b/ceph/qa/suites/krbd/rbd/ms_mode/legacy.yaml
deleted file mode 100644 (file)
index 0048dcb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=legacy
diff --git a/ceph/qa/suites/krbd/singleton/ms_mode$/crc-rxbounce.yaml b/ceph/qa/suites/krbd/singleton/ms_mode$/crc-rxbounce.yaml
new file mode 100644 (file)
index 0000000..4d27d01
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc,rxbounce
diff --git a/ceph/qa/suites/krbd/singleton/ms_mode$/legacy-rxbounce.yaml b/ceph/qa/suites/krbd/singleton/ms_mode$/legacy-rxbounce.yaml
new file mode 100644 (file)
index 0000000..244e45c
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy,rxbounce
diff --git a/ceph/qa/suites/krbd/singleton/ms_mode$/prefer-crc.yaml b/ceph/qa/suites/krbd/singleton/ms_mode$/prefer-crc.yaml
deleted file mode 100644 (file)
index 1054473..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=prefer-crc
diff --git a/ceph/qa/suites/krbd/thrash/ms_mode$/crc-rxbounce.yaml b/ceph/qa/suites/krbd/thrash/ms_mode$/crc-rxbounce.yaml
new file mode 100644 (file)
index 0000000..4d27d01
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=crc,rxbounce
diff --git a/ceph/qa/suites/krbd/thrash/ms_mode$/legacy-rxbounce.yaml b/ceph/qa/suites/krbd/thrash/ms_mode$/legacy-rxbounce.yaml
new file mode 100644 (file)
index 0000000..244e45c
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default map options: ms_mode=legacy,rxbounce
diff --git a/ceph/qa/suites/krbd/thrash/ms_mode$/prefer-crc.yaml b/ceph/qa/suites/krbd/thrash/ms_mode$/prefer-crc.yaml
deleted file mode 100644 (file)
index 1054473..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default map options: ms_mode=prefer-crc
index 318b20266f1122726b9157a132fd652c19bbe1a7..18843d87220a1ce34e9e54e2381a5d9f9dcc6335 100644 (file)
@@ -11,6 +11,7 @@ overrides:
         osd map cache size: 1
         osd scrub min interval: 60
         osd scrub max interval: 120
+        osd max backfills: 6
 tasks:
 - thrashosds:
     timeout: 1800
index 772f2698b6790ed460f1e82d2dd04d38d714910c..9cbb80dba9e8372e806904877a04ac9d8cc232ef 100644 (file)
@@ -7,6 +7,7 @@ overrides:
       osd:
         osd scrub min interval: 60
         osd scrub max interval: 120
+        osd max backfills: 6
 tasks:
 - thrashosds:
     timeout: 1200
index bfb203904189c38509c9ed755ba991b16540ef4d..25d124a34f46ccb89a269fd6156b7d91a5ff18b8 100644 (file)
@@ -3,6 +3,11 @@ roles:
 - [mon.a, mgr.x, osd.0, osd.1, client.0]
 tasks:
 - install:
+    extra_system_packages:
+      rpm:
+      - qemu-kvm-block-rbd
+      deb:
+      - qemu-block-extra
 - ceph:
     fs: xfs
     conf:
index 3a19b317c7a96ccc4aa74d9395de81af6e7e4047..908d457e999bd2ae520bc84fa694c4c30e931289 100644 (file)
@@ -3,6 +3,11 @@ roles:
 - [mon.a, mgr.x, osd.0, osd.1, client.0]
 tasks:
 - install:
+    extra_system_packages:
+      rpm:
+      - qemu-kvm-block-rbd
+      deb:
+      - qemu-block-extra
 - ceph:
     fs: xfs
     conf:
index 48e370ec128f20cb1c3f1f81df1178cf66a556ad..9fabbeccfd6ad8a2b212f948d72179b2e6321346 100644 (file)
@@ -3,6 +3,11 @@ roles:
 - [mon.a, mgr.x, osd.0, osd.1, client.0]
 tasks:
 - install:
+    extra_system_packages:
+      rpm:
+      - qemu-kvm-block-rbd
+      deb:
+      - qemu-block-extra
 - ceph:
     fs: xfs
     conf:
index 908a678040394cba09eb934b211af45e9a0d8da0..fedb3cfc5e80e213a033b137e90c644d66e22109 100644 (file)
@@ -3,6 +3,11 @@ roles:
 - [mon.a, mgr.x, osd.0, osd.1, client.0]
 tasks:
 - install:
+    extra_system_packages:
+      rpm:
+      - qemu-kvm-block-rbd
+      deb:
+      - qemu-block-extra
 - ceph:
     fs: xfs
     conf:
index c044c1cb6a1f6fd3b1c82a1bb07fdbcb333c8a78..63d27766b68085a08c1fef92b97fe153693036d6 100644 (file)
@@ -48,6 +48,7 @@ tasks:
         - .*test_container_staticweb.StaticWebTest.test_web_listing_css
         - .*test_container_synchronization.*
         - .*test_object_services.PublicObjectTest.test_access_public_container_object_without_using_creds
+        - .*test_object_services.ObjectTest.test_create_object_with_transfer_encoding
 
 overrides:
   ceph:
index 8354b1772bdd95a809d53ff6f734b369bdacff03..96af0cb0eed4cf2f40c3629556ce45a6b30047d8 100644 (file)
@@ -1,8 +1,8 @@
 meta:
 - desc: |
-   Insatll and run ceph on one node,
+   Install and run ceph on one node,
    with a separate client 1.
-   Upgrade client 1 to octopus
+   Upgrade client 1 to pacific
    Run tests against old cluster
 roles:
 - - mon.a
@@ -16,6 +16,4 @@ roles:
 - - client.1
 overrides:
   ceph:
-    #log-ignorelist:
-      #- failed to encode map
     fs: xfs
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml
deleted file mode 100644 (file)
index e875802..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-tasks:
-- install:
-    branch: octopus
-    exclude_packages: ['ceph-mgr','libcephfs2','libcephfs-devel','libcephfs-dev','python34-cephfs','python34-rados']
-- print: "**** done install octopus"
-- install.upgrade:
-   exclude_packages: ['ceph-test', 'ceph-test-dbg','libcephfs1', 'python-ceph']
-   client.1:
-- print: "**** done install.upgrade to -x on client.0"
-- ceph:
-- print: "**** done ceph task"
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/octopus-client-x.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/octopus-client-x.yaml
new file mode 100644 (file)
index 0000000..571799a
--- /dev/null
@@ -0,0 +1,11 @@
+tasks:
+- install:
+    branch: octopus
+    exclude_packages: ['ceph-mgr','libcephfs2','libcephfs-devel','libcephfs-dev','python34-cephfs','python34-rados']
+- print: "**** done install octopus"
+- install.upgrade:
+   exclude_packages: ['ceph-test', 'ceph-test-dbg','libcephfs1', 'python-ceph']
+   client.1:
+- print: "**** done install.upgrade to -x on client.1"
+- ceph:
+- print: "**** done ceph task"
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml
deleted file mode 100644 (file)
index dff6623..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default features: 61
-
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml
deleted file mode 100644 (file)
index 5613d01..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default features: 1
-
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-workload/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-workload/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-workload/rbd_notification_tests.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-workload/rbd_notification_tests.yaml
new file mode 100644 (file)
index 0000000..4552004
--- /dev/null
@@ -0,0 +1,34 @@
+tasks:
+- parallel:
+  - workunit:
+      branch: octopus
+      clients:
+        client.0:
+          - rbd/notify_master.sh
+      env:
+        RBD_FEATURES: "61"
+  - workunit:
+      branch: pacific
+      clients:
+        client.1:
+          - rbd/notify_slave.sh
+      env:
+        RBD_FEATURES: "61"
+        RBD_DISABLE_UPDATE_FEATURES: "1"
+- print: "**** done rbd: old librbd -> new librbd"
+- parallel:
+  - workunit:
+      branch: octopus
+      clients:
+        client.0:
+          - rbd/notify_slave.sh
+      env:
+        RBD_FEATURES: "61"
+  - workunit:
+      branch: pacific
+      clients:
+        client.1:
+          - rbd/notify_master.sh
+      env:
+        RBD_FEATURES: "61"
+- print: "**** done rbd: new librbd -> old librbd"
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml
deleted file mode 100644 (file)
index 4552004..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-tasks:
-- parallel:
-  - workunit:
-      branch: octopus
-      clients:
-        client.0:
-          - rbd/notify_master.sh
-      env:
-        RBD_FEATURES: "61"
-  - workunit:
-      branch: pacific
-      clients:
-        client.1:
-          - rbd/notify_slave.sh
-      env:
-        RBD_FEATURES: "61"
-        RBD_DISABLE_UPDATE_FEATURES: "1"
-- print: "**** done rbd: old librbd -> new librbd"
-- parallel:
-  - workunit:
-      branch: octopus
-      clients:
-        client.0:
-          - rbd/notify_slave.sh
-      env:
-        RBD_FEATURES: "61"
-  - workunit:
-      branch: pacific
-      clients:
-        client.1:
-          - rbd/notify_master.sh
-      env:
-        RBD_FEATURES: "61"
-- print: "**** done rbd: new librbd -> old librbd"
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/.qa
new file mode 120000 (symlink)
index 0000000..a23f7e0
--- /dev/null
@@ -0,0 +1 @@
+../../.qa
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/% b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/%
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/.qa
new file mode 120000 (symlink)
index 0000000..a23f7e0
--- /dev/null
@@ -0,0 +1 @@
+../../.qa
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/+ b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/openstack.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/openstack.yaml
new file mode 100644 (file)
index 0000000..b0f3b9b
--- /dev/null
@@ -0,0 +1,4 @@
+openstack:
+  - volumes: # attached to each instance
+      count: 4
+      size: 30 # GB
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/start.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/0-cluster/start.yaml
new file mode 100644 (file)
index 0000000..2f89e0d
--- /dev/null
@@ -0,0 +1,19 @@
+meta:
+- desc: |
+   Install and run ceph on one node,
+   with a separate client 1.
+   Upgrade client 1 to quincy
+   Run tests against old cluster
+roles:
+- - mon.a
+  - mon.b
+  - mon.c
+  - osd.0
+  - osd.1
+  - osd.2
+  - client.0
+  - mgr.x
+- - client.1
+overrides:
+  ceph:
+    fs: xfs
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/1-install/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/1-install/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/1-install/octopus-client-x.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/1-install/octopus-client-x.yaml
new file mode 100644 (file)
index 0000000..571799a
--- /dev/null
@@ -0,0 +1,11 @@
+tasks:
+- install:
+    branch: octopus
+    exclude_packages: ['ceph-mgr','libcephfs2','libcephfs-devel','libcephfs-dev','python34-cephfs','python34-rados']
+- print: "**** done install octopus"
+- install.upgrade:
+   exclude_packages: ['ceph-test', 'ceph-test-dbg','libcephfs1', 'python-ceph']
+   client.1:
+- print: "**** done install.upgrade to -x on client.1"
+- ceph:
+- print: "**** done ceph task"
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/2-workload/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/2-workload/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/2-workload/rbd_notification_tests.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/2-workload/rbd_notification_tests.yaml
new file mode 100644 (file)
index 0000000..e8de4ea
--- /dev/null
@@ -0,0 +1,34 @@
+tasks:
+- parallel:
+  - workunit:
+      branch: octopus
+      clients:
+        client.0:
+          - rbd/notify_master.sh
+      env:
+        RBD_FEATURES: "61"
+  - workunit:
+      branch: quincy
+      clients:
+        client.1:
+          - rbd/notify_slave.sh
+      env:
+        RBD_FEATURES: "61"
+        RBD_DISABLE_UPDATE_FEATURES: "1"
+- print: "**** done rbd: old librbd -> new librbd"
+- parallel:
+  - workunit:
+      branch: octopus
+      clients:
+        client.0:
+          - rbd/notify_slave.sh
+      env:
+        RBD_FEATURES: "61"
+  - workunit:
+      branch: quincy
+      clients:
+        client.1:
+          - rbd/notify_master.sh
+      env:
+        RBD_FEATURES: "61"
+- print: "**** done rbd: new librbd -> old librbd"
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/supported/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/supported/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/supported/ubuntu_20.04.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-quincy/octopus-client-x/rbd/supported/ubuntu_20.04.yaml
new file mode 120000 (symlink)
index 0000000..834ac14
--- /dev/null
@@ -0,0 +1 @@
+../../../../../../distros/all/ubuntu_20.04.yaml
\ No newline at end of file
index f11ad1284e18dfb1435a37889683c4515a2c21e8..3c45d765865b18917b07df195f86b6e81a1391d5 100644 (file)
@@ -43,11 +43,13 @@ upgrade-sequence:
        duration: 60
    - ceph.restart:
        daemons: [osd.8, osd.9, osd.10, osd.11]
-       wait-for-healthy: true
+       wait-for-healthy: false
+       wait-for-osds-up: true
    - sleep:
        duration: 60
    - ceph.restart:
        daemons: [rgw.*]
-       wait-for-healthy: true
+       wait-for-healthy: false
+       wait-for-osds-up: true
    - sleep:
        duration: 60
index 848cdae3eb8ec67c6573f7f2983d110c6091a274..4e27fac815d592bd2c2597f94a33255d2f49ed60 100644 (file)
@@ -17,6 +17,7 @@ import time
 import gevent
 import re
 import socket
+import yaml
 
 from paramiko import SSHException
 from tasks.ceph_manager import CephManager, write_conf
@@ -72,11 +73,26 @@ def generate_caps(type_):
         yield capability
 
 
+def update_archive_setting(ctx, key, value):
+    with open(os.path.join(ctx.archive, 'info.yaml'), 'r+') as info_file:
+        info_yaml = yaml.safe_load(info_file)
+        info_file.seek(0)
+        if 'archive' in info_yaml:
+            info_yaml['archive'][key] = value
+        else:
+            info_yaml['archive'] = {key: value}
+        yaml.safe_dump(info_yaml, info_file, default_flow_style=False)
+
+
 @contextlib.contextmanager
 def ceph_crash(ctx, config):
     """
-    Gather crash dumps from /var/lib/crash
+    Gather crash dumps from /var/lib/ceph/crash
     """
+
+    # Add crash directory to job's archive
+    update_archive_setting(ctx, 'crash', '/var/lib/ceph/crash')
+
     try:
         yield
 
@@ -146,6 +162,9 @@ def ceph_log(ctx, config):
         )
     )
 
+    # Add logs directory to job's info log file
+    update_archive_setting(ctx, 'log', '/var/log/ceph')
+
     class Rotater(object):
         stop_event = gevent.event.Event()
 
@@ -1523,7 +1542,7 @@ def restart(ctx, config):
                 ctx.managers[cluster].mark_down_osd(id_)
             ctx.daemons.get_daemon(type_, id_, cluster).restart()
             clusters.add(cluster)
-    
+
     if config.get('wait-for-healthy', True):
         for cluster in clusters:
             healthy(ctx=ctx, config=dict(cluster=cluster))
index 7b6459de9230a92787e3b07b2735df8ba5a5c2f2..c14d28238dd7be32b727860938121811904b4a45 100644 (file)
@@ -548,7 +548,7 @@ class TestDataScan(CephFSTestCase):
 
         pg_count = self.fs.pgs_per_fs_pool
         for pg_n in range(0, pg_count):
-            pg_str = "{0}.{1}".format(self.fs.get_data_pool_id(), pg_n)
+            pg_str = "{0}.{1:x}".format(self.fs.get_data_pool_id(), pg_n)
             out = self.fs.data_scan(["pg_files", "mydir", pg_str])
             lines = [l for l in out.split("\n") if l]
             log.info("{0}: {1}".format(pg_str, lines))
index 4dd70d3ee05d8643bd6bba615b31639bfb9636a9..3a60d72713799135c6625afcf0411fb41daf30d9 100644 (file)
@@ -344,6 +344,35 @@ class TestStrays(CephFSTestCase):
 
         self.await_data_pool_empty()
 
+    def test_reintegration_limit(self):
+        """
+        That the reintegration is not blocked by full directories.
+        """
+
+        LOW_LIMIT = 50
+        self.config_set('mds', 'mds_bal_fragment_size_max', str(LOW_LIMIT))
+        time.sleep(10) # for config to reach MDS; async create is fast!!
+
+        last_reintegrated = self.get_mdc_stat("strays_reintegrated")
+        self.mount_a.run_shell_payload("""
+        mkdir a b
+        for i in `seq 1 50`; do
+           touch a/"$i"
+           ln a/"$i" b/"$i"
+        done
+        sync -f a b
+        rm a/*
+        """)
+
+        self.wait_until_equal(
+            lambda: self.get_mdc_stat("num_strays"),
+            expect_val=0,
+            timeout=60
+        )
+        curr_reintegrated = self.get_mdc_stat("strays_reintegrated")
+        self.assertGreater(curr_reintegrated, last_reintegrated)
+
+
     def test_hardlink_reintegration(self):
         """
         That removal of primary dentry of hardlinked inode results
index 13eb2e641f21ef6818b6f2f7ac9ef2a4490c26ee..d9c7162cc581e3f65069c76c1464f07e68c99dba 100644 (file)
@@ -2120,17 +2120,20 @@ class TestVolumes(CephFSTestCase):
         expected_mode2 = "777"
 
         # create group
+        self._fs_cmd("subvolumegroup", "create", self.volname, group2, f"--mode={expected_mode2}")
         self._fs_cmd("subvolumegroup", "create", self.volname, group1)
-        self._fs_cmd("subvolumegroup", "create", self.volname, group2, "--mode", "777")
 
         group1_path = self._get_subvolume_group_path(self.volname, group1)
         group2_path = self._get_subvolume_group_path(self.volname, group2)
+        volumes_path = os.path.dirname(group1_path)
 
         # check group's mode
         actual_mode1 = self.mount_a.run_shell(['stat', '-c' '%a', group1_path]).stdout.getvalue().strip()
         actual_mode2 = self.mount_a.run_shell(['stat', '-c' '%a', group2_path]).stdout.getvalue().strip()
+        actual_mode3 = self.mount_a.run_shell(['stat', '-c' '%a', volumes_path]).stdout.getvalue().strip()
         self.assertEqual(actual_mode1, expected_mode1)
         self.assertEqual(actual_mode2, expected_mode2)
+        self.assertEqual(actual_mode3, expected_mode1)
 
         self._fs_cmd("subvolumegroup", "rm", self.volname, group1)
         self._fs_cmd("subvolumegroup", "rm", self.volname, group2)
@@ -2160,6 +2163,36 @@ class TestVolumes(CephFSTestCase):
         # remove group
         self._fs_cmd("subvolumegroup", "rm", self.volname, subvolgroupname)
 
+    def test_subvolume_create_with_desired_mode(self):
+        subvol1 = self._generate_random_subvolume_name()
+
+        # default mode
+        default_mode = "755"
+        # desired mode
+        desired_mode = "777"
+
+        self._fs_cmd("subvolume", "create", self.volname, subvol1,  "--mode", "777")
+
+        subvol1_path = self._get_subvolume_path(self.volname, subvol1)
+
+        # check subvolumegroup's mode
+        subvol_par_path = os.path.dirname(subvol1_path)
+        group_path = os.path.dirname(subvol_par_path)
+        actual_mode1 = self.mount_a.run_shell(['stat', '-c' '%a', group_path]).stdout.getvalue().strip()
+        self.assertEqual(actual_mode1, default_mode)
+        # check /volumes mode
+        volumes_path = os.path.dirname(group_path)
+        actual_mode2 = self.mount_a.run_shell(['stat', '-c' '%a', volumes_path]).stdout.getvalue().strip()
+        self.assertEqual(actual_mode2, default_mode)
+        # check subvolume's  mode
+        actual_mode3 = self.mount_a.run_shell(['stat', '-c' '%a', subvol1_path]).stdout.getvalue().strip()
+        self.assertEqual(actual_mode3, desired_mode)
+
+        self._fs_cmd("subvolume", "rm", self.volname, subvol1)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
     def test_subvolume_create_with_desired_mode_in_group(self):
         subvol1, subvol2, subvol3 = self._generate_random_subvolume_name(3)
 
@@ -3694,6 +3727,40 @@ class TestVolumes(CephFSTestCase):
         # verify trash dir is clean
         self._wait_for_trash_empty()
 
+    def test_subvolume_snapshot_clone_quota_exceeded(self):
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+        clone = self._generate_random_clone_name()
+
+        # create subvolume with 20MB quota
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*20
+        self._fs_cmd("subvolume", "create", self.volname, subvolume,"--mode=777", "--size", str(osize))
+
+        # do IO, write 50 files of 1MB each to exceed quota. This mostly succeeds as quota enforcement takes time.
+        self._do_subvolume_io(subvolume, number_of_files=50)
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
+
+        # schedule a clone
+        self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
+
+        # check clone status
+        self._wait_for_clone_to_complete(clone)
+
+        # verify clone
+        self._verify_clone(subvolume, snapshot, clone)
+
+        # remove snapshot
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+
+        # remove subvolumes
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+        self._fs_cmd("subvolume", "rm", self.volname, clone)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
     def test_subvolume_snapshot_clone(self):
         subvolume = self._generate_random_subvolume_name()
         snapshot = self._generate_random_snapshot_name()
@@ -3788,6 +3855,25 @@ class TestVolumes(CephFSTestCase):
         max_concurrent_clones = int(self.config_get('mgr', 'mgr/volumes/max_concurrent_clones'))
         self.assertEqual(max_concurrent_clones, 2)
 
+    def test_subvolume_snapshot_config_snapshot_clone_delay(self):
+        """
+        Validate 'snapshot_clone_delay' config option
+        """
+
+        # get the default delay before starting the clone
+        default_timeout = int(self.config_get('mgr', 'mgr/volumes/snapshot_clone_delay'))
+        self.assertEqual(default_timeout, 0)
+
+        # Insert delay of 2 seconds at the beginning of the snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 2)
+        default_timeout = int(self.config_get('mgr', 'mgr/volumes/snapshot_clone_delay'))
+        self.assertEqual(default_timeout, 2)
+
+        # Decrease number of cloner threads
+        self.config_set('mgr', 'mgr/volumes/max_concurrent_clones', 2)
+        max_concurrent_clones = int(self.config_get('mgr', 'mgr/volumes/max_concurrent_clones'))
+        self.assertEqual(max_concurrent_clones, 2)
+
     def test_subvolume_snapshot_clone_pool_layout(self):
         subvolume = self._generate_random_subvolume_name()
         snapshot = self._generate_random_snapshot_name()
@@ -4120,6 +4206,9 @@ class TestVolumes(CephFSTestCase):
         # ensure metadata file is in legacy location, with required version v1
         self._assert_meta_location_and_version(self.volname, subvolume, version=1, legacy=True)
 
+        # Insert delay at the beginning of snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 2)
+
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
@@ -4164,6 +4253,9 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
+        # Insert delay at the beginning of snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 2)
+
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
@@ -4210,6 +4302,9 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
+        # Insert delay at the beginning of snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 2)
+
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
@@ -4255,6 +4350,9 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
+        # Insert delay at the beginning of snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 2)
+
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
@@ -4468,6 +4566,9 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
+        # Insert delay at the beginning of snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 2)
+
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
@@ -4553,3 +4654,142 @@ class TestVolumes(CephFSTestCase):
 
         # verify trash dir is clean
         self._wait_for_trash_empty()
+
+    def test_malicious_metafile_on_legacy_to_v1_upgrade(self):
+        """
+        Validate handcrafted .meta file on legacy subvol root doesn't break the system
+        on legacy subvol upgrade to v1
+        poor man's upgrade test -- theme continues...
+        """
+        subvol1, subvol2 = self._generate_random_subvolume_name(2)
+
+        # emulate a old-fashioned subvolume in the default group
+        createpath1 = os.path.join(".", "volumes", "_nogroup", subvol1)
+        self.mount_a.run_shell(['mkdir', '-p', createpath1])
+
+        # add required xattrs to subvolume
+        default_pool = self.mount_a.getfattr(".", "ceph.dir.layout.pool")
+        self.mount_a.setfattr(createpath1, 'ceph.dir.layout.pool', default_pool)
+
+        # create v2 subvolume
+        self._fs_cmd("subvolume", "create", self.volname, subvol2)
+
+        # Create malicious .meta file in legacy subvolume root. Copy v2 subvolume
+        # .meta into legacy subvol1's root
+        subvol2_metapath = os.path.join(".", "volumes", "_nogroup", subvol2, ".meta")
+        self.mount_a.run_shell(["cp", subvol2_metapath, createpath1])
+
+        # Upgrade legacy subvol1 to v1
+        subvolpath1 = self._fs_cmd("subvolume", "getpath", self.volname, subvol1)
+        self.assertNotEqual(subvolpath1, None)
+        subvolpath1 = subvolpath1.rstrip()
+
+        # the subvolume path returned should not be of subvol2 from handcrafted
+        # .meta file
+        self.assertEqual(createpath1[1:], subvolpath1)
+
+        # ensure metadata file is in legacy location, with required version v1
+        self._assert_meta_location_and_version(self.volname, subvol1, version=1, legacy=True)
+
+        # Authorize alice authID read-write access to subvol1. Verify it authorizes subvol1 path and not subvol2
+        # path whose '.meta' file is copied to subvol1 root
+        authid1 = "alice"
+        self._fs_cmd("subvolume", "authorize", self.volname, subvol1, authid1)
+
+        # Validate that the mds path added is of subvol1 and not of subvol2
+        out = json.loads(self.fs.mon_manager.raw_cluster_cmd("auth", "get", "client.alice", "--format=json-pretty"))
+        self.assertEqual("client.alice", out[0]["entity"])
+        self.assertEqual("allow rw path={0}".format(createpath1[1:]), out[0]["caps"]["mds"])
+
+        # remove subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvol1)
+        self._fs_cmd("subvolume", "rm", self.volname, subvol2)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_binary_metafile_on_legacy_to_v1_upgrade(self):
+        """
+        Validate binary .meta file on legacy subvol root doesn't break the system
+        on legacy subvol upgrade to v1
+        poor man's upgrade test -- theme continues...
+        """
+        subvol = self._generate_random_subvolume_name()
+        group = self._generate_random_group_name()
+
+        # emulate a old-fashioned subvolume -- in a custom group
+        createpath = os.path.join(".", "volumes", group, subvol)
+        self.mount_a.run_shell(['mkdir', '-p', createpath])
+
+        # add required xattrs to subvolume
+        default_pool = self.mount_a.getfattr(".", "ceph.dir.layout.pool")
+        self.mount_a.setfattr(createpath, 'ceph.dir.layout.pool', default_pool)
+
+        # Create unparseable binary .meta file on legacy subvol's root
+        meta_contents = os.urandom(4096)
+        meta_filepath = os.path.join(self.mount_a.mountpoint, createpath, ".meta")
+        sudo_write_file(self.mount_a.client_remote, meta_filepath, meta_contents)
+
+        # Upgrade legacy subvol to v1
+        subvolpath = self._fs_cmd("subvolume", "getpath", self.volname, subvol, group)
+        self.assertNotEqual(subvolpath, None)
+        subvolpath = subvolpath.rstrip()
+
+        # The legacy subvolume path should be returned for subvol.
+        # Should ignore unparseable binary .meta file in subvol's root
+        self.assertEqual(createpath[1:], subvolpath)
+
+        # ensure metadata file is in legacy location, with required version v1
+        self._assert_meta_location_and_version(self.volname, subvol, subvol_group=group, version=1, legacy=True)
+
+        # remove subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvol, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_unparseable_metafile_on_legacy_to_v1_upgrade(self):
+        """
+        Validate unparseable text .meta file on legacy subvol root doesn't break the system
+        on legacy subvol upgrade to v1
+        poor man's upgrade test -- theme continues...
+        """
+        subvol = self._generate_random_subvolume_name()
+        group = self._generate_random_group_name()
+
+        # emulate a old-fashioned subvolume -- in a custom group
+        createpath = os.path.join(".", "volumes", group, subvol)
+        self.mount_a.run_shell(['mkdir', '-p', createpath])
+
+        # add required xattrs to subvolume
+        default_pool = self.mount_a.getfattr(".", "ceph.dir.layout.pool")
+        self.mount_a.setfattr(createpath, 'ceph.dir.layout.pool', default_pool)
+
+        # Create unparseable text .meta file on legacy subvol's root
+        meta_contents = "unparseable config\nfile ...\nunparseable config\nfile ...\n"
+        meta_filepath = os.path.join(self.mount_a.mountpoint, createpath, ".meta")
+        sudo_write_file(self.mount_a.client_remote, meta_filepath, meta_contents)
+
+        # Upgrade legacy subvol to v1
+        subvolpath = self._fs_cmd("subvolume", "getpath", self.volname, subvol, group)
+        self.assertNotEqual(subvolpath, None)
+        subvolpath = subvolpath.rstrip()
+
+        # The legacy subvolume path should be returned for subvol.
+        # Should ignore unparseable binary .meta file in subvol's root
+        self.assertEqual(createpath[1:], subvolpath)
+
+        # ensure metadata file is in legacy location, with required version v1
+        self._assert_meta_location_and_version(self.volname, subvol, subvol_group=group, version=1, legacy=True)
+
+        # remove subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvol, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
index b95c29920ddd50733690f075f22c553e1ee2b1e3..14817fee7fd03f6ff4ad17ed0a42026d005494ed 100644 (file)
@@ -50,11 +50,12 @@ class DaemonWatchdog(Greenlet):
 
     def bark(self):
         self.log("BARK! unmounting mounts and killing all daemons")
-        for mount in self.ctx.mounts.values():
-            try:
-                mount.umount_wait(force=True)
-            except:
-                self.logger.exception("ignoring exception:")
+        if hasattr(self.ctx, 'mounts'):
+            for mount in self.ctx.mounts.values():
+                try:
+                    mount.umount_wait(force=True)
+                except:
+                    self.logger.exception("ignoring exception:")
         daemons = []
         daemons.extend(filter(lambda daemon: daemon.running() and not daemon.proc.finished, self.ctx.daemons.iter_daemons_of_role('osd', cluster=self.cluster)))
         daemons.extend(filter(lambda daemon: daemon.running() and not daemon.proc.finished, self.ctx.daemons.iter_daemons_of_role('mds', cluster=self.cluster)))
index 06c79cb5b4fdcf9bff883d4793566069392f9010..8200ac536cf7647a04a6a2bec614927f9ec0c31b 100644 (file)
@@ -14,6 +14,7 @@ from teuthology import contextutil
 from teuthology import misc as teuthology
 from teuthology.config import config as teuth_config
 from teuthology.orchestra import run
+from teuthology.packaging import install_package, remove_package
 
 log = logging.getLogger(__name__)
 
@@ -94,6 +95,25 @@ def create_dirs(ctx, config):
                     ]
                 )
 
+@contextlib.contextmanager
+def install_block_rbd_driver(ctx, config):
+    """
+    Make sure qemu rbd block driver (block-rbd.so) is installed
+    """
+    for client, client_config in config.items():
+        (remote,) = ctx.cluster.only(client).remotes.keys()
+        if remote.os.package_type == 'rpm':
+            block_rbd_pkg = 'qemu-kvm-block-rbd'
+        else:
+            block_rbd_pkg = 'qemu-block-extra'
+        install_package(block_rbd_pkg, remote)
+    try:
+        yield
+    finally:
+        for client, client_config in config.items():
+            (remote,) = ctx.cluster.only(client).remotes.keys()
+            remove_package(block_rbd_pkg, remote)
+
 @contextlib.contextmanager
 def generate_iso(ctx, config):
     """Execute system commands to generate iso"""
@@ -572,6 +592,7 @@ def task(ctx, config):
     create_images(ctx=ctx, config=config, managers=managers)
     managers.extend([
         lambda: create_dirs(ctx=ctx, config=config),
+        lambda: install_block_rbd_driver(ctx=ctx, config=config),
         lambda: generate_iso(ctx=ctx, config=config),
         lambda: download_image(ctx=ctx, config=config),
         ])
index 4e414eeafb6e647bcfeb9dcd7f9da74dc6f102dc..6f0683e9e4f47ca237b40911eb3e15ecd58a7f85 100644 (file)
@@ -51,7 +51,7 @@ def task(ctx, config):
     # set versions for cloning the repo
     apache_maven = 'apache-maven-{maven_version}-bin.tar.gz'.format(
         maven_version=maven_version)
-    maven_link = 'http://www-us.apache.org/dist/maven/' + \
+    maven_link = 'http://archive.apache.org/dist/maven/' + \
         '{maven_major}/{maven_version}/binaries/'.format(maven_major=maven_major, maven_version=maven_version) + apache_maven
     hadoop_git = 'https://github.com/apache/hadoop'
     hadoop_rel = 'hadoop-{ver} rel/release-{ver}'.format(ver=hadoop_ver)
index 340e7d14e16ef0ffd7f7e09c315d8b36d28f651c..36b9271ee1204975d6e446924699c3f446a3b088 100755 (executable)
@@ -2171,13 +2171,14 @@ function test_mon_pg()
 function test_mon_osd_pool_set()
 {
   TEST_POOL_GETSET=pool_getset
-  ceph osd pool create $TEST_POOL_GETSET 1
+  expect_false ceph osd pool create $TEST_POOL_GETSET 1 --target_size_ratio -0.3
+  expect_true ceph osd pool create $TEST_POOL_GETSET 1 --target_size_ratio 1
   ceph osd pool application enable $TEST_POOL_GETSET rados
   ceph osd pool set $TEST_POOL_GETSET pg_autoscale_mode off
   wait_for_clean
   ceph osd pool get $TEST_POOL_GETSET all
 
-  for s in pg_num pgp_num size min_size crush_rule; do
+  for s in pg_num pgp_num size min_size crush_rule target_size_ratio; do
     ceph osd pool get $TEST_POOL_GETSET $s
   done
 
@@ -2250,6 +2251,12 @@ function test_mon_osd_pool_set()
   ceph osd pool set $TEST_POOL_GETSET scrub_priority 0
   ceph osd pool get $TEST_POOL_GETSET scrub_priority | expect_false grep '.'
 
+  expect_false ceph osd pool set $TEST_POOL_GETSET target_size_ratio -3
+  expect_false ceph osd pool set $TEST_POOL_GETSET target_size_ratio abc
+  expect_true ceph osd pool set $TEST_POOL_GETSET target_size_ratio 0.1
+  expect_true ceph osd pool set $TEST_POOL_GETSET target_size_ratio 1
+  ceph osd pool get $TEST_POOL_GETSET target_size_ratio | grep 'target_size_ratio: 1'
+
   ceph osd pool set $TEST_POOL_GETSET nopgchange 1
   expect_false ceph osd pool set $TEST_POOL_GETSET pg_num 10
   expect_false ceph osd pool set $TEST_POOL_GETSET pgp_num 10
index e6a7cb759879cdbbc95e9bc8fbcef66d0bfbb465..2b3de518af637eae07b96743032a6a90cde662ca 100755 (executable)
@@ -1155,6 +1155,8 @@ test_trash_purge_schedule() {
     rbd trash purge schedule status
     test "$(rbd trash purge schedule status --format xml |
         $XMLSTARLET sel -t -v '//scheduled/item/pool')" = 'rbd'
+    test "$(rbd trash purge schedule status -p rbd --format xml |
+        $XMLSTARLET sel -t -v '//scheduled/item/pool')" = 'rbd'
 
     rbd trash purge schedule add 2d 00:17
     rbd trash purge schedule ls | grep 'every 2d starting at 00:17'
@@ -1177,6 +1179,12 @@ test_trash_purge_schedule() {
     rbd trash purge schedule status
     rbd trash purge schedule status --format xml |
         $XMLSTARLET sel -t -v '//scheduled/item/pool' | grep 'rbd2'
+    echo $(rbd trash purge schedule status --format xml |
+        $XMLSTARLET sel -t -v '//scheduled/item/pool') | grep 'rbd rbd2 rbd2'
+    test "$(rbd trash purge schedule status -p rbd --format xml |
+        $XMLSTARLET sel -t -v '//scheduled/item/pool')" = 'rbd'
+    test "$(echo $(rbd trash purge schedule status -p rbd2 --format xml |
+        $XMLSTARLET sel -t -v '//scheduled/item/pool'))" = 'rbd2 rbd2'
 
     test "$(echo $(rbd trash purge schedule ls -R --format xml |
         $XMLSTARLET sel -t -v '//schedules/schedule/items'))" = "2d00:17:00 1d01:30:00"
@@ -1199,6 +1207,7 @@ test_trash_purge_schedule() {
         rbd trash ls rbd2/ns1 | wc -l | grep '^1$'
 
         rbd trash purge schedule add -p $p 1m
+        rbd trash purge schedule list -p rbd2 -R | grep 'every 1m'
         rbd trash purge schedule list -p rbd2/ns1 -R | grep 'every 1m'
 
         for i in `seq 12`; do
@@ -1207,11 +1216,27 @@ test_trash_purge_schedule() {
         done
         rbd trash ls rbd2/ns1 | wc -l | grep '^0$'
 
+        # repeat with kicked in schedule, see https://tracker.ceph.com/issues/53915
+        rbd trash purge schedule list -p rbd2 -R | grep 'every 1m'
+        rbd trash purge schedule list -p rbd2/ns1 -R | grep 'every 1m'
+
         rbd trash purge schedule status | grep 'rbd2  *ns1'
+        rbd trash purge schedule status -p rbd2 | grep 'rbd2  *ns1'
+        rbd trash purge schedule status -p rbd2/ns1 | grep 'rbd2  *ns1'
+
         rbd trash purge schedule rm -p $p 1m
     done
 
+    # Negative tests
+    rbd trash purge schedule add 2m
+    expect_fail rbd trash purge schedule add -p rbd dummy
+    expect_fail rbd trash purge schedule add dummy
+    expect_fail rbd trash purge schedule remove -p rbd dummy
+    expect_fail rbd trash purge schedule remove dummy
+    rbd trash purge schedule ls -p rbd | grep 'every 1d starting at 01:30'
+    rbd trash purge schedule ls | grep 'every 2m'
     rbd trash purge schedule remove -p rbd 1d 01:30
+    rbd trash purge schedule remove 2m
     test "$(rbd trash purge schedule ls -R --format json)" = "[]"
 
     remove_images
@@ -1242,8 +1267,14 @@ test_mirror_snapshot_schedule() {
     test "$(rbd mirror image status rbd2/ns1/test1 |
         grep -c mirror.primary)" = '1'
 
-    rbd mirror snapshot schedule add --image rbd2/ns1/test1 1m
-    test "$(rbd mirror snapshot schedule ls --image rbd2/ns1/test1)" = 'every 1m'
+    rbd mirror snapshot schedule add -p rbd2/ns1 --image test1 1m
+    expect_fail rbd mirror snapshot schedule ls
+    rbd mirror snapshot schedule ls -R | grep 'rbd2 *ns1 *test1 *every 1m'
+    expect_fail rbd mirror snapshot schedule ls -p rbd2
+    rbd mirror snapshot schedule ls -p rbd2 -R | grep 'rbd2 *ns1 *test1 *every 1m'
+    expect_fail rbd mirror snapshot schedule ls -p rbd2/ns1
+    rbd mirror snapshot schedule ls -p rbd2/ns1 -R | grep 'rbd2 *ns1 *test1 *every 1m'
+    test "$(rbd mirror snapshot schedule ls -p rbd2/ns1 --image test1)" = 'every 1m'
 
     for i in `seq 12`; do
         test "$(rbd mirror image status rbd2/ns1/test1 |
@@ -1254,22 +1285,65 @@ test_mirror_snapshot_schedule() {
     test "$(rbd mirror image status rbd2/ns1/test1 |
         grep -c mirror.primary)" -gt '1'
 
+    # repeat with kicked in schedule, see https://tracker.ceph.com/issues/53915
+    expect_fail rbd mirror snapshot schedule ls
     rbd mirror snapshot schedule ls -R | grep 'rbd2 *ns1 *test1 *every 1m'
+    expect_fail rbd mirror snapshot schedule ls -p rbd2
+    rbd mirror snapshot schedule ls -p rbd2 -R | grep 'rbd2 *ns1 *test1 *every 1m'
+    expect_fail rbd mirror snapshot schedule ls -p rbd2/ns1
+    rbd mirror snapshot schedule ls -p rbd2/ns1 -R | grep 'rbd2 *ns1 *test1 *every 1m'
     test "$(rbd mirror snapshot schedule ls -p rbd2/ns1 --image test1)" = 'every 1m'
 
     rbd mirror snapshot schedule status
     test "$(rbd mirror snapshot schedule status --format xml |
         $XMLSTARLET sel -t -v '//scheduled_images/image/image')" = 'rbd2/ns1/test1'
+    test "$(rbd mirror snapshot schedule status -p rbd2 --format xml |
+        $XMLSTARLET sel -t -v '//scheduled_images/image/image')" = 'rbd2/ns1/test1'
+    test "$(rbd mirror snapshot schedule status -p rbd2/ns1 --format xml |
+        $XMLSTARLET sel -t -v '//scheduled_images/image/image')" = 'rbd2/ns1/test1'
+    test "$(rbd mirror snapshot schedule status -p rbd2/ns1 --image test1 --format xml |
+        $XMLSTARLET sel -t -v '//scheduled_images/image/image')" = 'rbd2/ns1/test1'
+
+    rbd mirror image demote rbd2/ns1/test1
+    for i in `seq 12`; do
+        rbd mirror snapshot schedule status | grep 'rbd2/ns1/test1' || break
+        sleep 10
+    done
+    rbd mirror snapshot schedule status | expect_fail grep 'rbd2/ns1/test1'
+
+    rbd mirror image promote rbd2/ns1/test1
+    for i in `seq 12`; do
+        rbd mirror snapshot schedule status | grep 'rbd2/ns1/test1' && break
+        sleep 10
+    done
+    rbd mirror snapshot schedule status | grep 'rbd2/ns1/test1'
 
     rbd mirror snapshot schedule add 1h 00:15
     test "$(rbd mirror snapshot schedule ls)" = 'every 1h starting at 00:15:00'
+    rbd mirror snapshot schedule ls -R | grep 'every 1h starting at 00:15:00'
+    rbd mirror snapshot schedule ls -R | grep 'rbd2 *ns1 *test1 *every 1m'
+    expect_fail rbd mirror snapshot schedule ls -p rbd2
+    rbd mirror snapshot schedule ls -p rbd2 -R | grep 'every 1h starting at 00:15:00'
+    rbd mirror snapshot schedule ls -p rbd2 -R | grep 'rbd2 *ns1 *test1 *every 1m'
+    expect_fail rbd mirror snapshot schedule ls -p rbd2/ns1
+    rbd mirror snapshot schedule ls -p rbd2/ns1 -R | grep 'every 1h starting at 00:15:00'
+    rbd mirror snapshot schedule ls -p rbd2/ns1 -R | grep 'rbd2 *ns1 *test1 *every 1m'
+    test "$(rbd mirror snapshot schedule ls -p rbd2/ns1 --image test1)" = 'every 1m'
 
-    rbd rm rbd2/ns1/test1
+    # Negative tests
+    expect_fail rbd mirror snapshot schedule add dummy
+    expect_fail rbd mirror snapshot schedule add -p rbd2/ns1 --image test1 dummy
+    expect_fail rbd mirror snapshot schedule remove dummy
+    expect_fail rbd mirror snapshot schedule remove -p rbd2/ns1 --image test1 dummy
+    test "$(rbd mirror snapshot schedule ls)" = 'every 1h starting at 00:15:00'
+    test "$(rbd mirror snapshot schedule ls -p rbd2/ns1 --image test1)" = 'every 1m'
 
+    rbd rm rbd2/ns1/test1
     for i in `seq 12`; do
         rbd mirror snapshot schedule status | grep 'rbd2/ns1/test1' || break
         sleep 10
     done
+    rbd mirror snapshot schedule status | expect_fail grep 'rbd2/ns1/test1'
 
     rbd mirror snapshot schedule remove
     test "$(rbd mirror snapshot schedule ls -R --format json)" = "[]"
@@ -1278,6 +1352,61 @@ test_mirror_snapshot_schedule() {
     ceph osd pool rm rbd2 rbd2 --yes-i-really-really-mean-it
 }
 
+test_perf_image_iostat() {
+    echo "testing perf image iostat..."
+    remove_images
+
+    ceph osd pool create rbd1 8
+    rbd pool init rbd1
+    rbd namespace create rbd1/ns
+    ceph osd pool create rbd2 8
+    rbd pool init rbd2
+    rbd namespace create rbd2/ns
+
+    IMAGE_SPECS=("test1" "rbd1/test2" "rbd1/ns/test3" "rbd2/test4" "rbd2/ns/test5")
+    for spec in "${IMAGE_SPECS[@]}"; do
+        # ensure all images are created without a separate data pool
+        # as we filter iostat by specific pool specs below
+        rbd create $RBD_CREATE_ARGS --size 10G --rbd-default-data-pool '' $spec
+    done
+
+    BENCH_PIDS=()
+    for spec in "${IMAGE_SPECS[@]}"; do
+        rbd bench --io-type write --io-pattern rand --io-total 10G --io-threads 1 \
+            --rbd-cache false $spec >/dev/null 2>&1 &
+        BENCH_PIDS+=($!)
+    done
+
+    # test specifying pool spec via spec syntax
+    test "$(rbd perf image iostat --format json rbd1 |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test2'
+    test "$(rbd perf image iostat --format json rbd1/ns |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test3'
+    test "$(rbd perf image iostat --format json --rbd-default-pool rbd1 /ns |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test3'
+
+    # test specifying pool spec via options
+    test "$(rbd perf image iostat --format json --pool rbd2 |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test4'
+    test "$(rbd perf image iostat --format json --pool rbd2 --namespace ns |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test5'
+    test "$(rbd perf image iostat --format json --rbd-default-pool rbd2 --namespace ns |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test5'
+
+    # test omitting pool spec (-> GLOBAL_POOL_KEY)
+    test "$(rbd perf image iostat --format json |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test1 test2 test3 test4 test5'
+
+    for pid in "${BENCH_PIDS[@]}"; do
+        kill $pid
+    done
+    wait
+
+    remove_images
+    ceph osd pool rm rbd2 rbd2 --yes-i-really-really-mean-it
+    ceph osd pool rm rbd1 rbd1 --yes-i-really-really-mean-it
+}
+
 test_pool_image_args
 test_rename
 test_ls
@@ -1300,5 +1429,6 @@ test_thick_provision
 test_namespace
 test_trash_purge_schedule
 test_mirror_snapshot_schedule
+test_perf_image_iostat
 
 echo OK
diff --git a/ceph/qa/workunits/rbd/krbd_rxbounce.sh b/ceph/qa/workunits/rbd/krbd_rxbounce.sh
new file mode 100755 (executable)
index 0000000..ad00e3f
--- /dev/null
@@ -0,0 +1,103 @@
+#!/usr/bin/env bash
+
+set -ex
+
+rbd create --size 256 img
+
+IMAGE_SIZE=$(rbd info --format=json img | python3 -c 'import sys, json; print(json.load(sys.stdin)["size"])')
+OBJECT_SIZE=$(rbd info --format=json img | python3 -c 'import sys, json; print(json.load(sys.stdin)["object_size"])')
+NUM_OBJECTS=$((IMAGE_SIZE / OBJECT_SIZE))
+[[ $((IMAGE_SIZE % OBJECT_SIZE)) -eq 0 ]]
+OP_SIZE=16384
+
+DEV=$(sudo rbd map img)
+{
+    for ((i = 0; i < $NUM_OBJECTS; i++)); do
+        echo pwrite -b $OP_SIZE -S $i $((i * OBJECT_SIZE)) $OP_SIZE
+    done
+    echo fsync
+    echo quit
+} | xfs_io $DEV
+sudo rbd unmap $DEV
+
+g++ -xc++ -o racereads - -lpthread <<EOF
+#include <assert.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <thread>
+#include <vector>
+
+const int object_size = $OBJECT_SIZE;
+const int num_objects = $NUM_OBJECTS;
+const int read_len = $OP_SIZE;
+const int num_reads = 1024;
+
+int main() {
+  int fd = open("$DEV", O_DIRECT | O_RDONLY);
+  assert(fd >= 0);
+
+  void *buf;
+  int r = posix_memalign(&buf, 512, read_len);
+  assert(r == 0);
+
+  std::vector<std::thread> threads;
+  for (int i = 0; i < num_objects; i++) {
+    threads.emplace_back(
+        [fd, buf, read_off = static_cast<off_t>(i) * object_size]() {
+          for (int i = 0; i < num_reads; i++) {
+            auto len = pread(fd, buf, read_len, read_off);
+            assert(len == read_len);
+          }
+        });
+  }
+
+  for (auto &t : threads) {
+    t.join();
+  }
+}
+EOF
+
+DEV=$(sudo rbd map -o ms_mode=legacy img)
+sudo dmesg -C
+./racereads
+[[ $(dmesg | grep -c 'libceph: osd.* bad crc/signature') -gt 100 ]]
+sudo rbd unmap $DEV
+
+DEV=$(sudo rbd map -o ms_mode=legacy,rxbounce img)
+sudo dmesg -C
+./racereads
+[[ $(dmesg | grep -c 'libceph: osd.* bad crc/signature') -eq 0 ]]
+sudo rbd unmap $DEV
+
+DEV=$(sudo rbd map -o ms_mode=crc img)
+sudo dmesg -C
+./racereads
+[[ $(dmesg | grep -c 'libceph: osd.* integrity error') -gt 100 ]]
+sudo rbd unmap $DEV
+
+DEV=$(sudo rbd map -o ms_mode=crc,rxbounce img)
+sudo dmesg -C
+./racereads
+[[ $(dmesg | grep -c 'libceph: osd.* integrity error') -eq 0 ]]
+sudo rbd unmap $DEV
+
+# rxbounce is a no-op for secure mode
+DEV=$(sudo rbd map -o ms_mode=secure img)
+sudo dmesg -C
+./racereads
+[[ $(dmesg | grep -c 'libceph: osd.* integrity error') -eq 0 ]]
+sudo rbd unmap $DEV
+
+DEV=$(sudo rbd map -o ms_mode=secure,rxbounce img)
+sudo dmesg -C
+./racereads
+[[ $(dmesg | grep -c 'libceph: osd.* integrity error') -eq 0 ]]
+sudo rbd unmap $DEV
+
+rbd rm img
+
+echo OK
index 1f13da9fc09103d76bbddd60d6d730037e959eb7..267b69165e5d2885599860bed512394c8b6c93fc 100755 (executable)
@@ -9,10 +9,12 @@ testlist='001 002 003 004 005 008 009 010 011 021 025 032 033'
 
 git clone https://github.com/qemu/qemu.git
 cd qemu
-if lsb_release -da 2>&1 | grep -iqE '(bionic|focal)'; then
+
+
+if grep -iqE '(bionic|focal)' /etc/os-release; then
     # Bionic requires a matching test harness
     git checkout v2.11.0
-elif lsb_release -da 2>&1 | grep -iqE '(xenial|linux release 8)'; then
+elif grep -iqE '(xenial|platform:el8)' /etc/os-release; then
     # Xenial requires a recent test harness
     git checkout v2.3.0
 else
index 31b633ad0483e0ac26f8157bd4837e117ea15554..0ef85fe6ad9aeacc83d4e733dc8dfbfd7a4c519d 100644 (file)
@@ -1,2 +1,2 @@
-d46a73d6d0a67a79558054a3a5a72cb561724974
-15.2.16
+8a82819d84cf884bd39c17e3236e0632ac146dc4
+15.2.17
index 32e20bd436578b0c90a570a138eda28c52af801a..7dd28c81eb6b9e037b76026df4d954868be117d6 100644 (file)
@@ -8,7 +8,7 @@ import os
 import uuid
 from itertools import repeat
 from math import floor
-from ceph_volume import process, util
+from ceph_volume import process, util, conf
 from ceph_volume.exceptions import SizeAllocationError
 
 logger = logging.getLogger(__name__)
@@ -839,7 +839,7 @@ class Volume(object):
             report = {
                 'name': self.lv_name,
                 'osd_id': self.tags['ceph.osd_id'],
-                'cluster_name': self.tags['ceph.cluster_name'],
+                'cluster_name': self.tags.get('ceph.cluster_name', conf.cluster),
                 'type': type_,
                 'osd_fsid': self.tags['ceph.osd_fsid'],
                 'cluster_fsid': self.tags['ceph.cluster_fsid'],
index c1b23b448eff3e0631439ad23e2e895c8d10911f..bec7eca850f6fdee28df3b14db2bbcb0b6bfee7e 100644 (file)
@@ -270,6 +270,7 @@ class Batch(object):
             '--crush-device-class',
             dest='crush_device_class',
             help='Crush device class to assign this OSD to',
+            default=""
         )
         parser.add_argument(
             '--no-systemd',
@@ -339,7 +340,7 @@ class Batch(object):
             nargs='*',
             default=[],
             help='Reuse existing OSD ids',
-            type=common.valid_osd_id
+            type=arg_validators.valid_osd_id
         )
         self.args = parser.parse_args(argv)
         self.parser = parser
index 752f354f35aacfab6aa63165ef589f6c1d1edd9f..614be0af6ad6115af7c91b4e5f64b00087840e90 100644 (file)
@@ -1,15 +1,14 @@
 from ceph_volume.util import arg_validators, disk
 from ceph_volume import process, conf
 from ceph_volume import terminal
+from ceph_volume.devices.lvm.zap import Zap
 import argparse
 
-def valid_osd_id(val):
-    return str(int(val))
 
 def rollback_osd(args, osd_id=None):
     """
     When the process of creating or preparing fails, the OSD needs to be
-    destroyed so that the ID cane be reused.  This is prevents leaving the ID
+    destroyed so that the ID can be reused.  This prevents from leaving the ID
     around as "used" on the monitor, which can cause confusion if expecting
     sequential OSD IDs.
 
@@ -34,6 +33,7 @@ def rollback_osd(args, osd_id=None):
     ]
 
     process.run(cmd)
+    Zap(['--destroy', '--osd-id', osd_id]).main()
 
 
 common_args = {
@@ -58,7 +58,7 @@ common_args = {
     '--osd-id': {
         'help': 'Reuse an existing OSD id',
         'default': None,
-        'type': valid_osd_id,
+        'type': arg_validators.valid_osd_id,
     },
     '--osd-fsid': {
         'help': 'Reuse an existing OSD fsid',
@@ -71,7 +71,7 @@ common_args = {
     '--crush-device-class': {
         'dest': 'crush_device_class',
         'help': 'Crush device class to assign this OSD to',
-        'default': None,
+        'default': "",
     },
     '--dmcrypt': {
         'action': 'store_true',
@@ -92,6 +92,7 @@ bluestore_args = {
     '--block.db': {
         'dest': 'block_db',
         'help': 'Path to bluestore block.db logical volume or device',
+        'type': arg_validators.ValidDevice(as_string=True),
     },
     '--block.db-size': {
         'dest': 'block_db_size',
@@ -109,6 +110,7 @@ bluestore_args = {
     '--block.wal': {
         'dest': 'block_wal',
         'help': 'Path to bluestore block.wal logical volume or device',
+        'type': arg_validators.ValidDevice(as_string=True),
     },
     '--block.wal-size': {
         'dest': 'block_wal_size',
@@ -132,6 +134,7 @@ filestore_args = {
     },
     '--journal': {
         'help': 'A logical volume (vg_name/lv_name), or path to a device',
+        'type': arg_validators.ValidDevice(as_string=True),
     },
     '--journal-size': {
         'help': 'Size of journal LV in case a raw block device was passed in --journal',
index dc982f153b4ed25a02626bfed8bd3d1c630edd82..86159fd505b777dd0a86c20865f8438629b19c3b 100644 (file)
@@ -5,10 +5,10 @@ import os
 from textwrap import dedent
 from ceph_volume.util import system, disk, merge_dict
 from ceph_volume.util.device import Device
+from ceph_volume.util.arg_validators import valid_osd_id
 from ceph_volume import decorators, terminal, process
 from ceph_volume.api import lvm as api
 from ceph_volume.systemd import systemctl
-from ceph_volume.devices.lvm.common import valid_osd_id
 
 
 logger = logging.getLogger(__name__)
index b81b7b8b1e9b19de96a099e2cfb3daf09d8f7864..e0cbfb172194063662c06b14637ba049c3cfde66 100644 (file)
@@ -10,7 +10,6 @@ from ceph_volume.api import lvm as api
 from ceph_volume.util import system, encryption, disk, arg_validators, str_to_int, merge_dict
 from ceph_volume.util.device import Device
 from ceph_volume.systemd import systemctl
-from ceph_volume.devices.lvm.common import valid_osd_id
 
 logger = logging.getLogger(__name__)
 mlogger = terminal.MultiLogger(__name__)
@@ -377,7 +376,7 @@ class Zap(object):
 
         parser.add_argument(
             '--osd-id',
-            type=valid_osd_id,
+            type=arg_validators.valid_osd_id,
             help='Specify an OSD ID to detect associated devices for zapping',
         )
 
index 08cfd02890cb0c7b588fb5f9d3a4d55f897d8415..54e77aca63ca11fcebcb1dd18040639747cb22c4 100644 (file)
@@ -25,6 +25,7 @@ def create_parser(prog, description):
         '--crush-device-class',
         dest='crush_device_class',
         help='Crush device class to assign this OSD to',
+        default=""
     )
     parser.add_argument(
         '--no-tmpfs',
index cb72fbb625ceae5878c0176865c9624e7cf8a37d..2f1bb9396c21e393db8c2e7fedebe6f3d25e576a 100644 (file)
@@ -395,7 +395,7 @@ direct_report = {
         {
             "lv_name": "osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
             "lv_path": "/dev/ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44/osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
-            "lv_tags": "ceph.block_device=/dev/ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44/osd-block-957d22b7-24ce-466a-9883-b8218eaa1634,ceph.block_uuid=6MixOd-2Q1I-f8K3-PPOq-UJGV-L3A0-0XwUm4,ceph.cephx_lockbox_secret=,ceph.cluster_fsid=d4962338-46ff-4cd5-8ea6-c033dbdc5b44,ceph.cluster_name=ceph,ceph.crush_device_class=None,ceph.encrypted=0,ceph.osd_fsid=957d22b7-24ce-466a-9883-b8218eaa1634,ceph.osd_id=0,ceph.type=block",
+            "lv_tags": "ceph.block_device=/dev/ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44/osd-block-957d22b7-24ce-466a-9883-b8218eaa1634,ceph.block_uuid=6MixOd-2Q1I-f8K3-PPOq-UJGV-L3A0-0XwUm4,ceph.cephx_lockbox_secret=,ceph.cluster_fsid=d4962338-46ff-4cd5-8ea6-c033dbdc5b44,ceph.cluster_name=ceph,ceph.crush_device_class=,ceph.encrypted=0,ceph.osd_fsid=957d22b7-24ce-466a-9883-b8218eaa1634,ceph.osd_id=0,ceph.type=block",
             "lv_uuid": "6MixOd-2Q1I-f8K3-PPOq-UJGV-L3A0-0XwUm4",
             "name": "osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
             "path": "/dev/ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44/osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
@@ -405,7 +405,7 @@ direct_report = {
                 "ceph.cephx_lockbox_secret": "",
                 "ceph.cluster_fsid": "d4962338-46ff-4cd5-8ea6-c033dbdc5b44",
                 "ceph.cluster_name": "ceph",
-                "ceph.crush_device_class": "None",
+                "ceph.crush_device_class": "",
                 "ceph.encrypted": "0",
                 "ceph.osd_fsid": "957d22b7-24ce-466a-9883-b8218eaa1634",
                 "ceph.osd_id": "0",
@@ -419,7 +419,7 @@ direct_report = {
         {
             "lv_name": "osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
             "lv_path": "/dev/ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532/osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
-            "lv_tags": "ceph.block_device=/dev/ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532/osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b,ceph.block_uuid=1igwLb-ZlmV-eLgp-hapx-c1Hr-M5gz-sHjnyW,ceph.cephx_lockbox_secret=,ceph.cluster_fsid=d4962338-46ff-4cd5-8ea6-c033dbdc5b44,ceph.cluster_name=ceph,ceph.crush_device_class=None,ceph.encrypted=0,ceph.osd_fsid=d0f3e4ad-e52a-4520-afc0-a8789a96ce8b,ceph.osd_id=1,ceph.type=block",
+            "lv_tags": "ceph.block_device=/dev/ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532/osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b,ceph.block_uuid=1igwLb-ZlmV-eLgp-hapx-c1Hr-M5gz-sHjnyW,ceph.cephx_lockbox_secret=,ceph.cluster_fsid=d4962338-46ff-4cd5-8ea6-c033dbdc5b44,ceph.cluster_name=ceph,ceph.crush_device_class=,ceph.encrypted=0,ceph.osd_fsid=d0f3e4ad-e52a-4520-afc0-a8789a96ce8b,ceph.osd_id=1,ceph.type=block",
             "lv_uuid": "1igwLb-ZlmV-eLgp-hapx-c1Hr-M5gz-sHjnyW",
             "name": "osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
             "path": "/dev/ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532/osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
@@ -429,7 +429,7 @@ direct_report = {
                 "ceph.cephx_lockbox_secret": "",
                 "ceph.cluster_fsid": "d4962338-46ff-4cd5-8ea6-c033dbdc5b44",
                 "ceph.cluster_name": "ceph",
-                "ceph.crush_device_class": "None",
+                "ceph.crush_device_class": "",
                 "ceph.encrypted": "0",
                 "ceph.osd_fsid": "d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
                 "ceph.osd_id": "1",
index 2a334dad95d078a61a23984527025be729632759..0f90a2369a88d90995dd06eb424049b5728fbb03 100644 (file)
@@ -33,6 +33,7 @@ class TestBatch(object):
         mocked_device.return_value = MagicMock(
             is_partition=True,
             has_gpt_headers=False,
+            has_partitions=False,
         )
         with pytest.raises(ArgumentError):
             arg_validators.ValidBatchDevice()('foo')
index 1e8a49e2624c246b0a2f9ff03008dc00283eee8a..b0111accc72cde069b04d81fcf7ea5893ee02053 100644 (file)
@@ -3,6 +3,7 @@ import pytest
 import os
 from ceph_volume import exceptions
 from ceph_volume.util import arg_validators
+from mock.mock import patch, PropertyMock
 
 
 class TestOSDPath(object):
@@ -87,3 +88,11 @@ class TestValidDevice(object):
     def test_path_is_invalid(self, fake_call, patch_bluestore_label):
         with pytest.raises(argparse.ArgumentError):
             self.validator('/device/does/not/exist')
+
+    @patch('ceph_volume.util.arg_validators.Device.has_partitions', new_callable=PropertyMock, return_value=True)
+    @patch('ceph_volume.util.arg_validators.Device.exists', new_callable=PropertyMock, return_value=True)
+    @patch('ceph_volume.api.lvm.get_single_lv', return_value=None)
+    def test_dev_has_partitions(self, m_get_single_lv, m_exists, m_has_partitions, fake_call):
+        with pytest.raises(RuntimeError):
+            self.validator('/dev/foo')
+
index 94cb4f691dbee180a0f095b95c989a32f8f1945f..d6a77f136fdc78eff22ef2d806f6bad09585a567 100644 (file)
@@ -6,6 +6,9 @@ from ceph_volume.util import disk
 from ceph_volume.util.device import Device
 
 
+def valid_osd_id(val):
+    return str(int(val))
+
 class ValidDevice(object):
 
     def __init__(self, as_string=False, gpt_ok=False):
@@ -37,10 +40,10 @@ class ValidDevice(object):
         # __init__
         elif device.has_gpt_headers and not self.gpt_ok:
             error = "GPT headers found, they must be removed on: %s" % dev_path
-
+        if device.has_partitions:
+            raise RuntimeError("Device {} has partitions.".format(dev_path))
         if error:
             raise argparse.ArgumentError(None, error)
-
         return device
 
 
index 285ac4148e6ea37cecc502ec2b8075bed92f940f..25cb2729224caca88a70037d9c6b84325f1641ac 100644 (file)
@@ -474,6 +474,15 @@ class Device(object):
                 vg_free -= extent_size
             return [vg_free]
 
+    @property
+    def has_partitions(self):
+        '''
+        Boolean to determine if a given device has partitions.
+        '''
+        if self.sys_api.get('partitions'):
+            return True
+        return False
+
     def _check_generic_reject_reasons(self):
         reasons = [
             ('removable', 1, 'removable'),
@@ -512,6 +521,8 @@ class Device(object):
 
         if self.has_gpt_headers:
             rejected.append('Has GPT headers')
+        if self.has_partitions:
+            rejected.append('Has partitions')
         return rejected
 
     def _check_lvm_reject_reasons(self):
index 4793dfa450565c01a25b444f5f6966f08665a022..570eb085b0f28e4b35afd6601d60cc0beb36a43c 100755 (executable)
@@ -2754,7 +2754,7 @@ def command_version():
 ##################################
 
 
-@infer_image
+@default_image
 def command_pull():
     # type: () -> int
 
@@ -5697,7 +5697,7 @@ def _get_parser():
     parser_version.set_defaults(func=command_version)
 
     parser_pull = subparsers.add_parser(
-        'pull', help='pull latest image version')
+        'pull', help='pull the default container image')
     parser_pull.set_defaults(func=command_pull)
 
     parser_inspect_image = subparsers.add_parser(
@@ -5749,7 +5749,7 @@ def _get_parser():
     parser_adopt.add_argument(
         '--skip-pull',
         action='store_true',
-        help='do not pull the latest image before adopting')
+        help='do not pull the default image before adopting')
     parser_adopt.add_argument(
         '--force-start',
         action='store_true',
@@ -5998,7 +5998,7 @@ def _get_parser():
     parser_bootstrap.add_argument(
         '--skip-pull',
         action='store_true',
-        help='do not pull the latest image before bootstrapping')
+        help='do not pull the default image before bootstrapping')
     parser_bootstrap.add_argument(
         '--skip-firewalld',
         action='store_true',
index 91bcc815c61588b4fcebf501fa708464ef5f6bdc..5c63fc5aed5d62d9483c885acadebbbfe430d63b 100644 (file)
@@ -460,7 +460,6 @@ void Inode::dump(Formatter *f) const
   f->open_array_section("caps");
   for (const auto &pair : caps) {
     f->open_object_section("cap");
-    f->dump_int("mds", pair.first);
     if (&pair.second == auth_cap)
       f->dump_int("auth", 1);
     pair.second.dump(f);
index b6a02496bcb5feaf3333a44ab15bc40a45db844d..cbf8c09ed02da71cad628c23a86f1f7d3f3bac03 100644 (file)
@@ -994,12 +994,16 @@ std::ostream& operator<<(std::ostream& os, const MirrorSnapshotNamespace& ns) {
   os << "[" << SNAPSHOT_NAMESPACE_TYPE_MIRROR << " "
      << "state=" << ns.state << ", "
      << "complete=" << ns.complete << ", "
-     << "mirror_peer_uuids=" << ns.mirror_peer_uuids << ", "
-     << "primary_mirror_uuid=" << ns.primary_mirror_uuid << ", "
-     << "primary_snap_id=" << ns.primary_snap_id << ", "
-     << "last_copied_object_number=" << ns.last_copied_object_number << ", "
-     << "snap_seqs=" << ns.snap_seqs
-     << "]";
+     << "mirror_peer_uuids=" << ns.mirror_peer_uuids << ", ";
+  if (ns.is_primary()) {
+     os << "clean_since_snap_id=" << ns.clean_since_snap_id;
+  } else {
+     os << "primary_mirror_uuid=" << ns.primary_mirror_uuid << ", "
+        << "primary_snap_id=" << ns.primary_snap_id << ", "
+        << "last_copied_object_number=" << ns.last_copied_object_number << ", "
+        << "snap_seqs=" << ns.snap_seqs;
+  }
+  os << "]";
   return os;
 }
 
index ab77735f8f906f4588038afe3daa0b18b9baf16a..e940b660e68077d6c4603b89ad90ed617fe145ea 100644 (file)
@@ -475,14 +475,13 @@ struct GroupSnapshotNamespace {
   }
 
   inline bool operator<(const GroupSnapshotNamespace& gsn) const {
-    if (group_pool < gsn.group_pool) {
-      return true;
-    } else if (group_id < gsn.group_id) {
-      return true;
-    } else {
-      return (group_snapshot_id < gsn.group_snapshot_id);
+    if (group_pool != gsn.group_pool) {
+      return group_pool < gsn.group_pool;
     }
-    return false;
+    if (group_id != gsn.group_id) {
+      return group_id < gsn.group_id;
+    }
+    return group_snapshot_id < gsn.group_snapshot_id;
   }
 };
 
index 271528305bdb4f8dbc6a795e3dc6132ee450b4eb..4eb81cd43b502d709d376481c6a5fffc3041ed6b 100644 (file)
@@ -35,23 +35,34 @@ CLS_NAME(rgw)
 #define BI_BUCKET_LAST_INDEX          4
 
 static std::string bucket_index_prefixes[] = { "", /* special handling for the objs list index */
-                                          "0_",     /* bucket log index */
-                                          "1000_",  /* obj instance index */
-                                          "1001_",  /* olh data index */
+                                              "0_",     /* bucket log index */
+                                              "1000_",  /* obj instance index */
+                                              "1001_",  /* olh data index */
 
-                                          /* this must be the last index */
-                                          "9999_",};
+                                              /* this must be the last index */
+                                              "9999_",};
 
+// this string is greater than all ascii plain entries and less than
+// all special entries
+static const std::string BI_PREFIX_BEGIN = string(1, BI_PREFIX_CHAR);
+
+// this string is greater than all special entries and less than all
+// non-ascii plain entries
 static const std::string BI_PREFIX_END = string(1, BI_PREFIX_CHAR) +
     bucket_index_prefixes[BI_BUCKET_LAST_INDEX];
 
-static bool bi_is_objs_index(const string& s) {
-  return ((unsigned char)s[0] != BI_PREFIX_CHAR);
+/* Returns whether parameter is not a key for a special entry. Empty
+ * strings are considered plain also, so, for example, an empty marker
+ * is also considered plain. TODO: check to make sure all callers are
+ * using appropriately.
+ */
+static bool bi_is_plain_entry(const std::string& s) {
+  return (s.empty() || (unsigned char)s[0] != BI_PREFIX_CHAR);
 }
 
 int bi_entry_type(const string& s)
 {
-  if (bi_is_objs_index(s)) {
+  if (bi_is_plain_entry(s)) {
     return BI_BUCKET_OBJS_INDEX;
   }
 
@@ -158,10 +169,10 @@ static int log_index_operation(cls_method_context_t hctx, cls_rgw_obj_key& obj_k
  * namespace".
  */
 static int get_obj_vals(cls_method_context_t hctx,
-                       const string& start,
-                       const string& filter_prefix,
+                       const std::string& start,
+                       const std::string& filter_prefix,
                         int num_entries,
-                       map<string, bufferlist> *pkeys,
+                       std::map<std::string, bufferlist> *pkeys,
                        bool *pmore)
 {
   int ret = cls_cxx_map_get_vals(hctx, start, filter_prefix,
@@ -174,7 +185,7 @@ static int get_obj_vals(cls_method_context_t hctx,
     return 0;
   }
 
-  auto last_element = pkeys->rbegin();
+  auto last_element = pkeys->crbegin();
   if ((unsigned char)last_element->first[0] < BI_PREFIX_CHAR) {
     /* if the first character of the last entry is less than the
      * prefix then all entries must preceed the "ugly namespace" and
@@ -183,11 +194,11 @@ static int get_obj_vals(cls_method_context_t hctx,
     return 0;
   }
 
-  auto first_element = pkeys->begin();
+  auto first_element = pkeys->cbegin();
   if ((unsigned char)first_element->first[0] > BI_PREFIX_CHAR) {
-    /* the first character of the last entry is in or after the "ugly
-     * namespace", so if the first character of the first entry
-     * follows the "ugly namespace" then all entries do and we're done
+    /* if the first character of the first entry is after the "ugly
+     * namespace" then all entries must follow the "ugly namespace"
+     * then all entries do and we're done
      */
     return 0;
   }
@@ -198,10 +209,10 @@ static int get_obj_vals(cls_method_context_t hctx,
    * outside the "ugly namespace"
    */
 
-  auto comp = [](const pair<string, bufferlist>& l, const string &r) {
+  auto comp = [](const pair<std::string, bufferlist>& l, const std::string &r) {
                return l.first < r;
              };
-  string new_start = {static_cast<char>(BI_PREFIX_CHAR + 1)};
+  std::string new_start = {static_cast<char>(BI_PREFIX_CHAR + 1)};
 
   auto lower = pkeys->lower_bound(string{static_cast<char>(BI_PREFIX_CHAR)});
   auto upper = std::lower_bound(lower, pkeys->end(), new_start, comp);
@@ -211,11 +222,11 @@ static int get_obj_vals(cls_method_context_t hctx,
     return 0;
   }
 
-  if (pkeys->size() && new_start < pkeys->rbegin()->first) {
+  if (pkeys->size() && new_start < pkeys->crbegin()->first) {
     new_start = pkeys->rbegin()->first;
   }
 
-  map<string, bufferlist> new_keys;
+  std::map<std::string, bufferlist> new_keys;
 
   /* now get some more keys */
   ret = cls_cxx_map_get_vals(hctx, new_start, filter_prefix,
@@ -469,29 +480,42 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
     return rc;
   }
 
-  string start_after_key;   // key that we can start listing at, one of a)
-                            // sent in by caller, b) last item visited, or
-                            // c) when delimiter present, a key that will
-                            // move past the subdirectory
-  encode_list_index_key(hctx, op.start_obj, &start_after_key);
+  // some calls just want the header and request 0 entries
+  if (op.num_entries <= 0) {
+    ret.is_truncated = false;
+    encode(ret, *out);
+    return 0;
+  }
+
+  // key that we can start listing at, one of a) sent in by caller, b)
+  // last item visited, or c) when delimiter present, a key that will
+  // move past the subdirectory
+  std::string start_after_omap_key;
+  encode_list_index_key(hctx, op.start_obj, &start_after_omap_key);
+
+  // this is set whenenver start_after_omap_key is set to keep them in
+  // sync since this will be the returned marker when a marker is
+  // returned
+  cls_rgw_obj_key start_after_entry_key;
 
-  string previous_key; // last key stored in result, so if we have to
-                      // call get_obj_vals multiple times, we do not
-                      // add the overlap to result
-  string previous_prefix_key; // last prefix_key stored in result, so
-                             // we can skip over entries with the
-                             // same prefix_key
+  // last key stored in result, so if we have to call get_obj_vals
+  // multiple times, we do not add the overlap to result
+  std::string prev_omap_key;
+
+  // last prefix_key stored in result, so we can skip over entries
+  // with the same prefix_key
+  std::string prev_prefix_omap_key;
 
   bool done = false;   // whether we need to keep calling get_obj_vals
   bool more = true;    // output parameter of get_obj_vals
   bool has_delimiter = !op.delimiter.empty();
 
   if (has_delimiter &&
-      start_after_key > op.filter_prefix &&
-      boost::algorithm::ends_with(start_after_key, op.delimiter)) {
+      start_after_omap_key > op.filter_prefix &&
+      boost::algorithm::ends_with(start_after_omap_key, op.delimiter)) {
     // advance past all subdirectory entries if we start after a
     // subdirectory
-    start_after_key = cls_rgw_after_delim(start_after_key);
+    start_after_omap_key = cls_rgw_after_delim(start_after_omap_key);
   }
 
   for (int attempt = 0;
@@ -500,24 +524,23 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
         !done &&
         name_entry_map.size() < op.num_entries;
        ++attempt) {
-    map<string, bufferlist> keys;
-    rc = get_obj_vals(hctx, start_after_key, op.filter_prefix,
+    std::map<std::string, bufferlist> keys;
+
+    // note: get_obj_vals skips past the "ugly namespace" (i.e.,
+    // entries that start with the BI_PREFIX_CHAR), so no need to
+    // check for such entries
+    rc = get_obj_vals(hctx, start_after_omap_key, op.filter_prefix,
                      op.num_entries - name_entry_map.size(),
                      &keys, &more);
     if (rc < 0) {
       return rc;
     }
+    CLS_LOG(20, "%s: on attempt %d get_obj_vls returned %ld entries, more=%d\n",
+           __func__, attempt, keys.size(), more);
 
     done = keys.empty();
 
     for (auto kiter = keys.cbegin(); kiter != keys.cend(); ++kiter) {
-      if (!bi_is_objs_index(kiter->first)) {
-       // we're done if we walked off the end of the objects area of
-       // the bucket index
-        done = true;
-        break;
-      }
-
       rgw_bucket_dir_entry entry;
       try {
        const bufferlist& entrybl = kiter->second;
@@ -529,7 +552,8 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
         return -EINVAL;
       }
 
-      start_after_key = kiter->first;
+      start_after_omap_key = kiter->first;
+      start_after_entry_key = entry.key;
       CLS_LOG(20, "%s: working on key=%s len=%zu",
              __func__, kiter->first.c_str(), kiter->first.size());
 
@@ -564,10 +588,10 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
           string prefix_key =
            key.name.substr(0, delim_pos + op.delimiter.length());
 
-         if (prefix_key == previous_prefix_key) {
+         if (prefix_key == prev_prefix_omap_key) {
            continue; // we've already added this;
          } else {
-           previous_prefix_key = prefix_key;
+           prev_prefix_omap_key = prefix_key;
          }
 
          if (name_entry_map.size() < op.num_entries) {
@@ -585,11 +609,12 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
          // make sure that if this is the last item added to the
          // result from this call to get_obj_vals, the next call will
          // skip past rest of "subdirectory"
-         start_after_key = cls_rgw_after_delim(prefix_key);
+         start_after_omap_key = cls_rgw_after_delim(prefix_key);
+         start_after_entry_key.set(start_after_omap_key);
 
-         // advance to past this subdirectory, but then back up one,
+         // advance past this subdirectory, but then back up one,
          // so the loop increment will put us in the right place
-         kiter = keys.lower_bound(start_after_key);
+         kiter = keys.lower_bound(start_after_omap_key);
          --kiter;
 
           continue;
@@ -600,9 +625,9 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
       }
 
       if (name_entry_map.size() < op.num_entries &&
-         kiter->first != previous_key) {
+         kiter->first != prev_omap_key) {
         name_entry_map[kiter->first] = entry;
-       previous_key = kiter->first;
+       prev_omap_key = kiter->first;
        CLS_LOG(20, "%s: got object entry %s[%s] num entries=%d\n",
                __func__, key.name.c_str(), key.instance.c_str(),
                int(name_entry_map.size()));
@@ -611,10 +636,22 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
   } // for (int attempt...
 
   ret.is_truncated = more && !done;
+  if (ret.is_truncated) {
+    ret.marker = start_after_entry_key;
+  }
+  CLS_LOG(20, "%s: normal exit returning %ld entries, is_truncated=%d\n",
+         __func__, ret.dir.m.size(), ret.is_truncated);
   encode(ret, *out);
-  return 0;
+
+  if (ret.is_truncated && name_entry_map.size() == 0) {
+    CLS_LOG(5, "%s: returning value RGWBIAdvanceAndRetryError\n", __func__);
+    return RGWBIAdvanceAndRetryError;
+  } else {
+    return 0;
+  }
 } // rgw_bucket_list
 
+
 static int check_index(cls_method_context_t hctx,
                       rgw_bucket_dir_header *existing_header,
                       rgw_bucket_dir_header *calc_header)
@@ -644,7 +681,7 @@ static int check_index(cls_method_context_t hctx,
 
     std::map<string, bufferlist>::iterator kiter = keys.begin();
     for (; kiter != keys.end(); ++kiter) {
-      if (!bi_is_objs_index(kiter->first)) {
+      if (!bi_is_plain_entry(kiter->first)) {
         done = true;
         break;
       }
@@ -2112,6 +2149,8 @@ int rgw_dir_suggest_changes(cls_method_context_t hctx,
         return -EINVAL;
       }
 
+      // remove any pending entries whose tag timeout has expired. until expiry,
+      // these pending entries will prevent us from applying suggested changes
       real_time cur_time = real_clock::now();
       map<string, rgw_bucket_pending_info>::iterator iter =
                 cur_disk.pending_map.begin();
@@ -2123,9 +2162,18 @@ int rgw_dir_suggest_changes(cls_method_context_t hctx,
       }
     }
 
-    CLS_LOG(20, "cur_disk.pending_map.empty()=%d op=%d cur_disk.exists=%d cur_change.pending_map.size()=%d cur_change.exists=%d\n",
+    CLS_LOG(20, "cur_disk.pending_map.empty()=%d op=%d cur_disk.exists=%d "
+            "cur_disk.index_ver=%d cur_change.exists=%d cur_change.index_ver=%d",
            cur_disk.pending_map.empty(), (int)op, cur_disk.exists,
-           (int)cur_change.pending_map.size(), cur_change.exists);
+            (int)cur_disk.index_ver, cur_change.exists,
+            (int)cur_change.index_ver);
+
+    if (cur_change.index_ver < cur_disk.index_ver) {
+      // a pending on-disk entry was completed since this suggestion was made,
+      // don't apply it yet. if the index really is inconsistent, the next
+      // listing will get the latest version and resend the suggestion
+      continue;
+    }
 
     if (cur_disk.pending_map.empty()) {
       if (cur_disk.exists) {
@@ -2462,107 +2510,153 @@ static int rgw_bi_put_op(cls_method_context_t hctx, bufferlist *in, bufferlist *
   return 0;
 }
 
-static int list_plain_entries(cls_method_context_t hctx,
-                              const string& filter,
-                              const string& start_after_key,
-                              const string& end_key,
-                              uint32_t max,
-                              list<rgw_cls_bi_entry> *entries,
-                              bool *end_key_reached,
-                              bool *pmore)
+
+/* The plain entries in the bucket index are divided into two regions
+ * divided by the special entries that begin with 0x80. Those below
+ * ("Low") are ascii entries. Those above ("High") bring in unicode
+ * entries. This enum allows either or both regions to be listed in
+ * list_plain_entries(). It's convenient that "Both" be in between the
+ * others so we can use "<= Both" or ">= Both" logic.
+ */
+enum class PlainEntriesRegion {
+  Low, Both, High
+};
+
+
+/* Queries the omap for plain entries in the range of start_after_key
+ * to end_key, non-inclusive. Both of those values must either be
+ * before the "ugly namespace" or after it.
+ *
+ * Negative return values indicate errors. Non-negative return values
+ * indicate number of entries retrieved. */
+static int list_plain_entries_help(cls_method_context_t hctx,
+                                  const std::string& name_filter,
+                                  const std::string& start_after_key, // exclusive
+                                  const std::string& end_key, // exclusive
+                                  uint32_t max,
+                                  std::list<rgw_cls_bi_entry>* entries,
+                                  bool& end_key_reached,
+                                  bool& more)
 {
   int count = 0;
-  map<string, bufferlist> keys;
-  int ret = cls_cxx_map_get_vals(hctx, start_after_key, filter, max,
-                                &keys, pmore);
+  std::map<std::string, bufferlist> raw_entries;
+  int ret = cls_cxx_map_get_vals(hctx, start_after_key, name_filter, max,
+                                &raw_entries, &more);
   if (ret < 0) {
     return ret;
   }
 
-  *end_key_reached = false;
-
-  for (auto iter = keys.begin(); iter != keys.end(); ++iter) {
-    if (!end_key.empty() && iter->first >= end_key) {
-      *end_key_reached = true;
-      *pmore = true;
+  end_key_reached = false;
+  for (auto iter : raw_entries) {
+    if (!end_key.empty() && iter.first >= end_key) {
+      end_key_reached = true;
+      more = false;
       return count;
     }
 
-    rgw_cls_bi_entry entry;
-    entry.type = BIIndexType::Plain;
-    entry.idx = iter->first;
-    entry.data = iter->second;
-
-    auto biter = entry.data.cbegin();
-
     rgw_bucket_dir_entry e;
+    auto biter = iter.second.cbegin();
     try {
       decode(e, biter);
     } catch (buffer::error& err) {
-      CLS_LOG(0, "ERROR: %s(): failed to decode buffer", __func__);
+      CLS_LOG(0, "ERROR: %s: failed to decode buffer for plain bucket index entry \"%s\"",
+             __func__, escape_str(iter.first).c_str());
       return -EIO;
     }
 
-    CLS_LOG(20, "%s(): entry.idx=%s e.key.name=%s", __func__,
-            escape_str(entry.idx).c_str(), escape_str(e.key.name).c_str());
-
-    if (!filter.empty() && e.key.name != filter) {
-      /* we are skipping the rest of the entries */
-      *pmore = false;
+    if (!name_filter.empty() && e.key.name > name_filter) {
+      CLS_LOG(20, "%s: due to filter \"%s\", skipping entry.idx=\"%s\" e.key.name=\"%s\"",
+             __func__,
+             escape_str(name_filter).c_str(),
+             escape_str(iter.first).c_str(),
+             escape_str(e.key.name).c_str());
+      // skip the rest of the entries
+      more = false;
+      end_key_reached = true;
       return count;
     }
 
+    rgw_cls_bi_entry entry;
+    entry.type = BIIndexType::Plain;
+    entry.idx = iter.first;
+    entry.data = iter.second;
+
     entries->push_back(entry);
     count++;
-    if (count >= (int)max) {
+
+    CLS_LOG(20, "%s: adding entry %d entry.idx=\"%s\" e.key.name=\"%s\"",
+           __func__,
+           count,
+            escape_str(entry.idx).c_str(),
+           escape_str(e.key.name).c_str());
+
+    if (count >= int(max)) {
+      // NB: this looks redundant, but leave in for time being
       return count;
     }
-  }
+  } // iter for loop
 
   return count;
-}
+} // list_plain_entries_help
 
+/*
+ * Lists plain entries in either or both regions, the region of those
+ * beginning with an ASCII character or a non-ASCII character, which
+ * surround the "ugly" namespace used by special entries for versioned
+ * buckets.
+ *
+ * The entries parameter is not cleared and additional entries are
+ * appended to it.
+ */
 static int list_plain_entries(cls_method_context_t hctx,
-                              const string& name,
-                              const string& marker,
+                              const std::string& name_filter,
+                              const std::string& marker,
                               uint32_t max,
-                              list<rgw_cls_bi_entry> *entries,
-                              bool *pmore) {
-  string start_after_key = marker;
-  string end_key;
-  bi_log_prefix(end_key);
-  int r;
-  bool end_key_reached;
-  bool more;
+                              std::list<rgw_cls_bi_entry>* entries,
+                              bool* pmore,
+                             const PlainEntriesRegion region = PlainEntriesRegion::Both)
+{
+  int r = 0;
+  bool end_key_reached = false;
+  bool more = false;
+  const size_t start_size = entries->size();
 
-  if (start_after_key < end_key) {
+  if (region <= PlainEntriesRegion::Both && marker < BI_PREFIX_BEGIN) {
     // listing ascii plain namespace
-    int r = list_plain_entries(hctx, name, start_after_key, end_key, max,
-                               entries, &end_key_reached, &more);
+    int r = list_plain_entries_help(hctx, name_filter, marker, BI_PREFIX_BEGIN, max,
+                                   entries, end_key_reached, more);
     if (r < 0) {
       return r;
     }
-    if (r >= (int)max || !end_key_reached || !more) {
+
+    // see if we're done for this call (there may be more for a later call)
+    if (r >= int(max) || !end_key_reached || (!more && region == PlainEntriesRegion::Low)) {
       if (pmore) {
        *pmore = more;
       }
-      return r;
+
+      return int(entries->size() - start_size);
     }
-    start_after_key = BI_PREFIX_END;
+
     max = max - r;
   }
 
-  // listing non-ascii plain namespace
-  r = list_plain_entries(hctx, name, start_after_key, {}, max, entries,
-                         &end_key_reached, &more);
-  if (r < 0) {
-    return r;
+  if (region >= PlainEntriesRegion::Both) {
+    const std::string start_after_key = std::max(marker, BI_PREFIX_END);
+
+    // listing non-ascii plain namespace
+    r = list_plain_entries_help(hctx, name_filter, start_after_key, {}, max,
+                               entries, end_key_reached, more);
+    if (r < 0) {
+      return r;
+    }
   }
+
   if (pmore) {
     *pmore = more;
   }
 
-  return r;
+  return int(entries->size() - start_size);
 }
 
 static int list_instance_entries(cls_method_context_t hctx,
@@ -2747,6 +2841,27 @@ static int list_olh_entries(cls_method_context_t hctx,
   return count;
 }
 
+/* Lists all the entries that appear in a bucket index listing.
+ *
+ * It may not be obvious why this function calls three other "segment"
+ * functions (list_plain_entries (twice), list_instance_entries,
+ * list_olh_entries) that each list segments of the index space rather
+ * than just move a marker through the space from start to end. The
+ * reason is that a name filter may be provided in the op, and in that
+ * case most entries will be skipped over, and small segments within
+ * each larger segment will be listed.
+ *
+ * Ideally, each of the three segment functions should be able to
+ * handle a marker and filter, if either/both is provided,
+ * efficiently. So, for example, if the marker is after the segment,
+ * ideally return quickly rather than iterating through entries in the
+ * segment.
+ *
+ * Additionally, each of the three segment functions, if successful,
+ * is expected to return the number of entries added to the output
+ * list as a non-negative value. As per usual, negative return values
+ * indicate error condtions.
+ */
 static int rgw_bi_list_op(cls_method_context_t hctx,
                          bufferlist *in,
                          bufferlist *out)
@@ -2761,26 +2876,30 @@ static int rgw_bi_list_op(cls_method_context_t hctx,
     return -EINVAL;
   }
 
+  constexpr uint32_t MAX_BI_LIST_ENTRIES = 1000;
+  const uint32_t max = std::min(op.max, MAX_BI_LIST_ENTRIES);
+
+
+  int ret;
+  uint32_t count = 0;
+  bool more = false;
   rgw_cls_bi_list_ret op_ret;
 
-  string filter = op.name;
-#define MAX_BI_LIST_ENTRIES 1000
-  int32_t max = (op.max < MAX_BI_LIST_ENTRIES ? op.max : MAX_BI_LIST_ENTRIES);
-  bool more;
-  int ret = list_plain_entries(hctx, op.name, op.marker, max,
-                              &op_ret.entries, &more);
+  ret = list_plain_entries(hctx, op.name_filter, op.marker, max,
+                          &op_ret.entries, &more, PlainEntriesRegion::Low);
   if (ret < 0) {
-    CLS_LOG(0, "ERROR: %s(): list_plain_entries returned ret=%d", __func__, ret);
+    CLS_LOG(0, "ERROR: %s: list_plain_entries (low) returned ret=%d, marker=\"%s\", filter=\"%s\", max=%d",
+           __func__, ret, escape_str(op.marker).c_str(), escape_str(op.name_filter).c_str(), max);
     return ret;
   }
-  int count = ret;
 
-  CLS_LOG(20, "found %d plain entries", count);
+  count = ret;
+  CLS_LOG(20, "found %d plain ascii (low) entries", count);
 
   if (!more) {
-    ret = list_instance_entries(hctx, op.name, op.marker, max - count, &op_ret.entries, &more);
+    ret = list_instance_entries(hctx, op.name_filter, op.marker, max - count, &op_ret.entries, &more);
     if (ret < 0) {
-      CLS_LOG(0, "ERROR: %s(): list_instance_entries returned ret=%d", __func__, ret);
+      CLS_LOG(0, "ERROR: %s: list_instance_entries returned ret=%d", __func__, ret);
       return ret;
     }
 
@@ -2788,16 +2907,29 @@ static int rgw_bi_list_op(cls_method_context_t hctx,
   }
 
   if (!more) {
-    ret = list_olh_entries(hctx, op.name, op.marker, max - count, &op_ret.entries, &more);
+    ret = list_olh_entries(hctx, op.name_filter, op.marker, max - count, &op_ret.entries, &more);
     if (ret < 0) {
-      CLS_LOG(0, "ERROR: %s(): list_olh_entries returned ret=%d", __func__, ret);
+      CLS_LOG(0, "ERROR: %s: list_olh_entries returned ret=%d", __func__, ret);
       return ret;
     }
 
     count += ret;
   }
 
-  op_ret.is_truncated = (count >= max) || more;
+  if (!more) {
+    ret = list_plain_entries(hctx, op.name_filter, op.marker, max - count,
+                            &op_ret.entries, &more, PlainEntriesRegion::High);
+    if (ret < 0) {
+      CLS_LOG(0, "ERROR: %s: list_plain_entries (high) returned ret=%d, marker=\"%s\", filter=\"%s\", max=%d",
+             __func__, ret, escape_str(op.marker).c_str(), escape_str(op.name_filter).c_str(), max);
+      return ret;
+    }
+
+    count += ret;
+    CLS_LOG(20, "found %d non-ascii (high) plain entries", count);
+  }
+
+  op_ret.is_truncated = (count > max) || more;
   while (count > max) {
     op_ret.entries.pop_back();
     count--;
@@ -2806,7 +2938,8 @@ static int rgw_bi_list_op(cls_method_context_t hctx,
   encode(op_ret, *out);
 
   return 0;
-}
+} // rgw_bi_list_op
+
 
 int bi_log_record_decode(bufferlist& bl, rgw_bi_log_entry& e)
 {
@@ -2820,6 +2953,7 @@ int bi_log_record_decode(bufferlist& bl, rgw_bi_log_entry& e)
   return 0;
 }
 
+
 static int bi_log_iterate_entries(cls_method_context_t hctx,
                                  const string& marker,
                                  const string& end_marker,
index 182897ab4323d8b045d6b9e19655d80c14019143..aeda1a947ca9c7ec5ec8905f01d02d3b7a9197a2 100644 (file)
@@ -13,6 +13,67 @@ using namespace librados;
 const string BucketIndexShardsManager::KEY_VALUE_SEPARATOR = "#";
 const string BucketIndexShardsManager::SHARDS_SEPARATOR = ",";
 
+
+int CLSRGWConcurrentIO::operator()() {
+  int ret = 0;
+  iter = objs_container.begin();
+  for (; iter != objs_container.end() && max_aio-- > 0; ++iter) {
+    ret = issue_op(iter->first, iter->second);
+    if (ret < 0)
+      break;
+  }
+
+  int num_completions = 0, r = 0;
+  std::map<int, std::string> completed_objs;
+  std::map<int, std::string> retry_objs;
+  while (manager.wait_for_completions(valid_ret_code(), &num_completions, &r,
+                                     need_multiple_rounds() ? &completed_objs : nullptr,
+                                     !need_multiple_rounds() ? &retry_objs : nullptr)) {
+    if (r >= 0 && ret >= 0) {
+      for (; num_completions && iter != objs_container.end(); --num_completions, ++iter) {
+       int issue_ret = issue_op(iter->first, iter->second);
+       if (issue_ret < 0) {
+         ret = issue_ret;
+         break;
+       }
+      }
+    } else if (ret >= 0) {
+      ret = r;
+    }
+
+    // if we're at the end with this round, see if another round is needed
+    if (iter == objs_container.end()) {
+      if (need_multiple_rounds() && !completed_objs.empty()) {
+       // For those objects which need another round, use them to reset
+       // the container
+       reset_container(completed_objs);
+       iter = objs_container.begin();
+      } else if (! need_multiple_rounds() && !retry_objs.empty()) {
+       reset_container(retry_objs);
+       iter = objs_container.begin();
+      }
+
+      // re-issue ops if container was reset above (i.e., iter !=
+      // objs_container.end()); if it was not reset above (i.e., iter
+      // == objs_container.end()) the loop will exit immediately
+      // without iterating
+      for (; num_completions && iter != objs_container.end(); --num_completions, ++iter) {
+       int issue_ret = issue_op(iter->first, iter->second);
+       if (issue_ret < 0) {
+         ret = issue_ret;
+         break;
+       }
+      }
+    }
+  }
+
+  if (ret < 0) {
+    cleanup();
+  }
+  return ret;
+} // CLSRGWConcurrintIO::operator()()
+
+
 /**
  * This class represents the bucket index object operation callback context.
  */
@@ -25,7 +86,9 @@ public:
   ClsBucketIndexOpCtx(T* _data, int *_ret_code) : data(_data), ret_code(_ret_code) { ceph_assert(data); }
   ~ClsBucketIndexOpCtx() override {}
   void handle_completion(int r, bufferlist& outbl) override {
-    if (r >= 0) {
+    // if successful, or we're asked for a retry, copy result into
+    // destination (*data)
+    if (r >= 0 || r == RGWBIAdvanceAndRetryError) {
       try {
         auto iter = outbl.cbegin();
         decode((*data), iter);
@@ -39,19 +102,19 @@ public:
   }
 };
 
-void BucketIndexAioManager::do_completion(int id) {
+void BucketIndexAioManager::do_completion(const int request_id) {
   std::lock_guard l{lock};
 
-  map<int, librados::AioCompletion*>::iterator iter = pendings.find(id);
+  auto iter = pendings.find(request_id);
   ceph_assert(iter != pendings.end());
-  completions[id] = iter->second;
+  completions[request_id] = iter->second;
   pendings.erase(iter);
 
   // If the caller needs a list of finished objects, store them
   // for further processing
-  map<int, string>::iterator miter = pending_objs.find(id);
+  auto miter = pending_objs.find(request_id);
   if (miter != pending_objs.end()) {
-    completion_objs[id] = miter->second;
+    completion_objs.emplace(request_id, miter->second);
     pending_objs.erase(miter);
   }
 
@@ -59,7 +122,11 @@ void BucketIndexAioManager::do_completion(int id) {
 }
 
 bool BucketIndexAioManager::wait_for_completions(int valid_ret_code,
-    int *num_completions, int *ret_code, map<int, string> *objs) {
+                                                int *num_completions,
+                                                int *ret_code,
+                                                std::map<int, std::string> *completed_objs,
+                                                std::map<int, std::string> *retry_objs)
+{
   std::unique_lock locker{lock};
   if (pendings.empty() && completions.empty()) {
     return false;
@@ -74,18 +141,38 @@ bool BucketIndexAioManager::wait_for_completions(int valid_ret_code,
   map<int, librados::AioCompletion*>::iterator iter = completions.begin();
   for (; iter != completions.end(); ++iter) {
     int r = iter->second->get_return_value();
-    if (objs && r == 0) { /* update list of successfully completed objs */
-      map<int, string>::iterator liter = completion_objs.find(iter->first);
+
+    // see if we may need to copy completions or retries
+    if (completed_objs || retry_objs) {
+      auto liter = completion_objs.find(iter->first);
       if (liter != completion_objs.end()) {
-        (*objs)[liter->first] = liter->second;
+       if (completed_objs && r == 0) { /* update list of successfully completed objs */
+         (*completed_objs)[liter->second.shard_id] = liter->second.oid;
+       }
+
+       if (r == RGWBIAdvanceAndRetryError) {
+         r = 0;
+         if (retry_objs) {
+           (*retry_objs)[liter->second.shard_id] = liter->second.oid;
+         }
+       }
+      } else {
+       // NB: should we log an error here; currently no logging
+       // context to use
       }
     }
-    if (ret_code && (r < 0 && r != valid_ret_code))
+
+    if (ret_code && (r < 0 && r != valid_ret_code)) {
       (*ret_code) = r;
+    }
+
     iter->second->release();
   }
-  if (num_completions)
+
+  if (num_completions) {
     (*num_completions) = completions.size();
+  }
+
   completions.clear();
 
   return true;
@@ -99,38 +186,43 @@ void cls_rgw_bucket_init_index(ObjectWriteOperation& o)
 }
 
 static bool issue_bucket_index_init_op(librados::IoCtx& io_ctx,
+                                      const int shard_id,
                                       const string& oid,
                                       BucketIndexAioManager *manager) {
   bufferlist in;
   librados::ObjectWriteOperation op;
   op.create(true);
   op.exec(RGW_CLASS, RGW_BUCKET_INIT_INDEX, in);
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
 static bool issue_bucket_index_clean_op(librados::IoCtx& io_ctx,
+                                       const int shard_id,
                                        const string& oid,
                                        BucketIndexAioManager *manager) {
   bufferlist in;
   librados::ObjectWriteOperation op;
   op.remove();
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
 static bool issue_bucket_set_tag_timeout_op(librados::IoCtx& io_ctx,
-    const string& oid, uint64_t timeout, BucketIndexAioManager *manager) {
+                                           const int shard_id,
+                                           const string& oid,
+                                           uint64_t timeout,
+                                           BucketIndexAioManager *manager) {
   bufferlist in;
   rgw_cls_tag_timeout_op call;
   call.tag_timeout = timeout;
   encode(call, in);
   ObjectWriteOperation op;
   op.exec(RGW_CLASS, RGW_BUCKET_SET_TAG_TIMEOUT, in);
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
-int CLSRGWIssueBucketIndexInit::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueBucketIndexInit::issue_op(const int shard_id, const string& oid)
 {
-  return issue_bucket_index_init_op(io_ctx, oid, &manager);
+  return issue_bucket_index_init_op(io_ctx, shard_id, oid, &manager);
 }
 
 void CLSRGWIssueBucketIndexInit::cleanup()
@@ -141,14 +233,14 @@ void CLSRGWIssueBucketIndexInit::cleanup()
   }
 }
 
-int CLSRGWIssueBucketIndexClean::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueBucketIndexClean::issue_op(const int shard_id, const string& oid)
 {
-  return issue_bucket_index_clean_op(io_ctx, oid, &manager);
+  return issue_bucket_index_clean_op(io_ctx, shard_id, oid, &manager);
 }
 
-int CLSRGWIssueSetTagTimeout::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueSetTagTimeout::issue_op(const int shard_id, const string& oid)
 {
-  return issue_bucket_set_tag_timeout_op(io_ctx, oid, tag_timeout, &manager);
+  return issue_bucket_set_tag_timeout_op(io_ctx, shard_id, oid, tag_timeout, &manager);
 }
 
 void cls_rgw_bucket_update_stats(librados::ObjectWriteOperation& o,
@@ -229,10 +321,11 @@ void cls_rgw_bucket_list_op(librados::ObjectReadOperation& op,
 }
 
 static bool issue_bucket_list_op(librados::IoCtx& io_ctx,
-                                const string& oid,
+                                const int shard_id,
+                                const std::string& oid,
                                 const cls_rgw_obj_key& start_obj,
-                                const string& filter_prefix,
-                                const string& delimiter,
+                                const std::string& filter_prefix,
+                                const std::string& delimiter,
                                 uint32_t num_entries,
                                 bool list_versions,
                                 BucketIndexAioManager *manager,
@@ -242,17 +335,39 @@ static bool issue_bucket_list_op(librados::IoCtx& io_ctx,
   cls_rgw_bucket_list_op(op,
                         start_obj, filter_prefix, delimiter,
                          num_entries, list_versions, pdata);
-  return manager->aio_operate(io_ctx, oid, &op);
-}
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
+}
+
+int CLSRGWIssueBucketList::issue_op(const int shard_id, const string& oid)
+{
+  // set the marker depending on whether we've already queried this
+  // shard and gotten a RGWBIAdvanceAndRetryError (defined
+  // constant) return value; if we have use the marker in the return
+  // to advance the search, otherwise use the marker passed in by the
+  // caller
+  cls_rgw_obj_key marker;
+  auto iter = result.find(shard_id);
+  if (iter != result.end()) {
+    marker = iter->second.marker;
+  } else {
+    marker = start_obj;
+  }
 
-int CLSRGWIssueBucketList::issue_op(int shard_id, const string& oid)
-{
-  return issue_bucket_list_op(io_ctx, oid,
-                             start_obj, filter_prefix, delimiter,
+  return issue_bucket_list_op(io_ctx, shard_id, oid,
+                             marker, filter_prefix, delimiter,
                              num_entries, list_versions, &manager,
                              &result[shard_id]);
 }
 
+
+void CLSRGWIssueBucketList::reset_container(std::map<int, std::string>& objs)
+{
+  objs_container.swap(objs);
+  iter = objs_container.begin();
+  objs.clear();
+}
+
+
 void cls_rgw_remove_obj(librados::ObjectWriteOperation& o, list<string>& keep_attr_prefixes)
 {
   bufferlist in;
@@ -340,13 +455,16 @@ void cls_rgw_bi_put(ObjectWriteOperation& op, const string oid, rgw_cls_bi_entry
   op.exec(RGW_CLASS, RGW_BI_PUT, in);
 }
 
-int cls_rgw_bi_list(librados::IoCtx& io_ctx, const string oid,
-                   const string& name, const string& marker, uint32_t max,
-                   list<rgw_cls_bi_entry> *entries, bool *is_truncated)
+/* nb: any entries passed in are replaced with the results of the cls
+ * call, so caller does not need to clear entries between calls
+ */
+int cls_rgw_bi_list(librados::IoCtx& io_ctx, const std::string& oid,
+                   const std::string& name_filter, const std::string& marker, uint32_t max,
+                   std::list<rgw_cls_bi_entry> *entries, bool *is_truncated)
 {
   bufferlist in, out;
   rgw_cls_bi_list_op call;
-  call.name = name;
+  call.name_filter = name_filter;
   call.marker = marker;
   call.max = max;
   encode(call, in);
@@ -368,7 +486,7 @@ int cls_rgw_bi_list(librados::IoCtx& io_ctx, const string oid,
   return 0;
 }
 
-int cls_rgw_bucket_link_olh(librados::IoCtx& io_ctx, const string& oid, 
+int cls_rgw_bucket_link_olh(librados::IoCtx& io_ctx, const string& oid,
                             const cls_rgw_obj_key& key, bufferlist& olh_tag,
                             bool delete_marker, const string& op_tag, rgw_bucket_dir_entry_meta *meta,
                             uint64_t olh_epoch, ceph::real_time unmod_since, bool high_precision_time, bool log_op, rgw_zone_set& zones_trace)
@@ -505,17 +623,17 @@ void cls_rgw_bilog_list(librados::ObjectReadOperation& op,
   op.exec(RGW_CLASS, RGW_BI_LOG_LIST, in, new ClsBucketIndexOpCtx<cls_rgw_bi_log_list_ret>(pdata, ret));
 }
 
-static bool issue_bi_log_list_op(librados::IoCtx& io_ctx, const string& oid, int shard_id,
+static bool issue_bi_log_list_op(librados::IoCtx& io_ctx, const string& oid, const int shard_id,
                                  BucketIndexShardsManager& marker_mgr, uint32_t max,
                                  BucketIndexAioManager *manager,
                                  cls_rgw_bi_log_list_ret *pdata)
 {
   librados::ObjectReadOperation op;
   cls_rgw_bilog_list(op, marker_mgr.get(shard_id, ""), max, pdata, nullptr);
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
-int CLSRGWIssueBILogList::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueBILogList::issue_op(const int shard_id, const string& oid)
 {
   return issue_bi_log_list_op(io_ctx, oid, shard_id, marker_mgr, max, &manager, &result[shard_id]);
 }
@@ -533,46 +651,46 @@ void cls_rgw_bilog_trim(librados::ObjectWriteOperation& op,
   op.exec(RGW_CLASS, RGW_BI_LOG_TRIM, in);
 }
 
-static bool issue_bi_log_trim(librados::IoCtx& io_ctx, const string& oid, int shard_id,
+static bool issue_bi_log_trim(librados::IoCtx& io_ctx, const string& oid, const int shard_id,
                               BucketIndexShardsManager& start_marker_mgr,
                               BucketIndexShardsManager& end_marker_mgr, BucketIndexAioManager *manager) {
   cls_rgw_bi_log_trim_op call;
   librados::ObjectWriteOperation op;
   cls_rgw_bilog_trim(op, start_marker_mgr.get(shard_id, ""),
                      end_marker_mgr.get(shard_id, ""));
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
-int CLSRGWIssueBILogTrim::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueBILogTrim::issue_op(const int shard_id, const string& oid)
 {
   return issue_bi_log_trim(io_ctx, oid, shard_id, start_marker_mgr, end_marker_mgr, &manager);
 }
 
-static bool issue_bucket_check_index_op(IoCtx& io_ctx, const string& oid, BucketIndexAioManager *manager,
+static bool issue_bucket_check_index_op(IoCtx& io_ctx, const int shard_id, const string& oid, BucketIndexAioManager *manager,
     rgw_cls_check_index_ret *pdata) {
   bufferlist in;
   librados::ObjectReadOperation op;
   op.exec(RGW_CLASS, RGW_BUCKET_CHECK_INDEX, in, new ClsBucketIndexOpCtx<rgw_cls_check_index_ret>(
         pdata, NULL));
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
 int CLSRGWIssueBucketCheck::issue_op(int shard_id, const string& oid)
 {
-  return issue_bucket_check_index_op(io_ctx, oid, &manager, &result[shard_id]);
+  return issue_bucket_check_index_op(io_ctx, shard_id, oid, &manager, &result[shard_id]);
 }
 
-static bool issue_bucket_rebuild_index_op(IoCtx& io_ctx, const string& oid,
+static bool issue_bucket_rebuild_index_op(IoCtx& io_ctx, const int shard_id, const string& oid,
     BucketIndexAioManager *manager) {
   bufferlist in;
   librados::ObjectWriteOperation op;
   op.exec(RGW_CLASS, RGW_BUCKET_REBUILD_INDEX, in);
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
-int CLSRGWIssueBucketRebuild::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueBucketRebuild::issue_op(const int shard_id, const string& oid)
 {
-  return issue_bucket_rebuild_index_op(io_ctx, oid, &manager);
+  return issue_bucket_rebuild_index_op(io_ctx, shard_id, oid, &manager);
 }
 
 void cls_rgw_encode_suggestion(char op, rgw_bucket_dir_entry& dirent, bufferlist& updates)
@@ -586,40 +704,40 @@ void cls_rgw_suggest_changes(ObjectWriteOperation& o, bufferlist& updates)
   o.exec(RGW_CLASS, RGW_DIR_SUGGEST_CHANGES, updates);
 }
 
-int CLSRGWIssueGetDirHeader::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueGetDirHeader::issue_op(const int shard_id, const string& oid)
 {
   cls_rgw_obj_key empty_key;
   string empty_prefix;
   string empty_delimiter;
-  return issue_bucket_list_op(io_ctx, oid,
+  return issue_bucket_list_op(io_ctx, shard_id, oid,
                              empty_key, empty_prefix, empty_delimiter,
                              0, false, &manager, &result[shard_id]);
 }
 
-static bool issue_resync_bi_log(librados::IoCtx& io_ctx, const string& oid, BucketIndexAioManager *manager)
+static bool issue_resync_bi_log(librados::IoCtx& io_ctx, const int shard_id, const string& oid, BucketIndexAioManager *manager)
 {
   bufferlist in;
   librados::ObjectWriteOperation op;
   op.exec(RGW_CLASS, RGW_BI_LOG_RESYNC, in);
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
-int CLSRGWIssueResyncBucketBILog::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueResyncBucketBILog::issue_op(const int shard_id, const string& oid)
 {
-  return issue_resync_bi_log(io_ctx, oid, &manager);
+  return issue_resync_bi_log(io_ctx, shard_id, oid, &manager);
 }
 
-static bool issue_bi_log_stop(librados::IoCtx& io_ctx, const string& oid, BucketIndexAioManager *manager)
+static bool issue_bi_log_stop(librados::IoCtx& io_ctx, const int shard_id, const string& oid, BucketIndexAioManager *manager)
 {
   bufferlist in;
   librados::ObjectWriteOperation op;
   op.exec(RGW_CLASS, RGW_BI_LOG_STOP, in);
-  return manager->aio_operate(io_ctx, oid, &op); 
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
-int CLSRGWIssueBucketBILogStop::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueBucketBILogStop::issue_op(const int shard_id, const string& oid)
 {
-  return issue_bi_log_stop(io_ctx, oid, &manager);
+  return issue_bi_log_stop(io_ctx, shard_id, oid, &manager);
 }
 
 class GetDirHeaderCompletion : public ObjectOperationCompletion {
@@ -1061,7 +1179,8 @@ void cls_rgw_guard_bucket_resharding(librados::ObjectOperation& op, int ret_err)
   op.exec(RGW_CLASS, RGW_GUARD_BUCKET_RESHARDING, in);
 }
 
-static bool issue_set_bucket_resharding(librados::IoCtx& io_ctx, const string& oid,
+static bool issue_set_bucket_resharding(librados::IoCtx& io_ctx,
+                                       const int shard_id, const string& oid,
                                         const cls_rgw_bucket_instance_entry& entry,
                                         BucketIndexAioManager *manager) {
   bufferlist in;
@@ -1070,10 +1189,10 @@ static bool issue_set_bucket_resharding(librados::IoCtx& io_ctx, const string& o
   encode(call, in);
   librados::ObjectWriteOperation op;
   op.exec(RGW_CLASS, RGW_SET_BUCKET_RESHARDING, in);
-  return manager->aio_operate(io_ctx, oid, &op);
+  return manager->aio_operate(io_ctx, shard_id, oid, &op);
 }
 
-int CLSRGWIssueSetBucketResharding::issue_op(int shard_id, const string& oid)
+int CLSRGWIssueSetBucketResharding::issue_op(const int shard_id, const string& oid)
 {
-  return issue_set_bucket_resharding(io_ctx, oid, entry, &manager);
+  return issue_set_bucket_resharding(io_ctx, shard_id, oid, entry, &manager);
 }
index c68703c6958f7c60091d542ddf1b5ec0926d0b8a..ba16061d862ba104e83ae88d964a3d8c32c32997 100644 (file)
@@ -14,6 +14,7 @@
 #include "common/ceph_time.h"
 #include "common/ceph_mutex.h"
 
+
 // Forward declaration
 class BucketIndexAioManager;
 /*
@@ -28,16 +29,33 @@ struct BucketIndexAioArg : public RefCountedObject {
 };
 
 /*
- * This class manages AIO completions. This class is not completely thread-safe,
- * methods like *get_next* is not thread-safe and is expected to be called from
- * within one thread.
+ * This class manages AIO completions. This class is not completely
+ * thread-safe, methods like *get_next_request_id* is not thread-safe
+ * and is expected to be called from within one thread.
  */
 class BucketIndexAioManager {
+public:
+
+  // allows us to reaccess the shard id and shard's oid during and
+  // after the asynchronous call is made
+  struct RequestObj {
+    int shard_id;
+    std::string oid;
+
+    RequestObj(int _shard_id, const std::string& _oid) :
+      shard_id(_shard_id), oid(_oid)
+    {/* empty */}
+  };
+
+
 private:
-  map<int, librados::AioCompletion*> pendings;
-  map<int, librados::AioCompletion*> completions;
-  map<int, string> pending_objs;
-  map<int, string> completion_objs;
+  // NB: the following 4 maps use the request_id as the key; this
+  // is not the same as the shard_id!
+  std::map<int, librados::AioCompletion*> pendings;
+  std::map<int, librados::AioCompletion*> completions;
+  std::map<int, const RequestObj> pending_objs;
+  std::map<int, const RequestObj> completion_objs;
+
   int next = 0;
   ceph::mutex lock = ceph::make_mutex("BucketIndexAioManager::lock");
   ceph::condition_variable cond;
@@ -55,8 +73,8 @@ private:
    *
    * Return next request ID.
    */
-  int get_next() { return next++; }
-    
+  int get_next_request_id() { return next++; }
+
   /*
    * Add a new pending AIO completion instance.
    *
@@ -65,10 +83,11 @@ private:
    * @param oid        - the object id associated with the object, if it is NULL, we don't
    *                     track the object id per callback.
    */
-  void add_pending(int id, librados::AioCompletion* completion, const string& oid) {
-    pendings[id] = completion;
-    pending_objs[id] = oid;
+  void add_pending(int request_id, librados::AioCompletion* completion, const int shard_id, const std::string& oid) {
+    pendings[request_id] = completion;
+    pending_objs.emplace(request_id, RequestObj(shard_id, oid));
   }
+
 public:
   /*
    * Create a new instance.
@@ -78,7 +97,7 @@ public:
   /*
    * Do completion for the given AIO request.
    */
-  void do_completion(int id);
+  void do_completion(int request_id);
 
   /*
    * Wait for AIO completions.
@@ -90,19 +109,23 @@ public:
    *
    * Return false if there is no pending AIO, true otherwise.
    */
-  bool wait_for_completions(int valid_ret_code, int *num_completions, int *ret_code,
-      map<int, string> *objs);
+  bool wait_for_completions(int valid_ret_code,
+                           int *num_completions = nullptr,
+                           int *ret_code = nullptr,
+                           std::map<int, std::string> *completed_objs = nullptr,
+                           std::map<int, std::string> *retry_objs = nullptr);
 
   /**
    * Do aio read operation.
    */
-  bool aio_operate(librados::IoCtx& io_ctx, const string& oid, librados::ObjectReadOperation *op) {
+  bool aio_operate(librados::IoCtx& io_ctx, const int shard_id, const std::string& oid, librados::ObjectReadOperation *op) {
     std::lock_guard l{lock};
-    BucketIndexAioArg *arg = new BucketIndexAioArg(get_next(), this);
+    const int request_id = get_next_request_id();
+    BucketIndexAioArg *arg = new BucketIndexAioArg(request_id, this);
     librados::AioCompletion *c = librados::Rados::aio_create_completion((void*)arg, bucket_index_op_completion_cb);
     int r = io_ctx.aio_operate(oid, c, (librados::ObjectReadOperation*)op, NULL);
     if (r >= 0) {
-      add_pending(arg->id, c, oid);
+      add_pending(arg->id, c, shard_id, oid);
     } else {
       arg->put();
       c->release();
@@ -113,13 +136,14 @@ public:
   /**
    * Do aio write operation.
    */
-  bool aio_operate(librados::IoCtx& io_ctx, const string& oid, librados::ObjectWriteOperation *op) {
+  bool aio_operate(librados::IoCtx& io_ctx, const int shard_id, const std::string& oid, librados::ObjectWriteOperation *op) {
     std::lock_guard l{lock};
-    BucketIndexAioArg *arg = new BucketIndexAioArg(get_next(), this);
+    const int request_id = get_next_request_id();
+    BucketIndexAioArg *arg = new BucketIndexAioArg(request_id, this);
     librados::AioCompletion *c = librados::Rados::aio_create_completion((void*)arg, bucket_index_op_completion_cb);
     int r = io_ctx.aio_operate(oid, c, (librados::ObjectWriteOperation*)op);
     if (r >= 0) {
-      add_pending(arg->id, c, oid);
+      add_pending(arg->id, c, shard_id, oid);
     } else {
       arg->put();
       c->release();
@@ -241,8 +265,12 @@ void cls_rgw_bucket_init_index(librados::ObjectWriteOperation& o);
 class CLSRGWConcurrentIO {
 protected:
   librados::IoCtx& io_ctx;
-  map<int, string>& objs_container;
-  map<int, string>::iterator iter;
+
+  // map of shard # to oid; the shards that are remaining to be processed
+  std::map<int, std::string>& objs_container;
+  // iterator to work through objs_container
+  std::map<int, std::string>::iterator iter;
+
   uint32_t max_aio;
   BucketIndexAioManager manager;
 
@@ -268,51 +296,9 @@ public:
   virtual ~CLSRGWConcurrentIO()
   {}
 
-  int operator()() {
-    int ret = 0;
-    iter = objs_container.begin();
-    for (; iter != objs_container.end() && max_aio-- > 0; ++iter) {
-      ret = issue_op(iter->first, iter->second);
-      if (ret < 0)
-        break;
-    }
-
-    int num_completions = 0, r = 0;
-    map<int, string> objs;
-    map<int, string> *pobjs = (need_multiple_rounds() ? &objs : NULL);
-    while (manager.wait_for_completions(valid_ret_code(), &num_completions, &r, pobjs)) {
-      if (r >= 0 && ret >= 0) {
-        for (; num_completions && iter != objs_container.end(); --num_completions, ++iter) {
-          int issue_ret = issue_op(iter->first, iter->second);
-          if (issue_ret < 0) {
-            ret = issue_ret;
-            break;
-          }
-        }
-      } else if (ret >= 0) {
-        ret = r;
-      }
-      if (need_multiple_rounds() && iter == objs_container.end() && !objs.empty()) {
-        // For those objects which need another round, use them to reset
-        // the container
-        reset_container(objs);
-        iter = objs_container.begin();
-        for (; num_completions && iter != objs_container.end(); --num_completions, ++iter) {
-          int issue_ret = issue_op(iter->first, iter->second);
-          if (issue_ret < 0) {
-            ret = issue_ret;
-            break;
-          }
-        }
-      }
-    }
+  int operator()();
+}; // class CLSRGWConcurrentIO
 
-    if (ret < 0) {
-      cleanup();
-    }
-    return ret;
-  }
-};
 
 class CLSRGWIssueBucketIndexInit : public CLSRGWConcurrentIO {
 protected:
@@ -320,8 +306,9 @@ protected:
   int valid_ret_code() override { return -EEXIST; }
   void cleanup() override;
 public:
-  CLSRGWIssueBucketIndexInit(librados::IoCtx& ioc, map<int, string>& _bucket_objs,
-                     uint32_t _max_aio) :
+  CLSRGWIssueBucketIndexInit(librados::IoCtx& ioc,
+                            std::map<int, std::string>& _bucket_objs,
+                            uint32_t _max_aio) :
     CLSRGWConcurrentIO(ioc, _bucket_objs, _max_aio) {}
 };
 
@@ -377,7 +364,7 @@ int cls_rgw_bi_get(librados::IoCtx& io_ctx, const string oid,
                    rgw_cls_bi_entry *entry);
 int cls_rgw_bi_put(librados::IoCtx& io_ctx, const string oid, rgw_cls_bi_entry& entry);
 void cls_rgw_bi_put(librados::ObjectWriteOperation& op, const string oid, rgw_cls_bi_entry& entry);
-int cls_rgw_bi_list(librados::IoCtx& io_ctx, const string oid,
+int cls_rgw_bi_list(librados::IoCtx& io_ctx, const string& oid,
                    const string& name, const string& marker, uint32_t max,
                    list<rgw_cls_bi_entry> *entries, bool *is_truncated);
 
@@ -434,9 +421,12 @@ class CLSRGWIssueBucketList : public CLSRGWConcurrentIO {
   string delimiter;
   uint32_t num_entries;
   bool list_versions;
-  map<int, rgw_cls_list_ret>& result;
+  std::map<int, rgw_cls_list_ret>& result; // request_id -> return value
+
 protected:
-  int issue_op(int shard_id, const string& oid) override;
+  int issue_op(int shard_id, const std::string& oid) override;
+  void reset_container(std::map<int, std::string>& objs) override;
+
 public:
   CLSRGWIssueBucketList(librados::IoCtx& io_ctx,
                        const cls_rgw_obj_key& _start_obj,
@@ -444,8 +434,9 @@ public:
                        const string& _delimiter,
                        uint32_t _num_entries,
                         bool _list_versions,
-                        map<int, string>& oids,
-                        map<int, rgw_cls_list_ret>& list_results,
+                        std::map<int, std::string>& oids, // shard_id -> shard_oid
+                       // shard_id -> return value
+                        std::map<int, rgw_cls_list_ret>& list_results,
                         uint32_t max_aio) :
   CLSRGWConcurrentIO(io_ctx, oids, max_aio),
     start_obj(_start_obj), filter_prefix(_filter_prefix), delimiter(_delimiter),
index 5957d2ffbfd7c8a55f3efdd6241b4e1d2c588c08..ad0b9e709612d8ea8305fca8a3bd4600b1b429d8 100644 (file)
@@ -6,6 +6,11 @@
 
 #define RGW_CLASS "rgw"
 
+/* Special error code returned by cls bucket list operation if it was
+ * unable to skip past enough not visibile entries to return any
+ * entries in the call. */
+constexpr int RGWBIAdvanceAndRetryError = -EFBIG;
+
 /* bucket index */
 #define RGW_BUCKET_INIT_INDEX "bucket_init_index"
 
index 873acf070d8fd2a845b2344e236e9afd485f477c..5510c49f36c90218517950f860f63ebf8287dca9 100644 (file)
@@ -428,6 +428,12 @@ struct rgw_cls_list_ret {
   rgw_bucket_dir dir;
   bool is_truncated;
 
+  // if is_truncated is true, starting marker for next iteration; this
+  // is necessary as it's possible after maximum number of tries we
+  // still might have zero entries to return, in which case we have to
+  // at least move the ball foward
+  cls_rgw_obj_key marker;
+
   // cls_filtered is not transmitted; it is assumed true for versions
   // on/after 3 and false for prior versions; this allows the rgw
   // layer to know when an older osd (cls) does not do the filtering
@@ -439,16 +445,20 @@ struct rgw_cls_list_ret {
   {}
 
   void encode(bufferlist &bl) const {
-    ENCODE_START(3, 2, bl);
+    ENCODE_START(4, 2, bl);
     encode(dir, bl);
     encode(is_truncated, bl);
+    encode(marker, bl);
     ENCODE_FINISH(bl);
   }
   void decode(bufferlist::const_iterator &bl) {
-    DECODE_START_LEGACY_COMPAT_LEN(3, 2, 2, bl);
+    DECODE_START_LEGACY_COMPAT_LEN(4, 2, 2, bl);
     decode(dir, bl);
     decode(is_truncated, bl);
     cls_filtered = struct_v >= 3;
+    if (struct_v >= 4) {
+      decode(marker, bl);
+    }
     DECODE_FINISH(bl);
   }
   void dump(Formatter *f) const;
@@ -677,7 +687,7 @@ WRITE_CLASS_ENCODER(rgw_cls_bi_put_op)
 
 struct rgw_cls_bi_list_op {
   uint32_t max;
-  string name;
+  string name_filter; // limit resultto one object and its instances
   string marker;
 
   rgw_cls_bi_list_op() : max(0) {}
@@ -685,7 +695,7 @@ struct rgw_cls_bi_list_op {
   void encode(bufferlist& bl) const {
     ENCODE_START(1, 1, bl);
     encode(max, bl);
-    encode(name, bl);
+    encode(name_filter, bl);
     encode(marker, bl);
     ENCODE_FINISH(bl);
   }
@@ -693,7 +703,7 @@ struct rgw_cls_bi_list_op {
   void decode(bufferlist::const_iterator& bl) {
     DECODE_START(1, bl);
     decode(max, bl);
-    decode(name, bl);
+    decode(name_filter, bl);
     decode(marker, bl);
     DECODE_FINISH(bl);
   }
index 3f5b41a4753f33a343fc7ceb28d5832d41ad9dbe..0f646c049c35680fc1d63468ed78e6b3f2838d37 100644 (file)
@@ -338,6 +338,7 @@ struct rgw_bucket_entry_ver {
 };
 WRITE_CLASS_ENCODER(rgw_bucket_entry_ver)
 
+
 struct cls_rgw_obj_key {
   string name;
   string instance;
@@ -356,6 +357,7 @@ struct cls_rgw_obj_key {
 
   void set(const std::string& _name) {
     name = _name;
+    instance.clear();
   }
 
   bool operator==(const cls_rgw_obj_key& k) const {
index 93b2aadd8a887f495650d6e34fac99923b3a6561..e94af5b0e29d836ce4688613cd4b56d000b48348 100644 (file)
@@ -99,7 +99,9 @@ void ThreadPool::worker(WorkThread *wt)
       break;
     }
 
-    if (!_pause && !work_queues.empty()) {
+    if (work_queues.empty()) {
+      ldout(cct, 10) << "worker no work queues" << dendl;
+    } else if (!_pause) {
       WorkQueue_* wq;
       int tries = 2 * work_queues.size();
       bool did = false;
index 10ee6c3ed6ccda73c7feba999aaba6318517f239..9ce3e8b1ebb2320754b76c84c4619d157373e49d 100644 (file)
@@ -223,23 +223,18 @@ public:
 
   static void generate_test_instances(std::list<BitVector *> &o);
 private:
-  struct NoInitAllocator : public std::allocator<__u32> {
-    NoInitAllocator() {}
-    NoInitAllocator(const std::allocator<__u32>& alloc)
-      : std::allocator<__u32>(alloc) {
-    }
-
-    template <class U, class... Args>
-    void construct(U* p, Args&&... args) const {
-    }
-  };
-
   bufferlist m_data;
   uint64_t m_size;
   bool m_crc_enabled;
 
   mutable __u32 m_header_crc;
-  mutable std::vector<__u32, NoInitAllocator> m_data_crcs;
+
+  // inhibit value-initialization when used in std::vector
+  struct u32_struct {
+    u32_struct() {}
+    __u32 val;
+  };
+  mutable std::vector<u32_struct> m_data_crcs;
 
   void resize(uint64_t elements, bool zero);
 
@@ -351,7 +346,7 @@ void BitVector<_b>::encode_data(bufferlist& bl, uint64_t data_byte_offset,
 
     bufferlist bit;
     bit.substr_of(m_data, data_byte_offset, len);
-    m_data_crcs[data_byte_offset / BLOCK_SIZE] = bit.crc32c(0);
+    m_data_crcs[data_byte_offset / BLOCK_SIZE].val = bit.crc32c(0);
 
     bl.claim_append(bit);
     data_byte_offset += BLOCK_SIZE;
@@ -385,7 +380,7 @@ void BitVector<_b>::decode_data(bufferlist::const_iterator& it,
     bufferlist bit;
     bit.append(ptr);
     if (m_crc_enabled &&
-       m_data_crcs[data_byte_offset / BLOCK_SIZE] != bit.crc32c(0)) {
+       m_data_crcs[data_byte_offset / BLOCK_SIZE].val != bit.crc32c(0)) {
       throw buffer::malformed_input("invalid data block CRC");
     }
     data.append(bit);
@@ -499,7 +494,7 @@ void BitVector<_b>::encode_data_crcs(bufferlist& bl, uint64_t offset,
   compute_index(offset + length - 1, &index, &shift);
   uint64_t end_crc_index = index / BLOCK_SIZE;
   while (crc_index <= end_crc_index) {
-    __u32 crc = m_data_crcs[crc_index++];
+    __u32 crc = m_data_crcs[crc_index++].val;
     ceph::encode(crc, bl);
   }
 }
@@ -520,7 +515,7 @@ void BitVector<_b>::decode_data_crcs(bufferlist::const_iterator& it,
   while (remaining > 0) {
     __u32 crc;
     ceph::decode(crc, it);
-    m_data_crcs[crc_index++] = crc;
+    m_data_crcs[crc_index++].val = crc;
     --remaining;
   }
 }
index cbeb1b06df615f621e287a05d236ba174544eb1d..e1f8705c9e6545f3b2277d0b45c068115e8f4b91 100644 (file)
@@ -196,6 +196,11 @@ void ssl::OpenSSLDigest::Restart() {
   EVP_DigestInit_ex(mpContext, mpType, NULL);
 }
 
+void ssl::OpenSSLDigest::SetFlags(int flags) {
+  EVP_MD_CTX_set_flags(mpContext, flags);
+  this->Restart();
+}
+
 void ssl::OpenSSLDigest::Update(const unsigned char *input, size_t length) {
   if (length) {
     EVP_DigestUpdate(mpContext, const_cast<void *>(reinterpret_cast<const void *>(input)), length);
index 6bf344aa8f13f1d03b9ff256048bb3f1219123fa..2feced03a99a5a1391489b4eee118bca563a7065 100644 (file)
@@ -52,6 +52,7 @@ namespace TOPNSPC::crypto {
        OpenSSLDigest (const EVP_MD *_type);
        ~OpenSSLDigest ();
        void Restart();
+       void SetFlags(int flags);
        void Update (const unsigned char *input, size_t length);
        void Final (unsigned char *digest);
     };
index bb708bb4675646d467ff0fe4ab5033997c63901f..603165efb43c550dfe8a6baf1ccc6fdb2687b509 100644 (file)
 
 // For ceph_timespec
 #include "ceph_time.h"
+
+#include <fmt/chrono.h>
+#include <fmt/ostream.h>
+
 #include "log/LogClock.h"
 #include "config.h"
 #include "strtol.h"
@@ -52,277 +56,297 @@ int clock_gettime(int clk_id, struct timespec *tp)
 }
 #endif
 
+using namespace std::literals;
+
 namespace ceph {
-  namespace time_detail {
-    void real_clock::to_ceph_timespec(const time_point& t,
-                                     struct ceph_timespec& ts) {
-      ts.tv_sec = to_time_t(t);
-      ts.tv_nsec = (t.time_since_epoch() % seconds(1)).count();
-    }
-    struct ceph_timespec real_clock::to_ceph_timespec(const time_point& t) {
-      struct ceph_timespec ts;
-      to_ceph_timespec(t, ts);
-      return ts;
-    }
-    real_clock::time_point real_clock::from_ceph_timespec(
-      const struct ceph_timespec& ts) {
-      return time_point(seconds(ts.tv_sec) + nanoseconds(ts.tv_nsec));
-    }
+using std::chrono::seconds;
+using std::chrono::nanoseconds;
+void real_clock::to_ceph_timespec(const time_point& t,
+                                 struct ceph_timespec& ts) {
+  ts.tv_sec = to_time_t(t);
+  ts.tv_nsec = (t.time_since_epoch() % 1s).count();
+}
+struct ceph_timespec real_clock::to_ceph_timespec(const time_point& t) {
+  struct ceph_timespec ts;
+  to_ceph_timespec(t, ts);
+  return ts;
+}
+real_clock::time_point real_clock::from_ceph_timespec(
+  const struct ceph_timespec& ts) {
+  return time_point(seconds(ts.tv_sec) + nanoseconds(ts.tv_nsec));
+}
 
-    void coarse_real_clock::to_ceph_timespec(const time_point& t,
-                                            struct ceph_timespec& ts) {
-      ts.tv_sec = to_time_t(t);
-      ts.tv_nsec = (t.time_since_epoch() % seconds(1)).count();
-    }
-    struct ceph_timespec coarse_real_clock::to_ceph_timespec(
-      const time_point& t) {
-      struct ceph_timespec ts;
-      to_ceph_timespec(t, ts);
-      return ts;
-    }
-    coarse_real_clock::time_point coarse_real_clock::from_ceph_timespec(
-      const struct ceph_timespec& ts) {
-      return time_point(seconds(ts.tv_sec) + nanoseconds(ts.tv_nsec));
-    }
+void coarse_real_clock::to_ceph_timespec(const time_point& t,
+                                        struct ceph_timespec& ts) {
+  ts.tv_sec = to_time_t(t);
+  ts.tv_nsec = (t.time_since_epoch() % seconds(1)).count();
+}
+struct ceph_timespec coarse_real_clock::to_ceph_timespec(
+  const time_point& t) {
+  struct ceph_timespec ts;
+  to_ceph_timespec(t, ts);
+  return ts;
+}
+coarse_real_clock::time_point coarse_real_clock::from_ceph_timespec(
+  const struct ceph_timespec& ts) {
+  return time_point(seconds(ts.tv_sec) + nanoseconds(ts.tv_nsec));
+}
 
-  }
 
-  using std::chrono::duration_cast;
-  using std::chrono::seconds;
-  using std::chrono::microseconds;
+using std::chrono::duration_cast;
+using std::chrono::seconds;
+using std::chrono::microseconds;
 
-  template<typename Clock,
-          typename std::enable_if<Clock::is_steady>::type*>
-  std::ostream& operator<<(std::ostream& m,
-                          const std::chrono::time_point<Clock>& t) {
-    return m << std::fixed << std::chrono::duration<double>(
-               t.time_since_epoch()).count()
-            << 's';
-  }
+template<typename Clock,
+        typename std::enable_if<Clock::is_steady>::type*>
+std::ostream& operator<<(std::ostream& m,
+                        const std::chrono::time_point<Clock>& t) {
+  return m << std::fixed << std::chrono::duration<double>(
+    t.time_since_epoch()).count()
+          << 's';
+}
 
-  std::ostream& operator<<(std::ostream& m, const timespan& t) {
-    static_assert(std::is_unsigned_v<timespan::rep>);
-    m << std::chrono::duration_cast<std::chrono::seconds>(t).count();
-    if (auto ns = (t % 1s).count(); ns > 0) {
-      char oldfill = m.fill();
-      m.fill('0');
-      m << '.' << std::setw(9) << ns;
-      m.fill(oldfill);
-    }
-    return m << 's';
-  }
+template<typename Clock,
+        typename std::enable_if<!Clock::is_steady>::type*>
+std::ostream& operator<<(std::ostream& m,
+                        const std::chrono::time_point<Clock>& t) {
+  m.setf(std::ios::right);
+  char oldfill = m.fill();
+  m.fill('0');
+  // localtime.  this looks like an absolute time.
+  //  conform to http://en.wikipedia.org/wiki/ISO_8601
+  struct tm bdt;
+  time_t tt = Clock::to_time_t(t);
+  localtime_r(&tt, &bdt);
+  char tz[32] = { 0 };
+  strftime(tz, sizeof(tz), "%z", &bdt);
+  m << std::setw(4) << (bdt.tm_year+1900)  // 2007 -> '07'
+    << '-' << std::setw(2) << (bdt.tm_mon+1)
+    << '-' << std::setw(2) << bdt.tm_mday
+    << 'T'
+    << std::setw(2) << bdt.tm_hour
+    << ':' << std::setw(2) << bdt.tm_min
+    << ':' << std::setw(2) << bdt.tm_sec
+    << "." << std::setw(6) << duration_cast<microseconds>(
+      t.time_since_epoch() % seconds(1)).count()
+    << tz;
+  m.fill(oldfill);
+  m.unsetf(std::ios::right);
+  return m;
+}
 
-  template<typename Clock,
-          typename std::enable_if<!Clock::is_steady>::type*>
-  std::ostream& operator<<(std::ostream& m,
-                          const std::chrono::time_point<Clock>& t) {
-    m.setf(std::ios::right);
-    char oldfill = m.fill();
-    m.fill('0');
-    // localtime.  this looks like an absolute time.
-    //  conform to http://en.wikipedia.org/wiki/ISO_8601
-    struct tm bdt;
-    time_t tt = Clock::to_time_t(t);
-    localtime_r(&tt, &bdt);
-    char tz[32] = { 0 };
-    strftime(tz, sizeof(tz), "%z", &bdt);
-    m << std::setw(4) << (bdt.tm_year+1900)  // 2007 -> '07'
-      << '-' << std::setw(2) << (bdt.tm_mon+1)
-      << '-' << std::setw(2) << bdt.tm_mday
-      << 'T'
-      << std::setw(2) << bdt.tm_hour
-      << ':' << std::setw(2) << bdt.tm_min
-      << ':' << std::setw(2) << bdt.tm_sec
-      << "." << std::setw(6) << duration_cast<microseconds>(
-       t.time_since_epoch() % seconds(1)).count()
-      << tz;
-    m.fill(oldfill);
-    m.unsetf(std::ios::right);
-    return m;
-  }
+template std::ostream&
+operator<< <mono_clock>(std::ostream& m, const mono_time& t);
+template std::ostream&
+operator<< <real_clock>(std::ostream& m, const real_time& t);
+template std::ostream&
+operator<< <coarse_mono_clock>(std::ostream& m, const coarse_mono_time& t);
+template std::ostream&
+operator<< <coarse_real_clock>(std::ostream& m, const coarse_real_time& t);
 
-  template std::ostream&
-  operator<< <mono_clock>(std::ostream& m, const mono_time& t);
-  template std::ostream&
-  operator<< <real_clock>(std::ostream& m, const real_time& t);
-  template std::ostream&
-  operator<< <coarse_mono_clock>(std::ostream& m, const coarse_mono_time& t);
-  template std::ostream&
-  operator<< <coarse_real_clock>(std::ostream& m, const coarse_real_time& t);
+std::string timespan_str(timespan t)
+{
+  // FIXME: somebody pretty please make a version of this function
+  // that isn't as lame as this one!
+  uint64_t nsec = std::chrono::nanoseconds(t).count();
+  std::ostringstream ss;
+  if (nsec < 2000000000) {
+    ss << ((float)nsec / 1000000000) << "s";
+    return ss.str();
+  }
+  uint64_t sec = nsec / 1000000000;
+  if (sec < 120) {
+    ss << sec << "s";
+    return ss.str();
+  }
+  uint64_t min = sec / 60;
+  if (min < 120) {
+    ss << min << "m";
+    return ss.str();
+  }
+  uint64_t hr = min / 60;
+  if (hr < 48) {
+    ss << hr << "h";
+    return ss.str();
+  }
+  uint64_t day = hr / 24;
+  if (day < 14) {
+    ss << day << "d";
+    return ss.str();
+  }
+  uint64_t wk = day / 7;
+  if (wk < 12) {
+    ss << wk << "w";
+    return ss.str();
+  }
+  uint64_t mn = day / 30;
+  if (mn < 24) {
+    ss << mn << "M";
+    return ss.str();
+  }
+  uint64_t yr = day / 365;
+  ss << yr << "y";
+  return ss.str();
+}
 
-  std::string timespan_str(timespan t)
-  {
-    // FIXME: somebody pretty please make a version of this function
-    // that isn't as lame as this one!
-    uint64_t nsec = std::chrono::nanoseconds(t).count();
-    ostringstream ss;
-    if (nsec < 2000000000) {
-      ss << ((float)nsec / 1000000000) << "s";
-      return ss.str();
-    }
-    uint64_t sec = nsec / 1000000000;
-    if (sec < 120) {
-      ss << sec << "s";
-      return ss.str();
-    }
-    uint64_t min = sec / 60;
-    if (min < 120) {
-      ss << min << "m";
-      return ss.str();
-    }
-    uint64_t hr = min / 60;
-    if (hr < 48) {
-      ss << hr << "h";
-      return ss.str();
-    }
-    uint64_t day = hr / 24;
-    if (day < 14) {
-      ss << day << "d";
-      return ss.str();
-    }
-    uint64_t wk = day / 7;
-    if (wk < 12) {
-      ss << wk << "w";
-      return ss.str();
-    }
-    uint64_t mn = day / 30;
-    if (mn < 24) {
-      ss << mn << "M";
-      return ss.str();
-    }
-    uint64_t yr = day / 365;
+std::string exact_timespan_str(timespan t)
+{
+  uint64_t nsec = std::chrono::nanoseconds(t).count();
+  uint64_t sec = nsec / 1000000000;
+  nsec %= 1000000000;
+  uint64_t yr = sec / (60 * 60 * 24 * 365);
+  std::ostringstream ss;
+  if (yr) {
     ss << yr << "y";
-    return ss.str();
+    sec -= yr * (60 * 60 * 24 * 365);
+  }
+  uint64_t mn = sec / (60 * 60 * 24 * 30);
+  if (mn >= 3) {
+    ss << mn << "mo";
+    sec -= mn * (60 * 60 * 24 * 30);
+  }
+  uint64_t wk = sec / (60 * 60 * 24 * 7);
+  if (wk >= 2) {
+    ss << wk << "w";
+    sec -= wk * (60 * 60 * 24 * 7);
+  }
+  uint64_t day = sec / (60 * 60 * 24);
+  if (day >= 2) {
+    ss << day << "d";
+    sec -= day * (60 * 60 * 24);
+  }
+  uint64_t hr = sec / (60 * 60);
+  if (hr >= 2) {
+    ss << hr << "h";
+    sec -= hr * (60 * 60);
   }
+  uint64_t min = sec / 60;
+  if (min >= 2) {
+    ss << min << "m";
+    sec -= min * 60;
+  }
+  if (sec) {
+    ss << sec;
+  }
+  if (nsec) {
+    ss << ((float)nsec / 1000000000);
+  }
+  if (sec || nsec) {
+    ss << "s";
+  }
+  return ss.str();
+}
 
-  std::string exact_timespan_str(timespan t)
-  {
-    uint64_t nsec = std::chrono::nanoseconds(t).count();
-    uint64_t sec = nsec / 1000000000;
-    nsec %= 1000000000;
-    uint64_t yr = sec / (60 * 60 * 24 * 365);
-    ostringstream ss;
-    if (yr) {
-      ss << yr << "y";
-      sec -= yr * (60 * 60 * 24 * 365);
-    }
-    uint64_t mn = sec / (60 * 60 * 24 * 30);
-    if (mn >= 3) {
-      ss << mn << "mo";
-      sec -= mn * (60 * 60 * 24 * 30);
+std::chrono::seconds parse_timespan(const std::string& s)
+{
+  static std::map<std::string,int> units = {
+    { "s", 1 },
+    { "sec", 1 },
+    { "second", 1 },
+    { "seconds", 1 },
+    { "m", 60 },
+    { "min", 60 },
+    { "minute", 60 },
+    { "minutes", 60 },
+    { "h", 60*60 },
+    { "hr", 60*60 },
+    { "hour", 60*60 },
+    { "hours", 60*60 },
+    { "d", 24*60*60 },
+    { "day", 24*60*60 },
+    { "days", 24*60*60 },
+    { "w", 7*24*60*60 },
+    { "wk", 7*24*60*60 },
+    { "week", 7*24*60*60 },
+    { "weeks", 7*24*60*60 },
+    { "mo", 30*24*60*60 },
+    { "month", 30*24*60*60 },
+    { "months", 30*24*60*60 },
+    { "y", 365*24*60*60 },
+    { "yr", 365*24*60*60 },
+    { "year", 365*24*60*60 },
+    { "years", 365*24*60*60 },
+  };
+
+  auto r = 0s;
+  auto pos = 0u;
+  while (pos < s.size()) {
+    // skip whitespace
+    while (std::isspace(s[pos])) {
+      ++pos;
     }
-    uint64_t wk = sec / (60 * 60 * 24 * 7);
-    if (wk >= 2) {
-      ss << wk << "w";
-      sec -= wk * (60 * 60 * 24 * 7);
+    if (pos >= s.size()) {
+      break;
     }
-    uint64_t day = sec / (60 * 60 * 24);
-    if (day >= 2) {
-      ss << day << "d";
-      sec -= day * (60 * 60 * 24);
+
+    // consume any digits
+    auto val_start = pos;
+    while (std::isdigit(s[pos])) {
+      ++pos;
     }
-    uint64_t hr = sec / (60 * 60);
-    if (hr >= 2) {
-      ss << hr << "h";
-      sec -= hr * (60 * 60);
+    if (val_start == pos) {
+      throw std::invalid_argument("expected digit");
     }
-    uint64_t min = sec / 60;
-    if (min >= 2) {
-      ss << min << "m";
-      sec -= min * 60;
+    auto n = s.substr(val_start, pos - val_start);
+    std::string err;
+    auto val = strict_strtoll(n.c_str(), 10, &err);
+    if (err.size()) {
+      throw std::invalid_argument(err);
     }
-    if (sec) {
-      ss << sec;
+
+    // skip whitespace
+    while (std::isspace(s[pos])) {
+      ++pos;
     }
-    if (nsec) {
-      ss << ((float)nsec / 1000000000);
+
+    // consume unit
+    auto unit_start = pos;
+    while (std::isalpha(s[pos])) {
+      ++pos;
     }
-    if (sec || nsec) {
-      ss << "s";
+    if (unit_start != pos) {
+      auto unit = s.substr(unit_start, pos - unit_start);
+      auto p = units.find(unit);
+      if (p == units.end()) {
+       throw std::invalid_argument("unrecogized unit '"s + unit + "'");
+      }
+      val *= p->second;
+    } else if (pos < s.size()) {
+      throw std::invalid_argument("unexpected trailing '"s + s.substr(pos) + "'");
     }
-    return ss.str();
+    r += std::chrono::seconds(val);
   }
+  return r;
+}
 
-  std::chrono::seconds parse_timespan(const std::string& s)
-  {
-    static std::map<string,int> units = {
-      { "s", 1 },
-      { "sec", 1 },
-      { "second", 1 },
-      { "seconds", 1 },
-      { "m", 60 },
-      { "min", 60 },
-      { "minute", 60 },
-      { "minutes", 60 },
-      { "h", 60*60 },
-      { "hr", 60*60 },
-      { "hour", 60*60 },
-      { "hours", 60*60 },
-      { "d", 24*60*60 },
-      { "day", 24*60*60 },
-      { "days", 24*60*60 },
-      { "w", 7*24*60*60 },
-      { "wk", 7*24*60*60 },
-      { "week", 7*24*60*60 },
-      { "weeks", 7*24*60*60 },
-      { "mo", 30*24*60*60 },
-      { "month", 30*24*60*60 },
-      { "months", 30*24*60*60 },
-      { "y", 365*24*60*60 },
-      { "yr", 365*24*60*60 },
-      { "year", 365*24*60*60 },
-      { "years", 365*24*60*60 },
-    };
+}
 
-    auto r = 0s;
-    auto pos = 0u;
-    while (pos < s.size()) {
-      // skip whitespace
-      while (std::isspace(s[pos])) {
-       ++pos;
-      }
-      if (pos >= s.size()) {
-       break;
-      }
+namespace std {
+template<typename Rep, typename Period>
+ostream& operator<<(ostream& m, const chrono::duration<Rep, Period>& t) {
+  if constexpr (chrono::treat_as_floating_point_v<Rep>) {
+    using seconds_t = chrono::duration<float>;
+    ::fmt::print(m, "{:.9}", chrono::duration_cast<seconds_t>(t));
+  } else {
+    ::fmt::print(m, "{}", t);
+  }
+  return m;
+}
 
-      // consume any digits
-      auto val_start = pos;
-      while (std::isdigit(s[pos])) {
-       ++pos;
-      }
-      if (val_start == pos) {
-       throw invalid_argument("expected digit");
-      }
-      string n = s.substr(val_start, pos - val_start);
-      string err;
-      auto val = strict_strtoll(n.c_str(), 10, &err);
-      if (err.size()) {
-       throw invalid_argument(err);
-      }
+template ostream&
+operator<< <::ceph::timespan::rep,
+            ::ceph::timespan::period> (ostream&, const ::ceph::timespan&);
 
-      // skip whitespace
-      while (std::isspace(s[pos])) {
-       ++pos;
-      }
+template ostream&
+operator<< <::ceph::signedspan::rep,
+            ::ceph::signedspan::period> (ostream&, const ::ceph::signedspan&);
 
-      // consume unit
-      auto unit_start = pos;
-      while (std::isalpha(s[pos])) {
-       ++pos;
-      }
-      if (unit_start != pos) {
-       string unit = s.substr(unit_start, pos - unit_start);
-       auto p = units.find(unit);
-       if (p == units.end()) {
-         throw invalid_argument("unrecogized unit '"s + unit + "'");
-       }
-       val *= p->second;
-      } else if (pos < s.size()) {
-       throw invalid_argument("unexpected trailing '"s + s.substr(pos) + "'");
-      }
-      r += chrono::seconds(val);
-    }
-    return r;
-  }
+template ostream&
+operator<< <chrono::seconds::rep,
+            chrono::seconds::period> (ostream&, const chrono::seconds&);
 
-}
+template ostream&
+operator<< <chrono::milliseconds::rep,
+            chrono::milliseconds::period> (ostream&, const chrono::milliseconds&);
+
+} // namespace std
index f6185c882006312228c3a78ce8837fe0db758b62..2f99188e439b474ed8dc004e406d960b09951ed0 100644 (file)
 #include <chrono>
 #include <iostream>
 #include <string>
+#include <optional>
 #include <sys/time.h>
 
-#include "include/ceph_assert.h"
-
 #if defined(__APPLE__)
 #include <sys/_types/_timespec.h>
 
 int clock_gettime(int clk_id, struct timespec *tp);
 #endif
 
+#ifdef _WIN32
+#define CLOCK_REALTIME_COARSE CLOCK_REALTIME
+#define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC
+// MINGW uses the QueryPerformanceCounter API behind the scenes.
+#endif
+
 struct ceph_timespec;
 
 namespace ceph {
-  namespace time_detail {
-    using std::chrono::duration_cast;
-    using std::chrono::seconds;
-    using std::chrono::microseconds;
-    using std::chrono::nanoseconds;
-    // Currently we use a 64-bit count of nanoseconds.
-
-    // We could, if we wished, use a struct holding a uint64_t count
-    // of seconds and a uint32_t count of nanoseconds.
-
-    // At least this way we can change it to something else if we
-    // want.
-    typedef uint64_t rep;
-
-    // A concrete duration, unsigned. The timespan Ceph thinks in.
-    typedef std::chrono::duration<rep, std::nano> timespan;
-
-
-    // Like the above but signed.
-    typedef int64_t signed_rep;
-
-    typedef std::chrono::duration<signed_rep, std::nano> signedspan;
-
-    // We define our own clocks so we can have our choice of all time
-    // sources supported by the operating system. With the standard
-    // library the resolution and cost are unspecified. (For example,
-    // the libc++ system_clock class gives only microsecond
-    // resolution.)
-
-    // One potential issue is that we should accept system_clock
-    // timepoints in user-facing APIs alongside (or instead of)
-    // ceph::real_clock times.
-    class real_clock {
-    public:
-      typedef timespan duration;
-      typedef duration::rep rep;
-      typedef duration::period period;
-      // The second template parameter defaults to the clock's duration
-      // type.
-      typedef std::chrono::time_point<real_clock> time_point;
-      static constexpr const bool is_steady = false;
-
-      static time_point now() noexcept {
-       struct timespec ts;
-       clock_gettime(CLOCK_REALTIME, &ts);
-       return from_timespec(ts);
-      }
-
-      static bool is_zero(const time_point& t) {
-       return (t == time_point::min());
-      }
-
-      static time_point zero() {
-        return time_point::min();
-      }
-
-      // Allow conversion to/from any clock with the same interface as
-      // std::chrono::system_clock)
-      template<typename Clock, typename Duration>
-      static time_point to_system_time_point(
-       const std::chrono::time_point<Clock, Duration>& t) {
-       return time_point(seconds(Clock::to_time_t(t)) +
-                         duration_cast<duration>(t.time_since_epoch() %
-                                                 seconds(1)));
-      }
-      template<typename Clock, typename Duration>
-      static std::chrono::time_point<Clock, Duration> to_system_time_point(
-       const time_point& t) {
-       return (Clock::from_time_t(to_time_t(t)) +
-               duration_cast<Duration>(t.time_since_epoch() % seconds(1)));
-      }
-
-      static time_t to_time_t(const time_point& t) noexcept {
-       return duration_cast<seconds>(t.time_since_epoch()).count();
-      }
-      static time_point from_time_t(const time_t& t) noexcept {
-       return time_point(seconds(t));
-      }
-
-      static void to_timespec(const time_point& t, struct timespec& ts) {
-       ts.tv_sec = to_time_t(t);
-       ts.tv_nsec = (t.time_since_epoch() % seconds(1)).count();
-      }
-      static struct timespec to_timespec(const time_point& t) {
-       struct timespec ts;
-       to_timespec(t, ts);
-       return ts;
-      }
-      static time_point from_timespec(const struct timespec& ts) {
-       return time_point(seconds(ts.tv_sec) + nanoseconds(ts.tv_nsec));
-      }
-
-      static void to_ceph_timespec(const time_point& t,
-                                  struct ceph_timespec& ts);
-      static struct ceph_timespec to_ceph_timespec(const time_point& t);
-      static time_point from_ceph_timespec(const struct ceph_timespec& ts);
-
-      static void to_timeval(const time_point& t, struct timeval& tv) {
-       tv.tv_sec = to_time_t(t);
-       tv.tv_usec = duration_cast<microseconds>(t.time_since_epoch() %
-                                                seconds(1)).count();
-      }
-      static struct timeval to_timeval(const time_point& t) {
-       struct timeval tv;
-       to_timeval(t, tv);
-       return tv;
-      }
-      static time_point from_timeval(const struct timeval& tv) {
-       return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec));
-      }
-
-      static double to_double(const time_point& t) {
-       return std::chrono::duration<double>(t.time_since_epoch()).count();
-      }
-      static time_point from_double(const double d) {
-       return time_point(duration_cast<duration>(
-                           std::chrono::duration<double>(d)));
-      }
-    };
-
-    class coarse_real_clock {
-    public:
-      typedef timespan duration;
-      typedef duration::rep rep;
-      typedef duration::period period;
-      // The second template parameter defaults to the clock's duration
-      // type.
-      typedef std::chrono::time_point<coarse_real_clock> time_point;
-      static constexpr const bool is_steady = false;
-
-      static time_point now() noexcept {
-       struct timespec ts;
+// Currently we use a 64-bit count of nanoseconds.
+
+// We could, if we wished, use a struct holding a uint64_t count
+// of seconds and a uint32_t count of nanoseconds.
+
+// At least this way we can change it to something else if we
+// want.
+typedef uint64_t rep;
+
+
+// duration is the concrete time representation for our code in the
+// case that we are only interested in durations between now and the
+// future. Using it means we don't have to have EVERY function that
+// deals with a duration be a template. We can do so for user-facing
+// APIs, however.
+typedef std::chrono::duration<rep, std::nano> timespan;
+
+
+// Like the above but signed.
+typedef int64_t signed_rep;
+
+// Similar to the above but for durations that can specify
+// differences between now and a time point in the past.
+typedef std::chrono::duration<signed_rep, std::nano> signedspan;
+
+// We define our own clocks so we can have our choice of all time
+// sources supported by the operating system. With the standard
+// library the resolution and cost are unspecified. (For example,
+// the libc++ system_clock class gives only microsecond
+// resolution.)
+
+// One potential issue is that we should accept system_clock
+// timepoints in user-facing APIs alongside (or instead of)
+// ceph::real_clock times.
+
+// High-resolution real-time clock
+class real_clock {
+public:
+  typedef timespan duration;
+  typedef duration::rep rep;
+  typedef duration::period period;
+  // The second template parameter defaults to the clock's duration
+  // type.
+  typedef std::chrono::time_point<real_clock> time_point;
+  static constexpr const bool is_steady = false;
+
+  static time_point now() noexcept {
+    struct timespec ts;
+    clock_gettime(CLOCK_REALTIME, &ts);
+    return from_timespec(ts);
+  }
+
+  static bool is_zero(const time_point& t) {
+    return (t == time_point::min());
+  }
+
+  static time_point zero() {
+    return time_point::min();
+  }
+
+  // Allow conversion to/from any clock with the same interface as
+  // std::chrono::system_clock)
+  template<typename Clock, typename Duration>
+  static time_point to_system_time_point(
+    const std::chrono::time_point<Clock, Duration>& t) {
+    return time_point(seconds(Clock::to_time_t(t)) +
+                     std::chrono::duration_cast<duration>(t.time_since_epoch() %
+                                                          std::chrono::seconds(1)));
+  }
+  template<typename Clock, typename Duration>
+  static std::chrono::time_point<Clock, Duration> to_system_time_point(
+    const time_point& t) {
+    return (Clock::from_time_t(to_time_t(t)) +
+           std::chrono::duration_cast<Duration>(t.time_since_epoch() %
+                                                std::chrono::seconds(1)));
+  }
+
+  static time_t to_time_t(const time_point& t) noexcept {
+    return std::chrono::duration_cast<std::chrono::seconds>(t.time_since_epoch()).count();
+  }
+  static time_point from_time_t(const time_t& t) noexcept {
+    return time_point(std::chrono::seconds(t));
+  }
+
+  static void to_timespec(const time_point& t, struct timespec& ts) {
+    ts.tv_sec = to_time_t(t);
+    ts.tv_nsec = (t.time_since_epoch() % std::chrono::seconds(1)).count();
+  }
+  static struct timespec to_timespec(const time_point& t) {
+    struct timespec ts;
+    to_timespec(t, ts);
+    return ts;
+  }
+  static time_point from_timespec(const struct timespec& ts) {
+    return time_point(std::chrono::seconds(ts.tv_sec) +
+                     std::chrono::nanoseconds(ts.tv_nsec));
+  }
+
+  static void to_ceph_timespec(const time_point& t,
+                              struct ceph_timespec& ts);
+  static struct ceph_timespec to_ceph_timespec(const time_point& t);
+  static time_point from_ceph_timespec(const struct ceph_timespec& ts);
+
+  static void to_timeval(const time_point& t, struct timeval& tv) {
+    tv.tv_sec = to_time_t(t);
+    tv.tv_usec = std::chrono::duration_cast<std::chrono::microseconds>(
+      t.time_since_epoch() % std::chrono::seconds(1)).count();
+  }
+  static struct timeval to_timeval(const time_point& t) {
+    struct timeval tv;
+    to_timeval(t, tv);
+    return tv;
+  }
+  static time_point from_timeval(const struct timeval& tv) {
+    return time_point(std::chrono::seconds(tv.tv_sec) +
+                     std::chrono::microseconds(tv.tv_usec));
+  }
+
+  static double to_double(const time_point& t) {
+    return std::chrono::duration<double>(t.time_since_epoch()).count();
+  }
+  static time_point from_double(const double d) {
+    return time_point(std::chrono::duration_cast<duration>(
+                       std::chrono::duration<double>(d)));
+  }
+};
+
+// Low-resolution but preusmably faster real-time clock
+class coarse_real_clock {
+public:
+  typedef timespan duration;
+  typedef duration::rep rep;
+  typedef duration::period period;
+  // The second template parameter defaults to the clock's duration
+  // type.
+  typedef std::chrono::time_point<coarse_real_clock> time_point;
+  static constexpr const bool is_steady = false;
+
+  static time_point now() noexcept {
+    struct timespec ts;
 #if defined(CLOCK_REALTIME_COARSE)
-       // Linux systems have _COARSE clocks.
-       clock_gettime(CLOCK_REALTIME_COARSE, &ts);
+    // Linux systems have _COARSE clocks.
+    clock_gettime(CLOCK_REALTIME_COARSE, &ts);
 #elif defined(CLOCK_REALTIME_FAST)
-       // BSD systems have _FAST clocks.
-       clock_gettime(CLOCK_REALTIME_FAST, &ts);
+    // BSD systems have _FAST clocks.
+    clock_gettime(CLOCK_REALTIME_FAST, &ts);
 #else
-       // And if we find neither, you may wish to consult your system's
-       // documentation.
+    // And if we find neither, you may wish to consult your system's
+    // documentation.
 #warning Falling back to CLOCK_REALTIME, may be slow.
-       clock_gettime(CLOCK_REALTIME, &ts);
+    clock_gettime(CLOCK_REALTIME, &ts);
 #endif
-       return from_timespec(ts);
-      }
-
-      static bool is_zero(const time_point& t) {
-       return (t == time_point::min());
-      }
-
-      static time_point zero() {
-       return time_point::min();
-      }
-
-      static time_t to_time_t(const time_point& t) noexcept {
-       return duration_cast<seconds>(t.time_since_epoch()).count();
-      }
-      static time_point from_time_t(const time_t t) noexcept {
-       return time_point(seconds(t));
-      }
-
-      static void to_timespec(const time_point& t, struct timespec& ts) {
-       ts.tv_sec = to_time_t(t);
-       ts.tv_nsec = (t.time_since_epoch() % seconds(1)).count();
-      }
-      static struct timespec to_timespec(const time_point& t) {
-       struct timespec ts;
-       to_timespec(t, ts);
-       return ts;
-      }
-      static time_point from_timespec(const struct timespec& ts) {
-       return time_point(seconds(ts.tv_sec) + nanoseconds(ts.tv_nsec));
-      }
-
-      static void to_ceph_timespec(const time_point& t,
-                                  struct ceph_timespec& ts);
-      static struct ceph_timespec to_ceph_timespec(const time_point& t);
-      static time_point from_ceph_timespec(const struct ceph_timespec& ts);
-
-      static void to_timeval(const time_point& t, struct timeval& tv) {
-       tv.tv_sec = to_time_t(t);
-       tv.tv_usec = duration_cast<microseconds>(t.time_since_epoch() %
-                                                seconds(1)).count();
-      }
-      static struct timeval to_timeval(const time_point& t) {
-       struct timeval tv;
-       to_timeval(t, tv);
-       return tv;
-      }
-      static time_point from_timeval(const struct timeval& tv) {
-       return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec));
-      }
-
-      static double to_double(const time_point& t) {
-       return std::chrono::duration<double>(t.time_since_epoch()).count();
-      }
-      static time_point from_double(const double d) {
-       return time_point(duration_cast<duration>(
-                           std::chrono::duration<double>(d)));
-      }
-    };
-
-    class mono_clock {
-    public:
-      typedef timespan duration;
-      typedef duration::rep rep;
-      typedef duration::period period;
-      typedef std::chrono::time_point<mono_clock> time_point;
-      static constexpr const bool is_steady = true;
-
-      static time_point now() noexcept {
-       struct timespec ts;
-       clock_gettime(CLOCK_MONOTONIC, &ts);
-       return time_point(seconds(ts.tv_sec) + nanoseconds(ts.tv_nsec));
-      }
-
-      static bool is_zero(const time_point& t) {
-        return (t == time_point::min());
-      }
-
-      static time_point zero() {
-        return time_point::min();
-      }
-
-      // A monotonic clock's timepoints are only meaningful to the
-      // computer on which they were generated. Thus having an
-      // optional skew is meaningless.
-    };
-
-    class coarse_mono_clock {
-    public:
-      typedef timespan duration;
-      typedef duration::rep rep;
-      typedef duration::period period;
-      typedef std::chrono::time_point<coarse_mono_clock> time_point;
-      static constexpr const bool is_steady = true;
-
-      static time_point now() noexcept {
-       struct timespec ts;
+    return from_timespec(ts);
+  }
+
+  static bool is_zero(const time_point& t) {
+    return (t == time_point::min());
+  }
+
+  static time_point zero() {
+    return time_point::min();
+  }
+
+  static time_t to_time_t(const time_point& t) noexcept {
+    return std::chrono::duration_cast<std::chrono::seconds>(
+      t.time_since_epoch()).count();
+  }
+  static time_point from_time_t(const time_t t) noexcept {
+    return time_point(std::chrono::seconds(t));
+  }
+
+  static void to_timespec(const time_point& t, struct timespec& ts) {
+    ts.tv_sec = to_time_t(t);
+    ts.tv_nsec = (t.time_since_epoch() % std::chrono::seconds(1)).count();
+  }
+  static struct timespec to_timespec(const time_point& t) {
+    struct timespec ts;
+    to_timespec(t, ts);
+    return ts;
+  }
+  static time_point from_timespec(const struct timespec& ts) {
+    return time_point(std::chrono::seconds(ts.tv_sec) +
+                     std::chrono::nanoseconds(ts.tv_nsec));
+  }
+
+  static void to_ceph_timespec(const time_point& t,
+                              struct ceph_timespec& ts);
+  static struct ceph_timespec to_ceph_timespec(const time_point& t);
+  static time_point from_ceph_timespec(const struct ceph_timespec& ts);
+
+  static void to_timeval(const time_point& t, struct timeval& tv) {
+    tv.tv_sec = to_time_t(t);
+    tv.tv_usec = std::chrono::duration_cast<std::chrono::microseconds>(
+      t.time_since_epoch() % std::chrono::seconds(1)).count();
+  }
+  static struct timeval to_timeval(const time_point& t) {
+    struct timeval tv;
+    to_timeval(t, tv);
+    return tv;
+  }
+  static time_point from_timeval(const struct timeval& tv) {
+    return time_point(std::chrono::seconds(tv.tv_sec) +
+                     std::chrono::microseconds(tv.tv_usec));
+  }
+
+  static double to_double(const time_point& t) {
+    return std::chrono::duration<double>(t.time_since_epoch()).count();
+  }
+  static time_point from_double(const double d) {
+    return time_point(std::chrono::duration_cast<duration>(
+                       std::chrono::duration<double>(d)));
+  }
+};
+
+// High-resolution monotonic clock
+class mono_clock {
+public:
+  typedef timespan duration;
+  typedef duration::rep rep;
+  typedef duration::period period;
+  typedef std::chrono::time_point<mono_clock> time_point;
+  static constexpr const bool is_steady = true;
+
+  static time_point now() noexcept {
+    struct timespec ts;
+    clock_gettime(CLOCK_MONOTONIC, &ts);
+    return time_point(std::chrono::seconds(ts.tv_sec) +
+                     std::chrono::nanoseconds(ts.tv_nsec));
+  }
+
+  static bool is_zero(const time_point& t) {
+    return (t == time_point::min());
+  }
+
+  static time_point zero() {
+    return time_point::min();
+  }
+};
+
+// Low-resolution but, I would hope or there's no point, faster
+// monotonic clock
+class coarse_mono_clock {
+public:
+  typedef timespan duration;
+  typedef duration::rep rep;
+  typedef duration::period period;
+  typedef std::chrono::time_point<coarse_mono_clock> time_point;
+  static constexpr const bool is_steady = true;
+
+  static time_point now() noexcept {
+    struct timespec ts;
 #if defined(CLOCK_MONOTONIC_COARSE)
-       // Linux systems have _COARSE clocks.
-       clock_gettime(CLOCK_MONOTONIC_COARSE, &ts);
+    // Linux systems have _COARSE clocks.
+    clock_gettime(CLOCK_MONOTONIC_COARSE, &ts);
 #elif defined(CLOCK_MONOTONIC_FAST)
-       // BSD systems have _FAST clocks.
-       clock_gettime(CLOCK_MONOTONIC_FAST, &ts);
+    // BSD systems have _FAST clocks.
+    clock_gettime(CLOCK_MONOTONIC_FAST, &ts);
 #else
-       // And if we find neither, you may wish to consult your system's
-       // documentation.
+    // And if we find neither, you may wish to consult your system's
+    // documentation.
 #warning Falling back to CLOCK_MONOTONIC, may be slow.
-       clock_gettime(CLOCK_MONOTONIC, &ts);
+    clock_gettime(CLOCK_MONOTONIC, &ts);
 #endif
-       return time_point(seconds(ts.tv_sec) + nanoseconds(ts.tv_nsec));
-      }
-
-      static bool is_zero(const time_point& t) {
-        return (t == time_point::min());
-      }
-
-      static time_point zero() {
-        return time_point::min();
-      }
-    };
-
-    // So that our subtractions produce negative spans rather than
-    // arithmetic underflow.
-    namespace {
-      template<typename Rep1, typename Period1, typename Rep2,
-              typename Period2>
-      inline auto difference(std::chrono::duration<Rep1, Period1> minuend,
-                            std::chrono::duration<Rep2, Period2> subtrahend)
-       -> typename std::common_type<
-         std::chrono::duration<typename std::make_signed<Rep1>::type,
-                               Period1>,
-         std::chrono::duration<typename std::make_signed<Rep2>::type,
-                               Period2> >::type {
-       // Foo.
-       using srep =
-         typename std::common_type<
-           std::chrono::duration<typename std::make_signed<Rep1>::type,
-                                 Period1>,
-           std::chrono::duration<typename std::make_signed<Rep2>::type,
-                                 Period2> >::type;
-       return srep(srep(minuend).count() - srep(subtrahend).count());
-      }
-
-      template<typename Clock, typename Duration1, typename Duration2>
-      inline auto difference(
-       typename std::chrono::time_point<Clock, Duration1> minuend,
-       typename std::chrono::time_point<Clock, Duration2> subtrahend)
-       -> typename std::common_type<
-         std::chrono::duration<typename std::make_signed<
-                                 typename Duration1::rep>::type,
-                               typename Duration1::period>,
-         std::chrono::duration<typename std::make_signed<
-                                 typename Duration2::rep>::type,
-                               typename Duration2::period> >::type {
-       return difference(minuend.time_since_epoch(),
-                         subtrahend.time_since_epoch());
-      }
-    }
-  } // namespace time_detail
-
-  // duration is the concrete time representation for our code in the
-  // case that we are only interested in durations between now and the
-  // future. Using it means we don't have to have EVERY function that
-  // deals with a duration be a template. We can do so for user-facing
-  // APIs, however.
-  using time_detail::timespan;
-
-  // Similar to the above but for durations that can specify
-  // differences between now and a time point in the past.
-  using time_detail::signedspan;
-
-  // High-resolution real-time clock
-  using time_detail::real_clock;
-
-  // Low-resolution but preusmably faster real-time clock
-  using time_detail::coarse_real_clock;
-
-
-  // High-resolution monotonic clock
-  using time_detail::mono_clock;
-
-  // Low-resolution but, I would hope or there's no point, faster
-  // monotonic clock
-  using time_detail::coarse_mono_clock;
-
-  // Please note that the coarse clocks are disjoint. You cannot
-  // subtract a real_clock timepoint from a coarse_real_clock
-  // timepoint as, from C++'s perspective, they are disjoint types.
-
-  // This is not necessarily bad. If I sample a mono_clock and then a
-  // coarse_mono_clock, the coarse_mono_clock's time could potentially
-  // be previous to the mono_clock's time (just due to differing
-  // resolution) which would be Incorrect.
-
-  // This is not horrible, though, since you can use an idiom like
-  // mono_clock::timepoint(coarsepoint.time_since_epoch()) to unwrap
-  // and rewrap if you know what you're doing.
-
-
-  // Actual wall-clock times
-  typedef real_clock::time_point real_time;
-  typedef coarse_real_clock::time_point coarse_real_time;
-
-  // Monotonic times should never be serialized or communicated
-  // between machines, since they are incomparable. Thus we also don't
-  // make any provision for converting between
-  // std::chrono::steady_clock time and ceph::mono_clock time.
-  typedef mono_clock::time_point mono_time;
-  typedef coarse_mono_clock::time_point coarse_mono_time;
-
-  template<typename Rep1, typename Ratio1, typename Rep2, typename Ratio2>
-  auto floor(const std::chrono::duration<Rep1, Ratio1>& duration,
-            const std::chrono::duration<Rep2, Ratio2>& precision) ->
-    typename std::common_type<std::chrono::duration<Rep1, Ratio1>,
-                             std::chrono::duration<Rep2, Ratio2> >::type {
-    return duration - (duration % precision);
-  }
-
-  template<typename Rep1, typename Ratio1, typename Rep2, typename Ratio2>
-  auto ceil(const std::chrono::duration<Rep1, Ratio1>& duration,
-           const std::chrono::duration<Rep2, Ratio2>& precision) ->
-    typename std::common_type<std::chrono::duration<Rep1, Ratio1>,
-                             std::chrono::duration<Rep2, Ratio2> >::type {
-    auto tmod = duration % precision;
-    return duration - tmod + (tmod > tmod.zero() ? 1 : 0) * precision;
-  }
-
-  template<typename Clock, typename Duration, typename Rep, typename Ratio>
-  auto floor(const std::chrono::time_point<Clock, Duration>& timepoint,
-            const std::chrono::duration<Rep, Ratio>& precision) ->
-    std::chrono::time_point<Clock,
-                           typename std::common_type<
-                             Duration, std::chrono::duration<Rep, Ratio>
-                             >::type> {
-    return std::chrono::time_point<
-      Clock, typename std::common_type<
-       Duration, std::chrono::duration<Rep, Ratio> >::type>(
-         floor(timepoint.time_since_epoch(), precision));
-  }
-  template<typename Clock, typename Duration, typename Rep, typename Ratio>
-  auto ceil(const std::chrono::time_point<Clock, Duration>& timepoint,
-           const std::chrono::duration<Rep, Ratio>& precision) ->
-    std::chrono::time_point<Clock,
-                           typename std::common_type<
-                             Duration,
-                             std::chrono::duration<Rep, Ratio> >::type> {
-    return std::chrono::time_point<
-      Clock, typename std::common_type<
-       Duration, std::chrono::duration<Rep, Ratio> >::type>(
-         ceil(timepoint.time_since_epoch(), precision));
-  }
-
-  namespace {
-    inline timespan make_timespan(const double d) {
-      return std::chrono::duration_cast<timespan>(
-       std::chrono::duration<double>(d));
-    }
-  }
-
-  std::ostream& operator<<(std::ostream& m, const timespan& t);
-  template<typename Clock,
-          typename std::enable_if<!Clock::is_steady>::type* = nullptr>
-  std::ostream& operator<<(std::ostream& m,
-                          const std::chrono::time_point<Clock>& t);
-  template<typename Clock,
-          typename std::enable_if<Clock::is_steady>::type* = nullptr>
-  std::ostream& operator<<(std::ostream& m,
-                          const std::chrono::time_point<Clock>& t);
-
-  // The way std::chrono handles the return type of subtraction is not
-  // wonderful. The difference of two unsigned types SHOULD be signed.
-
-  namespace {
-    inline signedspan operator -(real_time minuend,
-                                real_time subtrahend) {
-      return time_detail::difference(minuend, subtrahend);
-    }
-
-    inline signedspan operator -(coarse_real_time minuend,
-                                coarse_real_time subtrahend) {
-      return time_detail::difference(minuend, subtrahend);
-    }
-
-    inline signedspan operator -(mono_time minuend,
-                                mono_time subtrahend) {
-      return time_detail::difference(minuend, subtrahend);
-    }
-
-    inline signedspan operator -(coarse_mono_time minuend,
-                                coarse_mono_time subtrahend) {
-      return time_detail::difference(minuend, subtrahend);
-    }
-  }
-
-  // We could add specializations of time_point - duration and
-  // time_point + duration to assert on overflow, but I don't think we
-  // should.
+    return time_point(std::chrono::seconds(ts.tv_sec) +
+                     std::chrono::nanoseconds(ts.tv_nsec));
+  }
+
+  static bool is_zero(const time_point& t) {
+    return (t == time_point::min());
+  }
+
+  static time_point zero() {
+    return time_point::min();
+  }
+};
+
+namespace time_detail {
+// So that our subtractions produce negative spans rather than
+// arithmetic underflow.
+template<typename Rep1, typename Period1, typename Rep2,
+        typename Period2>
+inline auto difference(std::chrono::duration<Rep1, Period1> minuend,
+                      std::chrono::duration<Rep2, Period2> subtrahend)
+  -> typename std::common_type<
+  std::chrono::duration<typename std::make_signed<Rep1>::type,
+                       Period1>,
+  std::chrono::duration<typename std::make_signed<Rep2>::type,
+                       Period2> >::type {
+  // Foo.
+  using srep =
+    typename std::common_type<
+      std::chrono::duration<typename std::make_signed<Rep1>::type,
+                           Period1>,
+    std::chrono::duration<typename std::make_signed<Rep2>::type,
+                         Period2> >::type;
+  return srep(srep(minuend).count() - srep(subtrahend).count());
+}
+
+template<typename Clock, typename Duration1, typename Duration2>
+inline auto difference(
+  typename std::chrono::time_point<Clock, Duration1> minuend,
+  typename std::chrono::time_point<Clock, Duration2> subtrahend)
+  -> typename std::common_type<
+  std::chrono::duration<typename std::make_signed<
+                         typename Duration1::rep>::type,
+                       typename Duration1::period>,
+  std::chrono::duration<typename std::make_signed<
+                         typename Duration2::rep>::type,
+                       typename Duration2::period> >::type {
+  return difference(minuend.time_since_epoch(),
+                   subtrahend.time_since_epoch());
+}
+}
+
+// Please note that the coarse clocks are disjoint. You cannot
+// subtract a real_clock timepoint from a coarse_real_clock
+// timepoint as, from C++'s perspective, they are disjoint types.
+
+// This is not necessarily bad. If I sample a mono_clock and then a
+// coarse_mono_clock, the coarse_mono_clock's time could potentially
+// be previous to the mono_clock's time (just due to differing
+// resolution) which would be Incorrect.
+
+// This is not horrible, though, since you can use an idiom like
+// mono_clock::timepoint(coarsepoint.time_since_epoch()) to unwrap
+// and rewrap if you know what you're doing.
+
+
+// Actual wall-clock times
+typedef real_clock::time_point real_time;
+typedef coarse_real_clock::time_point coarse_real_time;
+
+// Monotonic times should never be serialized or communicated
+// between machines, since they are incomparable. Thus we also don't
+// make any provision for converting between
+// std::chrono::steady_clock time and ceph::mono_clock time.
+typedef mono_clock::time_point mono_time;
+typedef coarse_mono_clock::time_point coarse_mono_time;
+
+template<typename Rep1, typename Ratio1, typename Rep2, typename Ratio2>
+auto floor(const std::chrono::duration<Rep1, Ratio1>& duration,
+          const std::chrono::duration<Rep2, Ratio2>& precision) ->
+  typename std::common_type<std::chrono::duration<Rep1, Ratio1>,
+                           std::chrono::duration<Rep2, Ratio2> >::type {
+  return duration - (duration % precision);
+}
+
+template<typename Rep1, typename Ratio1, typename Rep2, typename Ratio2>
+auto ceil(const std::chrono::duration<Rep1, Ratio1>& duration,
+         const std::chrono::duration<Rep2, Ratio2>& precision) ->
+  typename std::common_type<std::chrono::duration<Rep1, Ratio1>,
+                           std::chrono::duration<Rep2, Ratio2> >::type {
+  auto tmod = duration % precision;
+  return duration - tmod + (tmod > tmod.zero() ? 1 : 0) * precision;
+}
+
+template<typename Clock, typename Duration, typename Rep, typename Ratio>
+auto floor(const std::chrono::time_point<Clock, Duration>& timepoint,
+          const std::chrono::duration<Rep, Ratio>& precision) ->
+  std::chrono::time_point<Clock,
+                         typename std::common_type<
+                           Duration, std::chrono::duration<Rep, Ratio>
+                           >::type> {
+  return std::chrono::time_point<
+    Clock, typename std::common_type<
+      Duration, std::chrono::duration<Rep, Ratio> >::type>(
+       floor(timepoint.time_since_epoch(), precision));
+}
+template<typename Clock, typename Duration, typename Rep, typename Ratio>
+auto ceil(const std::chrono::time_point<Clock, Duration>& timepoint,
+         const std::chrono::duration<Rep, Ratio>& precision) ->
+  std::chrono::time_point<Clock,
+                         typename std::common_type<
+                           Duration,
+                           std::chrono::duration<Rep, Ratio> >::type> {
+  return std::chrono::time_point<
+    Clock, typename std::common_type<
+      Duration, std::chrono::duration<Rep, Ratio> >::type>(
+       ceil(timepoint.time_since_epoch(), precision));
+}
+
+inline timespan make_timespan(const double d) {
+  return std::chrono::duration_cast<timespan>(
+    std::chrono::duration<double>(d));
+}
+inline std::optional<timespan> maybe_timespan(const double d) {
+  return d ? std::make_optional(make_timespan(d)) : std::nullopt;
+}
+
+template<typename Clock,
+        typename std::enable_if<!Clock::is_steady>::type* = nullptr>
+std::ostream& operator<<(std::ostream& m,
+                        const std::chrono::time_point<Clock>& t);
+template<typename Clock,
+        typename std::enable_if<Clock::is_steady>::type* = nullptr>
+std::ostream& operator<<(std::ostream& m,
+                        const std::chrono::time_point<Clock>& t);
+
+// The way std::chrono handles the return type of subtraction is not
+// wonderful. The difference of two unsigned types SHOULD be signed.
+
+inline signedspan operator -(real_time minuend,
+                            real_time subtrahend) {
+  return time_detail::difference(minuend, subtrahend);
+}
+
+inline signedspan operator -(coarse_real_time minuend,
+                            coarse_real_time subtrahend) {
+  return time_detail::difference(minuend, subtrahend);
+}
 
+inline signedspan operator -(mono_time minuend,
+                            mono_time subtrahend) {
+  return time_detail::difference(minuend, subtrahend);
+}
+
+inline signedspan operator -(coarse_mono_time minuend,
+                            coarse_mono_time subtrahend) {
+  return time_detail::difference(minuend, subtrahend);
+}
 
+// We could add specializations of time_point - duration and
+// time_point + duration to assert on overflow, but I don't think we
+// should.
 inline timespan abs(signedspan z) {
   return z > signedspan::zero() ?
     std::chrono::duration_cast<timespan>(z) :
@@ -508,8 +495,8 @@ struct converts_to_timespec : std::false_type {};
 
 template <typename Clock>
 struct converts_to_timespec<Clock, std::void_t<decltype(
-    Clock::from_timespec(Clock::to_timespec(
-        std::declval<typename Clock::time_point>()))
+  Clock::from_timespec(Clock::to_timespec(
+                        std::declval<typename Clock::time_point>()))
   )>> : std::true_type {};
 
 template <typename Clock>
@@ -531,4 +518,9 @@ static Rep to_microseconds(T t) {
 
 } // namespace ceph
 
+namespace std {
+template<typename Rep, typename Period>
+ostream& operator<<(ostream& m, const chrono::duration<Rep, Period>& t);
+}
+
 #endif // COMMON_CEPH_TIME_H
index 2383fc95d7a3b48307896e6b720b11de0f45f472..b105c80ccd5376dca4a62f0958b45136968ae71c 100644 (file)
@@ -139,15 +139,15 @@ namespace cohort {
        for (int ix = 0; ix < n_lanes; ++ix,
               lane_ix = next_evict_lane()) {
          Lane& lane = qlane[lane_ix];
-         lane.lock.lock();
+         std::unique_lock lane_lock{lane.lock};
          /* if object at LRU has refcnt==1, it may be reclaimable */
          Object* o = &(lane.q.back());
          if (can_reclaim(o)) {
            ++(o->lru_refcnt);
            o->lru_flags |= FLAG_EVICTING;
-           lane.lock.unlock();
+           lane_lock.unlock();
            if (o->reclaim(newobj_fac)) {
-             lane.lock.lock();
+             lane_lock.lock();
              --(o->lru_refcnt);
              /* assertions that o state has not changed across
               * relock */
@@ -156,16 +156,13 @@ namespace cohort {
              Object::Queue::iterator it =
                Object::Queue::s_iterator_to(*o);
              lane.q.erase(it);
-             lane.lock.unlock();
              return o;
            } else {
-             // XXX can't make unreachable (means what?)
              --(o->lru_refcnt);
              o->lru_flags &= ~FLAG_EVICTING;
              /* unlock in next block */
            }
          } /* can_reclaim(o) */
-         lane.lock.unlock();
        } /* each lane */
        return nullptr;
       } /* evict_block */
index 29cfd4b4737f4d0b892837084f48e34f3a157697..ac18b713907de577e4c47212c0edd972a9e47571 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "iso_8601.h"
 #include "include/timegm.h"
+#include "include/ceph_assert.h"
 
 namespace ceph {
 using std::chrono::duration_cast;
index 832af68a8ef477dbccb6ec4153404faaea43f0e5..b115363860654117952aac2a993bde388a9f05cd 100644 (file)
@@ -536,6 +536,9 @@ OPTION(osd_agent_min_evict_effort, OPT_FLOAT)
 OPTION(osd_agent_quantize_effort, OPT_FLOAT)
 OPTION(osd_agent_delay_time, OPT_FLOAT)
 
+// Allow OSD daemon to send an aggregated slow ops to the cluster log
+OPTION(osd_aggregated_slow_ops_logging, OPT_BOOL)
+
 // osd ignore history.last_epoch_started in find_best_info
 OPTION(osd_find_best_info_ignore_history_les, OPT_BOOL)
 
index d2cd2cafc6a33df63af422455b10da13789e18c4..024f505cc442eadd1f0cd65c87710b6e3b4a924e 100644 (file)
@@ -2527,6 +2527,11 @@ std::vector<Option> get_global_options() {
     .set_default(.02)
     .set_description("slop factor to avoid switching tiering flush and eviction mode"),
 
+    Option("osd_aggregated_slow_ops_logging", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(true)
+    .set_description("Allow OSD daemon to send an aggregated slow ops to the cluster log")
+    .set_long_description("If set to ``true``, the OSD daemon will send slow ops information in an aggregated format to the cluster log else sends every slow op to the cluster log."),
+
     Option("osd_uuid", Option::TYPE_UUID, Option::LEVEL_ADVANCED)
     .set_default(uuid_d())
     .set_flag(Option::FLAG_CREATE)
@@ -3093,6 +3098,7 @@ std::vector<Option> get_global_options() {
 
     Option("osd_pg_max_concurrent_snap_trims", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
     .set_default(2)
+    .set_min(1)
     .set_description(""),
 
     Option("osd_max_trimming_pgs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
@@ -3600,7 +3606,7 @@ std::vector<Option> get_global_options() {
     .set_long_description("Setting this to false makes the OSD do a slower teardown of all state when it receives a SIGINT or SIGTERM or when shutting down for any other reason.  That slow shutdown is primarilyy useful for doing memory leak checking with valgrind."),
 
     Option("osd_fast_shutdown_notify_mon", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
-    .set_default(false)
+    .set_default(true)
     .set_description("Tell mon about OSD shutdown on immediate shutdown")
     .set_long_description("Tell the monitor the OSD is shutting down on immediate shutdown. This helps with cluster log messages from other OSDs reporting it immediately failed.")
     .add_see_also({"osd_fast_shutdown", "osd_mon_shutdown_timeout"}),
@@ -5270,6 +5276,11 @@ std::vector<Option> get_global_options() {
     .add_service("mgr")
     .set_description("Path to cephadm utility"),
 
+    Option("mgr_max_pg_num_change", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
+    .set_default(128)
+    .add_service("mgr")
+    .set_description("maximum change in pg_num"),
+
     Option("mgr_module_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default(CEPH_DATADIR "/mgr")
     .add_service("mgr")
@@ -5718,7 +5729,12 @@ std::vector<Option> get_rgw_options() {
 
     Option("rgw_lc_debug_interval", Option::TYPE_INT, Option::LEVEL_DEV)
     .set_default(-1)
-    .set_description(""),
+    .set_description("The number of seconds that simulate one \"day\" in order to debug RGW LifeCycle. "
+                     "Do *not* modify for a production cluster.")
+    .set_long_description("For debugging RGW LifeCycle, the number of seconds that are equivalent to "
+                          "one simulated \"day\". Values less than 1 are ignored and do not change LifeCycle behavior. "
+                          "For example, during debugging if one wanted every 10 minutes to be equivalent to one day, "
+                          "then this would be set to 600, the number of seconds in 10 minutes."),
 
     Option("rgw_mp_lock_max_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
     .set_default(600)
@@ -7430,7 +7446,7 @@ static std::vector<Option> get_rbd_options() {
     .set_description("time-delay in seconds for rbd-mirror asynchronous replication"),
 
     Option("rbd_mirroring_max_mirroring_snapshots", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
-    .set_default(3)
+    .set_default(5)
     .set_min(3)
     .set_description("mirroring snapshots limit"),
 
@@ -8135,7 +8151,7 @@ std::vector<Option> get_mds_options() {
     .set_description("rate of decay for export targets communicated to clients"),
 
     Option("mds_oft_prefetch_dirfrags", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
-    .set_default(true)
+    .set_default(false)
     .set_description("prefetch dirfrags recorded in open file table on startup")
     .set_flag(Option::FLAG_STARTUP),
 
index 04b51ddec9185508843d3530d6ae585cfa7c44b7..45a5df8228999d3d1deed6e9451fc30cdf84abe2 100644 (file)
@@ -14,30 +14,31 @@ matrix:
       install: ./ci/install-platformio.sh
       script: ./ci/build-platformio.sh
     - os: linux
-      dist: xenial
+      dist: bionic
       compiler: gcc
       install: ./ci/install-linux.sh && ./ci/log-config.sh
       script: ./ci/build-linux-bazel.sh
     - os: linux
-      dist: xenial
+      dist: bionic
       compiler: clang
       install: ./ci/install-linux.sh && ./ci/log-config.sh
       script: ./ci/build-linux-bazel.sh
     - os: linux
+      dist: bionic
       compiler: gcc
-      env: BUILD_TYPE=Debug VERBOSE=1 CXX_FLAGS=-std=c++11
+      env: BUILD_TYPE=Debug CXX_FLAGS="-std=c++11 -Wdeprecated"
     - os: linux
+      dist: bionic
       compiler: clang
-      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 -Wgnu-zero-variadic-macro-arguments
-    - os: linux
-      compiler: clang
-      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 NO_EXCEPTION=ON NO_RTTI=ON COMPILER_IS_GNUCXX=ON
+      env: BUILD_TYPE=Release CXX_FLAGS="-std=c++11 -Wdeprecated" NO_EXCEPTION=ON NO_RTTI=ON COMPILER_IS_GNUCXX=ON
     - os: osx
+      osx_image: xcode12.2
       compiler: gcc
-      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 HOMEBREW_LOGS=~/homebrew-logs HOMEBREW_TEMP=~/homebrew-temp
+      env: BUILD_TYPE=Release CC=gcc-10 CXX=g++-10 CXX_FLAGS="-std=c++11 -Wdeprecated" HOMEBREW_LOGS=~/homebrew-logs HOMEBREW_TEMP=~/homebrew-temp
     - os: osx
+      osx_image: xcode12.2
       compiler: clang
-      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 HOMEBREW_LOGS=~/homebrew-logs HOMEBREW_TEMP=~/homebrew-temp
+      env: BUILD_TYPE=Release CXX_FLAGS="-std=c++11 -Wdeprecated" HOMEBREW_LOGS=~/homebrew-logs HOMEBREW_TEMP=~/homebrew-temp
 
 # These are the install and build (script) phases for the most common entries in the matrix.  They could be included
 # in each entry in the matrix, but that is just repetitive.
@@ -51,22 +52,13 @@ script: ./ci/travis.sh
 # This section installs the necessary dependencies.
 addons:
   apt:
-    # List of whitelisted in travis packages for ubuntu-precise can be found here:
-    #   https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
-    # List of whitelisted in travis apt-sources:
-    #   https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
-    sources:
-    - ubuntu-toolchain-r-test
-    - llvm-toolchain-precise-3.9
     packages:
-    - g++-4.9
-    - clang-3.9
+    - g++
+    - clang
     update: true
   homebrew:
     packages:
-    - ccache
-    - gcc@4.9
-    - llvm@4
+    - gcc@10
     update: true
 
 notifications:
index 9b48aee530811e6744bf40eea40cb48312110847..8099642a85847cd2882d7af0d645d4293b6f3edd 100644 (file)
@@ -36,6 +36,8 @@ package(default_visibility = ["//visibility:public"])
 
 licenses(["notice"])
 
+exports_files(["LICENSE"])
+
 config_setting(
     name = "windows",
     constraint_values = ["@bazel_tools//platforms:windows"],
@@ -103,6 +105,7 @@ cc_library(
             "@com_google_absl//absl/debugging:stacktrace",
             "@com_google_absl//absl/debugging:symbolize",
             "@com_google_absl//absl/strings",
+            "@com_google_absl//absl/types:any",
             "@com_google_absl//absl/types:optional",
             "@com_google_absl//absl/types:variant",
         ],
index 755b8b72b56df34115a4f11bfa829251cc603aa6..12fd7450d01e9d4ead650e51491a78f23b28475b 100644 (file)
@@ -1,7 +1,7 @@
 # Note: CMake support is community-based. The maintainers do not use CMake
 # internally.
 
-cmake_minimum_required(VERSION 2.8.8)
+cmake_minimum_required(VERSION 2.8.12)
 
 if (POLICY CMP0048)
   cmake_policy(SET CMP0048 NEW)
@@ -10,12 +10,8 @@ endif (POLICY CMP0048)
 project(googletest-distribution)
 set(GOOGLETEST_VERSION 1.10.0)
 
-if (CMAKE_VERSION VERSION_LESS "3.1")
-  add_definitions(-std=c++11)
-else()
-  set(CMAKE_CXX_STANDARD 11)
-  set(CMAKE_CXX_STANDARD_REQUIRED ON)
-  if(NOT CYGWIN AND NOT MSYS)
+if (CMAKE_VERSION VERSION_GREATER "3.0.2")
+  if(NOT CYGWIN AND NOT MSYS AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL QNX)
     set(CMAKE_CXX_EXTENSIONS OFF)
   endif()
 endif()
index bd1843eb48e3f2d0815d7dd427af49743bdaf451..2f653c828e540b5347031773a591631880880a56 100644 (file)
@@ -28,7 +28,7 @@ PR is acceptable as an alternative.
 ## Contributing A Patch
 
 1.  Submit an issue describing your proposed change to the
-    [issue tracker](https://github.com/google/googletest).
+    [issue tracker](https://github.com/google/googletest/issues).
 2.  Please don't mix more than one logical change per submittal, because it
     makes the history hard to follow. If you want to make a change that doesn't
     have a corresponding issue in the issue tracker, please create one.
@@ -89,7 +89,7 @@ and their own tests from a git checkout, which has further requirements:
 
 *   [Python](https://www.python.org/) v2.3 or newer (for running some of the
     tests and re-generating certain source files from templates)
-*   [CMake](https://cmake.org/) v2.6.4 or newer
+*   [CMake](https://cmake.org/) v2.8.12 or newer
 
 ## Developing Google Test and Google Mock
 
index e332e9a216c438c35dff3c6b3429bb2bdda5be3c..b7f54a3a907260364d61b6211b846e590541eb62 100644 (file)
@@ -1,11 +1,11 @@
-# Google Test
+# GoogleTest
 
-#### OSS Builds Status:
+#### OSS Builds Status
 
 [![Build Status](https://api.travis-ci.org/google/googletest.svg?branch=master)](https://travis-ci.org/google/googletest)
 [![Build status](https://ci.appveyor.com/api/projects/status/4o38plt0xbo1ubc8/branch/master?svg=true)](https://ci.appveyor.com/project/GoogleTestAppVeyor/googletest/branch/master)
 
-### Announcements:
+### Announcements
 
 #### Release 1.10.x
 
@@ -19,22 +19,19 @@ is now available.
 *   We are also planning to take a dependency on
     [Abseil](https://github.com/abseil/abseil-cpp).
 
-## Welcome to **Google Test**, Google's C++ test framework!
+## Welcome to **GoogleTest**, Google's C++ test framework!
 
 This repository is a merger of the formerly separate GoogleTest and GoogleMock
 projects. These were so closely related that it makes sense to maintain and
 release them together.
 
-Please subscribe to the mailing list at googletestframework@googlegroups.com for
-questions, discussions, and development.
+### Getting Started
 
-### Getting started:
+The information for **GoogleTest** is available in the
+[GoogleTest Primer](googletest/docs/primer.md) documentation.
 
-The information for **Google Test** is available in the
-[Google Test Primer](googletest/docs/primer.md) documentation.
-
-**Google Mock** is an extension to Google Test for writing and using C++ mock
-classes. See the separate [Google Mock documentation](googlemock/README.md).
+**GoogleMock** is an extension to GoogleTest for writing and using C++ mock
+classes. See the separate [GoogleMock documentation](googlemock/README.md).
 
 More detailed documentation for googletest is in its interior
 [googletest/README.md](googletest/README.md) file.
@@ -52,22 +49,45 @@ More detailed documentation for googletest is in its interior
 *   Various options for running the tests.
 *   XML test report generation.
 
-## Platforms
+## Supported Platforms
+
+GoogleTest requires a codebase and compiler compliant with the C++11 standard or
+newer.
+
+The GoogleTest code is officially supported on the following platforms.
+Operating systems or tools not listed below are community-supported. For
+community-supported platforms, patches that do not complicate the code may be
+considered.
+
+If you notice any problems on your platform, please file an issue on the
+[GoogleTest GitHub Issue Tracker](https://github.com/google/googletest/issues).
+Pull requests containing fixes are welcome!
 
-Google test has been used on a variety of platforms:
+### Operating Systems
 
 *   Linux
-*   Mac OS X
+*   macOS
 *   Windows
-*   Cygwin
-*   MinGW
-*   Windows Mobile
-*   Symbian
-*   PlatformIO
 
-## Who Is Using Google Test?
+### Compilers
+
+*   gcc 5.0+
+*   clang 5.0+
+*   MSVC 2015+
+
+**macOS users:** Xcode 9.3+ provides clang 5.0+.
+
+### Build Systems
+
+*   [Bazel](https://bazel.build/)
+*   [CMake](https://cmake.org/)
 
-In addition to many internal projects at Google, Google Test is also used by the
+**Note:** Bazel is the build system used by the team internally and in tests.
+CMake is supported on a best-effort basis and by the community.
+
+## Who Is Using GoogleTest?
+
+In addition to many internal projects at Google, GoogleTest is also used by the
 following notable projects:
 
 *   The [Chromium projects](http://www.chromium.org/) (behind the Chrome browser
@@ -76,8 +96,6 @@ following notable projects:
 *   [Protocol Buffers](https://github.com/google/protobuf), Google's data
     interchange format.
 *   The [OpenCV](http://opencv.org/) computer vision library.
-*   [tiny-dnn](https://github.com/tiny-dnn/tiny-dnn): header only,
-    dependency-free deep learning framework in C++11.
 
 ## Related Open Source Projects
 
@@ -85,13 +103,13 @@ following notable projects:
 automated test-runner and Graphical User Interface with powerful features for
 Windows and Linux platforms.
 
-[Google Test UI](https://github.com/ospector/gtest-gbar) is test runner that
+[GoogleTest UI](https://github.com/ospector/gtest-gbar) is a test runner that
 runs your test binary, allows you to track its progress via a progress bar, and
 displays a list of test failures. Clicking on one shows failure text. Google
 Test UI is written in C#.
 
 [GTest TAP Listener](https://github.com/kinow/gtest-tap-listener) is an event
-listener for Google Test that implements the
+listener for GoogleTest that implements the
 [TAP protocol](https://en.wikipedia.org/wiki/Test_Anything_Protocol) for test
 result output. If your test runner understands TAP, you may find it useful.
 
@@ -99,38 +117,19 @@ result output. If your test runner understands TAP, you may find it useful.
 runs tests from your binary in parallel to provide significant speed-up.
 
 [GoogleTest Adapter](https://marketplace.visualstudio.com/items?itemName=DavidSchuldenfrei.gtest-adapter)
-is a VS Code extension allowing to view Google Tests in a tree view, and
-run/debug your tests.
+is a VS Code extension allowing to view GoogleTest in a tree view, and run/debug
+your tests.
 
-[Catch2 and Google Test Explorer](https://github.com/matepek/vscode-catch2-test-adapter)
-is a VS Code extension allowing to view Google Tests in a tree view, and
-run/debug your tests.
+[C++ TestMate](https://github.com/matepek/vscode-catch2-test-adapter) is a VS
+Code extension allowing to view GoogleTest in a tree view, and run/debug your
+tests.
 
 [Cornichon](https://pypi.org/project/cornichon/) is a small Gherkin DSL parser
-that generates stub code for Google Test.
-
-## Requirements
-
-Google Test is designed to have fairly minimal requirements to build and use
-with your projects, but there are some. If you notice any problems on your
-platform, please notify
-[googletestframework@googlegroups.com](https://groups.google.com/forum/#!forum/googletestframework).
-Patches for fixing them are welcome!
-
-### Build Requirements
-
-These are the base requirements to build and use Google Test from a source
-package:
-
-*   [Bazel](https://bazel.build/) or [CMake](https://cmake.org/). NOTE: Bazel is
-    the build system that googletest is using internally and tests against.
-    CMake is community-supported.
-
-*   a C++11-standard-compliant compiler
+that generates stub code for GoogleTest.
 
-## Contributing change
+## Contributing Changes
 
-Please read the [`CONTRIBUTING.md`](CONTRIBUTING.md) for details on how to
+Please read [`CONTRIBUTING.md`](CONTRIBUTING.md) for details on how to
 contribute to this project.
 
 Happy testing!
index 2289bdb7e8f09335055c864fe3f013d786c04d32..1f05d21a0db95f3643c58076b572c8ec3b3923c8 100644 (file)
@@ -2,22 +2,29 @@ workspace(name = "com_google_googletest")
 
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
-# Abseil
 http_archive(
-     name = "com_google_absl",
-     urls = ["https://github.com/abseil/abseil-cpp/archive/master.zip"],
-     strip_prefix = "abseil-cpp-master",
+    name = "com_google_absl",  # 2020-10-13T16:49:13Z
+    urls = [
+        "https://github.com/abseil/abseil-cpp/archive/f3f785ab59478dd0312bf1b5df65d380650bf0dc.zip"
+    ],
+    strip_prefix = "abseil-cpp-f3f785ab59478dd0312bf1b5df65d380650bf0dc",
+    sha256 = "00c3707bf9cd5eabd1ec6932cc65b97378c043f22573be3adf7d11bb7af17d06",
 )
 
 http_archive(
-    name = "rules_cc",
-    strip_prefix = "rules_cc-master",
-    urls = ["https://github.com/bazelbuild/rules_cc/archive/master.zip"],
+    name = "rules_cc",  # 2020-10-05T06:01:24Z
+    urls = [
+        "https://github.com/bazelbuild/rules_cc/archive/f055da4ff0cb2b3c73de1fe2f094ebdfb8b3acb9.zip"
+    ],
+    strip_prefix = "rules_cc-f055da4ff0cb2b3c73de1fe2f094ebdfb8b3acb9",
+    sha256 = "35ea62c63cd71d4000efe85f9f4f17e8afb23896c37ee9510952db2e9d8fbb70",
 )
 
 http_archive(
-    name = "rules_python",
-    strip_prefix = "rules_python-master",
-    urls = ["https://github.com/bazelbuild/rules_python/archive/master.zip"],
+    name = "rules_python",  # 2020-09-30T13:50:21Z
+    urls = [
+        "https://github.com/bazelbuild/rules_python/archive/c064f7008a30f307ea7516cf52358a653011f82b.zip",
+    ],
+    strip_prefix = "rules_python-c064f7008a30f307ea7516cf52358a653011f82b",
+    sha256 = "6e49996ad3cf45b2232b8f94ca1e3ead369c28394c51632be8d85fe826383012",
 )
-
index ec155a76ad30ffd33c5c50b9a3002245840492c6..5c419c32f91a974bd7db91c4b67b13512e2d0c27 100644 (file)
@@ -60,7 +60,7 @@ install:
 
     # install Bazel
     if ($env:build_system -eq "bazel") {
-        appveyor DownloadFile https://github.com/bazelbuild/bazel/releases/download/0.28.1/bazel-0.28.1-windows-x86_64.exe -FileName bazel.exe
+        appveyor DownloadFile https://github.com/bazelbuild/bazel/releases/download/3.6.0/bazel-3.6.0-windows-x86_64.exe -FileName bazel.exe
     }
 
     if ($env:build_system -eq "cmake") {
index ae8fb75816f99be89c0171fb5b287149f52c19be..cfb06a9e0adc66d550603804640298fca2eeb46b 100755 (executable)
@@ -32,6 +32,5 @@
 set -e
 
 bazel version
-bazel build --curses=no //...:all
 bazel test --curses=no //...:all
 bazel test --curses=no //...:all --define absl=1
index 37800d6a355c507101fa10e6efbb670b0c1dfeb4..7d2b8a8c5ca64766830bdc54f3cf700c0c8c3710 100755 (executable)
@@ -36,6 +36,6 @@
 # TODO() - we can check if this is being sourced using $BASH_VERSION and $BASH_SOURCE[0] != ${0}.
 
 if [ "${TRAVIS_OS_NAME}" = "linux" ]; then
-    if [ "$CXX" = "g++" ]; then export CXX="g++-4.9" CC="gcc-4.9"; fi
-    if [ "$CXX" = "clang++" ]; then export CXX="clang++-3.9" CC="clang-3.9"; fi
+    if [ "$CXX" = "g++" ]; then export CXX="g++" CC="gcc"; fi
+    if [ "$CXX" = "clang++" ]; then export CXX="clang++" CC="clang"; fi
 fi
index 9c421e14314c8371f3fd8dee0eaee1b7ec917a8d..fd4239fe35c0d9e3f9b0c7d4abda2601c1ef1d67 100755 (executable)
 # This file should be sourced, and not executed as a standalone script.
 #
 
-# TODO() - we can check if this is being sourced using $BASH_VERSION and $BASH_SOURCE[0] != ${0}.
-#
-
-if [ "${TRAVIS_OS_NAME}" = "osx" ]; then
-    if [ "$CXX" = "clang++" ]; then
-        # $PATH needs to be adjusted because the llvm tap doesn't install the
-        # package to /usr/local/bin, etc, like the gcc tap does.
-        # See: https://github.com/Homebrew/legacy-homebrew/issues/29733
-        clang_version=3.9
-        export PATH="/usr/local/opt/llvm@${clang_version}/bin:$PATH";
-    fi
+if [ "${TRAVIS_OS_NAME}" != "osx" ]; then
+   echo "Not a macOS build; skipping"
+   exit 0
 fi
+
+# This file is currently intentionally empty.
index 05e2cb280318864fabfe5951f1209f9a7edd9be2..f98ac7d89b151ace1ebdd674fe7fdd1199eebbe7 100755 (executable)
@@ -41,7 +41,7 @@ if [ "${TRAVIS_SUDO}" = "true" ]; then
     echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | \
         sudo tee /etc/apt/sources.list.d/bazel.list
     curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
-    sudo apt-get update && sudo apt-get install -y bazel gcc-4.9 g++-4.9 clang-3.9
+    sudo apt-get update && sudo apt-get install -y bazel gcc g++ clang
 elif [ "${CXX}" = "clang++" ]; then
     # Use ccache, assuming $HOME/bin is in the path, which is true in the Travis build environment.
     ln -sf /usr/bin/ccache $HOME/bin/${CXX};
index cc4750829ce5099d338feef14bdf9b603b2e0e97..c81c33cab9292f26719813cbb871d2f06232fde1 100755 (executable)
@@ -36,5 +36,4 @@ if [ "${TRAVIS_OS_NAME}" != "osx" ]; then
     exit 0
 fi
 
-brew update
-brew install ccache gcc@4.9
+# This file is currently intentionally empty.
index 5fef11948b18f2f6719850fdac2ea1a775035e0b..c76c49ad874844cddf72c620a9e046904ca06a71 100755 (executable)
 
 set -e
 
-# ccache on OS X needs installation first
-# reset ccache statistics
-ccache --zero-stats
-
 echo PATH=${PATH}
 
 echo "Compiler configuration:"
index 9ff3bad3eebcf2e6da93f58c0033d2ad6aceb4c1..a24882293eff6f9c9dc79d761f3f4fd58f3c1a36 100755 (executable)
@@ -3,21 +3,6 @@ set -evx
 
 . ci/get-nprocessors.sh
 
-# if possible, ask for the precise number of processors,
-# otherwise take 2 processors as reasonable default; see
-# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization
-if [ -x /usr/bin/getconf ]; then
-    NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN)
-else
-    NPROCESSORS=2
-fi
-# as of 2017-09-04 Travis CI reports 32 processors, but GCC build
-# crashes if parallelized too much (maybe memory consumption problem),
-# so limit to 4 processors for the time being.
-if [ $NPROCESSORS -gt 4 ] ; then
-       echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4."
-       NPROCESSORS=4
-fi
 # Tell make to use the processors. No preceding '-' required.
 MAKEFLAGS="j${NPROCESSORS}"
 export MAKEFLAGS
@@ -34,11 +19,11 @@ cd build
 cmake -Dgtest_build_samples=ON \
       -Dgtest_build_tests=ON \
       -Dgmock_build_tests=ON \
-      -Dcxx_no_exception=$NO_EXCEPTION \
-      -Dcxx_no_rtti=$NO_RTTI \
-      -DCMAKE_COMPILER_IS_GNUCXX=$COMPILER_IS_GNUCXX \
-      -DCMAKE_CXX_FLAGS=$CXX_FLAGS \
-      -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
+      -Dcxx_no_exception="$NO_EXCEPTION" \
+      -Dcxx_no_rtti="$NO_RTTI" \
+      -DCMAKE_COMPILER_IS_GNUCXX="$COMPILER_IS_GNUCXX" \
+      -DCMAKE_CXX_FLAGS="$CXX_FLAGS" \
+      -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
       ..
 make
 CTEST_OUTPUT_ON_FAILURE=1 make test
index d32b70b5be0e0ae74f5376fb03a2226065ad599a..3d6699a862def7cd55d904fcca52217f8b61db28 100644 (file)
@@ -42,7 +42,7 @@ else()
   cmake_policy(SET CMP0048 NEW)
   project(gmock VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C)
 endif()
-cmake_minimum_required(VERSION 2.6.4)
+cmake_minimum_required(VERSION 2.8.12)
 
 if (COMMAND set_up_hermetic_build)
   set_up_hermetic_build()
@@ -100,8 +100,10 @@ if (MSVC)
 else()
   cxx_library(gmock "${cxx_strict}" src/gmock-all.cc)
   target_link_libraries(gmock PUBLIC gtest)
+  set_target_properties(gmock PROPERTIES VERSION ${GOOGLETEST_VERSION})
   cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc)
   target_link_libraries(gmock_main PUBLIC gmock)
+  set_target_properties(gmock_main PROPERTIES VERSION ${GOOGLETEST_VERSION})
 endif()
 # If the CMake version supports it, attach header directory information
 # to the targets for when we are part of a parent build (ie being pulled
@@ -136,20 +138,6 @@ if (gmock_build_tests)
   # 'make test' or ctest.
   enable_testing()
 
-  if (WIN32)
-    file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/RunTest.ps1"
-         CONTENT
-"$project_bin = \"${CMAKE_BINARY_DIR}/bin/$<CONFIG>\"
-$env:Path = \"$project_bin;$env:Path\"
-& $args")
-  elseif (MINGW OR CYGWIN)
-    file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/RunTest.ps1"
-         CONTENT
-"$project_bin = (cygpath --windows ${CMAKE_BINARY_DIR}/bin)
-$env:Path = \"$project_bin;$env:Path\"
-& $args")
-  endif()
-
   if (MINGW OR CYGWIN)
     if (CMAKE_VERSION VERSION_LESS "2.8.12")
       add_compile_options("-Wa,-mbig-obj")
@@ -166,8 +154,6 @@ $env:Path = \"$project_bin;$env:Path\"
   cxx_test(gmock_ex_test gmock_main)
   cxx_test(gmock-function-mocker_test gmock_main)
   cxx_test(gmock-generated-actions_test gmock_main)
-  cxx_test(gmock-generated-function-mockers_test gmock_main)
-  cxx_test(gmock-generated-matchers_test gmock_main)
   cxx_test(gmock-internal-utils_test gmock_main)
   cxx_test(gmock-matchers_test gmock_main)
   cxx_test(gmock-more-actions_test gmock_main)
index 183fdb81d9b6f17b5e57bd9bb6e86066d943a427..daafe2842b08d00304478d67ece5a73a5140b107 100644 (file)
@@ -7,26 +7,26 @@ derive better designs of your system and write better tests.
 
 It is inspired by:
 
-*   [jMock](http://www.jmock.org/),
-*   [EasyMock](http://www.easymock.org/), and
-*   [Hamcrest](http://code.google.com/p/hamcrest/),
+*   [jMock](http://www.jmock.org/)
+*   [EasyMock](http://www.easymock.org/)
+*   [Hamcrest](http://code.google.com/p/hamcrest/)
 
-and designed with C++'s specifics in mind.
+It is designed with C++'s specifics in mind.
 
 gMock:
 
--   provides a declarative syntax for defining mocks,
--   can define partial (hybrid) mocks, which are a cross of real and mock
-    objects,
--   handles functions of arbitrary types and overloaded functions,
--   comes with a rich set of matchers for validating function arguments,
--   uses an intuitive syntax for controlling the behavior of a mock,
--   does automatic verification of expectations (no record-and-replay needed),
--   allows arbitrary (partial) ordering constraints on function calls to be
-    expressed,
--   lets a user extend it by defining new matchers and actions.
--   does not use exceptions, and
--   is easy to learn and use.
+-   Provides a declarative syntax for defining mocks.
+-   Can define partial (hybrid) mocks, which are a cross of real and mock
+    objects.
+-   Handles functions of arbitrary types and overloaded functions.
+-   Comes with a rich set of matchers for validating function arguments.
+-   Uses an intuitive syntax for controlling the behavior of a mock.
+-   Does automatic verification of expectations (no record-and-replay needed).
+-   Allows arbitrary (partial) ordering constraints on function calls to be
+    expressed.
+-   Lets a user extend it by defining new matchers and actions.
+-   Does not use exceptions.
+-   Is easy to learn and use.
 
 Details and examples can be found here:
 
@@ -35,10 +35,10 @@ Details and examples can be found here:
 *   [gMock Cookbook](docs/cook_book.md)
 *   [gMock Cheat Sheet](docs/cheat_sheet.md)
 
-Please note that code under scripts/generator/ is from the [cppclean
-project](http://code.google.com/p/cppclean/) and under the Apache
-License, which is different from Google Mock's license.
+Please note that code under scripts/generator/ is from the
+[cppclean project](http://code.google.com/p/cppclean/) and under the Apache
+License, which is different from GoogleMock's license.
 
-Google Mock is a part of
-[Google Test C++ testing framework](http://github.com/google/googletest/) and a
+GoogleMock is a part of
+[GoogleTest C++ testing framework](http://github.com/google/googletest/) and a
 subject to the same requirements.
index 5780fcaa53b9dfc4b9094fee4a86134fec872730..23c67b5c88db4add6d21403b8ecbaf1be5a88813 100644 (file)
@@ -5,6 +5,6 @@ Name: gmock
 Description: GoogleMock (without main() function)
 Version: @PROJECT_VERSION@
 URL: https://github.com/google/googletest
-Requires: gtest
+Requires: gtest = @PROJECT_VERSION@
 Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@
 Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@
index f2dfe69e0f795b57ceec2af89740c6a2327d0f9e..66ffea7f4431f606c5ca5d87bef505157658244d 100644 (file)
@@ -5,6 +5,6 @@ Name: gmock_main
 Description: GoogleMock (with main() function)
 Version: @PROJECT_VERSION@
 URL: https://github.com/google/googletest
-Requires: gmock
+Requires: gmock = @PROJECT_VERSION@
 Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@
 Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@
index b425e0a0ea9018ffb46e832a2b800300f5a1733d..dc2428efead5a4b5f25644116dbeb47df459426e 100644 (file)
@@ -1,12 +1,14 @@
-## gMock Cheat Sheet
+# gMock Cheat Sheet
 
 <!-- GOOGLETEST_CM0019 DO NOT DELETE -->
 
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
 <!-- GOOGLETEST_CM0033 DO NOT DELETE -->
 
-### Defining a Mock Class
+## Defining a Mock Class
 
-#### Mocking a Normal Class {#MockClass}
+### Mocking a Normal Class {#MockClass}
 
 Given
 
@@ -52,7 +54,7 @@ StrictMock<MockFoo> strict_foo;  // The type is a subclass of MockFoo.
 **Note:** A mock object is currently naggy by default. We may make it nice by
 default in the future.
 
-#### Mocking a Class Template {#MockTemplate}
+### Mocking a Class Template {#MockTemplate}
 
 Class templates can be mocked just like any class.
 
@@ -80,7 +82,7 @@ class MockStack : public StackInterface<Elem> {
 };
 ```
 
-#### Specifying Calling Conventions for Mock Functions
+### Specifying Calling Conventions for Mock Functions
 
 If your mock function doesn't use the default calling convention, you can
 specify it by adding `Calltype(convention)` to `MOCK_METHOD`'s 4th parameter.
@@ -94,7 +96,7 @@ For example,
 
 where `STDMETHODCALLTYPE` is defined by `<objbase.h>` on Windows.
 
-### Using Mocks in Tests {#UsingMocks}
+## Using Mocks in Tests {#UsingMocks}
 
 The typical work flow is:
 
@@ -130,7 +132,7 @@ TEST(BarTest, DoesThis) {
 }                                                 // #6
 ```
 
-### Setting Default Actions {#OnCall}
+## Setting Default Actions {#OnCall}
 
 gMock has a **built-in default action** for any function that returns `void`,
 `bool`, a numeric value, or a pointer. In C++11, it will additionally returns
@@ -186,7 +188,7 @@ ON_CALL(mock-object, method(matchers))
     .WillByDefault(action);
 ```
 
-### Setting Expectations {#ExpectCall}
+## Setting Expectations {#ExpectCall}
 
 `EXPECT_CALL()` sets **expectations** on a mock method (How will it be called?
 What will it do?):
@@ -225,7 +227,7 @@ If `Times()` is omitted, the cardinality is assumed to be:
 A method with no `EXPECT_CALL()` is free to be invoked *any number of times*,
 and the default action will be taken each time.
 
-### Matchers {#MatcherList}
+## Matchers {#MatcherList}
 
 <!-- GOOGLETEST_CM0020 DO NOT DELETE -->
 
@@ -239,19 +241,24 @@ A **matcher** matches a *single* argument. You can use it inside `ON_CALL()` or
 | `ASSERT_THAT(actual_value, matcher)` | The same as `EXPECT_THAT(actual_value, matcher)`, except that it generates a **fatal** failure. |
 <!-- mdformat on -->
 
+**Note:** Although equality matching via `EXPECT_THAT(actual_value,
+expected_value)` is supported, prefer to make the comparison explicit via
+`EXPECT_THAT(actual_value, Eq(expected_value))` or `EXPECT_EQ(actual_value,
+expected_value)`.
+
 Built-in matchers (where `argument` is the function argument, e.g.
 `actual_value` in the example above, or when used in the context of
 `EXPECT_CALL(mock_object, method(matchers))`, the arguments of `method`) are
 divided into several categories:
 
-#### Wildcard
+### Wildcard
 
 Matcher                     | Description
 :-------------------------- | :-----------------------------------------------
 `_`                         | `argument` can be any value of the correct type.
 `A<type>()` or `An<type>()` | `argument` can be any value of type `type`.
 
-#### Generic Comparison
+### Generic Comparison
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher                | Description                                         |
@@ -274,9 +281,10 @@ Matcher                     | Description
 
 Except `Ref()`, these matchers make a *copy* of `value` in case it's modified or
 destructed later. If the compiler complains that `value` doesn't have a public
-copy constructor, try wrap it in `ByRef()`, e.g.
-`Eq(ByRef(non_copyable_value))`. If you do that, make sure `non_copyable_value`
-is not changed afterwards, or the meaning of your matcher will be changed.
+copy constructor, try wrap it in `std::ref()`, e.g.
+`Eq(std::ref(non_copyable_value))`. If you do that, make sure
+`non_copyable_value` is not changed afterwards, or the meaning of your matcher
+will be changed.
 
 `IsTrue` and `IsFalse` are useful when you need to use a matcher, or for types
 that can be explicitly converted to Boolean, but are not implicitly converted to
@@ -284,7 +292,7 @@ Boolean. In other cases, you can use the basic
 [`EXPECT_TRUE` and `EXPECT_FALSE`](../../googletest/docs/primer#basic-assertions)
 assertions.
 
-#### Floating-Point Matchers {#FpMatchers}
+### Floating-Point Matchers {#FpMatchers}
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher                          | Description                        |
@@ -312,7 +320,7 @@ user wants.
 | `NanSensitiveFloatNear(a_float, max_abs_error)`   | `argument` is a `float` value close to `a_float` (absolute error <= `max_abs_error`), treating two NaNs as equal. |
 <!-- mdformat on -->
 
-#### String Matchers
+### String Matchers
 
 The `argument` can be either a C string or a C++ string object:
 
@@ -336,7 +344,7 @@ use the regular expression syntax defined
 these matchers, except `ContainsRegex()` and `MatchesRegex()` work for wide
 strings as well.
 
-#### Container Matchers
+### Container Matchers
 
 Most STL-style containers support `==`, so you can use `Eq(expected_container)`
 or simply `expected_container` to match a container exactly. If you want to
@@ -387,7 +395,7 @@ messages, you can use:
     EXPECT_THAT(actual_foos, Pointwise(FooEq(), expected_foos));
     ```
 
-#### Member Matchers
+### Member Matchers
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher                         | Description                                |
@@ -395,10 +403,11 @@ messages, you can use:
 | `Field(&class::field, m)`       | `argument.field` (or `argument->field` when `argument` is a plain pointer) matches matcher `m`, where `argument` is an object of type _class_. |
 | `Key(e)`                        | `argument.first` matches `e`, which can be either a value or a matcher. E.g. `Contains(Key(Le(5)))` can verify that a `map` contains a key `<= 5`. |
 | `Pair(m1, m2)`                  | `argument` is an `std::pair` whose `first` field matches `m1` and `second` field matches `m2`. |
+| `FieldsAre(m...)`                   | `argument` is a compatible object where each field matches piecewise with `m...`. A compatible object is any that supports the `std::tuple_size<Obj>`+`get<I>(obj)` protocol. In C++17 and up this also supports types compatible with structured bindings, like aggregates. |
 | `Property(&class::property, m)` | `argument.property()` (or `argument->property()` when `argument` is a plain pointer) matches matcher `m`, where `argument` is an object of type _class_. |
 <!-- mdformat on -->
 
-#### Matching the Result of a Function, Functor, or Callback
+### Matching the Result of a Function, Functor, or Callback
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher          | Description                                       |
@@ -406,12 +415,14 @@ messages, you can use:
 | `ResultOf(f, m)` | `f(argument)` matches matcher `m`, where `f` is a function or functor. |
 <!-- mdformat on -->
 
-#### Pointer Matchers
+### Pointer Matchers
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher                   | Description                                     |
 | :------------------------ | :---------------------------------------------- |
+| `Address(m)`              | the result of `std::addressof(argument)` matches `m`. |
 | `Pointee(m)`              | `argument` (either a smart pointer or a raw pointer) points to a value that matches matcher `m`. |
+| `Pointer(m)`              | `argument` (either a smart pointer or a raw pointer) contains a pointer that matches `m`. `m` will match against the raw pointer regardless of the type of `argument`. |
 | `WhenDynamicCastTo<T>(m)` | when `argument` is passed through `dynamic_cast<T>()`, it matches matcher `m`. |
 <!-- mdformat on -->
 
@@ -419,7 +430,7 @@ messages, you can use:
 
 <!-- GOOGLETEST_CM0027 DO NOT DELETE -->
 
-#### Multi-argument Matchers {#MultiArgMatchers}
+### Multi-argument Matchers {#MultiArgMatchers}
 
 Technically, all matchers match a *single* value. A "multi-argument" matcher is
 just one that matches a *tuple*. The following matchers can be used to match a
@@ -444,7 +455,7 @@ reorder them) to participate in the matching:
 | `Args<N1, N2, ..., Nk>(m)` | The tuple of the `k` selected (using 0-based indices) arguments matches `m`, e.g. `Args<1, 2>(Eq())`. |
 <!-- mdformat on -->
 
-#### Composite Matchers
+### Composite Matchers
 
 You can make a matcher from one or more other matchers:
 
@@ -460,7 +471,7 @@ You can make a matcher from one or more other matchers:
 
 <!-- GOOGLETEST_CM0028 DO NOT DELETE -->
 
-#### Adapters for Matchers
+### Adapters for Matchers
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher                 | Description                           |
@@ -473,7 +484,7 @@ You can make a matcher from one or more other matchers:
 `AddressSatisfies(callback)` and `Truly(callback)` take ownership of `callback`,
 which must be a permanent callback.
 
-#### Using Matchers as Predicates {#MatchersAsPredicatesCheat}
+### Using Matchers as Predicates {#MatchersAsPredicatesCheat}
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher                       | Description                                 |
@@ -483,14 +494,14 @@ which must be a permanent callback.
 | `Value(value, m)` | evaluates to `true` if `value` matches `m`. |
 <!-- mdformat on -->
 
-#### Defining Matchers
+### Defining Matchers
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher                              | Description                           |
 | :----------------------------------- | :------------------------------------ |
 | `MATCHER(IsEven, "") { return (arg % 2) == 0; }` | Defines a matcher `IsEven()` to match an even number. |
-| `MATCHER_P(IsDivisibleBy, n, "") { *result_listener << "where the remainder is " << (arg % n); return (arg % n) == 0; }` | Defines a macher `IsDivisibleBy(n)` to match a number divisible by `n`. |
-| `MATCHER_P2(IsBetween, a, b, std::string(negation ? "isn't" : "is") + " between " + PrintToString(a) + " and " + PrintToString(b)) { return a <= arg && arg <= b; }` | Defines a matcher `IsBetween(a, b)` to match a value in the range [`a`, `b`]. |
+| `MATCHER_P(IsDivisibleBy, n, "") { *result_listener << "where the remainder is " << (arg % n); return (arg % n) == 0; }` | Defines a matcher `IsDivisibleBy(n)` to match a number divisible by `n`. |
+| `MATCHER_P2(IsBetween, a, b, absl::StrCat(negation ? "isn't" : "is", " between ", PrintToString(a), " and ", PrintToString(b))) { return a <= arg && arg <= b; }` | Defines a matcher `IsBetween(a, b)` to match a value in the range [`a`, `b`]. |
 <!-- mdformat on -->
 
 **Notes:**
@@ -502,11 +513,11 @@ which must be a permanent callback.
 3.  You can use `PrintToString(x)` to convert a value `x` of any type to a
     string.
 
-### Actions {#ActionList}
+## Actions {#ActionList}
 
 **Actions** specify what a mock function should do when invoked.
 
-#### Returning a Value
+### Returning a Value
 
 <!-- mdformat off(no multiline tables) -->
 |                                   |                                               |
@@ -522,7 +533,7 @@ which must be a permanent callback.
 | `ReturnRoundRobin({a1, ..., ak})` | Each call will return the next `ai` in the list, starting at the beginning when the end of the list is reached. |
 <!-- mdformat on -->
 
-#### Side Effects
+### Side Effects
 
 <!-- mdformat off(no multiline tables) -->
 |                                    |                                         |
@@ -531,7 +542,7 @@ which must be a permanent callback.
 | `DeleteArg<N>()` | Delete the `N`-th (0-based) argument, which must be a pointer. |
 | `SaveArg<N>(pointer)` | Save the `N`-th (0-based) argument to `*pointer`. |
 | `SaveArgPointee<N>(pointer)` | Save the value pointed to by the `N`-th (0-based) argument to `*pointer`. |
-| `SetArgReferee<N>(value)` | Assign value to the variable referenced by the `N`-th (0-based) argument. |
+| `SetArgReferee<N>(value)` | Assign `value` to the variable referenced by the `N`-th (0-based) argument. |
 | `SetArgPointee<N>(value)` | Assign `value` to the variable pointed by the `N`-th (0-based) argument. |
 | `SetArgumentPointee<N>(value)` | Same as `SetArgPointee<N>(value)`. Deprecated. Will be removed in v1.7.0. |
 | `SetArrayArgument<N>(first, last)` | Copies the elements in source range [`first`, `last`) to the array pointed to by the `N`-th (0-based) argument, which can be either a pointer or an iterator. The action does not take ownership of the elements in the source range. |
@@ -539,7 +550,7 @@ which must be a permanent callback.
 | `Throw(exception)` | Throws the given exception, which can be any copyable value. Available since v1.1.0. |
 <!-- mdformat on -->
 
-#### Using a Function, Functor, or Lambda as an Action
+### Using a Function, Functor, or Lambda as an Action
 
 In the following, by "callable" we mean a free function, `std::function`,
 functor, or lambda.
@@ -581,19 +592,18 @@ callback type instead of a derived one, e.g.
 ```
 
 In `InvokeArgument<N>(...)`, if an argument needs to be passed by reference,
-wrap it inside `ByRef()`. For example,
+wrap it inside `std::ref()`. For example,
 
 ```cpp
-using ::testing::ByRef;
 using ::testing::InvokeArgument;
 ...
-InvokeArgument<2>(5, string("Hi"), ByRef(foo))
+InvokeArgument<2>(5, string("Hi"), std::ref(foo))
 ```
 
 calls the mock function's #2 argument, passing to it `5` and `string("Hi")` by
 value, and `foo` by reference.
 
-#### Default Action
+### Default Action
 
 <!-- mdformat off(no multiline tables) -->
 | Matcher       | Description                                            |
@@ -606,19 +616,19 @@ composite action - trying to do so will result in a run-time error.
 
 <!-- GOOGLETEST_CM0032 DO NOT DELETE -->
 
-#### Composite Actions
+### Composite Actions
 
 <!-- mdformat off(no multiline tables) -->
 |                                |                                             |
 | :----------------------------- | :------------------------------------------ |
-| `DoAll(a1, a2, ..., an)`       | Do all actions `a1` to `an` and return the result of `an` in each invocation. The first `n - 1` sub-actions must return void. |
+| `DoAll(a1, a2, ..., an)`       | Do all actions `a1` to `an` and return the result of `an` in each invocation. The first `n - 1` sub-actions must return void and will receive a  readonly view of the arguments. |
 | `IgnoreResult(a)`              | Perform action `a` and ignore its result. `a` must not return void. |
 | `WithArg<N>(a)`                | Pass the `N`-th (0-based) argument of the mock function to action `a` and perform it. |
 | `WithArgs<N1, N2, ..., Nk>(a)` | Pass the selected (0-based) arguments of the mock function to action `a` and perform it. |
 | `WithoutArgs(a)`               | Perform action `a` without any arguments. |
 <!-- mdformat on -->
 
-#### Defining Actions
+### Defining Actions
 
 <!-- mdformat off(no multiline tables) -->
 |                                    |                                         |
@@ -630,7 +640,7 @@ composite action - trying to do so will result in a run-time error.
 
 The `ACTION*` macros cannot be used inside a function or class.
 
-### Cardinalities {#CardinalityList}
+## Cardinalities {#CardinalityList}
 
 These are used in `Times()` to specify how many times a mock function will be
 called:
@@ -645,13 +655,13 @@ called:
 | `Exactly(n) or n` | The call is expected exactly `n` times. In particular, the call should never happen when `n` is 0. |
 <!-- mdformat on -->
 
-### Expectation Order
+## Expectation Order
 
 By default, the expectations can be matched in *any* order. If some or all
 expectations must be matched in a given order, there are two ways to specify it.
 They can be used either independently or together.
 
-#### The After Clause {#AfterClause}
+### The After Clause {#AfterClause}
 
 ```cpp
 using ::testing::Expectation;
@@ -685,7 +695,7 @@ says that `Bar()` can be called only after all elements have been initialized
 Modifying an `ExpectationSet` after using it in an `.After()` doesn't affect the
 meaning of the `.After()`.
 
-#### Sequences {#UsingSequences}
+### Sequences {#UsingSequences}
 
 When you have a long chain of sequential expectations, it's easier to specify
 the order using **sequences**, which don't require you to given each expectation
@@ -728,7 +738,7 @@ using ::testing::InSequence;
 says that all expected calls in the scope of `seq` must occur in strict order.
 The name `seq` is irrelevant.
 
-### Verifying and Resetting a Mock
+## Verifying and Resetting a Mock
 
 gMock will verify the expectations on a mock object when it is destructed, or
 you can do it earlier:
@@ -753,7 +763,7 @@ verified:
 Mock::AllowLeak(&mock_obj);
 ```
 
-### Mock Classes
+## Mock Classes
 
 gMock defines a convenient mock class template
 
@@ -766,7 +776,7 @@ class MockFunction<R(A1, ..., An)> {
 
 See this [recipe](cook_book.md#using-check-points) for one application of it.
 
-### Flags
+## Flags
 
 <!-- mdformat off(no multiline tables) -->
 | Flag                           | Description                               |
diff --git a/ceph/src/googletest/googlemock/docs/community_created_documentation.md b/ceph/src/googletest/googlemock/docs/community_created_documentation.md
new file mode 100644 (file)
index 0000000..dfd87f7
--- /dev/null
@@ -0,0 +1,9 @@
+# Community-Created Documentation
+
+go/gunit-community-created-docs
+
+The following is a list, in no particular order, of links to documentation
+created by the Googletest community.
+
+*   [Googlemock Insights](https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/googletest/insights.md),
+    by [ElectricRCAircraftGuy](https://github.com/ElectricRCAircraftGuy)
index a493521481fc622a65c626fdd164e418b859c940..cd6415026421c4a50d327ebb90efb7cf1fdc01ce 100644 (file)
@@ -3,13 +3,15 @@
 <!-- GOOGLETEST_CM0012 DO NOT DELETE -->
 
 You can find recipes for using gMock here. If you haven't yet, please read
-[this](for_dummies.md) first to make sure you understand the basics.
+[the dummy guide](for_dummies.md) first to make sure you understand the basics.
 
 **Note:** gMock lives in the `testing` name space. For readability, it is
 recommended to write `using ::testing::Foo;` once in your file before using the
 name `Foo` defined by gMock. We omit such `using` statements in this section for
 brevity, but you should do it in your own code.
 
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
 ## Creating Mock Classes
 
 Mock classes are defined as normal classes, using the `MOCK_METHOD` macro to
@@ -35,6 +37,9 @@ generated method:
     `noexcept` method.
 *   **`Calltype(...)`** - Sets the call type for the method (e.g. to
     `STDMETHODCALLTYPE`), useful in Windows.
+*   **`ref(...)`** - Marks the method with the reference qualification
+    specified. Required if overriding a method that has reference
+    qualifications. Eg `ref(&)` or `ref(&&)`.
 
 ### Dealing with unprotected commas
 
@@ -281,9 +286,11 @@ recipe for [mocking non-virtual methods](#MockingNonVirtualMethods).
 
 ### Old-Style `MOCK_METHODn` Macros
 
-Before the generic `MOCK_METHOD` macro was introduced, mocks where created using
-a family of macros collectively called `MOCK_METHODn`. These macros are still
-supported, though migration to the new `MOCK_METHOD` is recommended.
+Before the generic `MOCK_METHOD` macro
+[was introduced in 2018](https://github.com/google/googletest/commit/c5f08bf91944ce1b19bcf414fa1760e69d20afc2),
+mocks where created using a family of macros collectively called `MOCK_METHODn`.
+These macros are still supported, though migration to the new `MOCK_METHOD` is
+recommended.
 
 The macros in the `MOCK_METHODn` family differ from `MOCK_METHOD`:
 
@@ -410,8 +417,8 @@ NOTE: `NiceMock` and `StrictMock` only affects *uninteresting* calls (calls of
 methods with expectations, but they don't match). See
 [Understanding Uninteresting vs Unexpected Calls](#uninteresting-vs-unexpected).
 
-There are some caveats though (I dislike them just as much as the next guy, but
-sadly they are side effects of C++'s limitations):
+There are some caveats though (sadly they are side effects of C++'s
+limitations):
 
 1.  `NiceMock<MockFoo>` and `StrictMock<MockFoo>` only work for mock methods
     defined using the `MOCK_METHOD` macro **directly** in the `MockFoo` class.
@@ -421,17 +428,7 @@ sadly they are side effects of C++'s limitations):
     `NiceMock<StrictMock<MockFoo> >`) is **not** supported.
 2.  `NiceMock<MockFoo>` and `StrictMock<MockFoo>` may not work correctly if the
     destructor of `MockFoo` is not virtual. We would like to fix this, but it
-    requires cleaning up existing tests. http://b/28934720 tracks the issue.
-3.  During the constructor or destructor of `MockFoo`, the mock object is *not*
-    nice or strict. This may cause surprises if the constructor or destructor
-    calls a mock method on `this` object. (This behavior, however, is consistent
-    with C++'s general rule: if a constructor or destructor calls a virtual
-    method of `this` object, that method is treated as non-virtual. In other
-    words, to the base class's constructor or destructor, `this` object behaves
-    like an instance of the base class, not the derived class. This rule is
-    required for safety. Otherwise a base constructor may use members of a
-    derived class before they are initialized, or a base destructor may use
-    members of a derived class after they have been destroyed.)
+    requires cleaning up existing tests.
 
 Finally, you should be **very cautious** about when to use naggy or strict
 mocks, as they tend to make tests more brittle and harder to maintain. When you
@@ -513,7 +510,7 @@ argument matchers:
 
 ```cpp
 ON_CALL(factory, DoMakeTurtle)
-    .WillByDefault(MakeMockTurtle());
+    .WillByDefault(Return(MakeMockTurtle()));
 ```
 
 ### Alternative to Mocking Concrete Classes
@@ -777,28 +774,12 @@ perhaps your test doesn't need to mock `Concrete()` at all (but it would be
 oh-so painful to have to define a new mock class whenever you don't need to mock
 one of its methods).
 
-The trick is to leave a back door in your mock class for accessing the real
-methods in the base class:
-
-```cpp
-class MockFoo : public Foo {
- public:
-  // Mocking a pure method.
-  MOCK_METHOD(void, Pure, (int n), (override));
-  // Mocking a concrete method.  Foo::Concrete() is shadowed.
-  MOCK_METHOD(int, Concrete, (const char* str), (override));
-
-  // Use this to call Concrete() defined in Foo.
-  int FooConcrete(const char* str) { return Foo::Concrete(str); }
-};
-```
-
-Now, you can call `Foo::Concrete()` inside an action by:
+You can call `Foo::Concrete()` inside an action by:
 
 ```cpp
 ...
   EXPECT_CALL(foo, Concrete).WillOnce([&foo](const char* str) {
-    return foo.FooConcrete(str);
+    return foo.Foo::Concrete(str);
   });
 ```
 
@@ -807,7 +788,7 @@ or tell the mock object that you don't want to mock `Concrete()`:
 ```cpp
 ...
   ON_CALL(foo, Concrete).WillByDefault([&foo](const char* str) {
-    return foo.FooConcrete(str);
+    return foo.Foo::Concrete(str);
   });
 ```
 
@@ -871,6 +852,22 @@ using ::testing::Not;
                           NULL));
 ```
 
+Matchers are function objects, and parametrized matchers can be composed just
+like any other function. However because their types can be long and rarely
+provide meaningful information, it can be easier to express them with C++14
+generic lambdas to avoid specifying types. For example,
+
+```cpp
+using ::testing::Contains;
+using ::testing::Property;
+
+inline constexpr auto HasFoo = [](const auto& f) {
+  return Property(&MyClass::foo, Contains(f));
+};
+...
+  EXPECT_THAT(x, HasFoo("blah"));
+```
+
 ### Casting Matchers {#SafeMatcherCast}
 
 gMock matchers are statically typed, meaning that the compiler can catch your
@@ -1144,10 +1141,11 @@ Hamcrest project, which adds `assertThat()` to JUnit.
 
 ### Using Predicates as Matchers
 
-gMock provides a [built-in set](#MatcherList) of matchers. In case you find them
-lacking, you can use an arbitrary unary predicate function or functor as a
-matcher - as long as the predicate accepts a value of the type you want. You do
-this by wrapping the predicate inside the `Truly()` function, for example:
+gMock provides a [built-in set](cheat_sheet.md#MatcherList) of matchers. In case
+you find them lacking, you can use an arbitrary unary predicate function or
+functor as a matcher - as long as the predicate accepts a value of the type you
+want. You do this by wrapping the predicate inside the `Truly()` function, for
+example:
 
 ```cpp
 using ::testing::Truly;
@@ -1180,15 +1178,14 @@ executed. Just tell gMock that it should save a reference to `bar`, instead of a
 copy of it. Here's how:
 
 ```cpp
-using ::testing::ByRef;
 using ::testing::Eq;
 using ::testing::Lt;
 ...
   // Expects that Foo()'s argument == bar.
-  EXPECT_CALL(mock_obj, Foo(Eq(ByRef(bar))));
+  EXPECT_CALL(mock_obj, Foo(Eq(std::ref(bar))));
 
   // Expects that Foo()'s argument < bar.
-  EXPECT_CALL(mock_obj, Foo(Lt(ByRef(bar))));
+  EXPECT_CALL(mock_obj, Foo(Lt(std::ref(bar))));
 ```
 
 Remember: if you do this, don't change `bar` after the `EXPECT_CALL()`, or the
@@ -1675,11 +1672,11 @@ times from calling it with the wrong arguments.
 
 ### Expecting Ordered Calls {#OrderedCalls}
 
-Although an `EXPECT_CALL()` statement defined earlier takes precedence when
-gMock tries to match a function call with an expectation, by default calls don't
-have to happen in the order `EXPECT_CALL()` statements are written. For example,
-if the arguments match the matchers in the third `EXPECT_CALL()`, but not those
-in the first two, then the third expectation will be used.
+Although an `EXPECT_CALL()` statement defined later takes precedence when gMock
+tries to match a function call with an expectation, by default calls don't have
+to happen in the order `EXPECT_CALL()` statements are written. For example, if
+the arguments match the matchers in the second `EXPECT_CALL()`, but not those in
+the first and third, then the second expectation will be used.
 
 If you would rather have all calls occur in the order of the expectations, put
 the `EXPECT_CALL()` statements in a block where you define a variable of type
@@ -1712,8 +1709,8 @@ brittle tests. For example, we may care about `A` occurring before both `B` and
 the test should reflect our real intent, instead of being overly constraining.
 
 gMock allows you to impose an arbitrary DAG (directed acyclic graph) on the
-calls. One way to express the DAG is to use the [After](#AfterClause) clause of
-`EXPECT_CALL`.
+calls. One way to express the DAG is to use the
+[After](cheat_sheet.md#AfterClause) clause of `EXPECT_CALL`.
 
 Another way is via the `InSequence()` clause (not the same as the `InSequence`
 class), which we borrowed from jMock 2. It's less flexible than `After()`, but
@@ -1851,10 +1848,9 @@ Methods"). However, gMock doesn't let you use `ReturnRef()` in a mock function
 whose return type is not a reference, as doing that usually indicates a user
 error. So, what shall you do?
 
-Though you may be tempted, DO NOT use `ByRef()`:
+Though you may be tempted, DO NOT use `std::ref()`:
 
 ```cpp
-using testing::ByRef;
 using testing::Return;
 
 class MockFoo : public Foo {
@@ -1865,7 +1861,7 @@ class MockFoo : public Foo {
   int x = 0;
   MockFoo foo;
   EXPECT_CALL(foo, GetValue())
-      .WillRepeatedly(Return(ByRef(x)));  // Wrong!
+      .WillRepeatedly(Return(std::ref(x)));  // Wrong!
   x = 42;
   EXPECT_EQ(42, foo.GetValue());
 ```
@@ -1881,9 +1877,9 @@ Expected: 42
 The reason is that `Return(*value*)` converts `value` to the actual return type
 of the mock function at the time when the action is *created*, not when it is
 *executed*. (This behavior was chosen for the action to be safe when `value` is
-a proxy object that references some temporary objects.) As a result, `ByRef(x)`
-is converted to an `int` value (instead of a `const int&`) when the expectation
-is set, and `Return(ByRef(x))` will always return 0.
+a proxy object that references some temporary objects.) As a result,
+`std::ref(x)` is converted to an `int` value (instead of a `const int&`) when
+the expectation is set, and `Return(std::ref(x))` will always return 0.
 
 `ReturnPointee(pointer)` was provided to solve this problem specifically. It
 returns the value pointed to by `pointer` at the time the action is *executed*:
@@ -2128,7 +2124,7 @@ class MockFoo : public Foo {
   DefaultValue<Bar>::Clear();
 ```
 
-Please note that changing the default value for a type can make you tests hard
+Please note that changing the default value for a type can make your tests hard
 to understand. We recommend you to use this feature judiciously. For example,
 you may want to make sure the `Set()` and `Clear()` calls are right next to the
 code that uses your mock.
@@ -2174,7 +2170,7 @@ own precedence order distinct from the `ON_CALL` precedence order.
 ### Using Functions/Methods/Functors/Lambdas as Actions {#FunctionsAsActions}
 
 If the built-in actions don't suit you, you can use an existing callable
-(function, `std::function`, method, functor, lambda as an action.
+(function, `std::function`, method, functor, lambda) as an action.
 
 <!-- GOOGLETEST_CM0024 DO NOT DELETE -->
 
@@ -2203,6 +2199,7 @@ class Helper {
       .WillRepeatedly(Invoke(NewPermanentCallback(Sum3, 1)));
   EXPECT_CALL(foo, ComplexJob(_))
       .WillOnce(Invoke(&helper, &Helper::ComplexJob))
+      .WillOnce([] { return true; })
       .WillRepeatedly([](int x) { return x > 0; });
 
   foo.Sum(5, 6);         // Invokes CalculateSum(5, 6).
@@ -2212,11 +2209,11 @@ class Helper {
 ```
 
 The only requirement is that the type of the function, etc must be *compatible*
-with the signature of the mock function, meaning that the latter's arguments can
-be implicitly converted to the corresponding arguments of the former, and the
-former's return type can be implicitly converted to that of the latter. So, you
-can invoke something whose type is *not* exactly the same as the mock function,
-as long as it's safe to do so - nice, huh?
+with the signature of the mock function, meaning that the latter's arguments (if
+it takes any) can be implicitly converted to the corresponding arguments of the
+former, and the former's return type can be implicitly converted to that of the
+latter. So, you can invoke something whose type is *not* exactly the same as the
+mock function, as long as it's safe to do so - nice, huh?
 
 **`Note:`{.escaped}**
 
@@ -2267,19 +2264,20 @@ TEST_F(FooTest, Test) {
 
 ### Invoking a Function/Method/Functor/Lambda/Callback Without Arguments
 
-`Invoke()` is very useful for doing actions that are more complex. It passes the
-mock function's arguments to the function, etc being invoked such that the
-callee has the full context of the call to work with. If the invoked function is
-not interested in some or all of the arguments, it can simply ignore them.
+`Invoke()` passes the mock function's arguments to the function, etc being
+invoked such that the callee has the full context of the call to work with. If
+the invoked function is not interested in some or all of the arguments, it can
+simply ignore them.
 
 Yet, a common pattern is that a test author wants to invoke a function without
-the arguments of the mock function. `Invoke()` allows her to do that using a
-wrapper function that throws away the arguments before invoking an underlining
-nullary function. Needless to say, this can be tedious and obscures the intent
-of the test.
+the arguments of the mock function. She could do that using a wrapper function
+that throws away the arguments before invoking an underlining nullary function.
+Needless to say, this can be tedious and obscures the intent of the test.
 
-`InvokeWithoutArgs()` solves this problem. It's like `Invoke()` except that it
-doesn't pass the mock function's arguments to the callee. Here's an example:
+There are two solutions to this problem. First, you can pass any callable of
+zero args as an action. Alternatively, use `InvokeWithoutArgs()`, which is like
+`Invoke()` except that it doesn't pass the mock function's arguments to the
+callee. Here's an example of each:
 
 ```cpp
 using ::testing::_;
@@ -2296,7 +2294,7 @@ bool Job2(int n, char c) { ... }
 ...
   MockFoo foo;
   EXPECT_CALL(foo, ComplexJob(_))
-      .WillOnce(InvokeWithoutArgs(Job1))
+      .WillOnce([] { Job1(); });
       .WillOnce(InvokeWithoutArgs(NewPermanentCallback(Job2, 5, 'a')));
 
   foo.ComplexJob(10);  // Invokes Job1().
@@ -2374,7 +2372,7 @@ using ::testing::InvokeArgument;
 ```
 
 What if the callable takes an argument by reference? No problem - just wrap it
-inside `ByRef()`:
+inside `std::ref()`:
 
 ```cpp
   ...
@@ -2383,20 +2381,19 @@ inside `ByRef()`:
               (override));
   ...
   using ::testing::_;
-  using ::testing::ByRef;
   using ::testing::InvokeArgument;
   ...
   MockFoo foo;
   Helper helper;
   ...
   EXPECT_CALL(foo, Bar(_))
-      .WillOnce(InvokeArgument<0>(5, ByRef(helper)));
-      // ByRef(helper) guarantees that a reference to helper, not a copy of it,
-      // will be passed to the callback.
+      .WillOnce(InvokeArgument<0>(5, std::ref(helper)));
+      // std::ref(helper) guarantees that a reference to helper, not a copy of
+      // it, will be passed to the callback.
 ```
 
 What if the callable takes an argument by reference and we do **not** wrap the
-argument in `ByRef()`? Then `InvokeArgument()` will *make a copy* of the
+argument in `std::ref()`? Then `InvokeArgument()` will *make a copy* of the
 argument, and pass a *reference to the copy*, instead of a reference to the
 original value, to the callable. This is especially handy when the argument is a
 temporary value:
@@ -2684,7 +2681,7 @@ TEST(EventQueueTest, EnqueueEventTest) {
   EventQueue event_queue(&mock_event_dispatcher);
 
   const int32 kEventId = 321;
-  Notification done;
+  absl::Notification done;
   EXPECT_CALL(mock_event_dispatcher, DispatchEvent(kEventId))
       .WillOnce(Notify(&done));
 
@@ -3071,7 +3068,7 @@ class MockFoo : public Foo {
   ...
   // Add the following two lines to the mock class.
   MOCK_METHOD(void, Die, ());
-  virtual ~MockFoo() { Die(); }
+  ~MockFoo() override { Die(); }
 };
 ```
 
index 93cf06f38e38b13cfdbcaa6e039ec01f4ff0412b..8ba164f9a1a06caa7c49101ac4b986692e3a59aa 100644 (file)
@@ -1,8 +1,10 @@
-## gMock for Dummies {#GMockForDummies}
+# gMock for Dummies {#GMockForDummies}
 
 <!-- GOOGLETEST_CM0013 DO NOT DELETE -->
 
-### What Is gMock?
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
+## What Is gMock?
 
 When you write a prototype or test, often it's not feasible or wise to rely on
 real objects entirely. A **mock object** implements the same interface as a real
@@ -39,7 +41,7 @@ When using gMock,
 3.  then you exercise code that uses the mock objects. gMock will catch any
     violation to the expectations as soon as it arises.
 
-### Why gMock?
+## Why gMock?
 
 While mock objects help you remove unnecessary dependencies in tests and make
 them fast and reliable, using mocks manually in C++ is *hard*:
@@ -85,11 +87,11 @@ We encourage you to use gMock as
 *   a *testing* tool to cut your tests' outbound dependencies and probe the
     interaction between your module and its collaborators.
 
-### Getting Started
+## Getting Started
 
 gMock is bundled with googletest.
 
-### A Case for Mock Turtles
+## A Case for Mock Turtles
 
 Let's look at an example. Suppose you are developing a graphics program that
 relies on a [LOGO](http://en.wikipedia.org/wiki/Logo_programming_language)-like
@@ -106,7 +108,7 @@ the API in an interface (say, `Turtle`) and code to that interface:
 ```cpp
 class Turtle {
   ...
-  virtual ~Turtle() {};
+  virtual ~Turtle() {}
   virtual void PenUp() = 0;
   virtual void PenDown() = 0;
   virtual void Forward(int distance) = 0;
@@ -135,13 +137,13 @@ because your new machine does anti-aliasing differently), easier to read and
 maintain (the intent of a test is expressed in the code, not in some binary
 images), and run *much, much faster*.
 
-### Writing the Mock Class
+## Writing the Mock Class
 
 If you are lucky, the mocks you need to use have already been implemented by
 some nice people. If, however, you find yourself in the position to write a mock
 class, relax - gMock turns this task into a fun game! (Well, almost.)
 
-#### How to Define It
+### How to Define It
 
 Using the `Turtle` interface as example, here are the simple steps you need to
 follow:
@@ -184,7 +186,7 @@ class MockTurtle : public Turtle {
 You don't need to define these mock methods somewhere else - the `MOCK_METHOD`
 macro will generate the definitions for you. It's that simple!
 
-#### Where to Put It
+### Where to Put It
 
 When you define a mock class, you need to decide where to put its definition.
 Some people put it in a `_test.cc`. This is fine when the interface being mocked
@@ -208,7 +210,7 @@ specific domain much better than `Foo` does.
 
 <!-- GOOGLETEST_CM0029 DO NOT DELETE -->
 
-### Using Mocks in Tests
+## Using Mocks in Tests
 
 Once you have a mock class, using it is easy. The typical work flow is:
 
@@ -257,8 +259,8 @@ Stack trace:
 ...
 ```
 
-**Tip 1:** If you run the test from an Emacs buffer, you can hit <Enter> on the
-line number to jump right to the failed expectation.
+**Tip 1:** If you run the test from an Emacs buffer, you can hit `<Enter>` on
+the line number to jump right to the failed expectation.
 
 **Tip 2:** If your mock objects are never deleted, the final verification won't
 happen. Therefore it's a good idea to turn on the heap checker in your tests
@@ -279,7 +281,7 @@ Admittedly, this test is contrived and doesn't do much. You can easily achieve
 the same effect without using gMock. However, as we shall reveal soon, gMock
 allows you to do *so much more* with the mocks.
 
-### Setting Expectations
+## Setting Expectations
 
 The key to using a mock object successfully is to set the *right expectations*
 on it. If you set the expectations too strict, your test will fail as the result
@@ -288,7 +290,7 @@ to do it just right such that your test can catch exactly the kind of bugs you
 intend it to catch. gMock provides the necessary means for you to do it "just
 right."
 
-#### General Syntax
+### General Syntax
 
 In gMock we use the `EXPECT_CALL()` macro to set an expectation on a mock
 method. The general syntax is:
@@ -343,7 +345,7 @@ it makes expectations easily identifiable (either by `gsearch` or by a human
 reader), and second it allows gMock to include the source file location of a
 failed expectation in messages, making debugging easier.
 
-#### Matchers: What Arguments Do We Expect?
+### Matchers: What Arguments Do We Expect?
 
 When a mock function takes arguments, we may specify what arguments we are
 expecting, for example:
@@ -374,7 +376,7 @@ convenient way of saying "any value".
 In the above examples, `100` and `50` are also matchers; implicitly, they are
 the same as `Eq(100)` and `Eq(50)`, which specify that the argument must be
 equal (using `operator==`) to the matcher argument. There are many
-[built-in matchers](#MatcherList) for common types (as well as
+[built-in matchers](cheat_sheet.md#MatcherList) for common types (as well as
 [custom matchers](cook_book.md#NewMatchers)); for example:
 
 ```cpp
@@ -399,7 +401,7 @@ to help gMock resolve which overload is expected by specifying the number of
 arguments and possibly also the
 [types of the arguments](cook_book.md#SelectOverload).
 
-#### Cardinalities: How Many Times Will It Be Called?
+### Cardinalities: How Many Times Will It Be Called?
 
 The first clause we can specify following an `EXPECT_CALL()` is `Times()`. We
 call its argument a **cardinality** as it tells *how many times* the call should
@@ -429,7 +431,7 @@ the cardinality for you.** The rules are easy to remember:
 **Quick quiz:** what do you think will happen if a function is expected to be
 called twice but actually called four times?
 
-#### Actions: What Should It Do?
+### Actions: What Should It Do?
 
 Remember that a mock object doesn't really have a working implementation? We as
 users have to tell it what to do when a method is invoked. This is easy in
@@ -522,7 +524,7 @@ will be taken afterwards. So the right answer is that `turtle.GetY()` will
 return 100 the first time, but **return 0 from the second time on**, as
 returning 0 is the default action for `int` functions.
 
-#### Using Multiple Expectations {#MultiExpectations}
+### Using Multiple Expectations {#MultiExpectations}
 
 So far we've only shown examples where you have a single expectation. More
 realistically, you'll specify expectations on multiple mock methods which may be
@@ -563,7 +565,7 @@ useful for methods that have some expectations, but for which other calls are
 ok. See
 [Understanding Uninteresting vs Unexpected Calls](cook_book.md#uninteresting-vs-unexpected).
 
-#### Ordered vs Unordered Calls {#OrderedCalls}
+### Ordered vs Unordered Calls {#OrderedCalls}
 
 By default, an expectation can match a call even though an earlier expectation
 hasn't been satisfied. In other words, the calls don't have to occur in the
@@ -600,7 +602,7 @@ order as written. If a call is made out-of-order, it will be an error.
 them? Can you specify an arbitrary partial order? The answer is ... yes! The
 details can be found [here](cook_book.md#OrderedCalls).)
 
-#### All Expectations Are Sticky (Unless Said Otherwise) {#StickyExpectations}
+### All Expectations Are Sticky (Unless Said Otherwise) {#StickyExpectations}
 
 Now let's do a quick quiz to see how well you can use this mock stuff already.
 How would you test that the turtle is asked to go to the origin *exactly twice*
@@ -688,7 +690,7 @@ it's in a sequence - as soon as another expectation that comes after it in the
 sequence has been used, it automatically retires (and will never be used to
 match any call).
 
-#### Uninteresting Calls
+### Uninteresting Calls
 
 A mock object may have many methods, and not all of them are that interesting.
 For example, in some tests we may not care about how many times `GetX()` and
index 214aabf1218af9cc7ee5c3d37e7e58516aefb116..14acae530254ed74f8fac2ea4851b8eaec78ac1c 100644 (file)
@@ -2,10 +2,12 @@
 
 <!-- GOOGLETEST_CM0021 DO NOT DELETE -->
 
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
 ### When I call a method on my mock object, the method for the real object is invoked instead. What's the problem?
 
 In order for a method to be mocked, it must be *virtual*, unless you use the
-[high-perf dependency injection technique](#MockingNonVirtualMethods).
+[high-perf dependency injection technique](cook_book.md#MockingNonVirtualMethods).
 
 ### Can I mock a variadic function?
 
index cdf7c57da2d553ac99c5cc4b99c16327fec66056..17fb370dee2cba2e369ff5c3795f57c32ebb554a 100644 (file)
@@ -1,5 +1,7 @@
 <b>P</b>ump is <b>U</b>seful for <b>M</b>eta <b>P</b>rogramming.
 
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
 # The Problem
 
 Template and macro libraries often need to define many classes, functions, or
@@ -117,7 +119,7 @@ Func(a1 + a2 + a3);  // If n is 3.
 We support the following meta programming constructs:
 
 | `$var id = exp`                  | Defines a named constant value. `$id` is |
-:                                  : valid util the end of the current meta   :
+:                                  : valid until the end of the current meta  :
 :                                  : lexical block.                           :
 | :------------------------------- | :--------------------------------------- |
 | `$range id exp..exp`             | Sets the range of an iteration variable, |
index 880117988225a88debc03397914d47ab5ad73bd9..fb33f7bfac3ea22cc661336b21dcd26d68ea7c55 100644 (file)
 #include <functional>
 #include <memory>
 #include <string>
+#include <tuple>
 #include <type_traits>
 #include <utility>
 
@@ -263,6 +264,10 @@ GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(double, 0);
 
 #undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_
 
+// Simple two-arg form of std::disjunction.
+template <typename P, typename Q>
+using disjunction = typename ::std::conditional<P::value, P, Q>::type;
+
 }  // namespace internal
 
 // When an unexpected function call is encountered, Google Mock will
@@ -444,6 +449,9 @@ class Action {
     }
   };
 
+  template <typename G>
+  using IsCompatibleFunctor = std::is_constructible<std::function<F>, G>;
+
  public:
   typedef typename internal::Function<F>::Result Result;
   typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
@@ -455,10 +463,14 @@ class Action {
   // Construct an Action from a specified callable.
   // This cannot take std::function directly, because then Action would not be
   // directly constructible from lambda (it would require two conversions).
-  template <typename G,
-            typename = typename ::std::enable_if<
-                ::std::is_constructible<::std::function<F>, G>::value>::type>
-  Action(G&& fun) : fun_(::std::forward<G>(fun)) {}  // NOLINT
+  template <
+      typename G,
+      typename = typename std::enable_if<internal::disjunction<
+          IsCompatibleFunctor<G>, std::is_constructible<std::function<Result()>,
+                                                        G>>::value>::type>
+  Action(G&& fun) {  // NOLINT
+    Init(::std::forward<G>(fun), IsCompatibleFunctor<G>());
+  }
 
   // Constructs an Action from its implementation.
   explicit Action(ActionInterface<F>* impl)
@@ -490,6 +502,26 @@ class Action {
   template <typename G>
   friend class Action;
 
+  template <typename G>
+  void Init(G&& g, ::std::true_type) {
+    fun_ = ::std::forward<G>(g);
+  }
+
+  template <typename G>
+  void Init(G&& g, ::std::false_type) {
+    fun_ = IgnoreArgs<typename ::std::decay<G>::type>{::std::forward<G>(g)};
+  }
+
+  template <typename FunctionImpl>
+  struct IgnoreArgs {
+    template <typename... Args>
+    Result operator()(const Args&...) const {
+      return function_impl();
+    }
+
+    FunctionImpl function_impl;
+  };
+
   // fun_ is an empty function if and only if this is the DoDefault() action.
   ::std::function<F> fun_;
 };
@@ -540,13 +572,9 @@ class PolymorphicAction {
 
    private:
     Impl impl_;
-
-    GTEST_DISALLOW_ASSIGN_(MonomorphicImpl);
   };
 
   Impl impl_;
-
-  GTEST_DISALLOW_ASSIGN_(PolymorphicAction);
 };
 
 // Creates an Action from its implementation and returns it.  The
@@ -687,13 +715,9 @@ class ReturnAction {
    private:
     bool performed_;
     const std::shared_ptr<R> wrapper_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
   const std::shared_ptr<R> value_;
-
-  GTEST_DISALLOW_ASSIGN_(ReturnAction);
 };
 
 // Implements the ReturnNull() action.
@@ -754,13 +778,9 @@ class ReturnRefAction {
 
    private:
     T& ref_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
   T& ref_;
-
-  GTEST_DISALLOW_ASSIGN_(ReturnRefAction);
 };
 
 // Implements the polymorphic ReturnRefOfCopy(x) action, which can be
@@ -801,13 +821,9 @@ class ReturnRefOfCopyAction {
 
    private:
     T value_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
   const T value_;
-
-  GTEST_DISALLOW_ASSIGN_(ReturnRefOfCopyAction);
 };
 
 // Implements the polymorphic ReturnRoundRobin(v) action, which can be
@@ -864,8 +880,6 @@ class AssignAction {
  private:
   T1* const ptr_;
   const T2 value_;
-
-  GTEST_DISALLOW_ASSIGN_(AssignAction);
 };
 
 #if !GTEST_OS_WINDOWS_MOBILE
@@ -887,8 +901,6 @@ class SetErrnoAndReturnAction {
  private:
   const int errno_;
   const T result_;
-
-  GTEST_DISALLOW_ASSIGN_(SetErrnoAndReturnAction);
 };
 
 #endif  // !GTEST_OS_WINDOWS_MOBILE
@@ -940,7 +952,8 @@ struct InvokeMethodWithoutArgsAction {
   Class* const obj_ptr;
   const MethodPtr method_ptr;
 
-  using ReturnType = typename std::result_of<MethodPtr(Class*)>::type;
+  using ReturnType =
+      decltype((std::declval<Class*>()->*std::declval<MethodPtr>())());
 
   template <typename... Args>
   ReturnType operator()(const Args&...) const {
@@ -993,13 +1006,9 @@ class IgnoreResultAction {
         OriginalFunction;
 
     const Action<OriginalFunction> action_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
   const A action_;
-
-  GTEST_DISALLOW_ASSIGN_(IgnoreResultAction);
 };
 
 template <typename InnerAction, size_t... I>
@@ -1024,9 +1033,13 @@ struct WithArgsAction {
 template <typename... Actions>
 struct DoAllAction {
  private:
-  template <typename... Args, size_t... I>
-  std::vector<Action<void(Args...)>> Convert(IndexSequence<I...>) const {
-    return {std::get<I>(actions)...};
+  template <typename T>
+  using NonFinalType =
+      typename std::conditional<std::is_scalar<T>::value, T, const T&>::type;
+
+  template <typename ActionT, size_t... I>
+  std::vector<ActionT> Convert(IndexSequence<I...>) const {
+    return {ActionT(std::get<I>(actions))...};
   }
 
  public:
@@ -1035,21 +1048,121 @@ struct DoAllAction {
   template <typename R, typename... Args>
   operator Action<R(Args...)>() const {  // NOLINT
     struct Op {
-      std::vector<Action<void(Args...)>> converted;
+      std::vector<Action<void(NonFinalType<Args>...)>> converted;
       Action<R(Args...)> last;
       R operator()(Args... args) const {
         auto tuple_args = std::forward_as_tuple(std::forward<Args>(args)...);
         for (auto& a : converted) {
           a.Perform(tuple_args);
         }
-        return last.Perform(tuple_args);
+        return last.Perform(std::move(tuple_args));
       }
     };
-    return Op{Convert<Args...>(MakeIndexSequence<sizeof...(Actions) - 1>()),
+    return Op{Convert<Action<void(NonFinalType<Args>...)>>(
+                  MakeIndexSequence<sizeof...(Actions) - 1>()),
               std::get<sizeof...(Actions) - 1>(actions)};
   }
 };
 
+template <typename T, typename... Params>
+struct ReturnNewAction {
+  T* operator()() const {
+    return internal::Apply(
+        [](const Params&... unpacked_params) {
+          return new T(unpacked_params...);
+        },
+        params);
+  }
+  std::tuple<Params...> params;
+};
+
+template <size_t k>
+struct ReturnArgAction {
+  template <typename... Args>
+  auto operator()(const Args&... args) const ->
+      typename std::tuple_element<k, std::tuple<Args...>>::type {
+    return std::get<k>(std::tie(args...));
+  }
+};
+
+template <size_t k, typename Ptr>
+struct SaveArgAction {
+  Ptr pointer;
+
+  template <typename... Args>
+  void operator()(const Args&... args) const {
+    *pointer = std::get<k>(std::tie(args...));
+  }
+};
+
+template <size_t k, typename Ptr>
+struct SaveArgPointeeAction {
+  Ptr pointer;
+
+  template <typename... Args>
+  void operator()(const Args&... args) const {
+    *pointer = *std::get<k>(std::tie(args...));
+  }
+};
+
+template <size_t k, typename T>
+struct SetArgRefereeAction {
+  T value;
+
+  template <typename... Args>
+  void operator()(Args&&... args) const {
+    using argk_type =
+        typename ::std::tuple_element<k, std::tuple<Args...>>::type;
+    static_assert(std::is_lvalue_reference<argk_type>::value,
+                  "Argument must be a reference type.");
+    std::get<k>(std::tie(args...)) = value;
+  }
+};
+
+template <size_t k, typename I1, typename I2>
+struct SetArrayArgumentAction {
+  I1 first;
+  I2 last;
+
+  template <typename... Args>
+  void operator()(const Args&... args) const {
+    auto value = std::get<k>(std::tie(args...));
+    for (auto it = first; it != last; ++it, (void)++value) {
+      *value = *it;
+    }
+  }
+};
+
+template <size_t k>
+struct DeleteArgAction {
+  template <typename... Args>
+  void operator()(const Args&... args) const {
+    delete std::get<k>(std::tie(args...));
+  }
+};
+
+template <typename Ptr>
+struct ReturnPointeeAction {
+  Ptr pointer;
+  template <typename... Args>
+  auto operator()(const Args&...) const -> decltype(*pointer) {
+    return *pointer;
+  }
+};
+
+#if GTEST_HAS_EXCEPTIONS
+template <typename T>
+struct ThrowAction {
+  T exception;
+  // We use a conversion operator to adapt to any return type.
+  template <typename R, typename... Args>
+  operator Action<R(Args...)>() const {  // NOLINT
+    T copy = exception;
+    return [copy](Args...) -> R { throw copy; };
+  }
+};
+#endif  // GTEST_HAS_EXCEPTIONS
+
 }  // namespace internal
 
 // An Unused object can be implicitly constructed from ANY value.
@@ -1085,7 +1198,8 @@ struct DoAllAction {
 typedef internal::IgnoredValue Unused;
 
 // Creates an action that does actions a1, a2, ..., sequentially in
-// each invocation.
+// each invocation. All but the last action will have a readonly view of the
+// arguments.
 template <typename... Action>
 internal::DoAllAction<typename std::decay<Action>::type...> DoAll(
     Action&&... action) {
@@ -1278,6 +1392,76 @@ inline ::std::reference_wrapper<T> ByRef(T& l_value) {  // NOLINT
   return ::std::reference_wrapper<T>(l_value);
 }
 
+// The ReturnNew<T>(a1, a2, ..., a_k) action returns a pointer to a new
+// instance of type T, constructed on the heap with constructor arguments
+// a1, a2, ..., and a_k. The caller assumes ownership of the returned value.
+template <typename T, typename... Params>
+internal::ReturnNewAction<T, typename std::decay<Params>::type...> ReturnNew(
+    Params&&... params) {
+  return {std::forward_as_tuple(std::forward<Params>(params)...)};
+}
+
+// Action ReturnArg<k>() returns the k-th argument of the mock function.
+template <size_t k>
+internal::ReturnArgAction<k> ReturnArg() {
+  return {};
+}
+
+// Action SaveArg<k>(pointer) saves the k-th (0-based) argument of the
+// mock function to *pointer.
+template <size_t k, typename Ptr>
+internal::SaveArgAction<k, Ptr> SaveArg(Ptr pointer) {
+  return {pointer};
+}
+
+// Action SaveArgPointee<k>(pointer) saves the value pointed to
+// by the k-th (0-based) argument of the mock function to *pointer.
+template <size_t k, typename Ptr>
+internal::SaveArgPointeeAction<k, Ptr> SaveArgPointee(Ptr pointer) {
+  return {pointer};
+}
+
+// Action SetArgReferee<k>(value) assigns 'value' to the variable
+// referenced by the k-th (0-based) argument of the mock function.
+template <size_t k, typename T>
+internal::SetArgRefereeAction<k, typename std::decay<T>::type> SetArgReferee(
+    T&& value) {
+  return {std::forward<T>(value)};
+}
+
+// Action SetArrayArgument<k>(first, last) copies the elements in
+// source range [first, last) to the array pointed to by the k-th
+// (0-based) argument, which can be either a pointer or an
+// iterator. The action does not take ownership of the elements in the
+// source range.
+template <size_t k, typename I1, typename I2>
+internal::SetArrayArgumentAction<k, I1, I2> SetArrayArgument(I1 first,
+                                                             I2 last) {
+  return {first, last};
+}
+
+// Action DeleteArg<k>() deletes the k-th (0-based) argument of the mock
+// function.
+template <size_t k>
+internal::DeleteArgAction<k> DeleteArg() {
+  return {};
+}
+
+// This action returns the value pointed to by 'pointer'.
+template <typename Ptr>
+internal::ReturnPointeeAction<Ptr> ReturnPointee(Ptr pointer) {
+  return {pointer};
+}
+
+// Action Throw(exception) can be used in a mock function of any type
+// to throw the given exception.  Any copyable value can be thrown.
+#if GTEST_HAS_EXCEPTIONS
+template <typename T>
+internal::ThrowAction<typename std::decay<T>::type> Throw(T&& exception) {
+  return {std::forward<T>(exception)};
+}
+#endif  // GTEST_HAS_EXCEPTIONS
+
 namespace internal {
 
 // A macro from the ACTION* family (defined later in gmock-generated-actions.h)
@@ -1296,83 +1480,72 @@ namespace internal {
 // TYPE DIRECTLY.
 struct ExcessiveArg {};
 
-// A helper class needed for implementing the ACTION* macros.
-template <typename Result, class Impl>
-class ActionHelper {
- public:
-  template <typename... Ts>
-  static Result Perform(Impl* impl, const std::tuple<Ts...>& args) {
-    return Apply(impl, args, MakeIndexSequence<sizeof...(Ts)>{},
-                 MakeIndexSequence<10 - sizeof...(Ts)>{});
-  }
+// Builds an implementation of an Action<> for some particular signature, using
+// a class defined by an ACTION* macro.
+template <typename F, typename Impl> struct ActionImpl;
 
- private:
-  template <typename... Ts, std::size_t... tuple_ids, std::size_t... rest_ids>
-  static Result Apply(Impl* impl, const std::tuple<Ts...>& args,
-                      IndexSequence<tuple_ids...>, IndexSequence<rest_ids...>) {
-    return impl->template gmock_PerformImpl<Ts...>(
-        args, std::get<tuple_ids>(args)...,
-        ((void)rest_ids, ExcessiveArg())...);
-  }
-};
-
-// A helper base class needed for implementing the ACTION* macros.
-// Implements constructor and conversion operator for Action.
-//
-// Template specialization for parameterless Action.
-template <typename Derived>
-class ActionImpl {
- public:
-  ActionImpl() = default;
-
-  template <typename F>
-  operator ::testing::Action<F>() const {  // NOLINT(runtime/explicit)
-    return ::testing::Action<F>(new typename Derived::template gmock_Impl<F>());
-  }
+template <typename Impl>
+struct ImplBase {
+  struct Holder {
+    // Allows each copy of the Action<> to get to the Impl.
+    explicit operator const Impl&() const { return *ptr; }
+    std::shared_ptr<Impl> ptr;
+  };
+  using type = typename std::conditional<std::is_constructible<Impl>::value,
+                                         Impl, Holder>::type;
 };
 
-// Template specialization for parameterized Action.
-template <template <typename...> class Derived, typename... Ts>
-class ActionImpl<Derived<Ts...>> {
- public:
-  explicit ActionImpl(Ts... params) : params_(std::forward<Ts>(params)...) {}
-
-  template <typename F>
-  operator ::testing::Action<F>() const {  // NOLINT(runtime/explicit)
-    return Apply<F>(MakeIndexSequence<sizeof...(Ts)>{});
+template <typename R, typename... Args, typename Impl>
+struct ActionImpl<R(Args...), Impl> : ImplBase<Impl>::type {
+  using Base = typename ImplBase<Impl>::type;
+  using function_type = R(Args...);
+  using args_type = std::tuple<Args...>;
+
+  ActionImpl() = default;  // Only defined if appropriate for Base.
+  explicit ActionImpl(std::shared_ptr<Impl> impl) : Base{std::move(impl)} { }
+
+  R operator()(Args&&... arg) const {
+    static constexpr size_t kMaxArgs =
+        sizeof...(Args) <= 10 ? sizeof...(Args) : 10;
+    return Apply(MakeIndexSequence<kMaxArgs>{},
+                 MakeIndexSequence<10 - kMaxArgs>{},
+                 args_type{std::forward<Args>(arg)...});
   }
 
- private:
-  template <typename F, std::size_t... tuple_ids>
-  ::testing::Action<F> Apply(IndexSequence<tuple_ids...>) const {
-    return ::testing::Action<F>(new
-                                typename Derived<Ts...>::template gmock_Impl<F>(
-                                    std::get<tuple_ids>(params_)...));
+  template <std::size_t... arg_id, std::size_t... excess_id>
+  R Apply(IndexSequence<arg_id...>, IndexSequence<excess_id...>,
+          const args_type& args) const {
+    // Impl need not be specific to the signature of action being implemented;
+    // only the implementing function body needs to have all of the specific
+    // types instantiated.  Up to 10 of the args that are provided by the
+    // args_type get passed, followed by a dummy of unspecified type for the
+    // remainder up to 10 explicit args.
+    static const ExcessiveArg kExcessArg;
+    return static_cast<const Impl&>(*this).template gmock_PerformImpl<
+        /*function_type=*/function_type, /*return_type=*/R,
+        /*args_type=*/args_type,
+        /*argN_type=*/typename std::tuple_element<arg_id, args_type>::type...>(
+        /*args=*/args, std::get<arg_id>(args)...,
+        ((void)excess_id, kExcessArg)...);
   }
-
-  std::tuple<Ts...> params_;
 };
 
-namespace invoke_argument {
-
-// Appears in InvokeArgumentAdl's argument list to help avoid
-// accidental calls to user functions of the same name.
-struct AdlTag {};
-
-// InvokeArgumentAdl - a helper for InvokeArgument.
-// The basic overloads are provided here for generic functors.
-// Overloads for other custom-callables are provided in the
-// internal/custom/gmock-generated-actions.h header.
-template <typename F, typename... Args>
-auto InvokeArgumentAdl(AdlTag, F f, Args... args) -> decltype(f(args...)) {
-  return f(args...);
+// Stores a default-constructed Impl as part of the Action<>'s
+// std::function<>. The Impl should be trivial to copy.
+template <typename F, typename Impl>
+::testing::Action<F> MakeAction() {
+  return ::testing::Action<F>(ActionImpl<F, Impl>());
 }
 
-}  // namespace invoke_argument
+// Stores just the one given instance of Impl.
+template <typename F, typename Impl>
+::testing::Action<F> MakeAction(std::shared_ptr<Impl> impl) {
+  return ::testing::Action<F>(ActionImpl<F, Impl>(std::move(impl)));
+}
 
 #define GMOCK_INTERNAL_ARG_UNUSED(i, data, el) \
   , const arg##i##_type& arg##i GTEST_ATTRIBUTE_UNUSED_
-#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_                 \
+#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_           \
   const args_type& args GTEST_ATTRIBUTE_UNUSED_ GMOCK_PP_REPEAT( \
       GMOCK_INTERNAL_ARG_UNUSED, , 10)
 
@@ -1413,36 +1586,28 @@ auto InvokeArgumentAdl(AdlTag, F f, Args... args) -> decltype(f(args...)) {
 
 #define GMOCK_INTERNAL_ACTION(name, full_name, params)                        \
   template <GMOCK_ACTION_TYPENAME_PARAMS_(params)>                            \
-  class full_name : public ::testing::internal::ActionImpl<                   \
-                        full_name<GMOCK_ACTION_TYPE_PARAMS_(params)>> {       \
-    using base_type = ::testing::internal::ActionImpl<full_name>;             \
-                                                                              \
+  class full_name {                                                           \
    public:                                                                    \
-    using base_type::base_type;                                               \
+    explicit full_name(GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params))              \
+        : impl_(std::make_shared<gmock_Impl>(                                 \
+                GMOCK_ACTION_GVALUE_PARAMS_(params))) { }                     \
+    full_name(const full_name&) = default;                                    \
+    full_name(full_name&&) noexcept = default;                                \
     template <typename F>                                                     \
-    class gmock_Impl : public ::testing::ActionInterface<F> {                 \
+    operator ::testing::Action<F>() const {                                   \
+      return ::testing::internal::MakeAction<F>(impl_);                       \
+    }                                                                         \
+   private:                                                                   \
+    class gmock_Impl {                                                        \
      public:                                                                  \
-      typedef F function_type;                                                \
-      typedef typename ::testing::internal::Function<F>::Result return_type;  \
-      typedef                                                                 \
-          typename ::testing::internal::Function<F>::ArgumentTuple args_type; \
-      gmock_Impl(GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params))                    \
+      explicit gmock_Impl(GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params))           \
           : GMOCK_ACTION_INIT_PARAMS_(params) {}                              \
-      return_type Perform(const args_type& args) override {                   \
-        return ::testing::internal::ActionHelper<return_type,                 \
-                                                 gmock_Impl>::Perform(this,   \
-                                                                      args);  \
-      }                                                                       \
-      template <GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                            \
+      template <typename function_type, typename return_type,                 \
+                typename args_type, GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>        \
       return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const; \
       GMOCK_ACTION_FIELD_PARAMS_(params)                                      \
-                                                                              \
-     private:                                                                 \
-      GTEST_DISALLOW_ASSIGN_(gmock_Impl);                                     \
     };                                                                        \
-                                                                              \
-   private:                                                                   \
-    GTEST_DISALLOW_ASSIGN_(full_name);                                        \
+    std::shared_ptr<const gmock_Impl> impl_;                                  \
   };                                                                          \
   template <GMOCK_ACTION_TYPENAME_PARAMS_(params)>                            \
   inline full_name<GMOCK_ACTION_TYPE_PARAMS_(params)> name(                   \
@@ -1451,50 +1616,37 @@ auto InvokeArgumentAdl(AdlTag, F f, Args... args) -> decltype(f(args...)) {
         GMOCK_ACTION_GVALUE_PARAMS_(params));                                 \
   }                                                                           \
   template <GMOCK_ACTION_TYPENAME_PARAMS_(params)>                            \
-  template <typename F>                                                       \
-  template <GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                \
-  typename ::testing::internal::Function<F>::Result                           \
-      full_name<GMOCK_ACTION_TYPE_PARAMS_(params)>::gmock_Impl<               \
-          F>::gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_)     \
-          const
+  template <typename function_type, typename return_type, typename args_type, \
+            GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                \
+  return_type full_name<GMOCK_ACTION_TYPE_PARAMS_(params)>::gmock_Impl::      \
+  gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
 
 }  // namespace internal
 
+// Similar to GMOCK_INTERNAL_ACTION, but no bound parameters are stored.
 #define ACTION(name)                                                          \
-  class name##Action : public ::testing::internal::ActionImpl<name##Action> { \
-    using base_type = ::testing::internal::ActionImpl<name##Action>;          \
-                                                                              \
+  class name##Action {                                                        \
    public:                                                                    \
-    using base_type::base_type;                                               \
+   explicit name##Action() noexcept {}                                        \
+   name##Action(const name##Action&) noexcept {}                              \
     template <typename F>                                                     \
-    class gmock_Impl : public ::testing::ActionInterface<F> {                 \
+    operator ::testing::Action<F>() const {                                   \
+      return ::testing::internal::MakeAction<F, gmock_Impl>();                \
+    }                                                                         \
+   private:                                                                   \
+    class gmock_Impl {                                                        \
      public:                                                                  \
-      typedef F function_type;                                                \
-      typedef typename ::testing::internal::Function<F>::Result return_type;  \
-      typedef                                                                 \
-          typename ::testing::internal::Function<F>::ArgumentTuple args_type; \
-      gmock_Impl() {}                                                         \
-      return_type Perform(const args_type& args) override {                   \
-        return ::testing::internal::ActionHelper<return_type,                 \
-                                                 gmock_Impl>::Perform(this,   \
-                                                                      args);  \
-      }                                                                       \
-      template <GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                            \
+      template <typename function_type, typename return_type,                 \
+                typename args_type, GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>        \
       return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const; \
-                                                                              \
-     private:                                                                 \
-      GTEST_DISALLOW_ASSIGN_(gmock_Impl);                                     \
     };                                                                        \
-                                                                              \
-   private:                                                                   \
-    GTEST_DISALLOW_ASSIGN_(name##Action);                                     \
   };                                                                          \
+  inline name##Action name() GTEST_MUST_USE_RESULT_;                          \
   inline name##Action name() { return name##Action(); }                       \
-  template <typename F>                                                       \
-  template <GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                \
-  typename ::testing::internal::Function<F>::Result                           \
-      name##Action::gmock_Impl<F>::gmock_PerformImpl(                         \
-          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+  template <typename function_type, typename return_type, typename args_type, \
+            GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                \
+  return_type name##Action::gmock_Impl::gmock_PerformImpl(                    \
+      GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
 
 #define ACTION_P(name, ...) \
   GMOCK_INTERNAL_ACTION(name, name##ActionP, (__VA_ARGS__))
index c5291412b53f254d58ed67184f93820cd0a142ee..f592d86ecff56b282c20a66e32e5d2f21f516149 100644 (file)
 #ifndef THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_  // NOLINT
 #define THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_  // NOLINT
 
-#include "gmock/gmock-generated-function-mockers.h"  // NOLINT
+#include <type_traits>  // IWYU pragma: keep
+#include <utility>      // IWYU pragma: keep
+
+#include "gmock/gmock-spec-builders.h"
+#include "gmock/internal/gmock-internal-utils.h"
 #include "gmock/internal/gmock-pp.h"
 
 namespace testing {
 namespace internal {
 template <typename T>
 using identity_t = T;
+
+template <typename Pattern>
+struct ThisRefAdjuster {
+  template <typename T>
+  using AdjustT = typename std::conditional<
+      std::is_const<typename std::remove_reference<Pattern>::type>::value,
+      typename std::conditional<std::is_lvalue_reference<Pattern>::value,
+                                const T&, const T&&>::type,
+      typename std::conditional<std::is_lvalue_reference<Pattern>::value, T&,
+                                T&&>::type>::type;
+
+  template <typename MockType>
+  static AdjustT<MockType> Adjust(const MockType& mock) {
+    return static_cast<AdjustT<MockType>>(const_cast<MockType&>(mock));
+  }
+};
+
 }  // namespace internal
+
+// The style guide prohibits "using" statements in a namespace scope
+// inside a header file.  However, the FunctionMocker class template
+// is meant to be defined in the ::testing namespace.  The following
+// line is just a trick for working around a bug in MSVC 8.0, which
+// cannot handle it if we define FunctionMocker in ::testing.
+using internal::FunctionMocker;
 }  // namespace testing
 
 #define MOCK_METHOD(...) \
@@ -58,17 +86,17 @@ using identity_t = T;
 #define GMOCK_INTERNAL_MOCK_METHOD_ARG_3(_Ret, _MethodName, _Args) \
   GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, ())
 
-#define GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, _Spec)  \
-  GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Args);                                \
-  GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Spec);                                \
-  GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(                                   \
-      GMOCK_PP_NARG0 _Args, GMOCK_INTERNAL_SIGNATURE(_Ret, _Args));        \
-  GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec)                                  \
-  GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                         \
-      GMOCK_PP_NARG0 _Args, _MethodName, GMOCK_INTERNAL_HAS_CONST(_Spec),  \
-      GMOCK_INTERNAL_HAS_OVERRIDE(_Spec), GMOCK_INTERNAL_HAS_FINAL(_Spec), \
-      GMOCK_INTERNAL_GET_NOEXCEPT_SPEC(_Spec),                             \
-      GMOCK_INTERNAL_GET_CALLTYPE(_Spec),                                  \
+#define GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, _Spec)     \
+  GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Args);                                   \
+  GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Spec);                                   \
+  GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(                                      \
+      GMOCK_PP_NARG0 _Args, GMOCK_INTERNAL_SIGNATURE(_Ret, _Args));           \
+  GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec)                                     \
+  GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                            \
+      GMOCK_PP_NARG0 _Args, _MethodName, GMOCK_INTERNAL_HAS_CONST(_Spec),     \
+      GMOCK_INTERNAL_HAS_OVERRIDE(_Spec), GMOCK_INTERNAL_HAS_FINAL(_Spec),    \
+      GMOCK_INTERNAL_GET_NOEXCEPT_SPEC(_Spec),                                \
+      GMOCK_INTERNAL_GET_CALLTYPE(_Spec), GMOCK_INTERNAL_GET_REF_SPEC(_Spec), \
       (GMOCK_INTERNAL_SIGNATURE(_Ret, _Args)))
 
 #define GMOCK_INTERNAL_MOCK_METHOD_ARG_5(...) \
@@ -102,19 +130,19 @@ using identity_t = T;
       ::testing::tuple_size<typename ::testing::internal::Function<    \
               __VA_ARGS__>::ArgumentTuple>::value == _N,               \
       "This method does not take " GMOCK_PP_STRINGIZE(                 \
-          _N) " arguments. Parenthesize all types with unproctected commas.")
+          _N) " arguments. Parenthesize all types with unprotected commas.")
 
 #define GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec) \
   GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT, ~, _Spec)
 
 #define GMOCK_INTERNAL_MOCK_METHOD_IMPL(_N, _MethodName, _Constness,           \
                                         _Override, _Final, _NoexceptSpec,      \
-                                        _CallType, _Signature)                 \
+                                        _CallType, _RefSpec, _Signature)       \
   typename ::testing::internal::Function<GMOCK_PP_REMOVE_PARENS(               \
       _Signature)>::Result                                                     \
   GMOCK_INTERNAL_EXPAND(_CallType)                                             \
       _MethodName(GMOCK_PP_REPEAT(GMOCK_INTERNAL_PARAMETER, _Signature, _N))   \
-          GMOCK_PP_IF(_Constness, const, ) _NoexceptSpec                       \
+          GMOCK_PP_IF(_Constness, const, ) _RefSpec _NoexceptSpec              \
           GMOCK_PP_IF(_Override, override, ) GMOCK_PP_IF(_Final, final, ) {    \
     GMOCK_MOCKER_(_N, _Constness, _MethodName)                                 \
         .SetOwnerAndName(this, #_MethodName);                                  \
@@ -123,7 +151,7 @@ using identity_t = T;
   }                                                                            \
   ::testing::MockSpec<GMOCK_PP_REMOVE_PARENS(_Signature)> gmock_##_MethodName( \
       GMOCK_PP_REPEAT(GMOCK_INTERNAL_MATCHER_PARAMETER, _Signature, _N))       \
-      GMOCK_PP_IF(_Constness, const, ) {                                       \
+      GMOCK_PP_IF(_Constness, const, ) _RefSpec {                              \
     GMOCK_MOCKER_(_N, _Constness, _MethodName).RegisterOwner(this);            \
     return GMOCK_MOCKER_(_N, _Constness, _MethodName)                          \
         .With(GMOCK_PP_REPEAT(GMOCK_INTERNAL_MATCHER_ARGUMENT, , _N));         \
@@ -131,10 +159,10 @@ using identity_t = T;
   ::testing::MockSpec<GMOCK_PP_REMOVE_PARENS(_Signature)> gmock_##_MethodName( \
       const ::testing::internal::WithoutMatchers&,                             \
       GMOCK_PP_IF(_Constness, const, )::testing::internal::Function<           \
-          GMOCK_PP_REMOVE_PARENS(_Signature)>*) const _NoexceptSpec {          \
-    return GMOCK_PP_CAT(::testing::internal::AdjustConstness_,                 \
-                        GMOCK_PP_IF(_Constness, const, ))(this)                \
-        ->gmock_##_MethodName(GMOCK_PP_REPEAT(                                 \
+          GMOCK_PP_REMOVE_PARENS(_Signature)>*) const _RefSpec _NoexceptSpec { \
+    return ::testing::internal::ThisRefAdjuster<GMOCK_PP_IF(                   \
+        _Constness, const, ) int _RefSpec>::Adjust(*this)                      \
+        .gmock_##_MethodName(GMOCK_PP_REPEAT(                                  \
             GMOCK_INTERNAL_A_MATCHER_ARGUMENT, _Signature, _N));               \
   }                                                                            \
   mutable ::testing::FunctionMocker<GMOCK_PP_REMOVE_PARENS(_Signature)>        \
@@ -161,6 +189,13 @@ using identity_t = T;
       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)), \
       _elem, )
 
+#define GMOCK_INTERNAL_GET_REF_SPEC(_Tuple) \
+  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_REF_SPEC_IF_REF, ~, _Tuple)
+
+#define GMOCK_INTERNAL_REF_SPEC_IF_REF(_i, _, _elem)                       \
+  GMOCK_PP_IF(GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_REF(_i, _, _elem)), \
+              GMOCK_PP_CAT(GMOCK_INTERNAL_UNPACK_, _elem), )
+
 #define GMOCK_INTERNAL_GET_CALLTYPE(_Tuple) \
   GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_CALLTYPE_IMPL, ~, _Tuple)
 
@@ -170,6 +205,7 @@ using identity_t = T;
        GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_OVERRIDE(_i, _, _elem)) + \
        GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_FINAL(_i, _, _elem)) +    \
        GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)) + \
+       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_REF(_i, _, _elem)) +      \
        GMOCK_INTERNAL_IS_CALLTYPE(_elem)) == 1,                           \
       GMOCK_PP_STRINGIZE(                                                 \
           _elem) " cannot be recognized as a valid specification modifier.");
@@ -195,6 +231,13 @@ using identity_t = T;
 
 #define GMOCK_INTERNAL_DETECT_NOEXCEPT_I_noexcept ,
 
+#define GMOCK_INTERNAL_DETECT_REF(_i, _, _elem) \
+  GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_REF_I_, _elem)
+
+#define GMOCK_INTERNAL_DETECT_REF_I_ref ,
+
+#define GMOCK_INTERNAL_UNPACK_ref(x) x
+
 #define GMOCK_INTERNAL_GET_CALLTYPE_IMPL(_i, _, _elem)           \
   GMOCK_PP_IF(GMOCK_INTERNAL_IS_CALLTYPE(_elem),                 \
               GMOCK_INTERNAL_GET_VALUE_CALLTYPE, GMOCK_PP_EMPTY) \
@@ -212,7 +255,7 @@ using identity_t = T;
   GMOCK_INTERNAL_GET_VALUE_CALLTYPE_I(          \
       GMOCK_PP_CAT(GMOCK_INTERNAL_IS_CALLTYPE_HELPER_, _arg))
 #define GMOCK_INTERNAL_GET_VALUE_CALLTYPE_I(_arg) \
-  GMOCK_PP_CAT(GMOCK_PP_IDENTITY, _arg)
+  GMOCK_PP_IDENTITY _arg
 
 #define GMOCK_INTERNAL_IS_CALLTYPE_HELPER_Calltype
 
@@ -241,36 +284,196 @@ using identity_t = T;
               GMOCK_PP_IDENTITY)                                       \
   (_elem)
 
-#define GMOCK_INTERNAL_PARAMETER(_i, _Signature, _)        \
-  GMOCK_PP_COMMA_IF(_i)                                    \
-  GMOCK_INTERNAL_ARG_O(typename, GMOCK_PP_INC(_i),         \
-                       GMOCK_PP_REMOVE_PARENS(_Signature)) \
+#define GMOCK_INTERNAL_PARAMETER(_i, _Signature, _)            \
+  GMOCK_PP_COMMA_IF(_i)                                        \
+  GMOCK_INTERNAL_ARG_O(_i, GMOCK_PP_REMOVE_PARENS(_Signature)) \
   gmock_a##_i
 
-#define GMOCK_INTERNAL_FORWARD_ARG(_i, _Signature, _)                       \
-  GMOCK_PP_COMMA_IF(_i)                                                     \
-  ::std::forward<GMOCK_INTERNAL_ARG_O(typename, GMOCK_PP_INC(_i),           \
-                                      GMOCK_PP_REMOVE_PARENS(_Signature))>( \
-      gmock_a##_i)
+#define GMOCK_INTERNAL_FORWARD_ARG(_i, _Signature, _) \
+  GMOCK_PP_COMMA_IF(_i)                               \
+  ::std::forward<GMOCK_INTERNAL_ARG_O(                \
+      _i, GMOCK_PP_REMOVE_PARENS(_Signature))>(gmock_a##_i)
 
-#define GMOCK_INTERNAL_MATCHER_PARAMETER(_i, _Signature, _)    \
-  GMOCK_PP_COMMA_IF(_i)                                        \
-  GMOCK_INTERNAL_MATCHER_O(typename, GMOCK_PP_INC(_i),         \
-                           GMOCK_PP_REMOVE_PARENS(_Signature)) \
+#define GMOCK_INTERNAL_MATCHER_PARAMETER(_i, _Signature, _)        \
+  GMOCK_PP_COMMA_IF(_i)                                            \
+  GMOCK_INTERNAL_MATCHER_O(_i, GMOCK_PP_REMOVE_PARENS(_Signature)) \
   gmock_a##_i
 
 #define GMOCK_INTERNAL_MATCHER_ARGUMENT(_i, _1, _2) \
   GMOCK_PP_COMMA_IF(_i)                             \
   gmock_a##_i
 
-#define GMOCK_INTERNAL_A_MATCHER_ARGUMENT(_i, _Signature, _)    \
-  GMOCK_PP_COMMA_IF(_i)                                         \
-  ::testing::A<GMOCK_INTERNAL_ARG_O(typename, GMOCK_PP_INC(_i), \
-                                    GMOCK_PP_REMOVE_PARENS(_Signature))>()
-
-#define GMOCK_INTERNAL_ARG_O(_tn, _i, ...) GMOCK_ARG_(_tn, _i, __VA_ARGS__)
-
-#define GMOCK_INTERNAL_MATCHER_O(_tn, _i, ...) \
-  GMOCK_MATCHER_(_tn, _i, __VA_ARGS__)
+#define GMOCK_INTERNAL_A_MATCHER_ARGUMENT(_i, _Signature, _) \
+  GMOCK_PP_COMMA_IF(_i)                                      \
+  ::testing::A<GMOCK_INTERNAL_ARG_O(_i, GMOCK_PP_REMOVE_PARENS(_Signature))>()
+
+#define GMOCK_INTERNAL_ARG_O(_i, ...) \
+  typename ::testing::internal::Function<__VA_ARGS__>::template Arg<_i>::type
+
+#define GMOCK_INTERNAL_MATCHER_O(_i, ...)                          \
+  const ::testing::Matcher<typename ::testing::internal::Function< \
+      __VA_ARGS__>::template Arg<_i>::type>&
+
+#define MOCK_METHOD0(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 0, __VA_ARGS__)
+#define MOCK_METHOD1(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 1, __VA_ARGS__)
+#define MOCK_METHOD2(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 2, __VA_ARGS__)
+#define MOCK_METHOD3(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 3, __VA_ARGS__)
+#define MOCK_METHOD4(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 4, __VA_ARGS__)
+#define MOCK_METHOD5(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 5, __VA_ARGS__)
+#define MOCK_METHOD6(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 6, __VA_ARGS__)
+#define MOCK_METHOD7(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 7, __VA_ARGS__)
+#define MOCK_METHOD8(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 8, __VA_ARGS__)
+#define MOCK_METHOD9(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 9, __VA_ARGS__)
+#define MOCK_METHOD10(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, , m, 10, __VA_ARGS__)
+
+#define MOCK_CONST_METHOD0(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 0, __VA_ARGS__)
+#define MOCK_CONST_METHOD1(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 1, __VA_ARGS__)
+#define MOCK_CONST_METHOD2(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 2, __VA_ARGS__)
+#define MOCK_CONST_METHOD3(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 3, __VA_ARGS__)
+#define MOCK_CONST_METHOD4(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 4, __VA_ARGS__)
+#define MOCK_CONST_METHOD5(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 5, __VA_ARGS__)
+#define MOCK_CONST_METHOD6(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 6, __VA_ARGS__)
+#define MOCK_CONST_METHOD7(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 7, __VA_ARGS__)
+#define MOCK_CONST_METHOD8(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 8, __VA_ARGS__)
+#define MOCK_CONST_METHOD9(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 9, __VA_ARGS__)
+#define MOCK_CONST_METHOD10(m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, , m, 10, __VA_ARGS__)
+
+#define MOCK_METHOD0_T(m, ...) MOCK_METHOD0(m, __VA_ARGS__)
+#define MOCK_METHOD1_T(m, ...) MOCK_METHOD1(m, __VA_ARGS__)
+#define MOCK_METHOD2_T(m, ...) MOCK_METHOD2(m, __VA_ARGS__)
+#define MOCK_METHOD3_T(m, ...) MOCK_METHOD3(m, __VA_ARGS__)
+#define MOCK_METHOD4_T(m, ...) MOCK_METHOD4(m, __VA_ARGS__)
+#define MOCK_METHOD5_T(m, ...) MOCK_METHOD5(m, __VA_ARGS__)
+#define MOCK_METHOD6_T(m, ...) MOCK_METHOD6(m, __VA_ARGS__)
+#define MOCK_METHOD7_T(m, ...) MOCK_METHOD7(m, __VA_ARGS__)
+#define MOCK_METHOD8_T(m, ...) MOCK_METHOD8(m, __VA_ARGS__)
+#define MOCK_METHOD9_T(m, ...) MOCK_METHOD9(m, __VA_ARGS__)
+#define MOCK_METHOD10_T(m, ...) MOCK_METHOD10(m, __VA_ARGS__)
+
+#define MOCK_CONST_METHOD0_T(m, ...) MOCK_CONST_METHOD0(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD1_T(m, ...) MOCK_CONST_METHOD1(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD2_T(m, ...) MOCK_CONST_METHOD2(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD3_T(m, ...) MOCK_CONST_METHOD3(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD4_T(m, ...) MOCK_CONST_METHOD4(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD5_T(m, ...) MOCK_CONST_METHOD5(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD6_T(m, ...) MOCK_CONST_METHOD6(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD7_T(m, ...) MOCK_CONST_METHOD7(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD8_T(m, ...) MOCK_CONST_METHOD8(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD9_T(m, ...) MOCK_CONST_METHOD9(m, __VA_ARGS__)
+#define MOCK_CONST_METHOD10_T(m, ...) MOCK_CONST_METHOD10(m, __VA_ARGS__)
+
+#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 0, __VA_ARGS__)
+#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 1, __VA_ARGS__)
+#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 2, __VA_ARGS__)
+#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 3, __VA_ARGS__)
+#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 4, __VA_ARGS__)
+#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 5, __VA_ARGS__)
+#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 6, __VA_ARGS__)
+#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 7, __VA_ARGS__)
+#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 8, __VA_ARGS__)
+#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 9, __VA_ARGS__)
+#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 10, __VA_ARGS__)
+
+#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 0, __VA_ARGS__)
+#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 1, __VA_ARGS__)
+#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 2, __VA_ARGS__)
+#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 3, __VA_ARGS__)
+#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 4, __VA_ARGS__)
+#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 5, __VA_ARGS__)
+#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 6, __VA_ARGS__)
+#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 7, __VA_ARGS__)
+#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 8, __VA_ARGS__)
+#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 9, __VA_ARGS__)
+#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, ...) \
+  GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 10, __VA_ARGS__)
+
+#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD0_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD1_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD2_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD3_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD4_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD5_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD6_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD7_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD8_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD9_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_METHOD10_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+
+#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
+  MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, __VA_ARGS__)
+
+#define GMOCK_INTERNAL_MOCK_METHODN(constness, ct, Method, args_num, ...) \
+  GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(                                  \
+      args_num, ::testing::internal::identity_t<__VA_ARGS__>);            \
+  GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                        \
+      args_num, Method, GMOCK_PP_NARG0(constness), 0, 0, , ct, ,          \
+      (::testing::internal::identity_t<__VA_ARGS__>))
+
+#define GMOCK_MOCKER_(arity, constness, Method) \
+  GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
 
 #endif  // THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_
index c78debef0773e2a3030b015c2f7255590399d3e5..62909ea08da4388d8d9b7b9a2d8f1ba16f79cfb4 100644 (file)
@@ -47,6 +47,8 @@
 #include "gmock/gmock-actions.h"
 #include "gmock/internal/gmock-port.h"
 
+// Include any custom callback actions added by the local installation.
+#include "gmock/internal/custom/gmock-generated-actions.h"
 
 // Sometimes you want to give an action explicit template parameters
 // that cannot be inferred from its value parameters.  ACTION() and
         p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)), \
         p9(::std::move(gmock_p9))
 
+// Defines the copy constructor
+#define GMOCK_INTERNAL_DEFN_COPY_AND_0_VALUE_PARAMS() \
+    noexcept {}  // Avoid https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82134
+#define GMOCK_INTERNAL_DEFN_COPY_AND_1_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_2_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_3_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_4_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_5_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_6_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_7_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_8_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_9_VALUE_PARAMS(...) = default;
+#define GMOCK_INTERNAL_DEFN_COPY_AND_10_VALUE_PARAMS(...) = default;
+
 // Declares the fields for storing the value parameters.
 #define GMOCK_INTERNAL_DEFN_AND_0_VALUE_PARAMS()
 #define GMOCK_INTERNAL_DEFN_AND_1_VALUE_PARAMS(p0) p0##_type p0;
 #define GMOCK_ACTION_CLASS_(name, value_params)\
     GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params)
 
-#define ACTION_TEMPLATE(name, template_params, value_params)\
-  template <GMOCK_INTERNAL_DECL_##template_params\
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
-  class GMOCK_ACTION_CLASS_(name, value_params) {\
-   public:\
-    explicit GMOCK_ACTION_CLASS_(name, value_params)\
-        GMOCK_INTERNAL_INIT_##value_params {}\
-    template <typename F>\
-    class gmock_Impl : public ::testing::ActionInterface<F> {\
-     public:\
-      typedef F function_type;\
-      typedef typename ::testing::internal::Function<F>::Result return_type;\
-      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
-          args_type;\
-      explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}\
-      return_type Perform(const args_type& args) override {\
-        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
-            Perform(this, args);\
-      }\
-      template <GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>\
-      return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const;\
-      GMOCK_INTERNAL_DEFN_##value_params\
-     private:\
-      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
-    };\
-    template <typename F> operator ::testing::Action<F>() const {\
-      return ::testing::Action<F>(\
-          new gmock_Impl<F>(GMOCK_INTERNAL_LIST_##value_params));\
-    }\
-    GMOCK_INTERNAL_DEFN_##value_params\
-   private:\
-    GTEST_DISALLOW_ASSIGN_(GMOCK_ACTION_CLASS_(name, value_params));\
-  };\
-  template <GMOCK_INTERNAL_DECL_##template_params\
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
-  inline GMOCK_ACTION_CLASS_(name, value_params)<\
-      GMOCK_INTERNAL_LIST_##template_params\
-      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(\
-          GMOCK_INTERNAL_DECL_##value_params) {\
-    return GMOCK_ACTION_CLASS_(name, value_params)<\
-        GMOCK_INTERNAL_LIST_##template_params\
-        GMOCK_INTERNAL_LIST_TYPE_##value_params>(\
-            GMOCK_INTERNAL_LIST_##value_params);\
-  }\
-  template <GMOCK_INTERNAL_DECL_##template_params\
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
-  template <typename F>\
-  template <GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>\
-  typename ::testing::internal::Function<F>::Result\
-      GMOCK_ACTION_CLASS_(name, value_params)<\
-          GMOCK_INTERNAL_LIST_##template_params\
-          GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl<F>::\
-              gmock_PerformImpl(\
+#define ACTION_TEMPLATE(name, template_params, value_params)                   \
+  template <GMOCK_INTERNAL_DECL_##template_params                              \
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
+  class GMOCK_ACTION_CLASS_(name, value_params) {                              \
+   public:                                                                     \
+    explicit GMOCK_ACTION_CLASS_(name, value_params)(                          \
+        GMOCK_INTERNAL_DECL_##value_params)                                    \
+        GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),    \
+                    = default; ,                                               \
+                    : impl_(std::make_shared<gmock_Impl>(                      \
+                                GMOCK_INTERNAL_LIST_##value_params)) { })      \
+    GMOCK_ACTION_CLASS_(name, value_params)(                                   \
+        const GMOCK_ACTION_CLASS_(name, value_params)&)                        \
+        GMOCK_INTERNAL_DEFN_COPY_##value_params                                \
+    GMOCK_ACTION_CLASS_(name, value_params)(                                   \
+        GMOCK_ACTION_CLASS_(name, value_params)&&)                             \
+        GMOCK_INTERNAL_DEFN_COPY_##value_params                                \
+    template <typename F>                                                      \
+    operator ::testing::Action<F>() const {                                    \
+      return GMOCK_PP_IF(                                                      \
+          GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),              \
+                      (::testing::internal::MakeAction<F, gmock_Impl>()),      \
+                      (::testing::internal::MakeAction<F>(impl_)));            \
+    }                                                                          \
+   private:                                                                    \
+    class gmock_Impl {                                                         \
+     public:                                                                   \
+      explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}                \
+      template <typename function_type, typename return_type,                  \
+                typename args_type, GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>         \
+      return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const;  \
+      GMOCK_INTERNAL_DEFN_##value_params                                       \
+    };                                                                         \
+    GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),        \
+                , std::shared_ptr<const gmock_Impl> impl_;)                    \
+  };                                                                           \
+  template <GMOCK_INTERNAL_DECL_##template_params                              \
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
+  GMOCK_ACTION_CLASS_(name, value_params)<                                     \
+      GMOCK_INTERNAL_LIST_##template_params                                    \
+      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(                           \
+          GMOCK_INTERNAL_DECL_##value_params) GTEST_MUST_USE_RESULT_;          \
+  template <GMOCK_INTERNAL_DECL_##template_params                              \
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
+  inline GMOCK_ACTION_CLASS_(name, value_params)<                              \
+      GMOCK_INTERNAL_LIST_##template_params                                    \
+      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(                           \
+          GMOCK_INTERNAL_DECL_##value_params) {                                \
+    return GMOCK_ACTION_CLASS_(name, value_params)<                            \
+        GMOCK_INTERNAL_LIST_##template_params                                  \
+        GMOCK_INTERNAL_LIST_TYPE_##value_params>(                              \
+            GMOCK_INTERNAL_LIST_##value_params);                               \
+  }                                                                            \
+  template <GMOCK_INTERNAL_DECL_##template_params                              \
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
+  template <typename function_type, typename return_type, typename args_type,  \
+            GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                 \
+  return_type GMOCK_ACTION_CLASS_(name, value_params)<                         \
+      GMOCK_INTERNAL_LIST_##template_params                                    \
+      GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl::gmock_PerformImpl( \
           GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
 
-
 namespace testing {
 
-
 // The ACTION*() macros trigger warning C4100 (unreferenced formal
 // parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
 // the macro definition, as the warnings are generated when the macro
@@ -482,8 +503,37 @@ namespace testing {
 # pragma warning(disable:4100)
 #endif
 
-// Various overloads for InvokeArgument<N>().
-//
+namespace internal {
+
+// internal::InvokeArgument - a helper for InvokeArgument action.
+// The basic overloads are provided here for generic functors.
+// Overloads for other custom-callables are provided in the
+// internal/custom/gmock-generated-actions.h header.
+template <typename F, typename... Args>
+auto InvokeArgument(F f, Args... args) -> decltype(f(args...)) {
+  return f(args...);
+}
+
+template <std::size_t index, typename... Params>
+struct InvokeArgumentAction {
+  template <typename... Args>
+  auto operator()(Args&&... args) const -> decltype(internal::InvokeArgument(
+      std::get<index>(std::forward_as_tuple(std::forward<Args>(args)...)),
+      std::declval<const Params&>()...)) {
+    internal::FlatTuple<Args&&...> args_tuple(FlatTupleConstructTag{},
+                                              std::forward<Args>(args)...);
+    return params.Apply([&](const Params&... unpacked_params) {
+      auto&& callable = args_tuple.template Get<index>();
+      return internal::InvokeArgument(
+          std::forward<decltype(callable)>(callable), unpacked_params...);
+    });
+  }
+
+  internal::FlatTuple<Params...> params;
+};
+
+}  // namespace internal
+
 // The InvokeArgument<N>(a1, a2, ..., a_k) action invokes the N-th
 // (0-based) argument, which must be a k-ary callable, of the mock
 // function, with arguments a1, a2, ..., a_k.
@@ -491,15 +541,15 @@ namespace testing {
 // Notes:
 //
 //   1. The arguments are passed by value by default.  If you need to
-//   pass an argument by reference, wrap it inside ByRef().  For
+//   pass an argument by reference, wrap it inside std::ref().  For
 //   example,
 //
-//     InvokeArgument<1>(5, string("Hello"), ByRef(foo))
+//     InvokeArgument<1>(5, string("Hello"), std::ref(foo))
 //
 //   passes 5 and string("Hello") by value, and passes foo by
 //   reference.
 //
-//   2. If the callable takes an argument by reference but ByRef() is
+//   2. If the callable takes an argument by reference but std::ref() is
 //   not used, it will receive the reference to a copy of the value,
 //   instead of the original value.  For example, when the 0-th
 //   argument of the mock function takes a const string&, the action
@@ -511,166 +561,11 @@ namespace testing {
 //   to the callable.  This makes it easy for a user to define an
 //   InvokeArgument action from temporary values and have it performed
 //   later.
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_0_VALUE_PARAMS()) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args));
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_1_VALUE_PARAMS(p0)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_2_VALUE_PARAMS(p0, p1)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_3_VALUE_PARAMS(p0, p1, p2)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1, p2);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_4_VALUE_PARAMS(p0, p1, p2, p3)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1, p2, p3);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1, p2, p3, p4);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1, p2, p3, p4, p5);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1, p2, p3, p4, p5, p6);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1, p2, p3, p4, p5, p6, p7);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1, p2, p3, p4, p5, p6, p7,
-                               p8);
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args), p0, p1, p2, p3, p4, p5, p6, p7,
-                               p8, p9);
-}
-
-// Various overloads for ReturnNew<T>().
-//
-// The ReturnNew<T>(a1, a2, ..., a_k) action returns a pointer to a new
-// instance of type T, constructed on the heap with constructor arguments
-// a1, a2, ..., and a_k. The caller assumes ownership of the returned value.
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_0_VALUE_PARAMS()) {
-  return new T();
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_1_VALUE_PARAMS(p0)) {
-  return new T(p0);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_2_VALUE_PARAMS(p0, p1)) {
-  return new T(p0, p1);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_3_VALUE_PARAMS(p0, p1, p2)) {
-  return new T(p0, p1, p2);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_4_VALUE_PARAMS(p0, p1, p2, p3)) {
-  return new T(p0, p1, p2, p3);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)) {
-  return new T(p0, p1, p2, p3, p4);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)) {
-  return new T(p0, p1, p2, p3, p4, p5);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)) {
-  return new T(p0, p1, p2, p3, p4, p5, p6);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)) {
-  return new T(p0, p1, p2, p3, p4, p5, p6, p7);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
-  return new T(p0, p1, p2, p3, p4, p5, p6, p7, p8);
-}
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
-  return new T(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
+template <std::size_t index, typename... Params>
+internal::InvokeArgumentAction<index, typename std::decay<Params>::type...>
+InvokeArgument(Params&&... params) {
+  return {internal::FlatTuple<typename std::decay<Params>::type...>(
+      internal::FlatTupleConstructTag{}, std::forward<Params>(params)...)};
 }
 
 #ifdef _MSC_VER
@@ -679,9 +574,4 @@ ACTION_TEMPLATE(ReturnNew,
 
 }  // namespace testing
 
-// Include any custom callback actions added by the local installation.
-// We must include this header at the end to make sure it can use the
-// declarations from this file.
-#include "gmock/internal/custom/gmock-generated-actions.h"
-
 #endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
index be9d99fed20b092cf0e2acfd3253d6ea7b48bda9..982caf9c3e9cca9b8697764862546d4a564ce8a0 100644 (file)
@@ -49,10 +49,12 @@ $$}} This meta comment fixes auto-indentation in editors.
 #include "gmock/gmock-actions.h"
 #include "gmock/internal/gmock-port.h"
 
+// Include any custom callback actions added by the local installation.
+#include "gmock/internal/custom/gmock-generated-actions.h"
+
 $range i 0..n
 $range k 0..n-1
 
-
 // Sometimes you want to give an action explicit template parameters
 // that cannot be inferred from its value parameters.  ACTION() and
 // ACTION_P*() don't support that.  ACTION_TEMPLATE() remedies that
@@ -173,6 +175,16 @@ $range j 0..i-1
     ($for j, [[p$j##_type gmock_p$j]])$if i>0 [[ : ]]$for j, [[p$j(::std::move(gmock_p$j))]]
 
 
+]]
+
+// Defines the copy constructor
+
+$for i [[
+#define GMOCK_INTERNAL_DEFN_COPY_AND_$i[[]]_VALUE_PARAMS$if i == 0[[() \
+    noexcept {}  // Avoid https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82134
+]] $else [[(...) = default;]]
+
+
 ]]
 
 // Declares the fields for storing the value parameters.
@@ -231,65 +243,70 @@ $if i==1 [[P]] $elif i>=2 [[P$i]]
 
 $range k 0..n-1
 
-#define ACTION_TEMPLATE(name, template_params, value_params)\
-  template <GMOCK_INTERNAL_DECL_##template_params\
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
-  class GMOCK_ACTION_CLASS_(name, value_params) {\
-   public:\
-    explicit GMOCK_ACTION_CLASS_(name, value_params)\
-        GMOCK_INTERNAL_INIT_##value_params {}\
-    template <typename F>\
-    class gmock_Impl : public ::testing::ActionInterface<F> {\
-     public:\
-      typedef F function_type;\
-      typedef typename ::testing::internal::Function<F>::Result return_type;\
-      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
-          args_type;\
-      explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}\
-      return_type Perform(const args_type& args) override {\
-        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
-            Perform(this, args);\
-      }\
-      template <GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>\
-      return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const;\
-      GMOCK_INTERNAL_DEFN_##value_params\
-     private:\
-      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
-    };\
-    template <typename F> operator ::testing::Action<F>() const {\
-      return ::testing::Action<F>(\
-          new gmock_Impl<F>(GMOCK_INTERNAL_LIST_##value_params));\
-    }\
-    GMOCK_INTERNAL_DEFN_##value_params\
-   private:\
-    GTEST_DISALLOW_ASSIGN_(GMOCK_ACTION_CLASS_(name, value_params));\
-  };\
-  template <GMOCK_INTERNAL_DECL_##template_params\
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
-  inline GMOCK_ACTION_CLASS_(name, value_params)<\
-      GMOCK_INTERNAL_LIST_##template_params\
-      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(\
-          GMOCK_INTERNAL_DECL_##value_params) {\
-    return GMOCK_ACTION_CLASS_(name, value_params)<\
-        GMOCK_INTERNAL_LIST_##template_params\
-        GMOCK_INTERNAL_LIST_TYPE_##value_params>(\
-            GMOCK_INTERNAL_LIST_##value_params);\
-  }\
-  template <GMOCK_INTERNAL_DECL_##template_params\
-            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
-  template <typename F>\
-  template <GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>\
-  typename ::testing::internal::Function<F>::Result\
-      GMOCK_ACTION_CLASS_(name, value_params)<\
-          GMOCK_INTERNAL_LIST_##template_params\
-          GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl<F>::\
-              gmock_PerformImpl(\
+#define ACTION_TEMPLATE(name, template_params, value_params)                   \
+  template <GMOCK_INTERNAL_DECL_##template_params                              \
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
+  class GMOCK_ACTION_CLASS_(name, value_params) {                              \
+   public:                                                                     \
+    explicit GMOCK_ACTION_CLASS_(name, value_params)(                          \
+        GMOCK_INTERNAL_DECL_##value_params)                                    \
+        GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),    \
+                    = default; ,                                               \
+                    : impl_(std::make_shared<gmock_Impl>(                      \
+                                GMOCK_INTERNAL_LIST_##value_params)) { })      \
+    GMOCK_ACTION_CLASS_(name, value_params)(                                   \
+        const GMOCK_ACTION_CLASS_(name, value_params)&)                        \
+        GMOCK_INTERNAL_DEFN_COPY_##value_params                                \
+    GMOCK_ACTION_CLASS_(name, value_params)(                                   \
+        GMOCK_ACTION_CLASS_(name, value_params)&&)                             \
+        GMOCK_INTERNAL_DEFN_COPY_##value_params                                \
+    template <typename F>                                                      \
+    operator ::testing::Action<F>() const {                                    \
+      return GMOCK_PP_IF(                                                      \
+          GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),              \
+                      (::testing::internal::MakeAction<F, gmock_Impl>()),      \
+                      (::testing::internal::MakeAction<F>(impl_)));            \
+    }                                                                          \
+   private:                                                                    \
+    class gmock_Impl {                                                         \
+     public:                                                                   \
+      explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}                \
+      template <typename function_type, typename return_type,                  \
+                typename args_type, GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>         \
+      return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const;  \
+      GMOCK_INTERNAL_DEFN_##value_params                                       \
+    };                                                                         \
+    GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params),        \
+                , std::shared_ptr<const gmock_Impl> impl_;)                    \
+  };                                                                           \
+  template <GMOCK_INTERNAL_DECL_##template_params                              \
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
+  GMOCK_ACTION_CLASS_(name, value_params)<                                     \
+      GMOCK_INTERNAL_LIST_##template_params                                    \
+      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(                           \
+          GMOCK_INTERNAL_DECL_##value_params) GTEST_MUST_USE_RESULT_;          \
+  template <GMOCK_INTERNAL_DECL_##template_params                              \
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
+  inline GMOCK_ACTION_CLASS_(name, value_params)<                              \
+      GMOCK_INTERNAL_LIST_##template_params                                    \
+      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(                           \
+          GMOCK_INTERNAL_DECL_##value_params) {                                \
+    return GMOCK_ACTION_CLASS_(name, value_params)<                            \
+        GMOCK_INTERNAL_LIST_##template_params                                  \
+        GMOCK_INTERNAL_LIST_TYPE_##value_params>(                              \
+            GMOCK_INTERNAL_LIST_##value_params);                               \
+  }                                                                            \
+  template <GMOCK_INTERNAL_DECL_##template_params                              \
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>                           \
+  template <typename function_type, typename return_type, typename args_type,  \
+            GMOCK_ACTION_TEMPLATE_ARGS_NAMES_>                                 \
+  return_type GMOCK_ACTION_CLASS_(name, value_params)<                         \
+      GMOCK_INTERNAL_LIST_##template_params                                    \
+      GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl::gmock_PerformImpl( \
           GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
 
-
 namespace testing {
 
-
 // The ACTION*() macros trigger warning C4100 (unreferenced formal
 // parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
 // the macro definition, as the warnings are generated when the macro
@@ -300,8 +317,36 @@ namespace testing {
 # pragma warning(disable:4100)
 #endif
 
-// Various overloads for InvokeArgument<N>().
-//
+namespace internal {
+
+// internal::InvokeArgument - a helper for InvokeArgument action.
+// The basic overloads are provided here for generic functors.
+// Overloads for other custom-callables are provided in the
+// internal/custom/gmock-generated-actions.h header.
+template <typename F, typename... Args>
+auto InvokeArgument(F f, Args... args) -> decltype(f(args...)) {
+  return f(args...);
+}
+
+template <std::size_t index, typename... Params>
+struct InvokeArgumentAction {
+  template <typename... Args>
+  auto operator()(Args&&... args) const -> decltype(internal::InvokeArgument(
+      std::get<index>(std::forward_as_tuple(std::forward<Args>(args)...)),
+      std::declval<const Params&>()...)) {
+    internal::FlatTuple<Args&&...> args_tuple(std::forward<Args>(args)...);
+    return params.Apply([&](const Params&... unpacked_params) {
+      auto&& callable = args_tuple.template Get<index>();
+      return internal::InvokeArgument(
+          std::forward<decltype(callable)>(callable), unpacked_params...);
+    });
+  }
+
+  internal::FlatTuple<Params...> params;
+};
+
+}  // namespace internal
+
 // The InvokeArgument<N>(a1, a2, ..., a_k) action invokes the N-th
 // (0-based) argument, which must be a k-ary callable, of the mock
 // function, with arguments a1, a2, ..., a_k.
@@ -309,15 +354,15 @@ namespace testing {
 // Notes:
 //
 //   1. The arguments are passed by value by default.  If you need to
-//   pass an argument by reference, wrap it inside ByRef().  For
+//   pass an argument by reference, wrap it inside std::ref().  For
 //   example,
 //
-//     InvokeArgument<1>(5, string("Hello"), ByRef(foo))
+//     InvokeArgument<1>(5, string("Hello"), std::ref(foo))
 //
 //   passes 5 and string("Hello") by value, and passes foo by
 //   reference.
 //
-//   2. If the callable takes an argument by reference but ByRef() is
+//   2. If the callable takes an argument by reference but std::ref() is
 //   not used, it will receive the reference to a copy of the value,
 //   instead of the original value.  For example, when the 0-th
 //   argument of the mock function takes a const string&, the action
@@ -329,48 +374,17 @@ namespace testing {
 //   to the callable.  This makes it easy for a user to define an
 //   InvokeArgument action from temporary values and have it performed
 //   later.
-
-$range i 0..n
-$for i [[
-$range j 0..i-1
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]])) {
-  using internal::invoke_argument::InvokeArgumentAdl;
-  return InvokeArgumentAdl(internal::invoke_argument::AdlTag(),
-                           ::std::get<k>(args)$for j[[, p$j]]);
-}
-
-]]
-
-// Various overloads for ReturnNew<T>().
-//
-// The ReturnNew<T>(a1, a2, ..., a_k) action returns a pointer to a new
-// instance of type T, constructed on the heap with constructor arguments
-// a1, a2, ..., and a_k. The caller assumes ownership of the returned value.
-$range i 0..n
-$for i [[
-$range j 0..i-1
-$var ps = [[$for j, [[p$j]]]]
-
-ACTION_TEMPLATE(ReturnNew,
-                HAS_1_TEMPLATE_PARAMS(typename, T),
-                AND_$i[[]]_VALUE_PARAMS($ps)) {
-  return new T($ps);
+template <std::size_t index, typename... Params>
+internal::InvokeArgumentAction<index, typename std::decay<Params>::type...>
+InvokeArgument(Params&&... params) {
+  return {internal::FlatTuple<typename std::decay<Params>::type...>(
+      std::forward<Params>(params)...)};
 }
 
-]]
-
 #ifdef _MSC_VER
 # pragma warning(pop)
 #endif
 
 }  // namespace testing
 
-// Include any custom callback actions added by the local installation.
-// We must include this header at the end to make sure it can use the
-// declarations from this file.
-#include "gmock/internal/custom/gmock-generated-actions.h"
-
 #endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
diff --git a/ceph/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h b/ceph/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h
deleted file mode 100644 (file)
index cd95781..0000000
+++ /dev/null
@@ -1,752 +0,0 @@
-// This file was GENERATED by command:
-//     pump.py gmock-generated-function-mockers.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements function mockers of various arities.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
-#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
-
-#include <functional>
-#include <utility>
-
-#include "gmock/gmock-spec-builders.h"
-#include "gmock/internal/gmock-internal-utils.h"
-
-namespace testing {
-namespace internal {
-// Removes the given pointer; this is a helper for the expectation setter method
-// for parameterless matchers.
-//
-// We want to make sure that the user cannot set a parameterless expectation on
-// overloaded methods, including methods which are overloaded on const. Example:
-//
-//   class MockClass {
-//     MOCK_METHOD0(GetName, string&());
-//     MOCK_CONST_METHOD0(GetName, const string&());
-//   };
-//
-//   TEST() {
-//     // This should be an error, as it's not clear which overload is expected.
-//     EXPECT_CALL(mock, GetName).WillOnce(ReturnRef(value));
-//   }
-//
-// Here are the generated expectation-setter methods:
-//
-//   class MockClass {
-//     // Overload 1
-//     MockSpec<string&()> gmock_GetName() { ... }
-//     // Overload 2. Declared const so that the compiler will generate an
-//     // error when trying to resolve between this and overload 4 in
-//     // 'gmock_GetName(WithoutMatchers(), nullptr)'.
-//     MockSpec<string&()> gmock_GetName(
-//         const WithoutMatchers&, const Function<string&()>*) const {
-//       // Removes const from this, calls overload 1
-//       return AdjustConstness_(this)->gmock_GetName();
-//     }
-//
-//     // Overload 3
-//     const string& gmock_GetName() const { ... }
-//     // Overload 4
-//     MockSpec<const string&()> gmock_GetName(
-//         const WithoutMatchers&, const Function<const string&()>*) const {
-//       // Does not remove const, calls overload 3
-//       return AdjustConstness_const(this)->gmock_GetName();
-//     }
-//   }
-//
-template <typename MockType>
-const MockType* AdjustConstness_const(const MockType* mock) {
-  return mock;
-}
-
-// Removes const from and returns the given pointer; this is a helper for the
-// expectation setter method for parameterless matchers.
-template <typename MockType>
-MockType* AdjustConstness_(const MockType* mock) {
-  return const_cast<MockType*>(mock);
-}
-
-}  // namespace internal
-
-// The style guide prohibits "using" statements in a namespace scope
-// inside a header file.  However, the FunctionMocker class template
-// is meant to be defined in the ::testing namespace.  The following
-// line is just a trick for working around a bug in MSVC 8.0, which
-// cannot handle it if we define FunctionMocker in ::testing.
-using internal::FunctionMocker;
-
-// GMOCK_RESULT_(tn, F) expands to the result type of function type F.
-// We define this as a variadic macro in case F contains unprotected
-// commas (the same reason that we use variadic macros in other places
-// in this file).
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_RESULT_(tn, ...) \
-    tn ::testing::internal::Function<__VA_ARGS__>::Result
-
-// The type of argument N of the given function type.
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_ARG_(tn, N, ...) \
-    tn ::testing::internal::Function<__VA_ARGS__>::template Arg<N-1>::type
-
-// The matcher type for argument N of the given function type.
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_MATCHER_(tn, N, ...) \
-    const ::testing::Matcher<GMOCK_ARG_(tn, N, __VA_ARGS__)>&
-
-// The variable for mocking the given method.
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_MOCKER_(arity, constness, Method) \
-    GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD0_(tn, constness, ct, Method, ...) \
-  static_assert(0 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      ) constness { \
-    GMOCK_MOCKER_(0, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(0, constness, Method).Invoke(); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method() constness { \
-    GMOCK_MOCKER_(0, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(0, constness, Method).With(); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(0, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD1_(tn, constness, ct, Method, ...) \
-  static_assert(1 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1) constness { \
-    GMOCK_MOCKER_(1, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(1, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1) constness { \
-    GMOCK_MOCKER_(1, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(1, constness, Method).With(gmock_a1); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(1, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD2_(tn, constness, ct, Method, ...) \
-  static_assert(2 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2) constness { \
-    GMOCK_MOCKER_(2, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(2, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2) constness { \
-    GMOCK_MOCKER_(2, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(2, constness, Method).With(gmock_a1, gmock_a2); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(2, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD3_(tn, constness, ct, Method, ...) \
-  static_assert(3 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, \
-          __VA_ARGS__) gmock_a3) constness { \
-    GMOCK_MOCKER_(3, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(3, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
-  ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
-                     GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3) constness { \
-    GMOCK_MOCKER_(3, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(3, constness, Method).With(gmock_a1, gmock_a2, \
-        gmock_a3); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(3, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD4_(tn, constness, ct, Method, ...) \
-  static_assert(4 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
-          GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4) constness { \
-    GMOCK_MOCKER_(4, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(4, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
-  ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
-  ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
-                     GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
-                     GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4) constness { \
-    GMOCK_MOCKER_(4, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(4, constness, Method).With(gmock_a1, gmock_a2, \
-        gmock_a3, gmock_a4); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(4, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD5_(tn, constness, ct, Method, ...) \
-  static_assert(5 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
-          GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
-          __VA_ARGS__) gmock_a5) constness { \
-    GMOCK_MOCKER_(5, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(5, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
-  ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
-  ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
-  ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
-                     GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
-                     GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
-                     GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5) constness { \
-    GMOCK_MOCKER_(5, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(5, constness, Method).With(gmock_a1, gmock_a2, \
-        gmock_a3, gmock_a4, gmock_a5); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(5, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD6_(tn, constness, ct, Method, ...) \
-  static_assert(6 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
-          GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
-          __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, \
-          __VA_ARGS__) gmock_a6) constness { \
-    GMOCK_MOCKER_(6, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(6, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
-  ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
-  ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
-  ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
-  ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
-                     GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
-                     GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
-                     GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
-                     GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6) constness { \
-    GMOCK_MOCKER_(6, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(6, constness, Method).With(gmock_a1, gmock_a2, \
-        gmock_a3, gmock_a4, gmock_a5, gmock_a6); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(6, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD7_(tn, constness, ct, Method, ...) \
-  static_assert(7 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
-          GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
-          __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \
-          GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7) constness { \
-    GMOCK_MOCKER_(7, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(7, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
-  ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
-  ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
-  ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
-  ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6), \
-  ::std::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(gmock_a7)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
-                     GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
-                     GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
-                     GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
-                     GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \
-                     GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7) constness { \
-    GMOCK_MOCKER_(7, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(7, constness, Method).With(gmock_a1, gmock_a2, \
-        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(7, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD8_(tn, constness, ct, Method, ...) \
-  static_assert(8 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
-          GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
-          __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \
-          GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \
-          __VA_ARGS__) gmock_a8) constness { \
-    GMOCK_MOCKER_(8, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(8, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
-  ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
-  ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
-  ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
-  ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6), \
-  ::std::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(gmock_a7), \
-  ::std::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(gmock_a8)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
-                     GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
-                     GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
-                     GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
-                     GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \
-                     GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \
-                     GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8) constness { \
-    GMOCK_MOCKER_(8, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(8, constness, Method).With(gmock_a1, gmock_a2, \
-        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(8, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD9_(tn, constness, ct, Method, ...) \
-  static_assert(9 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
-          GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
-          __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \
-          GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \
-          __VA_ARGS__) gmock_a8, GMOCK_ARG_(tn, 9, \
-          __VA_ARGS__) gmock_a9) constness { \
-    GMOCK_MOCKER_(9, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(9, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
-  ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
-  ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
-  ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
-  ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6), \
-  ::std::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(gmock_a7), \
-  ::std::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(gmock_a8), \
-  ::std::forward<GMOCK_ARG_(tn, 9, __VA_ARGS__)>(gmock_a9)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
-                     GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
-                     GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
-                     GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
-                     GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \
-                     GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \
-                     GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8, \
-                     GMOCK_MATCHER_(tn, 9, __VA_ARGS__) gmock_a9) constness { \
-    GMOCK_MOCKER_(9, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(9, constness, Method).With(gmock_a1, gmock_a2, \
-        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, \
-        gmock_a9); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 9, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(9, constness, \
-      Method)
-
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD10_(tn, constness, ct, Method, ...) \
-  static_assert(10 == \
-      ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
-      "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
-          __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
-          GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
-          __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \
-          GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \
-          __VA_ARGS__) gmock_a8, GMOCK_ARG_(tn, 9, __VA_ARGS__) gmock_a9, \
-          GMOCK_ARG_(tn, 10, __VA_ARGS__) gmock_a10) constness { \
-    GMOCK_MOCKER_(10, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_(10, constness, \
-        Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
-        __VA_ARGS__)>(gmock_a1), \
-  ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
-  ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
-  ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
-  ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
-  ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6), \
-  ::std::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(gmock_a7), \
-  ::std::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(gmock_a8), \
-  ::std::forward<GMOCK_ARG_(tn, 9, __VA_ARGS__)>(gmock_a9), \
-  ::std::forward<GMOCK_ARG_(tn, 10, __VA_ARGS__)>(gmock_a10)); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
-                     GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
-                     GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
-                     GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
-                     GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
-                     GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \
-                     GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \
-                     GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8, \
-                     GMOCK_MATCHER_(tn, 9, __VA_ARGS__) gmock_a9, \
-                     GMOCK_MATCHER_(tn, 10, \
-                         __VA_ARGS__) gmock_a10) constness { \
-    GMOCK_MOCKER_(10, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_(10, constness, Method).With(gmock_a1, gmock_a2, \
-        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, gmock_a9, \
-        gmock_a10); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 9, __VA_ARGS__)>(), \
-                     ::testing::A<GMOCK_ARG_(tn, 10, __VA_ARGS__)>()); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(10, constness, \
-      Method)
-
-#define MOCK_METHOD0(m, ...) GMOCK_METHOD0_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD1(m, ...) GMOCK_METHOD1_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD2(m, ...) GMOCK_METHOD2_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD3(m, ...) GMOCK_METHOD3_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD4(m, ...) GMOCK_METHOD4_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD5(m, ...) GMOCK_METHOD5_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD6(m, ...) GMOCK_METHOD6_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD7(m, ...) GMOCK_METHOD7_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD8(m, ...) GMOCK_METHOD8_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD9(m, ...) GMOCK_METHOD9_(, , , m, __VA_ARGS__)
-#define MOCK_METHOD10(m, ...) GMOCK_METHOD10_(, , , m, __VA_ARGS__)
-
-#define MOCK_CONST_METHOD0(m, ...) GMOCK_METHOD0_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD1(m, ...) GMOCK_METHOD1_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD2(m, ...) GMOCK_METHOD2_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD3(m, ...) GMOCK_METHOD3_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD4(m, ...) GMOCK_METHOD4_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD5(m, ...) GMOCK_METHOD5_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD6(m, ...) GMOCK_METHOD6_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD7(m, ...) GMOCK_METHOD7_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD8(m, ...) GMOCK_METHOD8_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD9(m, ...) GMOCK_METHOD9_(, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD10(m, ...) GMOCK_METHOD10_(, const, , m, __VA_ARGS__)
-
-#define MOCK_METHOD0_T(m, ...) GMOCK_METHOD0_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD1_T(m, ...) GMOCK_METHOD1_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD2_T(m, ...) GMOCK_METHOD2_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD3_T(m, ...) GMOCK_METHOD3_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD4_T(m, ...) GMOCK_METHOD4_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD5_T(m, ...) GMOCK_METHOD5_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD6_T(m, ...) GMOCK_METHOD6_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD7_T(m, ...) GMOCK_METHOD7_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD8_T(m, ...) GMOCK_METHOD8_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD9_T(m, ...) GMOCK_METHOD9_(typename, , , m, __VA_ARGS__)
-#define MOCK_METHOD10_T(m, ...) GMOCK_METHOD10_(typename, , , m, __VA_ARGS__)
-
-#define MOCK_CONST_METHOD0_T(m, ...) \
-    GMOCK_METHOD0_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD1_T(m, ...) \
-    GMOCK_METHOD1_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD2_T(m, ...) \
-    GMOCK_METHOD2_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD3_T(m, ...) \
-    GMOCK_METHOD3_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD4_T(m, ...) \
-    GMOCK_METHOD4_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD5_T(m, ...) \
-    GMOCK_METHOD5_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD6_T(m, ...) \
-    GMOCK_METHOD6_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD7_T(m, ...) \
-    GMOCK_METHOD7_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD8_T(m, ...) \
-    GMOCK_METHOD8_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD9_T(m, ...) \
-    GMOCK_METHOD9_(typename, const, , m, __VA_ARGS__)
-#define MOCK_CONST_METHOD10_T(m, ...) \
-    GMOCK_METHOD10_(typename, const, , m, __VA_ARGS__)
-
-#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD0_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD1_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD2_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD3_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD4_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD5_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD6_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD7_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD8_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD9_(, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD10_(, , ct, m, __VA_ARGS__)
-
-#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD0_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD1_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD2_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD3_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD4_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD5_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD6_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD7_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD8_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD9_(, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD10_(, const, ct, m, __VA_ARGS__)
-
-#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD0_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD1_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD2_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD3_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD4_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD5_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD6_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD7_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD8_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD9_(typename, , ct, m, __VA_ARGS__)
-#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD10_(typename, , ct, m, __VA_ARGS__)
-
-#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD0_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD1_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD2_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD3_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD4_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD5_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD6_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD7_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD8_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD9_(typename, const, ct, m, __VA_ARGS__)
-#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD10_(typename, const, ct, m, __VA_ARGS__)
-
-}  // namespace testing
-
-#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
diff --git a/ceph/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump b/ceph/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump
deleted file mode 100644 (file)
index a56e132..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-$$ -*- mode: c++; -*-
-$$ This is a Pump source file.  Please use Pump to convert
-$$ it to gmock-generated-function-mockers.h.
-$$
-$var n = 10  $$ The maximum arity we support.
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements function mockers of various arities.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
-#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
-
-#include <functional>
-#include <utility>
-
-#include "gmock/gmock-spec-builders.h"
-#include "gmock/internal/gmock-internal-utils.h"
-
-namespace testing {
-namespace internal {
-
-$range i 0..n
-// Removes the given pointer; this is a helper for the expectation setter method
-// for parameterless matchers.
-//
-// We want to make sure that the user cannot set a parameterless expectation on
-// overloaded methods, including methods which are overloaded on const. Example:
-//
-//   class MockClass {
-//     MOCK_METHOD0(GetName, string&());
-//     MOCK_CONST_METHOD0(GetName, const string&());
-//   };
-//
-//   TEST() {
-//     // This should be an error, as it's not clear which overload is expected.
-//     EXPECT_CALL(mock, GetName).WillOnce(ReturnRef(value));
-//   }
-//
-// Here are the generated expectation-setter methods:
-//
-//   class MockClass {
-//     // Overload 1
-//     MockSpec<string&()> gmock_GetName() { ... }
-//     // Overload 2. Declared const so that the compiler will generate an
-//     // error when trying to resolve between this and overload 4 in
-//     // 'gmock_GetName(WithoutMatchers(), nullptr)'.
-//     MockSpec<string&()> gmock_GetName(
-//         const WithoutMatchers&, const Function<string&()>*) const {
-//       // Removes const from this, calls overload 1
-//       return AdjustConstness_(this)->gmock_GetName();
-//     }
-//
-//     // Overload 3
-//     const string& gmock_GetName() const { ... }
-//     // Overload 4
-//     MockSpec<const string&()> gmock_GetName(
-//         const WithoutMatchers&, const Function<const string&()>*) const {
-//       // Does not remove const, calls overload 3
-//       return AdjustConstness_const(this)->gmock_GetName();
-//     }
-//   }
-//
-template <typename MockType>
-const MockType* AdjustConstness_const(const MockType* mock) {
-  return mock;
-}
-
-// Removes const from and returns the given pointer; this is a helper for the
-// expectation setter method for parameterless matchers.
-template <typename MockType>
-MockType* AdjustConstness_(const MockType* mock) {
-  return const_cast<MockType*>(mock);
-}
-
-}  // namespace internal
-
-// The style guide prohibits "using" statements in a namespace scope
-// inside a header file.  However, the FunctionMocker class template
-// is meant to be defined in the ::testing namespace.  The following
-// line is just a trick for working around a bug in MSVC 8.0, which
-// cannot handle it if we define FunctionMocker in ::testing.
-using internal::FunctionMocker;
-
-// GMOCK_RESULT_(tn, F) expands to the result type of function type F.
-// We define this as a variadic macro in case F contains unprotected
-// commas (the same reason that we use variadic macros in other places
-// in this file).
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_RESULT_(tn, ...) \
-    tn ::testing::internal::Function<__VA_ARGS__>::Result
-
-// The type of argument N of the given function type.
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_ARG_(tn, N, ...) \
-    tn ::testing::internal::Function<__VA_ARGS__>::template Arg<N-1>::type
-
-// The matcher type for argument N of the given function type.
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_MATCHER_(tn, N, ...) \
-    const ::testing::Matcher<GMOCK_ARG_(tn, N, __VA_ARGS__)>&
-
-// The variable for mocking the given method.
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_MOCKER_(arity, constness, Method) \
-    GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
-
-
-$for i [[
-$range j 1..i
-$var arg_as = [[$for j, [[GMOCK_ARG_(tn, $j, __VA_ARGS__) gmock_a$j]]]]
-$var as = [[$for j, \
-  [[::std::forward<GMOCK_ARG_(tn, $j, __VA_ARGS__)>(gmock_a$j)]]]]
-$var matcher_arg_as = [[$for j, \
-                     [[GMOCK_MATCHER_(tn, $j, __VA_ARGS__) gmock_a$j]]]]
-$var matcher_as = [[$for j, [[gmock_a$j]]]]
-$var anything_matchers = [[$for j, \
-                     [[::testing::A<GMOCK_ARG_(tn, $j, __VA_ARGS__)>()]]]]
-// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
-#define GMOCK_METHOD$i[[]]_(tn, constness, ct, Method, ...) \
-  static_assert($i == ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, "MOCK_METHOD<N> must match argument count.");\
-  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
-      $arg_as) constness { \
-    GMOCK_MOCKER_($i, constness, Method).SetOwnerAndName(this, #Method); \
-    return GMOCK_MOCKER_($i, constness, Method).Invoke($as); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> \
-      gmock_##Method($matcher_arg_as) constness { \
-    GMOCK_MOCKER_($i, constness, Method).RegisterOwner(this); \
-    return GMOCK_MOCKER_($i, constness, Method).With($matcher_as); \
-  } \
-  ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
-      const ::testing::internal::WithoutMatchers&, \
-      constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
-        return ::testing::internal::AdjustConstness_##constness(this)-> \
-            gmock_##Method($anything_matchers); \
-      } \
-  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_($i, constness, Method)
-
-
-]]
-$for i [[
-#define MOCK_METHOD$i(m, ...) GMOCK_METHOD$i[[]]_(, , , m, __VA_ARGS__)
-
-]]
-
-
-$for i [[
-#define MOCK_CONST_METHOD$i(m, ...) GMOCK_METHOD$i[[]]_(, const, , m, __VA_ARGS__)
-
-]]
-
-
-$for i [[
-#define MOCK_METHOD$i[[]]_T(m, ...) GMOCK_METHOD$i[[]]_(typename, , , m, __VA_ARGS__)
-
-]]
-
-
-$for i [[
-#define MOCK_CONST_METHOD$i[[]]_T(m, ...) \
-    GMOCK_METHOD$i[[]]_(typename, const, , m, __VA_ARGS__)
-
-]]
-
-
-$for i [[
-#define MOCK_METHOD$i[[]]_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD$i[[]]_(, , ct, m, __VA_ARGS__)
-
-]]
-
-
-$for i [[
-#define MOCK_CONST_METHOD$i[[]]_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD$i[[]]_(, const, ct, m, __VA_ARGS__)
-
-]]
-
-
-$for i [[
-#define MOCK_METHOD$i[[]]_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD$i[[]]_(typename, , ct, m, __VA_ARGS__)
-
-]]
-
-
-$for i [[
-#define MOCK_CONST_METHOD$i[[]]_T_WITH_CALLTYPE(ct, m, ...) \
-    GMOCK_METHOD$i[[]]_(typename, const, ct, m, __VA_ARGS__)
-
-]]
-
-}  // namespace testing
-
-#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
diff --git a/ceph/src/googletest/googlemock/include/gmock/gmock-generated-matchers.h b/ceph/src/googletest/googlemock/include/gmock/gmock-generated-matchers.h
deleted file mode 100644 (file)
index 6189238..0000000
+++ /dev/null
@@ -1,1097 +0,0 @@
-// This file was GENERATED by command:
-//     pump.py gmock-generated-matchers.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements some commonly used variadic matchers.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
-#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
-
-#include <iterator>
-#include <sstream>
-#include <string>
-#include <utility>
-#include <vector>
-#include "gmock/gmock-matchers.h"
-
-// The MATCHER* family of macros can be used in a namespace scope to
-// define custom matchers easily.
-//
-// Basic Usage
-// ===========
-//
-// The syntax
-//
-//   MATCHER(name, description_string) { statements; }
-//
-// defines a matcher with the given name that executes the statements,
-// which must return a bool to indicate if the match succeeds.  Inside
-// the statements, you can refer to the value being matched by 'arg',
-// and refer to its type by 'arg_type'.
-//
-// The description string documents what the matcher does, and is used
-// to generate the failure message when the match fails.  Since a
-// MATCHER() is usually defined in a header file shared by multiple
-// C++ source files, we require the description to be a C-string
-// literal to avoid possible side effects.  It can be empty, in which
-// case we'll use the sequence of words in the matcher name as the
-// description.
-//
-// For example:
-//
-//   MATCHER(IsEven, "") { return (arg % 2) == 0; }
-//
-// allows you to write
-//
-//   // Expects mock_foo.Bar(n) to be called where n is even.
-//   EXPECT_CALL(mock_foo, Bar(IsEven()));
-//
-// or,
-//
-//   // Verifies that the value of some_expression is even.
-//   EXPECT_THAT(some_expression, IsEven());
-//
-// If the above assertion fails, it will print something like:
-//
-//   Value of: some_expression
-//   Expected: is even
-//     Actual: 7
-//
-// where the description "is even" is automatically calculated from the
-// matcher name IsEven.
-//
-// Argument Type
-// =============
-//
-// Note that the type of the value being matched (arg_type) is
-// determined by the context in which you use the matcher and is
-// supplied to you by the compiler, so you don't need to worry about
-// declaring it (nor can you).  This allows the matcher to be
-// polymorphic.  For example, IsEven() can be used to match any type
-// where the value of "(arg % 2) == 0" can be implicitly converted to
-// a bool.  In the "Bar(IsEven())" example above, if method Bar()
-// takes an int, 'arg_type' will be int; if it takes an unsigned long,
-// 'arg_type' will be unsigned long; and so on.
-//
-// Parameterizing Matchers
-// =======================
-//
-// Sometimes you'll want to parameterize the matcher.  For that you
-// can use another macro:
-//
-//   MATCHER_P(name, param_name, description_string) { statements; }
-//
-// For example:
-//
-//   MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; }
-//
-// will allow you to write:
-//
-//   EXPECT_THAT(Blah("a"), HasAbsoluteValue(n));
-//
-// which may lead to this message (assuming n is 10):
-//
-//   Value of: Blah("a")
-//   Expected: has absolute value 10
-//     Actual: -9
-//
-// Note that both the matcher description and its parameter are
-// printed, making the message human-friendly.
-//
-// In the matcher definition body, you can write 'foo_type' to
-// reference the type of a parameter named 'foo'.  For example, in the
-// body of MATCHER_P(HasAbsoluteValue, value) above, you can write
-// 'value_type' to refer to the type of 'value'.
-//
-// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P10 to
-// support multi-parameter matchers.
-//
-// Describing Parameterized Matchers
-// =================================
-//
-// The last argument to MATCHER*() is a string-typed expression.  The
-// expression can reference all of the matcher's parameters and a
-// special bool-typed variable named 'negation'.  When 'negation' is
-// false, the expression should evaluate to the matcher's description;
-// otherwise it should evaluate to the description of the negation of
-// the matcher.  For example,
-//
-//   using testing::PrintToString;
-//
-//   MATCHER_P2(InClosedRange, low, hi,
-//       std::string(negation ? "is not" : "is") + " in range [" +
-//       PrintToString(low) + ", " + PrintToString(hi) + "]") {
-//     return low <= arg && arg <= hi;
-//   }
-//   ...
-//   EXPECT_THAT(3, InClosedRange(4, 6));
-//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
-//
-// would generate two failures that contain the text:
-//
-//   Expected: is in range [4, 6]
-//   ...
-//   Expected: is not in range [2, 4]
-//
-// If you specify "" as the description, the failure message will
-// contain the sequence of words in the matcher name followed by the
-// parameter values printed as a tuple.  For example,
-//
-//   MATCHER_P2(InClosedRange, low, hi, "") { ... }
-//   ...
-//   EXPECT_THAT(3, InClosedRange(4, 6));
-//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
-//
-// would generate two failures that contain the text:
-//
-//   Expected: in closed range (4, 6)
-//   ...
-//   Expected: not (in closed range (2, 4))
-//
-// Types of Matcher Parameters
-// ===========================
-//
-// For the purpose of typing, you can view
-//
-//   MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... }
-//
-// as shorthand for
-//
-//   template <typename p1_type, ..., typename pk_type>
-//   FooMatcherPk<p1_type, ..., pk_type>
-//   Foo(p1_type p1, ..., pk_type pk) { ... }
-//
-// When you write Foo(v1, ..., vk), the compiler infers the types of
-// the parameters v1, ..., and vk for you.  If you are not happy with
-// the result of the type inference, you can specify the types by
-// explicitly instantiating the template, as in Foo<long, bool>(5,
-// false).  As said earlier, you don't get to (or need to) specify
-// 'arg_type' as that's determined by the context in which the matcher
-// is used.  You can assign the result of expression Foo(p1, ..., pk)
-// to a variable of type FooMatcherPk<p1_type, ..., pk_type>.  This
-// can be useful when composing matchers.
-//
-// While you can instantiate a matcher template with reference types,
-// passing the parameters by pointer usually makes your code more
-// readable.  If, however, you still want to pass a parameter by
-// reference, be aware that in the failure message generated by the
-// matcher you will see the value of the referenced object but not its
-// address.
-//
-// Explaining Match Results
-// ========================
-//
-// Sometimes the matcher description alone isn't enough to explain why
-// the match has failed or succeeded.  For example, when expecting a
-// long string, it can be very helpful to also print the diff between
-// the expected string and the actual one.  To achieve that, you can
-// optionally stream additional information to a special variable
-// named result_listener, whose type is a pointer to class
-// MatchResultListener:
-//
-//   MATCHER_P(EqualsLongString, str, "") {
-//     if (arg == str) return true;
-//
-//     *result_listener << "the difference: "
-///                     << DiffStrings(str, arg);
-//     return false;
-//   }
-//
-// Overloading Matchers
-// ====================
-//
-// You can overload matchers with different numbers of parameters:
-//
-//   MATCHER_P(Blah, a, description_string1) { ... }
-//   MATCHER_P2(Blah, a, b, description_string2) { ... }
-//
-// Caveats
-// =======
-//
-// When defining a new matcher, you should also consider implementing
-// MatcherInterface or using MakePolymorphicMatcher().  These
-// approaches require more work than the MATCHER* macros, but also
-// give you more control on the types of the value being matched and
-// the matcher parameters, which may leads to better compiler error
-// messages when the matcher is used wrong.  They also allow
-// overloading matchers based on parameter types (as opposed to just
-// based on the number of parameters).
-//
-// MATCHER*() can only be used in a namespace scope as templates cannot be
-// declared inside of a local class.
-//
-// More Information
-// ================
-//
-// To learn more about using these macros, please search for 'MATCHER'
-// on
-// https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md
-
-#define MATCHER(name, description)\
-  class name##Matcher {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl()\
-           {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<>()));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>());\
-    }\
-    name##Matcher() {\
-    }\
-   private:\
-  };\
-  inline name##Matcher name() {\
-    return name##Matcher();\
-  }\
-  template <typename arg_type>\
-  bool name##Matcher::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P(name, p0, description)\
-  template <typename p0##_type>\
-  class name##MatcherP {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      explicit gmock_Impl(p0##_type gmock_p0)\
-           : p0(::std::move(gmock_p0)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type>(p0)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0));\
-    }\
-    explicit name##MatcherP(p0##_type gmock_p0) : p0(::std::move(gmock_p0)) {\
-    }\
-    p0##_type const p0;\
-   private:\
-  };\
-  template <typename p0##_type>\
-  inline name##MatcherP<p0##_type> name(p0##_type p0) {\
-    return name##MatcherP<p0##_type>(p0);\
-  }\
-  template <typename p0##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP<p0##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P2(name, p0, p1, description)\
-  template <typename p0##_type, typename p1##_type>\
-  class name##MatcherP2 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type>(p0, p1)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1));\
-    }\
-    name##MatcherP2(p0##_type gmock_p0, \
-        p1##_type gmock_p1) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type>\
-  inline name##MatcherP2<p0##_type, p1##_type> name(p0##_type p0, \
-      p1##_type p1) {\
-    return name##MatcherP2<p0##_type, p1##_type>(p0, p1);\
-  }\
-  template <typename p0##_type, typename p1##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP2<p0##_type, \
-      p1##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P3(name, p0, p1, p2, description)\
-  template <typename p0##_type, typename p1##_type, typename p2##_type>\
-  class name##MatcherP3 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \
-               p2(::std::move(gmock_p2)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-      p2##_type const p2;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type, p2##_type>(p0, p1, p2)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1, p2));\
-    }\
-    name##MatcherP3(p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-    p2##_type const p2;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type, typename p2##_type>\
-  inline name##MatcherP3<p0##_type, p1##_type, p2##_type> name(p0##_type p0, \
-      p1##_type p1, p2##_type p2) {\
-    return name##MatcherP3<p0##_type, p1##_type, p2##_type>(p0, p1, p2);\
-  }\
-  template <typename p0##_type, typename p1##_type, typename p2##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP3<p0##_type, p1##_type, \
-      p2##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P4(name, p0, p1, p2, p3, description)\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type>\
-  class name##MatcherP4 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-          p3##_type gmock_p3)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \
-               p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-      p2##_type const p2;\
-      p3##_type const p3;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type, p2##_type, p3##_type>(p0, \
-                    p1, p2, p3)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1, p2, p3));\
-    }\
-    name##MatcherP4(p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2, p3##_type gmock_p3) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-    p2##_type const p2;\
-    p3##_type const p3;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type>\
-  inline name##MatcherP4<p0##_type, p1##_type, p2##_type, \
-      p3##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
-      p3##_type p3) {\
-    return name##MatcherP4<p0##_type, p1##_type, p2##_type, p3##_type>(p0, \
-        p1, p2, p3);\
-  }\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP4<p0##_type, p1##_type, p2##_type, \
-      p3##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P5(name, p0, p1, p2, p3, p4, description)\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type>\
-  class name##MatcherP5 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-          p3##_type gmock_p3, p4##_type gmock_p4)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \
-               p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \
-               p4(::std::move(gmock_p4)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-      p2##_type const p2;\
-      p3##_type const p3;\
-      p4##_type const p4;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
-                    p4##_type>(p0, p1, p2, p3, p4)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4));\
-    }\
-    name##MatcherP5(p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2, p3##_type gmock_p3, \
-        p4##_type gmock_p4) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-    p2##_type const p2;\
-    p3##_type const p3;\
-    p4##_type const p4;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type>\
-  inline name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
-      p4##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
-      p4##_type p4) {\
-    return name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
-        p4##_type>(p0, p1, p2, p3, p4);\
-  }\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
-      p4##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P6(name, p0, p1, p2, p3, p4, p5, description)\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type>\
-  class name##MatcherP6 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \
-               p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \
-               p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-      p2##_type const p2;\
-      p3##_type const p3;\
-      p4##_type const p4;\
-      p5##_type const p5;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
-                    p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5));\
-    }\
-    name##MatcherP6(p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
-        p5##_type gmock_p5) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-    p2##_type const p2;\
-    p3##_type const p3;\
-    p4##_type const p4;\
-    p5##_type const p5;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type>\
-  inline name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, \
-      p4##_type, p5##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
-      p3##_type p3, p4##_type p4, p5##_type p5) {\
-    return name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, \
-        p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5);\
-  }\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
-      p5##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P7(name, p0, p1, p2, p3, p4, p5, p6, description)\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type>\
-  class name##MatcherP7 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
-          p6##_type gmock_p6)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \
-               p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \
-               p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)), \
-               p6(::std::move(gmock_p6)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-      p2##_type const p2;\
-      p3##_type const p3;\
-      p4##_type const p4;\
-      p5##_type const p5;\
-      p6##_type const p6;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
-                    p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, \
-                    p6)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6));\
-    }\
-    name##MatcherP7(p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
-        p5##_type gmock_p5, p6##_type gmock_p6) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-    p2##_type const p2;\
-    p3##_type const p3;\
-    p4##_type const p4;\
-    p5##_type const p5;\
-    p6##_type const p6;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type>\
-  inline name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, \
-      p4##_type, p5##_type, p6##_type> name(p0##_type p0, p1##_type p1, \
-      p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
-      p6##_type p6) {\
-    return name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, \
-        p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, p6);\
-  }\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
-      p5##_type, p6##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P8(name, p0, p1, p2, p3, p4, p5, p6, p7, description)\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type>\
-  class name##MatcherP8 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
-          p6##_type gmock_p6, p7##_type gmock_p7)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \
-               p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \
-               p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)), \
-               p6(::std::move(gmock_p6)), p7(::std::move(gmock_p7)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-      p2##_type const p2;\
-      p3##_type const p3;\
-      p4##_type const p4;\
-      p5##_type const p5;\
-      p6##_type const p6;\
-      p7##_type const p7;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
-                    p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, \
-                    p3, p4, p5, p6, p7)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7));\
-    }\
-    name##MatcherP8(p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
-        p5##_type gmock_p5, p6##_type gmock_p6, \
-        p7##_type gmock_p7) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
-        p7(::std::move(gmock_p7)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-    p2##_type const p2;\
-    p3##_type const p3;\
-    p4##_type const p4;\
-    p5##_type const p5;\
-    p6##_type const p6;\
-    p7##_type const p7;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type>\
-  inline name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, \
-      p4##_type, p5##_type, p6##_type, p7##_type> name(p0##_type p0, \
-      p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
-      p6##_type p6, p7##_type p7) {\
-    return name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, \
-        p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, p3, p4, p5, \
-        p6, p7);\
-  }\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
-      p5##_type, p6##_type, \
-      p7##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, description)\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type, typename p8##_type>\
-  class name##MatcherP9 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
-          p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \
-               p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \
-               p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)), \
-               p6(::std::move(gmock_p6)), p7(::std::move(gmock_p7)), \
-               p8(::std::move(gmock_p8)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-      p2##_type const p2;\
-      p3##_type const p3;\
-      p4##_type const p4;\
-      p5##_type const p5;\
-      p6##_type const p6;\
-      p7##_type const p7;\
-      p8##_type const p8;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
-                    p4##_type, p5##_type, p6##_type, p7##_type, \
-                    p8##_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8));\
-    }\
-    name##MatcherP9(p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
-        p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
-        p8##_type gmock_p8) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
-        p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-    p2##_type const p2;\
-    p3##_type const p3;\
-    p4##_type const p4;\
-    p5##_type const p5;\
-    p6##_type const p6;\
-    p7##_type const p7;\
-    p8##_type const p8;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type, typename p8##_type>\
-  inline name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, \
-      p4##_type, p5##_type, p6##_type, p7##_type, \
-      p8##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
-      p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, \
-      p8##_type p8) {\
-    return name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, \
-        p4##_type, p5##_type, p6##_type, p7##_type, p8##_type>(p0, p1, p2, \
-        p3, p4, p5, p6, p7, p8);\
-  }\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type, typename p8##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
-      p5##_type, p6##_type, p7##_type, \
-      p8##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#define MATCHER_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, description)\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type, typename p8##_type, \
-      typename p9##_type>\
-  class name##MatcherP10 {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
-          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
-          p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \
-          p9##_type gmock_p9)\
-           : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \
-               p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \
-               p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)), \
-               p6(::std::move(gmock_p6)), p7(::std::move(gmock_p7)), \
-               p8(::std::move(gmock_p8)), p9(::std::move(gmock_p9)) {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\
-      p0##_type const p0;\
-      p1##_type const p1;\
-      p2##_type const p2;\
-      p3##_type const p3;\
-      p4##_type const p4;\
-      p5##_type const p5;\
-      p6##_type const p6;\
-      p7##_type const p7;\
-      p8##_type const p8;\
-      p9##_type const p9;\
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
-                    p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
-                    p9##_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9));\
-    }\
-    name##MatcherP10(p0##_type gmock_p0, p1##_type gmock_p1, \
-        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
-        p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
-        p8##_type gmock_p8, p9##_type gmock_p9) : p0(::std::move(gmock_p0)), \
-        p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
-        p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
-        p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
-        p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)), \
-        p9(::std::move(gmock_p9)) {\
-    }\
-    p0##_type const p0;\
-    p1##_type const p1;\
-    p2##_type const p2;\
-    p3##_type const p3;\
-    p4##_type const p4;\
-    p5##_type const p5;\
-    p6##_type const p6;\
-    p7##_type const p7;\
-    p8##_type const p8;\
-    p9##_type const p9;\
-   private:\
-  };\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type, typename p8##_type, \
-      typename p9##_type>\
-  inline name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
-      p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
-      p9##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
-      p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \
-      p9##_type p9) {\
-    return name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
-        p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, p9##_type>(p0, \
-        p1, p2, p3, p4, p5, p6, p7, p8, p9);\
-  }\
-  template <typename p0##_type, typename p1##_type, typename p2##_type, \
-      typename p3##_type, typename p4##_type, typename p5##_type, \
-      typename p6##_type, typename p7##_type, typename p8##_type, \
-      typename p9##_type>\
-  template <typename arg_type>\
-  bool name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
-      p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
-      p9##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-
-#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
diff --git a/ceph/src/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump b/ceph/src/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump
deleted file mode 100644 (file)
index 69d2ae4..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-$$ -*- mode: c++; -*-
-$$ This is a Pump source file. Please use Pump to convert
-$$ it to gmock-generated-matchers.h.
-$$
-$var n = 10  $$ The maximum arity we support.
-$$ }} This line fixes auto-indentation of the following code in Emacs.
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements some commonly used variadic matchers.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
-#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
-
-#include <iterator>
-#include <sstream>
-#include <string>
-#include <utility>
-#include <vector>
-#include "gmock/gmock-matchers.h"
-
-// The MATCHER* family of macros can be used in a namespace scope to
-// define custom matchers easily.
-//
-// Basic Usage
-// ===========
-//
-// The syntax
-//
-//   MATCHER(name, description_string) { statements; }
-//
-// defines a matcher with the given name that executes the statements,
-// which must return a bool to indicate if the match succeeds.  Inside
-// the statements, you can refer to the value being matched by 'arg',
-// and refer to its type by 'arg_type'.
-//
-// The description string documents what the matcher does, and is used
-// to generate the failure message when the match fails.  Since a
-// MATCHER() is usually defined in a header file shared by multiple
-// C++ source files, we require the description to be a C-string
-// literal to avoid possible side effects.  It can be empty, in which
-// case we'll use the sequence of words in the matcher name as the
-// description.
-//
-// For example:
-//
-//   MATCHER(IsEven, "") { return (arg % 2) == 0; }
-//
-// allows you to write
-//
-//   // Expects mock_foo.Bar(n) to be called where n is even.
-//   EXPECT_CALL(mock_foo, Bar(IsEven()));
-//
-// or,
-//
-//   // Verifies that the value of some_expression is even.
-//   EXPECT_THAT(some_expression, IsEven());
-//
-// If the above assertion fails, it will print something like:
-//
-//   Value of: some_expression
-//   Expected: is even
-//     Actual: 7
-//
-// where the description "is even" is automatically calculated from the
-// matcher name IsEven.
-//
-// Argument Type
-// =============
-//
-// Note that the type of the value being matched (arg_type) is
-// determined by the context in which you use the matcher and is
-// supplied to you by the compiler, so you don't need to worry about
-// declaring it (nor can you).  This allows the matcher to be
-// polymorphic.  For example, IsEven() can be used to match any type
-// where the value of "(arg % 2) == 0" can be implicitly converted to
-// a bool.  In the "Bar(IsEven())" example above, if method Bar()
-// takes an int, 'arg_type' will be int; if it takes an unsigned long,
-// 'arg_type' will be unsigned long; and so on.
-//
-// Parameterizing Matchers
-// =======================
-//
-// Sometimes you'll want to parameterize the matcher.  For that you
-// can use another macro:
-//
-//   MATCHER_P(name, param_name, description_string) { statements; }
-//
-// For example:
-//
-//   MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; }
-//
-// will allow you to write:
-//
-//   EXPECT_THAT(Blah("a"), HasAbsoluteValue(n));
-//
-// which may lead to this message (assuming n is 10):
-//
-//   Value of: Blah("a")
-//   Expected: has absolute value 10
-//     Actual: -9
-//
-// Note that both the matcher description and its parameter are
-// printed, making the message human-friendly.
-//
-// In the matcher definition body, you can write 'foo_type' to
-// reference the type of a parameter named 'foo'.  For example, in the
-// body of MATCHER_P(HasAbsoluteValue, value) above, you can write
-// 'value_type' to refer to the type of 'value'.
-//
-// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P$n to
-// support multi-parameter matchers.
-//
-// Describing Parameterized Matchers
-// =================================
-//
-// The last argument to MATCHER*() is a string-typed expression.  The
-// expression can reference all of the matcher's parameters and a
-// special bool-typed variable named 'negation'.  When 'negation' is
-// false, the expression should evaluate to the matcher's description;
-// otherwise it should evaluate to the description of the negation of
-// the matcher.  For example,
-//
-//   using testing::PrintToString;
-//
-//   MATCHER_P2(InClosedRange, low, hi,
-//       std::string(negation ? "is not" : "is") + " in range [" +
-//       PrintToString(low) + ", " + PrintToString(hi) + "]") {
-//     return low <= arg && arg <= hi;
-//   }
-//   ...
-//   EXPECT_THAT(3, InClosedRange(4, 6));
-//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
-//
-// would generate two failures that contain the text:
-//
-//   Expected: is in range [4, 6]
-//   ...
-//   Expected: is not in range [2, 4]
-//
-// If you specify "" as the description, the failure message will
-// contain the sequence of words in the matcher name followed by the
-// parameter values printed as a tuple.  For example,
-//
-//   MATCHER_P2(InClosedRange, low, hi, "") { ... }
-//   ...
-//   EXPECT_THAT(3, InClosedRange(4, 6));
-//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
-//
-// would generate two failures that contain the text:
-//
-//   Expected: in closed range (4, 6)
-//   ...
-//   Expected: not (in closed range (2, 4))
-//
-// Types of Matcher Parameters
-// ===========================
-//
-// For the purpose of typing, you can view
-//
-//   MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... }
-//
-// as shorthand for
-//
-//   template <typename p1_type, ..., typename pk_type>
-//   FooMatcherPk<p1_type, ..., pk_type>
-//   Foo(p1_type p1, ..., pk_type pk) { ... }
-//
-// When you write Foo(v1, ..., vk), the compiler infers the types of
-// the parameters v1, ..., and vk for you.  If you are not happy with
-// the result of the type inference, you can specify the types by
-// explicitly instantiating the template, as in Foo<long, bool>(5,
-// false).  As said earlier, you don't get to (or need to) specify
-// 'arg_type' as that's determined by the context in which the matcher
-// is used.  You can assign the result of expression Foo(p1, ..., pk)
-// to a variable of type FooMatcherPk<p1_type, ..., pk_type>.  This
-// can be useful when composing matchers.
-//
-// While you can instantiate a matcher template with reference types,
-// passing the parameters by pointer usually makes your code more
-// readable.  If, however, you still want to pass a parameter by
-// reference, be aware that in the failure message generated by the
-// matcher you will see the value of the referenced object but not its
-// address.
-//
-// Explaining Match Results
-// ========================
-//
-// Sometimes the matcher description alone isn't enough to explain why
-// the match has failed or succeeded.  For example, when expecting a
-// long string, it can be very helpful to also print the diff between
-// the expected string and the actual one.  To achieve that, you can
-// optionally stream additional information to a special variable
-// named result_listener, whose type is a pointer to class
-// MatchResultListener:
-//
-//   MATCHER_P(EqualsLongString, str, "") {
-//     if (arg == str) return true;
-//
-//     *result_listener << "the difference: "
-///                     << DiffStrings(str, arg);
-//     return false;
-//   }
-//
-// Overloading Matchers
-// ====================
-//
-// You can overload matchers with different numbers of parameters:
-//
-//   MATCHER_P(Blah, a, description_string1) { ... }
-//   MATCHER_P2(Blah, a, b, description_string2) { ... }
-//
-// Caveats
-// =======
-//
-// When defining a new matcher, you should also consider implementing
-// MatcherInterface or using MakePolymorphicMatcher().  These
-// approaches require more work than the MATCHER* macros, but also
-// give you more control on the types of the value being matched and
-// the matcher parameters, which may leads to better compiler error
-// messages when the matcher is used wrong.  They also allow
-// overloading matchers based on parameter types (as opposed to just
-// based on the number of parameters).
-//
-// MATCHER*() can only be used in a namespace scope as templates cannot be
-// declared inside of a local class.
-//
-// More Information
-// ================
-//
-// To learn more about using these macros, please search for 'MATCHER'
-// on
-// https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md
-
-$range i 0..n
-$for i
-
-[[
-$var macro_name = [[$if i==0 [[MATCHER]] $elif i==1 [[MATCHER_P]]
-                                         $else [[MATCHER_P$i]]]]
-$var class_name = [[name##Matcher[[$if i==0 [[]] $elif i==1 [[P]]
-                                                 $else [[P$i]]]]]]
-$range j 0..i-1
-$var template = [[$if i==0 [[]] $else [[
-
-  template <$for j, [[typename p$j##_type]]>\
-]]]]
-$var ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
-$var impl_ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
-$var impl_inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::move(gmock_p$j))]]]]]]
-$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::move(gmock_p$j))]]]]]]
-$var params = [[$for j, [[p$j]]]]
-$var param_types = [[$if i==0 [[]] $else [[<$for j, [[p$j##_type]]>]]]]
-$var param_types_and_names = [[$for j, [[p$j##_type p$j]]]]
-$var param_field_decls = [[$for j
-[[
-
-      p$j##_type const p$j;\
-]]]]
-$var param_field_decls2 = [[$for j
-[[
-
-    p$j##_type const p$j;\
-]]]]
-
-#define $macro_name(name$for j [[, p$j]], description)\$template
-  class $class_name {\
-   public:\
-    template <typename arg_type>\
-    class gmock_Impl : public ::testing::MatcherInterface<\
-        GTEST_REFERENCE_TO_CONST_(arg_type)> {\
-     public:\
-      [[$if i==1 [[explicit ]]]]gmock_Impl($impl_ctor_param_list)\
-          $impl_inits {}\
-      bool MatchAndExplain(\
-          GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-          ::testing::MatchResultListener* result_listener) const override;\
-      void DescribeTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(false);\
-      }\
-      void DescribeNegationTo(::std::ostream* gmock_os) const override {\
-        *gmock_os << FormatDescription(true);\
-      }\$param_field_decls
-     private:\
-      ::std::string FormatDescription(bool negation) const {\
-        ::std::string gmock_description = (description);\
-        if (!gmock_description.empty()) {\
-          return gmock_description;\
-        }\
-        return ::testing::internal::FormatMatcherDescription(\
-            negation, #name, \
-            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
-                ::std::tuple<$for j, [[p$j##_type]]>($for j, [[p$j]])));\
-      }\
-    };\
-    template <typename arg_type>\
-    operator ::testing::Matcher<arg_type>() const {\
-      return ::testing::Matcher<arg_type>(\
-          new gmock_Impl<arg_type>($params));\
-    }\
-    [[$if i==1 [[explicit ]]]]$class_name($ctor_param_list)$inits {\
-    }\$param_field_decls2
-   private:\
-  };\$template
-  inline $class_name$param_types name($param_types_and_names) {\
-    return $class_name$param_types($params);\
-  }\$template
-  template <typename arg_type>\
-  bool $class_name$param_types::gmock_Impl<arg_type>::MatchAndExplain(\
-      GTEST_REFERENCE_TO_CONST_(arg_type) arg,\
-      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
-          const
-]]
-
-
-#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
index 4baeb1bd0d84d4991328889894211dfa65f07ee6..9641ed4264c6f75ea152ba10386697f92141aa18 100644 (file)
 
 // Google Mock - a framework for writing C++ mock classes.
 //
-// This file implements some commonly used argument matchers.  More
+// The MATCHER* family of macros can be used in a namespace scope to
+// define custom matchers easily.
+//
+// Basic Usage
+// ===========
+//
+// The syntax
+//
+//   MATCHER(name, description_string) { statements; }
+//
+// defines a matcher with the given name that executes the statements,
+// which must return a bool to indicate if the match succeeds.  Inside
+// the statements, you can refer to the value being matched by 'arg',
+// and refer to its type by 'arg_type'.
+//
+// The description string documents what the matcher does, and is used
+// to generate the failure message when the match fails.  Since a
+// MATCHER() is usually defined in a header file shared by multiple
+// C++ source files, we require the description to be a C-string
+// literal to avoid possible side effects.  It can be empty, in which
+// case we'll use the sequence of words in the matcher name as the
+// description.
+//
+// For example:
+//
+//   MATCHER(IsEven, "") { return (arg % 2) == 0; }
+//
+// allows you to write
+//
+//   // Expects mock_foo.Bar(n) to be called where n is even.
+//   EXPECT_CALL(mock_foo, Bar(IsEven()));
+//
+// or,
+//
+//   // Verifies that the value of some_expression is even.
+//   EXPECT_THAT(some_expression, IsEven());
+//
+// If the above assertion fails, it will print something like:
+//
+//   Value of: some_expression
+//   Expected: is even
+//     Actual: 7
+//
+// where the description "is even" is automatically calculated from the
+// matcher name IsEven.
+//
+// Argument Type
+// =============
+//
+// Note that the type of the value being matched (arg_type) is
+// determined by the context in which you use the matcher and is
+// supplied to you by the compiler, so you don't need to worry about
+// declaring it (nor can you).  This allows the matcher to be
+// polymorphic.  For example, IsEven() can be used to match any type
+// where the value of "(arg % 2) == 0" can be implicitly converted to
+// a bool.  In the "Bar(IsEven())" example above, if method Bar()
+// takes an int, 'arg_type' will be int; if it takes an unsigned long,
+// 'arg_type' will be unsigned long; and so on.
+//
+// Parameterizing Matchers
+// =======================
+//
+// Sometimes you'll want to parameterize the matcher.  For that you
+// can use another macro:
+//
+//   MATCHER_P(name, param_name, description_string) { statements; }
+//
+// For example:
+//
+//   MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; }
+//
+// will allow you to write:
+//
+//   EXPECT_THAT(Blah("a"), HasAbsoluteValue(n));
+//
+// which may lead to this message (assuming n is 10):
+//
+//   Value of: Blah("a")
+//   Expected: has absolute value 10
+//     Actual: -9
+//
+// Note that both the matcher description and its parameter are
+// printed, making the message human-friendly.
+//
+// In the matcher definition body, you can write 'foo_type' to
+// reference the type of a parameter named 'foo'.  For example, in the
+// body of MATCHER_P(HasAbsoluteValue, value) above, you can write
+// 'value_type' to refer to the type of 'value'.
+//
+// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P$n to
+// support multi-parameter matchers.
+//
+// Describing Parameterized Matchers
+// =================================
+//
+// The last argument to MATCHER*() is a string-typed expression.  The
+// expression can reference all of the matcher's parameters and a
+// special bool-typed variable named 'negation'.  When 'negation' is
+// false, the expression should evaluate to the matcher's description;
+// otherwise it should evaluate to the description of the negation of
+// the matcher.  For example,
+//
+//   using testing::PrintToString;
+//
+//   MATCHER_P2(InClosedRange, low, hi,
+//       std::string(negation ? "is not" : "is") + " in range [" +
+//       PrintToString(low) + ", " + PrintToString(hi) + "]") {
+//     return low <= arg && arg <= hi;
+//   }
+//   ...
+//   EXPECT_THAT(3, InClosedRange(4, 6));
+//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
+//
+// would generate two failures that contain the text:
+//
+//   Expected: is in range [4, 6]
+//   ...
+//   Expected: is not in range [2, 4]
+//
+// If you specify "" as the description, the failure message will
+// contain the sequence of words in the matcher name followed by the
+// parameter values printed as a tuple.  For example,
+//
+//   MATCHER_P2(InClosedRange, low, hi, "") { ... }
+//   ...
+//   EXPECT_THAT(3, InClosedRange(4, 6));
+//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
+//
+// would generate two failures that contain the text:
+//
+//   Expected: in closed range (4, 6)
+//   ...
+//   Expected: not (in closed range (2, 4))
+//
+// Types of Matcher Parameters
+// ===========================
+//
+// For the purpose of typing, you can view
+//
+//   MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... }
+//
+// as shorthand for
+//
+//   template <typename p1_type, ..., typename pk_type>
+//   FooMatcherPk<p1_type, ..., pk_type>
+//   Foo(p1_type p1, ..., pk_type pk) { ... }
+//
+// When you write Foo(v1, ..., vk), the compiler infers the types of
+// the parameters v1, ..., and vk for you.  If you are not happy with
+// the result of the type inference, you can specify the types by
+// explicitly instantiating the template, as in Foo<long, bool>(5,
+// false).  As said earlier, you don't get to (or need to) specify
+// 'arg_type' as that's determined by the context in which the matcher
+// is used.  You can assign the result of expression Foo(p1, ..., pk)
+// to a variable of type FooMatcherPk<p1_type, ..., pk_type>.  This
+// can be useful when composing matchers.
+//
+// While you can instantiate a matcher template with reference types,
+// passing the parameters by pointer usually makes your code more
+// readable.  If, however, you still want to pass a parameter by
+// reference, be aware that in the failure message generated by the
+// matcher you will see the value of the referenced object but not its
+// address.
+//
+// Explaining Match Results
+// ========================
+//
+// Sometimes the matcher description alone isn't enough to explain why
+// the match has failed or succeeded.  For example, when expecting a
+// long string, it can be very helpful to also print the diff between
+// the expected string and the actual one.  To achieve that, you can
+// optionally stream additional information to a special variable
+// named result_listener, whose type is a pointer to class
+// MatchResultListener:
+//
+//   MATCHER_P(EqualsLongString, str, "") {
+//     if (arg == str) return true;
+//
+//     *result_listener << "the difference: "
+///                     << DiffStrings(str, arg);
+//     return false;
+//   }
+//
+// Overloading Matchers
+// ====================
+//
+// You can overload matchers with different numbers of parameters:
+//
+//   MATCHER_P(Blah, a, description_string1) { ... }
+//   MATCHER_P2(Blah, a, b, description_string2) { ... }
+//
+// Caveats
+// =======
+//
+// When defining a new matcher, you should also consider implementing
+// MatcherInterface or using MakePolymorphicMatcher().  These
+// approaches require more work than the MATCHER* macros, but also
+// give you more control on the types of the value being matched and
+// the matcher parameters, which may leads to better compiler error
+// messages when the matcher is used wrong.  They also allow
+// overloading matchers based on parameter types (as opposed to just
+// based on the number of parameters).
+//
+// MATCHER*() can only be used in a namespace scope as templates cannot be
+// declared inside of a local class.
+//
+// More Information
+// ================
+//
+// To learn more about using these macros, please search for 'MATCHER'
+// on
+// https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md
+//
+// This file also implements some commonly used argument matchers.  More
 // matchers can be defined by the user implementing the
 // MatcherInterface<T> interface if necessary.
 //
 
 #include "gmock/internal/gmock-internal-utils.h"
 #include "gmock/internal/gmock-port.h"
+#include "gmock/internal/gmock-pp.h"
 #include "gtest/gtest.h"
 
 // MSVC warning C5046 is new as of VS2017 version 15.8.
@@ -210,7 +424,14 @@ class MatcherCastImpl<T, Matcher<U> > {
               !std::is_base_of<FromType, ToType>::value,
           "Can't implicitly convert from <base> to <derived>");
 
-      return source_matcher_.MatchAndExplain(static_cast<U>(x), listener);
+      // Do the cast to `U` explicitly if necessary.
+      // Otherwise, let implicit conversions do the trick.
+      using CastType =
+          typename std::conditional<std::is_convertible<T&, const U&>::value,
+                                    T&, U>::type;
+
+      return source_matcher_.MatchAndExplain(static_cast<CastType>(x),
+                                             listener);
     }
 
     void DescribeTo(::std::ostream* os) const override {
@@ -223,8 +444,6 @@ class MatcherCastImpl<T, Matcher<U> > {
 
    private:
     const Matcher<U> source_matcher_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 };
 
@@ -236,6 +455,50 @@ class MatcherCastImpl<T, Matcher<T> > {
   static Matcher<T> Cast(const Matcher<T>& matcher) { return matcher; }
 };
 
+// Template specialization for parameterless Matcher.
+template <typename Derived>
+class MatcherBaseImpl {
+ public:
+  MatcherBaseImpl() = default;
+
+  template <typename T>
+  operator ::testing::Matcher<T>() const {  // NOLINT(runtime/explicit)
+    return ::testing::Matcher<T>(new
+                                 typename Derived::template gmock_Impl<T>());
+  }
+};
+
+// Template specialization for Matcher with parameters.
+template <template <typename...> class Derived, typename... Ts>
+class MatcherBaseImpl<Derived<Ts...>> {
+ public:
+  // Mark the constructor explicit for single argument T to avoid implicit
+  // conversions.
+  template <typename E = std::enable_if<sizeof...(Ts) == 1>,
+            typename E::type* = nullptr>
+  explicit MatcherBaseImpl(Ts... params)
+      : params_(std::forward<Ts>(params)...) {}
+  template <typename E = std::enable_if<sizeof...(Ts) != 1>,
+            typename = typename E::type>
+  MatcherBaseImpl(Ts... params)  // NOLINT
+      : params_(std::forward<Ts>(params)...) {}
+
+  template <typename F>
+  operator ::testing::Matcher<F>() const {  // NOLINT(runtime/explicit)
+    return Apply<F>(MakeIndexSequence<sizeof...(Ts)>{});
+  }
+
+ private:
+  template <typename F, std::size_t... tuple_ids>
+  ::testing::Matcher<F> Apply(IndexSequence<tuple_ids...>) const {
+    return ::testing::Matcher<F>(
+        new typename Derived<Ts...>::template gmock_Impl<F>(
+            std::get<tuple_ids>(params_)...));
+  }
+
+  const std::tuple<Ts...> params_;
+};
+
 }  // namespace internal
 
 // In order to be safe and clear, casting between different matcher
@@ -266,8 +529,8 @@ inline Matcher<T> SafeMatcherCast(const M& polymorphic_matcher_or_value) {
 template <typename T, typename U>
 inline Matcher<T> SafeMatcherCast(const Matcher<U>& matcher) {
   // Enforce that T can be implicitly converted to U.
-  GTEST_COMPILE_ASSERT_((std::is_convertible<T, U>::value),
-                        "T must be implicitly convertible to U");
+  static_assert(std::is_convertible<const T&, const U&>::value,
+                "T must be implicitly convertible to U");
   // Enforce that we are not converting a non-reference type T to a reference
   // type U.
   GTEST_COMPILE_ASSERT_(
@@ -596,13 +859,9 @@ class RefMatcher<T&> {
 
    private:
     const Super& object_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
   T& object_;
-
-  GTEST_DISALLOW_ASSIGN_(RefMatcher);
 };
 
 // Polymorphic helper functions for narrow and wide string matchers.
@@ -644,19 +903,20 @@ bool CaseInsensitiveStringEquals(const StringType& s1,
 template <typename StringType>
 class StrEqualityMatcher {
  public:
-  StrEqualityMatcher(const StringType& str, bool expect_eq,
-                     bool case_sensitive)
-      : string_(str), expect_eq_(expect_eq), case_sensitive_(case_sensitive) {}
+  StrEqualityMatcher(StringType str, bool expect_eq, bool case_sensitive)
+      : string_(std::move(str)),
+        expect_eq_(expect_eq),
+        case_sensitive_(case_sensitive) {}
 
-#if GTEST_HAS_ABSL
-  bool MatchAndExplain(const absl::string_view& s,
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  bool MatchAndExplain(const internal::StringView& s,
                        MatchResultListener* listener) const {
-    // This should fail to compile if absl::string_view is used with wide
+    // This should fail to compile if StringView is used with wide
     // strings.
     const StringType& str = std::string(s);
     return MatchAndExplain(str, listener);
   }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
   // Accepts pointer types, particularly:
   //   const char*
@@ -674,7 +934,7 @@ class StrEqualityMatcher {
   // Matches anything that can convert to StringType.
   //
   // This is a template, not just a plain function with const StringType&,
-  // because absl::string_view has some interfering non-explicit constructors.
+  // because StringView has some interfering non-explicit constructors.
   template <typename MatcheeStringType>
   bool MatchAndExplain(const MatcheeStringType& s,
                        MatchResultListener* /* listener */) const {
@@ -705,8 +965,6 @@ class StrEqualityMatcher {
   const StringType string_;
   const bool expect_eq_;
   const bool case_sensitive_;
-
-  GTEST_DISALLOW_ASSIGN_(StrEqualityMatcher);
 };
 
 // Implements the polymorphic HasSubstr(substring) matcher, which
@@ -718,15 +976,15 @@ class HasSubstrMatcher {
   explicit HasSubstrMatcher(const StringType& substring)
       : substring_(substring) {}
 
-#if GTEST_HAS_ABSL
-  bool MatchAndExplain(const absl::string_view& s,
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  bool MatchAndExplain(const internal::StringView& s,
                        MatchResultListener* listener) const {
-    // This should fail to compile if absl::string_view is used with wide
+    // This should fail to compile if StringView is used with wide
     // strings.
     const StringType& str = std::string(s);
     return MatchAndExplain(str, listener);
   }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
   // Accepts pointer types, particularly:
   //   const char*
@@ -741,7 +999,7 @@ class HasSubstrMatcher {
   // Matches anything that can convert to StringType.
   //
   // This is a template, not just a plain function with const StringType&,
-  // because absl::string_view has some interfering non-explicit constructors.
+  // because StringView has some interfering non-explicit constructors.
   template <typename MatcheeStringType>
   bool MatchAndExplain(const MatcheeStringType& s,
                        MatchResultListener* /* listener */) const {
@@ -761,8 +1019,6 @@ class HasSubstrMatcher {
 
  private:
   const StringType substring_;
-
-  GTEST_DISALLOW_ASSIGN_(HasSubstrMatcher);
 };
 
 // Implements the polymorphic StartsWith(substring) matcher, which
@@ -774,15 +1030,15 @@ class StartsWithMatcher {
   explicit StartsWithMatcher(const StringType& prefix) : prefix_(prefix) {
   }
 
-#if GTEST_HAS_ABSL
-  bool MatchAndExplain(const absl::string_view& s,
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  bool MatchAndExplain(const internal::StringView& s,
                        MatchResultListener* listener) const {
-    // This should fail to compile if absl::string_view is used with wide
+    // This should fail to compile if StringView is used with wide
     // strings.
     const StringType& str = std::string(s);
     return MatchAndExplain(str, listener);
   }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
   // Accepts pointer types, particularly:
   //   const char*
@@ -797,7 +1053,7 @@ class StartsWithMatcher {
   // Matches anything that can convert to StringType.
   //
   // This is a template, not just a plain function with const StringType&,
-  // because absl::string_view has some interfering non-explicit constructors.
+  // because StringView has some interfering non-explicit constructors.
   template <typename MatcheeStringType>
   bool MatchAndExplain(const MatcheeStringType& s,
                        MatchResultListener* /* listener */) const {
@@ -818,8 +1074,6 @@ class StartsWithMatcher {
 
  private:
   const StringType prefix_;
-
-  GTEST_DISALLOW_ASSIGN_(StartsWithMatcher);
 };
 
 // Implements the polymorphic EndsWith(substring) matcher, which
@@ -830,15 +1084,15 @@ class EndsWithMatcher {
  public:
   explicit EndsWithMatcher(const StringType& suffix) : suffix_(suffix) {}
 
-#if GTEST_HAS_ABSL
-  bool MatchAndExplain(const absl::string_view& s,
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  bool MatchAndExplain(const internal::StringView& s,
                        MatchResultListener* listener) const {
-    // This should fail to compile if absl::string_view is used with wide
+    // This should fail to compile if StringView is used with wide
     // strings.
     const StringType& str = std::string(s);
     return MatchAndExplain(str, listener);
   }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
   // Accepts pointer types, particularly:
   //   const char*
@@ -853,7 +1107,7 @@ class EndsWithMatcher {
   // Matches anything that can convert to StringType.
   //
   // This is a template, not just a plain function with const StringType&,
-  // because absl::string_view has some interfering non-explicit constructors.
+  // because StringView has some interfering non-explicit constructors.
   template <typename MatcheeStringType>
   bool MatchAndExplain(const MatcheeStringType& s,
                        MatchResultListener* /* listener */) const {
@@ -874,8 +1128,6 @@ class EndsWithMatcher {
 
  private:
   const StringType suffix_;
-
-  GTEST_DISALLOW_ASSIGN_(EndsWithMatcher);
 };
 
 // Implements a matcher that compares the two fields of a 2-tuple
@@ -969,8 +1221,6 @@ class NotMatcherImpl : public MatcherInterface<const T&> {
 
  private:
   const Matcher<T> matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(NotMatcherImpl);
 };
 
 // Implements the Not(m) matcher, which matches a value that doesn't
@@ -989,8 +1239,6 @@ class NotMatcher {
 
  private:
   InnerMatcher matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(NotMatcher);
 };
 
 // Implements the AllOf(m1, m2) matcher for a particular argument type
@@ -1052,8 +1300,6 @@ class AllOfMatcherImpl : public MatcherInterface<const T&> {
 
  private:
   const std::vector<Matcher<T> > matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(AllOfMatcherImpl);
 };
 
 // VariadicMatcher is used for the variadic implementation of
@@ -1068,6 +1314,9 @@ class VariadicMatcher {
     static_assert(sizeof...(Args) > 0, "Must have at least one matcher.");
   }
 
+  VariadicMatcher(const VariadicMatcher&) = default;
+  VariadicMatcher& operator=(const VariadicMatcher&) = delete;
+
   // This template type conversion operator allows an
   // VariadicMatcher<Matcher1, Matcher2...> object to match any type that
   // all of the provided matchers (Matcher1, Matcher2, ...) can match.
@@ -1092,8 +1341,6 @@ class VariadicMatcher {
       std::integral_constant<size_t, sizeof...(Args)>) const {}
 
   std::tuple<Args...> matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(VariadicMatcher);
 };
 
 template <typename... Args>
@@ -1158,8 +1405,6 @@ class AnyOfMatcherImpl : public MatcherInterface<const T&> {
 
  private:
   const std::vector<Matcher<T> > matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(AnyOfMatcherImpl);
 };
 
 // AnyOfMatcher is used for the variadic implementation of AnyOf(m_1, m_2, ...).
@@ -1187,8 +1432,6 @@ class SomeOfArrayMatcher {
 
  private:
   const ::std::vector<T> matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(SomeOfArrayMatcher);
 };
 
 template <typename T>
@@ -1210,7 +1453,7 @@ class TrulyMatcher {
   // interested in the address of the argument.
   template <typename T>
   bool MatchAndExplain(T& x,  // NOLINT
-                       MatchResultListener* /* listener */) const {
+                       MatchResultListener* listener) const {
     // Without the if-statement, MSVC sometimes warns about converting
     // a value to bool (warning 4800).
     //
@@ -1219,6 +1462,7 @@ class TrulyMatcher {
     // having no operator!().
     if (predicate_(x))
       return true;
+    *listener << "didn't satisfy the given predicate";
     return false;
   }
 
@@ -1232,8 +1476,6 @@ class TrulyMatcher {
 
  private:
   Predicate predicate_;
-
-  GTEST_DISALLOW_ASSIGN_(TrulyMatcher);
 };
 
 // Used for implementing Matches(matcher), which turns a matcher into
@@ -1270,8 +1512,6 @@ class MatcherAsPredicate {
 
  private:
   M matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(MatcherAsPredicate);
 };
 
 // For implementing ASSERT_THAT() and EXPECT_THAT().  The template
@@ -1322,8 +1562,6 @@ class PredicateFormatterFromMatcher {
 
  private:
   const M matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(PredicateFormatterFromMatcher);
 };
 
 // A helper function for converting a matcher to a predicate-formatter
@@ -1475,16 +1713,11 @@ class FloatingEqMatcher {
     const bool nan_eq_nan_;
     // max_abs_error will be used for value comparison when >= 0.
     const FloatType max_abs_error_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
   // The following 3 type conversion operators allow FloatEq(expected) and
   // NanSensitiveFloatEq(expected) to be used as a Matcher<float>, a
   // Matcher<const float&>, or a Matcher<float&>, but nothing else.
-  // (While Google's C++ coding style doesn't allow arguments passed
-  // by non-const reference, we may see them in code not conforming to
-  // the style.  Therefore Google Mock needs to support them.)
   operator Matcher<FloatType>() const {
     return MakeMatcher(
         new Impl<FloatType>(expected_, nan_eq_nan_, max_abs_error_));
@@ -1505,8 +1738,6 @@ class FloatingEqMatcher {
   const bool nan_eq_nan_;
   // max_abs_error will be used for value comparison when >= 0.
   const FloatType max_abs_error_;
-
-  GTEST_DISALLOW_ASSIGN_(FloatingEqMatcher);
 };
 
 // A 2-tuple ("binary") wrapper around FloatingEqMatcher:
@@ -1610,8 +1841,9 @@ class PointeeMatcher {
   template <typename Pointer>
   class Impl : public MatcherInterface<Pointer> {
    public:
-    typedef typename PointeeOf<GTEST_REMOVE_REFERENCE_AND_CONST_(Pointer)>::type
-        Pointee;
+    using Pointee =
+        typename std::pointer_traits<GTEST_REMOVE_REFERENCE_AND_CONST_(
+            Pointer)>::element_type;
 
     explicit Impl(const InnerMatcher& matcher)
         : matcher_(MatcherCast<const Pointee&>(matcher)) {}
@@ -1636,13 +1868,67 @@ class PointeeMatcher {
 
    private:
     const Matcher<const Pointee&> matcher_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
   const InnerMatcher matcher_;
+};
+
+// Implements the Pointer(m) matcher
+// Implements the Pointer(m) matcher for matching a pointer that matches matcher
+// m.  The pointer can be either raw or smart, and will match `m` against the
+// raw pointer.
+template <typename InnerMatcher>
+class PointerMatcher {
+ public:
+  explicit PointerMatcher(const InnerMatcher& matcher) : matcher_(matcher) {}
+
+  // This type conversion operator template allows Pointer(m) to be
+  // used as a matcher for any pointer type whose pointer type is
+  // compatible with the inner matcher, where type PointerType can be
+  // either a raw pointer or a smart pointer.
+  //
+  // The reason we do this instead of relying on
+  // MakePolymorphicMatcher() is that the latter is not flexible
+  // enough for implementing the DescribeTo() method of Pointer().
+  template <typename PointerType>
+  operator Matcher<PointerType>() const {  // NOLINT
+    return Matcher<PointerType>(new Impl<const PointerType&>(matcher_));
+  }
 
-  GTEST_DISALLOW_ASSIGN_(PointeeMatcher);
+ private:
+  // The monomorphic implementation that works for a particular pointer type.
+  template <typename PointerType>
+  class Impl : public MatcherInterface<PointerType> {
+   public:
+    using Pointer =
+        const typename std::pointer_traits<GTEST_REMOVE_REFERENCE_AND_CONST_(
+            PointerType)>::element_type*;
+
+    explicit Impl(const InnerMatcher& matcher)
+        : matcher_(MatcherCast<Pointer>(matcher)) {}
+
+    void DescribeTo(::std::ostream* os) const override {
+      *os << "is a pointer that ";
+      matcher_.DescribeTo(os);
+    }
+
+    void DescribeNegationTo(::std::ostream* os) const override {
+      *os << "is not a pointer that ";
+      matcher_.DescribeTo(os);
+    }
+
+    bool MatchAndExplain(PointerType pointer,
+                         MatchResultListener* listener) const override {
+      *listener << "which is a pointer that ";
+      Pointer p = GetRawPointer(pointer);
+      return MatchPrintAndExplain(p, matcher_, listener);
+    }
+
+   private:
+    Matcher<Pointer> matcher_;
+  };
+
+  const InnerMatcher matcher_;
 };
 
 #if GTEST_HAS_RTTI
@@ -1679,8 +1965,6 @@ class WhenDynamicCastToMatcherBase {
   static void GetCastTypeDescription(::std::ostream* os) {
     *os << "when dynamic_cast to " << GetToName() << ", ";
   }
-
-  GTEST_DISALLOW_ASSIGN_(WhenDynamicCastToMatcherBase);
 };
 
 // Primary template.
@@ -1778,8 +2062,6 @@ class FieldMatcher {
   // Contains either "whose given field " if the name of the field is unknown
   // or "whose field `name_of_field` " if the name is known.
   const std::string whose_field_;
-
-  GTEST_DISALLOW_ASSIGN_(FieldMatcher);
 };
 
 // Implements the Property() matcher for matching a property
@@ -1848,8 +2130,6 @@ class PropertyMatcher {
   // Contains either "whose given property " if the name of the property is
   // unknown or "whose property `name_of_property` " if the name is known.
   const std::string whose_property_;
-
-  GTEST_DISALLOW_ASSIGN_(PropertyMatcher);
 };
 
 // Type traits specifying various features of different functors for ResultOf.
@@ -1939,14 +2219,10 @@ class ResultOfMatcher {
     // how many times the callable will be invoked.
     mutable CallableStorageType callable_;
     const Matcher<ResultType> matcher_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };  // class Impl
 
   const CallableStorageType callable_;
   const InnerMatcher matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(ResultOfMatcher);
 };
 
 // Implements a matcher that checks the size of an STL-style container.
@@ -1991,12 +2267,10 @@ class SizeIsMatcher {
 
    private:
     const Matcher<SizeType> size_matcher_;
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
  private:
   const SizeMatcher size_matcher_;
-  GTEST_DISALLOW_ASSIGN_(SizeIsMatcher);
 };
 
 // Implements a matcher that checks the begin()..end() distance of an STL-style
@@ -2048,12 +2322,10 @@ class BeginEndDistanceIsMatcher {
 
    private:
     const Matcher<DistanceType> distance_matcher_;
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
  private:
   const DistanceMatcher distance_matcher_;
-  GTEST_DISALLOW_ASSIGN_(BeginEndDistanceIsMatcher);
 };
 
 // Implements an equality matcher for any STL-style container whose elements
@@ -2146,8 +2418,6 @@ class ContainerEqMatcher {
 
  private:
   const StlContainer expected_;
-
-  GTEST_DISALLOW_ASSIGN_(ContainerEqMatcher);
 };
 
 // A comparator functor that uses the < operator to compare two values.
@@ -2229,8 +2499,6 @@ class WhenSortedByMatcher {
  private:
   const Comparator comparator_;
   const ContainerMatcher matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(WhenSortedByMatcher);
 };
 
 // Implements Pointwise(tuple_matcher, rhs_container).  tuple_matcher
@@ -2346,15 +2614,11 @@ class PointwiseMatcher {
    private:
     const Matcher<InnerMatcherArg> mono_tuple_matcher_;
     const RhsStlContainer rhs_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
  private:
   const TupleMatcher tuple_matcher_;
   const RhsStlContainer rhs_;
-
-  GTEST_DISALLOW_ASSIGN_(PointwiseMatcher);
 };
 
 // Holds the logic common to ContainsMatcherImpl and EachMatcherImpl.
@@ -2397,8 +2661,6 @@ class QuantifierMatcherImpl : public MatcherInterface<Container> {
 
  protected:
   const Matcher<const Element&> inner_matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(QuantifierMatcherImpl);
 };
 
 // Implements Contains(element_matcher) for the given argument type Container.
@@ -2425,9 +2687,6 @@ class ContainsMatcherImpl : public QuantifierMatcherImpl<Container> {
                        MatchResultListener* listener) const override {
     return this->MatchAndExplainImpl(false, container, listener);
   }
-
- private:
-  GTEST_DISALLOW_ASSIGN_(ContainsMatcherImpl);
 };
 
 // Implements Each(element_matcher) for the given argument type Container.
@@ -2454,9 +2713,6 @@ class EachMatcherImpl : public QuantifierMatcherImpl<Container> {
                        MatchResultListener* listener) const override {
     return this->MatchAndExplainImpl(true, container, listener);
   }
-
- private:
-  GTEST_DISALLOW_ASSIGN_(EachMatcherImpl);
 };
 
 // Implements polymorphic Contains(element_matcher).
@@ -2473,8 +2729,6 @@ class ContainsMatcher {
 
  private:
   const M inner_matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(ContainsMatcher);
 };
 
 // Implements polymorphic Each(element_matcher).
@@ -2491,8 +2745,6 @@ class EachMatcher {
 
  private:
   const M inner_matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(EachMatcher);
 };
 
 struct Rank1 {};
@@ -2563,8 +2815,6 @@ class KeyMatcherImpl : public MatcherInterface<PairType> {
 
  private:
   const Matcher<const KeyType&> inner_matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(KeyMatcherImpl);
 };
 
 // Implements polymorphic Key(matcher_for_key).
@@ -2581,8 +2831,49 @@ class KeyMatcher {
 
  private:
   const M matcher_for_key_;
+};
+
+// Implements polymorphic Address(matcher_for_address).
+template <typename InnerMatcher>
+class AddressMatcher {
+ public:
+  explicit AddressMatcher(InnerMatcher m) : matcher_(m) {}
 
-  GTEST_DISALLOW_ASSIGN_(KeyMatcher);
+  template <typename Type>
+  operator Matcher<Type>() const {  // NOLINT
+    return Matcher<Type>(new Impl<const Type&>(matcher_));
+  }
+
+ private:
+  // The monomorphic implementation that works for a particular object type.
+  template <typename Type>
+  class Impl : public MatcherInterface<Type> {
+   public:
+    using Address = const GTEST_REMOVE_REFERENCE_AND_CONST_(Type) *;
+    explicit Impl(const InnerMatcher& matcher)
+        : matcher_(MatcherCast<Address>(matcher)) {}
+
+    void DescribeTo(::std::ostream* os) const override {
+      *os << "has address that ";
+      matcher_.DescribeTo(os);
+    }
+
+    void DescribeNegationTo(::std::ostream* os) const override {
+      *os << "does not have address that ";
+      matcher_.DescribeTo(os);
+    }
+
+    bool MatchAndExplain(Type object,
+                         MatchResultListener* listener) const override {
+      *listener << "which has address ";
+      Address address = std::addressof(object);
+      return MatchPrintAndExplain(address, matcher_, listener);
+    }
+
+   private:
+    const Matcher<Address> matcher_;
+  };
+  const InnerMatcher matcher_;
 };
 
 // Implements Pair(first_matcher, second_matcher) for the given argument pair
@@ -2668,8 +2959,6 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
 
   const Matcher<const FirstType&> first_matcher_;
   const Matcher<const SecondType&> second_matcher_;
-
-  GTEST_DISALLOW_ASSIGN_(PairMatcherImpl);
 };
 
 // Implements polymorphic Pair(first_matcher, second_matcher).
@@ -2688,8 +2977,203 @@ class PairMatcher {
  private:
   const FirstMatcher first_matcher_;
   const SecondMatcher second_matcher_;
+};
+
+template <typename T, size_t... I>
+auto UnpackStructImpl(const T& t, IndexSequence<I...>, int)
+    -> decltype(std::tie(get<I>(t)...)) {
+  static_assert(std::tuple_size<T>::value == sizeof...(I),
+                "Number of arguments doesn't match the number of fields.");
+  return std::tie(get<I>(t)...);
+}
+
+#if defined(__cpp_structured_bindings) && __cpp_structured_bindings >= 201606
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<1>, char) {
+  const auto& [a] = t;
+  return std::tie(a);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<2>, char) {
+  const auto& [a, b] = t;
+  return std::tie(a, b);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<3>, char) {
+  const auto& [a, b, c] = t;
+  return std::tie(a, b, c);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<4>, char) {
+  const auto& [a, b, c, d] = t;
+  return std::tie(a, b, c, d);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<5>, char) {
+  const auto& [a, b, c, d, e] = t;
+  return std::tie(a, b, c, d, e);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<6>, char) {
+  const auto& [a, b, c, d, e, f] = t;
+  return std::tie(a, b, c, d, e, f);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<7>, char) {
+  const auto& [a, b, c, d, e, f, g] = t;
+  return std::tie(a, b, c, d, e, f, g);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<8>, char) {
+  const auto& [a, b, c, d, e, f, g, h] = t;
+  return std::tie(a, b, c, d, e, f, g, h);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<9>, char) {
+  const auto& [a, b, c, d, e, f, g, h, i] = t;
+  return std::tie(a, b, c, d, e, f, g, h, i);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<10>, char) {
+  const auto& [a, b, c, d, e, f, g, h, i, j] = t;
+  return std::tie(a, b, c, d, e, f, g, h, i, j);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<11>, char) {
+  const auto& [a, b, c, d, e, f, g, h, i, j, k] = t;
+  return std::tie(a, b, c, d, e, f, g, h, i, j, k);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<12>, char) {
+  const auto& [a, b, c, d, e, f, g, h, i, j, k, l] = t;
+  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<13>, char) {
+  const auto& [a, b, c, d, e, f, g, h, i, j, k, l, m] = t;
+  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l, m);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<14>, char) {
+  const auto& [a, b, c, d, e, f, g, h, i, j, k, l, m, n] = t;
+  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<15>, char) {
+  const auto& [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o] = t;
+  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
+}
+template <typename T>
+auto UnpackStructImpl(const T& t, MakeIndexSequence<16>, char) {
+  const auto& [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p] = t;
+  return std::tie(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
+}
+#endif  // defined(__cpp_structured_bindings)
+
+template <size_t I, typename T>
+auto UnpackStruct(const T& t)
+    -> decltype((UnpackStructImpl)(t, MakeIndexSequence<I>{}, 0)) {
+  return (UnpackStructImpl)(t, MakeIndexSequence<I>{}, 0);
+}
+
+// Helper function to do comma folding in C++11.
+// The array ensures left-to-right order of evaluation.
+// Usage: VariadicExpand({expr...});
+template <typename T, size_t N>
+void VariadicExpand(const T (&)[N]) {}
+
+template <typename Struct, typename StructSize>
+class FieldsAreMatcherImpl;
+
+template <typename Struct, size_t... I>
+class FieldsAreMatcherImpl<Struct, IndexSequence<I...>>
+    : public MatcherInterface<Struct> {
+  using UnpackedType =
+      decltype(UnpackStruct<sizeof...(I)>(std::declval<const Struct&>()));
+  using MatchersType = std::tuple<
+      Matcher<const typename std::tuple_element<I, UnpackedType>::type&>...>;
 
-  GTEST_DISALLOW_ASSIGN_(PairMatcher);
+ public:
+  template <typename Inner>
+  explicit FieldsAreMatcherImpl(const Inner& matchers)
+      : matchers_(testing::SafeMatcherCast<
+                  const typename std::tuple_element<I, UnpackedType>::type&>(
+            std::get<I>(matchers))...) {}
+
+  void DescribeTo(::std::ostream* os) const override {
+    const char* separator = "";
+    VariadicExpand(
+        {(*os << separator << "has field #" << I << " that ",
+          std::get<I>(matchers_).DescribeTo(os), separator = ", and ")...});
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const override {
+    const char* separator = "";
+    VariadicExpand({(*os << separator << "has field #" << I << " that ",
+                     std::get<I>(matchers_).DescribeNegationTo(os),
+                     separator = ", or ")...});
+  }
+
+  bool MatchAndExplain(Struct t, MatchResultListener* listener) const override {
+    return MatchInternal((UnpackStruct<sizeof...(I)>)(t), listener);
+  }
+
+ private:
+  bool MatchInternal(UnpackedType tuple, MatchResultListener* listener) const {
+    if (!listener->IsInterested()) {
+      // If the listener is not interested, we don't need to construct the
+      // explanation.
+      bool good = true;
+      VariadicExpand({good = good && std::get<I>(matchers_).Matches(
+                                         std::get<I>(tuple))...});
+      return good;
+    }
+
+    size_t failed_pos = ~size_t{};
+
+    std::vector<StringMatchResultListener> inner_listener(sizeof...(I));
+
+    VariadicExpand(
+        {failed_pos == ~size_t{} && !std::get<I>(matchers_).MatchAndExplain(
+                                        std::get<I>(tuple), &inner_listener[I])
+             ? failed_pos = I
+             : 0 ...});
+    if (failed_pos != ~size_t{}) {
+      *listener << "whose field #" << failed_pos << " does not match";
+      PrintIfNotEmpty(inner_listener[failed_pos].str(), listener->stream());
+      return false;
+    }
+
+    *listener << "whose all elements match";
+    const char* separator = ", where";
+    for (size_t index = 0; index < sizeof...(I); ++index) {
+      const std::string str = inner_listener[index].str();
+      if (!str.empty()) {
+        *listener << separator << " field #" << index << " is a value " << str;
+        separator = ", and";
+      }
+    }
+
+    return true;
+  }
+
+  MatchersType matchers_;
+};
+
+template <typename... Inner>
+class FieldsAreMatcher {
+ public:
+  explicit FieldsAreMatcher(Inner... inner) : matchers_(std::move(inner)...) {}
+
+  template <typename Struct>
+  operator Matcher<Struct>() const {  // NOLINT
+    return Matcher<Struct>(
+        new FieldsAreMatcherImpl<const Struct&, IndexSequenceFor<Inner...>>(
+            matchers_));
+  }
+
+ private:
+  std::tuple<Inner...> matchers_;
 };
 
 // Implements ElementsAre() and ElementsAreArray().
@@ -2835,8 +3319,6 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> {
   size_t count() const { return matchers_.size(); }
 
   ::std::vector<Matcher<const Element&> > matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcherImpl);
 };
 
 // Connectivity matrix of (elements X matchers), in element-major order.
@@ -2939,8 +3421,6 @@ class GTEST_API_ UnorderedElementsAreMatcherImplBase {
  private:
   UnorderedMatcherRequire::Flags match_flags_;
   MatcherDescriberVec matcher_describers_;
-
-  GTEST_DISALLOW_ASSIGN_(UnorderedElementsAreMatcherImplBase);
 };
 
 // Implements UnorderedElementsAre, UnorderedElementsAreArray, IsSubsetOf, and
@@ -3036,8 +3516,6 @@ class UnorderedElementsAreMatcherImpl
   }
 
   ::std::vector<Matcher<const Element&> > matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(UnorderedElementsAreMatcherImpl);
 };
 
 // Functor for use in TransformTuple.
@@ -3075,7 +3553,6 @@ class UnorderedElementsAreMatcher {
 
  private:
   const MatcherTuple matchers_;
-  GTEST_DISALLOW_ASSIGN_(UnorderedElementsAreMatcher);
 };
 
 // Implements ElementsAre.
@@ -3105,7 +3582,6 @@ class ElementsAreMatcher {
 
  private:
   const MatcherTuple matchers_;
-  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher);
 };
 
 // Implements UnorderedElementsAreArray(), IsSubsetOf(), and IsSupersetOf().
@@ -3127,8 +3603,6 @@ class UnorderedElementsAreArrayMatcher {
  private:
   UnorderedMatcherRequire::Flags match_flags_;
   ::std::vector<T> matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(UnorderedElementsAreArrayMatcher);
 };
 
 // Implements ElementsAreArray().
@@ -3150,8 +3624,6 @@ class ElementsAreArrayMatcher {
 
  private:
   const ::std::vector<T> matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(ElementsAreArrayMatcher);
 };
 
 // Given a 2-tuple matcher tm of type Tuple2Matcher and a value second
@@ -3213,8 +3685,6 @@ class BoundSecondMatcher {
    private:
     const Matcher<const ArgTuple&> mono_tuple2_matcher_;
     const Second second_value_;
-
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
   const Tuple2Matcher tuple2_matcher_;
@@ -3287,12 +3757,10 @@ class OptionalMatcher {
 
    private:
     const Matcher<ValueType> value_matcher_;
-    GTEST_DISALLOW_ASSIGN_(Impl);
   };
 
  private:
   const ValueMatcher value_matcher_;
-  GTEST_DISALLOW_ASSIGN_(OptionalMatcher);
 };
 
 namespace variant_matcher {
@@ -3820,52 +4288,60 @@ internal::ResultOfMatcher<Callable, InnerMatcher> ResultOf(
 // String matchers.
 
 // Matches a string equal to str.
-inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrEq(
-    const std::string& str) {
+template <typename T = std::string>
+PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrEq(
+    const internal::StringLike<T>& str) {
   return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::string>(str, true, true));
+      internal::StrEqualityMatcher<std::string>(std::string(str), true, true));
 }
 
 // Matches a string not equal to str.
-inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrNe(
-    const std::string& str) {
+template <typename T = std::string>
+PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrNe(
+    const internal::StringLike<T>& str) {
   return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::string>(str, false, true));
+      internal::StrEqualityMatcher<std::string>(std::string(str), false, true));
 }
 
 // Matches a string equal to str, ignoring case.
-inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseEq(
-    const std::string& str) {
+template <typename T = std::string>
+PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseEq(
+    const internal::StringLike<T>& str) {
   return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::string>(str, true, false));
+      internal::StrEqualityMatcher<std::string>(std::string(str), true, false));
 }
 
 // Matches a string not equal to str, ignoring case.
-inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseNe(
-    const std::string& str) {
-  return MakePolymorphicMatcher(
-      internal::StrEqualityMatcher<std::string>(str, false, false));
+template <typename T = std::string>
+PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseNe(
+    const internal::StringLike<T>& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<std::string>(
+      std::string(str), false, false));
 }
 
 // Creates a matcher that matches any string, std::string, or C string
 // that contains the given substring.
-inline PolymorphicMatcher<internal::HasSubstrMatcher<std::string> > HasSubstr(
-    const std::string& substring) {
+template <typename T = std::string>
+PolymorphicMatcher<internal::HasSubstrMatcher<std::string> > HasSubstr(
+    const internal::StringLike<T>& substring) {
   return MakePolymorphicMatcher(
-      internal::HasSubstrMatcher<std::string>(substring));
+      internal::HasSubstrMatcher<std::string>(std::string(substring)));
 }
 
 // Matches a string that starts with 'prefix' (case-sensitive).
-inline PolymorphicMatcher<internal::StartsWithMatcher<std::string> > StartsWith(
-    const std::string& prefix) {
+template <typename T = std::string>
+PolymorphicMatcher<internal::StartsWithMatcher<std::string> > StartsWith(
+    const internal::StringLike<T>& prefix) {
   return MakePolymorphicMatcher(
-      internal::StartsWithMatcher<std::string>(prefix));
+      internal::StartsWithMatcher<std::string>(std::string(prefix)));
 }
 
 // Matches a string that ends with 'suffix' (case-sensitive).
-inline PolymorphicMatcher<internal::EndsWithMatcher<std::string> > EndsWith(
-    const std::string& suffix) {
-  return MakePolymorphicMatcher(internal::EndsWithMatcher<std::string>(suffix));
+template <typename T = std::string>
+PolymorphicMatcher<internal::EndsWithMatcher<std::string> > EndsWith(
+    const internal::StringLike<T>& suffix) {
+  return MakePolymorphicMatcher(
+      internal::EndsWithMatcher<std::string>(std::string(suffix)));
 }
 
 #if GTEST_HAS_STD_WSTRING
@@ -4335,6 +4811,35 @@ Pair(FirstMatcher first_matcher, SecondMatcher second_matcher) {
       first_matcher, second_matcher);
 }
 
+namespace no_adl {
+// FieldsAre(matchers...) matches piecewise the fields of compatible structs.
+// These include those that support `get<I>(obj)`, and when structured bindings
+// are enabled any class that supports them.
+// In particular, `std::tuple`, `std::pair`, `std::array` and aggregate types.
+template <typename... M>
+internal::FieldsAreMatcher<typename std::decay<M>::type...> FieldsAre(
+    M&&... matchers) {
+  return internal::FieldsAreMatcher<typename std::decay<M>::type...>(
+      std::forward<M>(matchers)...);
+}
+
+// Creates a matcher that matches a pointer (raw or smart) that matches
+// inner_matcher.
+template <typename InnerMatcher>
+inline internal::PointerMatcher<InnerMatcher> Pointer(
+    const InnerMatcher& inner_matcher) {
+  return internal::PointerMatcher<InnerMatcher>(inner_matcher);
+}
+
+// Creates a matcher that matches an object that has an address that matches
+// inner_matcher.
+template <typename InnerMatcher>
+inline internal::AddressMatcher<InnerMatcher> Address(
+    const InnerMatcher& inner_matcher) {
+  return internal::AddressMatcher<InnerMatcher>(inner_matcher);
+}
+}  // namespace no_adl
+
 // Returns a predicate that is satisfied by anything that matches the
 // given matcher.
 template <typename M>
@@ -4519,7 +5024,7 @@ inline InnerMatcher AllArgs(const InnerMatcher& matcher) { return matcher; }
 // and is printable using 'PrintToString'. It is compatible with
 // std::optional/std::experimental::optional.
 // Note that to compare an optional type variable against nullopt you should
-// use Eq(nullopt) and not Optional(Eq(nullopt)). The latter implies that the
+// use Eq(nullopt) and not Eq(Optional(nullopt)). The latter implies that the
 // optional value contains an optional itself.
 template <typename ValueMatcher>
 inline internal::OptionalMatcher<ValueMatcher> Optional(
@@ -4546,6 +5051,175 @@ PolymorphicMatcher<internal::variant_matcher::VariantMatcher<T> > VariantWith(
       internal::variant_matcher::VariantMatcher<T>(matcher));
 }
 
+#if GTEST_HAS_EXCEPTIONS
+
+// Anything inside the `internal` namespace is internal to the implementation
+// and must not be used in user code!
+namespace internal {
+
+class WithWhatMatcherImpl {
+ public:
+  WithWhatMatcherImpl(Matcher<std::string> matcher)
+      : matcher_(std::move(matcher)) {}
+
+  void DescribeTo(std::ostream* os) const {
+    *os << "contains .what() that ";
+    matcher_.DescribeTo(os);
+  }
+
+  void DescribeNegationTo(std::ostream* os) const {
+    *os << "contains .what() that does not ";
+    matcher_.DescribeTo(os);
+  }
+
+  template <typename Err>
+  bool MatchAndExplain(const Err& err, MatchResultListener* listener) const {
+    *listener << "which contains .what() that ";
+    return matcher_.MatchAndExplain(err.what(), listener);
+  }
+
+ private:
+  const Matcher<std::string> matcher_;
+};
+
+inline PolymorphicMatcher<WithWhatMatcherImpl> WithWhat(
+    Matcher<std::string> m) {
+  return MakePolymorphicMatcher(WithWhatMatcherImpl(std::move(m)));
+}
+
+template <typename Err>
+class ExceptionMatcherImpl {
+  class NeverThrown {
+   public:
+    const char* what() const noexcept {
+      return "this exception should never be thrown";
+    }
+  };
+
+  // If the matchee raises an exception of a wrong type, we'd like to
+  // catch it and print its message and type. To do that, we add an additional
+  // catch clause:
+  //
+  //     try { ... }
+  //     catch (const Err&) { /* an expected exception */ }
+  //     catch (const std::exception&) { /* exception of a wrong type */ }
+  //
+  // However, if the `Err` itself is `std::exception`, we'd end up with two
+  // identical `catch` clauses:
+  //
+  //     try { ... }
+  //     catch (const std::exception&) { /* an expected exception */ }
+  //     catch (const std::exception&) { /* exception of a wrong type */ }
+  //
+  // This can cause a warning or an error in some compilers. To resolve
+  // the issue, we use a fake error type whenever `Err` is `std::exception`:
+  //
+  //     try { ... }
+  //     catch (const std::exception&) { /* an expected exception */ }
+  //     catch (const NeverThrown&) { /* exception of a wrong type */ }
+  using DefaultExceptionType = typename std::conditional<
+      std::is_same<typename std::remove_cv<
+                       typename std::remove_reference<Err>::type>::type,
+                   std::exception>::value,
+      const NeverThrown&, const std::exception&>::type;
+
+ public:
+  ExceptionMatcherImpl(Matcher<const Err&> matcher)
+      : matcher_(std::move(matcher)) {}
+
+  void DescribeTo(std::ostream* os) const {
+    *os << "throws an exception which is a " << GetTypeName<Err>();
+    *os << " which ";
+    matcher_.DescribeTo(os);
+  }
+
+  void DescribeNegationTo(std::ostream* os) const {
+    *os << "throws an exception which is not a " << GetTypeName<Err>();
+    *os << " which ";
+    matcher_.DescribeNegationTo(os);
+  }
+
+  template <typename T>
+  bool MatchAndExplain(T&& x, MatchResultListener* listener) const {
+    try {
+      (void)(std::forward<T>(x)());
+    } catch (const Err& err) {
+      *listener << "throws an exception which is a " << GetTypeName<Err>();
+      *listener << " ";
+      return matcher_.MatchAndExplain(err, listener);
+    } catch (DefaultExceptionType err) {
+#if GTEST_HAS_RTTI
+      *listener << "throws an exception of type " << GetTypeName(typeid(err));
+      *listener << " ";
+#else
+      *listener << "throws an std::exception-derived type ";
+#endif
+      *listener << "with description \"" << err.what() << "\"";
+      return false;
+    } catch (...) {
+      *listener << "throws an exception of an unknown type";
+      return false;
+    }
+
+    *listener << "does not throw any exception";
+    return false;
+  }
+
+ private:
+  const Matcher<const Err&> matcher_;
+};
+
+}  // namespace internal
+
+// Throws()
+// Throws(exceptionMatcher)
+// ThrowsMessage(messageMatcher)
+//
+// This matcher accepts a callable and verifies that when invoked, it throws
+// an exception with the given type and properties.
+//
+// Examples:
+//
+//   EXPECT_THAT(
+//       []() { throw std::runtime_error("message"); },
+//       Throws<std::runtime_error>());
+//
+//   EXPECT_THAT(
+//       []() { throw std::runtime_error("message"); },
+//       ThrowsMessage<std::runtime_error>(HasSubstr("message")));
+//
+//   EXPECT_THAT(
+//       []() { throw std::runtime_error("message"); },
+//       Throws<std::runtime_error>(
+//           Property(&std::runtime_error::what, HasSubstr("message"))));
+
+template <typename Err>
+PolymorphicMatcher<internal::ExceptionMatcherImpl<Err>> Throws() {
+  return MakePolymorphicMatcher(
+      internal::ExceptionMatcherImpl<Err>(A<const Err&>()));
+}
+
+template <typename Err, typename ExceptionMatcher>
+PolymorphicMatcher<internal::ExceptionMatcherImpl<Err>> Throws(
+    const ExceptionMatcher& exception_matcher) {
+  // Using matcher cast allows users to pass a matcher of a more broad type.
+  // For example user may want to pass Matcher<std::exception>
+  // to Throws<std::runtime_error>, or Matcher<int64> to Throws<int32>.
+  return MakePolymorphicMatcher(internal::ExceptionMatcherImpl<Err>(
+      SafeMatcherCast<const Err&>(exception_matcher)));
+}
+
+template <typename Err, typename MessageMatcher>
+PolymorphicMatcher<internal::ExceptionMatcherImpl<Err>> ThrowsMessage(
+    MessageMatcher&& message_matcher) {
+  static_assert(std::is_base_of<std::exception, Err>::value,
+                "expected an std::exception-derived type");
+  return Throws<Err>(internal::WithWhat(
+      MatcherCast<std::string>(std::forward<MessageMatcher>(message_matcher))));
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
 // These macros allow using matchers to check values in Google Test
 // tests.  ASSERT_THAT(value, matcher) and EXPECT_THAT(value, matcher)
 // succeed if and only if the value matches the matcher.  If the assertion
@@ -4555,6 +5229,159 @@ PolymorphicMatcher<internal::variant_matcher::VariantMatcher<T> > VariantWith(
 #define EXPECT_THAT(value, matcher) EXPECT_PRED_FORMAT1(\
     ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
 
+// MATCHER* macroses itself are listed below.
+#define MATCHER(name, description)                                             \
+  class name##Matcher                                                          \
+      : public ::testing::internal::MatcherBaseImpl<name##Matcher> {           \
+   public:                                                                     \
+    template <typename arg_type>                                               \
+    class gmock_Impl : public ::testing::MatcherInterface<const arg_type&> {   \
+     public:                                                                   \
+      gmock_Impl() {}                                                          \
+      bool MatchAndExplain(                                                    \
+          const arg_type& arg,                                                 \
+          ::testing::MatchResultListener* result_listener) const override;     \
+      void DescribeTo(::std::ostream* gmock_os) const override {               \
+        *gmock_os << FormatDescription(false);                                 \
+      }                                                                        \
+      void DescribeNegationTo(::std::ostream* gmock_os) const override {       \
+        *gmock_os << FormatDescription(true);                                  \
+      }                                                                        \
+                                                                               \
+     private:                                                                  \
+      ::std::string FormatDescription(bool negation) const {                   \
+        ::std::string gmock_description = (description);                       \
+        if (!gmock_description.empty()) {                                      \
+          return gmock_description;                                            \
+        }                                                                      \
+        return ::testing::internal::FormatMatcherDescription(negation, #name,  \
+                                                             {});              \
+      }                                                                        \
+    };                                                                         \
+  };                                                                           \
+  GTEST_ATTRIBUTE_UNUSED_ inline name##Matcher name() { return {}; }           \
+  template <typename arg_type>                                                 \
+  bool name##Matcher::gmock_Impl<arg_type>::MatchAndExplain(                   \
+      const arg_type& arg,                                                     \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_) \
+      const
+
+#define MATCHER_P(name, p0, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP, description, (p0))
+#define MATCHER_P2(name, p0, p1, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP2, description, (p0, p1))
+#define MATCHER_P3(name, p0, p1, p2, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP3, description, (p0, p1, p2))
+#define MATCHER_P4(name, p0, p1, p2, p3, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP4, description, (p0, p1, p2, p3))
+#define MATCHER_P5(name, p0, p1, p2, p3, p4, description)    \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP5, description, \
+                         (p0, p1, p2, p3, p4))
+#define MATCHER_P6(name, p0, p1, p2, p3, p4, p5, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP6, description,  \
+                         (p0, p1, p2, p3, p4, p5))
+#define MATCHER_P7(name, p0, p1, p2, p3, p4, p5, p6, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP7, description,      \
+                         (p0, p1, p2, p3, p4, p5, p6))
+#define MATCHER_P8(name, p0, p1, p2, p3, p4, p5, p6, p7, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP8, description,          \
+                         (p0, p1, p2, p3, p4, p5, p6, p7))
+#define MATCHER_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP9, description,              \
+                         (p0, p1, p2, p3, p4, p5, p6, p7, p8))
+#define MATCHER_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, description) \
+  GMOCK_INTERNAL_MATCHER(name, name##MatcherP10, description,                  \
+                         (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9))
+
+#define GMOCK_INTERNAL_MATCHER(name, full_name, description, args)             \
+  template <GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAMS(args)>                      \
+  class full_name : public ::testing::internal::MatcherBaseImpl<               \
+                        full_name<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)>> { \
+   public:                                                                     \
+    using full_name::MatcherBaseImpl::MatcherBaseImpl;                         \
+    template <typename arg_type>                                               \
+    class gmock_Impl : public ::testing::MatcherInterface<const arg_type&> {   \
+     public:                                                                   \
+      explicit gmock_Impl(GMOCK_INTERNAL_MATCHER_FUNCTION_ARGS(args))          \
+          : GMOCK_INTERNAL_MATCHER_FORWARD_ARGS(args) {}                       \
+      bool MatchAndExplain(                                                    \
+          const arg_type& arg,                                                 \
+          ::testing::MatchResultListener* result_listener) const override;     \
+      void DescribeTo(::std::ostream* gmock_os) const override {               \
+        *gmock_os << FormatDescription(false);                                 \
+      }                                                                        \
+      void DescribeNegationTo(::std::ostream* gmock_os) const override {       \
+        *gmock_os << FormatDescription(true);                                  \
+      }                                                                        \
+      GMOCK_INTERNAL_MATCHER_MEMBERS(args)                                     \
+                                                                               \
+     private:                                                                  \
+      ::std::string FormatDescription(bool negation) const {                   \
+        ::std::string gmock_description = (description);                       \
+        if (!gmock_description.empty()) {                                      \
+          return gmock_description;                                            \
+        }                                                                      \
+        return ::testing::internal::FormatMatcherDescription(                  \
+            negation, #name,                                                   \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(      \
+                ::std::tuple<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)>(        \
+                    GMOCK_INTERNAL_MATCHER_MEMBERS_USAGE(args))));             \
+      }                                                                        \
+    };                                                                         \
+  };                                                                           \
+  template <GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAMS(args)>                      \
+  inline full_name<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)> name(             \
+      GMOCK_INTERNAL_MATCHER_FUNCTION_ARGS(args)) {                            \
+    return full_name<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)>(                \
+        GMOCK_INTERNAL_MATCHER_ARGS_USAGE(args));                              \
+  }                                                                            \
+  template <GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAMS(args)>                      \
+  template <typename arg_type>                                                 \
+  bool full_name<GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args)>::gmock_Impl<        \
+      arg_type>::MatchAndExplain(const arg_type& arg,                          \
+                                 ::testing::MatchResultListener*               \
+                                     result_listener GTEST_ATTRIBUTE_UNUSED_)  \
+      const
+
+#define GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAMS(args) \
+  GMOCK_PP_TAIL(                                     \
+      GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAM, , args))
+#define GMOCK_INTERNAL_MATCHER_TEMPLATE_PARAM(i_unused, data_unused, arg) \
+  , typename arg##_type
+
+#define GMOCK_INTERNAL_MATCHER_TYPE_PARAMS(args) \
+  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_TYPE_PARAM, , args))
+#define GMOCK_INTERNAL_MATCHER_TYPE_PARAM(i_unused, data_unused, arg) \
+  , arg##_type
+
+#define GMOCK_INTERNAL_MATCHER_FUNCTION_ARGS(args) \
+  GMOCK_PP_TAIL(dummy_first GMOCK_PP_FOR_EACH(     \
+      GMOCK_INTERNAL_MATCHER_FUNCTION_ARG, , args))
+#define GMOCK_INTERNAL_MATCHER_FUNCTION_ARG(i, data_unused, arg) \
+  , arg##_type gmock_p##i
+
+#define GMOCK_INTERNAL_MATCHER_FORWARD_ARGS(args) \
+  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_FORWARD_ARG, , args))
+#define GMOCK_INTERNAL_MATCHER_FORWARD_ARG(i, data_unused, arg) \
+  , arg(::std::forward<arg##_type>(gmock_p##i))
+
+#define GMOCK_INTERNAL_MATCHER_MEMBERS(args) \
+  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_MEMBER, , args)
+#define GMOCK_INTERNAL_MATCHER_MEMBER(i_unused, data_unused, arg) \
+  const arg##_type arg;
+
+#define GMOCK_INTERNAL_MATCHER_MEMBERS_USAGE(args) \
+  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_MEMBER_USAGE, , args))
+#define GMOCK_INTERNAL_MATCHER_MEMBER_USAGE(i_unused, data_unused, arg) , arg
+
+#define GMOCK_INTERNAL_MATCHER_ARGS_USAGE(args) \
+  GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_MATCHER_ARG_USAGE, , args))
+#define GMOCK_INTERNAL_MATCHER_ARG_USAGE(i, data_unused, arg_unused) \
+  , gmock_p##i
+
+// To prevent ADL on certain functions we put them on a separate namespace.
+using namespace no_adl;  // NOLINT
+
 }  // namespace testing
 
 GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4251 5046
diff --git a/ceph/src/googletest/googlemock/include/gmock/gmock-more-actions.h b/ceph/src/googletest/googlemock/include/gmock/gmock-more-actions.h
deleted file mode 100644 (file)
index d42484a..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements some actions that depend on gmock-generated-actions.h.
-
-// GOOGLETEST_CM0002 DO NOT DELETE
-
-#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
-#define GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
-
-#include <algorithm>
-#include <type_traits>
-
-#include "gmock/gmock-generated-actions.h"
-
-namespace testing {
-namespace internal {
-
-// An internal replacement for std::copy which mimics its behavior. This is
-// necessary because Visual Studio deprecates ::std::copy, issuing warning 4996.
-// However Visual Studio 2010 and later do not honor #pragmas which disable that
-// warning.
-template<typename InputIterator, typename OutputIterator>
-inline OutputIterator CopyElements(InputIterator first,
-                                   InputIterator last,
-                                   OutputIterator output) {
-  for (; first != last; ++first, ++output) {
-    *output = *first;
-  }
-  return output;
-}
-
-}  // namespace internal
-
-// Various overloads for Invoke().
-
-// The ACTION*() macros trigger warning C4100 (unreferenced formal
-// parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
-// the macro definition, as the warnings are generated when the macro
-// is expanded and macro expansion cannot contain #pragma.  Therefore
-// we suppress them here.
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4100)
-#endif
-
-// Action ReturnArg<k>() returns the k-th argument of the mock function.
-ACTION_TEMPLATE(ReturnArg,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_0_VALUE_PARAMS()) {
-  return ::std::get<k>(args);
-}
-
-// Action SaveArg<k>(pointer) saves the k-th (0-based) argument of the
-// mock function to *pointer.
-ACTION_TEMPLATE(SaveArg,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_1_VALUE_PARAMS(pointer)) {
-  *pointer = ::std::get<k>(args);
-}
-
-// Action SaveArgPointee<k>(pointer) saves the value pointed to
-// by the k-th (0-based) argument of the mock function to *pointer.
-ACTION_TEMPLATE(SaveArgPointee,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_1_VALUE_PARAMS(pointer)) {
-  *pointer = *::std::get<k>(args);
-}
-
-// Action SetArgReferee<k>(value) assigns 'value' to the variable
-// referenced by the k-th (0-based) argument of the mock function.
-ACTION_TEMPLATE(SetArgReferee,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_1_VALUE_PARAMS(value)) {
-  typedef typename ::std::tuple_element<k, args_type>::type argk_type;
-  // Ensures that argument #k is a reference.  If you get a compiler
-  // error on the next line, you are using SetArgReferee<k>(value) in
-  // a mock function whose k-th (0-based) argument is not a reference.
-  GTEST_COMPILE_ASSERT_(std::is_reference<argk_type>::value,
-                        SetArgReferee_must_be_used_with_a_reference_argument);
-  ::std::get<k>(args) = value;
-}
-
-// Action SetArrayArgument<k>(first, last) copies the elements in
-// source range [first, last) to the array pointed to by the k-th
-// (0-based) argument, which can be either a pointer or an
-// iterator. The action does not take ownership of the elements in the
-// source range.
-ACTION_TEMPLATE(SetArrayArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_2_VALUE_PARAMS(first, last)) {
-  // Visual Studio deprecates ::std::copy, so we use our own copy in that case.
-#ifdef _MSC_VER
-  internal::CopyElements(first, last, ::std::get<k>(args));
-#else
-  ::std::copy(first, last, ::std::get<k>(args));
-#endif
-}
-
-// Action DeleteArg<k>() deletes the k-th (0-based) argument of the mock
-// function.
-ACTION_TEMPLATE(DeleteArg,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_0_VALUE_PARAMS()) {
-  delete ::std::get<k>(args);
-}
-
-// This action returns the value pointed to by 'pointer'.
-ACTION_P(ReturnPointee, pointer) { return *pointer; }
-
-// Action Throw(exception) can be used in a mock function of any type
-// to throw the given exception.  Any copyable value can be thrown.
-#if GTEST_HAS_EXCEPTIONS
-
-// Suppresses the 'unreachable code' warning that VC generates in opt modes.
-# ifdef _MSC_VER
-#  pragma warning(push)          // Saves the current warning state.
-#  pragma warning(disable:4702)  // Temporarily disables warning 4702.
-# endif
-ACTION_P(Throw, exception) { throw exception; }
-# ifdef _MSC_VER
-#  pragma warning(pop)           // Restores the warning state.
-# endif
-
-#endif  // GTEST_HAS_EXCEPTIONS
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-}  // namespace testing
-
-#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
index 1c9a399a341e79ee0102c674a75a269bd2552ec2..b306dd6037c4ae9e63d39d822c391ce96e3e7a2b 100644 (file)
@@ -30,7 +30,7 @@
 
 // Google Mock - a framework for writing C++ mock classes.
 //
-// This file implements some matchers that depend on gmock-generated-matchers.h.
+// This file implements some matchers that depend on gmock-matchers.h.
 //
 // Note that tests are implemented in gmock-matchers_test.cc rather than
 // gmock-more-matchers-test.cc.
@@ -40,7 +40,7 @@
 #ifndef GMOCK_INCLUDE_GMOCK_MORE_MATCHERS_H_
 #define GMOCK_INCLUDE_GMOCK_MORE_MATCHERS_H_
 
-#include "gmock/gmock-generated-matchers.h"
+#include "gmock/gmock-matchers.h"
 
 namespace testing {
 
index 5495a9805b5fade1998f5d3b7d43a7ed3a99b9dd..8230058dab33b77da3912d8424f5d1475f937ddd 100644 (file)
 #ifndef GMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
 #define GMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
 
+#include <type_traits>
+
 #include "gmock/gmock-spec-builders.h"
 #include "gmock/internal/gmock-port.h"
 
 namespace testing {
+template <class MockClass>
+class NiceMock;
+template <class MockClass>
+class NaggyMock;
+template <class MockClass>
+class StrictMock;
+
+namespace internal {
+template <typename T>
+std::true_type StrictnessModifierProbe(const NiceMock<T>&);
+template <typename T>
+std::true_type StrictnessModifierProbe(const NaggyMock<T>&);
+template <typename T>
+std::true_type StrictnessModifierProbe(const StrictMock<T>&);
+std::false_type StrictnessModifierProbe(...);
+
+template <typename T>
+constexpr bool HasStrictnessModifier() {
+  return decltype(StrictnessModifierProbe(std::declval<const T&>()))::value;
+}
+
+// Base classes that register and deregister with testing::Mock to alter the
+// default behavior around uninteresting calls. Inheriting from one of these
+// classes first and then MockClass ensures the MockClass constructor is run
+// after registration, and that the MockClass destructor runs before
+// deregistration. This guarantees that MockClass's constructor and destructor
+// run with the same level of strictness as its instance methods.
+
+#if GTEST_OS_WINDOWS && (defined(_MSC_VER) || defined(__clang__))
+// We need to mark these classes with this declspec to ensure that
+// the empty base class optimization is performed.
+#define GTEST_INTERNAL_EMPTY_BASE_CLASS __declspec(empty_bases)
+#else
+#define GTEST_INTERNAL_EMPTY_BASE_CLASS
+#endif
+
+template <typename Base>
+class NiceMockImpl {
+ public:
+  NiceMockImpl() { ::testing::Mock::AllowUninterestingCalls(this); }
+
+  ~NiceMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
+};
+
+template <typename Base>
+class NaggyMockImpl {
+ public:
+  NaggyMockImpl() { ::testing::Mock::WarnUninterestingCalls(this); }
+
+  ~NaggyMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
+};
+
+template <typename Base>
+class StrictMockImpl {
+ public:
+  StrictMockImpl() { ::testing::Mock::FailUninterestingCalls(this); }
+
+  ~StrictMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
+};
+
+}  // namespace internal
 
 template <class MockClass>
-class NiceMock : public MockClass {
+class GTEST_INTERNAL_EMPTY_BASE_CLASS NiceMock
+    : private internal::NiceMockImpl<MockClass>,
+      public MockClass {
  public:
+  static_assert(
+      !internal::HasStrictnessModifier<MockClass>(),
+      "Can't apply NiceMock to a class hierarchy that already has a "
+      "strictness modifier. See "
+      "https://github.com/google/googletest/blob/master/googlemock/docs/"
+      "cook_book.md#the-nice-the-strict-and-the-naggy-nicestrictnaggy");
   NiceMock() : MockClass() {
-    ::testing::Mock::AllowUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
   // Ideally, we would inherit base class's constructors through a using
@@ -85,21 +156,16 @@ class NiceMock : public MockClass {
   // made explicit.
   template <typename A>
   explicit NiceMock(A&& arg) : MockClass(std::forward<A>(arg)) {
-    ::testing::Mock::AllowUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
-  template <typename A1, typename A2, typename... An>
-  NiceMock(A1&& arg1, A2&& arg2, An&&... args)
-      : MockClass(std::forward<A1>(arg1), std::forward<A2>(arg2),
+  template <typename TArg1, typename TArg2, typename... An>
+  NiceMock(TArg1&& arg1, TArg2&& arg2, An&&... args)
+      : MockClass(std::forward<TArg1>(arg1), std::forward<TArg2>(arg2),
                   std::forward<An>(args)...) {
-    ::testing::Mock::AllowUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
-  }
-
-  ~NiceMock() {  // NOLINT
-    ::testing::Mock::UnregisterCallReaction(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
  private:
@@ -107,11 +173,20 @@ class NiceMock : public MockClass {
 };
 
 template <class MockClass>
-class NaggyMock : public MockClass {
+class GTEST_INTERNAL_EMPTY_BASE_CLASS NaggyMock
+    : private internal::NaggyMockImpl<MockClass>,
+      public MockClass {
+  static_assert(
+      !internal::HasStrictnessModifier<MockClass>(),
+      "Can't apply NaggyMock to a class hierarchy that already has a "
+      "strictness modifier. See "
+      "https://github.com/google/googletest/blob/master/googlemock/docs/"
+      "cook_book.md#the-nice-the-strict-and-the-naggy-nicestrictnaggy");
+
  public:
   NaggyMock() : MockClass() {
-    ::testing::Mock::WarnUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
   // Ideally, we would inherit base class's constructors through a using
@@ -123,21 +198,16 @@ class NaggyMock : public MockClass {
   // made explicit.
   template <typename A>
   explicit NaggyMock(A&& arg) : MockClass(std::forward<A>(arg)) {
-    ::testing::Mock::WarnUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
-  template <typename A1, typename A2, typename... An>
-  NaggyMock(A1&& arg1, A2&& arg2, An&&... args)
-      : MockClass(std::forward<A1>(arg1), std::forward<A2>(arg2),
+  template <typename TArg1, typename TArg2, typename... An>
+  NaggyMock(TArg1&& arg1, TArg2&& arg2, An&&... args)
+      : MockClass(std::forward<TArg1>(arg1), std::forward<TArg2>(arg2),
                   std::forward<An>(args)...) {
-    ::testing::Mock::WarnUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
-  }
-
-  ~NaggyMock() {  // NOLINT
-    ::testing::Mock::UnregisterCallReaction(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
  private:
@@ -145,11 +215,19 @@ class NaggyMock : public MockClass {
 };
 
 template <class MockClass>
-class StrictMock : public MockClass {
+class GTEST_INTERNAL_EMPTY_BASE_CLASS StrictMock
+    : private internal::StrictMockImpl<MockClass>,
+      public MockClass {
  public:
+  static_assert(
+      !internal::HasStrictnessModifier<MockClass>(),
+      "Can't apply StrictMock to a class hierarchy that already has a "
+      "strictness modifier. See "
+      "https://github.com/google/googletest/blob/master/googlemock/docs/"
+      "cook_book.md#the-nice-the-strict-and-the-naggy-nicestrictnaggy");
   StrictMock() : MockClass() {
-    ::testing::Mock::FailUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
   // Ideally, we would inherit base class's constructors through a using
@@ -161,54 +239,23 @@ class StrictMock : public MockClass {
   // made explicit.
   template <typename A>
   explicit StrictMock(A&& arg) : MockClass(std::forward<A>(arg)) {
-    ::testing::Mock::FailUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
-  template <typename A1, typename A2, typename... An>
-  StrictMock(A1&& arg1, A2&& arg2, An&&... args)
-      : MockClass(std::forward<A1>(arg1), std::forward<A2>(arg2),
+  template <typename TArg1, typename TArg2, typename... An>
+  StrictMock(TArg1&& arg1, TArg2&& arg2, An&&... args)
+      : MockClass(std::forward<TArg1>(arg1), std::forward<TArg2>(arg2),
                   std::forward<An>(args)...) {
-    ::testing::Mock::FailUninterestingCalls(
-        internal::ImplicitCast_<MockClass*>(this));
-  }
-
-  ~StrictMock() {  // NOLINT
-    ::testing::Mock::UnregisterCallReaction(
-        internal::ImplicitCast_<MockClass*>(this));
+    static_assert(sizeof(*this) == sizeof(MockClass),
+                  "The impl subclass shouldn't introduce any padding");
   }
 
  private:
   GTEST_DISALLOW_COPY_AND_ASSIGN_(StrictMock);
 };
 
-// The following specializations catch some (relatively more common)
-// user errors of nesting nice and strict mocks.  They do NOT catch
-// all possible errors.
-
-// These specializations are declared but not defined, as NiceMock,
-// NaggyMock, and StrictMock cannot be nested.
-
-template <typename MockClass>
-class NiceMock<NiceMock<MockClass> >;
-template <typename MockClass>
-class NiceMock<NaggyMock<MockClass> >;
-template <typename MockClass>
-class NiceMock<StrictMock<MockClass> >;
-
-template <typename MockClass>
-class NaggyMock<NiceMock<MockClass> >;
-template <typename MockClass>
-class NaggyMock<NaggyMock<MockClass> >;
-template <typename MockClass>
-class NaggyMock<StrictMock<MockClass> >;
-
-template <typename MockClass>
-class StrictMock<NiceMock<MockClass> >;
-template <typename MockClass>
-class StrictMock<NaggyMock<MockClass> >;
-template <typename MockClass>
-class StrictMock<StrictMock<MockClass> >;
+#undef GTEST_INTERNAL_EMPTY_BASE_CLASS
 
 }  // namespace testing
 
index 718c9484abc93ff6e8389e98a8a5e6b7841eb4bf..d42d4cb7b1a72615b27cf211df9d8c36b8ed6b3d 100644 (file)
@@ -108,6 +108,14 @@ template <typename F> class TypedExpectation;
 // Helper class for testing the Expectation class template.
 class ExpectationTester;
 
+// Helper classes for implementing NiceMock, StrictMock, and NaggyMock.
+template <typename MockClass>
+class NiceMockImpl;
+template <typename MockClass>
+class StrictMockImpl;
+template <typename MockClass>
+class NaggyMockImpl;
+
 // Protects the mock object registry (in class Mock), all function
 // mockers, and all expectations.
 //
@@ -413,14 +421,12 @@ class GTEST_API_ Mock {
   template <typename F>
   friend class internal::FunctionMocker;
 
-  template <typename M>
-  friend class NiceMock;
-
-  template <typename M>
-  friend class NaggyMock;
-
-  template <typename M>
-  friend class StrictMock;
+  template <typename MockClass>
+  friend class internal::NiceMockImpl;
+  template <typename MockClass>
+  friend class internal::NaggyMockImpl;
+  template <typename MockClass>
+  friend class internal::StrictMockImpl;
 
   // Tells Google Mock to allow uninteresting calls on the given mock
   // object.
@@ -499,7 +505,10 @@ class GTEST_API_ Expectation {
  public:
   // Constructs a null object that doesn't reference any expectation.
   Expectation();
-
+  Expectation(Expectation&&) = default;
+  Expectation(const Expectation&) = default;
+  Expectation& operator=(Expectation&&) = default;
+  Expectation& operator=(const Expectation&) = default;
   ~Expectation();
 
   // This single-argument ctor must not be explicit, in order to support the
@@ -879,8 +888,6 @@ class GTEST_API_ ExpectationBase {
   Clause last_clause_;
   mutable bool action_count_checked_;  // Under mutex_.
   mutable Mutex mutex_;  // Protects action_count_checked_.
-
-  GTEST_DISALLOW_ASSIGN_(ExpectationBase);
 };  // class ExpectationBase
 
 // Impements an expectation for the given function type.
@@ -1295,8 +1302,6 @@ class MockSpec {
   internal::FunctionMocker<F>* const function_mocker_;
   // The argument matchers specified in the spec.
   ArgumentMatcherTuple matchers_;
-
-  GTEST_DISALLOW_ASSIGN_(MockSpec);
 };  // class MockSpec
 
 // Wrapper type for generically holding an ordinary value or lvalue reference.
@@ -1786,10 +1791,79 @@ void ReportUninterestingCall(CallReaction reaction, const std::string& msg);
 
 }  // namespace internal
 
-// A MockFunction<F> class has one mock method whose type is F.  It is
-// useful when you just want your test code to emit some messages and
-// have Google Mock verify the right messages are sent (and perhaps at
-// the right times).  For example, if you are exercising code:
+namespace internal {
+
+template <typename F>
+class MockFunction;
+
+template <typename R, typename... Args>
+class MockFunction<R(Args...)> {
+ public:
+  MockFunction(const MockFunction&) = delete;
+  MockFunction& operator=(const MockFunction&) = delete;
+
+  std::function<R(Args...)> AsStdFunction() {
+    return [this](Args... args) -> R {
+      return this->Call(std::forward<Args>(args)...);
+    };
+  }
+
+  // Implementation detail: the expansion of the MOCK_METHOD macro.
+  R Call(Args... args) {
+    mock_.SetOwnerAndName(this, "Call");
+    return mock_.Invoke(std::forward<Args>(args)...);
+  }
+
+  MockSpec<R(Args...)> gmock_Call(Matcher<Args>... m) {
+    mock_.RegisterOwner(this);
+    return mock_.With(std::move(m)...);
+  }
+
+  MockSpec<R(Args...)> gmock_Call(const WithoutMatchers&, R (*)(Args...)) {
+    return this->gmock_Call(::testing::A<Args>()...);
+  }
+
+ protected:
+  MockFunction() = default;
+  ~MockFunction() = default;
+
+ private:
+  FunctionMocker<R(Args...)> mock_;
+};
+
+/*
+The SignatureOf<F> struct is a meta-function returning function signature
+corresponding to the provided F argument.
+
+It makes use of MockFunction easier by allowing it to accept more F arguments
+than just function signatures.
+
+Specializations provided here cover only a signature type itself and
+std::function. However, if need be it can be easily extended to cover also other
+types (like for example boost::function).
+*/
+
+template <typename F>
+struct SignatureOf;
+
+template <typename R, typename... Args>
+struct SignatureOf<R(Args...)> {
+  using type = R(Args...);
+};
+
+template <typename F>
+struct SignatureOf<std::function<F>> : SignatureOf<F> {};
+
+template <typename F>
+using SignatureOfT = typename SignatureOf<F>::type;
+
+}  // namespace internal
+
+// A MockFunction<F> type has one mock method whose type is
+// internal::SignatureOfT<F>.  It is useful when you just want your
+// test code to emit some messages and have Google Mock verify the
+// right messages are sent (and perhaps at the right times).  For
+// example, if you are exercising code:
 //
 //   Foo(1);
 //   Foo(2);
@@ -1823,49 +1897,34 @@ void ReportUninterestingCall(CallReaction reaction, const std::string& msg);
 // Bar("a") is called by which call to Foo().
 //
 // MockFunction<F> can also be used to exercise code that accepts
-// std::function<F> callbacks. To do so, use AsStdFunction() method
-// to create std::function proxy forwarding to original object's Call.
-// Example:
+// std::function<internal::SignatureOfT<F>> callbacks. To do so, use
+// AsStdFunction() method to create std::function proxy forwarding to
+// original object's Call. Example:
 //
 // TEST(FooTest, RunsCallbackWithBarArgument) {
 //   MockFunction<int(string)> callback;
 //   EXPECT_CALL(callback, Call("bar")).WillOnce(Return(1));
 //   Foo(callback.AsStdFunction());
 // }
+//
+// The internal::SignatureOfT<F> indirection allows to use other types
+// than just function signature type. This is typically useful when
+// providing a mock for a predefined std::function type. Example:
+//
+// using FilterPredicate = std::function<bool(string)>;
+// void MyFilterAlgorithm(FilterPredicate predicate);
+//
+// TEST(FooTest, FilterPredicateAlwaysAccepts) {
+//   MockFunction<FilterPredicate> predicateMock;
+//   EXPECT_CALL(predicateMock, Call(_)).WillRepeatedly(Return(true));
+//   MyFilterAlgorithm(predicateMock.AsStdFunction());
+// }
 template <typename F>
-class MockFunction;
+class MockFunction : public internal::MockFunction<internal::SignatureOfT<F>> {
+  using Base = internal::MockFunction<internal::SignatureOfT<F>>;
 
-template <typename R, typename... Args>
-class MockFunction<R(Args...)> {
  public:
-  MockFunction() {}
-  MockFunction(const MockFunction&) = delete;
-  MockFunction& operator=(const MockFunction&) = delete;
-
-  std::function<R(Args...)> AsStdFunction() {
-    return [this](Args... args) -> R {
-      return this->Call(std::forward<Args>(args)...);
-    };
-  }
-
-  // Implementation detail: the expansion of the MOCK_METHOD macro.
-  R Call(Args... args) {
-    mock_.SetOwnerAndName(this, "Call");
-    return mock_.Invoke(std::forward<Args>(args)...);
-  }
-
-  internal::MockSpec<R(Args...)> gmock_Call(Matcher<Args>... m) {
-    mock_.RegisterOwner(this);
-    return mock_.With(std::move(m)...);
-  }
-
-  internal::MockSpec<R(Args...)> gmock_Call(const internal::WithoutMatchers&,
-                                            R (*)(Args...)) {
-    return this->gmock_Call(::testing::A<Args>()...);
-  }
-
- private:
-  internal::FunctionMocker<R(Args...)> mock_;
+  using Base::Base;
 };
 
 // The style guide prohibits "using" statements in a namespace scope
index 99c3d7871d0f92d472536d54035bd97e48ec71ca..8a4aceaee1d94fe3bd76a90c44bee0d09f03c791 100644 (file)
 #include "gmock/gmock-cardinalities.h"
 #include "gmock/gmock-function-mocker.h"
 #include "gmock/gmock-generated-actions.h"
-#include "gmock/gmock-generated-function-mockers.h"
-#include "gmock/gmock-generated-matchers.h"
 #include "gmock/gmock-matchers.h"
-#include "gmock/gmock-more-actions.h"
 #include "gmock/gmock-more-matchers.h"
 #include "gmock/gmock-nice-strict.h"
 #include "gmock/internal/gmock-internal-utils.h"
index 66cf857b7bfcfb07ba735872487f5ead65d80697..200c30e414281d3dbc2ab7326ec14669d85ce02a 100644 (file)
@@ -71,20 +71,6 @@ GTEST_API_ std::string JoinAsTuple(const Strings& fields);
 // "foo_bar_123" are converted to "foo bar 123".
 GTEST_API_ std::string ConvertIdentifierNameToWords(const char* id_name);
 
-// PointeeOf<Pointer>::type is the type of a value pointed to by a
-// Pointer, which can be either a smart pointer or a raw pointer.  The
-// following default implementation is for the case where Pointer is a
-// smart pointer.
-template <typename Pointer>
-struct PointeeOf {
-  // Smart pointer classes define type element_type as the type of
-  // their pointees.
-  typedef typename Pointer::element_type type;
-};
-// This specialization is for the raw pointer case.
-template <typename T>
-struct PointeeOf<T*> { typedef T type; };  // NOLINT
-
 // GetRawPointer(p) returns the raw pointer underlying p when p is a
 // smart pointer, or returns p itself when p is already a raw pointer.
 // The following default implementation is for the smart pointer case.
@@ -378,7 +364,8 @@ template <typename ElementPointer, typename Size>
 class StlContainerView< ::std::tuple<ElementPointer, Size> > {
  public:
   typedef typename std::remove_const<
-      typename internal::PointeeOf<ElementPointer>::type>::type RawElement;
+      typename std::pointer_traits<ElementPointer>::element_type>::type
+      RawElement;
   typedef internal::NativeArray<RawElement> type;
   typedef const type const_reference;
 
@@ -422,11 +409,13 @@ auto ApplyImpl(F&& f, Tuple&& args, IndexSequence<Idx...>) -> decltype(
 
 // Apply the function to a tuple of arguments.
 template <typename F, typename Tuple>
-auto Apply(F&& f, Tuple&& args)
-    -> decltype(ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args),
-                          MakeIndexSequence<std::tuple_size<Tuple>::value>())) {
+auto Apply(F&& f, Tuple&& args) -> decltype(
+    ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args),
+              MakeIndexSequence<std::tuple_size<
+                  typename std::remove_reference<Tuple>::type>::value>())) {
   return ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args),
-                   MakeIndexSequence<std::tuple_size<Tuple>::value>());
+                   MakeIndexSequence<std::tuple_size<
+                       typename std::remove_reference<Tuple>::type>::value>());
 }
 
 // Template struct Function<F>, where F must be a function type, contains
index c3759f66bbd59a3ad4eb73b88c6cc1f14852aa5e..23615c562f5d963c9028e83699b5d3ae5f7c8d82 100644 (file)
 // Requires: the number of arguments after expansion is at most 15.
 #define GMOCK_PP_NARG(...) \
   GMOCK_PP_INTERNAL_16TH(  \
-      (__VA_ARGS__, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1))
+      (__VA_ARGS__, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
 
 // Returns 1 if the expansion of arguments has an unprotected comma. Otherwise
 // returns 0. Requires no more than 15 unprotected commas.
 #define GMOCK_PP_HAS_COMMA(...) \
   GMOCK_PP_INTERNAL_16TH(       \
-      (__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0))
+      (__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0))
 
 // Returns the first argument.
-#define GMOCK_PP_HEAD(...) GMOCK_PP_INTERNAL_HEAD((__VA_ARGS__))
+#define GMOCK_PP_HEAD(...) GMOCK_PP_INTERNAL_HEAD((__VA_ARGS__, unusedArg))
 
 // Returns the tail. A variadic list of all arguments minus the first. Requires
 // at least one argument.
 #define GMOCK_PP_IF(_Cond, _Then, _Else) \
   GMOCK_PP_CAT(GMOCK_PP_INTERNAL_IF_, _Cond)(_Then, _Else)
 
+// Similar to GMOCK_PP_IF but takes _Then and _Else in parentheses.
+//
+// GMOCK_PP_GENERIC_IF(1, (a, b, c), (d, e, f)) => a, b, c
+// GMOCK_PP_GENERIC_IF(0, (a, b, c), (d, e, f)) => d, e, f
+//
+#define GMOCK_PP_GENERIC_IF(_Cond, _Then, _Else) \
+  GMOCK_PP_REMOVE_PARENS(GMOCK_PP_IF(_Cond, _Then, _Else))
+
 // Evaluates to the number of arguments after expansion. Identifies 'empty' as
 // 0.
 //
index c33c7253febf9e64b5a9d32c51e733ec3ef9730c..c3ba3b833796330b11b5a99fac532f8ade69967b 100755 (executable)
@@ -28,8 +28,8 @@
 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""fuse_gmock_files.py v0.1.0.
 
-"""fuse_gmock_files.py v0.1.0
 Fuses Google Mock and Google Test source code into two .h files and a .cc file.
 
 SYNOPSIS
@@ -55,27 +55,29 @@ EXAMPLES
 This tool is experimental.  In particular, it assumes that there is no
 conditional inclusion of Google Mock or Google Test headers.  Please
 report any problems to googlemock@googlegroups.com.  You can read
-https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md for more
+https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md
+for more
 information.
 """
 
-__author__ = 'wan@google.com (Zhanyong Wan)'
+from __future__ import print_function
 
 import os
 import re
-import sets
 import sys
 
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
 # We assume that this file is in the scripts/ directory in the Google
 # Mock root directory.
 DEFAULT_GMOCK_ROOT_DIR = os.path.join(os.path.dirname(__file__), '..')
 
 # We need to call into googletest/scripts/fuse_gtest_files.py.
 sys.path.append(os.path.join(DEFAULT_GMOCK_ROOT_DIR, '../googletest/scripts'))
-import fuse_gtest_files
-gtest = fuse_gtest_files
+import fuse_gtest_files as gtest  # pylint:disable=g-import-not-at-top
 
-# Regex for matching '#include "gmock/..."'.
+# Regex for matching
+# '#include "gmock/..."'.
 INCLUDE_GMOCK_FILE_REGEX = re.compile(r'^\s*#\s*include\s*"(gmock/.+)"')
 
 # Where to find the source seed files.
@@ -98,6 +100,9 @@ def ValidateGMockRootDir(gmock_root):
   """Makes sure gmock_root points to a valid gmock root directory.
 
   The function aborts the program on failure.
+
+  Args:
+    gmock_root: A string with the mock root directory.
   """
 
   gtest.ValidateGTestRootDir(GetGTestRootDir(gmock_root))
@@ -109,6 +114,9 @@ def ValidateOutputDir(output_dir):
   """Makes sure output_dir points to a valid output directory.
 
   The function aborts the program on failure.
+
+  Args:
+    output_dir: A string representing the output directory.
   """
 
   gtest.VerifyOutputFile(output_dir, gtest.GTEST_H_OUTPUT)
@@ -119,8 +127,8 @@ def ValidateOutputDir(output_dir):
 def FuseGMockH(gmock_root, output_dir):
   """Scans folder gmock_root to generate gmock/gmock.h in output_dir."""
 
-  output_file = file(os.path.join(output_dir, GMOCK_H_OUTPUT), 'w')
-  processed_files = sets.Set()  # Holds all gmock headers we've processed.
+  output_file = open(os.path.join(output_dir, GMOCK_H_OUTPUT), 'w')
+  processed_files = set()  # Holds all gmock headers we've processed.
 
   def ProcessFile(gmock_header_path):
     """Processes the given gmock header file."""
@@ -132,25 +140,29 @@ def FuseGMockH(gmock_root, output_dir):
     processed_files.add(gmock_header_path)
 
     # Reads each line in the given gmock header.
-    for line in file(os.path.join(gmock_root, gmock_header_path), 'r'):
-      m = INCLUDE_GMOCK_FILE_REGEX.match(line)
-      if m:
-        # It's '#include "gmock/..."' - let's process it recursively.
-        ProcessFile('include/' + m.group(1))
-      else:
-        m = gtest.INCLUDE_GTEST_FILE_REGEX.match(line)
+
+    with open(os.path.join(gmock_root, gmock_header_path), 'r') as fh:
+      for line in fh:
+        m = INCLUDE_GMOCK_FILE_REGEX.match(line)
         if m:
-          # It's '#include "gtest/foo.h"'.  We translate it to
-          # "gtest/gtest.h", regardless of what foo is, since all
-          # gtest headers are fused into gtest/gtest.h.
-
-          # There is no need to #include gtest.h twice.
-          if not gtest.GTEST_H_SEED in processed_files:
-            processed_files.add(gtest.GTEST_H_SEED)
-            output_file.write('#include "%s"\n' % (gtest.GTEST_H_OUTPUT,))
+          # '#include "gmock/..."'
+          # - let's process it recursively.
+          ProcessFile('include/' + m.group(1))
         else:
-          # Otherwise we copy the line unchanged to the output file.
-          output_file.write(line)
+          m = gtest.INCLUDE_GTEST_FILE_REGEX.match(line)
+          if m:
+            # '#include "third_party/googletest/googletest/
+            # include/gtest/foo.h"'.
+            # We translate it to "gtest/gtest.h", regardless of what foo is,
+            # since all gtest headers are fused into gtest/gtest.h.
+
+            # There is no need to #include gtest.h twice.
+            if gtest.GTEST_H_SEED not in processed_files:
+              processed_files.add(gtest.GTEST_H_SEED)
+              output_file.write('#include "%s"\n' % (gtest.GTEST_H_OUTPUT,))
+          else:
+            # Otherwise we copy the line unchanged to the output file.
+            output_file.write(line)
 
   ProcessFile(GMOCK_H_SEED)
   output_file.close()
@@ -159,7 +171,7 @@ def FuseGMockH(gmock_root, output_dir):
 def FuseGMockAllCcToFile(gmock_root, output_file):
   """Scans folder gmock_root to fuse gmock-all.cc into output_file."""
 
-  processed_files = sets.Set()
+  processed_files = set()
 
   def ProcessFile(gmock_source_file):
     """Processes the given gmock source file."""
@@ -171,32 +183,37 @@ def FuseGMockAllCcToFile(gmock_root, output_file):
     processed_files.add(gmock_source_file)
 
     # Reads each line in the given gmock source file.
-    for line in file(os.path.join(gmock_root, gmock_source_file), 'r'):
-      m = INCLUDE_GMOCK_FILE_REGEX.match(line)
-      if m:
-        # It's '#include "gmock/foo.h"'.  We treat it as '#include
-        # "gmock/gmock.h"', as all other gmock headers are being fused
-        # into gmock.h and cannot be #included directly.
-
-        # There is no need to #include "gmock/gmock.h" more than once.
-        if not GMOCK_H_SEED in processed_files:
-          processed_files.add(GMOCK_H_SEED)
-          output_file.write('#include "%s"\n' % (GMOCK_H_OUTPUT,))
-      else:
-        m = gtest.INCLUDE_GTEST_FILE_REGEX.match(line)
+
+    with open(os.path.join(gmock_root, gmock_source_file), 'r') as fh:
+      for line in fh:
+        m = INCLUDE_GMOCK_FILE_REGEX.match(line)
         if m:
-          # It's '#include "gtest/..."'.
-          # There is no need to #include gtest.h as it has been
-          # #included by gtest-all.cc.
-          pass
+          # '#include "gmock/foo.h"'.
+          # We treat it as '#include  "gmock/gmock.h"', as all other gmock
+          # headers are being fused into gmock.h and cannot be
+          # included directly.  No need to #include
+          # "third_party/googletest/googlemock/include/gmock/gmock.h"
+          # more than once.
+
+          if GMOCK_H_SEED not in processed_files:
+            processed_files.add(GMOCK_H_SEED)
+            output_file.write('#include "%s"\n' % (GMOCK_H_OUTPUT,))
         else:
-          m = gtest.INCLUDE_SRC_FILE_REGEX.match(line)
+          m = gtest.INCLUDE_GTEST_FILE_REGEX.match(line)
           if m:
-            # It's '#include "src/foo"' - let's process it recursively.
-            ProcessFile(m.group(1))
+            # '#include "gtest/..."'.
+            # There is no need to #include gtest.h as it has been
+            # #included by gtest-all.cc.
+
+            pass
           else:
-            # Otherwise we copy the line unchanged to the output file.
-            output_file.write(line)
+            m = gtest.INCLUDE_SRC_FILE_REGEX.match(line)
+            if m:
+              # It's '#include "src/foo"' - let's process it recursively.
+              ProcessFile(m.group(1))
+            else:
+              # Otherwise we copy the line unchanged to the output file.
+              output_file.write(line)
 
   ProcessFile(GMOCK_ALL_CC_SEED)
 
@@ -204,12 +221,12 @@ def FuseGMockAllCcToFile(gmock_root, output_file):
 def FuseGMockGTestAllCc(gmock_root, output_dir):
   """Scans folder gmock_root to generate gmock-gtest-all.cc in output_dir."""
 
-  output_file = file(os.path.join(output_dir, GMOCK_GTEST_ALL_CC_OUTPUT), 'w')
-  # First, fuse gtest-all.cc into gmock-gtest-all.cc.
-  gtest.FuseGTestAllCcToFile(GetGTestRootDir(gmock_root), output_file)
-  # Next, append fused gmock-all.cc to gmock-gtest-all.cc.
-  FuseGMockAllCcToFile(gmock_root, output_file)
-  output_file.close()
+  with open(os.path.join(output_dir, GMOCK_GTEST_ALL_CC_OUTPUT),
+            'w') as output_file:
+    # First, fuse gtest-all.cc into gmock-gtest-all.cc.
+    gtest.FuseGTestAllCcToFile(GetGTestRootDir(gmock_root), output_file)
+    # Next, append fused gmock-all.cc to gmock-gtest-all.cc.
+    FuseGMockAllCcToFile(gmock_root, output_file)
 
 
 def FuseGMock(gmock_root, output_dir):
@@ -232,7 +249,7 @@ def main():
     # fuse_gmock_files.py GMOCK_ROOT_DIR OUTPUT_DIR
     FuseGMock(sys.argv[1], sys.argv[2])
   else:
-    print __doc__
+    print(__doc__)
     sys.exit(1)
 
 
index f6331d80b8588dda9240bd595655124453dd6a3c..cc9f89aa5108c8f4dd1ff70108a8cee279f83b9a 100755 (executable)
 
 
 try:
-    # Python 3.x
-    import builtins
+  # Python 3.x
+  import builtins
 except ImportError:
-    # Python 2.x
-    import __builtin__ as builtins
+  # Python 2.x
+  import __builtin__ as builtins
 
 import sys
 import traceback
@@ -45,15 +45,15 @@ from cpp import utils
 
 
 if not hasattr(builtins, 'reversed'):
-    # Support Python 2.3 and earlier.
-    def reversed(seq):
-        for i in range(len(seq)-1, -1, -1):
-            yield seq[i]
+  # Support Python 2.3 and earlier.
+  def reversed(seq):
+    for i in range(len(seq)-1, -1, -1):
+      yield seq[i]
 
 if not hasattr(builtins, 'next'):
-    # Support Python 2.5 and earlier.
-    def next(obj):
-        return obj.next()
+  # Support Python 2.5 and earlier.
+  def next(obj):
+    return obj.next()
 
 
 VISIBILITY_PUBLIC, VISIBILITY_PROTECTED, VISIBILITY_PRIVATE = range(3)
@@ -98,1598 +98,1609 @@ _NAMESPACE_POP = 'ns-pop'
 # TODO(nnorwitz): use this as a singleton for templated_types, etc
 # where we don't want to create a new empty dict each time.  It is also const.
 class _NullDict(object):
-    __contains__ = lambda self: False
-    keys = values = items = iterkeys = itervalues = iteritems = lambda self: ()
+  __contains__ = lambda self: False
+  keys = values = items = iterkeys = itervalues = iteritems = lambda self: ()
 
 
 # TODO(nnorwitz): move AST nodes into a separate module.
 class Node(object):
-    """Base AST node."""
+  """Base AST node."""
 
-    def __init__(self, start, end):
-        self.start = start
-        self.end = end
+  def __init__(self, start, end):
+    self.start = start
+    self.end = end
 
-    def IsDeclaration(self):
-        """Returns bool if this node is a declaration."""
-        return False
+  def IsDeclaration(self):
+    """Returns bool if this node is a declaration."""
+    return False
 
-    def IsDefinition(self):
-        """Returns bool if this node is a definition."""
-        return False
+  def IsDefinition(self):
+    """Returns bool if this node is a definition."""
+    return False
 
-    def IsExportable(self):
-        """Returns bool if this node exportable from a header file."""
-        return False
+  def IsExportable(self):
+    """Returns bool if this node exportable from a header file."""
+    return False
 
-    def Requires(self, node):
-        """Does this AST node require the definition of the node passed in?"""
-        return False
+  def Requires(self, node):
+    """Does this AST node require the definition of the node passed in?"""
+    return False
 
-    def XXX__str__(self):
-        return self._StringHelper(self.__class__.__name__, '')
+  def XXX__str__(self):
+    return self._StringHelper(self.__class__.__name__, '')
 
-    def _StringHelper(self, name, suffix):
-        if not utils.DEBUG:
-            return '%s(%s)' % (name, suffix)
-        return '%s(%d, %d, %s)' % (name, self.start, self.end, suffix)
+  def _StringHelper(self, name, suffix):
+    if not utils.DEBUG:
+      return '%s(%s)' % (name, suffix)
+    return '%s(%d, %d, %s)' % (name, self.start, self.end, suffix)
 
-    def __repr__(self):
-        return str(self)
+  def __repr__(self):
+    return str(self)
 
 
 class Define(Node):
-    def __init__(self, start, end, name, definition):
-        Node.__init__(self, start, end)
-        self.name = name
-        self.definition = definition
+  def __init__(self, start, end, name, definition):
+    Node.__init__(self, start, end)
+    self.name = name
+    self.definition = definition
 
-    def __str__(self):
-        value = '%s %s' % (self.name, self.definition)
-        return self._StringHelper(self.__class__.__name__, value)
+  def __str__(self):
+    value = '%s %s' % (self.name, self.definition)
+    return self._StringHelper(self.__class__.__name__, value)
 
 
 class Include(Node):
-    def __init__(self, start, end, filename, system):
-        Node.__init__(self, start, end)
-        self.filename = filename
-        self.system = system
+  def __init__(self, start, end, filename, system):
+    Node.__init__(self, start, end)
+    self.filename = filename
+    self.system = system
 
-    def __str__(self):
-        fmt = '"%s"'
-        if self.system:
-            fmt = '<%s>'
-        return self._StringHelper(self.__class__.__name__, fmt % self.filename)
+  def __str__(self):
+    fmt = '"%s"'
+    if self.system:
+      fmt = '<%s>'
+    return self._StringHelper(self.__class__.__name__, fmt % self.filename)
 
 
 class Goto(Node):
-    def __init__(self, start, end, label):
-        Node.__init__(self, start, end)
-        self.label = label
+  def __init__(self, start, end, label):
+    Node.__init__(self, start, end)
+    self.label = label
 
-    def __str__(self):
-        return self._StringHelper(self.__class__.__name__, str(self.label))
+  def __str__(self):
+    return self._StringHelper(self.__class__.__name__, str(self.label))
 
 
 class Expr(Node):
-    def __init__(self, start, end, expr):
-        Node.__init__(self, start, end)
-        self.expr = expr
+  def __init__(self, start, end, expr):
+    Node.__init__(self, start, end)
+    self.expr = expr
 
-    def Requires(self, node):
-        # TODO(nnorwitz): impl.
-        return False
+  def Requires(self, node):
+    # TODO(nnorwitz): impl.
+    return False
 
-    def __str__(self):
-        return self._StringHelper(self.__class__.__name__, str(self.expr))
+  def __str__(self):
+    return self._StringHelper(self.__class__.__name__, str(self.expr))
 
 
 class Return(Expr):
-    pass
+  pass
 
 
 class Delete(Expr):
-    pass
+  pass
 
 
 class Friend(Expr):
-    def __init__(self, start, end, expr, namespace):
-        Expr.__init__(self, start, end, expr)
-        self.namespace = namespace[:]
+  def __init__(self, start, end, expr, namespace):
+    Expr.__init__(self, start, end, expr)
+    self.namespace = namespace[:]
 
 
 class Using(Node):
-    def __init__(self, start, end, names):
-        Node.__init__(self, start, end)
-        self.names = names
+  def __init__(self, start, end, names):
+    Node.__init__(self, start, end)
+    self.names = names
 
-    def __str__(self):
-        return self._StringHelper(self.__class__.__name__, str(self.names))
+  def __str__(self):
+    return self._StringHelper(self.__class__.__name__, str(self.names))
 
 
 class Parameter(Node):
-    def __init__(self, start, end, name, parameter_type, default):
-        Node.__init__(self, start, end)
-        self.name = name
-        self.type = parameter_type
-        self.default = default
+  def __init__(self, start, end, name, parameter_type, default):
+    Node.__init__(self, start, end)
+    self.name = name
+    self.type = parameter_type
+    self.default = default
 
-    def Requires(self, node):
-        # TODO(nnorwitz): handle namespaces, etc.
-        return self.type.name == node.name
+  def Requires(self, node):
+    # TODO(nnorwitz): handle namespaces, etc.
+    return self.type.name == node.name
 
-    def __str__(self):
-        name = str(self.type)
-        suffix = '%s %s' % (name, self.name)
-        if self.default:
-            suffix += ' = ' + ''.join([d.name for d in self.default])
-        return self._StringHelper(self.__class__.__name__, suffix)
+  def __str__(self):
+    name = str(self.type)
+    suffix = '%s %s' % (name, self.name)
+    if self.default:
+      suffix += ' = ' + ''.join([d.name for d in self.default])
+    return self._StringHelper(self.__class__.__name__, suffix)
 
 
 class _GenericDeclaration(Node):
-    def __init__(self, start, end, name, namespace):
-        Node.__init__(self, start, end)
-        self.name = name
-        self.namespace = namespace[:]
+  def __init__(self, start, end, name, namespace):
+    Node.__init__(self, start, end)
+    self.name = name
+    self.namespace = namespace[:]
 
-    def FullName(self):
-        prefix = ''
-        if self.namespace and self.namespace[-1]:
-            prefix = '::'.join(self.namespace) + '::'
-        return prefix + self.name
+  def FullName(self):
+    prefix = ''
+    if self.namespace and self.namespace[-1]:
+      prefix = '::'.join(self.namespace) + '::'
+    return prefix + self.name
 
-    def _TypeStringHelper(self, suffix):
-        if self.namespace:
-            names = [n or '<anonymous>' for n in self.namespace]
-            suffix += ' in ' + '::'.join(names)
-        return self._StringHelper(self.__class__.__name__, suffix)
+  def _TypeStringHelper(self, suffix):
+    if self.namespace:
+      names = [n or '<anonymous>' for n in self.namespace]
+      suffix += ' in ' + '::'.join(names)
+    return self._StringHelper(self.__class__.__name__, suffix)
 
 
 # TODO(nnorwitz): merge with Parameter in some way?
 class VariableDeclaration(_GenericDeclaration):
-    def __init__(self, start, end, name, var_type, initial_value, namespace):
-        _GenericDeclaration.__init__(self, start, end, name, namespace)
-        self.type = var_type
-        self.initial_value = initial_value
+  def __init__(self, start, end, name, var_type, initial_value, namespace):
+    _GenericDeclaration.__init__(self, start, end, name, namespace)
+    self.type = var_type
+    self.initial_value = initial_value
 
-    def Requires(self, node):
-        # TODO(nnorwitz): handle namespaces, etc.
-        return self.type.name == node.name
+  def Requires(self, node):
+    # TODO(nnorwitz): handle namespaces, etc.
+    return self.type.name == node.name
 
-    def ToString(self):
-        """Return a string that tries to reconstitute the variable decl."""
-        suffix = '%s %s' % (self.type, self.name)
-        if self.initial_value:
-            suffix += ' = ' + self.initial_value
-        return suffix
+  def ToString(self):
+    """Return a string that tries to reconstitute the variable decl."""
+    suffix = '%s %s' % (self.type, self.name)
+    if self.initial_value:
+      suffix += ' = ' + self.initial_value
+    return suffix
 
-    def __str__(self):
-        return self._StringHelper(self.__class__.__name__, self.ToString())
+  def __str__(self):
+    return self._StringHelper(self.__class__.__name__, self.ToString())
 
 
 class Typedef(_GenericDeclaration):
-    def __init__(self, start, end, name, alias, namespace):
-        _GenericDeclaration.__init__(self, start, end, name, namespace)
-        self.alias = alias
+  def __init__(self, start, end, name, alias, namespace):
+    _GenericDeclaration.__init__(self, start, end, name, namespace)
+    self.alias = alias
 
-    def IsDefinition(self):
-        return True
+  def IsDefinition(self):
+    return True
 
-    def IsExportable(self):
-        return True
+  def IsExportable(self):
+    return True
 
-    def Requires(self, node):
-        # TODO(nnorwitz): handle namespaces, etc.
-        name = node.name
-        for token in self.alias:
-            if token is not None and name == token.name:
-                return True
-        return False
+  def Requires(self, node):
+    # TODO(nnorwitz): handle namespaces, etc.
+    name = node.name
+    for token in self.alias:
+      if token is not None and name == token.name:
+        return True
+    return False
 
-    def __str__(self):
-        suffix = '%s, %s' % (self.name, self.alias)
-        return self._TypeStringHelper(suffix)
+  def __str__(self):
+    suffix = '%s, %s' % (self.name, self.alias)
+    return self._TypeStringHelper(suffix)
 
 
 class _NestedType(_GenericDeclaration):
-    def __init__(self, start, end, name, fields, namespace):
-        _GenericDeclaration.__init__(self, start, end, name, namespace)
-        self.fields = fields
+  def __init__(self, start, end, name, fields, namespace):
+    _GenericDeclaration.__init__(self, start, end, name, namespace)
+    self.fields = fields
 
-    def IsDefinition(self):
-        return True
+  def IsDefinition(self):
+    return True
 
-    def IsExportable(self):
-        return True
+  def IsExportable(self):
+    return True
 
-    def __str__(self):
-        suffix = '%s, {%s}' % (self.name, self.fields)
-        return self._TypeStringHelper(suffix)
+  def __str__(self):
+    suffix = '%s, {%s}' % (self.name, self.fields)
+    return self._TypeStringHelper(suffix)
 
 
 class Union(_NestedType):
-    pass
+  pass
 
 
 class Enum(_NestedType):
-    pass
+  pass
 
 
 class Class(_GenericDeclaration):
-    def __init__(self, start, end, name, bases, templated_types, body, namespace):
-        _GenericDeclaration.__init__(self, start, end, name, namespace)
-        self.bases = bases
-        self.body = body
-        self.templated_types = templated_types
-
-    def IsDeclaration(self):
-        return self.bases is None and self.body is None
-
-    def IsDefinition(self):
-        return not self.IsDeclaration()
-
-    def IsExportable(self):
-        return not self.IsDeclaration()
-
-    def Requires(self, node):
-        # TODO(nnorwitz): handle namespaces, etc.
-        if self.bases:
-            for token_list in self.bases:
-                # TODO(nnorwitz): bases are tokens, do name comparision.
-                for token in token_list:
-                    if token.name == node.name:
-                        return True
-        # TODO(nnorwitz): search in body too.
-        return False
-
-    def __str__(self):
-        name = self.name
-        if self.templated_types:
-            name += '<%s>' % self.templated_types
-        suffix = '%s, %s, %s' % (name, self.bases, self.body)
-        return self._TypeStringHelper(suffix)
+  def __init__(self, start, end, name, bases, templated_types, body, namespace):
+    _GenericDeclaration.__init__(self, start, end, name, namespace)
+    self.bases = bases
+    self.body = body
+    self.templated_types = templated_types
+
+  def IsDeclaration(self):
+    return self.bases is None and self.body is None
+
+  def IsDefinition(self):
+    return not self.IsDeclaration()
+
+  def IsExportable(self):
+    return not self.IsDeclaration()
+
+  def Requires(self, node):
+    # TODO(nnorwitz): handle namespaces, etc.
+    if self.bases:
+      for token_list in self.bases:
+        # TODO(nnorwitz): bases are tokens, do name comparision.
+        for token in token_list:
+          if token.name == node.name:
+            return True
+    # TODO(nnorwitz): search in body too.
+    return False
+
+  def __str__(self):
+    name = self.name
+    if self.templated_types:
+      name += '<%s>' % self.templated_types
+    suffix = '%s, %s, %s' % (name, self.bases, self.body)
+    return self._TypeStringHelper(suffix)
 
 
 class Struct(Class):
-    pass
+  pass
 
 
 class Function(_GenericDeclaration):
-    def __init__(self, start, end, name, return_type, parameters,
-                 modifiers, templated_types, body, namespace):
-        _GenericDeclaration.__init__(self, start, end, name, namespace)
-        converter = TypeConverter(namespace)
-        self.return_type = converter.CreateReturnType(return_type)
-        self.parameters = converter.ToParameters(parameters)
-        self.modifiers = modifiers
-        self.body = body
-        self.templated_types = templated_types
-
-    def IsDeclaration(self):
-        return self.body is None
-
-    def IsDefinition(self):
-        return self.body is not None
-
-    def IsExportable(self):
-        if self.return_type and 'static' in self.return_type.modifiers:
-            return False
-        return None not in self.namespace
-
-    def Requires(self, node):
-        if self.parameters:
-            # TODO(nnorwitz): parameters are tokens, do name comparision.
-            for p in self.parameters:
-                if p.name == node.name:
-                    return True
-        # TODO(nnorwitz): search in body too.
-        return False
-
-    def __str__(self):
-        # TODO(nnorwitz): add templated_types.
-        suffix = ('%s %s(%s), 0x%02x, %s' %
-                  (self.return_type, self.name, self.parameters,
-                   self.modifiers, self.body))
-        return self._TypeStringHelper(suffix)
+  def __init__(self, start, end, name, return_type, parameters,
+               modifiers, templated_types, body, namespace):
+    _GenericDeclaration.__init__(self, start, end, name, namespace)
+    converter = TypeConverter(namespace)
+    self.return_type = converter.CreateReturnType(return_type)
+    self.parameters = converter.ToParameters(parameters)
+    self.modifiers = modifiers
+    self.body = body
+    self.templated_types = templated_types
+
+  def IsDeclaration(self):
+    return self.body is None
+
+  def IsDefinition(self):
+    return self.body is not None
+
+  def IsExportable(self):
+    if self.return_type and 'static' in self.return_type.modifiers:
+      return False
+    return None not in self.namespace
+
+  def Requires(self, node):
+    if self.parameters:
+      # TODO(nnorwitz): parameters are tokens, do name comparision.
+      for p in self.parameters:
+        if p.name == node.name:
+          return True
+    # TODO(nnorwitz): search in body too.
+    return False
+
+  def __str__(self):
+    # TODO(nnorwitz): add templated_types.
+    suffix = ('%s %s(%s), 0x%02x, %s' %
+              (self.return_type, self.name, self.parameters,
+               self.modifiers, self.body))
+    return self._TypeStringHelper(suffix)
 
 
 class Method(Function):
-    def __init__(self, start, end, name, in_class, return_type, parameters,
-                 modifiers, templated_types, body, namespace):
-        Function.__init__(self, start, end, name, return_type, parameters,
-                          modifiers, templated_types, body, namespace)
-        # TODO(nnorwitz): in_class could also be a namespace which can
-        # mess up finding functions properly.
-        self.in_class = in_class
+  def __init__(self, start, end, name, in_class, return_type, parameters,
+               modifiers, templated_types, body, namespace):
+    Function.__init__(self, start, end, name, return_type, parameters,
+                      modifiers, templated_types, body, namespace)
+    # TODO(nnorwitz): in_class could also be a namespace which can
+    # mess up finding functions properly.
+    self.in_class = in_class
 
 
 class Type(_GenericDeclaration):
-    """Type used for any variable (eg class, primitive, struct, etc)."""
+  """Type used for any variable (eg class, primitive, struct, etc)."""
 
-    def __init__(self, start, end, name, templated_types, modifiers,
-                 reference, pointer, array):
-        """
+  def __init__(self, start, end, name, templated_types, modifiers,
+               reference, pointer, array):
+    """
         Args:
           name: str name of main type
           templated_types: [Class (Type?)] template type info between <>
           modifiers: [str] type modifiers (keywords) eg, const, mutable, etc.
           reference, pointer, array: bools
         """
-        _GenericDeclaration.__init__(self, start, end, name, [])
-        self.templated_types = templated_types
-        if not name and modifiers:
-            self.name = modifiers.pop()
-        self.modifiers = modifiers
-        self.reference = reference
-        self.pointer = pointer
-        self.array = array
-
-    def __str__(self):
-        prefix = ''
-        if self.modifiers:
-            prefix = ' '.join(self.modifiers) + ' '
-        name = str(self.name)
-        if self.templated_types:
-            name += '<%s>' % self.templated_types
-        suffix = prefix + name
-        if self.reference:
-            suffix += '&'
-        if self.pointer:
-            suffix += '*'
-        if self.array:
-            suffix += '[]'
-        return self._TypeStringHelper(suffix)
-
-    # By definition, Is* are always False.  A Type can only exist in
-    # some sort of variable declaration, parameter, or return value.
-    def IsDeclaration(self):
-        return False
-
-    def IsDefinition(self):
-        return False
-
-    def IsExportable(self):
-        return False
+    _GenericDeclaration.__init__(self, start, end, name, [])
+    self.templated_types = templated_types
+    if not name and modifiers:
+      self.name = modifiers.pop()
+    self.modifiers = modifiers
+    self.reference = reference
+    self.pointer = pointer
+    self.array = array
+
+  def __str__(self):
+    prefix = ''
+    if self.modifiers:
+      prefix = ' '.join(self.modifiers) + ' '
+    name = str(self.name)
+    if self.templated_types:
+      name += '<%s>' % self.templated_types
+    suffix = prefix + name
+    if self.reference:
+      suffix += '&'
+    if self.pointer:
+      suffix += '*'
+    if self.array:
+      suffix += '[]'
+    return self._TypeStringHelper(suffix)
+
+  # By definition, Is* are always False.  A Type can only exist in
+  # some sort of variable declaration, parameter, or return value.
+  def IsDeclaration(self):
+    return False
+
+  def IsDefinition(self):
+    return False
+
+  def IsExportable(self):
+    return False
 
 
 class TypeConverter(object):
 
-    def __init__(self, namespace_stack):
-        self.namespace_stack = namespace_stack
-
-    def _GetTemplateEnd(self, tokens, start):
-        count = 1
-        end = start
-        while 1:
-            token = tokens[end]
-            end += 1
-            if token.name == '<':
-                count += 1
-            elif token.name == '>':
-                count -= 1
-                if count == 0:
-                    break
-        return tokens[start:end-1], end
-
-    def ToType(self, tokens):
-        """Convert [Token,...] to [Class(...), ] useful for base classes.
+  def __init__(self, namespace_stack):
+    self.namespace_stack = namespace_stack
+
+  def _GetTemplateEnd(self, tokens, start):
+    count = 1
+    end = start
+    while 1:
+      token = tokens[end]
+      end += 1
+      if token.name == '<':
+        count += 1
+      elif token.name == '>':
+        count -= 1
+        if count == 0:
+          break
+    return tokens[start:end-1], end
+
+  def ToType(self, tokens):
+    """Convert [Token,...] to [Class(...), ] useful for base classes.
         For example, code like class Foo : public Bar<x, y> { ... };
         the "Bar<x, y>" portion gets converted to an AST.
 
         Returns:
           [Class(...), ...]
         """
-        result = []
-        name_tokens = []
+    result = []
+    name_tokens = []
+    reference = pointer = array = False
+
+    def AddType(templated_types):
+      # Partition tokens into name and modifier tokens.
+      names = []
+      modifiers = []
+      for t in name_tokens:
+        if keywords.IsKeyword(t.name):
+          modifiers.append(t.name)
+        else:
+          names.append(t.name)
+      name = ''.join(names)
+      if name_tokens:
+        result.append(Type(name_tokens[0].start, name_tokens[-1].end,
+                           name, templated_types, modifiers,
+                           reference, pointer, array))
+      del name_tokens[:]
+
+    i = 0
+    end = len(tokens)
+    while i < end:
+      token = tokens[i]
+      if token.name == '<':
+        new_tokens, new_end = self._GetTemplateEnd(tokens, i+1)
+        AddType(self.ToType(new_tokens))
+        # If there is a comma after the template, we need to consume
+        # that here otherwise it becomes part of the name.
+        i = new_end
         reference = pointer = array = False
-
-        def AddType(templated_types):
-            # Partition tokens into name and modifier tokens.
-            names = []
-            modifiers = []
-            for t in name_tokens:
-                if keywords.IsKeyword(t.name):
-                    modifiers.append(t.name)
-                else:
-                    names.append(t.name)
-            name = ''.join(names)
-            if name_tokens:
-                result.append(Type(name_tokens[0].start, name_tokens[-1].end,
-                                   name, templated_types, modifiers,
-                                   reference, pointer, array))
-            del name_tokens[:]
-
-        i = 0
-        end = len(tokens)
-        while i < end:
-            token = tokens[i]
-            if token.name == '<':
-                new_tokens, new_end = self._GetTemplateEnd(tokens, i+1)
-                AddType(self.ToType(new_tokens))
-                # If there is a comma after the template, we need to consume
-                # that here otherwise it becomes part of the name.
-                i = new_end
-                reference = pointer = array = False
-            elif token.name == ',':
-                AddType([])
-                reference = pointer = array = False
-            elif token.name == '*':
-                pointer = True
-            elif token.name == '&':
-                reference = True
-            elif token.name == '[':
-                pointer = True
-            elif token.name == ']':
-                pass
-            else:
-                name_tokens.append(token)
-            i += 1
-
-        if name_tokens:
-            # No '<' in the tokens, just a simple name and no template.
-            AddType([])
-        return result
-
-    def DeclarationToParts(self, parts, needs_name_removed):
-        name = None
-        default = []
-        if needs_name_removed:
-            # Handle default (initial) values properly.
-            for i, t in enumerate(parts):
-                if t.name == '=':
-                    default = parts[i+1:]
-                    name = parts[i-1].name
-                    if name == ']' and parts[i-2].name == '[':
-                        name = parts[i-3].name
-                        i -= 1
-                    parts = parts[:i-1]
-                    break
-            else:
-                if parts[-1].token_type == tokenize.NAME:
-                    name = parts.pop().name
-                else:
-                    # TODO(nnorwitz): this is a hack that happens for code like
-                    # Register(Foo<T>); where it thinks this is a function call
-                    # but it's actually a declaration.
-                    name = '???'
-        modifiers = []
-        type_name = []
-        other_tokens = []
-        templated_types = []
-        i = 0
-        end = len(parts)
-        while i < end:
-            p = parts[i]
-            if keywords.IsKeyword(p.name):
-                modifiers.append(p.name)
-            elif p.name == '<':
-                templated_tokens, new_end = self._GetTemplateEnd(parts, i+1)
-                templated_types = self.ToType(templated_tokens)
-                i = new_end - 1
-                # Don't add a spurious :: to data members being initialized.
-                next_index = i + 1
-                if next_index < end and parts[next_index].name == '::':
-                    i += 1
-            elif p.name in ('[', ']', '='):
-                # These are handled elsewhere.
-                other_tokens.append(p)
-            elif p.name not in ('*', '&', '>'):
-                # Ensure that names have a space between them.
-                if (type_name and type_name[-1].token_type == tokenize.NAME and
-                        p.token_type == tokenize.NAME):
-                    type_name.append(tokenize.Token(tokenize.SYNTAX, ' ', 0, 0))
-                type_name.append(p)
-            else:
-                other_tokens.append(p)
-            i += 1
-        type_name = ''.join([t.name for t in type_name])
-        return name, type_name, templated_types, modifiers, default, other_tokens
-
-    def ToParameters(self, tokens):
-        if not tokens:
-            return []
-
-        result = []
+      elif token.name == ',':
+        AddType([])
+        reference = pointer = array = False
+      elif token.name == '*':
+        pointer = True
+      elif token.name == '&':
+        reference = True
+      elif token.name == '[':
+        pointer = True
+      elif token.name == ']':
+        pass
+      else:
+        name_tokens.append(token)
+      i += 1
+
+    if name_tokens:
+      # No '<' in the tokens, just a simple name and no template.
+      AddType([])
+    return result
+
+  def DeclarationToParts(self, parts, needs_name_removed):
+    name = None
+    default = []
+    if needs_name_removed:
+      # Handle default (initial) values properly.
+      for i, t in enumerate(parts):
+        if t.name == '=':
+          default = parts[i+1:]
+          name = parts[i-1].name
+          if name == ']' and parts[i-2].name == '[':
+            name = parts[i-3].name
+            i -= 1
+          parts = parts[:i-1]
+          break
+      else:
+        if parts[-1].token_type == tokenize.NAME:
+          name = parts.pop().name
+        else:
+          # TODO(nnorwitz): this is a hack that happens for code like
+          # Register(Foo<T>); where it thinks this is a function call
+          # but it's actually a declaration.
+          name = '???'
+    modifiers = []
+    type_name = []
+    other_tokens = []
+    templated_types = []
+    i = 0
+    end = len(parts)
+    while i < end:
+      p = parts[i]
+      if keywords.IsKeyword(p.name):
+        modifiers.append(p.name)
+      elif p.name == '<':
+        templated_tokens, new_end = self._GetTemplateEnd(parts, i+1)
+        templated_types = self.ToType(templated_tokens)
+        i = new_end - 1
+        # Don't add a spurious :: to data members being initialized.
+        next_index = i + 1
+        if next_index < end and parts[next_index].name == '::':
+          i += 1
+      elif p.name in ('[', ']', '='):
+        # These are handled elsewhere.
+        other_tokens.append(p)
+      elif p.name not in ('*', '&', '>'):
+        # Ensure that names have a space between them.
+        if (type_name and type_name[-1].token_type == tokenize.NAME and
+                p.token_type == tokenize.NAME):
+          type_name.append(tokenize.Token(tokenize.SYNTAX, ' ', 0, 0))
+        type_name.append(p)
+      else:
+        other_tokens.append(p)
+      i += 1
+    type_name = ''.join([t.name for t in type_name])
+    return name, type_name, templated_types, modifiers, default, other_tokens
+
+  def ToParameters(self, tokens):
+    if not tokens:
+      return []
+
+    result = []
+    name = type_name = ''
+    type_modifiers = []
+    pointer = reference = array = False
+    first_token = None
+    default = []
+
+    def AddParameter(end):
+      if default:
+        del default[0]  # Remove flag.
+      parts = self.DeclarationToParts(type_modifiers, True)
+      (name, type_name, templated_types, modifiers,
+       unused_default, unused_other_tokens) = parts
+      parameter_type = Type(first_token.start, first_token.end,
+                            type_name, templated_types, modifiers,
+                            reference, pointer, array)
+      p = Parameter(first_token.start, end, name,
+                    parameter_type, default)
+      result.append(p)
+
+    template_count = 0
+    brace_count = 0
+    for s in tokens:
+      if not first_token:
+        first_token = s
+
+      # Check for braces before templates, as we can have unmatched '<>'
+      # inside default arguments.
+      if s.name == '{':
+        brace_count += 1
+      elif s.name == '}':
+        brace_count -= 1
+      if brace_count > 0:
+        type_modifiers.append(s)
+        continue
+
+      if s.name == '<':
+        template_count += 1
+      elif s.name == '>':
+        template_count -= 1
+      if template_count > 0:
+        type_modifiers.append(s)
+        continue
+
+      if s.name == ',':
+        AddParameter(s.start)
         name = type_name = ''
         type_modifiers = []
         pointer = reference = array = False
         first_token = None
         default = []
-
-        def AddParameter(end):
-            if default:
-                del default[0]  # Remove flag.
-            parts = self.DeclarationToParts(type_modifiers, True)
-            (name, type_name, templated_types, modifiers,
-             unused_default, unused_other_tokens) = parts
-            parameter_type = Type(first_token.start, first_token.end,
-                                  type_name, templated_types, modifiers,
-                                  reference, pointer, array)
-            p = Parameter(first_token.start, end, name,
-                          parameter_type, default)
-            result.append(p)
-
-        template_count = 0
-        for s in tokens:
-            if not first_token:
-                first_token = s
-            if s.name == '<':
-                template_count += 1
-            elif s.name == '>':
-                template_count -= 1
-            if template_count > 0:
-                type_modifiers.append(s)
-                continue
-
-            if s.name == ',':
-                AddParameter(s.start)
-                name = type_name = ''
-                type_modifiers = []
-                pointer = reference = array = False
-                first_token = None
-                default = []
-            elif s.name == '*':
-                pointer = True
-            elif s.name == '&':
-                reference = True
-            elif s.name == '[':
-                array = True
-            elif s.name == ']':
-                pass  # Just don't add to type_modifiers.
-            elif s.name == '=':
-                # Got a default value.  Add any value (None) as a flag.
-                default.append(None)
-            elif default:
-                default.append(s)
-            else:
-                type_modifiers.append(s)
-        AddParameter(tokens[-1].end)
-        return result
-
-    def CreateReturnType(self, return_type_seq):
-        if not return_type_seq:
-            return None
-        start = return_type_seq[0].start
-        end = return_type_seq[-1].end
-        _, name, templated_types, modifiers, default, other_tokens = \
-            self.DeclarationToParts(return_type_seq, False)
-        names = [n.name for n in other_tokens]
-        reference = '&' in names
-        pointer = '*' in names
-        array = '[' in names
-        return Type(start, end, name, templated_types, modifiers,
-                    reference, pointer, array)
-
-    def GetTemplateIndices(self, names):
-        # names is a list of strings.
-        start = names.index('<')
-        end = len(names) - 1
-        while end > 0:
-            if names[end] == '>':
-                break
-            end -= 1
-        return start, end+1
+      elif s.name == '*':
+        pointer = True
+      elif s.name == '&':
+        reference = True
+      elif s.name == '[':
+        array = True
+      elif s.name == ']':
+        pass  # Just don't add to type_modifiers.
+      elif s.name == '=':
+        # Got a default value.  Add any value (None) as a flag.
+        default.append(None)
+      elif default:
+        default.append(s)
+      else:
+        type_modifiers.append(s)
+    AddParameter(tokens[-1].end)
+    return result
+
+  def CreateReturnType(self, return_type_seq):
+    if not return_type_seq:
+      return None
+    start = return_type_seq[0].start
+    end = return_type_seq[-1].end
+    _, name, templated_types, modifiers, default, other_tokens = \
+        self.DeclarationToParts(return_type_seq, False)
+    names = [n.name for n in other_tokens]
+    reference = '&' in names
+    pointer = '*' in names
+    array = '[' in names
+    return Type(start, end, name, templated_types, modifiers,
+                reference, pointer, array)
+
+  def GetTemplateIndices(self, names):
+    # names is a list of strings.
+    start = names.index('<')
+    end = len(names) - 1
+    while end > 0:
+      if names[end] == '>':
+        break
+      end -= 1
+    return start, end+1
 
 class AstBuilder(object):
-    def __init__(self, token_stream, filename, in_class='', visibility=None,
-                 namespace_stack=[]):
-        self.tokens = token_stream
-        self.filename = filename
-        # TODO(nnorwitz): use a better data structure (deque) for the queue.
-        # Switching directions of the "queue" improved perf by about 25%.
-        # Using a deque should be even better since we access from both sides.
-        self.token_queue = []
-        self.namespace_stack = namespace_stack[:]
-        self.in_class = in_class
-        if in_class is None:
-            self.in_class_name_only = None
-        else:
-            self.in_class_name_only = in_class.split('::')[-1]
-        self.visibility = visibility
-        self.in_function = False
-        self.current_token = None
-        # Keep the state whether we are currently handling a typedef or not.
-        self._handling_typedef = False
-
-        self.converter = TypeConverter(self.namespace_stack)
-
-    def HandleError(self, msg, token):
-        printable_queue = list(reversed(self.token_queue[-20:]))
-        sys.stderr.write('Got %s in %s @ %s %s\n' %
-                         (msg, self.filename, token, printable_queue))
-
-    def Generate(self):
-        while 1:
-            token = self._GetNextToken()
-            if not token:
-                break
-
-            # Get the next token.
-            self.current_token = token
-
-            # Dispatch on the next token type.
-            if token.token_type == _INTERNAL_TOKEN:
-                if token.name == _NAMESPACE_POP:
-                    self.namespace_stack.pop()
-                continue
-
-            try:
-                result = self._GenerateOne(token)
-                if result is not None:
-                    yield result
-            except:
-                self.HandleError('exception', token)
-                raise
-
-    def _CreateVariable(self, pos_token, name, type_name, type_modifiers,
-                        ref_pointer_name_seq, templated_types, value=None):
-        reference = '&' in ref_pointer_name_seq
-        pointer = '*' in ref_pointer_name_seq
-        array = '[' in ref_pointer_name_seq
-        var_type = Type(pos_token.start, pos_token.end, type_name,
-                        templated_types, type_modifiers,
-                        reference, pointer, array)
-        return VariableDeclaration(pos_token.start, pos_token.end,
-                                   name, var_type, value, self.namespace_stack)
-
-    def _GenerateOne(self, token):
-        if token.token_type == tokenize.NAME:
-            if (keywords.IsKeyword(token.name) and
-                not keywords.IsBuiltinType(token.name)):
-                if token.name == 'enum':
-                    # Pop the next token and only put it back if it's not
-                    # 'class'.  This allows us to support the two-token
-                    # 'enum class' keyword as if it were simply 'enum'.
-                    next = self._GetNextToken()
-                    if next.name != 'class':
-                        self._AddBackToken(next)
-
-                method = getattr(self, 'handle_' + token.name)
-                return method()
-            elif token.name == self.in_class_name_only:
-                # The token name is the same as the class, must be a ctor if
-                # there is a paren.  Otherwise, it's the return type.
-                # Peek ahead to get the next token to figure out which.
-                next = self._GetNextToken()
-                self._AddBackToken(next)
-                if next.token_type == tokenize.SYNTAX and next.name == '(':
-                    return self._GetMethod([token], FUNCTION_CTOR, None, True)
-                # Fall through--handle like any other method.
-
-            # Handle data or function declaration/definition.
-            syntax = tokenize.SYNTAX
-            temp_tokens, last_token = \
-                self._GetVarTokensUpToIgnoringTemplates(syntax,
-                                                        '(', ';', '{', '[')
-            temp_tokens.insert(0, token)
-            if last_token.name == '(':
-                # If there is an assignment before the paren,
-                # this is an expression, not a method.
-                expr = bool([e for e in temp_tokens if e.name == '='])
-                if expr:
-                    new_temp = self._GetTokensUpTo(tokenize.SYNTAX, ';')
-                    temp_tokens.append(last_token)
-                    temp_tokens.extend(new_temp)
-                    last_token = tokenize.Token(tokenize.SYNTAX, ';', 0, 0)
-
-            if last_token.name == '[':
-                # Handle array, this isn't a method, unless it's an operator.
-                # TODO(nnorwitz): keep the size somewhere.
-                # unused_size = self._GetTokensUpTo(tokenize.SYNTAX, ']')
-                temp_tokens.append(last_token)
-                if temp_tokens[-2].name == 'operator':
-                    temp_tokens.append(self._GetNextToken())
-                else:
-                    temp_tokens2, last_token = \
-                        self._GetVarTokensUpTo(tokenize.SYNTAX, ';')
-                    temp_tokens.extend(temp_tokens2)
-
-            if last_token.name == ';':
-                # Handle data, this isn't a method.
-                parts = self.converter.DeclarationToParts(temp_tokens, True)
-                (name, type_name, templated_types, modifiers, default,
-                 unused_other_tokens) = parts
-
-                t0 = temp_tokens[0]
-                names = [t.name for t in temp_tokens]
-                if templated_types:
-                    start, end = self.converter.GetTemplateIndices(names)
-                    names = names[:start] + names[end:]
-                default = ''.join([t.name for t in default])
-                return self._CreateVariable(t0, name, type_name, modifiers,
-                                            names, templated_types, default)
-            if last_token.name == '{':
-                self._AddBackTokens(temp_tokens[1:])
-                self._AddBackToken(last_token)
-                method_name = temp_tokens[0].name
-                method = getattr(self, 'handle_' + method_name, None)
-                if not method:
-                    # Must be declaring a variable.
-                    # TODO(nnorwitz): handle the declaration.
-                    return None
-                return method()
-            return self._GetMethod(temp_tokens, 0, None, False)
-        elif token.token_type == tokenize.SYNTAX:
-            if token.name == '~' and self.in_class:
-                # Must be a dtor (probably not in method body).
-                token = self._GetNextToken()
-                # self.in_class can contain A::Name, but the dtor will only
-                # be Name.  Make sure to compare against the right value.
-                if (token.token_type == tokenize.NAME and
-                        token.name == self.in_class_name_only):
-                    return self._GetMethod([token], FUNCTION_DTOR, None, True)
-            # TODO(nnorwitz): handle a lot more syntax.
-        elif token.token_type == tokenize.PREPROCESSOR:
-            # TODO(nnorwitz): handle more preprocessor directives.
-            # token starts with a #, so remove it and strip whitespace.
-            name = token.name[1:].lstrip()
-            if name.startswith('include'):
-                # Remove "include".
-                name = name[7:].strip()
-                assert name
-                # Handle #include \<newline> "header-on-second-line.h".
-                if name.startswith('\\'):
-                    name = name[1:].strip()
-                assert name[0] in '<"', token
-                assert name[-1] in '>"', token
-                system = name[0] == '<'
-                filename = name[1:-1]
-                return Include(token.start, token.end, filename, system)
-            if name.startswith('define'):
-                # Remove "define".
-                name = name[6:].strip()
-                assert name
-                value = ''
-                for i, c in enumerate(name):
-                    if c.isspace():
-                        value = name[i:].lstrip()
-                        name = name[:i]
-                        break
-                return Define(token.start, token.end, name, value)
-            if name.startswith('if') and name[2:3].isspace():
-                condition = name[3:].strip()
-                if condition.startswith('0') or condition.startswith('(0)'):
-                    self._SkipIf0Blocks()
-        return None
-
-    def _GetTokensUpTo(self, expected_token_type, expected_token):
-        return self._GetVarTokensUpTo(expected_token_type, expected_token)[0]
-
-    def _GetVarTokensUpTo(self, expected_token_type, *expected_tokens):
-        last_token = self._GetNextToken()
-        tokens = []
-        while (last_token.token_type != expected_token_type or
-               last_token.name not in expected_tokens):
-            tokens.append(last_token)
-            last_token = self._GetNextToken()
-        return tokens, last_token
-
-    # Same as _GetVarTokensUpTo, but skips over '<...>' which could contain an
-    # expected token.
-    def _GetVarTokensUpToIgnoringTemplates(self, expected_token_type,
-                                           *expected_tokens):
-        last_token = self._GetNextToken()
-        tokens = []
-        nesting = 0
-        while (nesting > 0 or
-               last_token.token_type != expected_token_type or
-               last_token.name not in expected_tokens):
-            tokens.append(last_token)
-            last_token = self._GetNextToken()
-            if last_token.name == '<':
-                nesting += 1
-            elif last_token.name == '>':
-                nesting -= 1
-        return tokens, last_token
-
-    # TODO(nnorwitz): remove _IgnoreUpTo() it shouldn't be necesary.
-    def _IgnoreUpTo(self, token_type, token):
-        unused_tokens = self._GetTokensUpTo(token_type, token)
-
-    def _SkipIf0Blocks(self):
-        count = 1
-        while 1:
-            token = self._GetNextToken()
-            if token.token_type != tokenize.PREPROCESSOR:
-                continue
-
-            name = token.name[1:].lstrip()
-            if name.startswith('endif'):
-                count -= 1
-                if count == 0:
-                    break
-            elif name.startswith('if'):
-                count += 1
-
-    def _GetMatchingChar(self, open_paren, close_paren, GetNextToken=None):
-        if GetNextToken is None:
-            GetNextToken = self._GetNextToken
-        # Assumes the current token is open_paren and we will consume
-        # and return up to the close_paren.
-        count = 1
-        token = GetNextToken()
-        while 1:
-            if token.token_type == tokenize.SYNTAX:
-                if token.name == open_paren:
-                    count += 1
-                elif token.name == close_paren:
-                    count -= 1
-                    if count == 0:
-                        break
-            yield token
-            token = GetNextToken()
-        yield token
-
-    def _GetParameters(self):
-        return self._GetMatchingChar('(', ')')
-
-    def GetScope(self):
-        return self._GetMatchingChar('{', '}')
-
-    def _GetNextToken(self):
-        if self.token_queue:
-            return self.token_queue.pop()
-        try:
-            return next(self.tokens)
-        except StopIteration:
-            return
-
-    def _AddBackToken(self, token):
-        if token.whence == tokenize.WHENCE_STREAM:
-            token.whence = tokenize.WHENCE_QUEUE
-            self.token_queue.insert(0, token)
+  def __init__(self, token_stream, filename, in_class='', visibility=None,
+               namespace_stack=[]):
+    self.tokens = token_stream
+    self.filename = filename
+    # TODO(nnorwitz): use a better data structure (deque) for the queue.
+    # Switching directions of the "queue" improved perf by about 25%.
+    # Using a deque should be even better since we access from both sides.
+    self.token_queue = []
+    self.namespace_stack = namespace_stack[:]
+    self.in_class = in_class
+    if in_class is None:
+      self.in_class_name_only = None
+    else:
+      self.in_class_name_only = in_class.split('::')[-1]
+    self.visibility = visibility
+    self.in_function = False
+    self.current_token = None
+    # Keep the state whether we are currently handling a typedef or not.
+    self._handling_typedef = False
+
+    self.converter = TypeConverter(self.namespace_stack)
+
+  def HandleError(self, msg, token):
+    printable_queue = list(reversed(self.token_queue[-20:]))
+    sys.stderr.write('Got %s in %s @ %s %s\n' %
+                     (msg, self.filename, token, printable_queue))
+
+  def Generate(self):
+    while 1:
+      token = self._GetNextToken()
+      if not token:
+        break
+
+      # Get the next token.
+      self.current_token = token
+
+      # Dispatch on the next token type.
+      if token.token_type == _INTERNAL_TOKEN:
+        if token.name == _NAMESPACE_POP:
+          self.namespace_stack.pop()
+        continue
+
+      try:
+        result = self._GenerateOne(token)
+        if result is not None:
+          yield result
+      except:
+        self.HandleError('exception', token)
+        raise
+
+  def _CreateVariable(self, pos_token, name, type_name, type_modifiers,
+                      ref_pointer_name_seq, templated_types, value=None):
+    reference = '&' in ref_pointer_name_seq
+    pointer = '*' in ref_pointer_name_seq
+    array = '[' in ref_pointer_name_seq
+    var_type = Type(pos_token.start, pos_token.end, type_name,
+                    templated_types, type_modifiers,
+                    reference, pointer, array)
+    return VariableDeclaration(pos_token.start, pos_token.end,
+                               name, var_type, value, self.namespace_stack)
+
+  def _GenerateOne(self, token):
+    if token.token_type == tokenize.NAME:
+      if (keywords.IsKeyword(token.name) and
+          not keywords.IsBuiltinType(token.name)):
+        if token.name == 'enum':
+          # Pop the next token and only put it back if it's not
+          # 'class'.  This allows us to support the two-token
+          # 'enum class' keyword as if it were simply 'enum'.
+          next = self._GetNextToken()
+          if next.name != 'class':
+            self._AddBackToken(next)
+
+        method = getattr(self, 'handle_' + token.name)
+        return method()
+      elif token.name == self.in_class_name_only:
+        # The token name is the same as the class, must be a ctor if
+        # there is a paren.  Otherwise, it's the return type.
+        # Peek ahead to get the next token to figure out which.
+        next = self._GetNextToken()
+        self._AddBackToken(next)
+        if next.token_type == tokenize.SYNTAX and next.name == '(':
+          return self._GetMethod([token], FUNCTION_CTOR, None, True)
+        # Fall through--handle like any other method.
+
+      # Handle data or function declaration/definition.
+      syntax = tokenize.SYNTAX
+      temp_tokens, last_token = \
+          self._GetVarTokensUpToIgnoringTemplates(syntax,
+                                                  '(', ';', '{', '[')
+      temp_tokens.insert(0, token)
+      if last_token.name == '(':
+        # If there is an assignment before the paren,
+        # this is an expression, not a method.
+        expr = bool([e for e in temp_tokens if e.name == '='])
+        if expr:
+          new_temp = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+          temp_tokens.append(last_token)
+          temp_tokens.extend(new_temp)
+          last_token = tokenize.Token(tokenize.SYNTAX, ';', 0, 0)
+
+      if last_token.name == '[':
+        # Handle array, this isn't a method, unless it's an operator.
+        # TODO(nnorwitz): keep the size somewhere.
+        # unused_size = self._GetTokensUpTo(tokenize.SYNTAX, ']')
+        temp_tokens.append(last_token)
+        if temp_tokens[-2].name == 'operator':
+          temp_tokens.append(self._GetNextToken())
         else:
-            assert token.whence == tokenize.WHENCE_QUEUE, token
-            self.token_queue.append(token)
-
-    def _AddBackTokens(self, tokens):
-        if tokens:
-            if tokens[-1].whence == tokenize.WHENCE_STREAM:
-                for token in tokens:
-                    token.whence = tokenize.WHENCE_QUEUE
-                self.token_queue[:0] = reversed(tokens)
-            else:
-                assert tokens[-1].whence == tokenize.WHENCE_QUEUE, tokens
-                self.token_queue.extend(reversed(tokens))
-
-    def GetName(self, seq=None):
-        """Returns ([tokens], next_token_info)."""
-        GetNextToken = self._GetNextToken
-        if seq is not None:
-            it = iter(seq)
-            GetNextToken = lambda: next(it)
-        next_token = GetNextToken()
-        tokens = []
-        last_token_was_name = False
-        while (next_token.token_type == tokenize.NAME or
-               (next_token.token_type == tokenize.SYNTAX and
-                next_token.name in ('::', '<'))):
-            # Two NAMEs in a row means the identifier should terminate.
-            # It's probably some sort of variable declaration.
-            if last_token_was_name and next_token.token_type == tokenize.NAME:
-                break
-            last_token_was_name = next_token.token_type == tokenize.NAME
-            tokens.append(next_token)
-            # Handle templated names.
-            if next_token.name == '<':
-                tokens.extend(self._GetMatchingChar('<', '>', GetNextToken))
-                last_token_was_name = True
-            next_token = GetNextToken()
-        return tokens, next_token
-
-    def GetMethod(self, modifiers, templated_types):
-        return_type_and_name = self._GetTokensUpTo(tokenize.SYNTAX, '(')
-        assert len(return_type_and_name) >= 1
-        return self._GetMethod(return_type_and_name, modifiers, templated_types,
-                               False)
-
-    def _GetMethod(self, return_type_and_name, modifiers, templated_types,
-                   get_paren):
-        template_portion = None
-        if get_paren:
-            token = self._GetNextToken()
-            assert token.token_type == tokenize.SYNTAX, token
-            if token.name == '<':
-                # Handle templatized dtors.
-                template_portion = [token]
-                template_portion.extend(self._GetMatchingChar('<', '>'))
-                token = self._GetNextToken()
-            assert token.token_type == tokenize.SYNTAX, token
-            assert token.name == '(', token
-
-        name = return_type_and_name.pop()
-        # Handle templatized ctors.
-        if name.name == '>':
-            index = 1
-            while return_type_and_name[index].name != '<':
-                index += 1
-            template_portion = return_type_and_name[index:] + [name]
-            del return_type_and_name[index:]
-            name = return_type_and_name.pop()
-        elif name.name == ']':
-            rt = return_type_and_name
-            assert rt[-1].name == '[', return_type_and_name
-            assert rt[-2].name == 'operator', return_type_and_name
-            name_seq = return_type_and_name[-2:]
-            del return_type_and_name[-2:]
-            name = tokenize.Token(tokenize.NAME, 'operator[]',
-                                  name_seq[0].start, name.end)
-            # Get the open paren so _GetParameters() below works.
-            unused_open_paren = self._GetNextToken()
-
-        # TODO(nnorwitz): store template_portion.
-        return_type = return_type_and_name
-        indices = name
-        if return_type:
-            indices = return_type[0]
-
-        # Force ctor for templatized ctors.
-        if name.name == self.in_class and not modifiers:
-            modifiers |= FUNCTION_CTOR
-        parameters = list(self._GetParameters())
-        del parameters[-1]              # Remove trailing ')'.
-
-        # Handling operator() is especially weird.
-        if name.name == 'operator' and not parameters:
-            token = self._GetNextToken()
-            assert token.name == '(', token
-            parameters = list(self._GetParameters())
-            del parameters[-1]          # Remove trailing ')'.
-
+          temp_tokens2, last_token = \
+              self._GetVarTokensUpTo(tokenize.SYNTAX, ';')
+          temp_tokens.extend(temp_tokens2)
+
+      if last_token.name == ';':
+        # Handle data, this isn't a method.
+        parts = self.converter.DeclarationToParts(temp_tokens, True)
+        (name, type_name, templated_types, modifiers, default,
+         unused_other_tokens) = parts
+
+        t0 = temp_tokens[0]
+        names = [t.name for t in temp_tokens]
+        if templated_types:
+          start, end = self.converter.GetTemplateIndices(names)
+          names = names[:start] + names[end:]
+        default = ''.join([t.name for t in default])
+        return self._CreateVariable(t0, name, type_name, modifiers,
+                                    names, templated_types, default)
+      if last_token.name == '{':
+        self._AddBackTokens(temp_tokens[1:])
+        self._AddBackToken(last_token)
+        method_name = temp_tokens[0].name
+        method = getattr(self, 'handle_' + method_name, None)
+        if not method:
+          # Must be declaring a variable.
+          # TODO(nnorwitz): handle the declaration.
+          return None
+        return method()
+      return self._GetMethod(temp_tokens, 0, None, False)
+    elif token.token_type == tokenize.SYNTAX:
+      if token.name == '~' and self.in_class:
+        # Must be a dtor (probably not in method body).
+        token = self._GetNextToken()
+        # self.in_class can contain A::Name, but the dtor will only
+        # be Name.  Make sure to compare against the right value.
+        if (token.token_type == tokenize.NAME and
+                token.name == self.in_class_name_only):
+          return self._GetMethod([token], FUNCTION_DTOR, None, True)
+      # TODO(nnorwitz): handle a lot more syntax.
+    elif token.token_type == tokenize.PREPROCESSOR:
+      # TODO(nnorwitz): handle more preprocessor directives.
+      # token starts with a #, so remove it and strip whitespace.
+      name = token.name[1:].lstrip()
+      if name.startswith('include'):
+        # Remove "include".
+        name = name[7:].strip()
+        assert name
+        # Handle #include \<newline> "header-on-second-line.h".
+        if name.startswith('\\'):
+          name = name[1:].strip()
+        assert name[0] in '<"', token
+        assert name[-1] in '>"', token
+        system = name[0] == '<'
+        filename = name[1:-1]
+        return Include(token.start, token.end, filename, system)
+      if name.startswith('define'):
+        # Remove "define".
+        name = name[6:].strip()
+        assert name
+        value = ''
+        for i, c in enumerate(name):
+          if c.isspace():
+            value = name[i:].lstrip()
+            name = name[:i]
+            break
+        return Define(token.start, token.end, name, value)
+      if name.startswith('if') and name[2:3].isspace():
+        condition = name[3:].strip()
+        if condition.startswith('0') or condition.startswith('(0)'):
+          self._SkipIf0Blocks()
+    return None
+
+  def _GetTokensUpTo(self, expected_token_type, expected_token):
+    return self._GetVarTokensUpTo(expected_token_type, expected_token)[0]
+
+  def _GetVarTokensUpTo(self, expected_token_type, *expected_tokens):
+    last_token = self._GetNextToken()
+    tokens = []
+    while (last_token.token_type != expected_token_type or
+           last_token.name not in expected_tokens):
+      tokens.append(last_token)
+      last_token = self._GetNextToken()
+    return tokens, last_token
+
+  # Same as _GetVarTokensUpTo, but skips over '<...>' which could contain an
+  # expected token.
+  def _GetVarTokensUpToIgnoringTemplates(self, expected_token_type,
+                                         *expected_tokens):
+    last_token = self._GetNextToken()
+    tokens = []
+    nesting = 0
+    while (nesting > 0 or
+           last_token.token_type != expected_token_type or
+           last_token.name not in expected_tokens):
+      tokens.append(last_token)
+      last_token = self._GetNextToken()
+      if last_token.name == '<':
+        nesting += 1
+      elif last_token.name == '>':
+        nesting -= 1
+    return tokens, last_token
+
+  # TODO(nnorwitz): remove _IgnoreUpTo() it shouldn't be necesary.
+  def _IgnoreUpTo(self, token_type, token):
+    unused_tokens = self._GetTokensUpTo(token_type, token)
+
+  def _SkipIf0Blocks(self):
+    count = 1
+    while 1:
+      token = self._GetNextToken()
+      if token.token_type != tokenize.PREPROCESSOR:
+        continue
+
+      name = token.name[1:].lstrip()
+      if name.startswith('endif'):
+        count -= 1
+        if count == 0:
+          break
+      elif name.startswith('if'):
+        count += 1
+
+  def _GetMatchingChar(self, open_paren, close_paren, GetNextToken=None):
+    if GetNextToken is None:
+      GetNextToken = self._GetNextToken
+    # Assumes the current token is open_paren and we will consume
+    # and return up to the close_paren.
+    count = 1
+    token = GetNextToken()
+    while 1:
+      if token.token_type == tokenize.SYNTAX:
+        if token.name == open_paren:
+          count += 1
+        elif token.name == close_paren:
+          count -= 1
+          if count == 0:
+            break
+      yield token
+      token = GetNextToken()
+    yield token
+
+  def _GetParameters(self):
+    return self._GetMatchingChar('(', ')')
+
+  def GetScope(self):
+    return self._GetMatchingChar('{', '}')
+
+  def _GetNextToken(self):
+    if self.token_queue:
+      return self.token_queue.pop()
+    try:
+      return next(self.tokens)
+    except StopIteration:
+      return
+
+  def _AddBackToken(self, token):
+    if token.whence == tokenize.WHENCE_STREAM:
+      token.whence = tokenize.WHENCE_QUEUE
+      self.token_queue.insert(0, token)
+    else:
+      assert token.whence == tokenize.WHENCE_QUEUE, token
+      self.token_queue.append(token)
+
+  def _AddBackTokens(self, tokens):
+    if tokens:
+      if tokens[-1].whence == tokenize.WHENCE_STREAM:
+        for token in tokens:
+          token.whence = tokenize.WHENCE_QUEUE
+        self.token_queue[:0] = reversed(tokens)
+      else:
+        assert tokens[-1].whence == tokenize.WHENCE_QUEUE, tokens
+        self.token_queue.extend(reversed(tokens))
+
+  def GetName(self, seq=None):
+    """Returns ([tokens], next_token_info)."""
+    GetNextToken = self._GetNextToken
+    if seq is not None:
+      it = iter(seq)
+      GetNextToken = lambda: next(it)
+    next_token = GetNextToken()
+    tokens = []
+    last_token_was_name = False
+    while (next_token.token_type == tokenize.NAME or
+           (next_token.token_type == tokenize.SYNTAX and
+            next_token.name in ('::', '<'))):
+      # Two NAMEs in a row means the identifier should terminate.
+      # It's probably some sort of variable declaration.
+      if last_token_was_name and next_token.token_type == tokenize.NAME:
+        break
+      last_token_was_name = next_token.token_type == tokenize.NAME
+      tokens.append(next_token)
+      # Handle templated names.
+      if next_token.name == '<':
+        tokens.extend(self._GetMatchingChar('<', '>', GetNextToken))
+        last_token_was_name = True
+      next_token = GetNextToken()
+    return tokens, next_token
+
+  def GetMethod(self, modifiers, templated_types):
+    return_type_and_name = self._GetTokensUpTo(tokenize.SYNTAX, '(')
+    assert len(return_type_and_name) >= 1
+    return self._GetMethod(return_type_and_name, modifiers, templated_types,
+                           False)
+
+  def _GetMethod(self, return_type_and_name, modifiers, templated_types,
+                 get_paren):
+    template_portion = None
+    if get_paren:
+      token = self._GetNextToken()
+      assert token.token_type == tokenize.SYNTAX, token
+      if token.name == '<':
+        # Handle templatized dtors.
+        template_portion = [token]
+        template_portion.extend(self._GetMatchingChar('<', '>'))
+        token = self._GetNextToken()
+      assert token.token_type == tokenize.SYNTAX, token
+      assert token.name == '(', token
+
+    name = return_type_and_name.pop()
+    # Handle templatized ctors.
+    if name.name == '>':
+      index = 1
+      while return_type_and_name[index].name != '<':
+        index += 1
+      template_portion = return_type_and_name[index:] + [name]
+      del return_type_and_name[index:]
+      name = return_type_and_name.pop()
+    elif name.name == ']':
+      rt = return_type_and_name
+      assert rt[-1].name == '[', return_type_and_name
+      assert rt[-2].name == 'operator', return_type_and_name
+      name_seq = return_type_and_name[-2:]
+      del return_type_and_name[-2:]
+      name = tokenize.Token(tokenize.NAME, 'operator[]',
+                            name_seq[0].start, name.end)
+      # Get the open paren so _GetParameters() below works.
+      unused_open_paren = self._GetNextToken()
+
+    # TODO(nnorwitz): store template_portion.
+    return_type = return_type_and_name
+    indices = name
+    if return_type:
+      indices = return_type[0]
+
+    # Force ctor for templatized ctors.
+    if name.name == self.in_class and not modifiers:
+      modifiers |= FUNCTION_CTOR
+    parameters = list(self._GetParameters())
+    del parameters[-1]              # Remove trailing ')'.
+
+    # Handling operator() is especially weird.
+    if name.name == 'operator' and not parameters:
+      token = self._GetNextToken()
+      assert token.name == '(', token
+      parameters = list(self._GetParameters())
+      del parameters[-1]          # Remove trailing ')'.
+
+    token = self._GetNextToken()
+    while token.token_type == tokenize.NAME:
+      modifier_token = token
+      token = self._GetNextToken()
+      if modifier_token.name == 'const':
+        modifiers |= FUNCTION_CONST
+      elif modifier_token.name == '__attribute__':
+        # TODO(nnorwitz): handle more __attribute__ details.
+        modifiers |= FUNCTION_ATTRIBUTE
+        assert token.name == '(', token
+        # Consume everything between the (parens).
+        unused_tokens = list(self._GetMatchingChar('(', ')'))
+        token = self._GetNextToken()
+      elif modifier_token.name == 'throw':
+        modifiers |= FUNCTION_THROW
+        assert token.name == '(', token
+        # Consume everything between the (parens).
+        unused_tokens = list(self._GetMatchingChar('(', ')'))
+        token = self._GetNextToken()
+      elif modifier_token.name == 'override':
+        modifiers |= FUNCTION_OVERRIDE
+      elif modifier_token.name == modifier_token.name.upper():
+        # HACK(nnorwitz):  assume that all upper-case names
+        # are some macro we aren't expanding.
+        modifiers |= FUNCTION_UNKNOWN_ANNOTATION
+      else:
+        self.HandleError('unexpected token', modifier_token)
+
+    assert token.token_type == tokenize.SYNTAX, token
+    # Handle ctor initializers.
+    if token.name == ':':
+      # TODO(nnorwitz): anything else to handle for initializer list?
+      while token.name != ';' and token.name != '{':
         token = self._GetNextToken()
-        while token.token_type == tokenize.NAME:
-            modifier_token = token
-            token = self._GetNextToken()
-            if modifier_token.name == 'const':
-                modifiers |= FUNCTION_CONST
-            elif modifier_token.name == '__attribute__':
-                # TODO(nnorwitz): handle more __attribute__ details.
-                modifiers |= FUNCTION_ATTRIBUTE
-                assert token.name == '(', token
-                # Consume everything between the (parens).
-                unused_tokens = list(self._GetMatchingChar('(', ')'))
-                token = self._GetNextToken()
-            elif modifier_token.name == 'throw':
-                modifiers |= FUNCTION_THROW
-                assert token.name == '(', token
-                # Consume everything between the (parens).
-                unused_tokens = list(self._GetMatchingChar('(', ')'))
-                token = self._GetNextToken()
-            elif modifier_token.name == 'override':
-                modifiers |= FUNCTION_OVERRIDE
-            elif modifier_token.name == modifier_token.name.upper():
-                # HACK(nnorwitz):  assume that all upper-case names
-                # are some macro we aren't expanding.
-                modifiers |= FUNCTION_UNKNOWN_ANNOTATION
-            else:
-                self.HandleError('unexpected token', modifier_token)
 
+    # Handle pointer to functions that are really data but look
+    # like method declarations.
+    if token.name == '(':
+      if parameters[0].name == '*':
+        # name contains the return type.
+        name = parameters.pop()
+        # parameters contains the name of the data.
+        modifiers = [p.name for p in parameters]
+        # Already at the ( to open the parameter list.
+        function_parameters = list(self._GetMatchingChar('(', ')'))
+        del function_parameters[-1]  # Remove trailing ')'.
+        # TODO(nnorwitz): store the function_parameters.
+        token = self._GetNextToken()
         assert token.token_type == tokenize.SYNTAX, token
-        # Handle ctor initializers.
-        if token.name == ':':
-            # TODO(nnorwitz): anything else to handle for initializer list?
-            while token.name != ';' and token.name != '{':
-                token = self._GetNextToken()
-
-        # Handle pointer to functions that are really data but look
-        # like method declarations.
-        if token.name == '(':
-            if parameters[0].name == '*':
-                # name contains the return type.
-                name = parameters.pop()
-                # parameters contains the name of the data.
-                modifiers = [p.name for p in parameters]
-                # Already at the ( to open the parameter list.
-                function_parameters = list(self._GetMatchingChar('(', ')'))
-                del function_parameters[-1]  # Remove trailing ')'.
-                # TODO(nnorwitz): store the function_parameters.
-                token = self._GetNextToken()
-                assert token.token_type == tokenize.SYNTAX, token
-                assert token.name == ';', token
-                return self._CreateVariable(indices, name.name, indices.name,
-                                            modifiers, '', None)
-            # At this point, we got something like:
-            #  return_type (type::*name_)(params);
-            # This is a data member called name_ that is a function pointer.
-            # With this code: void (sq_type::*field_)(string&);
-            # We get: name=void return_type=[] parameters=sq_type ... field_
-            # TODO(nnorwitz): is return_type always empty?
-            # TODO(nnorwitz): this isn't even close to being correct.
-            # Just put in something so we don't crash and can move on.
-            real_name = parameters[-1]
-            modifiers = [p.name for p in self._GetParameters()]
-            del modifiers[-1]           # Remove trailing ')'.
-            return self._CreateVariable(indices, real_name.name, indices.name,
-                                        modifiers, '', None)
-
-        if token.name == '{':
-            body = list(self.GetScope())
-            del body[-1]                # Remove trailing '}'.
-        else:
-            body = None
-            if token.name == '=':
-                token = self._GetNextToken()
-
-                if token.name == 'default' or token.name == 'delete':
-                    # Ignore explicitly defaulted and deleted special members
-                    # in C++11.
-                    token = self._GetNextToken()
-                else:
-                    # Handle pure-virtual declarations.
-                    assert token.token_type == tokenize.CONSTANT, token
-                    assert token.name == '0', token
-                    modifiers |= FUNCTION_PURE_VIRTUAL
-                    token = self._GetNextToken()
-
-            if token.name == '[':
-                # TODO(nnorwitz): store tokens and improve parsing.
-                # template <typename T, size_t N> char (&ASH(T (&seq)[N]))[N];
-                tokens = list(self._GetMatchingChar('[', ']'))
-                token = self._GetNextToken()
-
-            assert token.name == ';', (token, return_type_and_name, parameters)
-
-        # Looks like we got a method, not a function.
-        if len(return_type) > 2 and return_type[-1].name == '::':
-            return_type, in_class = \
-                self._GetReturnTypeAndClassName(return_type)
-            return Method(indices.start, indices.end, name.name, in_class,
-                          return_type, parameters, modifiers, templated_types,
-                          body, self.namespace_stack)
-        return Function(indices.start, indices.end, name.name, return_type,
-                        parameters, modifiers, templated_types, body,
-                        self.namespace_stack)
-
-    def _GetReturnTypeAndClassName(self, token_seq):
-        # Splitting the return type from the class name in a method
-        # can be tricky.  For example, Return::Type::Is::Hard::To::Find().
-        # Where is the return type and where is the class name?
-        # The heuristic used is to pull the last name as the class name.
-        # This includes all the templated type info.
-        # TODO(nnorwitz): if there is only One name like in the
-        # example above, punt and assume the last bit is the class name.
-
-        # Ignore a :: prefix, if exists so we can find the first real name.
-        i = 0
-        if token_seq[0].name == '::':
-            i = 1
-        # Ignore a :: suffix, if exists.
-        end = len(token_seq) - 1
-        if token_seq[end-1].name == '::':
-            end -= 1
-
-        # Make a copy of the sequence so we can append a sentinel
-        # value. This is required for GetName will has to have some
-        # terminating condition beyond the last name.
-        seq_copy = token_seq[i:end]
-        seq_copy.append(tokenize.Token(tokenize.SYNTAX, '', 0, 0))
-        names = []
-        while i < end:
-            # Iterate through the sequence parsing out each name.
-            new_name, next = self.GetName(seq_copy[i:])
-            assert new_name, 'Got empty new_name, next=%s' % next
-            # We got a pointer or ref.  Add it to the name.
-            if next and next.token_type == tokenize.SYNTAX:
-                new_name.append(next)
-            names.append(new_name)
-            i += len(new_name)
-
-        # Now that we have the names, it's time to undo what we did.
-
-        # Remove the sentinel value.
-        names[-1].pop()
-        # Flatten the token sequence for the return type.
-        return_type = [e for seq in names[:-1] for e in seq]
-        # The class name is the last name.
-        class_name = names[-1]
-        return return_type, class_name
-
-    def handle_bool(self):
-        pass
-
-    def handle_char(self):
-        pass
-
-    def handle_int(self):
-        pass
+        assert token.name == ';', token
+        return self._CreateVariable(indices, name.name, indices.name,
+                                    modifiers, '', None)
+      # At this point, we got something like:
+      #  return_type (type::*name_)(params);
+      # This is a data member called name_ that is a function pointer.
+      # With this code: void (sq_type::*field_)(string&);
+      # We get: name=void return_type=[] parameters=sq_type ... field_
+      # TODO(nnorwitz): is return_type always empty?
+      # TODO(nnorwitz): this isn't even close to being correct.
+      # Just put in something so we don't crash and can move on.
+      real_name = parameters[-1]
+      modifiers = [p.name for p in self._GetParameters()]
+      del modifiers[-1]           # Remove trailing ')'.
+      return self._CreateVariable(indices, real_name.name, indices.name,
+                                  modifiers, '', None)
+
+    if token.name == '{':
+      body = list(self.GetScope())
+      del body[-1]                # Remove trailing '}'.
+    else:
+      body = None
+      if token.name == '=':
+        token = self._GetNextToken()
 
-    def handle_long(self):
-        pass
+        if token.name == 'default' or token.name == 'delete':
+          # Ignore explicitly defaulted and deleted special members
+          # in C++11.
+          token = self._GetNextToken()
+        else:
+          # Handle pure-virtual declarations.
+          assert token.token_type == tokenize.CONSTANT, token
+          assert token.name == '0', token
+          modifiers |= FUNCTION_PURE_VIRTUAL
+          token = self._GetNextToken()
+
+      if token.name == '[':
+        # TODO(nnorwitz): store tokens and improve parsing.
+        # template <typename T, size_t N> char (&ASH(T (&seq)[N]))[N];
+        tokens = list(self._GetMatchingChar('[', ']'))
+        token = self._GetNextToken()
 
-    def handle_short(self):
-        pass
+      assert token.name == ';', (token, return_type_and_name, parameters)
+
+    # Looks like we got a method, not a function.
+    if len(return_type) > 2 and return_type[-1].name == '::':
+      return_type, in_class = \
+          self._GetReturnTypeAndClassName(return_type)
+      return Method(indices.start, indices.end, name.name, in_class,
+                    return_type, parameters, modifiers, templated_types,
+                    body, self.namespace_stack)
+    return Function(indices.start, indices.end, name.name, return_type,
+                    parameters, modifiers, templated_types, body,
+                    self.namespace_stack)
+
+  def _GetReturnTypeAndClassName(self, token_seq):
+    # Splitting the return type from the class name in a method
+    # can be tricky.  For example, Return::Type::Is::Hard::To::Find().
+    # Where is the return type and where is the class name?
+    # The heuristic used is to pull the last name as the class name.
+    # This includes all the templated type info.
+    # TODO(nnorwitz): if there is only One name like in the
+    # example above, punt and assume the last bit is the class name.
+
+    # Ignore a :: prefix, if exists so we can find the first real name.
+    i = 0
+    if token_seq[0].name == '::':
+      i = 1
+    # Ignore a :: suffix, if exists.
+    end = len(token_seq) - 1
+    if token_seq[end-1].name == '::':
+      end -= 1
+
+    # Make a copy of the sequence so we can append a sentinel
+    # value. This is required for GetName will has to have some
+    # terminating condition beyond the last name.
+    seq_copy = token_seq[i:end]
+    seq_copy.append(tokenize.Token(tokenize.SYNTAX, '', 0, 0))
+    names = []
+    while i < end:
+      # Iterate through the sequence parsing out each name.
+      new_name, next = self.GetName(seq_copy[i:])
+      assert new_name, 'Got empty new_name, next=%s' % next
+      # We got a pointer or ref.  Add it to the name.
+      if next and next.token_type == tokenize.SYNTAX:
+        new_name.append(next)
+      names.append(new_name)
+      i += len(new_name)
+
+    # Now that we have the names, it's time to undo what we did.
+
+    # Remove the sentinel value.
+    names[-1].pop()
+    # Flatten the token sequence for the return type.
+    return_type = [e for seq in names[:-1] for e in seq]
+    # The class name is the last name.
+    class_name = names[-1]
+    return return_type, class_name
+
+  def handle_bool(self):
+    pass
 
-    def handle_double(self):
-        pass
+  def handle_char(self):
+    pass
 
-    def handle_float(self):
-        pass
+  def handle_int(self):
+    pass
 
-    def handle_void(self):
-        pass
+  def handle_long(self):
+    pass
 
-    def handle_wchar_t(self):
-        pass
+  def handle_short(self):
+    pass
 
-    def handle_unsigned(self):
-        pass
+  def handle_double(self):
+    pass
 
-    def handle_signed(self):
-        pass
+  def handle_float(self):
+    pass
 
-    def _GetNestedType(self, ctor):
-        name = None
-        name_tokens, token = self.GetName()
-        if name_tokens:
-            name = ''.join([t.name for t in name_tokens])
-
-        # Handle forward declarations.
-        if token.token_type == tokenize.SYNTAX and token.name == ';':
-            return ctor(token.start, token.end, name, None,
-                        self.namespace_stack)
-
-        if token.token_type == tokenize.NAME and self._handling_typedef:
-            self._AddBackToken(token)
-            return ctor(token.start, token.end, name, None,
-                        self.namespace_stack)
-
-        # Must be the type declaration.
-        fields = list(self._GetMatchingChar('{', '}'))
-        del fields[-1]                  # Remove trailing '}'.
-        if token.token_type == tokenize.SYNTAX and token.name == '{':
-            next = self._GetNextToken()
-            new_type = ctor(token.start, token.end, name, fields,
-                            self.namespace_stack)
-            # A name means this is an anonymous type and the name
-            # is the variable declaration.
-            if next.token_type != tokenize.NAME:
-                return new_type
-            name = new_type
-            token = next
-
-        # Must be variable declaration using the type prefixed with keyword.
-        assert token.token_type == tokenize.NAME, token
-        return self._CreateVariable(token, token.name, name, [], '', None)
-
-    def handle_struct(self):
-        # Special case the handling typedef/aliasing of structs here.
-        # It would be a pain to handle in the class code.
-        name_tokens, var_token = self.GetName()
-        if name_tokens:
-            next_token = self._GetNextToken()
-            is_syntax = (var_token.token_type == tokenize.SYNTAX and
-                         var_token.name[0] in '*&')
-            is_variable = (var_token.token_type == tokenize.NAME and
-                           next_token.name == ';')
-            variable = var_token
-            if is_syntax and not is_variable:
-                variable = next_token
-                temp = self._GetNextToken()
-                if temp.token_type == tokenize.SYNTAX and temp.name == '(':
-                    # Handle methods declared to return a struct.
-                    t0 = name_tokens[0]
-                    struct = tokenize.Token(tokenize.NAME, 'struct',
-                                            t0.start-7, t0.start-2)
-                    type_and_name = [struct]
-                    type_and_name.extend(name_tokens)
-                    type_and_name.extend((var_token, next_token))
-                    return self._GetMethod(type_and_name, 0, None, False)
-                assert temp.name == ';', (temp, name_tokens, var_token)
-            if is_syntax or (is_variable and not self._handling_typedef):
-                modifiers = ['struct']
-                type_name = ''.join([t.name for t in name_tokens])
-                position = name_tokens[0]
-                return self._CreateVariable(position, variable.name, type_name,
-                                            modifiers, var_token.name, None)
-            name_tokens.extend((var_token, next_token))
-            self._AddBackTokens(name_tokens)
-        else:
-            self._AddBackToken(var_token)
-        return self._GetClass(Struct, VISIBILITY_PUBLIC, None)
+  def handle_void(self):
+    pass
 
-    def handle_union(self):
-        return self._GetNestedType(Union)
+  def handle_wchar_t(self):
+    pass
 
-    def handle_enum(self):
-        return self._GetNestedType(Enum)
+  def handle_unsigned(self):
+    pass
 
-    def handle_auto(self):
-        # TODO(nnorwitz): warn about using auto?  Probably not since it
-        # will be reclaimed and useful for C++0x.
-        pass
+  def handle_signed(self):
+    pass
 
-    def handle_register(self):
-        pass
+  def _GetNestedType(self, ctor):
+    name = None
+    name_tokens, token = self.GetName()
+    if name_tokens:
+      name = ''.join([t.name for t in name_tokens])
+
+    # Handle forward declarations.
+    if token.token_type == tokenize.SYNTAX and token.name == ';':
+      return ctor(token.start, token.end, name, None,
+                  self.namespace_stack)
+
+    if token.token_type == tokenize.NAME and self._handling_typedef:
+      self._AddBackToken(token)
+      return ctor(token.start, token.end, name, None,
+                  self.namespace_stack)
+
+    # Must be the type declaration.
+    fields = list(self._GetMatchingChar('{', '}'))
+    del fields[-1]                  # Remove trailing '}'.
+    if token.token_type == tokenize.SYNTAX and token.name == '{':
+      next = self._GetNextToken()
+      new_type = ctor(token.start, token.end, name, fields,
+                      self.namespace_stack)
+      # A name means this is an anonymous type and the name
+      # is the variable declaration.
+      if next.token_type != tokenize.NAME:
+        return new_type
+      name = new_type
+      token = next
+
+    # Must be variable declaration using the type prefixed with keyword.
+    assert token.token_type == tokenize.NAME, token
+    return self._CreateVariable(token, token.name, name, [], '', None)
+
+  def handle_struct(self):
+    # Special case the handling typedef/aliasing of structs here.
+    # It would be a pain to handle in the class code.
+    name_tokens, var_token = self.GetName()
+    if name_tokens:
+      next_token = self._GetNextToken()
+      is_syntax = (var_token.token_type == tokenize.SYNTAX and
+                   var_token.name[0] in '*&')
+      is_variable = (var_token.token_type == tokenize.NAME and
+                     next_token.name == ';')
+      variable = var_token
+      if is_syntax and not is_variable:
+        variable = next_token
+        temp = self._GetNextToken()
+        if temp.token_type == tokenize.SYNTAX and temp.name == '(':
+          # Handle methods declared to return a struct.
+          t0 = name_tokens[0]
+          struct = tokenize.Token(tokenize.NAME, 'struct',
+                                  t0.start-7, t0.start-2)
+          type_and_name = [struct]
+          type_and_name.extend(name_tokens)
+          type_and_name.extend((var_token, next_token))
+          return self._GetMethod(type_and_name, 0, None, False)
+        assert temp.name == ';', (temp, name_tokens, var_token)
+      if is_syntax or (is_variable and not self._handling_typedef):
+        modifiers = ['struct']
+        type_name = ''.join([t.name for t in name_tokens])
+        position = name_tokens[0]
+        return self._CreateVariable(position, variable.name, type_name,
+                                    modifiers, var_token.name, None)
+      name_tokens.extend((var_token, next_token))
+      self._AddBackTokens(name_tokens)
+    else:
+      self._AddBackToken(var_token)
+    return self._GetClass(Struct, VISIBILITY_PUBLIC, None)
+
+  def handle_union(self):
+    return self._GetNestedType(Union)
+
+  def handle_enum(self):
+    return self._GetNestedType(Enum)
+
+  def handle_auto(self):
+    # TODO(nnorwitz): warn about using auto?  Probably not since it
+    # will be reclaimed and useful for C++0x.
+    pass
 
-    def handle_const(self):
-        pass
+  def handle_register(self):
+    pass
 
-    def handle_inline(self):
-        pass
+  def handle_const(self):
+    pass
 
-    def handle_extern(self):
-        pass
+  def handle_inline(self):
+    pass
 
-    def handle_static(self):
-        pass
+  def handle_extern(self):
+    pass
 
-    def handle_virtual(self):
-        # What follows must be a method.
-        token = token2 = self._GetNextToken()
-        if token.name == 'inline':
-            # HACK(nnorwitz): handle inline dtors by ignoring 'inline'.
-            token2 = self._GetNextToken()
-        if token2.token_type == tokenize.SYNTAX and token2.name == '~':
-            return self.GetMethod(FUNCTION_VIRTUAL + FUNCTION_DTOR, None)
-        assert token.token_type == tokenize.NAME or token.name == '::', token
-        return_type_and_name, _ = self._GetVarTokensUpToIgnoringTemplates(
-            tokenize.SYNTAX, '(')  # )
-        return_type_and_name.insert(0, token)
-        if token2 is not token:
-            return_type_and_name.insert(1, token2)
-        return self._GetMethod(return_type_and_name, FUNCTION_VIRTUAL,
-                               None, False)
-
-    def handle_volatile(self):
-        pass
+  def handle_static(self):
+    pass
 
-    def handle_mutable(self):
-        pass
+  def handle_virtual(self):
+    # What follows must be a method.
+    token = token2 = self._GetNextToken()
+    if token.name == 'inline':
+      # HACK(nnorwitz): handle inline dtors by ignoring 'inline'.
+      token2 = self._GetNextToken()
+    if token2.token_type == tokenize.SYNTAX and token2.name == '~':
+      return self.GetMethod(FUNCTION_VIRTUAL + FUNCTION_DTOR, None)
+    assert token.token_type == tokenize.NAME or token.name == '::', token
+    return_type_and_name, _ = self._GetVarTokensUpToIgnoringTemplates(
+        tokenize.SYNTAX, '(')  # )
+    return_type_and_name.insert(0, token)
+    if token2 is not token:
+      return_type_and_name.insert(1, token2)
+    return self._GetMethod(return_type_and_name, FUNCTION_VIRTUAL,
+                           None, False)
+
+  def handle_volatile(self):
+    pass
 
-    def handle_public(self):
-        assert self.in_class
-        self.visibility = VISIBILITY_PUBLIC
+  def handle_mutable(self):
+    pass
 
-    def handle_protected(self):
-        assert self.in_class
-        self.visibility = VISIBILITY_PROTECTED
+  def handle_public(self):
+    assert self.in_class
+    self.visibility = VISIBILITY_PUBLIC
 
-    def handle_private(self):
-        assert self.in_class
-        self.visibility = VISIBILITY_PRIVATE
+  def handle_protected(self):
+    assert self.in_class
+    self.visibility = VISIBILITY_PROTECTED
 
-    def handle_friend(self):
-        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
-        assert tokens
-        t0 = tokens[0]
-        return Friend(t0.start, t0.end, tokens, self.namespace_stack)
+  def handle_private(self):
+    assert self.in_class
+    self.visibility = VISIBILITY_PRIVATE
 
-    def handle_static_cast(self):
-        pass
+  def handle_friend(self):
+    tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+    assert tokens
+    t0 = tokens[0]
+    return Friend(t0.start, t0.end, tokens, self.namespace_stack)
 
-    def handle_const_cast(self):
-        pass
+  def handle_static_cast(self):
+    pass
 
-    def handle_dynamic_cast(self):
-        pass
+  def handle_const_cast(self):
+    pass
 
-    def handle_reinterpret_cast(self):
-        pass
+  def handle_dynamic_cast(self):
+    pass
 
-    def handle_new(self):
-        pass
+  def handle_reinterpret_cast(self):
+    pass
 
-    def handle_delete(self):
-        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
-        assert tokens
-        return Delete(tokens[0].start, tokens[0].end, tokens)
+  def handle_new(self):
+    pass
 
-    def handle_typedef(self):
-        token = self._GetNextToken()
-        if (token.token_type == tokenize.NAME and
-                keywords.IsKeyword(token.name)):
-            # Token must be struct/enum/union/class.
-            method = getattr(self, 'handle_' + token.name)
-            self._handling_typedef = True
-            tokens = [method()]
-            self._handling_typedef = False
+  def handle_delete(self):
+    tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+    assert tokens
+    return Delete(tokens[0].start, tokens[0].end, tokens)
+
+  def handle_typedef(self):
+    token = self._GetNextToken()
+    if (token.token_type == tokenize.NAME and
+            keywords.IsKeyword(token.name)):
+      # Token must be struct/enum/union/class.
+      method = getattr(self, 'handle_' + token.name)
+      self._handling_typedef = True
+      tokens = [method()]
+      self._handling_typedef = False
+    else:
+      tokens = [token]
+
+    # Get the remainder of the typedef up to the semi-colon.
+    tokens.extend(self._GetTokensUpTo(tokenize.SYNTAX, ';'))
+
+    # TODO(nnorwitz): clean all this up.
+    assert tokens
+    name = tokens.pop()
+    indices = name
+    if tokens:
+      indices = tokens[0]
+    if not indices:
+      indices = token
+    if name.name == ')':
+      # HACK(nnorwitz): Handle pointers to functions "properly".
+      if (len(tokens) >= 4 and
+              tokens[1].name == '(' and tokens[2].name == '*'):
+        tokens.append(name)
+        name = tokens[3]
+    elif name.name == ']':
+      # HACK(nnorwitz): Handle arrays properly.
+      if len(tokens) >= 2:
+        tokens.append(name)
+        name = tokens[1]
+    new_type = tokens
+    if tokens and isinstance(tokens[0], tokenize.Token):
+      new_type = self.converter.ToType(tokens)[0]
+    return Typedef(indices.start, indices.end, name.name,
+                   new_type, self.namespace_stack)
+
+  def handle_typeid(self):
+    pass  # Not needed yet.
+
+  def handle_typename(self):
+    pass  # Not needed yet.
+
+  def _GetTemplatedTypes(self):
+    result = {}
+    tokens = list(self._GetMatchingChar('<', '>'))
+    len_tokens = len(tokens) - 1    # Ignore trailing '>'.
+    i = 0
+    while i < len_tokens:
+      key = tokens[i].name
+      i += 1
+      if keywords.IsKeyword(key) or key == ',':
+        continue
+      type_name = default = None
+      if i < len_tokens:
+        i += 1
+        if tokens[i-1].name == '=':
+          assert i < len_tokens, '%s %s' % (i, tokens)
+          default, unused_next_token = self.GetName(tokens[i:])
+          i += len(default)
         else:
-            tokens = [token]
-
-        # Get the remainder of the typedef up to the semi-colon.
-        tokens.extend(self._GetTokensUpTo(tokenize.SYNTAX, ';'))
-
-        # TODO(nnorwitz): clean all this up.
-        assert tokens
-        name = tokens.pop()
-        indices = name
-        if tokens:
-            indices = tokens[0]
-        if not indices:
-            indices = token
-        if name.name == ')':
-            # HACK(nnorwitz): Handle pointers to functions "properly".
-            if (len(tokens) >= 4 and
-                    tokens[1].name == '(' and tokens[2].name == '*'):
-                tokens.append(name)
-                name = tokens[3]
-        elif name.name == ']':
-            # HACK(nnorwitz): Handle arrays properly.
-            if len(tokens) >= 2:
-                tokens.append(name)
-                name = tokens[1]
-        new_type = tokens
-        if tokens and isinstance(tokens[0], tokenize.Token):
-            new_type = self.converter.ToType(tokens)[0]
-        return Typedef(indices.start, indices.end, name.name,
-                       new_type, self.namespace_stack)
-
-    def handle_typeid(self):
-        pass  # Not needed yet.
-
-    def handle_typename(self):
-        pass  # Not needed yet.
-
-    def _GetTemplatedTypes(self):
-        result = {}
-        tokens = list(self._GetMatchingChar('<', '>'))
-        len_tokens = len(tokens) - 1    # Ignore trailing '>'.
-        i = 0
-        while i < len_tokens:
-            key = tokens[i].name
-            i += 1
-            if keywords.IsKeyword(key) or key == ',':
-                continue
-            type_name = default = None
-            if i < len_tokens:
-                i += 1
-                if tokens[i-1].name == '=':
-                    assert i < len_tokens, '%s %s' % (i, tokens)
-                    default, unused_next_token = self.GetName(tokens[i:])
-                    i += len(default)
-                else:
-                    if tokens[i-1].name != ',':
-                        # We got something like: Type variable.
-                        # Re-adjust the key (variable) and type_name (Type).
-                        key = tokens[i-1].name
-                        type_name = tokens[i-2]
-
-            result[key] = (type_name, default)
-        return result
-
-    def handle_template(self):
-        token = self._GetNextToken()
-        assert token.token_type == tokenize.SYNTAX, token
-        assert token.name == '<', token
-        templated_types = self._GetTemplatedTypes()
-        # TODO(nnorwitz): for now, just ignore the template params.
-        token = self._GetNextToken()
-        if token.token_type == tokenize.NAME:
-            if token.name == 'class':
-                return self._GetClass(Class, VISIBILITY_PRIVATE, templated_types)
-            elif token.name == 'struct':
-                return self._GetClass(Struct, VISIBILITY_PUBLIC, templated_types)
-            elif token.name == 'friend':
-                return self.handle_friend()
+          if tokens[i-1].name != ',':
+            # We got something like: Type variable.
+            # Re-adjust the key (variable) and type_name (Type).
+            key = tokens[i-1].name
+            type_name = tokens[i-2]
+
+      result[key] = (type_name, default)
+    return result
+
+  def handle_template(self):
+    token = self._GetNextToken()
+    assert token.token_type == tokenize.SYNTAX, token
+    assert token.name == '<', token
+    templated_types = self._GetTemplatedTypes()
+    # TODO(nnorwitz): for now, just ignore the template params.
+    token = self._GetNextToken()
+    if token.token_type == tokenize.NAME:
+      if token.name == 'class':
+        return self._GetClass(Class, VISIBILITY_PRIVATE, templated_types)
+      elif token.name == 'struct':
+        return self._GetClass(Struct, VISIBILITY_PUBLIC, templated_types)
+      elif token.name == 'friend':
+        return self.handle_friend()
+    self._AddBackToken(token)
+    tokens, last = self._GetVarTokensUpTo(tokenize.SYNTAX, '(', ';')
+    tokens.append(last)
+    self._AddBackTokens(tokens)
+    if last.name == '(':
+      return self.GetMethod(FUNCTION_NONE, templated_types)
+    # Must be a variable definition.
+    return None
+
+  def handle_true(self):
+    pass  # Nothing to do.
+
+  def handle_false(self):
+    pass  # Nothing to do.
+
+  def handle_asm(self):
+    pass  # Not needed yet.
+
+  def handle_class(self):
+    return self._GetClass(Class, VISIBILITY_PRIVATE, None)
+
+  def _GetBases(self):
+    # Get base classes.
+    bases = []
+    while 1:
+      token = self._GetNextToken()
+      assert token.token_type == tokenize.NAME, token
+      # TODO(nnorwitz): store kind of inheritance...maybe.
+      if token.name not in ('public', 'protected', 'private'):
+        # If inheritance type is not specified, it is private.
+        # Just put the token back so we can form a name.
+        # TODO(nnorwitz): it would be good to warn about this.
         self._AddBackToken(token)
-        tokens, last = self._GetVarTokensUpTo(tokenize.SYNTAX, '(', ';')
-        tokens.append(last)
-        self._AddBackTokens(tokens)
-        if last.name == '(':
-            return self.GetMethod(FUNCTION_NONE, templated_types)
-        # Must be a variable definition.
-        return None
-
-    def handle_true(self):
-        pass  # Nothing to do.
-
-    def handle_false(self):
-        pass  # Nothing to do.
-
-    def handle_asm(self):
-        pass  # Not needed yet.
-
-    def handle_class(self):
-        return self._GetClass(Class, VISIBILITY_PRIVATE, None)
-
-    def _GetBases(self):
-        # Get base classes.
-        bases = []
-        while 1:
-            token = self._GetNextToken()
-            assert token.token_type == tokenize.NAME, token
-            # TODO(nnorwitz): store kind of inheritance...maybe.
-            if token.name not in ('public', 'protected', 'private'):
-                # If inheritance type is not specified, it is private.
-                # Just put the token back so we can form a name.
-                # TODO(nnorwitz): it would be good to warn about this.
-                self._AddBackToken(token)
-            else:
-                # Check for virtual inheritance.
-                token = self._GetNextToken()
-                if token.name != 'virtual':
-                    self._AddBackToken(token)
-                else:
-                    # TODO(nnorwitz): store that we got virtual for this base.
-                    pass
-            base, next_token = self.GetName()
-            bases_ast = self.converter.ToType(base)
-            assert len(bases_ast) == 1, bases_ast
-            bases.append(bases_ast[0])
-            assert next_token.token_type == tokenize.SYNTAX, next_token
-            if next_token.name == '{':
-                token = next_token
-                break
-            # Support multiple inheritance.
-            assert next_token.name == ',', next_token
-        return bases, token
-
-    def _GetClass(self, class_type, visibility, templated_types):
-        class_name = None
-        class_token = self._GetNextToken()
-        if class_token.token_type != tokenize.NAME:
-            assert class_token.token_type == tokenize.SYNTAX, class_token
-            token = class_token
+      else:
+        # Check for virtual inheritance.
+        token = self._GetNextToken()
+        if token.name != 'virtual':
+          self._AddBackToken(token)
         else:
-            # Skip any macro (e.g. storage class specifiers) after the
-            # 'class' keyword.
-            next_token = self._GetNextToken()
-            if next_token.token_type == tokenize.NAME:
-                self._AddBackToken(next_token)
-            else:
-                self._AddBackTokens([class_token, next_token])
-            name_tokens, token = self.GetName()
-            class_name = ''.join([t.name for t in name_tokens])
-        bases = None
-        if token.token_type == tokenize.SYNTAX:
-            if token.name == ';':
-                # Forward declaration.
-                return class_type(class_token.start, class_token.end,
-                                  class_name, None, templated_types, None,
-                                  self.namespace_stack)
-            if token.name in '*&':
-                # Inline forward declaration.  Could be method or data.
-                name_token = self._GetNextToken()
-                next_token = self._GetNextToken()
-                if next_token.name == ';':
-                    # Handle data
-                    modifiers = ['class']
-                    return self._CreateVariable(class_token, name_token.name,
-                                                class_name,
-                                                modifiers, token.name, None)
-                else:
-                    # Assume this is a method.
-                    tokens = (class_token, token, name_token, next_token)
-                    self._AddBackTokens(tokens)
-                    return self.GetMethod(FUNCTION_NONE, None)
-            if token.name == ':':
-                bases, token = self._GetBases()
-
-        body = None
-        if token.token_type == tokenize.SYNTAX and token.name == '{':
-            assert token.token_type == tokenize.SYNTAX, token
-            assert token.name == '{', token
-
-            ast = AstBuilder(self.GetScope(), self.filename, class_name,
-                             visibility, self.namespace_stack)
-            body = list(ast.Generate())
-
-            if not self._handling_typedef:
-                token = self._GetNextToken()
-                if token.token_type != tokenize.NAME:
-                    assert token.token_type == tokenize.SYNTAX, token
-                    assert token.name == ';', token
-                else:
-                    new_class = class_type(class_token.start, class_token.end,
-                                           class_name, bases, None,
-                                           body, self.namespace_stack)
-
-                    modifiers = []
-                    return self._CreateVariable(class_token,
-                                                token.name, new_class,
-                                                modifiers, token.name, None)
+          # TODO(nnorwitz): store that we got virtual for this base.
+          pass
+      base, next_token = self.GetName()
+      bases_ast = self.converter.ToType(base)
+      assert len(bases_ast) == 1, bases_ast
+      bases.append(bases_ast[0])
+      assert next_token.token_type == tokenize.SYNTAX, next_token
+      if next_token.name == '{':
+        token = next_token
+        break
+      # Support multiple inheritance.
+      assert next_token.name == ',', next_token
+    return bases, token
+
+  def _GetClass(self, class_type, visibility, templated_types):
+    class_name = None
+    class_token = self._GetNextToken()
+    if class_token.token_type != tokenize.NAME:
+      assert class_token.token_type == tokenize.SYNTAX, class_token
+      token = class_token
+    else:
+      # Skip any macro (e.g. storage class specifiers) after the
+      # 'class' keyword.
+      next_token = self._GetNextToken()
+      if next_token.token_type == tokenize.NAME:
+        self._AddBackToken(next_token)
+      else:
+        self._AddBackTokens([class_token, next_token])
+      name_tokens, token = self.GetName()
+      class_name = ''.join([t.name for t in name_tokens])
+    bases = None
+    if token.token_type == tokenize.SYNTAX:
+      if token.name == ';':
+        # Forward declaration.
+        return class_type(class_token.start, class_token.end,
+                          class_name, None, templated_types, None,
+                          self.namespace_stack)
+      if token.name in '*&':
+        # Inline forward declaration.  Could be method or data.
+        name_token = self._GetNextToken()
+        next_token = self._GetNextToken()
+        if next_token.name == ';':
+          # Handle data
+          modifiers = ['class']
+          return self._CreateVariable(class_token, name_token.name,
+                                      class_name,
+                                      modifiers, token.name, None)
         else:
-            if not self._handling_typedef:
-                self.HandleError('non-typedef token', token)
-            self._AddBackToken(token)
-
-        return class_type(class_token.start, class_token.end, class_name,
-                          bases, templated_types, body, self.namespace_stack)
-
-    def handle_namespace(self):
+          # Assume this is a method.
+          tokens = (class_token, token, name_token, next_token)
+          self._AddBackTokens(tokens)
+          return self.GetMethod(FUNCTION_NONE, None)
+      if token.name == ':':
+        bases, token = self._GetBases()
+
+    body = None
+    if token.token_type == tokenize.SYNTAX and token.name == '{':
+      assert token.token_type == tokenize.SYNTAX, token
+      assert token.name == '{', token
+
+      ast = AstBuilder(self.GetScope(), self.filename, class_name,
+                       visibility, self.namespace_stack)
+      body = list(ast.Generate())
+
+      if not self._handling_typedef:
         token = self._GetNextToken()
-        # Support anonymous namespaces.
-        name = None
-        if token.token_type == tokenize.NAME:
-            name = token.name
-            token = self._GetNextToken()
-        self.namespace_stack.append(name)
-        assert token.token_type == tokenize.SYNTAX, token
-        # Create an internal token that denotes when the namespace is complete.
-        internal_token = tokenize.Token(_INTERNAL_TOKEN, _NAMESPACE_POP,
-                                        None, None)
-        internal_token.whence = token.whence
-        if token.name == '=':
-            # TODO(nnorwitz): handle aliasing namespaces.
-            name, next_token = self.GetName()
-            assert next_token.name == ';', next_token
-            self._AddBackToken(internal_token)
+        if token.token_type != tokenize.NAME:
+          assert token.token_type == tokenize.SYNTAX, token
+          assert token.name == ';', token
         else:
-            assert token.name == '{', token
-            tokens = list(self.GetScope())
-            # Replace the trailing } with the internal namespace pop token.
-            tokens[-1] = internal_token
-            # Handle namespace with nothing in it.
-            self._AddBackTokens(tokens)
-        return None
-
-    def handle_using(self):
-        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
-        assert tokens
-        return Using(tokens[0].start, tokens[0].end, tokens)
-
-    def handle_explicit(self):
-        assert self.in_class
-        # Nothing much to do.
-        # TODO(nnorwitz): maybe verify the method name == class name.
-        # This must be a ctor.
-        return self.GetMethod(FUNCTION_CTOR, None)
-
-    def handle_this(self):
-        pass  # Nothing to do.
-
-    def handle_operator(self):
-        # Pull off the next token(s?) and make that part of the method name.
-        pass
+          new_class = class_type(class_token.start, class_token.end,
+                                 class_name, bases, None,
+                                 body, self.namespace_stack)
+
+          modifiers = []
+          return self._CreateVariable(class_token,
+                                      token.name, new_class,
+                                      modifiers, token.name, None)
+    else:
+      if not self._handling_typedef:
+        self.HandleError('non-typedef token', token)
+      self._AddBackToken(token)
+
+    return class_type(class_token.start, class_token.end, class_name,
+                      bases, templated_types, body, self.namespace_stack)
+
+  def handle_namespace(self):
+    # Support anonymous namespaces.
+    name = None
+    name_tokens, token = self.GetName()
+    if name_tokens:
+      name = ''.join([t.name for t in name_tokens])
+    self.namespace_stack.append(name)
+    assert token.token_type == tokenize.SYNTAX, token
+    # Create an internal token that denotes when the namespace is complete.
+    internal_token = tokenize.Token(_INTERNAL_TOKEN, _NAMESPACE_POP,
+                                    None, None)
+    internal_token.whence = token.whence
+    if token.name == '=':
+      # TODO(nnorwitz): handle aliasing namespaces.
+      name, next_token = self.GetName()
+      assert next_token.name == ';', next_token
+      self._AddBackToken(internal_token)
+    else:
+      assert token.name == '{', token
+      tokens = list(self.GetScope())
+      # Replace the trailing } with the internal namespace pop token.
+      tokens[-1] = internal_token
+      # Handle namespace with nothing in it.
+      self._AddBackTokens(tokens)
+    return None
+
+  def handle_using(self):
+    tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+    assert tokens
+    return Using(tokens[0].start, tokens[0].end, tokens)
+
+  def handle_explicit(self):
+    assert self.in_class
+    # Nothing much to do.
+    # TODO(nnorwitz): maybe verify the method name == class name.
+    # This must be a ctor.
+    return self.GetMethod(FUNCTION_CTOR, None)
+
+  def handle_this(self):
+    pass  # Nothing to do.
+
+  def handle_operator(self):
+    # Pull off the next token(s?) and make that part of the method name.
+    pass
 
-    def handle_sizeof(self):
-        pass
+  def handle_sizeof(self):
+    pass
 
-    def handle_case(self):
-        pass
+  def handle_case(self):
+    pass
 
-    def handle_switch(self):
-        pass
+  def handle_switch(self):
+    pass
 
-    def handle_default(self):
-        token = self._GetNextToken()
-        assert token.token_type == tokenize.SYNTAX
-        assert token.name == ':'
+  def handle_default(self):
+    token = self._GetNextToken()
+    assert token.token_type == tokenize.SYNTAX
+    assert token.name == ':'
 
-    def handle_if(self):
-        pass
+  def handle_if(self):
+    pass
 
-    def handle_else(self):
-        pass
+  def handle_else(self):
+    pass
 
-    def handle_return(self):
-        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
-        if not tokens:
-            return Return(self.current_token.start, self.current_token.end, None)
-        return Return(tokens[0].start, tokens[0].end, tokens)
+  def handle_return(self):
+    tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+    if not tokens:
+      return Return(self.current_token.start, self.current_token.end, None)
+    return Return(tokens[0].start, tokens[0].end, tokens)
 
-    def handle_goto(self):
-        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
-        assert len(tokens) == 1, str(tokens)
-        return Goto(tokens[0].start, tokens[0].end, tokens[0].name)
+  def handle_goto(self):
+    tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+    assert len(tokens) == 1, str(tokens)
+    return Goto(tokens[0].start, tokens[0].end, tokens[0].name)
 
-    def handle_try(self):
-        pass  # Not needed yet.
+  def handle_try(self):
+    pass  # Not needed yet.
 
-    def handle_catch(self):
-        pass  # Not needed yet.
+  def handle_catch(self):
+    pass  # Not needed yet.
 
-    def handle_throw(self):
-        pass  # Not needed yet.
+  def handle_throw(self):
+    pass  # Not needed yet.
 
-    def handle_while(self):
-        pass
+  def handle_while(self):
+    pass
 
-    def handle_do(self):
-        pass
+  def handle_do(self):
+    pass
 
-    def handle_for(self):
-        pass
+  def handle_for(self):
+    pass
 
-    def handle_break(self):
-        self._IgnoreUpTo(tokenize.SYNTAX, ';')
+  def handle_break(self):
+    self._IgnoreUpTo(tokenize.SYNTAX, ';')
 
-    def handle_continue(self):
-        self._IgnoreUpTo(tokenize.SYNTAX, ';')
+  def handle_continue(self):
+    self._IgnoreUpTo(tokenize.SYNTAX, ';')
 
 
 def BuilderFromSource(source, filename):
-    """Utility method that returns an AstBuilder from source code.
+  """Utility method that returns an AstBuilder from source code.
 
     Args:
       source: 'C++ source code'
@@ -1698,64 +1709,64 @@ def BuilderFromSource(source, filename):
     Returns:
       AstBuilder
     """
-    return AstBuilder(tokenize.GetTokens(source), filename)
+  return AstBuilder(tokenize.GetTokens(source), filename)
 
 
 def PrintIndentifiers(filename, should_print):
-    """Prints all identifiers for a C++ source file.
+  """Prints all identifiers for a C++ source file.
 
     Args:
       filename: 'file1'
       should_print: predicate with signature: bool Function(token)
     """
-    source = utils.ReadFile(filename, False)
-    if source is None:
-        sys.stderr.write('Unable to find: %s\n' % filename)
-        return
-
-    #print('Processing %s' % actual_filename)
-    builder = BuilderFromSource(source, filename)
-    try:
-        for node in builder.Generate():
-            if should_print(node):
-                print(node.name)
-    except KeyboardInterrupt:
-        return
-    except:
-        pass
+  source = utils.ReadFile(filename, False)
+  if source is None:
+    sys.stderr.write('Unable to find: %s\n' % filename)
+    return
+
+  #print('Processing %s' % actual_filename)
+  builder = BuilderFromSource(source, filename)
+  try:
+    for node in builder.Generate():
+      if should_print(node):
+        print(node.name)
+  except KeyboardInterrupt:
+    return
+  except:
+    pass
 
 
 def PrintAllIndentifiers(filenames, should_print):
-    """Prints all identifiers for each C++ source file in filenames.
+  """Prints all identifiers for each C++ source file in filenames.
 
     Args:
       filenames: ['file1', 'file2', ...]
       should_print: predicate with signature: bool Function(token)
     """
-    for path in filenames:
-        PrintIndentifiers(path, should_print)
+  for path in filenames:
+    PrintIndentifiers(path, should_print)
 
 
 def main(argv):
-    for filename in argv[1:]:
-        source = utils.ReadFile(filename)
-        if source is None:
-            continue
-
-        print('Processing %s' % filename)
-        builder = BuilderFromSource(source, filename)
-        try:
-            entire_ast = filter(None, builder.Generate())
-        except KeyboardInterrupt:
-            return
-        except:
-            # Already printed a warning, print the traceback and continue.
-            traceback.print_exc()
-        else:
-            if utils.DEBUG:
-                for ast in entire_ast:
-                    print(ast)
+  for filename in argv[1:]:
+    source = utils.ReadFile(filename)
+    if source is None:
+      continue
+
+    print('Processing %s' % filename)
+    builder = BuilderFromSource(source, filename)
+    try:
+      entire_ast = filter(None, builder.Generate())
+    except KeyboardInterrupt:
+      return
+    except:
+      # Already printed a warning, print the traceback and continue.
+      traceback.print_exc()
+    else:
+      if utils.DEBUG:
+        for ast in entire_ast:
+          print(ast)
 
 
 if __name__ == '__main__':
-    main(sys.argv)
+  main(sys.argv)
index 89862ae1e1868d19730675fd15930cf231ca729b..488cc15376ef8356add910af5f73a8a15f7231a8 100755 (executable)
@@ -35,11 +35,11 @@ from cpp import utils
 
 # Preserve compatibility with Python 2.3.
 try:
-    _dummy = set
+  _dummy = set
 except NameError:
-    import sets
+  import sets
 
-    set = sets.Set
+  set = sets.Set
 
 _VERSION = (1, 0, 1)  # The version of this script.
 # How many spaces to indent.  Can set me with the INDENT environment variable.
@@ -47,202 +47,199 @@ _INDENT = 2
 
 
 def _RenderType(ast_type):
-    """Renders the potentially recursively templated type into a string.
+  """Renders the potentially recursively templated type into a string.
 
   Args:
     ast_type: The AST of the type.
 
   Returns:
-    Rendered string and a boolean to indicate whether we have multiple args
-    (which is not handled correctly).
+    Rendered string of the type.
   """
-    has_multiarg_error = False
-    # Add modifiers like 'const'.
-    modifiers = ''
-    if ast_type.modifiers:
-        modifiers = ' '.join(ast_type.modifiers) + ' '
-    return_type = modifiers + ast_type.name
-    if ast_type.templated_types:
-        # Collect template args.
-        template_args = []
-        for arg in ast_type.templated_types:
-            rendered_arg, e = _RenderType(arg)
-            if e: has_multiarg_error = True
-            template_args.append(rendered_arg)
-        return_type += '<' + ', '.join(template_args) + '>'
-        # We are actually not handling multi-template-args correctly. So mark it.
-        if len(template_args) > 1:
-            has_multiarg_error = True
-    if ast_type.pointer:
-        return_type += '*'
-    if ast_type.reference:
-        return_type += '&'
-    return return_type, has_multiarg_error
-
-
-def _GetNumParameters(parameters, source):
-    num_parameters = len(parameters)
-    if num_parameters == 1:
-        first_param = parameters[0]
-        if source[first_param.start:first_param.end].strip() == 'void':
-            # We must treat T(void) as a function with no parameters.
-            return 0
-    return num_parameters
+  # Add modifiers like 'const'.
+  modifiers = ''
+  if ast_type.modifiers:
+    modifiers = ' '.join(ast_type.modifiers) + ' '
+  return_type = modifiers + ast_type.name
+  if ast_type.templated_types:
+    # Collect template args.
+    template_args = []
+    for arg in ast_type.templated_types:
+      rendered_arg = _RenderType(arg)
+      template_args.append(rendered_arg)
+    return_type += '<' + ', '.join(template_args) + '>'
+  if ast_type.pointer:
+    return_type += '*'
+  if ast_type.reference:
+    return_type += '&'
+  return return_type
+
+
+def _GenerateArg(source):
+  """Strips out comments, default arguments, and redundant spaces from a single argument.
+
+  Args:
+    source: A string for a single argument.
+
+  Returns:
+    Rendered string of the argument.
+  """
+  # Remove end of line comments before eliminating newlines.
+  arg = re.sub(r'//.*', '', source)
+
+  # Remove c-style comments.
+  arg = re.sub(r'/\*.*\*/', '', arg)
+
+  # Remove default arguments.
+  arg = re.sub(r'=.*', '', arg)
+
+  # Collapse spaces and newlines into a single space.
+  arg = re.sub(r'\s+', ' ', arg)
+  return arg.strip()
+
+
+def _EscapeForMacro(s):
+  """Escapes a string for use as an argument to a C++ macro."""
+  paren_count = 0
+  for c in s:
+    if c == '(':
+      paren_count += 1
+    elif c == ')':
+      paren_count -= 1
+    elif c == ',' and paren_count == 0:
+      return '(' + s + ')'
+  return s
 
 
 def _GenerateMethods(output_lines, source, class_node):
-    function_type = (ast.FUNCTION_VIRTUAL | ast.FUNCTION_PURE_VIRTUAL |
-                     ast.FUNCTION_OVERRIDE)
-    ctor_or_dtor = ast.FUNCTION_CTOR | ast.FUNCTION_DTOR
-    indent = ' ' * _INDENT
-
-    for node in class_node.body:
-        # We only care about virtual functions.
-        if (isinstance(node, ast.Function) and
-                node.modifiers & function_type and
-                not node.modifiers & ctor_or_dtor):
-            # Pick out all the elements we need from the original function.
-            const = ''
-            if node.modifiers & ast.FUNCTION_CONST:
-                const = 'CONST_'
-            num_parameters = _GetNumParameters(node.parameters, source)
-            return_type = 'void'
-            if node.return_type:
-                return_type, has_multiarg_error = _RenderType(node.return_type)
-                if has_multiarg_error:
-                    for line in [
-                        '// The following line won\'t really compile, as the return',
-                        '// type has multiple template arguments.  To fix it, use a',
-                        '// typedef for the return type.']:
-                        output_lines.append(indent + line)
-            tmpl = ''
-            if class_node.templated_types:
-                tmpl = '_T'
-            mock_method_macro = 'MOCK_%sMETHOD%d%s' % (const, num_parameters, tmpl)
-
-            args = ''
-            if node.parameters:
-                # Get the full text of the parameters from the start
-                # of the first parameter to the end of the last parameter.
-                start = node.parameters[0].start
-                end = node.parameters[-1].end
-                # Remove // comments.
-                args_strings = re.sub(r'//.*', '', source[start:end])
-                # Remove /* comments */.
-                args_strings = re.sub(r'/\*.*\*/', '', args_strings)
-                # Remove default arguments.
-                args_strings = re.sub(r'=.*,', ',', args_strings)
-                args_strings = re.sub(r'=.*', '', args_strings)
-                # Condense multiple spaces and eliminate newlines putting the
-                # parameters together on a single line.  Ensure there is a
-                # space in an argument which is split by a newline without
-                # intervening whitespace, e.g.: int\nBar
-                args = re.sub('  +', ' ', args_strings.replace('\n', ' '))
-
-            # Create the mock method definition.
-            output_lines.extend(['%s%s(%s,' % (indent, mock_method_macro, node.name),
-                                 '%s%s(%s));' % (indent * 3, return_type, args)])
+  function_type = (
+      ast.FUNCTION_VIRTUAL | ast.FUNCTION_PURE_VIRTUAL | ast.FUNCTION_OVERRIDE)
+  ctor_or_dtor = ast.FUNCTION_CTOR | ast.FUNCTION_DTOR
+  indent = ' ' * _INDENT
+
+  for node in class_node.body:
+    # We only care about virtual functions.
+    if (isinstance(node, ast.Function) and node.modifiers & function_type and
+        not node.modifiers & ctor_or_dtor):
+      # Pick out all the elements we need from the original function.
+      modifiers = 'override'
+      if node.modifiers & ast.FUNCTION_CONST:
+        modifiers = 'const, ' + modifiers
+
+      return_type = 'void'
+      if node.return_type:
+        return_type = _EscapeForMacro(_RenderType(node.return_type))
+
+      args = []
+      for p in node.parameters:
+        arg = _GenerateArg(source[p.start:p.end])
+        args.append(_EscapeForMacro(arg))
+
+      # Create the mock method definition.
+      output_lines.extend([
+          '%sMOCK_METHOD(%s, %s, (%s), (%s));' %
+          (indent, return_type, node.name, ', '.join(args), modifiers)
+      ])
 
 
 def _GenerateMocks(filename, source, ast_list, desired_class_names):
-    processed_class_names = set()
-    lines = []
-    for node in ast_list:
-        if (isinstance(node, ast.Class) and node.body and
-                # desired_class_names being None means that all classes are selected.
-                (not desired_class_names or node.name in desired_class_names)):
-            class_name = node.name
-            parent_name = class_name
-            processed_class_names.add(class_name)
-            class_node = node
-            # Add namespace before the class.
-            if class_node.namespace:
-                lines.extend(['namespace %s {' % n for n in class_node.namespace])  # }
-                lines.append('')
-
-            # Add template args for templated classes.
-            if class_node.templated_types:
-                # TODO(paulchang): The AST doesn't preserve template argument order,
-                # so we have to make up names here.
-                # TODO(paulchang): Handle non-type template arguments (e.g.
-                # template<typename T, int N>).
-                template_arg_count = len(class_node.templated_types.keys())
-                template_args = ['T%d' % n for n in range(template_arg_count)]
-                template_decls = ['typename ' + arg for arg in template_args]
-                lines.append('template <' + ', '.join(template_decls) + '>')
-                parent_name += '<' + ', '.join(template_args) + '>'
-
-            # Add the class prolog.
-            lines.append('class Mock%s : public %s {'  # }
-                         % (class_name, parent_name))
-            lines.append('%spublic:' % (' ' * (_INDENT // 2)))
-
-            # Add all the methods.
-            _GenerateMethods(lines, source, class_node)
-
-            # Close the class.
-            if lines:
-                # If there are no virtual methods, no need for a public label.
-                if len(lines) == 2:
-                    del lines[-1]
-
-                # Only close the class if there really is a class.
-                lines.append('};')
-                lines.append('')  # Add an extra newline.
-
-            # Close the namespace.
-            if class_node.namespace:
-                for i in range(len(class_node.namespace) - 1, -1, -1):
-                    lines.append('}  // namespace %s' % class_node.namespace[i])
-                lines.append('')  # Add an extra newline.
-
-    if desired_class_names:
-        missing_class_name_list = list(desired_class_names - processed_class_names)
-        if missing_class_name_list:
-            missing_class_name_list.sort()
-            sys.stderr.write('Class(es) not found in %s: %s\n' %
-                             (filename, ', '.join(missing_class_name_list)))
-    elif not processed_class_names:
-        sys.stderr.write('No class found in %s\n' % filename)
-
-    return lines
+  processed_class_names = set()
+  lines = []
+  for node in ast_list:
+    if (isinstance(node, ast.Class) and node.body and
+        # desired_class_names being None means that all classes are selected.
+        (not desired_class_names or node.name in desired_class_names)):
+      class_name = node.name
+      parent_name = class_name
+      processed_class_names.add(class_name)
+      class_node = node
+      # Add namespace before the class.
+      if class_node.namespace:
+        lines.extend(['namespace %s {' % n for n in class_node.namespace])  # }
+        lines.append('')
+
+      # Add template args for templated classes.
+      if class_node.templated_types:
+        # TODO(paulchang): The AST doesn't preserve template argument order,
+        # so we have to make up names here.
+        # TODO(paulchang): Handle non-type template arguments (e.g.
+        # template<typename T, int N>).
+        template_arg_count = len(class_node.templated_types.keys())
+        template_args = ['T%d' % n for n in range(template_arg_count)]
+        template_decls = ['typename ' + arg for arg in template_args]
+        lines.append('template <' + ', '.join(template_decls) + '>')
+        parent_name += '<' + ', '.join(template_args) + '>'
+
+      # Add the class prolog.
+      lines.append('class Mock%s : public %s {'  # }
+                   % (class_name, parent_name))
+      lines.append('%spublic:' % (' ' * (_INDENT // 2)))
+
+      # Add all the methods.
+      _GenerateMethods(lines, source, class_node)
+
+      # Close the class.
+      if lines:
+        # If there are no virtual methods, no need for a public label.
+        if len(lines) == 2:
+          del lines[-1]
+
+        # Only close the class if there really is a class.
+        lines.append('};')
+        lines.append('')  # Add an extra newline.
+
+      # Close the namespace.
+      if class_node.namespace:
+        for i in range(len(class_node.namespace) - 1, -1, -1):
+          lines.append('}  // namespace %s' % class_node.namespace[i])
+        lines.append('')  # Add an extra newline.
+
+  if desired_class_names:
+    missing_class_name_list = list(desired_class_names - processed_class_names)
+    if missing_class_name_list:
+      missing_class_name_list.sort()
+      sys.stderr.write('Class(es) not found in %s: %s\n' %
+                       (filename, ', '.join(missing_class_name_list)))
+  elif not processed_class_names:
+    sys.stderr.write('No class found in %s\n' % filename)
+
+  return lines
 
 
 def main(argv=sys.argv):
-    if len(argv) < 2:
-        sys.stderr.write('Google Mock Class Generator v%s\n\n' %
-                         '.'.join(map(str, _VERSION)))
-        sys.stderr.write(__doc__)
-        return 1
-
-    global _INDENT
-    try:
-        _INDENT = int(os.environ['INDENT'])
-    except KeyError:
-        pass
-    except:
-        sys.stderr.write('Unable to use indent of %s\n' % os.environ.get('INDENT'))
-
-    filename = argv[1]
-    desired_class_names = None  # None means all classes in the source file.
-    if len(argv) >= 3:
-        desired_class_names = set(argv[2:])
-    source = utils.ReadFile(filename)
-    if source is None:
-        return 1
-
-    builder = ast.BuilderFromSource(source, filename)
-    try:
-        entire_ast = filter(None, builder.Generate())
-    except KeyboardInterrupt:
-        return
-    except:
-        # An error message was already printed since we couldn't parse.
-        sys.exit(1)
-    else:
-        lines = _GenerateMocks(filename, source, entire_ast, desired_class_names)
-        sys.stdout.write('\n'.join(lines))
+  if len(argv) < 2:
+    sys.stderr.write('Google Mock Class Generator v%s\n\n' %
+                     '.'.join(map(str, _VERSION)))
+    sys.stderr.write(__doc__)
+    return 1
+
+  global _INDENT
+  try:
+    _INDENT = int(os.environ['INDENT'])
+  except KeyError:
+    pass
+  except:
+    sys.stderr.write('Unable to use indent of %s\n' % os.environ.get('INDENT'))
+
+  filename = argv[1]
+  desired_class_names = None  # None means all classes in the source file.
+  if len(argv) >= 3:
+    desired_class_names = set(argv[2:])
+  source = utils.ReadFile(filename)
+  if source is None:
+    return 1
+
+  builder = ast.BuilderFromSource(source, filename)
+  try:
+    entire_ast = filter(None, builder.Generate())
+  except KeyboardInterrupt:
+    return
+  except:
+    # An error message was already printed since we couldn't parse.
+    sys.exit(1)
+  else:
+    lines = _GenerateMocks(filename, source, entire_ast, desired_class_names)
+    sys.stdout.write('\n'.join(lines))
 
 
 if __name__ == '__main__':
-    main(sys.argv)
+  main(sys.argv)
index 211a92dd20144dc533e0f908db2694acbd2d2670..527182cc39adda089f4235a0967c16e5437d9755 100755 (executable)
@@ -29,43 +29,43 @@ from cpp import gmock_class
 
 
 class TestCase(unittest.TestCase):
-    """Helper class that adds assert methods."""
+  """Helper class that adds assert methods."""
 
-    @staticmethod
-    def StripLeadingWhitespace(lines):
-        """Strip leading whitespace in each line in 'lines'."""
-        return '\n'.join([s.lstrip() for s in lines.split('\n')])
+  @staticmethod
+  def StripLeadingWhitespace(lines):
+    """Strip leading whitespace in each line in 'lines'."""
+    return '\n'.join([s.lstrip() for s in lines.split('\n')])
 
-    def assertEqualIgnoreLeadingWhitespace(self, expected_lines, lines):
-        """Specialized assert that ignores the indent level."""
-        self.assertEqual(expected_lines, self.StripLeadingWhitespace(lines))
+  def assertEqualIgnoreLeadingWhitespace(self, expected_lines, lines):
+    """Specialized assert that ignores the indent level."""
+    self.assertEqual(expected_lines, self.StripLeadingWhitespace(lines))
 
 
 class GenerateMethodsTest(TestCase):
 
-    @staticmethod
-    def GenerateMethodSource(cpp_source):
-        """Convert C++ source to Google Mock output source lines."""
-        method_source_lines = []
-        # <test> is a pseudo-filename, it is not read or written.
-        builder = ast.BuilderFromSource(cpp_source, '<test>')
-        ast_list = list(builder.Generate())
-        gmock_class._GenerateMethods(method_source_lines, cpp_source, ast_list[0])
-        return '\n'.join(method_source_lines)
-
-    def testSimpleMethod(self):
-        source = """
+  @staticmethod
+  def GenerateMethodSource(cpp_source):
+    """Convert C++ source to Google Mock output source lines."""
+    method_source_lines = []
+    # <test> is a pseudo-filename, it is not read or written.
+    builder = ast.BuilderFromSource(cpp_source, '<test>')
+    ast_list = list(builder.Generate())
+    gmock_class._GenerateMethods(method_source_lines, cpp_source, ast_list[0])
+    return '\n'.join(method_source_lines)
+
+  def testSimpleMethod(self):
+    source = """
 class Foo {
  public:
   virtual int Bar();
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD0(Bar,\nint());',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (), (override));',
+        self.GenerateMethodSource(source))
 
-    def testSimpleConstructorsAndDestructor(self):
-        source = """
+  def testSimpleConstructorsAndDestructor(self):
+    source = """
 class Foo {
  public:
   Foo();
@@ -76,26 +76,26 @@ class Foo {
   virtual int Bar() = 0;
 };
 """
-        # The constructors and destructor should be ignored.
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD0(Bar,\nint());',
-            self.GenerateMethodSource(source))
+    # The constructors and destructor should be ignored.
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (), (override));',
+        self.GenerateMethodSource(source))
 
-    def testVirtualDestructor(self):
-        source = """
+  def testVirtualDestructor(self):
+    source = """
 class Foo {
  public:
   virtual ~Foo();
   virtual int Bar() = 0;
 };
 """
-        # The destructor should be ignored.
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD0(Bar,\nint());',
-            self.GenerateMethodSource(source))
+    # The destructor should be ignored.
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (), (override));',
+        self.GenerateMethodSource(source))
 
-    def testExplicitlyDefaultedConstructorsAndDestructor(self):
-        source = """
+  def testExplicitlyDefaultedConstructorsAndDestructor(self):
+    source = """
 class Foo {
  public:
   Foo() = default;
@@ -105,13 +105,13 @@ class Foo {
   virtual int Bar() = 0;
 };
 """
-        # The constructors and destructor should be ignored.
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD0(Bar,\nint());',
-            self.GenerateMethodSource(source))
+    # The constructors and destructor should be ignored.
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (), (override));',
+        self.GenerateMethodSource(source))
 
-    def testExplicitlyDeletedConstructorsAndDestructor(self):
-        source = """
+  def testExplicitlyDeletedConstructorsAndDestructor(self):
+    source = """
 class Foo {
  public:
   Foo() = delete;
@@ -121,69 +121,69 @@ class Foo {
   virtual int Bar() = 0;
 };
 """
-        # The constructors and destructor should be ignored.
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD0(Bar,\nint());',
-            self.GenerateMethodSource(source))
+    # The constructors and destructor should be ignored.
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (), (override));',
+        self.GenerateMethodSource(source))
 
-    def testSimpleOverrideMethod(self):
-        source = """
+  def testSimpleOverrideMethod(self):
+    source = """
 class Foo {
  public:
   int Bar() override;
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD0(Bar,\nint());',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (), (override));',
+        self.GenerateMethodSource(source))
 
-    def testSimpleConstMethod(self):
-        source = """
+  def testSimpleConstMethod(self):
+    source = """
 class Foo {
  public:
   virtual void Bar(bool flag) const;
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_CONST_METHOD1(Bar,\nvoid(bool flag));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(void, Bar, (bool flag), (const, override));',
+        self.GenerateMethodSource(source))
 
-    def testExplicitVoid(self):
-        source = """
+  def testExplicitVoid(self):
+    source = """
 class Foo {
  public:
   virtual int Bar(void);
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD0(Bar,\nint(void));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (void), (override));',
+        self.GenerateMethodSource(source))
 
-    def testStrangeNewlineInParameter(self):
-        source = """
+  def testStrangeNewlineInParameter(self):
+    source = """
 class Foo {
  public:
   virtual void Bar(int
 a) = 0;
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD1(Bar,\nvoid(int a));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(void, Bar, (int a), (override));',
+        self.GenerateMethodSource(source))
 
-    def testDefaultParameters(self):
-        source = """
+  def testDefaultParameters(self):
+    source = """
 class Foo {
  public:
   virtual void Bar(int a, char c = 'x') = 0;
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD2(Bar,\nvoid(int a, char c ));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(void, Bar, (int a, char c), (override));',
+        self.GenerateMethodSource(source))
 
-    def testMultipleDefaultParameters(self):
-        source = """
+  def testMultipleDefaultParameters(self):
+    source = """
 class Foo {
  public:
   virtual void Bar(
@@ -195,47 +195,58 @@ class Foo {
         int const *& rp = aDefaultPointer) = 0;
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            "MOCK_METHOD7(Bar,\n"
-            "void(int a , char c , const int* const p , const std::string& s , char tab[] , int const *& rp ));",
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(void, Bar, '
+        '(int a, char c, const int* const p, const std::string& s, char tab[], int const *& rp), '
+        '(override));', self.GenerateMethodSource(source))
 
-    def testConstDefaultParameter(self):
-        source = """
+  def testMultipleSingleLineDefaultParameters(self):
+    source = """
+class Foo {
+ public:
+  virtual void Bar(int a = 42, int b = 43, int c = 44) = 0;
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(void, Bar, (int a, int b, int c), (override));',
+        self.GenerateMethodSource(source))
+
+  def testConstDefaultParameter(self):
+    source = """
 class Test {
  public:
   virtual bool Bar(const int test_arg = 42) = 0;
 };
 """
-        expected = 'MOCK_METHOD1(Bar,\nbool(const int test_arg ));'
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(bool, Bar, (const int test_arg), (override));',
+        self.GenerateMethodSource(source))
 
-    def testConstRefDefaultParameter(self):
-        source = """
+  def testConstRefDefaultParameter(self):
+    source = """
 class Test {
  public:
   virtual bool Bar(const std::string& test_arg = "42" ) = 0;
 };
 """
-        expected = 'MOCK_METHOD1(Bar,\nbool(const std::string& test_arg ));'
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(bool, Bar, (const std::string& test_arg), (override));',
+        self.GenerateMethodSource(source))
 
-    def testRemovesCommentsWhenDefaultsArePresent(self):
-        source = """
+  def testRemovesCommentsWhenDefaultsArePresent(self):
+    source = """
 class Foo {
  public:
   virtual void Bar(int a = 42 /* a comment */,
                    char /* other comment */ c= 'x') = 0;
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD2(Bar,\nvoid(int a , char c));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(void, Bar, (int a, char c), (override));',
+        self.GenerateMethodSource(source))
 
-    def testDoubleSlashCommentsInParameterListAreRemoved(self):
-        source = """
+  def testDoubleSlashCommentsInParameterListAreRemoved(self):
+    source = """
 class Foo {
  public:
   virtual void Bar(int a,  // inline comments should be elided.
@@ -243,219 +254,208 @@ class Foo {
                    ) const = 0;
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_CONST_METHOD2(Bar,\nvoid(int a, int b));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(void, Bar, (int a, int b), (const, override));',
+        self.GenerateMethodSource(source))
 
-    def testCStyleCommentsInParameterListAreNotRemoved(self):
-        # NOTE(nnorwitz): I'm not sure if it's the best behavior to keep these
-        # comments.  Also note that C style comments after the last parameter
-        # are still elided.
-        source = """
+  def testCStyleCommentsInParameterListAreNotRemoved(self):
+    # NOTE(nnorwitz): I'm not sure if it's the best behavior to keep these
+    # comments.  Also note that C style comments after the last parameter
+    # are still elided.
+    source = """
 class Foo {
  public:
   virtual const string& Bar(int /* keeper */, int b);
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD2(Bar,\nconst string&(int , int b));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(const string&, Bar, (int, int b), (override));',
+        self.GenerateMethodSource(source))
 
-    def testArgsOfTemplateTypes(self):
-        source = """
+  def testArgsOfTemplateTypes(self):
+    source = """
 class Foo {
  public:
   virtual int Bar(const vector<int>& v, map<int, string>* output);
 };"""
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD2(Bar,\n'
-            'int(const vector<int>& v, map<int, string>* output));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (const vector<int>& v, (map<int, string>* output)), (override));',
+        self.GenerateMethodSource(source))
 
-    def testReturnTypeWithOneTemplateArg(self):
-        source = """
+  def testReturnTypeWithOneTemplateArg(self):
+    source = """
 class Foo {
  public:
   virtual vector<int>* Bar(int n);
 };"""
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD1(Bar,\nvector<int>*(int n));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(vector<int>*, Bar, (int n), (override));',
+        self.GenerateMethodSource(source))
 
-    def testReturnTypeWithManyTemplateArgs(self):
-        source = """
+  def testReturnTypeWithManyTemplateArgs(self):
+    source = """
 class Foo {
  public:
   virtual map<int, string> Bar();
 };"""
-        # Comparing the comment text is brittle - we'll think of something
-        # better in case this gets annoying, but for now let's keep it simple.
-        self.assertEqualIgnoreLeadingWhitespace(
-            '// The following line won\'t really compile, as the return\n'
-            '// type has multiple template arguments.  To fix it, use a\n'
-            '// typedef for the return type.\n'
-            'MOCK_METHOD0(Bar,\nmap<int, string>());',
-            self.GenerateMethodSource(source))
-
-    def testSimpleMethodInTemplatedClass(self):
-        source = """
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD((map<int, string>), Bar, (), (override));',
+        self.GenerateMethodSource(source))
+
+  def testSimpleMethodInTemplatedClass(self):
+    source = """
 template<class T>
 class Foo {
  public:
   virtual int Bar();
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD0_T(Bar,\nint());',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (), (override));',
+        self.GenerateMethodSource(source))
 
-    def testPointerArgWithoutNames(self):
-        source = """
+  def testPointerArgWithoutNames(self):
+    source = """
 class Foo {
   virtual int Bar(C*);
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD1(Bar,\nint(C*));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (C*), (override));',
+        self.GenerateMethodSource(source))
 
-    def testReferenceArgWithoutNames(self):
-        source = """
+  def testReferenceArgWithoutNames(self):
+    source = """
 class Foo {
   virtual int Bar(C&);
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD1(Bar,\nint(C&));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (C&), (override));',
+        self.GenerateMethodSource(source))
 
-    def testArrayArgWithoutNames(self):
-        source = """
+  def testArrayArgWithoutNames(self):
+    source = """
 class Foo {
   virtual int Bar(C[]);
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            'MOCK_METHOD1(Bar,\nint(C[]));',
-            self.GenerateMethodSource(source))
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD(int, Bar, (C[]), (override));',
+        self.GenerateMethodSource(source))
 
 
 class GenerateMocksTest(TestCase):
 
-    @staticmethod
-    def GenerateMocks(cpp_source):
-        """Convert C++ source to complete Google Mock output source."""
-        # <test> is a pseudo-filename, it is not read or written.
-        filename = '<test>'
-        builder = ast.BuilderFromSource(cpp_source, filename)
-        ast_list = list(builder.Generate())
-        lines = gmock_class._GenerateMocks(filename, cpp_source, ast_list, None)
-        return '\n'.join(lines)
-
-    def testNamespaces(self):
-        source = """
+  @staticmethod
+  def GenerateMocks(cpp_source):
+    """Convert C++ source to complete Google Mock output source."""
+    # <test> is a pseudo-filename, it is not read or written.
+    filename = '<test>'
+    builder = ast.BuilderFromSource(cpp_source, filename)
+    ast_list = list(builder.Generate())
+    lines = gmock_class._GenerateMocks(filename, cpp_source, ast_list, None)
+    return '\n'.join(lines)
+
+  def testNamespaces(self):
+    source = """
 namespace Foo {
 namespace Bar { class Forward; }
-namespace Baz {
+namespace Baz::Qux {
 
 class Test {
  public:
   virtual void Foo();
 };
 
-}  // namespace Baz
+}  // namespace Baz::Qux
 }  // namespace Foo
 """
-        expected = """\
+    expected = """\
 namespace Foo {
-namespace Baz {
+namespace Baz::Qux {
 
 class MockTest : public Test {
 public:
-MOCK_METHOD0(Foo,
-void());
+MOCK_METHOD(void, Foo, (), (override));
 };
 
-}  // namespace Baz
+}  // namespace Baz::Qux
 }  // namespace Foo
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
-    def testClassWithStorageSpecifierMacro(self):
-        source = """
+  def testClassWithStorageSpecifierMacro(self):
+    source = """
 class STORAGE_SPECIFIER Test {
  public:
   virtual void Foo();
 };
 """
-        expected = """\
+    expected = """\
 class MockTest : public Test {
 public:
-MOCK_METHOD0(Foo,
-void());
+MOCK_METHOD(void, Foo, (), (override));
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
-    def testTemplatedForwardDeclaration(self):
-        source = """
+  def testTemplatedForwardDeclaration(self):
+    source = """
 template <class T> class Forward;  // Forward declaration should be ignored.
 class Test {
  public:
   virtual void Foo();
 };
 """
-        expected = """\
+    expected = """\
 class MockTest : public Test {
 public:
-MOCK_METHOD0(Foo,
-void());
+MOCK_METHOD(void, Foo, (), (override));
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
-    def testTemplatedClass(self):
-        source = """
+  def testTemplatedClass(self):
+    source = """
 template <typename S, typename T>
 class Test {
  public:
   virtual void Foo();
 };
 """
-        expected = """\
+    expected = """\
 template <typename T0, typename T1>
 class MockTest : public Test<T0, T1> {
 public:
-MOCK_METHOD0_T(Foo,
-void());
+MOCK_METHOD(void, Foo, (), (override));
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
-    def testTemplateInATemplateTypedef(self):
-        source = """
+  def testTemplateInATemplateTypedef(self):
+    source = """
 class Test {
  public:
   typedef std::vector<std::list<int>> FooType;
   virtual void Bar(const FooType& test_arg);
 };
 """
-        expected = """\
+    expected = """\
 class MockTest : public Test {
 public:
-MOCK_METHOD1(Bar,
-void(const FooType& test_arg));
+MOCK_METHOD(void, Bar, (const FooType& test_arg), (override));
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
-    def testTemplateInATemplateTypedefWithComma(self):
-        source = """
+  def testTemplateInATemplateTypedefWithComma(self):
+    source = """
 class Test {
  public:
   typedef std::function<void(
@@ -463,18 +463,33 @@ class Test {
   virtual void Bar(const FooType& test_arg);
 };
 """
-        expected = """\
+    expected = """\
+class MockTest : public Test {
+public:
+MOCK_METHOD(void, Bar, (const FooType& test_arg), (override));
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
+
+  def testParenthesizedCommaInArg(self):
+    source = """
+class Test {
+ public:
+   virtual void Bar(std::function<void(int, int)> f);
+};
+"""
+    expected = """\
 class MockTest : public Test {
 public:
-MOCK_METHOD1(Bar,
-void(const FooType& test_arg));
+MOCK_METHOD(void, Bar, (std::function<void(int, int)> f), (override));
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
-    def testEnumType(self):
-        source = """
+  def testEnumType(self):
+    source = """
 class Test {
  public:
   enum Bar {
@@ -483,18 +498,17 @@ class Test {
   virtual void Foo();
 };
 """
-        expected = """\
+    expected = """\
 class MockTest : public Test {
 public:
-MOCK_METHOD0(Foo,
-void());
+MOCK_METHOD(void, Foo, (), (override));
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
-    def testEnumClassType(self):
-        source = """
+  def testEnumClassType(self):
+    source = """
 class Test {
  public:
   enum class Bar {
@@ -503,18 +517,17 @@ class Test {
   virtual void Foo();
 };
 """
-        expected = """\
+    expected = """\
 class MockTest : public Test {
 public:
-MOCK_METHOD0(Foo,
-void());
+MOCK_METHOD(void, Foo, (), (override));
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
-    def testStdFunction(self):
-        source = """
+  def testStdFunction(self):
+    source = """
 class Test {
  public:
   Test(std::function<int(std::string)> foo) : foo_(foo) {}
@@ -525,16 +538,15 @@ class Test {
   std::function<int(std::string)> foo_;
 };
 """
-        expected = """\
+    expected = """\
 class MockTest : public Test {
 public:
-MOCK_METHOD0(foo,
-std::function<int (std::string)>());
+MOCK_METHOD(std::function<int (std::string)>, foo, (), (override));
 };
 """
-        self.assertEqualIgnoreLeadingWhitespace(
-            expected, self.GenerateMocks(source))
+    self.assertEqualIgnoreLeadingWhitespace(expected,
+                                            self.GenerateMocks(source))
 
 
 if __name__ == '__main__':
-    unittest.main()
+  unittest.main()
index 4a3f7af2351ded2cb40ec83389d0f24d1456de9a..dded437addbaabb7cc7f1972f6ebd1402fdfe1bc 100644 (file)
@@ -34,7 +34,6 @@
 // utilities for defining matchers.
 
 #include "gmock/gmock-matchers.h"
-#include "gmock/gmock-generated-matchers.h"
 
 #include <string.h>
 #include <iostream>
@@ -219,8 +218,6 @@ class MaxBipartiteMatchState {
   // right_[left_[i]] = i.
   ::std::vector<size_t> left_;
   ::std::vector<size_t> right_;
-
-  GTEST_DISALLOW_ASSIGN_(MaxBipartiteMatchState);
 };
 
 const size_t MaxBipartiteMatchState::kUnused;
index 81ea98949c233083f81650f2923f41c7137148e5..05a50f67c2b671ba52c5ca2491c6e69621fe0400 100644 (file)
@@ -433,10 +433,10 @@ UntypedActionResultHolderBase* UntypedFunctionMockerBase::UntypedInvokeWith(
 
   // The UntypedFindMatchingExpectation() function acquires and
   // releases g_gmock_mutex.
+
   const ExpectationBase* const untyped_expectation =
-      this->UntypedFindMatchingExpectation(
-          untyped_args, &untyped_action, &is_excessive,
-          &ss, &why);
+      this->UntypedFindMatchingExpectation(untyped_args, &untyped_action,
+                                           &is_excessive, &ss, &why);
   const bool found = untyped_expectation != nullptr;
 
   // True if and only if we need to print the call's arguments
@@ -461,26 +461,42 @@ UntypedActionResultHolderBase* UntypedFunctionMockerBase::UntypedInvokeWith(
     untyped_expectation->DescribeLocationTo(&loc);
   }
 
-  UntypedActionResultHolderBase* const result =
-      untyped_action == nullptr
-          ? this->UntypedPerformDefaultAction(untyped_args, ss.str())
-          : this->UntypedPerformAction(untyped_action, untyped_args);
-  if (result != nullptr) result->PrintAsActionResult(&ss);
-  ss << "\n" << why.str();
-
-  if (!found) {
-    // No expectation matches this call - reports a failure.
-    Expect(false, nullptr, -1, ss.str());
-  } else if (is_excessive) {
-    // We had an upper-bound violation and the failure message is in ss.
-    Expect(false, untyped_expectation->file(),
-           untyped_expectation->line(), ss.str());
-  } else {
-    // We had an expected call and the matching expectation is
-    // described in ss.
-    Log(kInfo, loc.str() + ss.str(), 2);
+  UntypedActionResultHolderBase* result = nullptr;
+
+  auto perform_action = [&] {
+    return untyped_action == nullptr
+               ? this->UntypedPerformDefaultAction(untyped_args, ss.str())
+               : this->UntypedPerformAction(untyped_action, untyped_args);
+  };
+  auto handle_failures = [&] {
+    ss << "\n" << why.str();
+
+    if (!found) {
+      // No expectation matches this call - reports a failure.
+      Expect(false, nullptr, -1, ss.str());
+    } else if (is_excessive) {
+      // We had an upper-bound violation and the failure message is in ss.
+      Expect(false, untyped_expectation->file(), untyped_expectation->line(),
+             ss.str());
+    } else {
+      // We had an expected call and the matching expectation is
+      // described in ss.
+      Log(kInfo, loc.str() + ss.str(), 2);
+    }
+  };
+#if GTEST_HAS_EXCEPTIONS
+  try {
+    result = perform_action();
+  } catch (...) {
+    handle_failures();
+    throw;
   }
+#else
+  result = perform_action();
+#endif
 
+  if (result != nullptr) result->PrintAsActionResult(&ss);
+  handle_failures();
   return result;
 }
 
@@ -624,7 +640,7 @@ class MockObjectRegistry {
     if (leaked_count > 0) {
       std::cout << "\nERROR: " << leaked_count << " leaked mock "
                 << (leaked_count == 1 ? "object" : "objects")
-                << " found at program exit. Expectations on a mock object is "
+                << " found at program exit. Expectations on a mock object are "
                    "verified when the object is destructed. Leaking a mock "
                    "means that its expectations aren't verified, which is "
                    "usually a test bug. If you really intend to leak a mock, "
index 32b2a7394fd08cb19c13d0017539bce308195db0..7bcdb0ba2dfca27676a81dda7791ace699516e31 100644 (file)
@@ -124,7 +124,7 @@ static bool ParseGoogleMockStringFlag(const char* str, const char* flag,
 }
 
 static bool ParseGoogleMockIntFlag(const char* str, const char* flag,
-                                   int* value) {
+                                   int32_t* value) {
   // Gets the value of the flag as a string.
   const char* const value_str = ParseGoogleMockFlagValue(str, flag, true);
 
index da95ed58bfd708027c781dc255b46e532c8d6e55..ee75f27f9e9abd6801babfd3e20b09e75936d2b3 100644 (file)
@@ -28,8 +28,6 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
-# Author: misterg@google.com (Gennadiy Civil)
-#
 #   Bazel Build for Google C++ Testing Framework(Google Test)-googlemock
 
 load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_test")
@@ -54,6 +52,9 @@ py_library(
     name = "gmock_test_utils",
     testonly = 1,
     srcs = ["gmock_test_utils.py"],
+    deps = [
+        "//googletest/test:gtest_test_utils",
+    ]
 )
 
 cc_binary(
@@ -71,6 +72,10 @@ py_test(
         ":gmock_leak_test_",
         ":gmock_test_utils",
     ],
+    tags = [
+        "no_test_msvc2015",
+        "no_test_msvc2017",
+    ],
 )
 
 cc_test(
@@ -100,6 +105,10 @@ py_test(
     ],
     python_version = "PY2",
     deps = [":gmock_test_utils"],
+    tags = [
+        "no_test_msvc2015",
+        "no_test_msvc2017",
+    ],
 )
 
 cc_test(
index 58a2d35a487efb1a13623c5adac256afc34f71b2..183872847305776e2638e99799c3be8730356526 100644 (file)
 //
 // This file tests the built-in actions.
 
-// Silence C4800 (C4800: 'int *const ': forcing value
-// to bool 'true' or 'false') for MSVC 15
+// Silence C4100 (unreferenced formal parameter) for MSVC
 #ifdef _MSC_VER
-#if _MSC_VER == 1900
 #  pragma warning(push)
+#  pragma warning(disable:4100)
+#if _MSC_VER == 1900
+// and silence C4800 (C4800: 'int *const ': forcing value
+// to bool 'true' or 'false') for MSVC 15
 #  pragma warning(disable:4800)
 #endif
 #endif
 
 namespace {
 
-// This list should be kept sorted.
-using testing::_;
-using testing::Action;
-using testing::ActionInterface;
-using testing::Assign;
-using testing::ByMove;
-using testing::ByRef;
-using testing::DefaultValue;
-using testing::DoAll;
-using testing::DoDefault;
-using testing::IgnoreResult;
-using testing::Invoke;
-using testing::InvokeWithoutArgs;
-using testing::MakePolymorphicAction;
-using testing::Ne;
-using testing::PolymorphicAction;
-using testing::Return;
-using testing::ReturnNull;
-using testing::ReturnRef;
-using testing::ReturnRefOfCopy;
-using testing::ReturnRoundRobin;
-using testing::SetArgPointee;
-using testing::SetArgumentPointee;
-using testing::Unused;
-using testing::WithArgs;
-using testing::internal::BuiltInDefaultValue;
+using ::testing::_;
+using ::testing::Action;
+using ::testing::ActionInterface;
+using ::testing::Assign;
+using ::testing::ByMove;
+using ::testing::ByRef;
+using ::testing::DefaultValue;
+using ::testing::DoAll;
+using ::testing::DoDefault;
+using ::testing::IgnoreResult;
+using ::testing::Invoke;
+using ::testing::InvokeWithoutArgs;
+using ::testing::MakePolymorphicAction;
+using ::testing::PolymorphicAction;
+using ::testing::Return;
+using ::testing::ReturnNew;
+using ::testing::ReturnNull;
+using ::testing::ReturnRef;
+using ::testing::ReturnRefOfCopy;
+using ::testing::ReturnRoundRobin;
+using ::testing::SetArgPointee;
+using ::testing::SetArgumentPointee;
+using ::testing::Unused;
+using ::testing::WithArgs;
+using ::testing::internal::BuiltInDefaultValue;
 
 #if !GTEST_OS_WINDOWS_MOBILE
-using testing::SetErrnoAndReturn;
+using ::testing::SetErrnoAndReturn;
 #endif
 
 // Tests that BuiltInDefaultValue<T*>::Get() returns NULL.
@@ -575,8 +576,6 @@ class FromType {
 
  private:
   bool* const converted_;
-
-  GTEST_DISALLOW_ASSIGN_(FromType);
 };
 
 class ToType {
@@ -1292,6 +1291,52 @@ TEST(ByRefTest, PrintsCorrectly) {
   EXPECT_EQ(expected.str(), actual.str());
 }
 
+struct UnaryConstructorClass {
+  explicit UnaryConstructorClass(int v) : value(v) {}
+  int value;
+};
+
+// Tests using ReturnNew() with a unary constructor.
+TEST(ReturnNewTest, Unary) {
+  Action<UnaryConstructorClass*()> a = ReturnNew<UnaryConstructorClass>(4000);
+  UnaryConstructorClass* c = a.Perform(std::make_tuple());
+  EXPECT_EQ(4000, c->value);
+  delete c;
+}
+
+TEST(ReturnNewTest, UnaryWorksWhenMockMethodHasArgs) {
+  Action<UnaryConstructorClass*(bool, int)> a =
+      ReturnNew<UnaryConstructorClass>(4000);
+  UnaryConstructorClass* c = a.Perform(std::make_tuple(false, 5));
+  EXPECT_EQ(4000, c->value);
+  delete c;
+}
+
+TEST(ReturnNewTest, UnaryWorksWhenMockMethodReturnsPointerToConst) {
+  Action<const UnaryConstructorClass*()> a =
+      ReturnNew<UnaryConstructorClass>(4000);
+  const UnaryConstructorClass* c = a.Perform(std::make_tuple());
+  EXPECT_EQ(4000, c->value);
+  delete c;
+}
+
+class TenArgConstructorClass {
+ public:
+  TenArgConstructorClass(int a1, int a2, int a3, int a4, int a5, int a6, int a7,
+                         int a8, int a9, int a10)
+      : value_(a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10) {}
+  int value_;
+};
+
+// Tests using ReturnNew() with a 10-argument constructor.
+TEST(ReturnNewTest, ConstructorThatTakes10Arguments) {
+  Action<TenArgConstructorClass*()> a = ReturnNew<TenArgConstructorClass>(
+      1000000000, 200000000, 30000000, 4000000, 500000, 60000, 7000, 800, 90,
+      0);
+  TenArgConstructorClass* c = a.Perform(std::make_tuple());
+  EXPECT_EQ(1234567890, c->value_);
+  delete c;
+}
 
 std::unique_ptr<int> UniquePtrSource() {
   return std::unique_ptr<int>(new int(19));
@@ -1470,8 +1515,19 @@ TEST(FunctorActionTest, TypeConversion) {
   EXPECT_EQ(1, s2.Perform(std::make_tuple("hello")));
 
   // Also between the lambda and the action itself.
-  const Action<bool(std::string)> x = [](Unused) { return 42; };
-  EXPECT_TRUE(x.Perform(std::make_tuple("hello")));
+  const Action<bool(std::string)> x1 = [](Unused) { return 42; };
+  const Action<bool(std::string)> x2 = [] { return 42; };
+  EXPECT_TRUE(x1.Perform(std::make_tuple("hello")));
+  EXPECT_TRUE(x2.Perform(std::make_tuple("hello")));
+
+  // Ensure decay occurs where required.
+  std::function<int()> f = [] { return 7; };
+  Action<int(int)> d = f;
+  f = nullptr;
+  EXPECT_EQ(7, d.Perform(std::make_tuple(1)));
+
+  // Ensure creation of an empty action succeeds.
+  Action<void(int)>(nullptr);
 }
 
 TEST(FunctorActionTest, UnusedArguments) {
@@ -1496,6 +1552,26 @@ TEST(MoveOnlyArgumentsTest, ReturningActions) {
   EXPECT_EQ(x, 3);
 }
 
+ACTION(ReturnArity) {
+  return std::tuple_size<args_type>::value;
+}
+
+TEST(ActionMacro, LargeArity) {
+  EXPECT_EQ(
+      1, testing::Action<int(int)>(ReturnArity()).Perform(std::make_tuple(0)));
+  EXPECT_EQ(
+      10,
+      testing::Action<int(int, int, int, int, int, int, int, int, int, int)>(
+          ReturnArity())
+          .Perform(std::make_tuple(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)));
+  EXPECT_EQ(
+      20,
+      testing::Action<int(int, int, int, int, int, int, int, int, int, int, int,
+                          int, int, int, int, int, int, int, int, int)>(
+          ReturnArity())
+          .Perform(std::make_tuple(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+                                   14, 15, 16, 17, 18, 19)));
+}
 
 }  // Unnamed namespace
 
index 90d6b5f136c72b5929f042d0944d131b2f2557be..45a524e2000dda8b638fc6c1c7a3d0e79c9ad465 100644 (file)
@@ -31,7 +31,7 @@
 // Google Mock - a framework for writing C++ mock classes.
 //
 // This file tests the function mocker classes.
-#include "gmock/gmock-generated-function-mockers.h"
+#include "gmock/gmock-function-mocker.h"
 
 #if GTEST_OS_WINDOWS
 // MSDN says the header file to be included for STDMETHOD is BaseTyps.h but
@@ -40,6 +40,7 @@
 # include <objbase.h>
 #endif  // GTEST_OS_WINDOWS
 
+#include <functional>
 #include <map>
 #include <string>
 #include <type_traits>
@@ -107,6 +108,16 @@ class FooInterface {
   using fn_ptr = int (*)(bool);
   virtual fn_ptr ReturnsFunctionPointer2(int) = 0;
 
+  virtual int RefQualifiedConstRef() const& = 0;
+  virtual int RefQualifiedConstRefRef() const&& = 0;
+  virtual int RefQualifiedRef() & = 0;
+  virtual int RefQualifiedRefRef() && = 0;
+
+  virtual int RefQualifiedOverloaded() const& = 0;
+  virtual int RefQualifiedOverloaded() const&& = 0;
+  virtual int RefQualifiedOverloaded() & = 0;
+  virtual int RefQualifiedOverloaded() && = 0;
+
 #if GTEST_OS_WINDOWS
   STDMETHOD_(int, CTNullary)() = 0;
   STDMETHOD_(bool, CTUnary)(int x) = 0;
@@ -180,189 +191,301 @@ class MockFoo : public FooInterface {
               (Calltype(STDMETHODCALLTYPE)));
 #endif  // GTEST_OS_WINDOWS
 
+  // Test reference qualified functions.
+  MOCK_METHOD(int, RefQualifiedConstRef, (), (const, ref(&), override));
+  MOCK_METHOD(int, RefQualifiedConstRefRef, (), (const, ref(&&), override));
+  MOCK_METHOD(int, RefQualifiedRef, (), (ref(&), override));
+  MOCK_METHOD(int, RefQualifiedRefRef, (), (ref(&&), override));
+
+  MOCK_METHOD(int, RefQualifiedOverloaded, (), (const, ref(&), override));
+  MOCK_METHOD(int, RefQualifiedOverloaded, (), (const, ref(&&), override));
+  MOCK_METHOD(int, RefQualifiedOverloaded, (), (ref(&), override));
+  MOCK_METHOD(int, RefQualifiedOverloaded, (), (ref(&&), override));
+
  private:
   GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
 };
+
+class LegacyMockFoo : public FooInterface {
+ public:
+  LegacyMockFoo() {}
+
+  // Makes sure that a mock function parameter can be named.
+  MOCK_METHOD1(VoidReturning, void(int n));  // NOLINT
+
+  MOCK_METHOD0(Nullary, int());  // NOLINT
+
+  // Makes sure that a mock function parameter can be unnamed.
+  MOCK_METHOD1(Unary, bool(int));                                  // NOLINT
+  MOCK_METHOD2(Binary, long(short, int));                          // NOLINT
+  MOCK_METHOD10(Decimal, int(bool, char, short, int, long, float,  // NOLINT
+                             double, unsigned, char*, const std::string& str));
+
+  MOCK_METHOD1(TakesNonConstReference, bool(int&));  // NOLINT
+  MOCK_METHOD1(TakesConstReference, std::string(const int&));
+  MOCK_METHOD1(TakesConst, bool(const int));  // NOLINT
+
+  // Tests that the function return type can contain unprotected comma.
+  MOCK_METHOD0(ReturnTypeWithComma, std::map<int, std::string>());
+  MOCK_CONST_METHOD1(ReturnTypeWithComma,
+                     std::map<int, std::string>(int));  // NOLINT
+
+  MOCK_METHOD0(OverloadedOnArgumentNumber, int());     // NOLINT
+  MOCK_METHOD1(OverloadedOnArgumentNumber, int(int));  // NOLINT
+
+  MOCK_METHOD1(OverloadedOnArgumentType, int(int));    // NOLINT
+  MOCK_METHOD1(OverloadedOnArgumentType, char(char));  // NOLINT
+
+  MOCK_METHOD0(OverloadedOnConstness, int());         // NOLINT
+  MOCK_CONST_METHOD0(OverloadedOnConstness, char());  // NOLINT
+
+  MOCK_METHOD1(TypeWithHole, int(int (*)()));  // NOLINT
+  MOCK_METHOD1(TypeWithComma,
+               int(const std::map<int, std::string>&));  // NOLINT
+  MOCK_METHOD1(TypeWithTemplatedCopyCtor,
+               int(const TemplatedCopyable<int>&));  // NOLINT
+
+  MOCK_METHOD1(ReturnsFunctionPointer1, int (*(int))(bool));
+  MOCK_METHOD1(ReturnsFunctionPointer2, fn_ptr(int));
+
+#if GTEST_OS_WINDOWS
+  MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, CTNullary, int());
+  MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, CTUnary, bool(int));  // NOLINT
+  MOCK_METHOD10_WITH_CALLTYPE(STDMETHODCALLTYPE, CTDecimal,
+                              int(bool b, char c, short d, int e,  // NOLINT
+                                  long f, float g, double h,       // NOLINT
+                                  unsigned i, char* j, const std::string& k));
+  MOCK_CONST_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, CTConst,
+                                   char(int));  // NOLINT
+
+  // Tests that the function return type can contain unprotected comma.
+  MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, CTReturnTypeWithComma,
+                             std::map<int, std::string>());
+#endif  // GTEST_OS_WINDOWS
+
+  // We can't mock these with the old macros, but we need to define them to make
+  // it concrete.
+  int RefQualifiedConstRef() const& override { return 0; }
+  int RefQualifiedConstRefRef() const&& override { return 0; }
+  int RefQualifiedRef() & override { return 0; }
+  int RefQualifiedRefRef() && override { return 0; }
+  int RefQualifiedOverloaded() const& override { return 0; }
+  int RefQualifiedOverloaded() const&& override { return 0; }
+  int RefQualifiedOverloaded() & override { return 0; }
+  int RefQualifiedOverloaded() && override { return 0; }
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(LegacyMockFoo);
+};
+
 #ifdef _MSC_VER
 # pragma warning(pop)
 #endif
 
-class MockMethodFunctionMockerTest : public testing::Test {
+template <class T>
+class FunctionMockerTest : public testing::Test {
  protected:
-  MockMethodFunctionMockerTest() : foo_(&mock_foo_) {}
+  FunctionMockerTest() : foo_(&mock_foo_) {}
 
   FooInterface* const foo_;
-  MockFoo mock_foo_;
+  T mock_foo_;
 };
+using FunctionMockerTestTypes = ::testing::Types<MockFoo, LegacyMockFoo>;
+TYPED_TEST_SUITE(FunctionMockerTest, FunctionMockerTestTypes);
 
 // Tests mocking a void-returning function.
-TEST_F(MockMethodFunctionMockerTest, MocksVoidFunction) {
-  EXPECT_CALL(mock_foo_, VoidReturning(Lt(100)));
-  foo_->VoidReturning(0);
+TYPED_TEST(FunctionMockerTest, MocksVoidFunction) {
+  EXPECT_CALL(this->mock_foo_, VoidReturning(Lt(100)));
+  this->foo_->VoidReturning(0);
 }
 
 // Tests mocking a nullary function.
-TEST_F(MockMethodFunctionMockerTest, MocksNullaryFunction) {
-  EXPECT_CALL(mock_foo_, Nullary())
+TYPED_TEST(FunctionMockerTest, MocksNullaryFunction) {
+  EXPECT_CALL(this->mock_foo_, Nullary())
       .WillOnce(DoDefault())
       .WillOnce(Return(1));
 
-  EXPECT_EQ(0, foo_->Nullary());
-  EXPECT_EQ(1, foo_->Nullary());
+  EXPECT_EQ(0, this->foo_->Nullary());
+  EXPECT_EQ(1, this->foo_->Nullary());
 }
 
 // Tests mocking a unary function.
-TEST_F(MockMethodFunctionMockerTest, MocksUnaryFunction) {
-  EXPECT_CALL(mock_foo_, Unary(Eq(2)))
-      .Times(2)
-      .WillOnce(Return(true));
+TYPED_TEST(FunctionMockerTest, MocksUnaryFunction) {
+  EXPECT_CALL(this->mock_foo_, Unary(Eq(2))).Times(2).WillOnce(Return(true));
 
-  EXPECT_TRUE(foo_->Unary(2));
-  EXPECT_FALSE(foo_->Unary(2));
+  EXPECT_TRUE(this->foo_->Unary(2));
+  EXPECT_FALSE(this->foo_->Unary(2));
 }
 
 // Tests mocking a binary function.
-TEST_F(MockMethodFunctionMockerTest, MocksBinaryFunction) {
-  EXPECT_CALL(mock_foo_, Binary(2, _))
-      .WillOnce(Return(3));
+TYPED_TEST(FunctionMockerTest, MocksBinaryFunction) {
+  EXPECT_CALL(this->mock_foo_, Binary(2, _)).WillOnce(Return(3));
 
-  EXPECT_EQ(3, foo_->Binary(2, 1));
+  EXPECT_EQ(3, this->foo_->Binary(2, 1));
 }
 
 // Tests mocking a decimal function.
-TEST_F(MockMethodFunctionMockerTest, MocksDecimalFunction) {
-  EXPECT_CALL(mock_foo_, Decimal(true, 'a', 0, 0, 1L, A<float>(),
-                                 Lt(100), 5U, NULL, "hi"))
+TYPED_TEST(FunctionMockerTest, MocksDecimalFunction) {
+  EXPECT_CALL(this->mock_foo_,
+              Decimal(true, 'a', 0, 0, 1L, A<float>(), Lt(100), 5U, NULL, "hi"))
       .WillOnce(Return(5));
 
-  EXPECT_EQ(5, foo_->Decimal(true, 'a', 0, 0, 1, 0, 0, 5, nullptr, "hi"));
+  EXPECT_EQ(5, this->foo_->Decimal(true, 'a', 0, 0, 1, 0, 0, 5, nullptr, "hi"));
 }
 
 // Tests mocking a function that takes a non-const reference.
-TEST_F(MockMethodFunctionMockerTest,
-       MocksFunctionWithNonConstReferenceArgument) {
+TYPED_TEST(FunctionMockerTest, MocksFunctionWithNonConstReferenceArgument) {
   int a = 0;
-  EXPECT_CALL(mock_foo_, TakesNonConstReference(Ref(a)))
+  EXPECT_CALL(this->mock_foo_, TakesNonConstReference(Ref(a)))
       .WillOnce(Return(true));
 
-  EXPECT_TRUE(foo_->TakesNonConstReference(a));
+  EXPECT_TRUE(this->foo_->TakesNonConstReference(a));
 }
 
 // Tests mocking a function that takes a const reference.
-TEST_F(MockMethodFunctionMockerTest, MocksFunctionWithConstReferenceArgument) {
+TYPED_TEST(FunctionMockerTest, MocksFunctionWithConstReferenceArgument) {
   int a = 0;
-  EXPECT_CALL(mock_foo_, TakesConstReference(Ref(a)))
+  EXPECT_CALL(this->mock_foo_, TakesConstReference(Ref(a)))
       .WillOnce(Return("Hello"));
 
-  EXPECT_EQ("Hello", foo_->TakesConstReference(a));
+  EXPECT_EQ("Hello", this->foo_->TakesConstReference(a));
 }
 
 // Tests mocking a function that takes a const variable.
-TEST_F(MockMethodFunctionMockerTest, MocksFunctionWithConstArgument) {
-  EXPECT_CALL(mock_foo_, TakesConst(Lt(10)))
-      .WillOnce(DoDefault());
+TYPED_TEST(FunctionMockerTest, MocksFunctionWithConstArgument) {
+  EXPECT_CALL(this->mock_foo_, TakesConst(Lt(10))).WillOnce(DoDefault());
 
-  EXPECT_FALSE(foo_->TakesConst(5));
+  EXPECT_FALSE(this->foo_->TakesConst(5));
 }
 
 // Tests mocking functions overloaded on the number of arguments.
-TEST_F(MockMethodFunctionMockerTest, MocksFunctionsOverloadedOnArgumentNumber) {
-  EXPECT_CALL(mock_foo_, OverloadedOnArgumentNumber())
+TYPED_TEST(FunctionMockerTest, MocksFunctionsOverloadedOnArgumentNumber) {
+  EXPECT_CALL(this->mock_foo_, OverloadedOnArgumentNumber())
       .WillOnce(Return(1));
-  EXPECT_CALL(mock_foo_, OverloadedOnArgumentNumber(_))
+  EXPECT_CALL(this->mock_foo_, OverloadedOnArgumentNumber(_))
       .WillOnce(Return(2));
 
-  EXPECT_EQ(2, foo_->OverloadedOnArgumentNumber(1));
-  EXPECT_EQ(1, foo_->OverloadedOnArgumentNumber());
+  EXPECT_EQ(2, this->foo_->OverloadedOnArgumentNumber(1));
+  EXPECT_EQ(1, this->foo_->OverloadedOnArgumentNumber());
 }
 
 // Tests mocking functions overloaded on the types of argument.
-TEST_F(MockMethodFunctionMockerTest, MocksFunctionsOverloadedOnArgumentType) {
-  EXPECT_CALL(mock_foo_, OverloadedOnArgumentType(An<int>()))
+TYPED_TEST(FunctionMockerTest, MocksFunctionsOverloadedOnArgumentType) {
+  EXPECT_CALL(this->mock_foo_, OverloadedOnArgumentType(An<int>()))
       .WillOnce(Return(1));
-  EXPECT_CALL(mock_foo_, OverloadedOnArgumentType(TypedEq<char>('a')))
+  EXPECT_CALL(this->mock_foo_, OverloadedOnArgumentType(TypedEq<char>('a')))
       .WillOnce(Return('b'));
 
-  EXPECT_EQ(1, foo_->OverloadedOnArgumentType(0));
-  EXPECT_EQ('b', foo_->OverloadedOnArgumentType('a'));
+  EXPECT_EQ(1, this->foo_->OverloadedOnArgumentType(0));
+  EXPECT_EQ('b', this->foo_->OverloadedOnArgumentType('a'));
 }
 
 // Tests mocking functions overloaded on the const-ness of this object.
-TEST_F(MockMethodFunctionMockerTest,
-       MocksFunctionsOverloadedOnConstnessOfThis) {
-  EXPECT_CALL(mock_foo_, OverloadedOnConstness());
-  EXPECT_CALL(Const(mock_foo_), OverloadedOnConstness())
+TYPED_TEST(FunctionMockerTest, MocksFunctionsOverloadedOnConstnessOfThis) {
+  EXPECT_CALL(this->mock_foo_, OverloadedOnConstness());
+  EXPECT_CALL(Const(this->mock_foo_), OverloadedOnConstness())
       .WillOnce(Return('a'));
 
-  EXPECT_EQ(0, foo_->OverloadedOnConstness());
-  EXPECT_EQ('a', Const(*foo_).OverloadedOnConstness());
+  EXPECT_EQ(0, this->foo_->OverloadedOnConstness());
+  EXPECT_EQ('a', Const(*this->foo_).OverloadedOnConstness());
 }
 
-TEST_F(MockMethodFunctionMockerTest, MocksReturnTypeWithComma) {
+TYPED_TEST(FunctionMockerTest, MocksReturnTypeWithComma) {
   const std::map<int, std::string> a_map;
-  EXPECT_CALL(mock_foo_, ReturnTypeWithComma())
-      .WillOnce(Return(a_map));
-  EXPECT_CALL(mock_foo_, ReturnTypeWithComma(42))
-      .WillOnce(Return(a_map));
+  EXPECT_CALL(this->mock_foo_, ReturnTypeWithComma()).WillOnce(Return(a_map));
+  EXPECT_CALL(this->mock_foo_, ReturnTypeWithComma(42)).WillOnce(Return(a_map));
 
-  EXPECT_EQ(a_map, mock_foo_.ReturnTypeWithComma());
-  EXPECT_EQ(a_map, mock_foo_.ReturnTypeWithComma(42));
+  EXPECT_EQ(a_map, this->mock_foo_.ReturnTypeWithComma());
+  EXPECT_EQ(a_map, this->mock_foo_.ReturnTypeWithComma(42));
 }
 
-TEST_F(MockMethodFunctionMockerTest, MocksTypeWithTemplatedCopyCtor) {
-  EXPECT_CALL(mock_foo_, TypeWithTemplatedCopyCtor(_)).WillOnce(Return(true));
-  EXPECT_TRUE(foo_->TypeWithTemplatedCopyCtor(TemplatedCopyable<int>()));
+TYPED_TEST(FunctionMockerTest, MocksTypeWithTemplatedCopyCtor) {
+  EXPECT_CALL(this->mock_foo_, TypeWithTemplatedCopyCtor(_))
+      .WillOnce(Return(true));
+  EXPECT_TRUE(this->foo_->TypeWithTemplatedCopyCtor(TemplatedCopyable<int>()));
 }
 
 #if GTEST_OS_WINDOWS
 // Tests mocking a nullary function with calltype.
-TEST_F(MockMethodFunctionMockerTest, MocksNullaryFunctionWithCallType) {
-  EXPECT_CALL(mock_foo_, CTNullary())
+TYPED_TEST(FunctionMockerTest, MocksNullaryFunctionWithCallType) {
+  EXPECT_CALL(this->mock_foo_, CTNullary())
       .WillOnce(Return(-1))
       .WillOnce(Return(0));
 
-  EXPECT_EQ(-1, foo_->CTNullary());
-  EXPECT_EQ(0, foo_->CTNullary());
+  EXPECT_EQ(-1, this->foo_->CTNullary());
+  EXPECT_EQ(0, this->foo_->CTNullary());
 }
 
 // Tests mocking a unary function with calltype.
-TEST_F(MockMethodFunctionMockerTest, MocksUnaryFunctionWithCallType) {
-  EXPECT_CALL(mock_foo_, CTUnary(Eq(2)))
+TYPED_TEST(FunctionMockerTest, MocksUnaryFunctionWithCallType) {
+  EXPECT_CALL(this->mock_foo_, CTUnary(Eq(2)))
       .Times(2)
       .WillOnce(Return(true))
       .WillOnce(Return(false));
 
-  EXPECT_TRUE(foo_->CTUnary(2));
-  EXPECT_FALSE(foo_->CTUnary(2));
+  EXPECT_TRUE(this->foo_->CTUnary(2));
+  EXPECT_FALSE(this->foo_->CTUnary(2));
 }
 
 // Tests mocking a decimal function with calltype.
-TEST_F(MockMethodFunctionMockerTest, MocksDecimalFunctionWithCallType) {
-  EXPECT_CALL(mock_foo_, CTDecimal(true, 'a', 0, 0, 1L, A<float>(),
-                                   Lt(100), 5U, NULL, "hi"))
+TYPED_TEST(FunctionMockerTest, MocksDecimalFunctionWithCallType) {
+  EXPECT_CALL(this->mock_foo_, CTDecimal(true, 'a', 0, 0, 1L, A<float>(),
+                                         Lt(100), 5U, NULL, "hi"))
       .WillOnce(Return(10));
 
-  EXPECT_EQ(10, foo_->CTDecimal(true, 'a', 0, 0, 1, 0, 0, 5, NULL, "hi"));
+  EXPECT_EQ(10, this->foo_->CTDecimal(true, 'a', 0, 0, 1, 0, 0, 5, NULL, "hi"));
 }
 
 // Tests mocking functions overloaded on the const-ness of this object.
-TEST_F(MockMethodFunctionMockerTest, MocksFunctionsConstFunctionWithCallType) {
-  EXPECT_CALL(Const(mock_foo_), CTConst(_))
-      .WillOnce(Return('a'));
+TYPED_TEST(FunctionMockerTest, MocksFunctionsConstFunctionWithCallType) {
+  EXPECT_CALL(Const(this->mock_foo_), CTConst(_)).WillOnce(Return('a'));
 
-  EXPECT_EQ('a', Const(*foo_).CTConst(0));
+  EXPECT_EQ('a', Const(*this->foo_).CTConst(0));
 }
 
-TEST_F(MockMethodFunctionMockerTest, MocksReturnTypeWithCommaAndCallType) {
+TYPED_TEST(FunctionMockerTest, MocksReturnTypeWithCommaAndCallType) {
   const std::map<int, std::string> a_map;
-  EXPECT_CALL(mock_foo_, CTReturnTypeWithComma())
-      .WillOnce(Return(a_map));
+  EXPECT_CALL(this->mock_foo_, CTReturnTypeWithComma()).WillOnce(Return(a_map));
 
-  EXPECT_EQ(a_map, mock_foo_.CTReturnTypeWithComma());
+  EXPECT_EQ(a_map, this->mock_foo_.CTReturnTypeWithComma());
 }
 
 #endif  // GTEST_OS_WINDOWS
 
+TEST(FunctionMockerTest, RefQualified) {
+  MockFoo mock_foo;
+
+  EXPECT_CALL(mock_foo, RefQualifiedConstRef).WillOnce(Return(1));
+  EXPECT_CALL(std::move(mock_foo),  // NOLINT
+              RefQualifiedConstRefRef)
+      .WillOnce(Return(2));
+  EXPECT_CALL(mock_foo, RefQualifiedRef).WillOnce(Return(3));
+  EXPECT_CALL(std::move(mock_foo),  // NOLINT
+              RefQualifiedRefRef)
+      .WillOnce(Return(4));
+
+  EXPECT_CALL(static_cast<const MockFoo&>(mock_foo), RefQualifiedOverloaded())
+      .WillOnce(Return(5));
+  EXPECT_CALL(static_cast<const MockFoo&&>(mock_foo), RefQualifiedOverloaded())
+      .WillOnce(Return(6));
+  EXPECT_CALL(static_cast<MockFoo&>(mock_foo), RefQualifiedOverloaded())
+      .WillOnce(Return(7));
+  EXPECT_CALL(static_cast<MockFoo&&>(mock_foo), RefQualifiedOverloaded())
+      .WillOnce(Return(8));
+
+  EXPECT_EQ(mock_foo.RefQualifiedConstRef(), 1);
+  EXPECT_EQ(std::move(mock_foo).RefQualifiedConstRefRef(), 2);  // NOLINT
+  EXPECT_EQ(mock_foo.RefQualifiedRef(), 3);
+  EXPECT_EQ(std::move(mock_foo).RefQualifiedRefRef(), 4);  // NOLINT
+
+  EXPECT_EQ(std::cref(mock_foo).get().RefQualifiedOverloaded(), 5);
+  EXPECT_EQ(std::move(std::cref(mock_foo).get())  // NOLINT
+                .RefQualifiedOverloaded(),
+            6);
+  EXPECT_EQ(mock_foo.RefQualifiedOverloaded(), 7);
+  EXPECT_EQ(std::move(mock_foo).RefQualifiedOverloaded(), 8);  // NOLINT
+}
+
 class MockB {
  public:
   MockB() {}
@@ -373,20 +496,33 @@ class MockB {
   GTEST_DISALLOW_COPY_AND_ASSIGN_(MockB);
 };
 
+class LegacyMockB {
+ public:
+  LegacyMockB() {}
+
+  MOCK_METHOD0(DoB, void());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(LegacyMockB);
+};
+
+template <typename T>
+class ExpectCallTest : public ::testing::Test {};
+using ExpectCallTestTypes = ::testing::Types<MockB, LegacyMockB>;
+TYPED_TEST_SUITE(ExpectCallTest, ExpectCallTestTypes);
+
 // Tests that functions with no EXPECT_CALL() rules can be called any
 // number of times.
-TEST(MockMethodExpectCallTest, UnmentionedFunctionCanBeCalledAnyNumberOfTimes) {
-  {
-    MockB b;
-  }
+TYPED_TEST(ExpectCallTest, UnmentionedFunctionCanBeCalledAnyNumberOfTimes) {
+  { TypeParam b; }
 
   {
-    MockB b;
+    TypeParam b;
     b.DoB();
   }
 
   {
-    MockB b;
+    TypeParam b;
     b.DoB();
     b.DoB();
   }
@@ -425,9 +561,33 @@ class MockStack : public StackInterface<T> {
   GTEST_DISALLOW_COPY_AND_ASSIGN_(MockStack);
 };
 
+template <typename T>
+class LegacyMockStack : public StackInterface<T> {
+ public:
+  LegacyMockStack() {}
+
+  MOCK_METHOD1_T(Push, void(const T& elem));
+  MOCK_METHOD0_T(Pop, void());
+  MOCK_CONST_METHOD0_T(GetSize, int());  // NOLINT
+  MOCK_CONST_METHOD0_T(GetTop, const T&());
+
+  // Tests that the function return type can contain unprotected comma.
+  MOCK_METHOD0_T(ReturnTypeWithComma, std::map<int, int>());
+  MOCK_CONST_METHOD1_T(ReturnTypeWithComma, std::map<int, int>(int));  // NOLINT
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(LegacyMockStack);
+};
+
+template <typename T>
+class TemplateMockTest : public ::testing::Test {};
+using TemplateMockTestTypes =
+    ::testing::Types<MockStack<int>, LegacyMockStack<int>>;
+TYPED_TEST_SUITE(TemplateMockTest, TemplateMockTestTypes);
+
 // Tests that template mock works.
-TEST(MockMethodTemplateMockTest, Works) {
-  MockStack<int> mock;
+TYPED_TEST(TemplateMockTest, Works) {
+  TypeParam mock;
 
   EXPECT_CALL(mock, GetSize())
       .WillOnce(Return(0))
@@ -448,8 +608,8 @@ TEST(MockMethodTemplateMockTest, Works) {
   EXPECT_EQ(0, mock.GetSize());
 }
 
-TEST(MockMethodTemplateMockTest, MethodWithCommaInReturnTypeWorks) {
-  MockStack<int> mock;
+TYPED_TEST(TemplateMockTest, MethodWithCommaInReturnTypeWorks) {
+  TypeParam mock;
 
   const std::map<int, int> a_map;
   EXPECT_CALL(mock, ReturnTypeWithComma())
@@ -493,9 +653,31 @@ class MockStackWithCallType : public StackInterfaceWithCallType<T> {
   GTEST_DISALLOW_COPY_AND_ASSIGN_(MockStackWithCallType);
 };
 
+template <typename T>
+class LegacyMockStackWithCallType : public StackInterfaceWithCallType<T> {
+ public:
+  LegacyMockStackWithCallType() {}
+
+  MOCK_METHOD1_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Push, void(const T& elem));
+  MOCK_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Pop, void());
+  MOCK_CONST_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, GetSize, int());
+  MOCK_CONST_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, GetTop, const T&());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(LegacyMockStackWithCallType);
+};
+
+template <typename T>
+class TemplateMockTestWithCallType : public ::testing::Test {};
+using TemplateMockTestWithCallTypeTypes =
+    ::testing::Types<MockStackWithCallType<int>,
+                     LegacyMockStackWithCallType<int>>;
+TYPED_TEST_SUITE(TemplateMockTestWithCallType,
+                 TemplateMockTestWithCallTypeTypes);
+
 // Tests that template mock with calltype works.
-TEST(MockMethodTemplateMockTestWithCallType, Works) {
-  MockStackWithCallType<int> mock;
+TYPED_TEST(TemplateMockTestWithCallType, Works) {
+  TypeParam mock;
 
   EXPECT_CALL(mock, GetSize())
       .WillOnce(Return(0))
@@ -522,6 +704,11 @@ TEST(MockMethodTemplateMockTestWithCallType, Works) {
   MOCK_METHOD(int, Overloaded, (int), (const)); \
   MOCK_METHOD(bool, Overloaded, (bool f, int n))
 
+#define LEGACY_MY_MOCK_METHODS1_              \
+  MOCK_METHOD0(Overloaded, void());           \
+  MOCK_CONST_METHOD1(Overloaded, int(int n)); \
+  MOCK_METHOD2(Overloaded, bool(bool f, int n))
+
 class MockOverloadedOnArgNumber {
  public:
   MockOverloadedOnArgNumber() {}
@@ -532,8 +719,25 @@ class MockOverloadedOnArgNumber {
   GTEST_DISALLOW_COPY_AND_ASSIGN_(MockOverloadedOnArgNumber);
 };
 
-TEST(MockMethodOverloadedMockMethodTest, CanOverloadOnArgNumberInMacroBody) {
-  MockOverloadedOnArgNumber mock;
+class LegacyMockOverloadedOnArgNumber {
+ public:
+  LegacyMockOverloadedOnArgNumber() {}
+
+  LEGACY_MY_MOCK_METHODS1_;
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(LegacyMockOverloadedOnArgNumber);
+};
+
+template <typename T>
+class OverloadedMockMethodTest : public ::testing::Test {};
+using OverloadedMockMethodTestTypes =
+    ::testing::Types<MockOverloadedOnArgNumber,
+                     LegacyMockOverloadedOnArgNumber>;
+TYPED_TEST_SUITE(OverloadedMockMethodTest, OverloadedMockMethodTestTypes);
+
+TYPED_TEST(OverloadedMockMethodTest, CanOverloadOnArgNumberInMacroBody) {
+  TypeParam mock;
   EXPECT_CALL(mock, Overloaded());
   EXPECT_CALL(mock, Overloaded(1)).WillOnce(Return(2));
   EXPECT_CALL(mock, Overloaded(true, 1)).WillOnce(Return(true));
@@ -641,6 +845,56 @@ TEST(MockMethodMockFunctionTest, AsStdFunctionWithReferenceParameter) {
   EXPECT_EQ(-1, call(foo.AsStdFunction(), i));
 }
 
+namespace {
+
+template <typename Expected, typename F>
+static constexpr bool IsMockFunctionTemplateArgumentDeducedTo(
+    const MockFunction<F>&) {
+  return std::is_same<F, Expected>::value;
+}
+
+}  // namespace
+
+template <typename F>
+class MockMethodMockFunctionSignatureTest : public Test {};
+
+using MockMethodMockFunctionSignatureTypes =
+    Types<void(), int(), void(int), int(int), int(bool, int),
+          int(bool, char, int, int, int, int, int, char, int, bool)>;
+TYPED_TEST_SUITE(MockMethodMockFunctionSignatureTest,
+                 MockMethodMockFunctionSignatureTypes);
+
+TYPED_TEST(MockMethodMockFunctionSignatureTest,
+           IsMockFunctionTemplateArgumentDeducedForRawSignature) {
+  using Argument = TypeParam;
+  MockFunction<Argument> foo;
+  EXPECT_TRUE(IsMockFunctionTemplateArgumentDeducedTo<Argument>(foo));
+}
+
+TYPED_TEST(MockMethodMockFunctionSignatureTest,
+           IsMockFunctionTemplateArgumentDeducedForStdFunction) {
+  using Argument = std::function<TypeParam>;
+  MockFunction<Argument> foo;
+  EXPECT_TRUE(IsMockFunctionTemplateArgumentDeducedTo<Argument>(foo));
+}
+
+TYPED_TEST(
+    MockMethodMockFunctionSignatureTest,
+    IsMockFunctionCallMethodSignatureTheSameForRawSignatureAndStdFunction) {
+  using ForRawSignature = decltype(&MockFunction<TypeParam>::Call);
+  using ForStdFunction =
+      decltype(&MockFunction<std::function<TypeParam>>::Call);
+  EXPECT_TRUE((std::is_same<ForRawSignature, ForStdFunction>::value));
+}
+
+TYPED_TEST(
+    MockMethodMockFunctionSignatureTest,
+    IsMockFunctionAsStdFunctionMethodSignatureTheSameForRawSignatureAndStdFunction) {
+  using ForRawSignature = decltype(&MockFunction<TypeParam>::AsStdFunction);
+  using ForStdFunction =
+      decltype(&MockFunction<std::function<TypeParam>>::AsStdFunction);
+  EXPECT_TRUE((std::is_same<ForRawSignature, ForStdFunction>::value));
+}
 
 struct MockMethodSizes0 {
   MOCK_METHOD(void, func, ());
@@ -658,11 +912,35 @@ struct MockMethodSizes4 {
   MOCK_METHOD(void, func, (int, int, int, int));
 };
 
+struct LegacyMockMethodSizes0 {
+    MOCK_METHOD0(func, void());
+};
+struct LegacyMockMethodSizes1 {
+    MOCK_METHOD1(func, void(int));
+};
+struct LegacyMockMethodSizes2 {
+    MOCK_METHOD2(func, void(int, int));
+};
+struct LegacyMockMethodSizes3 {
+    MOCK_METHOD3(func, void(int, int, int));
+};
+struct LegacyMockMethodSizes4 {
+    MOCK_METHOD4(func, void(int, int, int, int));
+};
+
+
 TEST(MockMethodMockFunctionTest, MockMethodSizeOverhead) {
   EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes1));
   EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes2));
   EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes3));
   EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes4));
+
+  EXPECT_EQ(sizeof(LegacyMockMethodSizes0), sizeof(LegacyMockMethodSizes1));
+  EXPECT_EQ(sizeof(LegacyMockMethodSizes0), sizeof(LegacyMockMethodSizes2));
+  EXPECT_EQ(sizeof(LegacyMockMethodSizes0), sizeof(LegacyMockMethodSizes3));
+  EXPECT_EQ(sizeof(LegacyMockMethodSizes0), sizeof(LegacyMockMethodSizes4));
+
+  EXPECT_EQ(sizeof(LegacyMockMethodSizes0), sizeof(MockMethodSizes0));
 }
 
 void hasTwoParams(int, int);
index 4c649a7ee96aa677b48edaa4ce6473db0f27931d..649061640aa8f5dbbd3640641a8334e85befe426 100644 (file)
@@ -53,7 +53,6 @@ using testing::ByRef;
 using testing::DoAll;
 using testing::Invoke;
 using testing::Return;
-using testing::ReturnNew;
 using testing::SetArgPointee;
 using testing::StaticAssertTypeEq;
 using testing::Unused;
@@ -423,6 +422,33 @@ TEST(DoAllTest, TenActions) {
   EXPECT_EQ('g', g);
 }
 
+TEST(DoAllTest, NoArgs) {
+  bool ran_first = false;
+  Action<bool()> a =
+      DoAll([&] { ran_first = true; }, [&] { return ran_first; });
+  EXPECT_TRUE(a.Perform({}));
+}
+
+TEST(DoAllTest, MoveOnlyArgs) {
+  bool ran_first = false;
+  Action<int(std::unique_ptr<int>)> a =
+      DoAll(InvokeWithoutArgs([&] { ran_first = true; }),
+            [](std::unique_ptr<int> p) { return *p; });
+  EXPECT_EQ(7, a.Perform(std::make_tuple(std::unique_ptr<int>(new int(7)))));
+  EXPECT_TRUE(ran_first);
+}
+
+TEST(DoAllTest, ImplicitlyConvertsActionArguments) {
+  bool ran_first = false;
+  // Action<void(std::vector<int>)> isn't an
+  // Action<void(const std::vector<int>&) but can be converted.
+  Action<void(std::vector<int>)> first = [&] { ran_first = true; };
+  Action<int(std::vector<int>)> a =
+      DoAll(first, [](std::vector<int> arg) { return arg.front(); });
+  EXPECT_EQ(7, a.Perform(std::make_tuple(std::vector<int>{7})));
+  EXPECT_TRUE(ran_first);
+}
+
 // The ACTION*() macros trigger warning C4100 (unreferenced formal
 // parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
 // the macro definition, as the warnings are generated when the macro
@@ -844,49 +870,6 @@ TEST(ActionPnMacroTest, CanExplicitlyInstantiateWithReferenceTypes) {
   EXPECT_EQ(55, a.Perform(empty));
 }
 
-class NullaryConstructorClass {
- public:
-  NullaryConstructorClass() : value_(123) {}
-  int value_;
-};
-
-// Tests using ReturnNew() with a nullary constructor.
-TEST(ReturnNewTest, NoArgs) {
-  Action<NullaryConstructorClass*()> a = ReturnNew<NullaryConstructorClass>();
-  NullaryConstructorClass* c = a.Perform(std::make_tuple());
-  EXPECT_EQ(123, c->value_);
-  delete c;
-}
-
-class UnaryConstructorClass {
- public:
-  explicit UnaryConstructorClass(int value) : value_(value) {}
-  int value_;
-};
-
-// Tests using ReturnNew() with a unary constructor.
-TEST(ReturnNewTest, Unary) {
-  Action<UnaryConstructorClass*()> a = ReturnNew<UnaryConstructorClass>(4000);
-  UnaryConstructorClass* c = a.Perform(std::make_tuple());
-  EXPECT_EQ(4000, c->value_);
-  delete c;
-}
-
-TEST(ReturnNewTest, UnaryWorksWhenMockMethodHasArgs) {
-  Action<UnaryConstructorClass*(bool, int)> a =
-      ReturnNew<UnaryConstructorClass>(4000);
-  UnaryConstructorClass* c = a.Perform(std::make_tuple(false, 5));
-  EXPECT_EQ(4000, c->value_);
-  delete c;
-}
-
-TEST(ReturnNewTest, UnaryWorksWhenMockMethodReturnsPointerToConst) {
-  Action<const UnaryConstructorClass*()> a =
-      ReturnNew<UnaryConstructorClass>(4000);
-  const UnaryConstructorClass* c = a.Perform(std::make_tuple());
-  EXPECT_EQ(4000, c->value_);
-  delete c;
-}
 
 class TenArgConstructorClass {
  public:
@@ -897,17 +880,6 @@ class TenArgConstructorClass {
   int value_;
 };
 
-// Tests using ReturnNew() with a 10-argument constructor.
-TEST(ReturnNewTest, ConstructorThatTakes10Arguments) {
-  Action<TenArgConstructorClass*()> a =
-      ReturnNew<TenArgConstructorClass>(1000000000, 200000000, 30000000,
-                                        4000000, 500000, 60000,
-                                        7000, 800, 90, 0);
-  TenArgConstructorClass* c = a.Perform(std::make_tuple());
-  EXPECT_EQ(1234567890, c->value_);
-  delete c;
-}
-
 // Tests that ACTION_TEMPLATE works when there is no value parameter.
 ACTION_TEMPLATE(CreateNew,
                 HAS_1_TEMPLATE_PARAMS(typename, T),
diff --git a/ceph/src/googletest/googlemock/test/gmock-generated-function-mockers_test.cc b/ceph/src/googletest/googlemock/test/gmock-generated-function-mockers_test.cc
deleted file mode 100644 (file)
index dff3a9f..0000000
+++ /dev/null
@@ -1,659 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file tests the function mocker classes.
-
-#include "gmock/gmock-generated-function-mockers.h"
-
-#if GTEST_OS_WINDOWS
-// MSDN says the header file to be included for STDMETHOD is BaseTyps.h but
-// we are getting compiler errors if we use basetyps.h, hence including
-// objbase.h for definition of STDMETHOD.
-# include <objbase.h>
-#endif  // GTEST_OS_WINDOWS
-
-#include <map>
-#include <string>
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-namespace testing {
-namespace gmock_generated_function_mockers_test {
-
-using testing::_;
-using testing::A;
-using testing::An;
-using testing::AnyNumber;
-using testing::Const;
-using testing::DoDefault;
-using testing::Eq;
-using testing::Lt;
-using testing::MockFunction;
-using testing::Ref;
-using testing::Return;
-using testing::ReturnRef;
-using testing::TypedEq;
-
-template<typename T>
-class TemplatedCopyable {
- public:
-  TemplatedCopyable() {}
-
-  template <typename U>
-  TemplatedCopyable(const U& other) {}  // NOLINT
-};
-
-class FooInterface {
- public:
-  virtual ~FooInterface() {}
-
-  virtual void VoidReturning(int x) = 0;
-
-  virtual int Nullary() = 0;
-  virtual bool Unary(int x) = 0;
-  virtual long Binary(short x, int y) = 0;  // NOLINT
-  virtual int Decimal(bool b, char c, short d, int e, long f,  // NOLINT
-                      float g, double h, unsigned i, char* j,
-                      const std::string& k) = 0;
-
-  virtual bool TakesNonConstReference(int& n) = 0;  // NOLINT
-  virtual std::string TakesConstReference(const int& n) = 0;
-  virtual bool TakesConst(const int x) = 0;
-
-  virtual int OverloadedOnArgumentNumber() = 0;
-  virtual int OverloadedOnArgumentNumber(int n) = 0;
-
-  virtual int OverloadedOnArgumentType(int n) = 0;
-  virtual char OverloadedOnArgumentType(char c) = 0;
-
-  virtual int OverloadedOnConstness() = 0;
-  virtual char OverloadedOnConstness() const = 0;
-
-  virtual int TypeWithHole(int (*func)()) = 0;
-  virtual int TypeWithComma(const std::map<int, std::string>& a_map) = 0;
-  virtual int TypeWithTemplatedCopyCtor(
-      const TemplatedCopyable<int>& a_vector) = 0;
-
-#if GTEST_OS_WINDOWS
-  STDMETHOD_(int, CTNullary)() = 0;
-  STDMETHOD_(bool, CTUnary)(int x) = 0;
-  STDMETHOD_(int, CTDecimal)
-  (bool b, char c, short d, int e, long f,  // NOLINT
-   float g, double h, unsigned i, char* j, const std::string& k) = 0;
-  STDMETHOD_(char, CTConst)(int x) const = 0;
-#endif  // GTEST_OS_WINDOWS
-};
-
-// Const qualifiers on arguments were once (incorrectly) considered
-// significant in determining whether two virtual functions had the same
-// signature. This was fixed in Visual Studio 2008. However, the compiler
-// still emits a warning that alerts about this change in behavior.
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable : 4373)
-#endif
-class MockFoo : public FooInterface {
- public:
-  MockFoo() {}
-
-  // Makes sure that a mock function parameter can be named.
-  MOCK_METHOD1(VoidReturning, void(int n));  // NOLINT
-
-  MOCK_METHOD0(Nullary, int());  // NOLINT
-
-  // Makes sure that a mock function parameter can be unnamed.
-  MOCK_METHOD1(Unary, bool(int));  // NOLINT
-  MOCK_METHOD2(Binary, long(short, int));  // NOLINT
-  MOCK_METHOD10(Decimal, int(bool, char, short, int, long, float,  // NOLINT
-                             double, unsigned, char*, const std::string& str));
-
-  MOCK_METHOD1(TakesNonConstReference, bool(int&));  // NOLINT
-  MOCK_METHOD1(TakesConstReference, std::string(const int&));
-  MOCK_METHOD1(TakesConst, bool(const int));  // NOLINT
-
-  // Tests that the function return type can contain unprotected comma.
-  MOCK_METHOD0(ReturnTypeWithComma, std::map<int, std::string>());
-  MOCK_CONST_METHOD1(ReturnTypeWithComma,
-                     std::map<int, std::string>(int));  // NOLINT
-
-  MOCK_METHOD0(OverloadedOnArgumentNumber, int());  // NOLINT
-  MOCK_METHOD1(OverloadedOnArgumentNumber, int(int));  // NOLINT
-
-  MOCK_METHOD1(OverloadedOnArgumentType, int(int));  // NOLINT
-  MOCK_METHOD1(OverloadedOnArgumentType, char(char));  // NOLINT
-
-  MOCK_METHOD0(OverloadedOnConstness, int());  // NOLINT
-  MOCK_CONST_METHOD0(OverloadedOnConstness, char());  // NOLINT
-
-  MOCK_METHOD1(TypeWithHole, int(int (*)()));  // NOLINT
-  MOCK_METHOD1(TypeWithComma,
-               int(const std::map<int, std::string>&));  // NOLINT
-  MOCK_METHOD1(TypeWithTemplatedCopyCtor,
-               int(const TemplatedCopyable<int>&));  // NOLINT
-
-#if GTEST_OS_WINDOWS
-  MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, CTNullary, int());
-  MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, CTUnary, bool(int));
-  MOCK_METHOD10_WITH_CALLTYPE(STDMETHODCALLTYPE, CTDecimal,
-                              int(bool b, char c, short d, int e, long f,
-                                  float g, double h, unsigned i, char* j,
-                                  const std::string& k));
-  MOCK_CONST_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, CTConst, char(int));
-
-  // Tests that the function return type can contain unprotected comma.
-  MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, CTReturnTypeWithComma,
-                             std::map<int, std::string>());
-#endif  // GTEST_OS_WINDOWS
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
-};
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-class FunctionMockerTest : public testing::Test {
- protected:
-  FunctionMockerTest() : foo_(&mock_foo_) {}
-
-  FooInterface* const foo_;
-  MockFoo mock_foo_;
-};
-
-// Tests mocking a void-returning function.
-TEST_F(FunctionMockerTest, MocksVoidFunction) {
-  EXPECT_CALL(mock_foo_, VoidReturning(Lt(100)));
-  foo_->VoidReturning(0);
-}
-
-// Tests mocking a nullary function.
-TEST_F(FunctionMockerTest, MocksNullaryFunction) {
-  EXPECT_CALL(mock_foo_, Nullary())
-      .WillOnce(DoDefault())
-      .WillOnce(Return(1));
-
-  EXPECT_EQ(0, foo_->Nullary());
-  EXPECT_EQ(1, foo_->Nullary());
-}
-
-// Tests mocking a unary function.
-TEST_F(FunctionMockerTest, MocksUnaryFunction) {
-  EXPECT_CALL(mock_foo_, Unary(Eq(2)))
-      .Times(2)
-      .WillOnce(Return(true));
-
-  EXPECT_TRUE(foo_->Unary(2));
-  EXPECT_FALSE(foo_->Unary(2));
-}
-
-// Tests mocking a binary function.
-TEST_F(FunctionMockerTest, MocksBinaryFunction) {
-  EXPECT_CALL(mock_foo_, Binary(2, _))
-      .WillOnce(Return(3));
-
-  EXPECT_EQ(3, foo_->Binary(2, 1));
-}
-
-// Tests mocking a decimal function.
-TEST_F(FunctionMockerTest, MocksDecimalFunction) {
-  EXPECT_CALL(mock_foo_, Decimal(true, 'a', 0, 0, 1L, A<float>(), Lt(100), 5U,
-                                 nullptr, "hi"))
-      .WillOnce(Return(5));
-
-  EXPECT_EQ(5, foo_->Decimal(true, 'a', 0, 0, 1, 0, 0, 5, nullptr, "hi"));
-}
-
-// Tests mocking a function that takes a non-const reference.
-TEST_F(FunctionMockerTest, MocksFunctionWithNonConstReferenceArgument) {
-  int a = 0;
-  EXPECT_CALL(mock_foo_, TakesNonConstReference(Ref(a)))
-      .WillOnce(Return(true));
-
-  EXPECT_TRUE(foo_->TakesNonConstReference(a));
-}
-
-// Tests mocking a function that takes a const reference.
-TEST_F(FunctionMockerTest, MocksFunctionWithConstReferenceArgument) {
-  int a = 0;
-  EXPECT_CALL(mock_foo_, TakesConstReference(Ref(a)))
-      .WillOnce(Return("Hello"));
-
-  EXPECT_EQ("Hello", foo_->TakesConstReference(a));
-}
-
-// Tests mocking a function that takes a const variable.
-TEST_F(FunctionMockerTest, MocksFunctionWithConstArgument) {
-  EXPECT_CALL(mock_foo_, TakesConst(Lt(10)))
-      .WillOnce(DoDefault());
-
-  EXPECT_FALSE(foo_->TakesConst(5));
-}
-
-// Tests mocking functions overloaded on the number of arguments.
-TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnArgumentNumber) {
-  EXPECT_CALL(mock_foo_, OverloadedOnArgumentNumber())
-      .WillOnce(Return(1));
-  EXPECT_CALL(mock_foo_, OverloadedOnArgumentNumber(_))
-      .WillOnce(Return(2));
-
-  EXPECT_EQ(2, foo_->OverloadedOnArgumentNumber(1));
-  EXPECT_EQ(1, foo_->OverloadedOnArgumentNumber());
-}
-
-// Tests mocking functions overloaded on the types of argument.
-TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnArgumentType) {
-  EXPECT_CALL(mock_foo_, OverloadedOnArgumentType(An<int>()))
-      .WillOnce(Return(1));
-  EXPECT_CALL(mock_foo_, OverloadedOnArgumentType(TypedEq<char>('a')))
-      .WillOnce(Return('b'));
-
-  EXPECT_EQ(1, foo_->OverloadedOnArgumentType(0));
-  EXPECT_EQ('b', foo_->OverloadedOnArgumentType('a'));
-}
-
-// Tests mocking functions overloaded on the const-ness of this object.
-TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnConstnessOfThis) {
-  EXPECT_CALL(mock_foo_, OverloadedOnConstness());
-  EXPECT_CALL(Const(mock_foo_), OverloadedOnConstness())
-      .WillOnce(Return('a'));
-
-  EXPECT_EQ(0, foo_->OverloadedOnConstness());
-  EXPECT_EQ('a', Const(*foo_).OverloadedOnConstness());
-}
-
-TEST_F(FunctionMockerTest, MocksReturnTypeWithComma) {
-  const std::map<int, std::string> a_map;
-  EXPECT_CALL(mock_foo_, ReturnTypeWithComma())
-      .WillOnce(Return(a_map));
-  EXPECT_CALL(mock_foo_, ReturnTypeWithComma(42))
-      .WillOnce(Return(a_map));
-
-  EXPECT_EQ(a_map, mock_foo_.ReturnTypeWithComma());
-  EXPECT_EQ(a_map, mock_foo_.ReturnTypeWithComma(42));
-}
-
-TEST_F(FunctionMockerTest, MocksTypeWithTemplatedCopyCtor) {
-  EXPECT_CALL(mock_foo_, TypeWithTemplatedCopyCtor(_)).WillOnce(Return(true));
-  EXPECT_TRUE(foo_->TypeWithTemplatedCopyCtor(TemplatedCopyable<int>()));
-}
-
-#if GTEST_OS_WINDOWS
-// Tests mocking a nullary function with calltype.
-TEST_F(FunctionMockerTest, MocksNullaryFunctionWithCallType) {
-  EXPECT_CALL(mock_foo_, CTNullary())
-      .WillOnce(Return(-1))
-      .WillOnce(Return(0));
-
-  EXPECT_EQ(-1, foo_->CTNullary());
-  EXPECT_EQ(0, foo_->CTNullary());
-}
-
-// Tests mocking a unary function with calltype.
-TEST_F(FunctionMockerTest, MocksUnaryFunctionWithCallType) {
-  EXPECT_CALL(mock_foo_, CTUnary(Eq(2)))
-      .Times(2)
-      .WillOnce(Return(true))
-      .WillOnce(Return(false));
-
-  EXPECT_TRUE(foo_->CTUnary(2));
-  EXPECT_FALSE(foo_->CTUnary(2));
-}
-
-// Tests mocking a decimal function with calltype.
-TEST_F(FunctionMockerTest, MocksDecimalFunctionWithCallType) {
-  EXPECT_CALL(mock_foo_, CTDecimal(true, 'a', 0, 0, 1L, A<float>(), Lt(100), 5U,
-                                   nullptr, "hi"))
-      .WillOnce(Return(10));
-
-  EXPECT_EQ(10, foo_->CTDecimal(true, 'a', 0, 0, 1, 0, 0, 5, nullptr, "hi"));
-}
-
-// Tests mocking functions overloaded on the const-ness of this object.
-TEST_F(FunctionMockerTest, MocksFunctionsConstFunctionWithCallType) {
-  EXPECT_CALL(Const(mock_foo_), CTConst(_))
-      .WillOnce(Return('a'));
-
-  EXPECT_EQ('a', Const(*foo_).CTConst(0));
-}
-
-TEST_F(FunctionMockerTest, MocksReturnTypeWithCommaAndCallType) {
-  const std::map<int, std::string> a_map;
-  EXPECT_CALL(mock_foo_, CTReturnTypeWithComma())
-      .WillOnce(Return(a_map));
-
-  EXPECT_EQ(a_map, mock_foo_.CTReturnTypeWithComma());
-}
-
-#endif  // GTEST_OS_WINDOWS
-
-class MockB {
- public:
-  MockB() {}
-
-  MOCK_METHOD0(DoB, void());
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockB);
-};
-
-// Tests that functions with no EXPECT_CALL() ruls can be called any
-// number of times.
-TEST(ExpectCallTest, UnmentionedFunctionCanBeCalledAnyNumberOfTimes) {
-  {
-    MockB b;
-  }
-
-  {
-    MockB b;
-    b.DoB();
-  }
-
-  {
-    MockB b;
-    b.DoB();
-    b.DoB();
-  }
-}
-
-// Tests mocking template interfaces.
-
-template <typename T>
-class StackInterface {
- public:
-  virtual ~StackInterface() {}
-
-  // Template parameter appears in function parameter.
-  virtual void Push(const T& value) = 0;
-  virtual void Pop() = 0;
-  virtual int GetSize() const = 0;
-  // Template parameter appears in function return type.
-  virtual const T& GetTop() const = 0;
-};
-
-template <typename T>
-class MockStack : public StackInterface<T> {
- public:
-  MockStack() {}
-
-  MOCK_METHOD1_T(Push, void(const T& elem));
-  MOCK_METHOD0_T(Pop, void());
-  MOCK_CONST_METHOD0_T(GetSize, int());  // NOLINT
-  MOCK_CONST_METHOD0_T(GetTop, const T&());
-
-  // Tests that the function return type can contain unprotected comma.
-  MOCK_METHOD0_T(ReturnTypeWithComma, std::map<int, int>());
-  MOCK_CONST_METHOD1_T(ReturnTypeWithComma, std::map<int, int>(int));  // NOLINT
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockStack);
-};
-
-// Tests that template mock works.
-TEST(TemplateMockTest, Works) {
-  MockStack<int> mock;
-
-  EXPECT_CALL(mock, GetSize())
-      .WillOnce(Return(0))
-      .WillOnce(Return(1))
-      .WillOnce(Return(0));
-  EXPECT_CALL(mock, Push(_));
-  int n = 5;
-  EXPECT_CALL(mock, GetTop())
-      .WillOnce(ReturnRef(n));
-  EXPECT_CALL(mock, Pop())
-      .Times(AnyNumber());
-
-  EXPECT_EQ(0, mock.GetSize());
-  mock.Push(5);
-  EXPECT_EQ(1, mock.GetSize());
-  EXPECT_EQ(5, mock.GetTop());
-  mock.Pop();
-  EXPECT_EQ(0, mock.GetSize());
-}
-
-TEST(TemplateMockTest, MethodWithCommaInReturnTypeWorks) {
-  MockStack<int> mock;
-
-  const std::map<int, int> a_map;
-  EXPECT_CALL(mock, ReturnTypeWithComma())
-      .WillOnce(Return(a_map));
-  EXPECT_CALL(mock, ReturnTypeWithComma(1))
-      .WillOnce(Return(a_map));
-
-  EXPECT_EQ(a_map, mock.ReturnTypeWithComma());
-  EXPECT_EQ(a_map, mock.ReturnTypeWithComma(1));
-}
-
-#if GTEST_OS_WINDOWS
-// Tests mocking template interfaces with calltype.
-
-template <typename T>
-class StackInterfaceWithCallType {
- public:
-  virtual ~StackInterfaceWithCallType() {}
-
-  // Template parameter appears in function parameter.
-  STDMETHOD_(void, Push)(const T& value) = 0;
-  STDMETHOD_(void, Pop)() = 0;
-  STDMETHOD_(int, GetSize)() const = 0;
-  // Template parameter appears in function return type.
-  STDMETHOD_(const T&, GetTop)() const = 0;
-};
-
-template <typename T>
-class MockStackWithCallType : public StackInterfaceWithCallType<T> {
- public:
-  MockStackWithCallType() {}
-
-  MOCK_METHOD1_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Push, void(const T& elem));
-  MOCK_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Pop, void());
-  MOCK_CONST_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, GetSize, int());
-  MOCK_CONST_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, GetTop, const T&());
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockStackWithCallType);
-};
-
-// Tests that template mock with calltype works.
-TEST(TemplateMockTestWithCallType, Works) {
-  MockStackWithCallType<int> mock;
-
-  EXPECT_CALL(mock, GetSize())
-      .WillOnce(Return(0))
-      .WillOnce(Return(1))
-      .WillOnce(Return(0));
-  EXPECT_CALL(mock, Push(_));
-  int n = 5;
-  EXPECT_CALL(mock, GetTop())
-      .WillOnce(ReturnRef(n));
-  EXPECT_CALL(mock, Pop())
-      .Times(AnyNumber());
-
-  EXPECT_EQ(0, mock.GetSize());
-  mock.Push(5);
-  EXPECT_EQ(1, mock.GetSize());
-  EXPECT_EQ(5, mock.GetTop());
-  mock.Pop();
-  EXPECT_EQ(0, mock.GetSize());
-}
-#endif  // GTEST_OS_WINDOWS
-
-#define MY_MOCK_METHODS1_ \
-    MOCK_METHOD0(Overloaded, void()); \
-    MOCK_CONST_METHOD1(Overloaded, int(int n)); \
-    MOCK_METHOD2(Overloaded, bool(bool f, int n))
-
-class MockOverloadedOnArgNumber {
- public:
-  MockOverloadedOnArgNumber() {}
-
-  MY_MOCK_METHODS1_;
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockOverloadedOnArgNumber);
-};
-
-TEST(OverloadedMockMethodTest, CanOverloadOnArgNumberInMacroBody) {
-  MockOverloadedOnArgNumber mock;
-  EXPECT_CALL(mock, Overloaded());
-  EXPECT_CALL(mock, Overloaded(1)).WillOnce(Return(2));
-  EXPECT_CALL(mock, Overloaded(true, 1)).WillOnce(Return(true));
-
-  mock.Overloaded();
-  EXPECT_EQ(2, mock.Overloaded(1));
-  EXPECT_TRUE(mock.Overloaded(true, 1));
-}
-
-#define MY_MOCK_METHODS2_ \
-    MOCK_CONST_METHOD1(Overloaded, int(int n)); \
-    MOCK_METHOD1(Overloaded, int(int n))
-
-class MockOverloadedOnConstness {
- public:
-  MockOverloadedOnConstness() {}
-
-  MY_MOCK_METHODS2_;
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockOverloadedOnConstness);
-};
-
-TEST(OverloadedMockMethodTest, CanOverloadOnConstnessInMacroBody) {
-  MockOverloadedOnConstness mock;
-  const MockOverloadedOnConstness* const_mock = &mock;
-  EXPECT_CALL(mock, Overloaded(1)).WillOnce(Return(2));
-  EXPECT_CALL(*const_mock, Overloaded(1)).WillOnce(Return(3));
-
-  EXPECT_EQ(2, mock.Overloaded(1));
-  EXPECT_EQ(3, const_mock->Overloaded(1));
-}
-
-TEST(MockFunctionTest, WorksForVoidNullary) {
-  MockFunction<void()> foo;
-  EXPECT_CALL(foo, Call());
-  foo.Call();
-}
-
-TEST(MockFunctionTest, WorksForNonVoidNullary) {
-  MockFunction<int()> foo;
-  EXPECT_CALL(foo, Call())
-      .WillOnce(Return(1))
-      .WillOnce(Return(2));
-  EXPECT_EQ(1, foo.Call());
-  EXPECT_EQ(2, foo.Call());
-}
-
-TEST(MockFunctionTest, WorksForVoidUnary) {
-  MockFunction<void(int)> foo;
-  EXPECT_CALL(foo, Call(1));
-  foo.Call(1);
-}
-
-TEST(MockFunctionTest, WorksForNonVoidBinary) {
-  MockFunction<int(bool, int)> foo;
-  EXPECT_CALL(foo, Call(false, 42))
-      .WillOnce(Return(1))
-      .WillOnce(Return(2));
-  EXPECT_CALL(foo, Call(true, Ge(100)))
-      .WillOnce(Return(3));
-  EXPECT_EQ(1, foo.Call(false, 42));
-  EXPECT_EQ(2, foo.Call(false, 42));
-  EXPECT_EQ(3, foo.Call(true, 120));
-}
-
-TEST(MockFunctionTest, WorksFor10Arguments) {
-  MockFunction<int(bool a0, char a1, int a2, int a3, int a4,
-                   int a5, int a6, char a7, int a8, bool a9)> foo;
-  EXPECT_CALL(foo, Call(_, 'a', _, _, _, _, _, _, _, _))
-      .WillOnce(Return(1))
-      .WillOnce(Return(2));
-  EXPECT_EQ(1, foo.Call(false, 'a', 0, 0, 0, 0, 0, 'b', 0, true));
-  EXPECT_EQ(2, foo.Call(true, 'a', 0, 0, 0, 0, 0, 'b', 1, false));
-}
-
-TEST(MockFunctionTest, AsStdFunction) {
-  MockFunction<int(int)> foo;
-  auto call = [](const std::function<int(int)> &f, int i) {
-    return f(i);
-  };
-  EXPECT_CALL(foo, Call(1)).WillOnce(Return(-1));
-  EXPECT_CALL(foo, Call(2)).WillOnce(Return(-2));
-  EXPECT_EQ(-1, call(foo.AsStdFunction(), 1));
-  EXPECT_EQ(-2, call(foo.AsStdFunction(), 2));
-}
-
-TEST(MockFunctionTest, AsStdFunctionReturnsReference) {
-  MockFunction<int&()> foo;
-  int value = 1;
-  EXPECT_CALL(foo, Call()).WillOnce(ReturnRef(value));
-  int& ref = foo.AsStdFunction()();
-  EXPECT_EQ(1, ref);
-  value = 2;
-  EXPECT_EQ(2, ref);
-}
-
-TEST(MockFunctionTest, AsStdFunctionWithReferenceParameter) {
-  MockFunction<int(int &)> foo;
-  auto call = [](const std::function<int(int& )> &f, int &i) {
-    return f(i);
-  };
-  int i = 42;
-  EXPECT_CALL(foo, Call(i)).WillOnce(Return(-1));
-  EXPECT_EQ(-1, call(foo.AsStdFunction(), i));
-}
-
-
-struct MockMethodSizes0 {
-  MOCK_METHOD0(func, void());
-};
-struct MockMethodSizes1 {
-  MOCK_METHOD1(func, void(int));
-};
-struct MockMethodSizes2 {
-  MOCK_METHOD2(func, void(int, int));
-};
-struct MockMethodSizes3 {
-  MOCK_METHOD3(func, void(int, int, int));
-};
-struct MockMethodSizes4 {
-  MOCK_METHOD4(func, void(int, int, int, int));
-};
-
-TEST(MockFunctionTest, MockMethodSizeOverhead) {
-  EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes1));
-  EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes2));
-  EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes3));
-  EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes4));
-}
-
-}  // namespace gmock_generated_function_mockers_test
-}  // namespace testing
diff --git a/ceph/src/googletest/googlemock/test/gmock-generated-matchers_test.cc b/ceph/src/googletest/googlemock/test/gmock-generated-matchers_test.cc
deleted file mode 100644 (file)
index 6783f8f..0000000
+++ /dev/null
@@ -1,1314 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file tests the built-in matchers generated by a script.
-
-// Silence warning C4244: 'initializing': conversion from 'int' to 'short',
-// possible loss of data and C4100, unreferenced local parameter
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4244)
-# pragma warning(disable:4100)
-#endif
-
-#include "gmock/gmock-generated-matchers.h"
-
-#include <array>
-#include <iterator>
-#include <list>
-#include <map>
-#include <memory>
-#include <set>
-#include <sstream>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "gmock/gmock.h"
-#include "gtest/gtest-spi.h"
-#include "gtest/gtest.h"
-
-namespace {
-
-using std::list;
-using std::map;
-using std::pair;
-using std::set;
-using std::stringstream;
-using std::vector;
-using testing::_;
-using testing::AllOf;
-using testing::AllOfArray;
-using testing::AnyOf;
-using testing::AnyOfArray;
-using testing::Args;
-using testing::Contains;
-using testing::ElementsAre;
-using testing::ElementsAreArray;
-using testing::Eq;
-using testing::Ge;
-using testing::Gt;
-using testing::Le;
-using testing::Lt;
-using testing::MakeMatcher;
-using testing::Matcher;
-using testing::MatcherInterface;
-using testing::MatchResultListener;
-using testing::Ne;
-using testing::Not;
-using testing::Pointee;
-using testing::PrintToString;
-using testing::Ref;
-using testing::StaticAssertTypeEq;
-using testing::StrEq;
-using testing::Value;
-using testing::internal::ElementsAreArrayMatcher;
-
-// Returns the description of the given matcher.
-template <typename T>
-std::string Describe(const Matcher<T>& m) {
-  stringstream ss;
-  m.DescribeTo(&ss);
-  return ss.str();
-}
-
-// Returns the description of the negation of the given matcher.
-template <typename T>
-std::string DescribeNegation(const Matcher<T>& m) {
-  stringstream ss;
-  m.DescribeNegationTo(&ss);
-  return ss.str();
-}
-
-// Returns the reason why x matches, or doesn't match, m.
-template <typename MatcherType, typename Value>
-std::string Explain(const MatcherType& m, const Value& x) {
-  stringstream ss;
-  m.ExplainMatchResultTo(x, &ss);
-  return ss.str();
-}
-
-// For testing ExplainMatchResultTo().
-class GreaterThanMatcher : public MatcherInterface<int> {
- public:
-  explicit GreaterThanMatcher(int rhs) : rhs_(rhs) {}
-
-  void DescribeTo(::std::ostream* os) const override {
-    *os << "is greater than " << rhs_;
-  }
-
-  bool MatchAndExplain(int lhs, MatchResultListener* listener) const override {
-    const int diff = lhs - rhs_;
-    if (diff > 0) {
-      *listener << "which is " << diff << " more than " << rhs_;
-    } else if (diff == 0) {
-      *listener << "which is the same as " << rhs_;
-    } else {
-      *listener << "which is " << -diff << " less than " << rhs_;
-    }
-
-    return lhs > rhs_;
-  }
-
- private:
-  int rhs_;
-};
-
-Matcher<int> GreaterThan(int n) {
-  return MakeMatcher(new GreaterThanMatcher(n));
-}
-
-// Tests for ElementsAre().
-
-TEST(ElementsAreTest, CanDescribeExpectingNoElement) {
-  Matcher<const vector<int>&> m = ElementsAre();
-  EXPECT_EQ("is empty", Describe(m));
-}
-
-TEST(ElementsAreTest, CanDescribeExpectingOneElement) {
-  Matcher<vector<int> > m = ElementsAre(Gt(5));
-  EXPECT_EQ("has 1 element that is > 5", Describe(m));
-}
-
-TEST(ElementsAreTest, CanDescribeExpectingManyElements) {
-  Matcher<list<std::string> > m = ElementsAre(StrEq("one"), "two");
-  EXPECT_EQ("has 2 elements where\n"
-            "element #0 is equal to \"one\",\n"
-            "element #1 is equal to \"two\"", Describe(m));
-}
-
-TEST(ElementsAreTest, CanDescribeNegationOfExpectingNoElement) {
-  Matcher<vector<int> > m = ElementsAre();
-  EXPECT_EQ("isn't empty", DescribeNegation(m));
-}
-
-TEST(ElementsAreTest, CanDescribeNegationOfExpectingOneElment) {
-  Matcher<const list<int>& > m = ElementsAre(Gt(5));
-  EXPECT_EQ("doesn't have 1 element, or\n"
-            "element #0 isn't > 5", DescribeNegation(m));
-}
-
-TEST(ElementsAreTest, CanDescribeNegationOfExpectingManyElements) {
-  Matcher<const list<std::string>&> m = ElementsAre("one", "two");
-  EXPECT_EQ("doesn't have 2 elements, or\n"
-            "element #0 isn't equal to \"one\", or\n"
-            "element #1 isn't equal to \"two\"", DescribeNegation(m));
-}
-
-TEST(ElementsAreTest, DoesNotExplainTrivialMatch) {
-  Matcher<const list<int>& > m = ElementsAre(1, Ne(2));
-
-  list<int> test_list;
-  test_list.push_back(1);
-  test_list.push_back(3);
-  EXPECT_EQ("", Explain(m, test_list));  // No need to explain anything.
-}
-
-TEST(ElementsAreTest, ExplainsNonTrivialMatch) {
-  Matcher<const vector<int>& > m =
-      ElementsAre(GreaterThan(1), 0, GreaterThan(2));
-
-  const int a[] = { 10, 0, 100 };
-  vector<int> test_vector(std::begin(a), std::end(a));
-  EXPECT_EQ("whose element #0 matches, which is 9 more than 1,\n"
-            "and whose element #2 matches, which is 98 more than 2",
-            Explain(m, test_vector));
-}
-
-TEST(ElementsAreTest, CanExplainMismatchWrongSize) {
-  Matcher<const list<int>& > m = ElementsAre(1, 3);
-
-  list<int> test_list;
-  // No need to explain when the container is empty.
-  EXPECT_EQ("", Explain(m, test_list));
-
-  test_list.push_back(1);
-  EXPECT_EQ("which has 1 element", Explain(m, test_list));
-}
-
-TEST(ElementsAreTest, CanExplainMismatchRightSize) {
-  Matcher<const vector<int>& > m = ElementsAre(1, GreaterThan(5));
-
-  vector<int> v;
-  v.push_back(2);
-  v.push_back(1);
-  EXPECT_EQ("whose element #0 doesn't match", Explain(m, v));
-
-  v[0] = 1;
-  EXPECT_EQ("whose element #1 doesn't match, which is 4 less than 5",
-            Explain(m, v));
-}
-
-TEST(ElementsAreTest, MatchesOneElementVector) {
-  vector<std::string> test_vector;
-  test_vector.push_back("test string");
-
-  EXPECT_THAT(test_vector, ElementsAre(StrEq("test string")));
-}
-
-TEST(ElementsAreTest, MatchesOneElementList) {
-  list<std::string> test_list;
-  test_list.push_back("test string");
-
-  EXPECT_THAT(test_list, ElementsAre("test string"));
-}
-
-TEST(ElementsAreTest, MatchesThreeElementVector) {
-  vector<std::string> test_vector;
-  test_vector.push_back("one");
-  test_vector.push_back("two");
-  test_vector.push_back("three");
-
-  EXPECT_THAT(test_vector, ElementsAre("one", StrEq("two"), _));
-}
-
-TEST(ElementsAreTest, MatchesOneElementEqMatcher) {
-  vector<int> test_vector;
-  test_vector.push_back(4);
-
-  EXPECT_THAT(test_vector, ElementsAre(Eq(4)));
-}
-
-TEST(ElementsAreTest, MatchesOneElementAnyMatcher) {
-  vector<int> test_vector;
-  test_vector.push_back(4);
-
-  EXPECT_THAT(test_vector, ElementsAre(_));
-}
-
-TEST(ElementsAreTest, MatchesOneElementValue) {
-  vector<int> test_vector;
-  test_vector.push_back(4);
-
-  EXPECT_THAT(test_vector, ElementsAre(4));
-}
-
-TEST(ElementsAreTest, MatchesThreeElementsMixedMatchers) {
-  vector<int> test_vector;
-  test_vector.push_back(1);
-  test_vector.push_back(2);
-  test_vector.push_back(3);
-
-  EXPECT_THAT(test_vector, ElementsAre(1, Eq(2), _));
-}
-
-TEST(ElementsAreTest, MatchesTenElementVector) {
-  const int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
-  vector<int> test_vector(std::begin(a), std::end(a));
-
-  EXPECT_THAT(test_vector,
-              // The element list can contain values and/or matchers
-              // of different types.
-              ElementsAre(0, Ge(0), _, 3, 4, Ne(2), Eq(6), 7, 8, _));
-}
-
-TEST(ElementsAreTest, DoesNotMatchWrongSize) {
-  vector<std::string> test_vector;
-  test_vector.push_back("test string");
-  test_vector.push_back("test string");
-
-  Matcher<vector<std::string> > m = ElementsAre(StrEq("test string"));
-  EXPECT_FALSE(m.Matches(test_vector));
-}
-
-TEST(ElementsAreTest, DoesNotMatchWrongValue) {
-  vector<std::string> test_vector;
-  test_vector.push_back("other string");
-
-  Matcher<vector<std::string> > m = ElementsAre(StrEq("test string"));
-  EXPECT_FALSE(m.Matches(test_vector));
-}
-
-TEST(ElementsAreTest, DoesNotMatchWrongOrder) {
-  vector<std::string> test_vector;
-  test_vector.push_back("one");
-  test_vector.push_back("three");
-  test_vector.push_back("two");
-
-  Matcher<vector<std::string> > m =
-      ElementsAre(StrEq("one"), StrEq("two"), StrEq("three"));
-  EXPECT_FALSE(m.Matches(test_vector));
-}
-
-TEST(ElementsAreTest, WorksForNestedContainer) {
-  constexpr std::array<const char*, 2> strings = {{"Hi", "world"}};
-
-  vector<list<char> > nested;
-  for (size_t i = 0; i < strings.size(); i++) {
-    nested.push_back(list<char>(strings[i], strings[i] + strlen(strings[i])));
-  }
-
-  EXPECT_THAT(nested, ElementsAre(ElementsAre('H', Ne('e')),
-                                  ElementsAre('w', 'o', _, _, 'd')));
-  EXPECT_THAT(nested, Not(ElementsAre(ElementsAre('H', 'e'),
-                                      ElementsAre('w', 'o', _, _, 'd'))));
-}
-
-TEST(ElementsAreTest, WorksWithByRefElementMatchers) {
-  int a[] = { 0, 1, 2 };
-  vector<int> v(std::begin(a), std::end(a));
-
-  EXPECT_THAT(v, ElementsAre(Ref(v[0]), Ref(v[1]), Ref(v[2])));
-  EXPECT_THAT(v, Not(ElementsAre(Ref(v[0]), Ref(v[1]), Ref(a[2]))));
-}
-
-TEST(ElementsAreTest, WorksWithContainerPointerUsingPointee) {
-  int a[] = { 0, 1, 2 };
-  vector<int> v(std::begin(a), std::end(a));
-
-  EXPECT_THAT(&v, Pointee(ElementsAre(0, 1, _)));
-  EXPECT_THAT(&v, Not(Pointee(ElementsAre(0, _, 3))));
-}
-
-TEST(ElementsAreTest, WorksWithNativeArrayPassedByReference) {
-  int array[] = { 0, 1, 2 };
-  EXPECT_THAT(array, ElementsAre(0, 1, _));
-  EXPECT_THAT(array, Not(ElementsAre(1, _, _)));
-  EXPECT_THAT(array, Not(ElementsAre(0, _)));
-}
-
-class NativeArrayPassedAsPointerAndSize {
- public:
-  NativeArrayPassedAsPointerAndSize() {}
-
-  MOCK_METHOD2(Helper, void(int* array, int size));
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(NativeArrayPassedAsPointerAndSize);
-};
-
-TEST(ElementsAreTest, WorksWithNativeArrayPassedAsPointerAndSize) {
-  int array[] = { 0, 1 };
-  ::std::tuple<int*, size_t> array_as_tuple(array, 2);
-  EXPECT_THAT(array_as_tuple, ElementsAre(0, 1));
-  EXPECT_THAT(array_as_tuple, Not(ElementsAre(0)));
-
-  NativeArrayPassedAsPointerAndSize helper;
-  EXPECT_CALL(helper, Helper(_, _))
-      .With(ElementsAre(0, 1));
-  helper.Helper(array, 2);
-}
-
-TEST(ElementsAreTest, WorksWithTwoDimensionalNativeArray) {
-  const char a2[][3] = { "hi", "lo" };
-  EXPECT_THAT(a2, ElementsAre(ElementsAre('h', 'i', '\0'),
-                              ElementsAre('l', 'o', '\0')));
-  EXPECT_THAT(a2, ElementsAre(StrEq("hi"), StrEq("lo")));
-  EXPECT_THAT(a2, ElementsAre(Not(ElementsAre('h', 'o', '\0')),
-                              ElementsAre('l', 'o', '\0')));
-}
-
-TEST(ElementsAreTest, AcceptsStringLiteral) {
-  std::string array[] = {"hi", "one", "two"};
-  EXPECT_THAT(array, ElementsAre("hi", "one", "two"));
-  EXPECT_THAT(array, Not(ElementsAre("hi", "one", "too")));
-}
-
-// Declared here with the size unknown.  Defined AFTER the following test.
-extern const char kHi[];
-
-TEST(ElementsAreTest, AcceptsArrayWithUnknownSize) {
-  // The size of kHi is not known in this test, but ElementsAre() should
-  // still accept it.
-
-  std::string array1[] = {"hi"};
-  EXPECT_THAT(array1, ElementsAre(kHi));
-
-  std::string array2[] = {"ho"};
-  EXPECT_THAT(array2, Not(ElementsAre(kHi)));
-}
-
-const char kHi[] = "hi";
-
-TEST(ElementsAreTest, MakesCopyOfArguments) {
-  int x = 1;
-  int y = 2;
-  // This should make a copy of x and y.
-  ::testing::internal::ElementsAreMatcher<std::tuple<int, int> >
-      polymorphic_matcher = ElementsAre(x, y);
-  // Changing x and y now shouldn't affect the meaning of the above matcher.
-  x = y = 0;
-  const int array1[] = { 1, 2 };
-  EXPECT_THAT(array1, polymorphic_matcher);
-  const int array2[] = { 0, 0 };
-  EXPECT_THAT(array2, Not(polymorphic_matcher));
-}
-
-
-// Tests for ElementsAreArray().  Since ElementsAreArray() shares most
-// of the implementation with ElementsAre(), we don't test it as
-// thoroughly here.
-
-TEST(ElementsAreArrayTest, CanBeCreatedWithValueArray) {
-  const int a[] = { 1, 2, 3 };
-
-  vector<int> test_vector(std::begin(a), std::end(a));
-  EXPECT_THAT(test_vector, ElementsAreArray(a));
-
-  test_vector[2] = 0;
-  EXPECT_THAT(test_vector, Not(ElementsAreArray(a)));
-}
-
-TEST(ElementsAreArrayTest, CanBeCreatedWithArraySize) {
-  std::array<const char*, 3> a = {{"one", "two", "three"}};
-
-  vector<std::string> test_vector(std::begin(a), std::end(a));
-  EXPECT_THAT(test_vector, ElementsAreArray(a.data(), a.size()));
-
-  const char** p = a.data();
-  test_vector[0] = "1";
-  EXPECT_THAT(test_vector, Not(ElementsAreArray(p, a.size())));
-}
-
-TEST(ElementsAreArrayTest, CanBeCreatedWithoutArraySize) {
-  const char* a[] = { "one", "two", "three" };
-
-  vector<std::string> test_vector(std::begin(a), std::end(a));
-  EXPECT_THAT(test_vector, ElementsAreArray(a));
-
-  test_vector[0] = "1";
-  EXPECT_THAT(test_vector, Not(ElementsAreArray(a)));
-}
-
-TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherArray) {
-  const Matcher<std::string> kMatcherArray[] = {StrEq("one"), StrEq("two"),
-                                                StrEq("three")};
-
-  vector<std::string> test_vector;
-  test_vector.push_back("one");
-  test_vector.push_back("two");
-  test_vector.push_back("three");
-  EXPECT_THAT(test_vector, ElementsAreArray(kMatcherArray));
-
-  test_vector.push_back("three");
-  EXPECT_THAT(test_vector, Not(ElementsAreArray(kMatcherArray)));
-}
-
-TEST(ElementsAreArrayTest, CanBeCreatedWithVector) {
-  const int a[] = { 1, 2, 3 };
-  vector<int> test_vector(std::begin(a), std::end(a));
-  const vector<int> expected(std::begin(a), std::end(a));
-  EXPECT_THAT(test_vector, ElementsAreArray(expected));
-  test_vector.push_back(4);
-  EXPECT_THAT(test_vector, Not(ElementsAreArray(expected)));
-}
-
-
-TEST(ElementsAreArrayTest, TakesInitializerList) {
-  const int a[5] = { 1, 2, 3, 4, 5 };
-  EXPECT_THAT(a, ElementsAreArray({ 1, 2, 3, 4, 5 }));
-  EXPECT_THAT(a, Not(ElementsAreArray({ 1, 2, 3, 5, 4 })));
-  EXPECT_THAT(a, Not(ElementsAreArray({ 1, 2, 3, 4, 6 })));
-}
-
-TEST(ElementsAreArrayTest, TakesInitializerListOfCStrings) {
-  const std::string a[5] = {"a", "b", "c", "d", "e"};
-  EXPECT_THAT(a, ElementsAreArray({ "a", "b", "c", "d", "e" }));
-  EXPECT_THAT(a, Not(ElementsAreArray({ "a", "b", "c", "e", "d" })));
-  EXPECT_THAT(a, Not(ElementsAreArray({ "a", "b", "c", "d", "ef" })));
-}
-
-TEST(ElementsAreArrayTest, TakesInitializerListOfSameTypedMatchers) {
-  const int a[5] = { 1, 2, 3, 4, 5 };
-  EXPECT_THAT(a, ElementsAreArray(
-      { Eq(1), Eq(2), Eq(3), Eq(4), Eq(5) }));
-  EXPECT_THAT(a, Not(ElementsAreArray(
-      { Eq(1), Eq(2), Eq(3), Eq(4), Eq(6) })));
-}
-
-TEST(ElementsAreArrayTest,
-     TakesInitializerListOfDifferentTypedMatchers) {
-  const int a[5] = { 1, 2, 3, 4, 5 };
-  // The compiler cannot infer the type of the initializer list if its
-  // elements have different types.  We must explicitly specify the
-  // unified element type in this case.
-  EXPECT_THAT(a, ElementsAreArray<Matcher<int> >(
-      { Eq(1), Ne(-2), Ge(3), Le(4), Eq(5) }));
-  EXPECT_THAT(a, Not(ElementsAreArray<Matcher<int> >(
-      { Eq(1), Ne(-2), Ge(3), Le(4), Eq(6) })));
-}
-
-
-TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherVector) {
-  const int a[] = { 1, 2, 3 };
-  const Matcher<int> kMatchers[] = { Eq(1), Eq(2), Eq(3) };
-  vector<int> test_vector(std::begin(a), std::end(a));
-  const vector<Matcher<int>> expected(std::begin(kMatchers),
-                                      std::end(kMatchers));
-  EXPECT_THAT(test_vector, ElementsAreArray(expected));
-  test_vector.push_back(4);
-  EXPECT_THAT(test_vector, Not(ElementsAreArray(expected)));
-}
-
-TEST(ElementsAreArrayTest, CanBeCreatedWithIteratorRange) {
-  const int a[] = { 1, 2, 3 };
-  const vector<int> test_vector(std::begin(a), std::end(a));
-  const vector<int> expected(std::begin(a), std::end(a));
-  EXPECT_THAT(test_vector, ElementsAreArray(expected.begin(), expected.end()));
-  // Pointers are iterators, too.
-  EXPECT_THAT(test_vector, ElementsAreArray(std::begin(a), std::end(a)));
-  // The empty range of NULL pointers should also be okay.
-  int* const null_int = nullptr;
-  EXPECT_THAT(test_vector, Not(ElementsAreArray(null_int, null_int)));
-  EXPECT_THAT((vector<int>()), ElementsAreArray(null_int, null_int));
-}
-
-// Since ElementsAre() and ElementsAreArray() share much of the
-// implementation, we only do a sanity test for native arrays here.
-TEST(ElementsAreArrayTest, WorksWithNativeArray) {
-  ::std::string a[] = { "hi", "ho" };
-  ::std::string b[] = { "hi", "ho" };
-
-  EXPECT_THAT(a, ElementsAreArray(b));
-  EXPECT_THAT(a, ElementsAreArray(b, 2));
-  EXPECT_THAT(a, Not(ElementsAreArray(b, 1)));
-}
-
-TEST(ElementsAreArrayTest, SourceLifeSpan) {
-  const int a[] = { 1, 2, 3 };
-  vector<int> test_vector(std::begin(a), std::end(a));
-  vector<int> expect(std::begin(a), std::end(a));
-  ElementsAreArrayMatcher<int> matcher_maker =
-      ElementsAreArray(expect.begin(), expect.end());
-  EXPECT_THAT(test_vector, matcher_maker);
-  // Changing in place the values that initialized matcher_maker should not
-  // affect matcher_maker anymore. It should have made its own copy of them.
-  typedef vector<int>::iterator Iter;
-  for (Iter it = expect.begin(); it != expect.end(); ++it) { *it += 10; }
-  EXPECT_THAT(test_vector, matcher_maker);
-  test_vector.push_back(3);
-  EXPECT_THAT(test_vector, Not(matcher_maker));
-}
-
-// Tests for the MATCHER*() macro family.
-
-// Tests that a simple MATCHER() definition works.
-
-MATCHER(IsEven, "") { return (arg % 2) == 0; }
-
-TEST(MatcherMacroTest, Works) {
-  const Matcher<int> m = IsEven();
-  EXPECT_TRUE(m.Matches(6));
-  EXPECT_FALSE(m.Matches(7));
-
-  EXPECT_EQ("is even", Describe(m));
-  EXPECT_EQ("not (is even)", DescribeNegation(m));
-  EXPECT_EQ("", Explain(m, 6));
-  EXPECT_EQ("", Explain(m, 7));
-}
-
-// This also tests that the description string can reference 'negation'.
-MATCHER(IsEven2, negation ? "is odd" : "is even") {
-  if ((arg % 2) == 0) {
-    // Verifies that we can stream to result_listener, a listener
-    // supplied by the MATCHER macro implicitly.
-    *result_listener << "OK";
-    return true;
-  } else {
-    *result_listener << "% 2 == " << (arg % 2);
-    return false;
-  }
-}
-
-// This also tests that the description string can reference matcher
-// parameters.
-MATCHER_P2(EqSumOf, x, y, std::string(negation ? "doesn't equal" : "equals") +
-                              " the sum of " + PrintToString(x) + " and " +
-                              PrintToString(y)) {
-  if (arg == (x + y)) {
-    *result_listener << "OK";
-    return true;
-  } else {
-    // Verifies that we can stream to the underlying stream of
-    // result_listener.
-    if (result_listener->stream() != nullptr) {
-      *result_listener->stream() << "diff == " << (x + y - arg);
-    }
-    return false;
-  }
-}
-
-// Tests that the matcher description can reference 'negation' and the
-// matcher parameters.
-TEST(MatcherMacroTest, DescriptionCanReferenceNegationAndParameters) {
-  const Matcher<int> m1 = IsEven2();
-  EXPECT_EQ("is even", Describe(m1));
-  EXPECT_EQ("is odd", DescribeNegation(m1));
-
-  const Matcher<int> m2 = EqSumOf(5, 9);
-  EXPECT_EQ("equals the sum of 5 and 9", Describe(m2));
-  EXPECT_EQ("doesn't equal the sum of 5 and 9", DescribeNegation(m2));
-}
-
-// Tests explaining match result in a MATCHER* macro.
-TEST(MatcherMacroTest, CanExplainMatchResult) {
-  const Matcher<int> m1 = IsEven2();
-  EXPECT_EQ("OK", Explain(m1, 4));
-  EXPECT_EQ("% 2 == 1", Explain(m1, 5));
-
-  const Matcher<int> m2 = EqSumOf(1, 2);
-  EXPECT_EQ("OK", Explain(m2, 3));
-  EXPECT_EQ("diff == -1", Explain(m2, 4));
-}
-
-// Tests that the body of MATCHER() can reference the type of the
-// value being matched.
-
-MATCHER(IsEmptyString, "") {
-  StaticAssertTypeEq< ::std::string, arg_type>();
-  return arg == "";
-}
-
-MATCHER(IsEmptyStringByRef, "") {
-  StaticAssertTypeEq<const ::std::string&, arg_type>();
-  return arg == "";
-}
-
-TEST(MatcherMacroTest, CanReferenceArgType) {
-  const Matcher< ::std::string> m1 = IsEmptyString();
-  EXPECT_TRUE(m1.Matches(""));
-
-  const Matcher<const ::std::string&> m2 = IsEmptyStringByRef();
-  EXPECT_TRUE(m2.Matches(""));
-}
-
-// Tests that MATCHER() can be used in a namespace.
-
-namespace matcher_test {
-MATCHER(IsOdd, "") { return (arg % 2) != 0; }
-}  // namespace matcher_test
-
-TEST(MatcherMacroTest, WorksInNamespace) {
-  Matcher<int> m = matcher_test::IsOdd();
-  EXPECT_FALSE(m.Matches(4));
-  EXPECT_TRUE(m.Matches(5));
-}
-
-// Tests that Value() can be used to compose matchers.
-MATCHER(IsPositiveOdd, "") {
-  return Value(arg, matcher_test::IsOdd()) && arg > 0;
-}
-
-TEST(MatcherMacroTest, CanBeComposedUsingValue) {
-  EXPECT_THAT(3, IsPositiveOdd());
-  EXPECT_THAT(4, Not(IsPositiveOdd()));
-  EXPECT_THAT(-1, Not(IsPositiveOdd()));
-}
-
-// Tests that a simple MATCHER_P() definition works.
-
-MATCHER_P(IsGreaterThan32And, n, "") { return arg > 32 && arg > n; }
-
-TEST(MatcherPMacroTest, Works) {
-  const Matcher<int> m = IsGreaterThan32And(5);
-  EXPECT_TRUE(m.Matches(36));
-  EXPECT_FALSE(m.Matches(5));
-
-  EXPECT_EQ("is greater than 32 and 5", Describe(m));
-  EXPECT_EQ("not (is greater than 32 and 5)", DescribeNegation(m));
-  EXPECT_EQ("", Explain(m, 36));
-  EXPECT_EQ("", Explain(m, 5));
-}
-
-// Tests that the description is calculated correctly from the matcher name.
-MATCHER_P(_is_Greater_Than32and_, n, "") { return arg > 32 && arg > n; }
-
-TEST(MatcherPMacroTest, GeneratesCorrectDescription) {
-  const Matcher<int> m = _is_Greater_Than32and_(5);
-
-  EXPECT_EQ("is greater than 32 and 5", Describe(m));
-  EXPECT_EQ("not (is greater than 32 and 5)", DescribeNegation(m));
-  EXPECT_EQ("", Explain(m, 36));
-  EXPECT_EQ("", Explain(m, 5));
-}
-
-// Tests that a MATCHER_P matcher can be explicitly instantiated with
-// a reference parameter type.
-
-class UncopyableFoo {
- public:
-  explicit UncopyableFoo(char value) : value_(value) {}
- private:
-  UncopyableFoo(const UncopyableFoo&);
-  void operator=(const UncopyableFoo&);
-
-  char value_;
-};
-
-MATCHER_P(ReferencesUncopyable, variable, "") { return &arg == &variable; }
-
-TEST(MatcherPMacroTest, WorksWhenExplicitlyInstantiatedWithReference) {
-  UncopyableFoo foo1('1'), foo2('2');
-  const Matcher<const UncopyableFoo&> m =
-      ReferencesUncopyable<const UncopyableFoo&>(foo1);
-
-  EXPECT_TRUE(m.Matches(foo1));
-  EXPECT_FALSE(m.Matches(foo2));
-
-  // We don't want the address of the parameter printed, as most
-  // likely it will just annoy the user.  If the address is
-  // interesting, the user should consider passing the parameter by
-  // pointer instead.
-  EXPECT_EQ("references uncopyable 1-byte object <31>", Describe(m));
-}
-
-
-// Tests that the body of MATCHER_Pn() can reference the parameter
-// types.
-
-MATCHER_P3(ParamTypesAreIntLongAndChar, foo, bar, baz, "") {
-  StaticAssertTypeEq<int, foo_type>();
-  StaticAssertTypeEq<long, bar_type>();  // NOLINT
-  StaticAssertTypeEq<char, baz_type>();
-  return arg == 0;
-}
-
-TEST(MatcherPnMacroTest, CanReferenceParamTypes) {
-  EXPECT_THAT(0, ParamTypesAreIntLongAndChar(10, 20L, 'a'));
-}
-
-// Tests that a MATCHER_Pn matcher can be explicitly instantiated with
-// reference parameter types.
-
-MATCHER_P2(ReferencesAnyOf, variable1, variable2, "") {
-  return &arg == &variable1 || &arg == &variable2;
-}
-
-TEST(MatcherPnMacroTest, WorksWhenExplicitlyInstantiatedWithReferences) {
-  UncopyableFoo foo1('1'), foo2('2'), foo3('3');
-  const Matcher<const UncopyableFoo&> m =
-      ReferencesAnyOf<const UncopyableFoo&, const UncopyableFoo&>(foo1, foo2);
-
-  EXPECT_TRUE(m.Matches(foo1));
-  EXPECT_TRUE(m.Matches(foo2));
-  EXPECT_FALSE(m.Matches(foo3));
-}
-
-TEST(MatcherPnMacroTest,
-     GeneratesCorretDescriptionWhenExplicitlyInstantiatedWithReferences) {
-  UncopyableFoo foo1('1'), foo2('2');
-  const Matcher<const UncopyableFoo&> m =
-      ReferencesAnyOf<const UncopyableFoo&, const UncopyableFoo&>(foo1, foo2);
-
-  // We don't want the addresses of the parameters printed, as most
-  // likely they will just annoy the user.  If the addresses are
-  // interesting, the user should consider passing the parameters by
-  // pointers instead.
-  EXPECT_EQ("references any of (1-byte object <31>, 1-byte object <32>)",
-            Describe(m));
-}
-
-// Tests that a simple MATCHER_P2() definition works.
-
-MATCHER_P2(IsNotInClosedRange, low, hi, "") { return arg < low || arg > hi; }
-
-TEST(MatcherPnMacroTest, Works) {
-  const Matcher<const long&> m = IsNotInClosedRange(10, 20);  // NOLINT
-  EXPECT_TRUE(m.Matches(36L));
-  EXPECT_FALSE(m.Matches(15L));
-
-  EXPECT_EQ("is not in closed range (10, 20)", Describe(m));
-  EXPECT_EQ("not (is not in closed range (10, 20))", DescribeNegation(m));
-  EXPECT_EQ("", Explain(m, 36L));
-  EXPECT_EQ("", Explain(m, 15L));
-}
-
-// Tests that MATCHER*() definitions can be overloaded on the number
-// of parameters; also tests MATCHER_Pn() where n >= 3.
-
-MATCHER(EqualsSumOf, "") { return arg == 0; }
-MATCHER_P(EqualsSumOf, a, "") { return arg == a; }
-MATCHER_P2(EqualsSumOf, a, b, "") { return arg == a + b; }
-MATCHER_P3(EqualsSumOf, a, b, c, "") { return arg == a + b + c; }
-MATCHER_P4(EqualsSumOf, a, b, c, d, "") { return arg == a + b + c + d; }
-MATCHER_P5(EqualsSumOf, a, b, c, d, e, "") { return arg == a + b + c + d + e; }
-MATCHER_P6(EqualsSumOf, a, b, c, d, e, f, "") {
-  return arg == a + b + c + d + e + f;
-}
-MATCHER_P7(EqualsSumOf, a, b, c, d, e, f, g, "") {
-  return arg == a + b + c + d + e + f + g;
-}
-MATCHER_P8(EqualsSumOf, a, b, c, d, e, f, g, h, "") {
-  return arg == a + b + c + d + e + f + g + h;
-}
-MATCHER_P9(EqualsSumOf, a, b, c, d, e, f, g, h, i, "") {
-  return arg == a + b + c + d + e + f + g + h + i;
-}
-MATCHER_P10(EqualsSumOf, a, b, c, d, e, f, g, h, i, j, "") {
-  return arg == a + b + c + d + e + f + g + h + i + j;
-}
-
-TEST(MatcherPnMacroTest, CanBeOverloadedOnNumberOfParameters) {
-  EXPECT_THAT(0, EqualsSumOf());
-  EXPECT_THAT(1, EqualsSumOf(1));
-  EXPECT_THAT(12, EqualsSumOf(10, 2));
-  EXPECT_THAT(123, EqualsSumOf(100, 20, 3));
-  EXPECT_THAT(1234, EqualsSumOf(1000, 200, 30, 4));
-  EXPECT_THAT(12345, EqualsSumOf(10000, 2000, 300, 40, 5));
-  EXPECT_THAT("abcdef",
-              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f'));
-  EXPECT_THAT("abcdefg",
-              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g'));
-  EXPECT_THAT("abcdefgh",
-              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
-                          "h"));
-  EXPECT_THAT("abcdefghi",
-              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
-                          "h", 'i'));
-  EXPECT_THAT("abcdefghij",
-              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
-                          "h", 'i', ::std::string("j")));
-
-  EXPECT_THAT(1, Not(EqualsSumOf()));
-  EXPECT_THAT(-1, Not(EqualsSumOf(1)));
-  EXPECT_THAT(-12, Not(EqualsSumOf(10, 2)));
-  EXPECT_THAT(-123, Not(EqualsSumOf(100, 20, 3)));
-  EXPECT_THAT(-1234, Not(EqualsSumOf(1000, 200, 30, 4)));
-  EXPECT_THAT(-12345, Not(EqualsSumOf(10000, 2000, 300, 40, 5)));
-  EXPECT_THAT("abcdef ",
-              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f')));
-  EXPECT_THAT("abcdefg ",
-              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f',
-                              'g')));
-  EXPECT_THAT("abcdefgh ",
-              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
-                              "h")));
-  EXPECT_THAT("abcdefghi ",
-              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
-                              "h", 'i')));
-  EXPECT_THAT("abcdefghij ",
-              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
-                              "h", 'i', ::std::string("j"))));
-}
-
-// Tests that a MATCHER_Pn() definition can be instantiated with any
-// compatible parameter types.
-TEST(MatcherPnMacroTest, WorksForDifferentParameterTypes) {
-  EXPECT_THAT(123, EqualsSumOf(100L, 20, static_cast<char>(3)));
-  EXPECT_THAT("abcd", EqualsSumOf(::std::string("a"), "b", 'c', "d"));
-
-  EXPECT_THAT(124, Not(EqualsSumOf(100L, 20, static_cast<char>(3))));
-  EXPECT_THAT("abcde", Not(EqualsSumOf(::std::string("a"), "b", 'c', "d")));
-}
-
-// Tests that the matcher body can promote the parameter types.
-
-MATCHER_P2(EqConcat, prefix, suffix, "") {
-  // The following lines promote the two parameters to desired types.
-  std::string prefix_str(prefix);
-  char suffix_char = static_cast<char>(suffix);
-  return arg == prefix_str + suffix_char;
-}
-
-TEST(MatcherPnMacroTest, SimpleTypePromotion) {
-  Matcher<std::string> no_promo =
-      EqConcat(std::string("foo"), 't');
-  Matcher<const std::string&> promo =
-      EqConcat("foo", static_cast<int>('t'));
-  EXPECT_FALSE(no_promo.Matches("fool"));
-  EXPECT_FALSE(promo.Matches("fool"));
-  EXPECT_TRUE(no_promo.Matches("foot"));
-  EXPECT_TRUE(promo.Matches("foot"));
-}
-
-// Verifies the type of a MATCHER*.
-
-TEST(MatcherPnMacroTest, TypesAreCorrect) {
-  // EqualsSumOf() must be assignable to a EqualsSumOfMatcher variable.
-  EqualsSumOfMatcher a0 = EqualsSumOf();
-
-  // EqualsSumOf(1) must be assignable to a EqualsSumOfMatcherP variable.
-  EqualsSumOfMatcherP<int> a1 = EqualsSumOf(1);
-
-  // EqualsSumOf(p1, ..., pk) must be assignable to a EqualsSumOfMatcherPk
-  // variable, and so on.
-  EqualsSumOfMatcherP2<int, char> a2 = EqualsSumOf(1, '2');
-  EqualsSumOfMatcherP3<int, int, char> a3 = EqualsSumOf(1, 2, '3');
-  EqualsSumOfMatcherP4<int, int, int, char> a4 = EqualsSumOf(1, 2, 3, '4');
-  EqualsSumOfMatcherP5<int, int, int, int, char> a5 =
-      EqualsSumOf(1, 2, 3, 4, '5');
-  EqualsSumOfMatcherP6<int, int, int, int, int, char> a6 =
-      EqualsSumOf(1, 2, 3, 4, 5, '6');
-  EqualsSumOfMatcherP7<int, int, int, int, int, int, char> a7 =
-      EqualsSumOf(1, 2, 3, 4, 5, 6, '7');
-  EqualsSumOfMatcherP8<int, int, int, int, int, int, int, char> a8 =
-      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, '8');
-  EqualsSumOfMatcherP9<int, int, int, int, int, int, int, int, char> a9 =
-      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, 8, '9');
-  EqualsSumOfMatcherP10<int, int, int, int, int, int, int, int, int, char> a10 =
-      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, 8, 9, '0');
-
-  // Avoid "unused variable" warnings.
-  (void)a0;
-  (void)a1;
-  (void)a2;
-  (void)a3;
-  (void)a4;
-  (void)a5;
-  (void)a6;
-  (void)a7;
-  (void)a8;
-  (void)a9;
-  (void)a10;
-}
-
-// Tests that matcher-typed parameters can be used in Value() inside a
-// MATCHER_Pn definition.
-
-// Succeeds if arg matches exactly 2 of the 3 matchers.
-MATCHER_P3(TwoOf, m1, m2, m3, "") {
-  const int count = static_cast<int>(Value(arg, m1))
-      + static_cast<int>(Value(arg, m2)) + static_cast<int>(Value(arg, m3));
-  return count == 2;
-}
-
-TEST(MatcherPnMacroTest, CanUseMatcherTypedParameterInValue) {
-  EXPECT_THAT(42, TwoOf(Gt(0), Lt(50), Eq(10)));
-  EXPECT_THAT(0, Not(TwoOf(Gt(-1), Lt(1), Eq(0))));
-}
-
-// Tests Contains().
-
-TEST(ContainsTest, ListMatchesWhenElementIsInContainer) {
-  list<int> some_list;
-  some_list.push_back(3);
-  some_list.push_back(1);
-  some_list.push_back(2);
-  EXPECT_THAT(some_list, Contains(1));
-  EXPECT_THAT(some_list, Contains(Gt(2.5)));
-  EXPECT_THAT(some_list, Contains(Eq(2.0f)));
-
-  list<std::string> another_list;
-  another_list.push_back("fee");
-  another_list.push_back("fie");
-  another_list.push_back("foe");
-  another_list.push_back("fum");
-  EXPECT_THAT(another_list, Contains(std::string("fee")));
-}
-
-TEST(ContainsTest, ListDoesNotMatchWhenElementIsNotInContainer) {
-  list<int> some_list;
-  some_list.push_back(3);
-  some_list.push_back(1);
-  EXPECT_THAT(some_list, Not(Contains(4)));
-}
-
-TEST(ContainsTest, SetMatchesWhenElementIsInContainer) {
-  set<int> some_set;
-  some_set.insert(3);
-  some_set.insert(1);
-  some_set.insert(2);
-  EXPECT_THAT(some_set, Contains(Eq(1.0)));
-  EXPECT_THAT(some_set, Contains(Eq(3.0f)));
-  EXPECT_THAT(some_set, Contains(2));
-
-  set<const char*> another_set;
-  another_set.insert("fee");
-  another_set.insert("fie");
-  another_set.insert("foe");
-  another_set.insert("fum");
-  EXPECT_THAT(another_set, Contains(Eq(std::string("fum"))));
-}
-
-TEST(ContainsTest, SetDoesNotMatchWhenElementIsNotInContainer) {
-  set<int> some_set;
-  some_set.insert(3);
-  some_set.insert(1);
-  EXPECT_THAT(some_set, Not(Contains(4)));
-
-  set<const char*> c_string_set;
-  c_string_set.insert("hello");
-  EXPECT_THAT(c_string_set, Not(Contains(std::string("hello").c_str())));
-}
-
-TEST(ContainsTest, ExplainsMatchResultCorrectly) {
-  const int a[2] = { 1, 2 };
-  Matcher<const int (&)[2]> m = Contains(2);
-  EXPECT_EQ("whose element #1 matches", Explain(m, a));
-
-  m = Contains(3);
-  EXPECT_EQ("", Explain(m, a));
-
-  m = Contains(GreaterThan(0));
-  EXPECT_EQ("whose element #0 matches, which is 1 more than 0", Explain(m, a));
-
-  m = Contains(GreaterThan(10));
-  EXPECT_EQ("", Explain(m, a));
-}
-
-TEST(ContainsTest, DescribesItselfCorrectly) {
-  Matcher<vector<int> > m = Contains(1);
-  EXPECT_EQ("contains at least one element that is equal to 1", Describe(m));
-
-  Matcher<vector<int> > m2 = Not(m);
-  EXPECT_EQ("doesn't contain any element that is equal to 1", Describe(m2));
-}
-
-TEST(ContainsTest, MapMatchesWhenElementIsInContainer) {
-  map<const char*, int> my_map;
-  const char* bar = "a string";
-  my_map[bar] = 2;
-  EXPECT_THAT(my_map, Contains(pair<const char* const, int>(bar, 2)));
-
-  map<std::string, int> another_map;
-  another_map["fee"] = 1;
-  another_map["fie"] = 2;
-  another_map["foe"] = 3;
-  another_map["fum"] = 4;
-  EXPECT_THAT(another_map,
-              Contains(pair<const std::string, int>(std::string("fee"), 1)));
-  EXPECT_THAT(another_map, Contains(pair<const std::string, int>("fie", 2)));
-}
-
-TEST(ContainsTest, MapDoesNotMatchWhenElementIsNotInContainer) {
-  map<int, int> some_map;
-  some_map[1] = 11;
-  some_map[2] = 22;
-  EXPECT_THAT(some_map, Not(Contains(pair<const int, int>(2, 23))));
-}
-
-TEST(ContainsTest, ArrayMatchesWhenElementIsInContainer) {
-  const char* string_array[] = { "fee", "fie", "foe", "fum" };
-  EXPECT_THAT(string_array, Contains(Eq(std::string("fum"))));
-}
-
-TEST(ContainsTest, ArrayDoesNotMatchWhenElementIsNotInContainer) {
-  int int_array[] = { 1, 2, 3, 4 };
-  EXPECT_THAT(int_array, Not(Contains(5)));
-}
-
-TEST(ContainsTest, AcceptsMatcher) {
-  const int a[] = { 1, 2, 3 };
-  EXPECT_THAT(a, Contains(Gt(2)));
-  EXPECT_THAT(a, Not(Contains(Gt(4))));
-}
-
-TEST(ContainsTest, WorksForNativeArrayAsTuple) {
-  const int a[] = { 1, 2 };
-  const int* const pointer = a;
-  EXPECT_THAT(std::make_tuple(pointer, 2), Contains(1));
-  EXPECT_THAT(std::make_tuple(pointer, 2), Not(Contains(Gt(3))));
-}
-
-TEST(ContainsTest, WorksForTwoDimensionalNativeArray) {
-  int a[][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
-  EXPECT_THAT(a, Contains(ElementsAre(4, 5, 6)));
-  EXPECT_THAT(a, Contains(Contains(5)));
-  EXPECT_THAT(a, Not(Contains(ElementsAre(3, 4, 5))));
-  EXPECT_THAT(a, Contains(Not(Contains(5))));
-}
-
-TEST(AllOfArrayTest, BasicForms) {
-  // Iterator
-  std::vector<int> v0{};
-  std::vector<int> v1{1};
-  std::vector<int> v2{2, 3};
-  std::vector<int> v3{4, 4, 4};
-  EXPECT_THAT(0, AllOfArray(v0.begin(), v0.end()));
-  EXPECT_THAT(1, AllOfArray(v1.begin(), v1.end()));
-  EXPECT_THAT(2, Not(AllOfArray(v1.begin(), v1.end())));
-  EXPECT_THAT(3, Not(AllOfArray(v2.begin(), v2.end())));
-  EXPECT_THAT(4, AllOfArray(v3.begin(), v3.end()));
-  // Pointer +  size
-  int ar[6] = {1, 2, 3, 4, 4, 4};
-  EXPECT_THAT(0, AllOfArray(ar, 0));
-  EXPECT_THAT(1, AllOfArray(ar, 1));
-  EXPECT_THAT(2, Not(AllOfArray(ar, 1)));
-  EXPECT_THAT(3, Not(AllOfArray(ar + 1, 3)));
-  EXPECT_THAT(4, AllOfArray(ar + 3, 3));
-  // Array
-  // int ar0[0];  Not usable
-  int ar1[1] = {1};
-  int ar2[2] = {2, 3};
-  int ar3[3] = {4, 4, 4};
-  // EXPECT_THAT(0, Not(AllOfArray(ar0)));  // Cannot work
-  EXPECT_THAT(1, AllOfArray(ar1));
-  EXPECT_THAT(2, Not(AllOfArray(ar1)));
-  EXPECT_THAT(3, Not(AllOfArray(ar2)));
-  EXPECT_THAT(4, AllOfArray(ar3));
-  // Container
-  EXPECT_THAT(0, AllOfArray(v0));
-  EXPECT_THAT(1, AllOfArray(v1));
-  EXPECT_THAT(2, Not(AllOfArray(v1)));
-  EXPECT_THAT(3, Not(AllOfArray(v2)));
-  EXPECT_THAT(4, AllOfArray(v3));
-  // Initializer
-  EXPECT_THAT(0, AllOfArray<int>({}));  // Requires template arg.
-  EXPECT_THAT(1, AllOfArray({1}));
-  EXPECT_THAT(2, Not(AllOfArray({1})));
-  EXPECT_THAT(3, Not(AllOfArray({2, 3})));
-  EXPECT_THAT(4, AllOfArray({4, 4, 4}));
-}
-
-TEST(AllOfArrayTest, Matchers) {
-  // vector
-  std::vector<Matcher<int>> matchers{Ge(1), Lt(2)};
-  EXPECT_THAT(0, Not(AllOfArray(matchers)));
-  EXPECT_THAT(1, AllOfArray(matchers));
-  EXPECT_THAT(2, Not(AllOfArray(matchers)));
-  // initializer_list
-  EXPECT_THAT(0, Not(AllOfArray({Ge(0), Ge(1)})));
-  EXPECT_THAT(1, AllOfArray({Ge(0), Ge(1)}));
-}
-
-TEST(AnyOfArrayTest, BasicForms) {
-  // Iterator
-  std::vector<int> v0{};
-  std::vector<int> v1{1};
-  std::vector<int> v2{2, 3};
-  EXPECT_THAT(0, Not(AnyOfArray(v0.begin(), v0.end())));
-  EXPECT_THAT(1, AnyOfArray(v1.begin(), v1.end()));
-  EXPECT_THAT(2, Not(AnyOfArray(v1.begin(), v1.end())));
-  EXPECT_THAT(3, AnyOfArray(v2.begin(), v2.end()));
-  EXPECT_THAT(4, Not(AnyOfArray(v2.begin(), v2.end())));
-  // Pointer +  size
-  int ar[3] = {1, 2, 3};
-  EXPECT_THAT(0, Not(AnyOfArray(ar, 0)));
-  EXPECT_THAT(1, AnyOfArray(ar, 1));
-  EXPECT_THAT(2, Not(AnyOfArray(ar, 1)));
-  EXPECT_THAT(3, AnyOfArray(ar + 1, 2));
-  EXPECT_THAT(4, Not(AnyOfArray(ar + 1, 2)));
-  // Array
-  // int ar0[0];  Not usable
-  int ar1[1] = {1};
-  int ar2[2] = {2, 3};
-  // EXPECT_THAT(0, Not(AnyOfArray(ar0)));  // Cannot work
-  EXPECT_THAT(1, AnyOfArray(ar1));
-  EXPECT_THAT(2, Not(AnyOfArray(ar1)));
-  EXPECT_THAT(3, AnyOfArray(ar2));
-  EXPECT_THAT(4, Not(AnyOfArray(ar2)));
-  // Container
-  EXPECT_THAT(0, Not(AnyOfArray(v0)));
-  EXPECT_THAT(1, AnyOfArray(v1));
-  EXPECT_THAT(2, Not(AnyOfArray(v1)));
-  EXPECT_THAT(3, AnyOfArray(v2));
-  EXPECT_THAT(4, Not(AnyOfArray(v2)));
-  // Initializer
-  EXPECT_THAT(0, Not(AnyOfArray<int>({})));  // Requires template arg.
-  EXPECT_THAT(1, AnyOfArray({1}));
-  EXPECT_THAT(2, Not(AnyOfArray({1})));
-  EXPECT_THAT(3, AnyOfArray({2, 3}));
-  EXPECT_THAT(4, Not(AnyOfArray({2, 3})));
-}
-
-TEST(AnyOfArrayTest, Matchers) {
-  // We negate test AllOfArrayTest.Matchers.
-  // vector
-  std::vector<Matcher<int>> matchers{Lt(1), Ge(2)};
-  EXPECT_THAT(0, AnyOfArray(matchers));
-  EXPECT_THAT(1, Not(AnyOfArray(matchers)));
-  EXPECT_THAT(2, AnyOfArray(matchers));
-  // initializer_list
-  EXPECT_THAT(0, AnyOfArray({Lt(0), Lt(1)}));
-  EXPECT_THAT(1, Not(AllOfArray({Lt(0), Lt(1)})));
-}
-
-TEST(AnyOfArrayTest, ExplainsMatchResultCorrectly) {
-  // AnyOfArray and AllOfArry use the same underlying template-template,
-  // thus it is sufficient to test one here.
-  const std::vector<int> v0{};
-  const std::vector<int> v1{1};
-  const std::vector<int> v2{2, 3};
-  const Matcher<int> m0 = AnyOfArray(v0);
-  const Matcher<int> m1 = AnyOfArray(v1);
-  const Matcher<int> m2 = AnyOfArray(v2);
-  EXPECT_EQ("", Explain(m0, 0));
-  EXPECT_EQ("", Explain(m1, 1));
-  EXPECT_EQ("", Explain(m1, 2));
-  EXPECT_EQ("", Explain(m2, 3));
-  EXPECT_EQ("", Explain(m2, 4));
-  EXPECT_EQ("()", Describe(m0));
-  EXPECT_EQ("(is equal to 1)", Describe(m1));
-  EXPECT_EQ("(is equal to 2) or (is equal to 3)", Describe(m2));
-  EXPECT_EQ("()", DescribeNegation(m0));
-  EXPECT_EQ("(isn't equal to 1)", DescribeNegation(m1));
-  EXPECT_EQ("(isn't equal to 2) and (isn't equal to 3)", DescribeNegation(m2));
-  // Explain with matchers
-  const Matcher<int> g1 = AnyOfArray({GreaterThan(1)});
-  const Matcher<int> g2 = AnyOfArray({GreaterThan(1), GreaterThan(2)});
-  // Explains the first positiv match and all prior negative matches...
-  EXPECT_EQ("which is 1 less than 1", Explain(g1, 0));
-  EXPECT_EQ("which is the same as 1", Explain(g1, 1));
-  EXPECT_EQ("which is 1 more than 1", Explain(g1, 2));
-  EXPECT_EQ("which is 1 less than 1, and which is 2 less than 2",
-            Explain(g2, 0));
-  EXPECT_EQ("which is the same as 1, and which is 1 less than 2",
-            Explain(g2, 1));
-  EXPECT_EQ("which is 1 more than 1",  // Only the first
-            Explain(g2, 2));
-}
-
-TEST(AllOfTest, HugeMatcher) {
-  // Verify that using AllOf with many arguments doesn't cause
-  // the compiler to exceed template instantiation depth limit.
-  EXPECT_THAT(0, testing::AllOf(_, _, _, _, _, _, _, _, _,
-                                testing::AllOf(_, _, _, _, _, _, _, _, _, _)));
-}
-
-TEST(AnyOfTest, HugeMatcher) {
-  // Verify that using AnyOf with many arguments doesn't cause
-  // the compiler to exceed template instantiation depth limit.
-  EXPECT_THAT(0, testing::AnyOf(_, _, _, _, _, _, _, _, _,
-                                testing::AnyOf(_, _, _, _, _, _, _, _, _, _)));
-}
-
-namespace adl_test {
-
-// Verifies that the implementation of ::testing::AllOf and ::testing::AnyOf
-// don't issue unqualified recursive calls.  If they do, the argument dependent
-// name lookup will cause AllOf/AnyOf in the 'adl_test' namespace to be found
-// as a candidate and the compilation will break due to an ambiguous overload.
-
-// The matcher must be in the same namespace as AllOf/AnyOf to make argument
-// dependent lookup find those.
-MATCHER(M, "") { return true; }
-
-template <typename T1, typename T2>
-bool AllOf(const T1& /*t1*/, const T2& /*t2*/) { return true; }
-
-TEST(AllOfTest, DoesNotCallAllOfUnqualified) {
-  EXPECT_THAT(42, testing::AllOf(
-      M(), M(), M(), M(), M(), M(), M(), M(), M(), M()));
-}
-
-template <typename T1, typename T2> bool
-AnyOf(const T1& t1, const T2& t2) { return true; }
-
-TEST(AnyOfTest, DoesNotCallAnyOfUnqualified) {
-  EXPECT_THAT(42, testing::AnyOf(
-      M(), M(), M(), M(), M(), M(), M(), M(), M(), M()));
-}
-
-}  // namespace adl_test
-
-
-TEST(AllOfTest, WorksOnMoveOnlyType) {
-  std::unique_ptr<int> p(new int(3));
-  EXPECT_THAT(p, AllOf(Pointee(Eq(3)), Pointee(Gt(0)), Pointee(Lt(5))));
-  EXPECT_THAT(p, Not(AllOf(Pointee(Eq(3)), Pointee(Gt(0)), Pointee(Lt(3)))));
-}
-
-TEST(AnyOfTest, WorksOnMoveOnlyType) {
-  std::unique_ptr<int> p(new int(3));
-  EXPECT_THAT(p, AnyOf(Pointee(Eq(5)), Pointee(Lt(0)), Pointee(Lt(5))));
-  EXPECT_THAT(p, Not(AnyOf(Pointee(Eq(5)), Pointee(Lt(0)), Pointee(Gt(5)))));
-}
-
-MATCHER(IsNotNull, "") {
-  return arg != nullptr;
-}
-
-// Verifies that a matcher defined using MATCHER() can work on
-// move-only types.
-TEST(MatcherMacroTest, WorksOnMoveOnlyType) {
-  std::unique_ptr<int> p(new int(3));
-  EXPECT_THAT(p, IsNotNull());
-  EXPECT_THAT(std::unique_ptr<int>(), Not(IsNotNull()));
-}
-
-MATCHER_P(UniquePointee, pointee, "") {
-  return *arg == pointee;
-}
-
-// Verifies that a matcher defined using MATCHER_P*() can work on
-// move-only types.
-TEST(MatcherPMacroTest, WorksOnMoveOnlyType) {
-  std::unique_ptr<int> p(new int(3));
-  EXPECT_THAT(p, UniquePointee(3));
-  EXPECT_THAT(p, Not(UniquePointee(2)));
-}
-
-
-}  // namespace
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
index 8019f4a306616c71d40c75c2a910072e63d75744..0d15e8f482c7c7900ca81115fa8d312b75639f53 100644 (file)
@@ -124,20 +124,6 @@ TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameIsMixture) {
             ConvertIdentifierNameToWords("_Chapter11Section_1_"));
 }
 
-TEST(PointeeOfTest, WorksForSmartPointers) {
-  EXPECT_TRUE(
-      (std::is_same<int, PointeeOf<std::unique_ptr<int>>::type>::value));
-  EXPECT_TRUE(
-      (std::is_same<std::string,
-                    PointeeOf<std::shared_ptr<std::string>>::type>::value));
-}
-
-TEST(PointeeOfTest, WorksForRawPointers) {
-  EXPECT_TRUE((std::is_same<int, PointeeOf<int*>::type>::value));
-  EXPECT_TRUE((std::is_same<const char, PointeeOf<const char*>::type>::value));
-  EXPECT_TRUE((std::is_void<PointeeOf<void*>::type>::value));
-}
-
 TEST(GetRawPointerTest, WorksForSmartPointers) {
   const char* const raw_p1 = new const char('a');  // NOLINT
   const std::unique_ptr<const char> p1(raw_p1);
index c667ecbe3ad8c792bc07c13992fbef4002f7788c..3ac166827ce92afb3ff1ccada1716efe9d0568b7 100644 (file)
@@ -60,6 +60,8 @@
 #include <sstream>
 #include <string>
 #include <type_traits>
+#include <unordered_map>
+#include <unordered_set>
 #include <utility>
 #include <vector>
 
@@ -87,6 +89,7 @@ using std::vector;
 using testing::internal::DummyMatchResultListener;
 using testing::internal::ElementMatcherPair;
 using testing::internal::ElementMatcherPairs;
+using testing::internal::ElementsAreArrayMatcher;
 using testing::internal::ExplainMatchFailureTupleTo;
 using testing::internal::FloatingEqMatcher;
 using testing::internal::FormatMatcherDescription;
@@ -351,43 +354,43 @@ TEST(StringMatcherTest, CanBeImplicitlyConstructedFromString) {
   EXPECT_FALSE(m2.Matches("hello"));
 }
 
-#if GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
 // Tests that a C-string literal can be implicitly converted to a
-// Matcher<absl::string_view> or Matcher<const absl::string_view&>.
+// Matcher<StringView> or Matcher<const StringView&>.
 TEST(StringViewMatcherTest, CanBeImplicitlyConstructedFromCStringLiteral) {
-  Matcher<absl::string_view> m1 = "cats";
+  Matcher<internal::StringView> m1 = "cats";
   EXPECT_TRUE(m1.Matches("cats"));
   EXPECT_FALSE(m1.Matches("dogs"));
 
-  Matcher<const absl::string_view&> m2 = "cats";
+  Matcher<const internal::StringView&> m2 = "cats";
   EXPECT_TRUE(m2.Matches("cats"));
   EXPECT_FALSE(m2.Matches("dogs"));
 }
 
 // Tests that a std::string object can be implicitly converted to a
-// Matcher<absl::string_view> or Matcher<const absl::string_view&>.
+// Matcher<StringView> or Matcher<const StringView&>.
 TEST(StringViewMatcherTest, CanBeImplicitlyConstructedFromString) {
-  Matcher<absl::string_view> m1 = std::string("cats");
+  Matcher<internal::StringView> m1 = std::string("cats");
   EXPECT_TRUE(m1.Matches("cats"));
   EXPECT_FALSE(m1.Matches("dogs"));
 
-  Matcher<const absl::string_view&> m2 = std::string("cats");
+  Matcher<const internal::StringView&> m2 = std::string("cats");
   EXPECT_TRUE(m2.Matches("cats"));
   EXPECT_FALSE(m2.Matches("dogs"));
 }
 
-// Tests that a absl::string_view object can be implicitly converted to a
-// Matcher<absl::string_view> or Matcher<const absl::string_view&>.
+// Tests that a StringView object can be implicitly converted to a
+// Matcher<StringView> or Matcher<const StringView&>.
 TEST(StringViewMatcherTest, CanBeImplicitlyConstructedFromStringView) {
-  Matcher<absl::string_view> m1 = absl::string_view("cats");
+  Matcher<internal::StringView> m1 = internal::StringView("cats");
   EXPECT_TRUE(m1.Matches("cats"));
   EXPECT_FALSE(m1.Matches("dogs"));
 
-  Matcher<const absl::string_view&> m2 = absl::string_view("cats");
+  Matcher<const internal::StringView&> m2 = internal::StringView("cats");
   EXPECT_TRUE(m2.Matches("cats"));
   EXPECT_FALSE(m2.Matches("dogs"));
 }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
 // Tests that a std::reference_wrapper<std::string> object can be implicitly
 // converted to a Matcher<std::string> or Matcher<const std::string&> via Eq().
@@ -765,10 +768,11 @@ TEST(SafeMatcherCastTest, FromConstReferenceToReference) {
 
 // Tests that MatcherCast<const T&>(m) works when m is a Matcher<T>.
 TEST(SafeMatcherCastTest, FromNonReferenceToConstReference) {
-  Matcher<int> m1 = Eq(0);
-  Matcher<const int&> m2 = SafeMatcherCast<const int&>(m1);
-  EXPECT_TRUE(m2.Matches(0));
-  EXPECT_FALSE(m2.Matches(1));
+  Matcher<std::unique_ptr<int>> m1 = IsNull();
+  Matcher<const std::unique_ptr<int>&> m2 =
+      SafeMatcherCast<const std::unique_ptr<int>&>(m1);
+  EXPECT_TRUE(m2.Matches(std::unique_ptr<int>()));
+  EXPECT_FALSE(m2.Matches(std::unique_ptr<int>(new int)));
 }
 
 // Tests that SafeMatcherCast<T&>(m) works when m is a Matcher<T>.
@@ -1070,7 +1074,12 @@ struct MoveHelper {
   MOCK_METHOD1(Call, void(MoveOnly));
 };
 
+// Disable this test in VS 2015 (version 14), where it fails when SEH is enabled
+#if defined(_MSC_VER) && (_MSC_VER < 1910)
+TEST(ComparisonBaseTest, DISABLED_WorksWithMoveOnly) {
+#else
 TEST(ComparisonBaseTest, WorksWithMoveOnly) {
+#endif
   MoveOnly m{0};
   MoveHelper helper;
 
@@ -1225,6 +1234,25 @@ TEST(RefTest, ExplainsResult) {
 
 // Tests string comparison matchers.
 
+template <typename T = std::string>
+std::string FromStringLike(internal::StringLike<T> str) {
+  return std::string(str);
+}
+
+TEST(StringLike, TestConversions) {
+  EXPECT_EQ("foo", FromStringLike("foo"));
+  EXPECT_EQ("foo", FromStringLike(std::string("foo")));
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  EXPECT_EQ("foo", FromStringLike(internal::StringView("foo")));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
+
+  // Non deducible types.
+  EXPECT_EQ("", FromStringLike({}));
+  EXPECT_EQ("foo", FromStringLike({'f', 'o', 'o'}));
+  const char buf[] = "foo";
+  EXPECT_EQ("foo", FromStringLike({buf, buf + 3}));
+}
+
 TEST(StrEqTest, MatchesEqualString) {
   Matcher<const char*> m = StrEq(std::string("Hello"));
   EXPECT_TRUE(m.Matches("Hello"));
@@ -1235,17 +1263,18 @@ TEST(StrEqTest, MatchesEqualString) {
   EXPECT_TRUE(m2.Matches("Hello"));
   EXPECT_FALSE(m2.Matches("Hi"));
 
-#if GTEST_HAS_ABSL
-  Matcher<const absl::string_view&> m3 = StrEq("Hello");
-  EXPECT_TRUE(m3.Matches(absl::string_view("Hello")));
-  EXPECT_FALSE(m3.Matches(absl::string_view("hello")));
-  EXPECT_FALSE(m3.Matches(absl::string_view()));
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  Matcher<const internal::StringView&> m3 =
+      StrEq(internal::StringView("Hello"));
+  EXPECT_TRUE(m3.Matches(internal::StringView("Hello")));
+  EXPECT_FALSE(m3.Matches(internal::StringView("hello")));
+  EXPECT_FALSE(m3.Matches(internal::StringView()));
 
-  Matcher<const absl::string_view&> m_empty = StrEq("");
-  EXPECT_TRUE(m_empty.Matches(absl::string_view("")));
-  EXPECT_TRUE(m_empty.Matches(absl::string_view()));
-  EXPECT_FALSE(m_empty.Matches(absl::string_view("hello")));
-#endif  // GTEST_HAS_ABSL
+  Matcher<const internal::StringView&> m_empty = StrEq("");
+  EXPECT_TRUE(m_empty.Matches(internal::StringView("")));
+  EXPECT_TRUE(m_empty.Matches(internal::StringView()));
+  EXPECT_FALSE(m_empty.Matches(internal::StringView("hello")));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 TEST(StrEqTest, CanDescribeSelf) {
@@ -1272,12 +1301,12 @@ TEST(StrNeTest, MatchesUnequalString) {
   EXPECT_TRUE(m2.Matches("hello"));
   EXPECT_FALSE(m2.Matches("Hello"));
 
-#if GTEST_HAS_ABSL
-  Matcher<const absl::string_view> m3 = StrNe("Hello");
-  EXPECT_TRUE(m3.Matches(absl::string_view("")));
-  EXPECT_TRUE(m3.Matches(absl::string_view()));
-  EXPECT_FALSE(m3.Matches(absl::string_view("Hello")));
-#endif  // GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  Matcher<const internal::StringView> m3 = StrNe(internal::StringView("Hello"));
+  EXPECT_TRUE(m3.Matches(internal::StringView("")));
+  EXPECT_TRUE(m3.Matches(internal::StringView()));
+  EXPECT_FALSE(m3.Matches(internal::StringView("Hello")));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 TEST(StrNeTest, CanDescribeSelf) {
@@ -1296,13 +1325,14 @@ TEST(StrCaseEqTest, MatchesEqualStringIgnoringCase) {
   EXPECT_TRUE(m2.Matches("hello"));
   EXPECT_FALSE(m2.Matches("Hi"));
 
-#if GTEST_HAS_ABSL
-  Matcher<const absl::string_view&> m3 = StrCaseEq(std::string("Hello"));
-  EXPECT_TRUE(m3.Matches(absl::string_view("Hello")));
-  EXPECT_TRUE(m3.Matches(absl::string_view("hello")));
-  EXPECT_FALSE(m3.Matches(absl::string_view("Hi")));
-  EXPECT_FALSE(m3.Matches(absl::string_view()));
-#endif  // GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  Matcher<const internal::StringView&> m3 =
+      StrCaseEq(internal::StringView("Hello"));
+  EXPECT_TRUE(m3.Matches(internal::StringView("Hello")));
+  EXPECT_TRUE(m3.Matches(internal::StringView("hello")));
+  EXPECT_FALSE(m3.Matches(internal::StringView("Hi")));
+  EXPECT_FALSE(m3.Matches(internal::StringView()));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 TEST(StrCaseEqTest, MatchesEqualStringWith0IgnoringCase) {
@@ -1346,13 +1376,14 @@ TEST(StrCaseNeTest, MatchesUnequalStringIgnoringCase) {
   EXPECT_TRUE(m2.Matches(""));
   EXPECT_FALSE(m2.Matches("Hello"));
 
-#if GTEST_HAS_ABSL
-  Matcher<const absl::string_view> m3 = StrCaseNe("Hello");
-  EXPECT_TRUE(m3.Matches(absl::string_view("Hi")));
-  EXPECT_TRUE(m3.Matches(absl::string_view()));
-  EXPECT_FALSE(m3.Matches(absl::string_view("Hello")));
-  EXPECT_FALSE(m3.Matches(absl::string_view("hello")));
-#endif  // GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  Matcher<const internal::StringView> m3 =
+      StrCaseNe(internal::StringView("Hello"));
+  EXPECT_TRUE(m3.Matches(internal::StringView("Hi")));
+  EXPECT_TRUE(m3.Matches(internal::StringView()));
+  EXPECT_FALSE(m3.Matches(internal::StringView("Hello")));
+  EXPECT_FALSE(m3.Matches(internal::StringView("hello")));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 TEST(StrCaseNeTest, CanDescribeSelf) {
@@ -1393,25 +1424,26 @@ TEST(HasSubstrTest, WorksForCStrings) {
   EXPECT_FALSE(m_empty.Matches(nullptr));
 }
 
-#if GTEST_HAS_ABSL
-// Tests that HasSubstr() works for matching absl::string_view-typed values.
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+// Tests that HasSubstr() works for matching StringView-typed values.
 TEST(HasSubstrTest, WorksForStringViewClasses) {
-  const Matcher<absl::string_view> m1 = HasSubstr("foo");
-  EXPECT_TRUE(m1.Matches(absl::string_view("I love food.")));
-  EXPECT_FALSE(m1.Matches(absl::string_view("tofo")));
-  EXPECT_FALSE(m1.Matches(absl::string_view()));
+  const Matcher<internal::StringView> m1 =
+      HasSubstr(internal::StringView("foo"));
+  EXPECT_TRUE(m1.Matches(internal::StringView("I love food.")));
+  EXPECT_FALSE(m1.Matches(internal::StringView("tofo")));
+  EXPECT_FALSE(m1.Matches(internal::StringView()));
 
-  const Matcher<const absl::string_view&> m2 = HasSubstr("foo");
-  EXPECT_TRUE(m2.Matches(absl::string_view("I love food.")));
-  EXPECT_FALSE(m2.Matches(absl::string_view("tofo")));
-  EXPECT_FALSE(m2.Matches(absl::string_view()));
+  const Matcher<const internal::StringView&> m2 = HasSubstr("foo");
+  EXPECT_TRUE(m2.Matches(internal::StringView("I love food.")));
+  EXPECT_FALSE(m2.Matches(internal::StringView("tofo")));
+  EXPECT_FALSE(m2.Matches(internal::StringView()));
 
-  const Matcher<const absl::string_view&> m3 = HasSubstr("");
-  EXPECT_TRUE(m3.Matches(absl::string_view("foo")));
-  EXPECT_TRUE(m3.Matches(absl::string_view("")));
-  EXPECT_TRUE(m3.Matches(absl::string_view()));
+  const Matcher<const internal::StringView&> m3 = HasSubstr("");
+  EXPECT_TRUE(m3.Matches(internal::StringView("foo")));
+  EXPECT_TRUE(m3.Matches(internal::StringView("")));
+  EXPECT_TRUE(m3.Matches(internal::StringView()));
 }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
 // Tests that HasSubstr(s) describes itself properly.
 TEST(HasSubstrTest, CanDescribeSelf) {
@@ -1616,6 +1648,147 @@ TEST(PairTest, InsideContainsUsingMap) {
   EXPECT_THAT(container, Not(Contains(Pair(3, _))));
 }
 
+TEST(FieldsAreTest, MatchesCorrectly) {
+  std::tuple<int, std::string, double> p(25, "foo", .5);
+
+  // All fields match.
+  EXPECT_THAT(p, FieldsAre(25, "foo", .5));
+  EXPECT_THAT(p, FieldsAre(Ge(20), HasSubstr("o"), DoubleEq(.5)));
+
+  // Some don't match.
+  EXPECT_THAT(p, Not(FieldsAre(26, "foo", .5)));
+  EXPECT_THAT(p, Not(FieldsAre(25, "fo", .5)));
+  EXPECT_THAT(p, Not(FieldsAre(25, "foo", .6)));
+}
+
+TEST(FieldsAreTest, CanDescribeSelf) {
+  Matcher<const pair<std::string, int>&> m1 = FieldsAre("foo", 42);
+  EXPECT_EQ(
+      "has field #0 that is equal to \"foo\""
+      ", and has field #1 that is equal to 42",
+      Describe(m1));
+  EXPECT_EQ(
+      "has field #0 that isn't equal to \"foo\""
+      ", or has field #1 that isn't equal to 42",
+      DescribeNegation(m1));
+}
+
+TEST(FieldsAreTest, CanExplainMatchResultTo) {
+  // The first one that fails is the one that gives the error.
+  Matcher<std::tuple<int, int, int>> m =
+      FieldsAre(GreaterThan(0), GreaterThan(0), GreaterThan(0));
+
+  EXPECT_EQ("whose field #0 does not match, which is 1 less than 0",
+            Explain(m, std::make_tuple(-1, -2, -3)));
+  EXPECT_EQ("whose field #1 does not match, which is 2 less than 0",
+            Explain(m, std::make_tuple(1, -2, -3)));
+  EXPECT_EQ("whose field #2 does not match, which is 3 less than 0",
+            Explain(m, std::make_tuple(1, 2, -3)));
+
+  // If they all match, we get a long explanation of success.
+  EXPECT_EQ(
+      "whose all elements match, "
+      "where field #0 is a value which is 1 more than 0"
+      ", and field #1 is a value which is 2 more than 0"
+      ", and field #2 is a value which is 3 more than 0",
+      Explain(m, std::make_tuple(1, 2, 3)));
+
+  // Only print those that have an explanation.
+  m = FieldsAre(GreaterThan(0), 0, GreaterThan(0));
+  EXPECT_EQ(
+      "whose all elements match, "
+      "where field #0 is a value which is 1 more than 0"
+      ", and field #2 is a value which is 3 more than 0",
+      Explain(m, std::make_tuple(1, 0, 3)));
+
+  // If only one has an explanation, then print that one.
+  m = FieldsAre(0, GreaterThan(0), 0);
+  EXPECT_EQ(
+      "whose all elements match, "
+      "where field #1 is a value which is 1 more than 0",
+      Explain(m, std::make_tuple(0, 1, 0)));
+}
+
+#if defined(__cpp_structured_bindings) && __cpp_structured_bindings >= 201606
+TEST(FieldsAreTest, StructuredBindings) {
+  // testing::FieldsAre can also match aggregates and such with C++17 and up.
+  struct MyType {
+    int i;
+    std::string str;
+  };
+  EXPECT_THAT((MyType{17, "foo"}), FieldsAre(Eq(17), HasSubstr("oo")));
+
+  // Test all the supported arities.
+  struct MyVarType1 {
+    int a;
+  };
+  EXPECT_THAT(MyVarType1{}, FieldsAre(0));
+  struct MyVarType2 {
+    int a, b;
+  };
+  EXPECT_THAT(MyVarType2{}, FieldsAre(0, 0));
+  struct MyVarType3 {
+    int a, b, c;
+  };
+  EXPECT_THAT(MyVarType3{}, FieldsAre(0, 0, 0));
+  struct MyVarType4 {
+    int a, b, c, d;
+  };
+  EXPECT_THAT(MyVarType4{}, FieldsAre(0, 0, 0, 0));
+  struct MyVarType5 {
+    int a, b, c, d, e;
+  };
+  EXPECT_THAT(MyVarType5{}, FieldsAre(0, 0, 0, 0, 0));
+  struct MyVarType6 {
+    int a, b, c, d, e, f;
+  };
+  EXPECT_THAT(MyVarType6{}, FieldsAre(0, 0, 0, 0, 0, 0));
+  struct MyVarType7 {
+    int a, b, c, d, e, f, g;
+  };
+  EXPECT_THAT(MyVarType7{}, FieldsAre(0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType8 {
+    int a, b, c, d, e, f, g, h;
+  };
+  EXPECT_THAT(MyVarType8{}, FieldsAre(0, 0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType9 {
+    int a, b, c, d, e, f, g, h, i;
+  };
+  EXPECT_THAT(MyVarType9{}, FieldsAre(0, 0, 0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType10 {
+    int a, b, c, d, e, f, g, h, i, j;
+  };
+  EXPECT_THAT(MyVarType10{}, FieldsAre(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType11 {
+    int a, b, c, d, e, f, g, h, i, j, k;
+  };
+  EXPECT_THAT(MyVarType11{}, FieldsAre(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType12 {
+    int a, b, c, d, e, f, g, h, i, j, k, l;
+  };
+  EXPECT_THAT(MyVarType12{}, FieldsAre(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType13 {
+    int a, b, c, d, e, f, g, h, i, j, k, l, m;
+  };
+  EXPECT_THAT(MyVarType13{}, FieldsAre(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType14 {
+    int a, b, c, d, e, f, g, h, i, j, k, l, m, n;
+  };
+  EXPECT_THAT(MyVarType14{},
+              FieldsAre(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType15 {
+    int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o;
+  };
+  EXPECT_THAT(MyVarType15{},
+              FieldsAre(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+  struct MyVarType16 {
+    int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
+  };
+  EXPECT_THAT(MyVarType16{},
+              FieldsAre(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+}
+#endif
+
 TEST(ContainsTest, WorksWithMoveOnly) {
   ContainerHelper helper;
   EXPECT_CALL(helper, Call(Contains(Pointee(2))));
@@ -1648,12 +1821,13 @@ TEST(StartsWithTest, MatchesStringWithGivenPrefix) {
   EXPECT_FALSE(m2.Matches("H"));
   EXPECT_FALSE(m2.Matches(" Hi"));
 
-#if GTEST_HAS_ABSL
-  const Matcher<absl::string_view> m_empty = StartsWith("");
-  EXPECT_TRUE(m_empty.Matches(absl::string_view()));
-  EXPECT_TRUE(m_empty.Matches(absl::string_view("")));
-  EXPECT_TRUE(m_empty.Matches(absl::string_view("not empty")));
-#endif  // GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  const Matcher<internal::StringView> m_empty =
+      StartsWith(internal::StringView(""));
+  EXPECT_TRUE(m_empty.Matches(internal::StringView()));
+  EXPECT_TRUE(m_empty.Matches(internal::StringView("")));
+  EXPECT_TRUE(m_empty.Matches(internal::StringView("not empty")));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 TEST(StartsWithTest, CanDescribeSelf) {
@@ -1676,13 +1850,14 @@ TEST(EndsWithTest, MatchesStringWithGivenSuffix) {
   EXPECT_FALSE(m2.Matches("i"));
   EXPECT_FALSE(m2.Matches("Hi "));
 
-#if GTEST_HAS_ABSL
-  const Matcher<const absl::string_view&> m4 = EndsWith("");
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  const Matcher<const internal::StringView&> m4 =
+      EndsWith(internal::StringView(""));
   EXPECT_TRUE(m4.Matches("Hi"));
   EXPECT_TRUE(m4.Matches(""));
-  EXPECT_TRUE(m4.Matches(absl::string_view()));
-  EXPECT_TRUE(m4.Matches(absl::string_view("")));
-#endif  // GTEST_HAS_ABSL
+  EXPECT_TRUE(m4.Matches(internal::StringView()));
+  EXPECT_TRUE(m4.Matches(internal::StringView("")));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 TEST(EndsWithTest, CanDescribeSelf) {
@@ -1703,16 +1878,17 @@ TEST(MatchesRegexTest, MatchesStringMatchingGivenRegex) {
   EXPECT_FALSE(m2.Matches("az1"));
   EXPECT_FALSE(m2.Matches("1az"));
 
-#if GTEST_HAS_ABSL
-  const Matcher<const absl::string_view&> m3 = MatchesRegex("a.*z");
-  EXPECT_TRUE(m3.Matches(absl::string_view("az")));
-  EXPECT_TRUE(m3.Matches(absl::string_view("abcz")));
-  EXPECT_FALSE(m3.Matches(absl::string_view("1az")));
-  EXPECT_FALSE(m3.Matches(absl::string_view()));
-  const Matcher<const absl::string_view&> m4 = MatchesRegex("");
-  EXPECT_TRUE(m4.Matches(absl::string_view("")));
-  EXPECT_TRUE(m4.Matches(absl::string_view()));
-#endif  // GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  const Matcher<const internal::StringView&> m3 = MatchesRegex("a.*z");
+  EXPECT_TRUE(m3.Matches(internal::StringView("az")));
+  EXPECT_TRUE(m3.Matches(internal::StringView("abcz")));
+  EXPECT_FALSE(m3.Matches(internal::StringView("1az")));
+  EXPECT_FALSE(m3.Matches(internal::StringView()));
+  const Matcher<const internal::StringView&> m4 =
+      MatchesRegex(internal::StringView(""));
+  EXPECT_TRUE(m4.Matches(internal::StringView("")));
+  EXPECT_TRUE(m4.Matches(internal::StringView()));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 TEST(MatchesRegexTest, CanDescribeSelf) {
@@ -1722,10 +1898,10 @@ TEST(MatchesRegexTest, CanDescribeSelf) {
   Matcher<const char*> m2 = MatchesRegex(new RE("a.*"));
   EXPECT_EQ("matches regular expression \"a.*\"", Describe(m2));
 
-#if GTEST_HAS_ABSL
-  Matcher<const absl::string_view> m3 = MatchesRegex(new RE("0.*"));
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  Matcher<const internal::StringView> m3 = MatchesRegex(new RE("0.*"));
   EXPECT_EQ("matches regular expression \"0.*\"", Describe(m3));
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 // Tests ContainsRegex().
@@ -1741,16 +1917,18 @@ TEST(ContainsRegexTest, MatchesStringContainingGivenRegex) {
   EXPECT_TRUE(m2.Matches("az1"));
   EXPECT_FALSE(m2.Matches("1a"));
 
-#if GTEST_HAS_ABSL
-  const Matcher<const absl::string_view&> m3 = ContainsRegex(new RE("a.*z"));
-  EXPECT_TRUE(m3.Matches(absl::string_view("azbz")));
-  EXPECT_TRUE(m3.Matches(absl::string_view("az1")));
-  EXPECT_FALSE(m3.Matches(absl::string_view("1a")));
-  EXPECT_FALSE(m3.Matches(absl::string_view()));
-  const Matcher<const absl::string_view&> m4 = ContainsRegex("");
-  EXPECT_TRUE(m4.Matches(absl::string_view("")));
-  EXPECT_TRUE(m4.Matches(absl::string_view()));
-#endif  // GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  const Matcher<const internal::StringView&> m3 =
+      ContainsRegex(new RE("a.*z"));
+  EXPECT_TRUE(m3.Matches(internal::StringView("azbz")));
+  EXPECT_TRUE(m3.Matches(internal::StringView("az1")));
+  EXPECT_FALSE(m3.Matches(internal::StringView("1a")));
+  EXPECT_FALSE(m3.Matches(internal::StringView()));
+  const Matcher<const internal::StringView&> m4 =
+      ContainsRegex(internal::StringView(""));
+  EXPECT_TRUE(m4.Matches(internal::StringView("")));
+  EXPECT_TRUE(m4.Matches(internal::StringView()));
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 TEST(ContainsRegexTest, CanDescribeSelf) {
@@ -1760,10 +1938,10 @@ TEST(ContainsRegexTest, CanDescribeSelf) {
   Matcher<const char*> m2 = ContainsRegex(new RE("a.*"));
   EXPECT_EQ("contains regular expression \"a.*\"", Describe(m2));
 
-#if GTEST_HAS_ABSL
-  Matcher<const absl::string_view> m3 = ContainsRegex(new RE("0.*"));
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  Matcher<const internal::StringView> m3 = ContainsRegex(new RE("0.*"));
   EXPECT_EQ("contains regular expression \"0.*\"", Describe(m3));
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 }
 
 // Tests for wide strings.
@@ -2811,6 +2989,13 @@ TEST(TrulyTest, WorksForByRefArguments) {
   EXPECT_FALSE(m.Matches(n));
 }
 
+// Tests that Truly(predicate) provides a helpful reason when it fails.
+TEST(TrulyTest, ExplainsFailures) {
+  StringMatchResultListener listener;
+  EXPECT_FALSE(ExplainMatchResult(Truly(IsPositive), -1, &listener));
+  EXPECT_EQ(listener.str(), "didn't satisfy the given predicate");
+}
+
 // Tests that Matches(m) is a predicate satisfied by whatever that
 // matches matcher m.
 TEST(MatchesTest, IsSatisfiedByWhatMatchesTheMatcher) {
@@ -2875,6 +3060,33 @@ TEST(ExplainMatchResultTest, WorksWithMonomorphicMatcher) {
   EXPECT_EQ("", listener2.str());
 }
 
+MATCHER(ConstructNoArg, "") { return true; }
+MATCHER_P(Construct1Arg, arg1, "") { return true; }
+MATCHER_P2(Construct2Args, arg1, arg2, "") { return true; }
+
+TEST(MatcherConstruct, ExplicitVsImplicit) {
+  {
+    // No arg constructor can be constructed with empty brace.
+    ConstructNoArgMatcher m = {};
+    (void)m;
+    // And with no args
+    ConstructNoArgMatcher m2;
+    (void)m2;
+  }
+  {
+    // The one arg constructor has an explicit constructor.
+    // This is to prevent the implicit conversion.
+    using M = Construct1ArgMatcherP<int>;
+    EXPECT_TRUE((std::is_constructible<M, int>::value));
+    EXPECT_FALSE((std::is_convertible<int, M>::value));
+  }
+  {
+    // Multiple arg matchers can be constructed with an implicit construction.
+    Construct2ArgsMatcherP2<int, double> m = {1, 2.2};
+    (void)m;
+  }
+}
+
 MATCHER_P(Really, inner_matcher, "") {
   return ExplainMatchResult(inner_matcher, arg, result_listener);
 }
@@ -3516,6 +3728,105 @@ TEST(PointeeTest, ReferenceToNonConstRawPointer) {
   EXPECT_FALSE(m.Matches(p));
 }
 
+TEST(PointeeTest, SmartPointer) {
+  const Matcher<std::unique_ptr<int>> m = Pointee(Ge(0));
+
+  std::unique_ptr<int> n(new int(1));
+  EXPECT_TRUE(m.Matches(n));
+}
+
+TEST(PointeeTest, SmartPointerToConst) {
+  const Matcher<std::unique_ptr<const int>> m = Pointee(Ge(0));
+
+  // There's no implicit conversion from unique_ptr<int> to const
+  // unique_ptr<const int>, so we must pass a unique_ptr<const int> into the
+  // matcher.
+  std::unique_ptr<const int> n(new int(1));
+  EXPECT_TRUE(m.Matches(n));
+}
+
+TEST(PointerTest, RawPointer) {
+  int n = 1;
+  const Matcher<int*> m = Pointer(Eq(&n));
+
+  EXPECT_TRUE(m.Matches(&n));
+
+  int* p = nullptr;
+  EXPECT_FALSE(m.Matches(p));
+  EXPECT_FALSE(m.Matches(nullptr));
+}
+
+TEST(PointerTest, RawPointerToConst) {
+  int n = 1;
+  const Matcher<const int*> m = Pointer(Eq(&n));
+
+  EXPECT_TRUE(m.Matches(&n));
+
+  int* p = nullptr;
+  EXPECT_FALSE(m.Matches(p));
+  EXPECT_FALSE(m.Matches(nullptr));
+}
+
+TEST(PointerTest, SmartPointer) {
+  std::unique_ptr<int> n(new int(10));
+  int* raw_n = n.get();
+  const Matcher<std::unique_ptr<int>> m = Pointer(Eq(raw_n));
+
+  EXPECT_TRUE(m.Matches(n));
+}
+
+TEST(PointerTest, SmartPointerToConst) {
+  std::unique_ptr<const int> n(new int(10));
+  const int* raw_n = n.get();
+  const Matcher<std::unique_ptr<const int>> m = Pointer(Eq(raw_n));
+
+  // There's no implicit conversion from unique_ptr<int> to const
+  // unique_ptr<const int>, so we must pass a unique_ptr<const int> into the
+  // matcher.
+  std::unique_ptr<const int> p(new int(10));
+  EXPECT_FALSE(m.Matches(p));
+}
+
+TEST(AddressTest, NonConst) {
+  int n = 1;
+  const Matcher<int> m = Address(Eq(&n));
+
+  EXPECT_TRUE(m.Matches(n));
+
+  int other = 5;
+
+  EXPECT_FALSE(m.Matches(other));
+
+  int& n_ref = n;
+
+  EXPECT_TRUE(m.Matches(n_ref));
+}
+
+TEST(AddressTest, Const) {
+  const int n = 1;
+  const Matcher<int> m = Address(Eq(&n));
+
+  EXPECT_TRUE(m.Matches(n));
+
+  int other = 5;
+
+  EXPECT_FALSE(m.Matches(other));
+}
+
+TEST(AddressTest, MatcherDoesntCopy) {
+  std::unique_ptr<int> n(new int(1));
+  const Matcher<std::unique_ptr<int>> m = Address(Eq(&n));
+
+  EXPECT_TRUE(m.Matches(n));
+}
+
+TEST(AddressTest, Describe) {
+  Matcher<int> matcher = Address(_);
+  EXPECT_EQ("has address that is anything", Describe(matcher));
+  EXPECT_EQ("does not have address that is anything",
+            DescribeNegation(matcher));
+}
+
 MATCHER_P(FieldIIs, inner_matcher, "") {
   return ExplainMatchResult(inner_matcher, arg.i, result_listener);
 }
@@ -3717,17 +4028,11 @@ struct AStruct {
   const double y;  // A const field.
   Uncopyable z;    // An uncopyable field.
   const char* p;   // A pointer field.
-
- private:
-  GTEST_DISALLOW_ASSIGN_(AStruct);
 };
 
 // A derived struct for testing Field().
 struct DerivedStruct : public AStruct {
   char ch;
-
- private:
-  GTEST_DISALLOW_ASSIGN_(DerivedStruct);
 };
 
 // Tests that Field(&Foo::field, ...) works when field is non-const.
@@ -4697,20 +5002,18 @@ TEST(SizeIsTest, ExplainsResult) {
   Matcher<vector<int> > m1 = SizeIs(2);
   Matcher<vector<int> > m2 = SizeIs(Lt(2u));
   Matcher<vector<int> > m3 = SizeIs(AnyOf(0, 3));
-  Matcher<vector<int> > m4 = SizeIs(GreaterThan(1));
+  Matcher<vector<int> > m4 = SizeIs(Gt(1u));
   vector<int> container;
   EXPECT_EQ("whose size 0 doesn't match", Explain(m1, container));
   EXPECT_EQ("whose size 0 matches", Explain(m2, container));
   EXPECT_EQ("whose size 0 matches", Explain(m3, container));
-  EXPECT_EQ("whose size 0 doesn't match, which is 1 less than 1",
-            Explain(m4, container));
+  EXPECT_EQ("whose size 0 doesn't match", Explain(m4, container));
   container.push_back(0);
   container.push_back(0);
   EXPECT_EQ("whose size 2 matches", Explain(m1, container));
   EXPECT_EQ("whose size 2 doesn't match", Explain(m2, container));
   EXPECT_EQ("whose size 2 doesn't match", Explain(m3, container));
-  EXPECT_EQ("whose size 2 matches, which is 1 more than 1",
-            Explain(m4, container));
+  EXPECT_EQ("whose size 2 matches", Explain(m4, container));
 }
 
 #if GTEST_HAS_TYPED_TEST
@@ -6902,6 +7205,1354 @@ TEST_F(PredicateFormatterFromMatcherTest, DetectsFlakyShortCircuit) {
   EXPECT_EQ(expect, result.message());
 }
 
+// Tests for ElementsAre().
+
+TEST(ElementsAreTest, CanDescribeExpectingNoElement) {
+  Matcher<const vector<int>&> m = ElementsAre();
+  EXPECT_EQ("is empty", Describe(m));
+}
+
+TEST(ElementsAreTest, CanDescribeExpectingOneElement) {
+  Matcher<vector<int>> m = ElementsAre(Gt(5));
+  EXPECT_EQ("has 1 element that is > 5", Describe(m));
+}
+
+TEST(ElementsAreTest, CanDescribeExpectingManyElements) {
+  Matcher<list<std::string>> m = ElementsAre(StrEq("one"), "two");
+  EXPECT_EQ(
+      "has 2 elements where\n"
+      "element #0 is equal to \"one\",\n"
+      "element #1 is equal to \"two\"",
+      Describe(m));
+}
+
+TEST(ElementsAreTest, CanDescribeNegationOfExpectingNoElement) {
+  Matcher<vector<int>> m = ElementsAre();
+  EXPECT_EQ("isn't empty", DescribeNegation(m));
+}
+
+TEST(ElementsAreTest, CanDescribeNegationOfExpectingOneElment) {
+  Matcher<const list<int>&> m = ElementsAre(Gt(5));
+  EXPECT_EQ(
+      "doesn't have 1 element, or\n"
+      "element #0 isn't > 5",
+      DescribeNegation(m));
+}
+
+TEST(ElementsAreTest, CanDescribeNegationOfExpectingManyElements) {
+  Matcher<const list<std::string>&> m = ElementsAre("one", "two");
+  EXPECT_EQ(
+      "doesn't have 2 elements, or\n"
+      "element #0 isn't equal to \"one\", or\n"
+      "element #1 isn't equal to \"two\"",
+      DescribeNegation(m));
+}
+
+TEST(ElementsAreTest, DoesNotExplainTrivialMatch) {
+  Matcher<const list<int>&> m = ElementsAre(1, Ne(2));
+
+  list<int> test_list;
+  test_list.push_back(1);
+  test_list.push_back(3);
+  EXPECT_EQ("", Explain(m, test_list));  // No need to explain anything.
+}
+
+TEST(ElementsAreTest, ExplainsNonTrivialMatch) {
+  Matcher<const vector<int>&> m =
+      ElementsAre(GreaterThan(1), 0, GreaterThan(2));
+
+  const int a[] = {10, 0, 100};
+  vector<int> test_vector(std::begin(a), std::end(a));
+  EXPECT_EQ(
+      "whose element #0 matches, which is 9 more than 1,\n"
+      "and whose element #2 matches, which is 98 more than 2",
+      Explain(m, test_vector));
+}
+
+TEST(ElementsAreTest, CanExplainMismatchWrongSize) {
+  Matcher<const list<int>&> m = ElementsAre(1, 3);
+
+  list<int> test_list;
+  // No need to explain when the container is empty.
+  EXPECT_EQ("", Explain(m, test_list));
+
+  test_list.push_back(1);
+  EXPECT_EQ("which has 1 element", Explain(m, test_list));
+}
+
+TEST(ElementsAreTest, CanExplainMismatchRightSize) {
+  Matcher<const vector<int>&> m = ElementsAre(1, GreaterThan(5));
+
+  vector<int> v;
+  v.push_back(2);
+  v.push_back(1);
+  EXPECT_EQ("whose element #0 doesn't match", Explain(m, v));
+
+  v[0] = 1;
+  EXPECT_EQ("whose element #1 doesn't match, which is 4 less than 5",
+            Explain(m, v));
+}
+
+TEST(ElementsAreTest, MatchesOneElementVector) {
+  vector<std::string> test_vector;
+  test_vector.push_back("test string");
+
+  EXPECT_THAT(test_vector, ElementsAre(StrEq("test string")));
+}
+
+TEST(ElementsAreTest, MatchesOneElementList) {
+  list<std::string> test_list;
+  test_list.push_back("test string");
+
+  EXPECT_THAT(test_list, ElementsAre("test string"));
+}
+
+TEST(ElementsAreTest, MatchesThreeElementVector) {
+  vector<std::string> test_vector;
+  test_vector.push_back("one");
+  test_vector.push_back("two");
+  test_vector.push_back("three");
+
+  EXPECT_THAT(test_vector, ElementsAre("one", StrEq("two"), _));
+}
+
+TEST(ElementsAreTest, MatchesOneElementEqMatcher) {
+  vector<int> test_vector;
+  test_vector.push_back(4);
+
+  EXPECT_THAT(test_vector, ElementsAre(Eq(4)));
+}
+
+TEST(ElementsAreTest, MatchesOneElementAnyMatcher) {
+  vector<int> test_vector;
+  test_vector.push_back(4);
+
+  EXPECT_THAT(test_vector, ElementsAre(_));
+}
+
+TEST(ElementsAreTest, MatchesOneElementValue) {
+  vector<int> test_vector;
+  test_vector.push_back(4);
+
+  EXPECT_THAT(test_vector, ElementsAre(4));
+}
+
+TEST(ElementsAreTest, MatchesThreeElementsMixedMatchers) {
+  vector<int> test_vector;
+  test_vector.push_back(1);
+  test_vector.push_back(2);
+  test_vector.push_back(3);
+
+  EXPECT_THAT(test_vector, ElementsAre(1, Eq(2), _));
+}
+
+TEST(ElementsAreTest, MatchesTenElementVector) {
+  const int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+  vector<int> test_vector(std::begin(a), std::end(a));
+
+  EXPECT_THAT(test_vector,
+              // The element list can contain values and/or matchers
+              // of different types.
+              ElementsAre(0, Ge(0), _, 3, 4, Ne(2), Eq(6), 7, 8, _));
+}
+
+TEST(ElementsAreTest, DoesNotMatchWrongSize) {
+  vector<std::string> test_vector;
+  test_vector.push_back("test string");
+  test_vector.push_back("test string");
+
+  Matcher<vector<std::string>> m = ElementsAre(StrEq("test string"));
+  EXPECT_FALSE(m.Matches(test_vector));
+}
+
+TEST(ElementsAreTest, DoesNotMatchWrongValue) {
+  vector<std::string> test_vector;
+  test_vector.push_back("other string");
+
+  Matcher<vector<std::string>> m = ElementsAre(StrEq("test string"));
+  EXPECT_FALSE(m.Matches(test_vector));
+}
+
+TEST(ElementsAreTest, DoesNotMatchWrongOrder) {
+  vector<std::string> test_vector;
+  test_vector.push_back("one");
+  test_vector.push_back("three");
+  test_vector.push_back("two");
+
+  Matcher<vector<std::string>> m =
+      ElementsAre(StrEq("one"), StrEq("two"), StrEq("three"));
+  EXPECT_FALSE(m.Matches(test_vector));
+}
+
+TEST(ElementsAreTest, WorksForNestedContainer) {
+  constexpr std::array<const char*, 2> strings = {{"Hi", "world"}};
+
+  vector<list<char>> nested;
+  for (const auto& s : strings) {
+    nested.emplace_back(s, s + strlen(s));
+  }
+
+  EXPECT_THAT(nested, ElementsAre(ElementsAre('H', Ne('e')),
+                                  ElementsAre('w', 'o', _, _, 'd')));
+  EXPECT_THAT(nested, Not(ElementsAre(ElementsAre('H', 'e'),
+                                      ElementsAre('w', 'o', _, _, 'd'))));
+}
+
+TEST(ElementsAreTest, WorksWithByRefElementMatchers) {
+  int a[] = {0, 1, 2};
+  vector<int> v(std::begin(a), std::end(a));
+
+  EXPECT_THAT(v, ElementsAre(Ref(v[0]), Ref(v[1]), Ref(v[2])));
+  EXPECT_THAT(v, Not(ElementsAre(Ref(v[0]), Ref(v[1]), Ref(a[2]))));
+}
+
+TEST(ElementsAreTest, WorksWithContainerPointerUsingPointee) {
+  int a[] = {0, 1, 2};
+  vector<int> v(std::begin(a), std::end(a));
+
+  EXPECT_THAT(&v, Pointee(ElementsAre(0, 1, _)));
+  EXPECT_THAT(&v, Not(Pointee(ElementsAre(0, _, 3))));
+}
+
+TEST(ElementsAreTest, WorksWithNativeArrayPassedByReference) {
+  int array[] = {0, 1, 2};
+  EXPECT_THAT(array, ElementsAre(0, 1, _));
+  EXPECT_THAT(array, Not(ElementsAre(1, _, _)));
+  EXPECT_THAT(array, Not(ElementsAre(0, _)));
+}
+
+class NativeArrayPassedAsPointerAndSize {
+ public:
+  NativeArrayPassedAsPointerAndSize() {}
+
+  MOCK_METHOD(void, Helper, (int* array, int size));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(NativeArrayPassedAsPointerAndSize);
+};
+
+TEST(ElementsAreTest, WorksWithNativeArrayPassedAsPointerAndSize) {
+  int array[] = {0, 1};
+  ::std::tuple<int*, size_t> array_as_tuple(array, 2);
+  EXPECT_THAT(array_as_tuple, ElementsAre(0, 1));
+  EXPECT_THAT(array_as_tuple, Not(ElementsAre(0)));
+
+  NativeArrayPassedAsPointerAndSize helper;
+  EXPECT_CALL(helper, Helper(_, _)).With(ElementsAre(0, 1));
+  helper.Helper(array, 2);
+}
+
+TEST(ElementsAreTest, WorksWithTwoDimensionalNativeArray) {
+  const char a2[][3] = {"hi", "lo"};
+  EXPECT_THAT(a2, ElementsAre(ElementsAre('h', 'i', '\0'),
+                              ElementsAre('l', 'o', '\0')));
+  EXPECT_THAT(a2, ElementsAre(StrEq("hi"), StrEq("lo")));
+  EXPECT_THAT(a2, ElementsAre(Not(ElementsAre('h', 'o', '\0')),
+                              ElementsAre('l', 'o', '\0')));
+}
+
+TEST(ElementsAreTest, AcceptsStringLiteral) {
+  std::string array[] = {"hi", "one", "two"};
+  EXPECT_THAT(array, ElementsAre("hi", "one", "two"));
+  EXPECT_THAT(array, Not(ElementsAre("hi", "one", "too")));
+}
+
+// Declared here with the size unknown.  Defined AFTER the following test.
+extern const char kHi[];
+
+TEST(ElementsAreTest, AcceptsArrayWithUnknownSize) {
+  // The size of kHi is not known in this test, but ElementsAre() should
+  // still accept it.
+
+  std::string array1[] = {"hi"};
+  EXPECT_THAT(array1, ElementsAre(kHi));
+
+  std::string array2[] = {"ho"};
+  EXPECT_THAT(array2, Not(ElementsAre(kHi)));
+}
+
+const char kHi[] = "hi";
+
+TEST(ElementsAreTest, MakesCopyOfArguments) {
+  int x = 1;
+  int y = 2;
+  // This should make a copy of x and y.
+  ::testing::internal::ElementsAreMatcher<std::tuple<int, int>>
+      polymorphic_matcher = ElementsAre(x, y);
+  // Changing x and y now shouldn't affect the meaning of the above matcher.
+  x = y = 0;
+  const int array1[] = {1, 2};
+  EXPECT_THAT(array1, polymorphic_matcher);
+  const int array2[] = {0, 0};
+  EXPECT_THAT(array2, Not(polymorphic_matcher));
+}
+
+// Tests for ElementsAreArray().  Since ElementsAreArray() shares most
+// of the implementation with ElementsAre(), we don't test it as
+// thoroughly here.
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithValueArray) {
+  const int a[] = {1, 2, 3};
+
+  vector<int> test_vector(std::begin(a), std::end(a));
+  EXPECT_THAT(test_vector, ElementsAreArray(a));
+
+  test_vector[2] = 0;
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(a)));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithArraySize) {
+  std::array<const char*, 3> a = {{"one", "two", "three"}};
+
+  vector<std::string> test_vector(std::begin(a), std::end(a));
+  EXPECT_THAT(test_vector, ElementsAreArray(a.data(), a.size()));
+
+  const char** p = a.data();
+  test_vector[0] = "1";
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(p, a.size())));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithoutArraySize) {
+  const char* a[] = {"one", "two", "three"};
+
+  vector<std::string> test_vector(std::begin(a), std::end(a));
+  EXPECT_THAT(test_vector, ElementsAreArray(a));
+
+  test_vector[0] = "1";
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(a)));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherArray) {
+  const Matcher<std::string> kMatcherArray[] = {StrEq("one"), StrEq("two"),
+                                                StrEq("three")};
+
+  vector<std::string> test_vector;
+  test_vector.push_back("one");
+  test_vector.push_back("two");
+  test_vector.push_back("three");
+  EXPECT_THAT(test_vector, ElementsAreArray(kMatcherArray));
+
+  test_vector.push_back("three");
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(kMatcherArray)));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithVector) {
+  const int a[] = {1, 2, 3};
+  vector<int> test_vector(std::begin(a), std::end(a));
+  const vector<int> expected(std::begin(a), std::end(a));
+  EXPECT_THAT(test_vector, ElementsAreArray(expected));
+  test_vector.push_back(4);
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(expected)));
+}
+
+TEST(ElementsAreArrayTest, TakesInitializerList) {
+  const int a[5] = {1, 2, 3, 4, 5};
+  EXPECT_THAT(a, ElementsAreArray({1, 2, 3, 4, 5}));
+  EXPECT_THAT(a, Not(ElementsAreArray({1, 2, 3, 5, 4})));
+  EXPECT_THAT(a, Not(ElementsAreArray({1, 2, 3, 4, 6})));
+}
+
+TEST(ElementsAreArrayTest, TakesInitializerListOfCStrings) {
+  const std::string a[5] = {"a", "b", "c", "d", "e"};
+  EXPECT_THAT(a, ElementsAreArray({"a", "b", "c", "d", "e"}));
+  EXPECT_THAT(a, Not(ElementsAreArray({"a", "b", "c", "e", "d"})));
+  EXPECT_THAT(a, Not(ElementsAreArray({"a", "b", "c", "d", "ef"})));
+}
+
+TEST(ElementsAreArrayTest, TakesInitializerListOfSameTypedMatchers) {
+  const int a[5] = {1, 2, 3, 4, 5};
+  EXPECT_THAT(a, ElementsAreArray({Eq(1), Eq(2), Eq(3), Eq(4), Eq(5)}));
+  EXPECT_THAT(a, Not(ElementsAreArray({Eq(1), Eq(2), Eq(3), Eq(4), Eq(6)})));
+}
+
+TEST(ElementsAreArrayTest, TakesInitializerListOfDifferentTypedMatchers) {
+  const int a[5] = {1, 2, 3, 4, 5};
+  // The compiler cannot infer the type of the initializer list if its
+  // elements have different types.  We must explicitly specify the
+  // unified element type in this case.
+  EXPECT_THAT(
+      a, ElementsAreArray<Matcher<int>>({Eq(1), Ne(-2), Ge(3), Le(4), Eq(5)}));
+  EXPECT_THAT(a, Not(ElementsAreArray<Matcher<int>>(
+                     {Eq(1), Ne(-2), Ge(3), Le(4), Eq(6)})));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherVector) {
+  const int a[] = {1, 2, 3};
+  const Matcher<int> kMatchers[] = {Eq(1), Eq(2), Eq(3)};
+  vector<int> test_vector(std::begin(a), std::end(a));
+  const vector<Matcher<int>> expected(std::begin(kMatchers),
+                                      std::end(kMatchers));
+  EXPECT_THAT(test_vector, ElementsAreArray(expected));
+  test_vector.push_back(4);
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(expected)));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithIteratorRange) {
+  const int a[] = {1, 2, 3};
+  const vector<int> test_vector(std::begin(a), std::end(a));
+  const vector<int> expected(std::begin(a), std::end(a));
+  EXPECT_THAT(test_vector, ElementsAreArray(expected.begin(), expected.end()));
+  // Pointers are iterators, too.
+  EXPECT_THAT(test_vector, ElementsAreArray(std::begin(a), std::end(a)));
+  // The empty range of NULL pointers should also be okay.
+  int* const null_int = nullptr;
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(null_int, null_int)));
+  EXPECT_THAT((vector<int>()), ElementsAreArray(null_int, null_int));
+}
+
+// Since ElementsAre() and ElementsAreArray() share much of the
+// implementation, we only do a sanity test for native arrays here.
+TEST(ElementsAreArrayTest, WorksWithNativeArray) {
+  ::std::string a[] = {"hi", "ho"};
+  ::std::string b[] = {"hi", "ho"};
+
+  EXPECT_THAT(a, ElementsAreArray(b));
+  EXPECT_THAT(a, ElementsAreArray(b, 2));
+  EXPECT_THAT(a, Not(ElementsAreArray(b, 1)));
+}
+
+TEST(ElementsAreArrayTest, SourceLifeSpan) {
+  const int a[] = {1, 2, 3};
+  vector<int> test_vector(std::begin(a), std::end(a));
+  vector<int> expect(std::begin(a), std::end(a));
+  ElementsAreArrayMatcher<int> matcher_maker =
+      ElementsAreArray(expect.begin(), expect.end());
+  EXPECT_THAT(test_vector, matcher_maker);
+  // Changing in place the values that initialized matcher_maker should not
+  // affect matcher_maker anymore. It should have made its own copy of them.
+  for (int& i : expect) {
+    i += 10;
+  }
+  EXPECT_THAT(test_vector, matcher_maker);
+  test_vector.push_back(3);
+  EXPECT_THAT(test_vector, Not(matcher_maker));
+}
+
+// Tests for the MATCHER*() macro family.
+
+// Tests that a simple MATCHER() definition works.
+
+MATCHER(IsEven, "") { return (arg % 2) == 0; }
+
+TEST(MatcherMacroTest, Works) {
+  const Matcher<int> m = IsEven();
+  EXPECT_TRUE(m.Matches(6));
+  EXPECT_FALSE(m.Matches(7));
+
+  EXPECT_EQ("is even", Describe(m));
+  EXPECT_EQ("not (is even)", DescribeNegation(m));
+  EXPECT_EQ("", Explain(m, 6));
+  EXPECT_EQ("", Explain(m, 7));
+}
+
+// This also tests that the description string can reference 'negation'.
+MATCHER(IsEven2, negation ? "is odd" : "is even") {
+  if ((arg % 2) == 0) {
+    // Verifies that we can stream to result_listener, a listener
+    // supplied by the MATCHER macro implicitly.
+    *result_listener << "OK";
+    return true;
+  } else {
+    *result_listener << "% 2 == " << (arg % 2);
+    return false;
+  }
+}
+
+// This also tests that the description string can reference matcher
+// parameters.
+MATCHER_P2(EqSumOf, x, y,
+           std::string(negation ? "doesn't equal" : "equals") + " the sum of " +
+               PrintToString(x) + " and " + PrintToString(y)) {
+  if (arg == (x + y)) {
+    *result_listener << "OK";
+    return true;
+  } else {
+    // Verifies that we can stream to the underlying stream of
+    // result_listener.
+    if (result_listener->stream() != nullptr) {
+      *result_listener->stream() << "diff == " << (x + y - arg);
+    }
+    return false;
+  }
+}
+
+// Tests that the matcher description can reference 'negation' and the
+// matcher parameters.
+TEST(MatcherMacroTest, DescriptionCanReferenceNegationAndParameters) {
+  const Matcher<int> m1 = IsEven2();
+  EXPECT_EQ("is even", Describe(m1));
+  EXPECT_EQ("is odd", DescribeNegation(m1));
+
+  const Matcher<int> m2 = EqSumOf(5, 9);
+  EXPECT_EQ("equals the sum of 5 and 9", Describe(m2));
+  EXPECT_EQ("doesn't equal the sum of 5 and 9", DescribeNegation(m2));
+}
+
+// Tests explaining match result in a MATCHER* macro.
+TEST(MatcherMacroTest, CanExplainMatchResult) {
+  const Matcher<int> m1 = IsEven2();
+  EXPECT_EQ("OK", Explain(m1, 4));
+  EXPECT_EQ("% 2 == 1", Explain(m1, 5));
+
+  const Matcher<int> m2 = EqSumOf(1, 2);
+  EXPECT_EQ("OK", Explain(m2, 3));
+  EXPECT_EQ("diff == -1", Explain(m2, 4));
+}
+
+// Tests that the body of MATCHER() can reference the type of the
+// value being matched.
+
+MATCHER(IsEmptyString, "") {
+  StaticAssertTypeEq<::std::string, arg_type>();
+  return arg.empty();
+}
+
+MATCHER(IsEmptyStringByRef, "") {
+  StaticAssertTypeEq<const ::std::string&, arg_type>();
+  return arg.empty();
+}
+
+TEST(MatcherMacroTest, CanReferenceArgType) {
+  const Matcher<::std::string> m1 = IsEmptyString();
+  EXPECT_TRUE(m1.Matches(""));
+
+  const Matcher<const ::std::string&> m2 = IsEmptyStringByRef();
+  EXPECT_TRUE(m2.Matches(""));
+}
+
+// Tests that MATCHER() can be used in a namespace.
+
+namespace matcher_test {
+MATCHER(IsOdd, "") { return (arg % 2) != 0; }
+}  // namespace matcher_test
+
+TEST(MatcherMacroTest, WorksInNamespace) {
+  Matcher<int> m = matcher_test::IsOdd();
+  EXPECT_FALSE(m.Matches(4));
+  EXPECT_TRUE(m.Matches(5));
+}
+
+// Tests that Value() can be used to compose matchers.
+MATCHER(IsPositiveOdd, "") {
+  return Value(arg, matcher_test::IsOdd()) && arg > 0;
+}
+
+TEST(MatcherMacroTest, CanBeComposedUsingValue) {
+  EXPECT_THAT(3, IsPositiveOdd());
+  EXPECT_THAT(4, Not(IsPositiveOdd()));
+  EXPECT_THAT(-1, Not(IsPositiveOdd()));
+}
+
+// Tests that a simple MATCHER_P() definition works.
+
+MATCHER_P(IsGreaterThan32And, n, "") { return arg > 32 && arg > n; }
+
+TEST(MatcherPMacroTest, Works) {
+  const Matcher<int> m = IsGreaterThan32And(5);
+  EXPECT_TRUE(m.Matches(36));
+  EXPECT_FALSE(m.Matches(5));
+
+  EXPECT_EQ("is greater than 32 and 5", Describe(m));
+  EXPECT_EQ("not (is greater than 32 and 5)", DescribeNegation(m));
+  EXPECT_EQ("", Explain(m, 36));
+  EXPECT_EQ("", Explain(m, 5));
+}
+
+// Tests that the description is calculated correctly from the matcher name.
+MATCHER_P(_is_Greater_Than32and_, n, "") { return arg > 32 && arg > n; }
+
+TEST(MatcherPMacroTest, GeneratesCorrectDescription) {
+  const Matcher<int> m = _is_Greater_Than32and_(5);
+
+  EXPECT_EQ("is greater than 32 and 5", Describe(m));
+  EXPECT_EQ("not (is greater than 32 and 5)", DescribeNegation(m));
+  EXPECT_EQ("", Explain(m, 36));
+  EXPECT_EQ("", Explain(m, 5));
+}
+
+// Tests that a MATCHER_P matcher can be explicitly instantiated with
+// a reference parameter type.
+
+class UncopyableFoo {
+ public:
+  explicit UncopyableFoo(char value) : value_(value) { (void)value_; }
+
+  UncopyableFoo(const UncopyableFoo&) = delete;
+  void operator=(const UncopyableFoo&) = delete;
+
+ private:
+  char value_;
+};
+
+MATCHER_P(ReferencesUncopyable, variable, "") { return &arg == &variable; }
+
+TEST(MatcherPMacroTest, WorksWhenExplicitlyInstantiatedWithReference) {
+  UncopyableFoo foo1('1'), foo2('2');
+  const Matcher<const UncopyableFoo&> m =
+      ReferencesUncopyable<const UncopyableFoo&>(foo1);
+
+  EXPECT_TRUE(m.Matches(foo1));
+  EXPECT_FALSE(m.Matches(foo2));
+
+  // We don't want the address of the parameter printed, as most
+  // likely it will just annoy the user.  If the address is
+  // interesting, the user should consider passing the parameter by
+  // pointer instead.
+  EXPECT_EQ("references uncopyable 1-byte object <31>", Describe(m));
+}
+
+// Tests that the body of MATCHER_Pn() can reference the parameter
+// types.
+
+MATCHER_P3(ParamTypesAreIntLongAndChar, foo, bar, baz, "") {
+  StaticAssertTypeEq<int, foo_type>();
+  StaticAssertTypeEq<long, bar_type>();  // NOLINT
+  StaticAssertTypeEq<char, baz_type>();
+  return arg == 0;
+}
+
+TEST(MatcherPnMacroTest, CanReferenceParamTypes) {
+  EXPECT_THAT(0, ParamTypesAreIntLongAndChar(10, 20L, 'a'));
+}
+
+// Tests that a MATCHER_Pn matcher can be explicitly instantiated with
+// reference parameter types.
+
+MATCHER_P2(ReferencesAnyOf, variable1, variable2, "") {
+  return &arg == &variable1 || &arg == &variable2;
+}
+
+TEST(MatcherPnMacroTest, WorksWhenExplicitlyInstantiatedWithReferences) {
+  UncopyableFoo foo1('1'), foo2('2'), foo3('3');
+  const Matcher<const UncopyableFoo&> const_m =
+      ReferencesAnyOf<const UncopyableFoo&, const UncopyableFoo&>(foo1, foo2);
+
+  EXPECT_TRUE(const_m.Matches(foo1));
+  EXPECT_TRUE(const_m.Matches(foo2));
+  EXPECT_FALSE(const_m.Matches(foo3));
+
+  const Matcher<UncopyableFoo&> m =
+      ReferencesAnyOf<UncopyableFoo&, UncopyableFoo&>(foo1, foo2);
+
+  EXPECT_TRUE(m.Matches(foo1));
+  EXPECT_TRUE(m.Matches(foo2));
+  EXPECT_FALSE(m.Matches(foo3));
+}
+
+TEST(MatcherPnMacroTest,
+     GeneratesCorretDescriptionWhenExplicitlyInstantiatedWithReferences) {
+  UncopyableFoo foo1('1'), foo2('2');
+  const Matcher<const UncopyableFoo&> m =
+      ReferencesAnyOf<const UncopyableFoo&, const UncopyableFoo&>(foo1, foo2);
+
+  // We don't want the addresses of the parameters printed, as most
+  // likely they will just annoy the user.  If the addresses are
+  // interesting, the user should consider passing the parameters by
+  // pointers instead.
+  EXPECT_EQ("references any of (1-byte object <31>, 1-byte object <32>)",
+            Describe(m));
+}
+
+// Tests that a simple MATCHER_P2() definition works.
+
+MATCHER_P2(IsNotInClosedRange, low, hi, "") { return arg < low || arg > hi; }
+
+TEST(MatcherPnMacroTest, Works) {
+  const Matcher<const long&> m = IsNotInClosedRange(10, 20);  // NOLINT
+  EXPECT_TRUE(m.Matches(36L));
+  EXPECT_FALSE(m.Matches(15L));
+
+  EXPECT_EQ("is not in closed range (10, 20)", Describe(m));
+  EXPECT_EQ("not (is not in closed range (10, 20))", DescribeNegation(m));
+  EXPECT_EQ("", Explain(m, 36L));
+  EXPECT_EQ("", Explain(m, 15L));
+}
+
+// Tests that MATCHER*() definitions can be overloaded on the number
+// of parameters; also tests MATCHER_Pn() where n >= 3.
+
+MATCHER(EqualsSumOf, "") { return arg == 0; }
+MATCHER_P(EqualsSumOf, a, "") { return arg == a; }
+MATCHER_P2(EqualsSumOf, a, b, "") { return arg == a + b; }
+MATCHER_P3(EqualsSumOf, a, b, c, "") { return arg == a + b + c; }
+MATCHER_P4(EqualsSumOf, a, b, c, d, "") { return arg == a + b + c + d; }
+MATCHER_P5(EqualsSumOf, a, b, c, d, e, "") { return arg == a + b + c + d + e; }
+MATCHER_P6(EqualsSumOf, a, b, c, d, e, f, "") {
+  return arg == a + b + c + d + e + f;
+}
+MATCHER_P7(EqualsSumOf, a, b, c, d, e, f, g, "") {
+  return arg == a + b + c + d + e + f + g;
+}
+MATCHER_P8(EqualsSumOf, a, b, c, d, e, f, g, h, "") {
+  return arg == a + b + c + d + e + f + g + h;
+}
+MATCHER_P9(EqualsSumOf, a, b, c, d, e, f, g, h, i, "") {
+  return arg == a + b + c + d + e + f + g + h + i;
+}
+MATCHER_P10(EqualsSumOf, a, b, c, d, e, f, g, h, i, j, "") {
+  return arg == a + b + c + d + e + f + g + h + i + j;
+}
+
+TEST(MatcherPnMacroTest, CanBeOverloadedOnNumberOfParameters) {
+  EXPECT_THAT(0, EqualsSumOf());
+  EXPECT_THAT(1, EqualsSumOf(1));
+  EXPECT_THAT(12, EqualsSumOf(10, 2));
+  EXPECT_THAT(123, EqualsSumOf(100, 20, 3));
+  EXPECT_THAT(1234, EqualsSumOf(1000, 200, 30, 4));
+  EXPECT_THAT(12345, EqualsSumOf(10000, 2000, 300, 40, 5));
+  EXPECT_THAT("abcdef",
+              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f'));
+  EXPECT_THAT("abcdefg",
+              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g'));
+  EXPECT_THAT("abcdefgh", EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e",
+                                      'f', 'g', "h"));
+  EXPECT_THAT("abcdefghi", EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e",
+                                       'f', 'g', "h", 'i'));
+  EXPECT_THAT("abcdefghij",
+              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g', "h",
+                          'i', ::std::string("j")));
+
+  EXPECT_THAT(1, Not(EqualsSumOf()));
+  EXPECT_THAT(-1, Not(EqualsSumOf(1)));
+  EXPECT_THAT(-12, Not(EqualsSumOf(10, 2)));
+  EXPECT_THAT(-123, Not(EqualsSumOf(100, 20, 3)));
+  EXPECT_THAT(-1234, Not(EqualsSumOf(1000, 200, 30, 4)));
+  EXPECT_THAT(-12345, Not(EqualsSumOf(10000, 2000, 300, 40, 5)));
+  EXPECT_THAT("abcdef ",
+              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f')));
+  EXPECT_THAT("abcdefg ", Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d",
+                                          "e", 'f', 'g')));
+  EXPECT_THAT("abcdefgh ", Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d",
+                                           "e", 'f', 'g', "h")));
+  EXPECT_THAT("abcdefghi ", Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d",
+                                            "e", 'f', 'g', "h", 'i')));
+  EXPECT_THAT("abcdefghij ",
+              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
+                              "h", 'i', ::std::string("j"))));
+}
+
+// Tests that a MATCHER_Pn() definition can be instantiated with any
+// compatible parameter types.
+TEST(MatcherPnMacroTest, WorksForDifferentParameterTypes) {
+  EXPECT_THAT(123, EqualsSumOf(100L, 20, static_cast<char>(3)));
+  EXPECT_THAT("abcd", EqualsSumOf(::std::string("a"), "b", 'c', "d"));
+
+  EXPECT_THAT(124, Not(EqualsSumOf(100L, 20, static_cast<char>(3))));
+  EXPECT_THAT("abcde", Not(EqualsSumOf(::std::string("a"), "b", 'c', "d")));
+}
+
+// Tests that the matcher body can promote the parameter types.
+
+MATCHER_P2(EqConcat, prefix, suffix, "") {
+  // The following lines promote the two parameters to desired types.
+  std::string prefix_str(prefix);
+  char suffix_char = static_cast<char>(suffix);
+  return arg == prefix_str + suffix_char;
+}
+
+TEST(MatcherPnMacroTest, SimpleTypePromotion) {
+  Matcher<std::string> no_promo = EqConcat(std::string("foo"), 't');
+  Matcher<const std::string&> promo = EqConcat("foo", static_cast<int>('t'));
+  EXPECT_FALSE(no_promo.Matches("fool"));
+  EXPECT_FALSE(promo.Matches("fool"));
+  EXPECT_TRUE(no_promo.Matches("foot"));
+  EXPECT_TRUE(promo.Matches("foot"));
+}
+
+// Verifies the type of a MATCHER*.
+
+TEST(MatcherPnMacroTest, TypesAreCorrect) {
+  // EqualsSumOf() must be assignable to a EqualsSumOfMatcher variable.
+  EqualsSumOfMatcher a0 = EqualsSumOf();
+
+  // EqualsSumOf(1) must be assignable to a EqualsSumOfMatcherP variable.
+  EqualsSumOfMatcherP<int> a1 = EqualsSumOf(1);
+
+  // EqualsSumOf(p1, ..., pk) must be assignable to a EqualsSumOfMatcherPk
+  // variable, and so on.
+  EqualsSumOfMatcherP2<int, char> a2 = EqualsSumOf(1, '2');
+  EqualsSumOfMatcherP3<int, int, char> a3 = EqualsSumOf(1, 2, '3');
+  EqualsSumOfMatcherP4<int, int, int, char> a4 = EqualsSumOf(1, 2, 3, '4');
+  EqualsSumOfMatcherP5<int, int, int, int, char> a5 =
+      EqualsSumOf(1, 2, 3, 4, '5');
+  EqualsSumOfMatcherP6<int, int, int, int, int, char> a6 =
+      EqualsSumOf(1, 2, 3, 4, 5, '6');
+  EqualsSumOfMatcherP7<int, int, int, int, int, int, char> a7 =
+      EqualsSumOf(1, 2, 3, 4, 5, 6, '7');
+  EqualsSumOfMatcherP8<int, int, int, int, int, int, int, char> a8 =
+      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, '8');
+  EqualsSumOfMatcherP9<int, int, int, int, int, int, int, int, char> a9 =
+      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, 8, '9');
+  EqualsSumOfMatcherP10<int, int, int, int, int, int, int, int, int, char> a10 =
+      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, 8, 9, '0');
+
+  // Avoid "unused variable" warnings.
+  (void)a0;
+  (void)a1;
+  (void)a2;
+  (void)a3;
+  (void)a4;
+  (void)a5;
+  (void)a6;
+  (void)a7;
+  (void)a8;
+  (void)a9;
+  (void)a10;
+}
+
+// Tests that matcher-typed parameters can be used in Value() inside a
+// MATCHER_Pn definition.
+
+// Succeeds if arg matches exactly 2 of the 3 matchers.
+MATCHER_P3(TwoOf, m1, m2, m3, "") {
+  const int count = static_cast<int>(Value(arg, m1)) +
+                    static_cast<int>(Value(arg, m2)) +
+                    static_cast<int>(Value(arg, m3));
+  return count == 2;
+}
+
+TEST(MatcherPnMacroTest, CanUseMatcherTypedParameterInValue) {
+  EXPECT_THAT(42, TwoOf(Gt(0), Lt(50), Eq(10)));
+  EXPECT_THAT(0, Not(TwoOf(Gt(-1), Lt(1), Eq(0))));
+}
+
+// Tests Contains().
+
+TEST(ContainsTest, ListMatchesWhenElementIsInContainer) {
+  list<int> some_list;
+  some_list.push_back(3);
+  some_list.push_back(1);
+  some_list.push_back(2);
+  EXPECT_THAT(some_list, Contains(1));
+  EXPECT_THAT(some_list, Contains(Gt(2.5)));
+  EXPECT_THAT(some_list, Contains(Eq(2.0f)));
+
+  list<std::string> another_list;
+  another_list.push_back("fee");
+  another_list.push_back("fie");
+  another_list.push_back("foe");
+  another_list.push_back("fum");
+  EXPECT_THAT(another_list, Contains(std::string("fee")));
+}
+
+TEST(ContainsTest, ListDoesNotMatchWhenElementIsNotInContainer) {
+  list<int> some_list;
+  some_list.push_back(3);
+  some_list.push_back(1);
+  EXPECT_THAT(some_list, Not(Contains(4)));
+}
+
+TEST(ContainsTest, SetMatchesWhenElementIsInContainer) {
+  set<int> some_set;
+  some_set.insert(3);
+  some_set.insert(1);
+  some_set.insert(2);
+  EXPECT_THAT(some_set, Contains(Eq(1.0)));
+  EXPECT_THAT(some_set, Contains(Eq(3.0f)));
+  EXPECT_THAT(some_set, Contains(2));
+
+  set<std::string> another_set;
+  another_set.insert("fee");
+  another_set.insert("fie");
+  another_set.insert("foe");
+  another_set.insert("fum");
+  EXPECT_THAT(another_set, Contains(Eq(std::string("fum"))));
+}
+
+TEST(ContainsTest, SetDoesNotMatchWhenElementIsNotInContainer) {
+  set<int> some_set;
+  some_set.insert(3);
+  some_set.insert(1);
+  EXPECT_THAT(some_set, Not(Contains(4)));
+
+  set<std::string> c_string_set;
+  c_string_set.insert("hello");
+  EXPECT_THAT(c_string_set, Not(Contains(std::string("goodbye"))));
+}
+
+TEST(ContainsTest, ExplainsMatchResultCorrectly) {
+  const int a[2] = {1, 2};
+  Matcher<const int(&)[2]> m = Contains(2);
+  EXPECT_EQ("whose element #1 matches", Explain(m, a));
+
+  m = Contains(3);
+  EXPECT_EQ("", Explain(m, a));
+
+  m = Contains(GreaterThan(0));
+  EXPECT_EQ("whose element #0 matches, which is 1 more than 0", Explain(m, a));
+
+  m = Contains(GreaterThan(10));
+  EXPECT_EQ("", Explain(m, a));
+}
+
+TEST(ContainsTest, DescribesItselfCorrectly) {
+  Matcher<vector<int>> m = Contains(1);
+  EXPECT_EQ("contains at least one element that is equal to 1", Describe(m));
+
+  Matcher<vector<int>> m2 = Not(m);
+  EXPECT_EQ("doesn't contain any element that is equal to 1", Describe(m2));
+}
+
+TEST(ContainsTest, MapMatchesWhenElementIsInContainer) {
+  map<std::string, int> my_map;
+  const char* bar = "a string";
+  my_map[bar] = 2;
+  EXPECT_THAT(my_map, Contains(pair<const char* const, int>(bar, 2)));
+
+  map<std::string, int> another_map;
+  another_map["fee"] = 1;
+  another_map["fie"] = 2;
+  another_map["foe"] = 3;
+  another_map["fum"] = 4;
+  EXPECT_THAT(another_map,
+              Contains(pair<const std::string, int>(std::string("fee"), 1)));
+  EXPECT_THAT(another_map, Contains(pair<const std::string, int>("fie", 2)));
+}
+
+TEST(ContainsTest, MapDoesNotMatchWhenElementIsNotInContainer) {
+  map<int, int> some_map;
+  some_map[1] = 11;
+  some_map[2] = 22;
+  EXPECT_THAT(some_map, Not(Contains(pair<const int, int>(2, 23))));
+}
+
+TEST(ContainsTest, ArrayMatchesWhenElementIsInContainer) {
+  const char* string_array[] = {"fee", "fie", "foe", "fum"};
+  EXPECT_THAT(string_array, Contains(Eq(std::string("fum"))));
+}
+
+TEST(ContainsTest, ArrayDoesNotMatchWhenElementIsNotInContainer) {
+  int int_array[] = {1, 2, 3, 4};
+  EXPECT_THAT(int_array, Not(Contains(5)));
+}
+
+TEST(ContainsTest, AcceptsMatcher) {
+  const int a[] = {1, 2, 3};
+  EXPECT_THAT(a, Contains(Gt(2)));
+  EXPECT_THAT(a, Not(Contains(Gt(4))));
+}
+
+TEST(ContainsTest, WorksForNativeArrayAsTuple) {
+  const int a[] = {1, 2};
+  const int* const pointer = a;
+  EXPECT_THAT(std::make_tuple(pointer, 2), Contains(1));
+  EXPECT_THAT(std::make_tuple(pointer, 2), Not(Contains(Gt(3))));
+}
+
+TEST(ContainsTest, WorksForTwoDimensionalNativeArray) {
+  int a[][3] = {{1, 2, 3}, {4, 5, 6}};
+  EXPECT_THAT(a, Contains(ElementsAre(4, 5, 6)));
+  EXPECT_THAT(a, Contains(Contains(5)));
+  EXPECT_THAT(a, Not(Contains(ElementsAre(3, 4, 5))));
+  EXPECT_THAT(a, Contains(Not(Contains(5))));
+}
+
+TEST(AllOfArrayTest, BasicForms) {
+  // Iterator
+  std::vector<int> v0{};
+  std::vector<int> v1{1};
+  std::vector<int> v2{2, 3};
+  std::vector<int> v3{4, 4, 4};
+  EXPECT_THAT(0, AllOfArray(v0.begin(), v0.end()));
+  EXPECT_THAT(1, AllOfArray(v1.begin(), v1.end()));
+  EXPECT_THAT(2, Not(AllOfArray(v1.begin(), v1.end())));
+  EXPECT_THAT(3, Not(AllOfArray(v2.begin(), v2.end())));
+  EXPECT_THAT(4, AllOfArray(v3.begin(), v3.end()));
+  // Pointer +  size
+  int ar[6] = {1, 2, 3, 4, 4, 4};
+  EXPECT_THAT(0, AllOfArray(ar, 0));
+  EXPECT_THAT(1, AllOfArray(ar, 1));
+  EXPECT_THAT(2, Not(AllOfArray(ar, 1)));
+  EXPECT_THAT(3, Not(AllOfArray(ar + 1, 3)));
+  EXPECT_THAT(4, AllOfArray(ar + 3, 3));
+  // Array
+  // int ar0[0];  Not usable
+  int ar1[1] = {1};
+  int ar2[2] = {2, 3};
+  int ar3[3] = {4, 4, 4};
+  // EXPECT_THAT(0, Not(AllOfArray(ar0)));  // Cannot work
+  EXPECT_THAT(1, AllOfArray(ar1));
+  EXPECT_THAT(2, Not(AllOfArray(ar1)));
+  EXPECT_THAT(3, Not(AllOfArray(ar2)));
+  EXPECT_THAT(4, AllOfArray(ar3));
+  // Container
+  EXPECT_THAT(0, AllOfArray(v0));
+  EXPECT_THAT(1, AllOfArray(v1));
+  EXPECT_THAT(2, Not(AllOfArray(v1)));
+  EXPECT_THAT(3, Not(AllOfArray(v2)));
+  EXPECT_THAT(4, AllOfArray(v3));
+  // Initializer
+  EXPECT_THAT(0, AllOfArray<int>({}));  // Requires template arg.
+  EXPECT_THAT(1, AllOfArray({1}));
+  EXPECT_THAT(2, Not(AllOfArray({1})));
+  EXPECT_THAT(3, Not(AllOfArray({2, 3})));
+  EXPECT_THAT(4, AllOfArray({4, 4, 4}));
+}
+
+TEST(AllOfArrayTest, Matchers) {
+  // vector
+  std::vector<Matcher<int>> matchers{Ge(1), Lt(2)};
+  EXPECT_THAT(0, Not(AllOfArray(matchers)));
+  EXPECT_THAT(1, AllOfArray(matchers));
+  EXPECT_THAT(2, Not(AllOfArray(matchers)));
+  // initializer_list
+  EXPECT_THAT(0, Not(AllOfArray({Ge(0), Ge(1)})));
+  EXPECT_THAT(1, AllOfArray({Ge(0), Ge(1)}));
+}
+
+TEST(AnyOfArrayTest, BasicForms) {
+  // Iterator
+  std::vector<int> v0{};
+  std::vector<int> v1{1};
+  std::vector<int> v2{2, 3};
+  EXPECT_THAT(0, Not(AnyOfArray(v0.begin(), v0.end())));
+  EXPECT_THAT(1, AnyOfArray(v1.begin(), v1.end()));
+  EXPECT_THAT(2, Not(AnyOfArray(v1.begin(), v1.end())));
+  EXPECT_THAT(3, AnyOfArray(v2.begin(), v2.end()));
+  EXPECT_THAT(4, Not(AnyOfArray(v2.begin(), v2.end())));
+  // Pointer +  size
+  int ar[3] = {1, 2, 3};
+  EXPECT_THAT(0, Not(AnyOfArray(ar, 0)));
+  EXPECT_THAT(1, AnyOfArray(ar, 1));
+  EXPECT_THAT(2, Not(AnyOfArray(ar, 1)));
+  EXPECT_THAT(3, AnyOfArray(ar + 1, 2));
+  EXPECT_THAT(4, Not(AnyOfArray(ar + 1, 2)));
+  // Array
+  // int ar0[0];  Not usable
+  int ar1[1] = {1};
+  int ar2[2] = {2, 3};
+  // EXPECT_THAT(0, Not(AnyOfArray(ar0)));  // Cannot work
+  EXPECT_THAT(1, AnyOfArray(ar1));
+  EXPECT_THAT(2, Not(AnyOfArray(ar1)));
+  EXPECT_THAT(3, AnyOfArray(ar2));
+  EXPECT_THAT(4, Not(AnyOfArray(ar2)));
+  // Container
+  EXPECT_THAT(0, Not(AnyOfArray(v0)));
+  EXPECT_THAT(1, AnyOfArray(v1));
+  EXPECT_THAT(2, Not(AnyOfArray(v1)));
+  EXPECT_THAT(3, AnyOfArray(v2));
+  EXPECT_THAT(4, Not(AnyOfArray(v2)));
+  // Initializer
+  EXPECT_THAT(0, Not(AnyOfArray<int>({})));  // Requires template arg.
+  EXPECT_THAT(1, AnyOfArray({1}));
+  EXPECT_THAT(2, Not(AnyOfArray({1})));
+  EXPECT_THAT(3, AnyOfArray({2, 3}));
+  EXPECT_THAT(4, Not(AnyOfArray({2, 3})));
+}
+
+TEST(AnyOfArrayTest, Matchers) {
+  // We negate test AllOfArrayTest.Matchers.
+  // vector
+  std::vector<Matcher<int>> matchers{Lt(1), Ge(2)};
+  EXPECT_THAT(0, AnyOfArray(matchers));
+  EXPECT_THAT(1, Not(AnyOfArray(matchers)));
+  EXPECT_THAT(2, AnyOfArray(matchers));
+  // initializer_list
+  EXPECT_THAT(0, AnyOfArray({Lt(0), Lt(1)}));
+  EXPECT_THAT(1, Not(AllOfArray({Lt(0), Lt(1)})));
+}
+
+TEST(AnyOfArrayTest, ExplainsMatchResultCorrectly) {
+  // AnyOfArray and AllOfArry use the same underlying template-template,
+  // thus it is sufficient to test one here.
+  const std::vector<int> v0{};
+  const std::vector<int> v1{1};
+  const std::vector<int> v2{2, 3};
+  const Matcher<int> m0 = AnyOfArray(v0);
+  const Matcher<int> m1 = AnyOfArray(v1);
+  const Matcher<int> m2 = AnyOfArray(v2);
+  EXPECT_EQ("", Explain(m0, 0));
+  EXPECT_EQ("", Explain(m1, 1));
+  EXPECT_EQ("", Explain(m1, 2));
+  EXPECT_EQ("", Explain(m2, 3));
+  EXPECT_EQ("", Explain(m2, 4));
+  EXPECT_EQ("()", Describe(m0));
+  EXPECT_EQ("(is equal to 1)", Describe(m1));
+  EXPECT_EQ("(is equal to 2) or (is equal to 3)", Describe(m2));
+  EXPECT_EQ("()", DescribeNegation(m0));
+  EXPECT_EQ("(isn't equal to 1)", DescribeNegation(m1));
+  EXPECT_EQ("(isn't equal to 2) and (isn't equal to 3)", DescribeNegation(m2));
+  // Explain with matchers
+  const Matcher<int> g1 = AnyOfArray({GreaterThan(1)});
+  const Matcher<int> g2 = AnyOfArray({GreaterThan(1), GreaterThan(2)});
+  // Explains the first positiv match and all prior negative matches...
+  EXPECT_EQ("which is 1 less than 1", Explain(g1, 0));
+  EXPECT_EQ("which is the same as 1", Explain(g1, 1));
+  EXPECT_EQ("which is 1 more than 1", Explain(g1, 2));
+  EXPECT_EQ("which is 1 less than 1, and which is 2 less than 2",
+            Explain(g2, 0));
+  EXPECT_EQ("which is the same as 1, and which is 1 less than 2",
+            Explain(g2, 1));
+  EXPECT_EQ("which is 1 more than 1",  // Only the first
+            Explain(g2, 2));
+}
+
+TEST(AllOfTest, HugeMatcher) {
+  // Verify that using AllOf with many arguments doesn't cause
+  // the compiler to exceed template instantiation depth limit.
+  EXPECT_THAT(0, testing::AllOf(_, _, _, _, _, _, _, _, _,
+                                testing::AllOf(_, _, _, _, _, _, _, _, _, _)));
+}
+
+TEST(AnyOfTest, HugeMatcher) {
+  // Verify that using AnyOf with many arguments doesn't cause
+  // the compiler to exceed template instantiation depth limit.
+  EXPECT_THAT(0, testing::AnyOf(_, _, _, _, _, _, _, _, _,
+                                testing::AnyOf(_, _, _, _, _, _, _, _, _, _)));
+}
+
+namespace adl_test {
+
+// Verifies that the implementation of ::testing::AllOf and ::testing::AnyOf
+// don't issue unqualified recursive calls.  If they do, the argument dependent
+// name lookup will cause AllOf/AnyOf in the 'adl_test' namespace to be found
+// as a candidate and the compilation will break due to an ambiguous overload.
+
+// The matcher must be in the same namespace as AllOf/AnyOf to make argument
+// dependent lookup find those.
+MATCHER(M, "") {
+  (void)arg;
+  return true;
+}
+
+template <typename T1, typename T2>
+bool AllOf(const T1& /*t1*/, const T2& /*t2*/) {
+  return true;
+}
+
+TEST(AllOfTest, DoesNotCallAllOfUnqualified) {
+  EXPECT_THAT(42,
+              testing::AllOf(M(), M(), M(), M(), M(), M(), M(), M(), M(), M()));
+}
+
+template <typename T1, typename T2>
+bool AnyOf(const T1&, const T2&) {
+  return true;
+}
+
+TEST(AnyOfTest, DoesNotCallAnyOfUnqualified) {
+  EXPECT_THAT(42,
+              testing::AnyOf(M(), M(), M(), M(), M(), M(), M(), M(), M(), M()));
+}
+
+}  // namespace adl_test
+
+TEST(AllOfTest, WorksOnMoveOnlyType) {
+  std::unique_ptr<int> p(new int(3));
+  EXPECT_THAT(p, AllOf(Pointee(Eq(3)), Pointee(Gt(0)), Pointee(Lt(5))));
+  EXPECT_THAT(p, Not(AllOf(Pointee(Eq(3)), Pointee(Gt(0)), Pointee(Lt(3)))));
+}
+
+TEST(AnyOfTest, WorksOnMoveOnlyType) {
+  std::unique_ptr<int> p(new int(3));
+  EXPECT_THAT(p, AnyOf(Pointee(Eq(5)), Pointee(Lt(0)), Pointee(Lt(5))));
+  EXPECT_THAT(p, Not(AnyOf(Pointee(Eq(5)), Pointee(Lt(0)), Pointee(Gt(5)))));
+}
+
+MATCHER(IsNotNull, "") { return arg != nullptr; }
+
+// Verifies that a matcher defined using MATCHER() can work on
+// move-only types.
+TEST(MatcherMacroTest, WorksOnMoveOnlyType) {
+  std::unique_ptr<int> p(new int(3));
+  EXPECT_THAT(p, IsNotNull());
+  EXPECT_THAT(std::unique_ptr<int>(), Not(IsNotNull()));
+}
+
+MATCHER_P(UniquePointee, pointee, "") { return *arg == pointee; }
+
+// Verifies that a matcher defined using MATCHER_P*() can work on
+// move-only types.
+TEST(MatcherPMacroTest, WorksOnMoveOnlyType) {
+  std::unique_ptr<int> p(new int(3));
+  EXPECT_THAT(p, UniquePointee(3));
+  EXPECT_THAT(p, Not(UniquePointee(2)));
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+// std::function<void()> is used below for compatibility with older copies of
+// GCC. Normally, a raw lambda is all that is needed.
+
+// Test that examples from documentation compile
+TEST(ThrowsTest, Examples) {
+  EXPECT_THAT(
+      std::function<void()>([]() { throw std::runtime_error("message"); }),
+      Throws<std::runtime_error>());
+
+  EXPECT_THAT(
+      std::function<void()>([]() { throw std::runtime_error("message"); }),
+      ThrowsMessage<std::runtime_error>(HasSubstr("message")));
+}
+
+TEST(ThrowsTest, DoesNotGenerateDuplicateCatchClauseWarning) {
+  EXPECT_THAT(std::function<void()>([]() { throw std::exception(); }),
+              Throws<std::exception>());
+}
+
+TEST(ThrowsTest, CallableExecutedExactlyOnce) {
+  size_t a = 0;
+
+  EXPECT_THAT(std::function<void()>([&a]() {
+                a++;
+                throw 10;
+              }),
+              Throws<int>());
+  EXPECT_EQ(a, 1u);
+
+  EXPECT_THAT(std::function<void()>([&a]() {
+                a++;
+                throw std::runtime_error("message");
+              }),
+              Throws<std::runtime_error>());
+  EXPECT_EQ(a, 2u);
+
+  EXPECT_THAT(std::function<void()>([&a]() {
+                a++;
+                throw std::runtime_error("message");
+              }),
+              ThrowsMessage<std::runtime_error>(HasSubstr("message")));
+  EXPECT_EQ(a, 3u);
+
+  EXPECT_THAT(std::function<void()>([&a]() {
+                a++;
+                throw std::runtime_error("message");
+              }),
+              Throws<std::runtime_error>(
+                  Property(&std::runtime_error::what, HasSubstr("message"))));
+  EXPECT_EQ(a, 4u);
+}
+
+TEST(ThrowsTest, Describe) {
+  Matcher<std::function<void()>> matcher = Throws<std::runtime_error>();
+  std::stringstream ss;
+  matcher.DescribeTo(&ss);
+  auto explanation = ss.str();
+  EXPECT_THAT(explanation, HasSubstr("std::runtime_error"));
+}
+
+TEST(ThrowsTest, Success) {
+  Matcher<std::function<void()>> matcher = Throws<std::runtime_error>();
+  StringMatchResultListener listener;
+  EXPECT_TRUE(matcher.MatchAndExplain(
+      []() { throw std::runtime_error("error message"); }, &listener));
+  EXPECT_THAT(listener.str(), HasSubstr("std::runtime_error"));
+}
+
+TEST(ThrowsTest, FailWrongType) {
+  Matcher<std::function<void()>> matcher = Throws<std::runtime_error>();
+  StringMatchResultListener listener;
+  EXPECT_FALSE(matcher.MatchAndExplain(
+      []() { throw std::logic_error("error message"); }, &listener));
+  EXPECT_THAT(listener.str(), HasSubstr("std::logic_error"));
+  EXPECT_THAT(listener.str(), HasSubstr("\"error message\""));
+}
+
+TEST(ThrowsTest, FailWrongTypeNonStd) {
+  Matcher<std::function<void()>> matcher = Throws<std::runtime_error>();
+  StringMatchResultListener listener;
+  EXPECT_FALSE(matcher.MatchAndExplain([]() { throw 10; }, &listener));
+  EXPECT_THAT(listener.str(),
+              HasSubstr("throws an exception of an unknown type"));
+}
+
+TEST(ThrowsTest, FailNoThrow) {
+  Matcher<std::function<void()>> matcher = Throws<std::runtime_error>();
+  StringMatchResultListener listener;
+  EXPECT_FALSE(matcher.MatchAndExplain([]() { (void)0; }, &listener));
+  EXPECT_THAT(listener.str(), HasSubstr("does not throw any exception"));
+}
+
+class ThrowsPredicateTest
+    : public TestWithParam<Matcher<std::function<void()>>> {};
+
+TEST_P(ThrowsPredicateTest, Describe) {
+  Matcher<std::function<void()>> matcher = GetParam();
+  std::stringstream ss;
+  matcher.DescribeTo(&ss);
+  auto explanation = ss.str();
+  EXPECT_THAT(explanation, HasSubstr("std::runtime_error"));
+  EXPECT_THAT(explanation, HasSubstr("error message"));
+}
+
+TEST_P(ThrowsPredicateTest, Success) {
+  Matcher<std::function<void()>> matcher = GetParam();
+  StringMatchResultListener listener;
+  EXPECT_TRUE(matcher.MatchAndExplain(
+      []() { throw std::runtime_error("error message"); }, &listener));
+  EXPECT_THAT(listener.str(), HasSubstr("std::runtime_error"));
+}
+
+TEST_P(ThrowsPredicateTest, FailWrongType) {
+  Matcher<std::function<void()>> matcher = GetParam();
+  StringMatchResultListener listener;
+  EXPECT_FALSE(matcher.MatchAndExplain(
+      []() { throw std::logic_error("error message"); }, &listener));
+  EXPECT_THAT(listener.str(), HasSubstr("std::logic_error"));
+  EXPECT_THAT(listener.str(), HasSubstr("\"error message\""));
+}
+
+TEST_P(ThrowsPredicateTest, FailWrongTypeNonStd) {
+  Matcher<std::function<void()>> matcher = GetParam();
+  StringMatchResultListener listener;
+  EXPECT_FALSE(matcher.MatchAndExplain([]() { throw 10; }, &listener));
+  EXPECT_THAT(listener.str(),
+              HasSubstr("throws an exception of an unknown type"));
+}
+
+TEST_P(ThrowsPredicateTest, FailWrongMessage) {
+  Matcher<std::function<void()>> matcher = GetParam();
+  StringMatchResultListener listener;
+  EXPECT_FALSE(matcher.MatchAndExplain(
+      []() { throw std::runtime_error("wrong message"); }, &listener));
+  EXPECT_THAT(listener.str(), HasSubstr("std::runtime_error"));
+  EXPECT_THAT(listener.str(), Not(HasSubstr("wrong message")));
+}
+
+TEST_P(ThrowsPredicateTest, FailNoThrow) {
+  Matcher<std::function<void()>> matcher = GetParam();
+  StringMatchResultListener listener;
+  EXPECT_FALSE(matcher.MatchAndExplain([]() {}, &listener));
+  EXPECT_THAT(listener.str(), HasSubstr("does not throw any exception"));
+}
+
+INSTANTIATE_TEST_SUITE_P(
+    AllMessagePredicates, ThrowsPredicateTest,
+    Values(Matcher<std::function<void()>>(
+        ThrowsMessage<std::runtime_error>(HasSubstr("error message")))));
+
+// Tests that Throws<E1>(Matcher<E2>{}) compiles even when E2 != const E1&.
+TEST(ThrowsPredicateCompilesTest, ExceptionMatcherAcceptsBroadType) {
+  {
+    Matcher<std::function<void()>> matcher =
+        ThrowsMessage<std::runtime_error>(HasSubstr("error message"));
+    EXPECT_TRUE(
+        matcher.Matches([]() { throw std::runtime_error("error message"); }));
+    EXPECT_FALSE(
+        matcher.Matches([]() { throw std::runtime_error("wrong message"); }));
+  }
+
+  {
+    Matcher<uint64_t> inner = Eq(10);
+    Matcher<std::function<void()>> matcher = Throws<uint32_t>(inner);
+    EXPECT_TRUE(matcher.Matches([]() { throw(uint32_t) 10; }));
+    EXPECT_FALSE(matcher.Matches([]() { throw(uint32_t) 11; }));
+  }
+}
+
+// Tests that ThrowsMessage("message") is equivalent
+// to ThrowsMessage(Eq<std::string>("message")).
+TEST(ThrowsPredicateCompilesTest, MessageMatcherAcceptsNonMatcher) {
+  Matcher<std::function<void()>> matcher =
+      ThrowsMessage<std::runtime_error>("error message");
+  EXPECT_TRUE(
+      matcher.Matches([]() { throw std::runtime_error("error message"); }));
+  EXPECT_FALSE(matcher.Matches(
+      []() { throw std::runtime_error("wrong error message"); }));
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
 }  // namespace
 }  // namespace gmock_matchers_test
 }  // namespace testing
index 97ec5cf08f3f2ae5894bb4eb240c92bec3f7d76e..4bcb5df6bb3b7df5e54db3681401a2dd7c911175 100644 (file)
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-
 // Google Mock - a framework for writing C++ mock classes.
 //
-// This file tests the built-in actions in gmock-more-actions.h.
-
-#include "gmock/gmock-more-actions.h"
+// This file tests the built-in actions in gmock-actions.h.
 
 #include <functional>
 #include <memory>
 #include <sstream>
 #include <string>
+
+#include "gmock/gmock-actions.h"
 #include "gmock/gmock.h"
+#include "gtest/gtest-spi.h"
 #include "gtest/gtest.h"
 
 namespace testing {
@@ -604,6 +604,33 @@ TEST(ThrowActionTest, ThrowsGivenExceptionInNullaryFunction) {
   EXPECT_THROW(a.Perform(std::make_tuple()), MyException);
 }
 
+class Object {
+ public:
+  virtual ~Object() {}
+  virtual void Func() {}
+};
+
+class MockObject : public Object {
+ public:
+  ~MockObject() override {}
+  MOCK_METHOD(void, Func, (), (override));
+};
+
+TEST(ThrowActionTest, Times0) {
+  EXPECT_NONFATAL_FAILURE(
+      [] {
+        try {
+          MockObject m;
+          ON_CALL(m, Func()).WillByDefault([] { throw "something"; });
+          EXPECT_CALL(m, Func()).Times(0);
+          m.Func();
+        } catch (...) {
+          // Exception is caught but Times(0) still triggers a failure.
+        }
+      }(),
+      "");
+}
+
 #endif  // GTEST_HAS_EXCEPTIONS
 
 // Tests that SetArrayArgument<N>(first, last) sets the elements of the array
index 0a201ed7ebb072810fd9af9be0d24d8e9112ce7a..25558ebffe766bb09ab6d06aabc698947932f69c 100644 (file)
@@ -67,6 +67,12 @@ class NotDefaultConstructible {
   explicit NotDefaultConstructible(int) {}
 };
 
+class CallsMockMethodInDestructor {
+ public:
+  ~CallsMockMethodInDestructor() { OnDestroy(); }
+  MOCK_METHOD(void, OnDestroy, ());
+};
+
 // Defines some mock classes needed by the tests.
 
 class Foo {
@@ -302,6 +308,13 @@ TEST(NiceMockTest, AcceptsClassNamedMock) {
   nice.DoThis();
 }
 
+TEST(NiceMockTest, IsNiceInDestructor) {
+  {
+    NiceMock<CallsMockMethodInDestructor> nice_on_destroy;
+    // Don't add an expectation for the call before the mock goes out of scope.
+  }
+}
+
 TEST(NiceMockTest, IsNaggy_IsNice_IsStrict) {
   NiceMock<MockFoo> nice_foo;
   EXPECT_FALSE(Mock::IsNaggy(&nice_foo));
@@ -405,6 +418,22 @@ TEST(NaggyMockTest, AcceptsClassNamedMock) {
   naggy.DoThis();
 }
 
+TEST(NaggyMockTest, IsNaggyInDestructor) {
+  const std::string saved_flag = GMOCK_FLAG(verbose);
+  GMOCK_FLAG(verbose) = "warning";
+  CaptureStdout();
+
+  {
+    NaggyMock<CallsMockMethodInDestructor> naggy_on_destroy;
+    // Don't add an expectation for the call before the mock goes out of scope.
+  }
+
+  EXPECT_THAT(GetCapturedStdout(),
+              HasSubstr("Uninteresting mock function call"));
+
+  GMOCK_FLAG(verbose) = saved_flag;
+}
+
 TEST(NaggyMockTest, IsNaggy_IsNice_IsStrict) {
   NaggyMock<MockFoo> naggy_foo;
   EXPECT_TRUE(Mock::IsNaggy(&naggy_foo));
@@ -489,6 +518,16 @@ TEST(StrictMockTest, AcceptsClassNamedMock) {
   strict.DoThis();
 }
 
+TEST(StrictMockTest, IsStrictInDestructor) {
+  EXPECT_NONFATAL_FAILURE(
+      {
+        StrictMock<CallsMockMethodInDestructor> strict_on_destroy;
+        // Don't add an expectation for the call before the mock goes out of
+        // scope.
+      },
+      "Uninteresting mock function call");
+}
+
 TEST(StrictMockTest, IsNaggy_IsNice_IsStrict) {
   StrictMock<MockFoo> strict_foo;
   EXPECT_FALSE(Mock::IsNaggy(&strict_foo));
index b2b2027db991dc1932ce841ca2f2eb738bf9de08..6187d4ad12aebc1fdcd06adecdee2e3c495c1847 100644 (file)
@@ -38,8 +38,6 @@
 #include "test/gmock-actions_test.cc"
 #include "test/gmock-cardinalities_test.cc"
 #include "test/gmock-generated-actions_test.cc"
-#include "test/gmock-generated-function-mockers_test.cc"
-#include "test/gmock-generated-matchers_test.cc"
 #include "test/gmock-internal-utils_test.cc"
 #include "test/gmock-matchers_test.cc"
 #include "test/gmock-more-actions_test.cc"
index 4c90b41a3abc0b3fad262652b7faf25c7856bba3..755e9334a792596caaea79b67c3d63cf928d5119 100644 (file)
@@ -314,4 +314,4 @@ Expected: is pair (is >= 48, true)
 FILE:#: ERROR: this mock object should be deleted but never is. Its address is @0x#.
 FILE:#: ERROR: this mock object should be deleted but never is. Its address is @0x#.
 FILE:#: ERROR: this mock object should be deleted but never is. Its address is @0x#.
-ERROR: 3 leaked mock objects found at program exit. Expectations on a mock object is verified when the object is destructed. Leaking a mock means that its expectations aren't verified, which is usually a test bug. If you really intend to leak a mock, you can suppress this error using testing::Mock::AllowLeak(mock_object), or you may use a fake or stub instead of a mock.
+ERROR: 3 leaked mock objects found at program exit. Expectations on a mock object are verified when the object is destructed. Leaking a mock means that its expectations aren't verified, which is usually a test bug. If you really intend to leak a mock, you can suppress this error using testing::Mock::AllowLeak(mock_object), or you may use a fake or stub instead of a mock.
index 4fd7b5262e35b0b1db693a5f475c2fcbc4bfd985..1379afb9243364c4622b3dbf0dd3ad0b399905a2 100644 (file)
@@ -53,7 +53,7 @@ else()
   cmake_policy(SET CMP0048 NEW)
   project(gtest VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C)
 endif()
-cmake_minimum_required(VERSION 2.6.4)
+cmake_minimum_required(VERSION 2.8.12)
 
 if (POLICY CMP0063) # Visibility
   cmake_policy(SET CMP0063 NEW)
@@ -126,7 +126,9 @@ include_directories(${gtest_build_include_dirs})
 # are used for other targets, to ensure that gtest can be compiled by a user
 # aggressive about warnings.
 cxx_library(gtest "${cxx_strict}" src/gtest-all.cc)
+set_target_properties(gtest PROPERTIES VERSION ${GOOGLETEST_VERSION})
 cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
+set_target_properties(gtest_main PROPERTIES VERSION ${GOOGLETEST_VERSION})
 # If the CMake version supports it, attach header directory information
 # to the targets for when we are part of a parent build (ie being pulled
 # in via add_subdirectory() rather than being a standalone build).
@@ -182,20 +184,6 @@ if (gtest_build_tests)
   # 'make test' or ctest.
   enable_testing()
 
-  if (WIN32)
-    file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/RunTest.ps1"
-         CONTENT
-"$project_bin = \"${CMAKE_BINARY_DIR}/bin/$<CONFIG>\"
-$env:Path = \"$project_bin;$env:Path\"
-& $args")
-  elseif (MINGW OR CYGWIN)
-    file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/RunTest.ps1"
-         CONTENT
-"$project_bin = (cygpath --windows ${CMAKE_BINARY_DIR}/bin)
-$env:Path = \"$project_bin;$env:Path\"
-& $args")
-  endif()
-
   ############################################################
   # C++ tests built with standard compiler flags.
 
@@ -318,6 +306,9 @@ $env:Path = \"$project_bin;$env:Path\"
   cxx_executable(googletest-uninitialized-test_ test gtest)
   py_test(googletest-uninitialized-test)
 
+  cxx_executable(gtest_list_output_unittest_ test gtest)
+  py_test(gtest_list_output_unittest)
+
   cxx_executable(gtest_xml_outfile1_test_ test gtest_main)
   cxx_executable(gtest_xml_outfile2_test_ test gtest_main)
   py_test(gtest_xml_outfiles_test)
index 904048f4840031d6d13153fe4b0252355ebb6233..d3d8055533fca13a562b4e2047ff082f687ece3c 100644 (file)
@@ -2,39 +2,51 @@
 
 #### Setup
 
-To build Google Test and your tests that use it, you need to tell your build
+To build GoogleTest and your tests that use it, you need to tell your build
 system where to find its headers and source files. The exact way to do it
 depends on which build system you use, and is usually straightforward.
 
 ### Build with CMake
 
-Google Test comes with a CMake build script
+GoogleTest comes with a CMake build script
 ([CMakeLists.txt](https://github.com/google/googletest/blob/master/CMakeLists.txt))
 that can be used on a wide range of platforms ("C" stands for cross-platform.).
 If you don't have CMake installed already, you can download it for free from
 <http://www.cmake.org/>.
 
 CMake works by generating native makefiles or build projects that can be used in
-the compiler environment of your choice. You can either build Google Test as a
+the compiler environment of your choice. You can either build GoogleTest as a
 standalone project or it can be incorporated into an existing CMake build for
 another project.
 
 #### Standalone CMake Project
 
-When building Google Test as a standalone project, the typical workflow starts
-with:
+When building GoogleTest as a standalone project, the typical workflow starts
+with
 
-    mkdir mybuild       # Create a directory to hold the build output.
-    cd mybuild
-    cmake ${GTEST_DIR}  # Generate native build scripts.
+```
+git clone https://github.com/google/googletest.git -b release-1.10.0
+cd googletest        # Main directory of the cloned repository.
+mkdir build          # Create a directory to hold the build output.
+cd build
+cmake ..             # Generate native build scripts for GoogleTest.
+```
 
-If you want to build Google Test's samples, you should replace the last command
-with
+The above command also includes GoogleMock by default. And so, if you want to
+build only GoogleTest, you should replace the last command with
 
-    cmake -Dgtest_build_samples=ON ${GTEST_DIR}
+```
+cmake .. -DBUILD_GMOCK=OFF
+```
 
 If you are on a \*nix system, you should now see a Makefile in the current
-directory. Just type 'make' to build gtest.
+directory. Just type `make` to build GoogleTest. And then you can simply install
+GoogleTest if you are a system administrator.
+
+```
+make
+sudo make install    # Install in /usr/local/ by default
+```
 
 If you use Windows and have Visual Studio installed, a `gtest.sln` file and
 several `.vcproj` files will be created. You can then build them using Visual
@@ -44,13 +56,19 @@ On Mac OS X with Xcode installed, a `.xcodeproj` file will be generated.
 
 #### Incorporating Into An Existing CMake Project
 
-If you want to use gtest in a project which already uses CMake, then a more
-robust and flexible approach is to build gtest as part of that project directly.
-This is done by making the GoogleTest source code available to the main build
-and adding it using CMake's `add_subdirectory()` command. This has the
-significant advantage that the same compiler and linker settings are used
-between gtest and the rest of your project, so issues associated with using
-incompatible libraries (eg debug/release), etc. are avoided. This is
+If you want to use GoogleTest in a project which already uses CMake, the easiest
+way is to get installed libraries and headers.
+
+*   Import GoogleTest by using `find_package` (or `pkg_check_modules`). For
+    example, if `find_package(GTest CONFIG REQUIRED)` is succeed, you can use
+    the libraries as `GTest::gtest`, `GTest::gmock`.
+
+And a more robust and flexible approach is to build GoogleTest as part of that
+project directly. This is done by making the GoogleTest source code available to
+the main build and adding it using CMake's `add_subdirectory()` command. This
+has the significant advantage that the same compiler and linker settings are
+used between GoogleTest and the rest of your project, so issues associated with
+using incompatible libraries (eg debug/release), etc. are avoided. This is
 particularly useful on Windows. Making GoogleTest's source code available to the
 main build can be done a few different ways:
 
@@ -75,7 +93,7 @@ pulled into the main build with `add_subdirectory()`. For example:
 New file `CMakeLists.txt.in`:
 
 ```cmake
-cmake_minimum_required(VERSION 2.8.2)
+cmake_minimum_required(VERSION 2.8.12)
 
 project(googletest-download NONE)
 
@@ -141,12 +159,12 @@ also contains a link to a fully generalized implementation of the technique.
 ##### Visual Studio Dynamic vs Static Runtimes
 
 By default, new Visual Studio projects link the C runtimes dynamically but
-Google Test links them statically. This will generate an error that looks
+GoogleTest links them statically. This will generate an error that looks
 something like the following: gtest.lib(gtest-all.obj) : error LNK2038: mismatch
 detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value
 'MDd_DynamicDebug' in main.obj
 
-Google Test already has a CMake option for this: `gtest_force_shared_crt`
+GoogleTest already has a CMake option for this: `gtest_force_shared_crt`
 
 Enabling this option will make gtest link the runtimes dynamically too, and
 match the project in which it is included.
@@ -154,17 +172,17 @@ match the project in which it is included.
 #### C++ Standard Version
 
 An environment that supports C++11 is required in order to successfully build
-Google Test. One way to ensure this is to specify the standard in the top-level
+GoogleTest. One way to ensure this is to specify the standard in the top-level
 project, for example by using the `set(CMAKE_CXX_STANDARD 11)` command. If this
-is not feasible, for example in a C project using Google Test for validation,
+is not feasible, for example in a C project using GoogleTest for validation,
 then it can be specified by adding it to the options for cmake via the
 `DCMAKE_CXX_FLAGS` option.
 
-### Tweaking Google Test
+### Tweaking GoogleTest
 
-Google Test can be used in diverse environments. The default configuration may
+GoogleTest can be used in diverse environments. The default configuration may
 not work (or may not work well) out of the box in some environments. However,
-you can easily tweak Google Test by defining control macros on the compiler
+you can easily tweak GoogleTest by defining control macros on the compiler
 command line. Generally, these macros are named like `GTEST_XYZ` and you define
 them to either 1 or 0 to enable or disable a certain feature.
 
@@ -173,12 +191,12 @@ We list the most frequently used macros below. For a complete list, see file
 
 ### Multi-threaded Tests
 
-Google Test is thread-safe where the pthread library is available. After
+GoogleTest is thread-safe where the pthread library is available. After
 `#include "gtest/gtest.h"`, you can check the
 `GTEST_IS_THREADSAFE` macro to see whether this is the case (yes if the macro is
 `#defined` to 1, no if it's undefined.).
 
-If Google Test doesn't correctly detect whether pthread is available in your
+If GoogleTest doesn't correctly detect whether pthread is available in your
 environment, you can force it with
 
     -DGTEST_HAS_PTHREAD=1
@@ -187,16 +205,16 @@ or
 
     -DGTEST_HAS_PTHREAD=0
 
-When Google Test uses pthread, you may need to add flags to your compiler and/or
+When GoogleTest uses pthread, you may need to add flags to your compiler and/or
 linker to select the pthread library, or you'll get link errors. If you use the
-CMake script or the deprecated Autotools script, this is taken care of for you.
-If you use your own build script, you'll need to read your compiler and linker's
-manual to figure out what flags to add.
+CMake script, this is taken care of for you. If you use your own build script,
+you'll need to read your compiler and linker's manual to figure out what flags
+to add.
 
 ### As a Shared Library (DLL)
 
-Google Test is compact, so most users can build and link it as a static library
-for the simplicity. You can choose to use Google Test as a shared library (known
+GoogleTest is compact, so most users can build and link it as a static library
+for the simplicity. You can choose to use GoogleTest as a shared library (known
 as a DLL on Windows) if you prefer.
 
 To compile *gtest* as a shared library, add
@@ -216,22 +234,22 @@ Note: while the above steps aren't technically necessary today when using some
 compilers (e.g. GCC), they may become necessary in the future, if we decide to
 improve the speed of loading the library (see
 <http://gcc.gnu.org/wiki/Visibility> for details). Therefore you are recommended
-to always add the above flags when using Google Test as a shared library.
-Otherwise a future release of Google Test may break your build script.
+to always add the above flags when using GoogleTest as a shared library.
+Otherwise a future release of GoogleTest may break your build script.
 
 ### Avoiding Macro Name Clashes
 
 In C++, macros don't obey namespaces. Therefore two libraries that both define a
 macro of the same name will clash if you `#include` both definitions. In case a
-Google Test macro clashes with another library, you can force Google Test to
+GoogleTest macro clashes with another library, you can force GoogleTest to
 rename its macro to avoid the conflict.
 
-Specifically, if both Google Test and some other code define macro FOO, you can
+Specifically, if both GoogleTest and some other code define macro FOO, you can
 add
 
     -DGTEST_DONT_DEFINE_FOO=1
 
-to the compiler flags to tell Google Test to change the macro's name from `FOO`
+to the compiler flags to tell GoogleTest to change the macro's name from `FOO`
 to `GTEST_FOO`. Currently `FOO` can be `FAIL`, `SUCCEED`, or `TEST`. For
 example, with `-DGTEST_DONT_DEFINE_TEST=1`, you'll need to write
 
index 1e01bd19ad3bbdbc74c985f34e5f51d411a928e5..38c88c54d5386d960ec48d9f76664eb9798b4e7b 100644 (file)
@@ -5,6 +5,6 @@ Name: gtest_main
 Description: GoogleTest (with main() function)
 Version: @PROJECT_VERSION@
 URL: https://github.com/google/googletest
-Requires: gtest
+Requires: gtest = @PROJECT_VERSION@
 Libs: -L${libdir} -lgtest_main @CMAKE_THREAD_LIBS_INIT@
 Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@
index 2f70f0b084b99e3a231e3d01593c0dee9c7228b6..37cf1efcc86deaf5556d8721c69c8bd67fdc5f58 100644 (file)
@@ -188,6 +188,10 @@ function(cxx_library_with_type name type cxx_flags)
     endif()
     target_link_libraries(${name} PUBLIC ${threads_spec})
   endif()
+
+  if (NOT "${CMAKE_VERSION}" VERSION_LESS "3.8")
+    target_compile_features(${name} PUBLIC cxx_std_11)
+  endif()
 endfunction()
 
 ########################################################################
@@ -240,7 +244,13 @@ function(cxx_executable name dir libs)
 endfunction()
 
 # Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE.
-find_package(PythonInterp)
+if ("${CMAKE_VERSION}" VERSION_LESS "3.12.0")
+  find_package(PythonInterp)
+else()
+  find_package(Python COMPONENTS Interpreter)
+  set(PYTHONINTERP_FOUND ${Python_Interpreter_FOUND})
+  set(PYTHON_EXECUTABLE ${Python_EXECUTABLE})
+endif()
 
 # cxx_test_with_flags(name cxx_flags libs srcs...)
 #
@@ -248,13 +258,7 @@ find_package(PythonInterp)
 # from the given source files with the given compiler flags.
 function(cxx_test_with_flags name cxx_flags libs)
   cxx_executable_with_flags(${name} "${cxx_flags}" "${libs}" ${ARGN})
-  if (WIN32 OR MINGW)
-    add_test(NAME ${name}
-      COMMAND "powershell" "-Command" "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/RunTest.ps1" "$<TARGET_FILE:${name}>")
-  else()
-    add_test(NAME ${name}
-      COMMAND "$<TARGET_FILE:${name}>")
-  endif()
+    add_test(NAME ${name} COMMAND "$<TARGET_FILE:${name}>")
 endfunction()
 
 # cxx_test(name libs srcs...)
@@ -278,45 +282,24 @@ function(py_test name)
         # Multi-configuration build generators as for Visual Studio save
         # output in a subdirectory of CMAKE_CURRENT_BINARY_DIR (Debug,
         # Release etc.), so we have to provide it here.
-        if (WIN32 OR MINGW)
-          add_test(NAME ${name}
-            COMMAND powershell -Command ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/RunTest.ps1
-              ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
-              --build_dir=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG> ${ARGN})
-        else()
-          add_test(NAME ${name}
-            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
+        add_test(NAME ${name}
+          COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
               --build_dir=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG> ${ARGN})
-        endif()
       else (CMAKE_CONFIGURATION_TYPES)
         # Single-configuration build generators like Makefile generators
         # don't have subdirs below CMAKE_CURRENT_BINARY_DIR.
-        if (WIN32 OR MINGW)
-          add_test(NAME ${name}
-            COMMAND powershell -Command ${CMAKE_CURRENT_BINARY_DIR}/RunTest.ps1
-              ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
-              --build_dir=${CMAKE_CURRENT_BINARY_DIR} ${ARGN})
-        else()
-          add_test(NAME ${name}
-            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
-              --build_dir=${CMAKE_CURRENT_BINARY_DIR} ${ARGN})
-        endif()
+        add_test(NAME ${name}
+          COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
+            --build_dir=${CMAKE_CURRENT_BINARY_DIR} ${ARGN})
       endif (CMAKE_CONFIGURATION_TYPES)
     else()
       # ${CMAKE_CURRENT_BINARY_DIR} is known at configuration time, so we can
       # directly bind it from cmake. ${CTEST_CONFIGURATION_TYPE} is known
       # only at ctest runtime (by calling ctest -c <Configuration>), so
       # we have to escape $ to delay variable substitution here.
-      if (WIN32 OR MINGW)
-        add_test(NAME ${name}
-          COMMAND powershell -Command ${CMAKE_CURRENT_BINARY_DIR}/RunTest.ps1
-            ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
-            --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE} ${ARGN})
-      else()
-        add_test(NAME ${name}
-          COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
-            --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE} ${ARGN})
-      endif()
+      add_test(NAME ${name}
+        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
+          --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE} ${ARGN})
     endif()
   endif(PYTHONINTERP_FOUND)
 endfunction()
index 8ce1f3e7ceb3acf26cfa30229b3d4847e47ef969..89aca1cf68580afb0c1eb904fa01634d059ea7b5 100644 (file)
@@ -2,6 +2,8 @@
 
 <!-- GOOGLETEST_CM0016 DO NOT DELETE -->
 
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
 ## Introduction
 
 Now that you have read the [googletest Primer](primer.md) and learned how to
@@ -187,11 +189,11 @@ write a predicate function that returns `AssertionResult` instead of `bool`. For
 example, if you define `IsEven()` as:
 
 ```c++
-::testing::AssertionResult IsEven(int n) {
+testing::AssertionResult IsEven(int n) {
   if ((n % 2) == 0)
-     return ::testing::AssertionSuccess();
+    return testing::AssertionSuccess();
   else
-     return ::testing::AssertionFailure() << n << " is odd";
+    return testing::AssertionFailure() << n << " is odd";
 }
 ```
 
@@ -225,11 +227,11 @@ are fine with making the predicate slower in the success case, you can supply a
 success message:
 
 ```c++
-::testing::AssertionResult IsEven(int n) {
+testing::AssertionResult IsEven(int n) {
   if ((n % 2) == 0)
-     return ::testing::AssertionSuccess() << n << " is even";
+    return testing::AssertionSuccess() << n << " is even";
   else
-     return ::testing::AssertionFailure() << n << " is odd";
+    return testing::AssertionFailure() << n << " is odd";
 }
 ```
 
@@ -260,14 +262,14 @@ a predicate, `(ASSERT|EXPECT)_PRED_FORMAT*` take a *predicate-formatter*
 (`pred_formatn`), which is a function or functor with the signature:
 
 ```c++
-::testing::AssertionResult PredicateFormattern(const char* expr1,
-                                               const char* expr2,
-                                               ...
-                                               const char* exprn,
-                                               T1 val1,
-                                               T2 val2,
-                                               ...
-                                               Tn valn);
+testing::AssertionResult PredicateFormattern(const char* expr1,
+                                             const char* expr2,
+                                             ...
+                                             const char* exprn,
+                                             T1 val1,
+                                             T2 val2,
+                                             ...
+                                             Tn valn);
 ```
 
 where `val1`, `val2`, ..., and `valn` are the values of the predicate arguments,
@@ -285,13 +287,13 @@ used with `EXPECT_PRED2()`:
 int SmallestPrimeCommonDivisor(int m, int n) { ... }
 
 // A predicate-formatter for asserting that two integers are mutually prime.
-::testing::AssertionResult AssertMutuallyPrime(const char* m_expr,
-                                               const char* n_expr,
-                                               int m,
-                                               int n) {
-  if (MutuallyPrime(m, n)) return ::testing::AssertionSuccess();
+testing::AssertionResult AssertMutuallyPrime(const char* m_expr,
+                                             const char* n_expr,
+                                             int m,
+                                             int n) {
+  if (MutuallyPrime(m, n)) return testing::AssertionSuccess();
 
-  return ::testing::AssertionFailure() << m_expr << " and " << n_expr
+  return testing::AssertionFailure() << m_expr << " and " << n_expr
       << " (" << m << " and " << n << ") are not mutually prime, "
       << "as they have a common divisor " << SmallestPrimeCommonDivisor(m, n);
 }
@@ -360,8 +362,8 @@ that can be used in predicate assertion macros (e.g. `EXPECT_PRED_FORMAT2`,
 etc).
 
 ```c++
-EXPECT_PRED_FORMAT2(::testing::FloatLE, val1, val2);
-EXPECT_PRED_FORMAT2(::testing::DoubleLE, val1, val2);
+EXPECT_PRED_FORMAT2(testing::FloatLE, val1, val2);
+EXPECT_PRED_FORMAT2(testing::DoubleLE, val1, val2);
 ```
 
 Verifies that `val1` is less than, or almost equal to, `val2`. You can replace
@@ -369,9 +371,11 @@ Verifies that `val1` is less than, or almost equal to, `val2`. You can replace
 
 ### Asserting Using gMock Matchers
 
-[gMock](../../googlemock) comes with a library of matchers for validating
-arguments passed to mock objects. A gMock *matcher* is basically a predicate
-that knows how to describe itself. It can be used in these assertion macros:
+[gMock](../../googlemock) comes with
+[a library of matchers](../../googlemock/docs/cheat_sheet.md#MatcherList) for
+validating arguments passed to mock objects. A gMock *matcher* is basically a
+predicate that knows how to describe itself. It can be used in these assertion
+macros:
 
 <!-- mdformat off(github rendering does not support multiline tables) -->
 
@@ -401,7 +405,7 @@ alone with them. For a list of matchers gMock provides, read
 your [own matchers](../../googlemock/docs/cook_book.md#NewMatchers) too.
 
 gMock is bundled with googletest, so you don't need to add any build dependency
-in order to take advantage of this. Just include `"testing/base/public/gmock.h"`
+in order to take advantage of this. Just include `"gmock/gmock.h"`
 and you're ready to go.
 
 ### More String Assertions
@@ -429,7 +433,7 @@ its DOM tree matches an
 ```c++
 // Currently still in //template/prototemplate/testing:xpath_matcher
 #include "template/prototemplate/testing/xpath_matcher.h"
-using prototemplate::testing::MatchesXPath;
+using ::prototemplate::testing::MatchesXPath;
 EXPECT_THAT(html_string, MatchesXPath("//a[text()='click here']"));
 ```
 
@@ -476,7 +480,7 @@ instantiated. For example, given:
 ```c++
 template <typename T> class Foo {
  public:
-  void Bar() { ::testing::StaticAssertTypeEq<int, T>(); }
+  void Bar() { testing::StaticAssertTypeEq<int, T>(); }
 };
 ```
 
@@ -524,8 +528,8 @@ a `SetUp`/`TearDown` function; see
 [constructor/destructor vs. `SetUp`/`TearDown`](faq.md#CtorVsSetUp)
 
 WARNING: A fatal assertion in a helper function (private void-returning method)
-called from a constructor or destructor does not does not terminate the current
-test, as your intuition might suggest: it merely returns from the constructor or
+called from a constructor or destructor does not terminate the current test, as
+your intuition might suggest: it merely returns from the constructor or
 destructor early, possibly leaving your object in a partially-constructed or
 partially-destructed state! You almost certainly want to `abort` or use
 `SetUp`/`TearDown` instead.
@@ -605,7 +609,7 @@ call `::testing::PrintToString(x)`, which returns an `std::string`:
 vector<pair<Bar, int> > bar_ints = GetBarIntVector();
 
 EXPECT_TRUE(IsCorrectBarIntVector(bar_ints))
-    << "bar_ints = " << ::testing::PrintToString(bar_ints);
+    << "bar_ints = " << testing::PrintToString(bar_ints);
 ```
 
 ## Death Tests
@@ -638,6 +642,7 @@ Fatal assertion                                  | Nonfatal assertion
 ------------------------------------------------ | ------------------------------------------------ | --------
 `ASSERT_DEATH(statement, matcher);`              | `EXPECT_DEATH(statement, matcher);`              | `statement` crashes with the given error
 `ASSERT_DEATH_IF_SUPPORTED(statement, matcher);` | `EXPECT_DEATH_IF_SUPPORTED(statement, matcher);` | if death tests are supported, verifies that `statement` crashes with the given error; otherwise verifies nothing
+`ASSERT_DEBUG_DEATH(statement, matcher);`        | `EXPECT_DEBUG_DEATH(statement, matcher);`        | `statement` crashes with the given error **in debug mode**. When not in debug (i.e. `NDEBUG` is defined), this just executes `statement`
 `ASSERT_EXIT(statement, predicate, matcher);`    | `EXPECT_EXIT(statement, predicate, matcher);`    | `statement` exits with the given error, and its exit code matches `predicate`
 
 where `statement` is a statement that is expected to cause the process to die,
@@ -673,7 +678,7 @@ This expression is `true` if the program exited normally with the given exit
 code.
 
 ```c++
-::testing::KilledBySignal(signal_number)  // Not available on Windows.
+testing::KilledBySignal(signal_number)  // Not available on Windows.
 ```
 
 This expression is `true` if the program was killed by the given signal.
@@ -706,11 +711,11 @@ TEST(MyDeathTest, Foo) {
 }
 
 TEST(MyDeathTest, NormalExit) {
-  EXPECT_EXIT(NormalExit(), ::testing::ExitedWithCode(0), "Success");
+  EXPECT_EXIT(NormalExit(), testing::ExitedWithCode(0), "Success");
 }
 
 TEST(MyDeathTest, KillMyself) {
-  EXPECT_EXIT(KillMyself(), ::testing::KilledBySignal(SIGKILL),
+  EXPECT_EXIT(KillMyself(), testing::KilledBySignal(SIGKILL),
               "Sending myself unblockable signal");
 }
 ```
@@ -737,7 +742,7 @@ If a test fixture class is shared by normal tests and death tests, you can use
 duplicating its code:
 
 ```c++
-class FooTest : public ::testing::Test { ... };
+class FooTest : public testing::Test { ... };
 
 using FooDeathTest = FooTest;
 
@@ -797,7 +802,7 @@ limited syntax only.
 
 Under the hood, `ASSERT_EXIT()` spawns a new process and executes the death test
 statement in that process. The details of how precisely that happens depend on
-the platform and the variable ::testing::GTEST_FLAG(death_test_style) (which is
+the platform and the variable `::testing::GTEST_FLAG(death_test_style)` (which is
 initialized from the command-line flag `--gtest_death_test_style`).
 
 *   On POSIX systems, `fork()` (or `clone()` on Linux) is used to spawn the
@@ -862,13 +867,13 @@ restored afterwards, so you need not do that yourself. For example:
 
 ```c++
 int main(int argc, char** argv) {
-  InitGoogle(argv[0], &argc, &argv, true);
-  ::testing::FLAGS_gtest_death_test_style = "fast";
+  testing::InitGoogleTest(&argc, argv);
+  testing::FLAGS_gtest_death_test_style = "fast";
   return RUN_ALL_TESTS();
 }
 
 TEST(MyDeathTest, TestOne) {
-  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+  testing::FLAGS_gtest_death_test_style = "threadsafe";
   // This test is run in the "threadsafe" style:
   ASSERT_DEATH(ThisShouldDie(), "");
 }
@@ -908,6 +913,12 @@ handlers registered with `pthread_atfork(3)`.
 
 ## Using Assertions in Sub-routines
 
+Note: If you want to put a series of test assertions in a subroutine to check
+for a complex condition, consider using
+[a custom GMock matcher](../../googlemock/docs/cook_book.md#NewMatchers)
+instead. This lets you provide a more readable error message in case of failure
+and avoid all of the issues described below.
+
 ### Adding Traces to Assertions
 
 If a test sub-routine is called from several places, when an assertion inside it
@@ -1005,7 +1016,7 @@ TEST(FooTest, Bar) {
                  // in Subroutine() to abort the entire test.
 
   // The actual behavior: the function goes on after Subroutine() returns.
-  int* p = NULL;
+  int* p = nullptr;
   *p = 3;  // Segfault!
 }
 ```
@@ -1099,7 +1110,7 @@ If `HasFatalFailure()` is used outside of `TEST()` , `TEST_F()` , or a test
 fixture, you must add the `::testing::Test::` prefix, as in:
 
 ```c++
-if (::testing::Test::HasFatalFailure()) return;
+if (testing::Test::HasFatalFailure()) return;
 ```
 
 Similarly, `HasNonfatalFailure()` returns `true` if the current test has at
@@ -1178,7 +1189,7 @@ state to its original value before passing control to the next test.
 Here's an example of per-test-suite set-up and tear-down:
 
 ```c++
-class FooTest : public ::testing::Test {
+class FooTest : public testing::Test {
  protected:
   // Per-test-suite set-up.
   // Called before the first test in this test suite.
@@ -1192,7 +1203,7 @@ class FooTest : public ::testing::Test {
   // Can be omitted if not needed.
   static void TearDownTestSuite() {
     delete shared_resource_;
-    shared_resource_ = NULL;
+    shared_resource_ = nullptr;
   }
 
   // You can define per-test set-up logic as usual.
@@ -1205,7 +1216,7 @@ class FooTest : public ::testing::Test {
   static T* shared_resource_;
 };
 
-T* FooTest::shared_resource_ = NULL;
+T* FooTest::shared_resource_ = nullptr;
 
 TEST_F(FooTest, Test1) {
   ... you can refer to shared_resource_ here ...
@@ -1229,7 +1240,7 @@ First, you subclass the `::testing::Environment` class to define a test
 environment, which knows how to set-up and tear-down:
 
 ```c++
-class Environment : public ::testing::Environment {
+class Environment : public testing::Environment {
  public:
   ~Environment() override {}
 
@@ -1267,8 +1278,8 @@ probably in `main()`. If you use `gtest_main`, you need to call this before
 variable like this:
 
 ```c++
-::testing::Environment* const foo_env =
-    ::testing::AddGlobalTestEnvironment(new FooEnvironment);
+testing::Environment* const foo_env =
+    testing::AddGlobalTestEnvironment(new FooEnvironment);
 ```
 
 However, we strongly recommend you to write your own `main()` and call
@@ -1374,15 +1385,11 @@ INSTANTIATE_TEST_SUITE_P(InstantiationName,
 NOTE: The code above must be placed at global or namespace scope, not at
 function scope.
 
-NOTE: Don't forget this step! If you do your test will silently pass, but none
-of its suites will ever run!
-
-There is work in progress to make omitting `INSTANTIATE_TEST_SUITE_P` show up
-under the `GoogleTestVerification` test suite and to then make that an error.
-If you have a test suite where that omission is not an error, for example it is
-in a library that may be linked in for other reason or where the list of test
-cases is dynamic and may be empty, then this check can be suppressed by tagging
-the test suite:
+Per default, every `TEST_P` without a corresponding `INSTANTIATE_TEST_SUITE_P`
+causes a failing test in test suite `GoogleTestVerification`. If you have a test
+suite where that omission is not an error, for example it is in a library that
+may be linked in for other reason or where the list of test cases is dynamic and
+may be empty, then this check can be suppressed by tagging the test suite:
 
 ```c++
 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(FooTest);
@@ -1489,7 +1496,7 @@ for conciseness:
 ```c++
 enum class MyType { MY_FOO = 0, MY_BAR = 1 };
 
-class MyTestSuite : public testing::TestWithParam<std::tuple<MyType, string>> {
+class MyTestSuite : public testing::TestWithParam<std::tuple<MyType, std::string>> {
 };
 
 INSTANTIATE_TEST_SUITE_P(
@@ -1498,7 +1505,7 @@ INSTANTIATE_TEST_SUITE_P(
         testing::Values(MyType::VALUE_0, MyType::VALUE_1),
         testing::ValuesIn("", "")),
     [](const testing::TestParamInfo<MyTestSuite::ParamType>& info) {
-      string name = absl::StrCat(
+      std::string name = absl::StrCat(
           std::get<0>(info.param) == MY_FOO ? "Foo" : "Bar", "_",
           std::get<1>(info.param));
       absl::c_replace_if(name, [](char c) { return !std::isalnum(c); }, '_');
@@ -1528,10 +1535,10 @@ Remember to derive it from `::testing::Test`:
 
 ```c++
 template <typename T>
-class FooTest : public ::testing::Test {
+class FooTest : public testing::Test {
  public:
   ...
-  typedef std::list<T> List;
+  using List = std::list<T>;
   static T shared_;
   T value_;
 };
@@ -1596,7 +1603,7 @@ First, define a fixture class template, as we did with typed tests:
 
 ```c++
 template <typename T>
-class FooTest : public ::testing::Test {
+class FooTest : public testing::Test {
   ...
 };
 ```
@@ -1635,7 +1642,7 @@ put the above code in a header file, you can `#include` it in multiple C++
 source files and instantiate it multiple times.
 
 ```c++
-typedef ::testing::Types<char, int, unsigned int> MyTypes;
+using MyTypes = ::testing::Types<char, int, unsigned int>;
 INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
 ```
 
@@ -1754,7 +1761,7 @@ To test them, we use the following special techniques:
     ```c++
     namespace my_namespace {
 
-    class FooTest : public ::testing::Test {
+    class FooTest : public testing::Test {
      protected:
       ...
     };
@@ -1775,7 +1782,7 @@ In frameworks that report a failure by throwing an exception, you could catch
 the exception and assert on it. But googletest doesn't use exceptions, so how do
 we test that a piece of code generates an expected failure?
 
-gunit-spi.h contains some constructs to do this. After #including this header,
+`"gtest/gtest-spi.h"` contains some constructs to do this. After #including this header,
 you can use
 
 ```c++
@@ -1849,7 +1856,7 @@ undefined.
 Use case example:
 
 ```c++
-class MyFixture : public ::testing::Test {
+class MyFixture : public testing::Test {
  public:
   // All of these optional, just like in regular macro usage.
   static void SetUpTestSuite() { ... }
@@ -1869,7 +1876,7 @@ class MyTest : public MyFixture {
 
 void RegisterMyTests(const std::vector<int>& values) {
   for (int v : values) {
-    ::testing::RegisterTest(
+    testing::RegisterTest(
         "MyFixture", ("Test" + std::to_string(v)).c_str(), nullptr,
         std::to_string(v).c_str(),
         __FILE__, __LINE__,
@@ -1914,8 +1921,8 @@ To obtain a `TestInfo` object for the currently running test, call
 ```c++
   // Gets information about the currently running test.
   // Do NOT delete the returned object - it's managed by the UnitTest class.
-  const ::testing::TestInfo* const test_info =
-    ::testing::UnitTest::GetInstance()->current_test_info();
+  const testing::TestInfo* const test_info =
+      testing::UnitTest::GetInstance()->current_test_info();
 
   printf("We are in test %s of test suite %s.\n",
          test_info->name(),
@@ -1923,8 +1930,8 @@ To obtain a `TestInfo` object for the currently running test, call
 ```
 
 `current_test_info()` returns a null pointer if no test is running. In
-particular, you cannot find the test suite name in `TestSuiteSetUp()`,
-`TestSuiteTearDown()` (where you know the test suite name implicitly), or
+particular, you cannot find the test suite name in `SetUpTestSuite()`,
+`TearDownTestSuite()` (where you know the test suite name implicitly), or
 functions called from them.
 
 ## Extending googletest by Handling Test Events
@@ -1961,15 +1968,15 @@ interesting information about the event and the test program's state.
 Here's an example:
 
 ```c++
-  class MinimalistPrinter : public ::testing::EmptyTestEventListener {
+  class MinimalistPrinter : public testing::EmptyTestEventListener {
     // Called before a test starts.
-    virtual void OnTestStart(const ::testing::TestInfo& test_info) {
+    virtual void OnTestStart(const testing::TestInfo& test_info) {
       printf("*** Test %s.%s starting.\n",
              test_info.test_suite_name(), test_info.name());
     }
 
     // Called after a failed assertion or a SUCCESS().
-    virtual void OnTestPartResult(const ::testing::TestPartResult& test_part_result) {
+    virtual void OnTestPartResult(const testing::TestPartResult& test_part_result) {
       printf("%s in %s:%d\n%s\n",
              test_part_result.failed() ? "*** Failure" : "Success",
              test_part_result.file_name(),
@@ -1978,7 +1985,7 @@ Here's an example:
     }
 
     // Called after a test ends.
-    virtual void OnTestEnd(const ::testing::TestInfo& test_info) {
+    virtual void OnTestEnd(const testing::TestInfo& test_info) {
       printf("*** Test %s.%s ending.\n",
              test_info.test_suite_name(), test_info.name());
     }
@@ -1994,10 +2001,10 @@ the "s" at the end of the name) in your `main()` function, before calling
 
 ```c++
 int main(int argc, char** argv) {
-  ::testing::InitGoogleTest(&argc, argv);
+  testing::InitGoogleTest(&argc, argv);
   // Gets hold of the event listener list.
-  ::testing::TestEventListeners& listeners =
-        ::testing::UnitTest::GetInstance()->listeners();
+  testing::TestEventListeners& listeners =
+      testing::UnitTest::GetInstance()->listeners();
   // Adds a listener to the end.  googletest takes the ownership.
   listeners.Append(new MinimalistPrinter);
   return RUN_ALL_TESTS();
@@ -2115,6 +2122,15 @@ For example:
     everything in test suite `FooTest` except `FooTest.Bar` and everything in
     test suite `BarTest` except `BarTest.Foo`.
 
+#### Stop test execution upon first failure
+
+By default, a googletest program runs all tests the user has defined. In some
+cases (e.g. iterative test development & execution) it may be desirable stop
+test execution upon first failure (trading improved latency for completeness).
+If `GTEST_FAIL_FAST` environment variable or `--gtest_fail_fast` flag is set,
+the test runner will stop execution as soon as the first test failure is
+found.
+
 #### Temporarily Disabling Tests
 
 If you have a broken test that you cannot fix right away, you can add the
@@ -2133,7 +2149,7 @@ will still be compiled:
 // Tests that Foo does Abc.
 TEST(FooTest, DISABLED_DoesAbc) { ... }
 
-class DISABLED_BarTest : public ::testing::Test { ... };
+class DISABLED_BarTest : public testing::Test { ... };
 
 // Tests that Bar does Xyz.
 TEST_F(DISABLED_BarTest, DoesXyz) { ... }
@@ -2251,6 +2267,12 @@ disable colors, or let googletest decide. When the value is `auto`, googletest
 will use colors if and only if the output goes to a terminal and (on non-Windows
 platforms) the `TERM` environment variable is set to `xterm` or `xterm-color`.
 
+#### Suppressing test passes
+
+By default, googletest prints 1 line of output for each test, indicating if it
+passed or failed. To show only test failures, run the test program with
+`--gtest_brief=1`, or set the GTEST_BRIEF environment variable to `1`.
+
 #### Suppressing the Elapsed Time
 
 By default, googletest prints the time it takes to run each test. To disable
@@ -2272,8 +2294,7 @@ environment variable to `0`.
 
 googletest can emit a detailed XML report to a file in addition to its normal
 textual output. The report contains the duration of each test, and thus can help
-you identify slow tests. The report is also used by the http://unittest
-dashboard to show per-test-method error messages.
+you identify slow tests.
 
 To generate the XML report, set the `GTEST_OUTPUT` environment variable or the
 `--gtest_output` flag to the string `"xml:path_to_output_file"`, which will
@@ -2552,6 +2573,18 @@ IMPORTANT: The exact format of the JSON document is subject to change.
 
 ### Controlling How Failures Are Reported
 
+#### Detecting Test Premature Exit
+
+Google Test implements the _premature-exit-file_ protocol for test runners
+to catch any kind of unexpected exits of test programs. Upon start,
+Google Test creates the file which will be automatically deleted after
+all work has been finished. Then, the test runner can check if this file
+exists. In case the file remains undeleted, the inspected test has exited
+prematurely.
+
+This feature is enabled only if the `TEST_PREMATURE_EXIT_FILE` environment
+variable has been set.
+
 #### Turning Assertion Failures into Break-Points
 
 When running test programs under a debugger, it's very convenient if the
@@ -2576,3 +2609,32 @@ to be handled by the debugger, such that you can examine the call stack when an
 exception is thrown. To achieve that, set the `GTEST_CATCH_EXCEPTIONS`
 environment variable to `0`, or use the `--gtest_catch_exceptions=0` flag when
 running the tests.
+
+### Sanitizer Integration
+
+The
+[Undefined Behavior Sanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html),
+[Address Sanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizer),
+and
+[Thread Sanitizer](https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual)
+all provide weak functions that you can override to trigger explicit failures
+when they detect sanitizer errors, such as creating a reference from `nullptr`.
+To override these functions, place definitions for them in a source file that
+you compile as part of your main binary:
+
+```
+extern "C" {
+void __ubsan_on_report() {
+  FAIL() << "Encountered an undefined behavior sanitizer error";
+}
+void __asan_on_error() {
+  FAIL() << "Encountered an address sanitizer error";
+}
+void __tsan_on_report() {
+  FAIL() << "Encountered a thread sanitizer error";
+}
+}  // extern "C"
+```
+
+After compiling your project with one of the sanitizers enabled, if a particular
+test triggers a sanitizer error, googletest will report that it failed.
index 05ecdd7d8da85fbee1ec51f064123d16deec8fe9..b59e1a0d27fd334153efaf1ffef46a078771a9d2 100644 (file)
@@ -2,8 +2,14 @@
 
 <!-- GOOGLETEST_CM0014 DO NOT DELETE -->
 
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
 ## Why should test suite names and test names not contain underscore?
 
+Note: Googletest reserves underscore (`_`) for special purpose keywords, such as
+[the `DISABLED_` prefix](advanced.md#temporarily-disabling-tests), in addition
+to the following rationale.
+
 Underscore (`_`) is special, as C++ reserves the following to be used by the
 compiler and the standard library:
 
@@ -211,6 +217,18 @@ particular, using it in googletest comparison assertions (`EXPECT_EQ`, etc) will
 generate an "undefined reference" linker error. The fact that "it used to work"
 doesn't mean it's valid. It just means that you were lucky. :-)
 
+If the declaration of the static data member is `constexpr` then it is
+implicitly an `inline` definition, and a separate definition in `foo.cc` is not
+needed:
+
+```c++
+// foo.h
+class Foo {
+  ...
+  static constexpr int kBar = 100;  // Defines kBar, no need to do it in foo.cc.
+};
+```
+
 ## Can I derive a test fixture from another?
 
 Yes.
@@ -295,7 +313,7 @@ program from the beginning in the child process. Therefore make sure your
 program can run side-by-side with itself and is deterministic.
 
 In the end, this boils down to good concurrent programming. You have to make
-sure that there is no race conditions or dead locks in your program. No silver
+sure that there are no race conditions or deadlocks in your program. No silver
 bullet - sorry!
 
 ## Should I use the constructor/destructor of the test fixture or SetUp()/TearDown()? {#CtorVsSetUp}
@@ -401,7 +419,7 @@ you can use it in a predicate assertion like this:
 ASSERT_PRED1(IsNegative<int>, -5);
 ```
 
-Things are more interesting if your template has more than one parameters. The
+Things are more interesting if your template has more than one parameter. The
 following won't compile:
 
 ```c++
@@ -555,7 +573,7 @@ TEST(MyDeathTest, ComplexExpression) {
                "(Func1|Method) failed");
 }
 
-// Death assertions can be used any where in a function.  In
+// Death assertions can be used anywhere in a function.  In
 // particular, they can be inside a loop.
 TEST(MyDeathTest, InsideLoop) {
   // Verifies that Foo(0), Foo(1), ..., and Foo(4) all die.
@@ -597,7 +615,7 @@ However, there are cases where you have to define your own:
 ## Why does ASSERT_DEATH complain about previous threads that were already joined?
 
 With the Linux pthread library, there is no turning back once you cross the line
-from single thread to multiple threads. The first time you create a thread, a
+from single thread to multiple threads. The first time you create a thread, a
 manager thread is created in addition, so you get 3, not 2, threads. Later when
 the thread you create joins the main thread, the thread count decrements by 1,
 but the manager thread will never be killed, so you still have 2 threads, which
@@ -612,7 +630,7 @@ runs on, you shouldn't depend on this.
 googletest does not interleave tests from different test suites. That is, it
 runs all tests in one test suite first, and then runs all tests in the next test
 suite, and so on. googletest does this because it needs to set up a test suite
-before the first test in it is run, and tear it down afterwords. Splitting up
+before the first test in it is run, and tear it down afterwards. Splitting up
 the test case would require multiple set-up and tear-down processes, which is
 inefficient and makes the semantics unclean.
 
index 117166cf66816a8b462904eaa3cd9f1fcad01339..aed4ad45440982b058b5849fb459a3c54c38330d 100644 (file)
@@ -1,5 +1,7 @@
 ## Using GoogleTest from various build systems
 
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
 GoogleTest comes with pkg-config files that can be used to determine all
 necessary flags for compiling and linking to GoogleTest (and GoogleMock).
 Pkg-config is a standardised plain-text format containing
@@ -45,77 +47,6 @@ splitting the pkg-config `Cflags` variable into include dirs and macros for
 goes for using `_LDFLAGS` over the more commonplace `_LIBRARIES`, which happens
 to discard `-L` flags and `-pthread`.
 
-### Autotools
-
-Finding GoogleTest in Autoconf and using it from Automake is also fairly easy:
-
-In your `configure.ac`:
-
-```
-AC_PREREQ([2.69])
-AC_INIT([my_gtest_pkgconfig], [0.0.1])
-AC_CONFIG_SRCDIR([samples/sample3_unittest.cc])
-AC_PROG_CXX
-
-PKG_CHECK_MODULES([GTEST], [gtest_main])
-
-AM_INIT_AUTOMAKE([foreign subdir-objects])
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
-```
-
-and in your `Makefile.am`:
-
-```
-check_PROGRAMS = testapp
-TESTS = $(check_PROGRAMS)
-
-testapp_SOURCES = samples/sample3_unittest.cc
-testapp_CXXFLAGS = $(GTEST_CFLAGS)
-testapp_LDADD = $(GTEST_LIBS)
-```
-
-### Meson
-
-Meson natively uses pkgconfig to query dependencies:
-
-```
-project('my_gtest_pkgconfig', 'cpp', version : '0.0.1')
-
-gtest_dep = dependency('gtest_main')
-
-testapp = executable(
-  'testapp',
-  files(['samples/sample3_unittest.cc']),
-  dependencies : gtest_dep,
-  install : false)
-
-test('first_and_only_test', testapp)
-```
-
-### Plain Makefiles
-
-Since `pkg-config` is a small Unix command-line utility, it can be used in
-handwritten `Makefile`s too:
-
-```makefile
-GTEST_CFLAGS = `pkg-config --cflags gtest_main`
-GTEST_LIBS = `pkg-config --libs gtest_main`
-
-.PHONY: tests all
-
-tests: all
-  ./testapp
-
-all: testapp
-
-testapp: testapp.o
-  $(CXX) $(CXXFLAGS) $(LDFLAGS) $< -o $@ $(GTEST_LIBS)
-
-testapp.o: samples/sample3_unittest.cc
-  $(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -c -o $@ $(GTEST_CFLAGS)
-```
-
 ### Help! pkg-config can't find GoogleTest!
 
 Let's say you have a `CMakeLists.txt` along the lines of the one in this
index f581d77a9ba622b7975fd96446a089fd04c352d0..28c169163e8256369f5789a1402156b50f12824e 100644 (file)
@@ -1,5 +1,9 @@
 # Googletest Primer
 
+<!-- GOOGLETEST_CM0036 DO NOT DELETE -->
+
+<!-- GOOGLETEST_CM0035 DO NOT DELETE -->
+
 ## Introduction: Why googletest?
 
 *googletest* helps you write better C++ tests.
@@ -169,7 +173,7 @@ you'll get a compiler error. We used to require the arguments to support the
 `<<` is supported, it will be called to print the arguments when the assertion
 fails; otherwise googletest will attempt to print them in the best way it can.
 For more details and how to customize the printing of the arguments, see the
-[documentation](../../googlemock/docs/cook_book.md#teaching-gmock-how-to-print-your-values).
+[documentation](./advanced.md#teaching-googletest-how-to-print-your-values).
 
 These assertions can work with a user-defined type, but only if you define the
 corresponding comparison operator (e.g., `==` or `<`). Since this is discouraged
index dc878ffbb3ae56a2b91b930b71a7cbb503222a46..2bd41cf384c61973c04c1380f7f66b4f0c74dde7 100644 (file)
@@ -190,11 +190,10 @@ GTEST_API_ bool InDeathTestChild();
 class GTEST_API_ ExitedWithCode {
  public:
   explicit ExitedWithCode(int exit_code);
+  ExitedWithCode(const ExitedWithCode&) = default;
+  void operator=(const ExitedWithCode& other) = delete;
   bool operator()(int exit_status) const;
  private:
-  // No implementation - assignment is unsupported.
-  void operator=(const ExitedWithCode& other);
-
   const int exit_code_;
 };
 
index d9b28e08a3931e54867922dd40857ab64236afc3..04cc63de239989ca6b73aeedd8373f7b48df75da 100644 (file)
@@ -384,18 +384,18 @@ class GTEST_API_ Matcher<std::string>
   Matcher(const char* s);  // NOLINT
 };
 
-#if GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
 // The following two specializations allow the user to write str
 // instead of Eq(str) and "foo" instead of Eq("foo") when a absl::string_view
 // matcher is expected.
 template <>
-class GTEST_API_ Matcher<const absl::string_view&>
-    : public internal::MatcherBase<const absl::string_view&> {
+class GTEST_API_ Matcher<const internal::StringView&>
+    : public internal::MatcherBase<const internal::StringView&> {
  public:
   Matcher() {}
 
-  explicit Matcher(const MatcherInterface<const absl::string_view&>* impl)
-      : internal::MatcherBase<const absl::string_view&>(impl) {}
+  explicit Matcher(const MatcherInterface<const internal::StringView&>* impl)
+      : internal::MatcherBase<const internal::StringView&>(impl) {}
 
   // Allows the user to write str instead of Eq(str) sometimes, where
   // str is a std::string object.
@@ -404,20 +404,20 @@ class GTEST_API_ Matcher<const absl::string_view&>
   // Allows the user to write "foo" instead of Eq("foo") sometimes.
   Matcher(const char* s);  // NOLINT
 
-  // Allows the user to pass absl::string_views directly.
-  Matcher(absl::string_view s);  // NOLINT
+  // Allows the user to pass absl::string_views or std::string_views directly.
+  Matcher(internal::StringView s);  // NOLINT
 };
 
 template <>
-class GTEST_API_ Matcher<absl::string_view>
-    : public internal::MatcherBase<absl::string_view> {
+class GTEST_API_ Matcher<internal::StringView>
+    : public internal::MatcherBase<internal::StringView> {
  public:
   Matcher() {}
 
-  explicit Matcher(const MatcherInterface<const absl::string_view&>* impl)
-      : internal::MatcherBase<absl::string_view>(impl) {}
-  explicit Matcher(const MatcherInterface<absl::string_view>* impl)
-      : internal::MatcherBase<absl::string_view>(impl) {}
+  explicit Matcher(const MatcherInterface<const internal::StringView&>* impl)
+      : internal::MatcherBase<internal::StringView>(impl) {}
+  explicit Matcher(const MatcherInterface<internal::StringView>* impl)
+      : internal::MatcherBase<internal::StringView>(impl) {}
 
   // Allows the user to write str instead of Eq(str) sometimes, where
   // str is a std::string object.
@@ -426,10 +426,10 @@ class GTEST_API_ Matcher<absl::string_view>
   // Allows the user to write "foo" instead of Eq("foo") sometimes.
   Matcher(const char* s);  // NOLINT
 
-  // Allows the user to pass absl::string_views directly.
-  Matcher(absl::string_view s);  // NOLINT
+  // Allows the user to pass absl::string_views or std::string_views directly.
+  Matcher(internal::StringView s);  // NOLINT
 };
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
 // Prints a matcher in a human-readable format.
 template <typename T>
@@ -612,6 +612,10 @@ class GeMatcher : public ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe> {
   static const char* NegatedDesc() { return "isn't >="; }
 };
 
+template <typename T, typename = typename std::enable_if<
+                          std::is_constructible<std::string, T>::value>::type>
+using StringLike = T;
+
 // Implements polymorphic matchers MatchesRegex(regex) and
 // ContainsRegex(regex), which can be used as a Matcher<T> as long as
 // T can be converted to a string.
@@ -620,12 +624,12 @@ class MatchesRegexMatcher {
   MatchesRegexMatcher(const RE* regex, bool full_match)
       : regex_(regex), full_match_(full_match) {}
 
-#if GTEST_HAS_ABSL
-  bool MatchAndExplain(const absl::string_view& s,
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  bool MatchAndExplain(const internal::StringView& s,
                        MatchResultListener* listener) const {
     return MatchAndExplain(std::string(s), listener);
   }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
   // Accepts pointer types, particularly:
   //   const char*
@@ -672,9 +676,10 @@ inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
     const internal::RE* regex) {
   return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, true));
 }
-inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
-    const std::string& regex) {
-  return MatchesRegex(new internal::RE(regex));
+template <typename T = std::string>
+PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
+    const internal::StringLike<T>& regex) {
+  return MatchesRegex(new internal::RE(std::string(regex)));
 }
 
 // Matches a string that contains regular expression 'regex'.
@@ -683,9 +688,10 @@ inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
     const internal::RE* regex) {
   return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, false));
 }
-inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
-    const std::string& regex) {
-  return ContainsRegex(new internal::RE(regex));
+template <typename T = std::string>
+PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
+    const internal::StringLike<T>& regex) {
+  return ContainsRegex(new internal::RE(std::string(regex)));
 }
 
 // Creates a polymorphic matcher that matches anything equal to x.
index 5b039df9f6e1cbb0d04d99a35f4dadccebf5e539..9a60b76677c5ab9a9d6d873ef84cdeb1b26e6ef5 100644 (file)
@@ -428,7 +428,8 @@ internal::CartesianProductHolder<Generator...> Combine(const Generator&... g) {
           ->AddTestPattern(                                                    \
               GTEST_STRINGIFY_(test_suite_name), GTEST_STRINGIFY_(test_name),  \
               new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \
-                  test_suite_name, test_name)>());                             \
+                  test_suite_name, test_name)>(),                              \
+              ::testing::internal::CodeLocation(__FILE__, __LINE__));          \
       return 0;                                                                \
     }                                                                          \
     static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_;               \
index c443625f38c05047c5608bc2ab0fe83a6ea470b2..463f0aff7e00aff032ef55f6d9d39f2ffc3cd964 100644 (file)
 #include "gtest/internal/gtest-internal.h"
 #include "gtest/internal/gtest-port.h"
 
-#if GTEST_HAS_ABSL
-#include "absl/strings/string_view.h"
-#include "absl/types/optional.h"
-#include "absl/types/variant.h"
-#endif  // GTEST_HAS_ABSL
-
 namespace testing {
 
-// Definitions in the 'internal' and 'internal2' name spaces are
-// subject to change without notice.  DO NOT USE THEM IN USER CODE!
-namespace internal2 {
+// Definitions in the internal* namespaces are subject to change without notice.
+// DO NOT USE THEM IN USER CODE!
+namespace internal {
 
-// Prints the given number of bytes in the given object to the given
-// ostream.
-GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
-                                     size_t count,
-                                     ::std::ostream* os);
+template <typename T>
+void UniversalPrint(const T& value, ::std::ostream* os);
 
-// For selecting which printer to use when a given type has neither <<
-// nor PrintTo().
-enum TypeKind {
-  kProtobuf,              // a protobuf type
-  kConvertibleToInteger,  // a type implicitly convertible to BiggestInt
-                          // (e.g. a named or unnamed enum type)
-#if GTEST_HAS_ABSL
-  kConvertibleToStringView,  // a type implicitly convertible to
-                             // absl::string_view
-#endif
-  kOtherType  // anything else
+// Used to print an STL-style container when the user doesn't define
+// a PrintTo() for it.
+struct ContainerPrinter {
+  template <typename T,
+            typename = typename std::enable_if<
+                (sizeof(IsContainerTest<T>(0)) == sizeof(IsContainer)) &&
+                !IsRecursiveContainer<T>::value>::type>
+  static void PrintValue(const T& container, std::ostream* os) {
+    const size_t kMaxCount = 32;  // The maximum number of elements to print.
+    *os << '{';
+    size_t count = 0;
+    for (auto&& elem : container) {
+      if (count > 0) {
+        *os << ',';
+        if (count == kMaxCount) {  // Enough has been printed.
+          *os << " ...";
+          break;
+        }
+      }
+      *os << ' ';
+      // We cannot call PrintTo(elem, os) here as PrintTo() doesn't
+      // handle `elem` being a native array.
+      internal::UniversalPrint(elem, os);
+      ++count;
+    }
+
+    if (count > 0) {
+      *os << ' ';
+    }
+    *os << '}';
+  }
 };
 
-// TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called
-// by the universal printer to print a value of type T when neither
-// operator<< nor PrintTo() is defined for T, where kTypeKind is the
-// "kind" of T as defined by enum TypeKind.
-template <typename T, TypeKind kTypeKind>
-class TypeWithoutFormatter {
- public:
-  // This default version is called when kTypeKind is kOtherType.
+// Used to print a pointer that is neither a char pointer nor a member
+// pointer, when the user doesn't define PrintTo() for it.  (A member
+// variable pointer or member function pointer doesn't really point to
+// a location in the address space.  Their representation is
+// implementation-defined.  Therefore they will be printed as raw
+// bytes.)
+struct FunctionPointerPrinter {
+  template <typename T, typename = typename std::enable_if<
+                            std::is_function<T>::value>::type>
+  static void PrintValue(T* p, ::std::ostream* os) {
+    if (p == nullptr) {
+      *os << "NULL";
+    } else {
+      // T is a function type, so '*os << p' doesn't do what we want
+      // (it just prints p as bool).  We want to print p as a const
+      // void*.
+      *os << reinterpret_cast<const void*>(p);
+    }
+  }
+};
+
+struct PointerPrinter {
+  template <typename T>
+  static void PrintValue(T* p, ::std::ostream* os) {
+    if (p == nullptr) {
+      *os << "NULL";
+    } else {
+      // T is not a function type.  We just call << to print p,
+      // relying on ADL to pick up user-defined << for their pointer
+      // types, if any.
+      *os << p;
+    }
+  }
+};
+
+namespace internal_stream_operator_without_lexical_name_lookup {
+
+// The presence of an operator<< here will terminate lexical scope lookup
+// straight away (even though it cannot be a match because of its argument
+// types). Thus, the two operator<< calls in StreamPrinter will find only ADL
+// candidates.
+struct LookupBlocker {};
+void operator<<(LookupBlocker, LookupBlocker);
+
+struct StreamPrinter {
+  template <typename T,
+            // Don't accept member pointers here. We'd print them via implicit
+            // conversion to bool, which isn't useful.
+            typename = typename std::enable_if<
+                !std::is_member_pointer<T>::value>::type,
+            // Only accept types for which we can find a streaming operator via
+            // ADL (possibly involving implicit conversions).
+            typename = decltype(std::declval<std::ostream&>()
+                                << std::declval<const T&>())>
   static void PrintValue(const T& value, ::std::ostream* os) {
-    PrintBytesInObjectTo(
-        static_cast<const unsigned char*>(
-            reinterpret_cast<const void*>(std::addressof(value))),
-        sizeof(value), os);
+    // Call streaming operator found by ADL, possibly with implicit conversions
+    // of the arguments.
+    *os << value;
   }
 };
 
-// We print a protobuf using its ShortDebugString() when the string
-// doesn't exceed this many characters; otherwise we print it using
-// DebugString() for better readability.
-const size_t kProtobufOneLinerMaxLength = 50;
+}  // namespace internal_stream_operator_without_lexical_name_lookup
 
-template <typename T>
-class TypeWithoutFormatter<T, kProtobuf> {
- public:
+struct ProtobufPrinter {
+  // We print a protobuf using its ShortDebugString() when the string
+  // doesn't exceed this many characters; otherwise we print it using
+  // DebugString() for better readability.
+  static const size_t kProtobufOneLinerMaxLength = 50;
+
+  template <typename T,
+            typename = typename std::enable_if<
+                internal::HasDebugStringAndShortDebugString<T>::value>::type>
   static void PrintValue(const T& value, ::std::ostream* os) {
     std::string pretty_str = value.ShortDebugString();
     if (pretty_str.length() > kProtobufOneLinerMaxLength) {
@@ -175,9 +234,7 @@ class TypeWithoutFormatter<T, kProtobuf> {
   }
 };
 
-template <typename T>
-class TypeWithoutFormatter<T, kConvertibleToInteger> {
- public:
+struct ConvertibleToIntegerPrinter {
   // Since T has no << operator or PrintTo() but can be implicitly
   // converted to BiggestInt, we print it as a BiggestInt.
   //
@@ -185,111 +242,65 @@ class TypeWithoutFormatter<T, kConvertibleToInteger> {
   // case printing it as an integer is the desired behavior.  In case
   // T is not an enum, printing it as an integer is the best we can do
   // given that it has no user-defined printer.
-  static void PrintValue(const T& value, ::std::ostream* os) {
-    const internal::BiggestInt kBigInt = value;
-    *os << kBigInt;
+  static void PrintValue(internal::BiggestInt value, ::std::ostream* os) {
+    *os << value;
   }
 };
 
-#if GTEST_HAS_ABSL
-template <typename T>
-class TypeWithoutFormatter<T, kConvertibleToStringView> {
- public:
-  // Since T has neither operator<< nor PrintTo() but can be implicitly
-  // converted to absl::string_view, we print it as a absl::string_view.
-  //
-  // Note: the implementation is further below, as it depends on
-  // internal::PrintTo symbol which is defined later in the file.
-  static void PrintValue(const T& value, ::std::ostream* os);
-};
+struct ConvertibleToStringViewPrinter {
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+  static void PrintValue(internal::StringView value, ::std::ostream* os) {
+    internal::UniversalPrint(value, os);
+  }
 #endif
+};
 
-// Prints the given value to the given ostream.  If the value is a
-// protocol message, its debug string is printed; if it's an enum or
-// of a type implicitly convertible to BiggestInt, it's printed as an
-// integer; otherwise the bytes in the value are printed.  This is
-// what UniversalPrinter<T>::Print() does when it knows nothing about
-// type T and T has neither << operator nor PrintTo().
-//
-// A user can override this behavior for a class type Foo by defining
-// a << operator in the namespace where Foo is defined.
-//
-// We put this operator in namespace 'internal2' instead of 'internal'
-// to simplify the implementation, as much code in 'internal' needs to
-// use << in STL, which would conflict with our own << were it defined
-// in 'internal'.
-//
-// Note that this operator<< takes a generic std::basic_ostream<Char,
-// CharTraits> type instead of the more restricted std::ostream.  If
-// we define it to take an std::ostream instead, we'll get an
-// "ambiguous overloads" compiler error when trying to print a type
-// Foo that supports streaming to std::basic_ostream<Char,
-// CharTraits>, as the compiler cannot tell whether
-// operator<<(std::ostream&, const T&) or
-// operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more
-// specific.
-template <typename Char, typename CharTraits, typename T>
-::std::basic_ostream<Char, CharTraits>& operator<<(
-    ::std::basic_ostream<Char, CharTraits>& os, const T& x) {
-  TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value
-                               ? kProtobuf
-                               : std::is_convertible<
-                                     const T&, internal::BiggestInt>::value
-                                     ? kConvertibleToInteger
-                                     :
-#if GTEST_HAS_ABSL
-                                     std::is_convertible<
-                                         const T&, absl::string_view>::value
-                                         ? kConvertibleToStringView
-                                         :
-#endif
-                                         kOtherType)>::PrintValue(x, &os);
-  return os;
-}
 
-}  // namespace internal2
-}  // namespace testing
+// Prints the given number of bytes in the given object to the given
+// ostream.
+GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
+                                     size_t count,
+                                     ::std::ostream* os);
+struct FallbackPrinter {
+  template <typename T>
+  static void PrintValue(const T& value, ::std::ostream* os) {
+    PrintBytesInObjectTo(
+        static_cast<const unsigned char*>(
+            reinterpret_cast<const void*>(std::addressof(value))),
+        sizeof(value), os);
+  }
+};
 
-// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up
-// magic needed for implementing UniversalPrinter won't work.
-namespace testing_internal {
+// Try every printer in order and return the first one that works.
+template <typename T, typename E, typename Printer, typename... Printers>
+struct FindFirstPrinter : FindFirstPrinter<T, E, Printers...> {};
+
+template <typename T, typename Printer, typename... Printers>
+struct FindFirstPrinter<
+    T, decltype(Printer::PrintValue(std::declval<const T&>(), nullptr)),
+    Printer, Printers...> {
+  using type = Printer;
+};
 
-// Used to print a value that is not an STL-style container when the
-// user doesn't define PrintTo() for it.
+// Select the best printer in the following order:
+//  - Print containers (they have begin/end/etc).
+//  - Print function pointers.
+//  - Print object pointers.
+//  - Use the stream operator, if available.
+//  - Print protocol buffers.
+//  - Print types convertible to BiggestInt.
+//  - Print types convertible to StringView, if available.
+//  - Fallback to printing the raw bytes of the object.
 template <typename T>
-void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
-  // With the following statement, during unqualified name lookup,
-  // testing::internal2::operator<< appears as if it was declared in
-  // the nearest enclosing namespace that contains both
-  // ::testing_internal and ::testing::internal2, i.e. the global
-  // namespace.  For more details, refer to the C++ Standard section
-  // 7.3.4-1 [namespace.udir].  This allows us to fall back onto
-  // testing::internal2::operator<< in case T doesn't come with a <<
-  // operator.
-
-  using ::testing::internal2::operator<<;
-
-  // Assuming T is defined in namespace foo, in the next statement,
-  // the compiler will consider all of:
-  //
-  //   1. foo::operator<< (thanks to Koenig look-up),
-  //   2. ::operator<< (as the current namespace is enclosed in ::),
-  //   3. testing::internal2::operator<< (thanks to the using statement above).
-  //
-  // The operator<< whose type matches T best will be picked.
-  //
-  // We deliberately allow #2 to be a candidate, as sometimes it's
-  // impossible to define #1 (e.g. when foo is ::std, defining
-  // anything in it is undefined behavior unless you are a compiler
-  // vendor.).
-  *os << value;
+void PrintWithFallback(const T& value, ::std::ostream* os) {
+  using Printer = typename FindFirstPrinter<
+      T, void, ContainerPrinter, FunctionPointerPrinter, PointerPrinter,
+      internal_stream_operator_without_lexical_name_lookup::StreamPrinter,
+      ProtobufPrinter, ConvertibleToIntegerPrinter,
+      ConvertibleToStringViewPrinter, FallbackPrinter>::type;
+  Printer::PrintValue(value, os);
 }
 
-}  // namespace testing_internal
-
-namespace testing {
-namespace internal {
-
 // FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
 // value of type ToPrint that is an operand of a comparison assertion
 // (e.g. ASSERT_EQ).  OtherOperand is the type of the other operand in
@@ -338,6 +349,14 @@ GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);
 GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);
 GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);
 GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
+#ifdef __cpp_char8_t
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char8_t);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char8_t);
+#endif
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char16_t);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char16_t);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char32_t);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char32_t);
 
 #undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
 
@@ -355,6 +374,14 @@ GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
 
 GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);
 GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);
+#ifdef __cpp_char8_t
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char8_t, ::std::u8string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char8_t, ::std::u8string);
+#endif
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char16_t, ::std::u16string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char16_t, ::std::u16string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char32_t, ::std::u32string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char32_t, ::std::u32string);
 
 #if GTEST_HAS_STD_WSTRING
 GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);
@@ -387,85 +414,6 @@ std::string FormatForComparisonFailureMessage(
 template <typename T>
 class UniversalPrinter;
 
-template <typename T>
-void UniversalPrint(const T& value, ::std::ostream* os);
-
-enum DefaultPrinterType {
-  kPrintContainer,
-  kPrintPointer,
-  kPrintFunctionPointer,
-  kPrintOther,
-};
-template <DefaultPrinterType type> struct WrapPrinterType {};
-
-// Used to print an STL-style container when the user doesn't define
-// a PrintTo() for it.
-template <typename C>
-void DefaultPrintTo(WrapPrinterType<kPrintContainer> /* dummy */,
-                    const C& container, ::std::ostream* os) {
-  const size_t kMaxCount = 32;  // The maximum number of elements to print.
-  *os << '{';
-  size_t count = 0;
-  for (typename C::const_iterator it = container.begin();
-       it != container.end(); ++it, ++count) {
-    if (count > 0) {
-      *os << ',';
-      if (count == kMaxCount) {  // Enough has been printed.
-        *os << " ...";
-        break;
-      }
-    }
-    *os << ' ';
-    // We cannot call PrintTo(*it, os) here as PrintTo() doesn't
-    // handle *it being a native array.
-    internal::UniversalPrint(*it, os);
-  }
-
-  if (count > 0) {
-    *os << ' ';
-  }
-  *os << '}';
-}
-
-// Used to print a pointer that is neither a char pointer nor a member
-// pointer, when the user doesn't define PrintTo() for it.  (A member
-// variable pointer or member function pointer doesn't really point to
-// a location in the address space.  Their representation is
-// implementation-defined.  Therefore they will be printed as raw
-// bytes.)
-template <typename T>
-void DefaultPrintTo(WrapPrinterType<kPrintPointer> /* dummy */,
-                    T* p, ::std::ostream* os) {
-  if (p == nullptr) {
-    *os << "NULL";
-  } else {
-    // T is not a function type.  We just call << to print p,
-    // relying on ADL to pick up user-defined << for their pointer
-    // types, if any.
-    *os << p;
-  }
-}
-template <typename T>
-void DefaultPrintTo(WrapPrinterType<kPrintFunctionPointer> /* dummy */,
-                    T* p, ::std::ostream* os) {
-  if (p == nullptr) {
-    *os << "NULL";
-  } else {
-    // T is a function type, so '*os << p' doesn't do what we want
-    // (it just prints p as bool).  We want to print p as a const
-    // void*.
-    *os << reinterpret_cast<const void*>(p);
-  }
-}
-
-// Used to print a non-container, non-pointer value when the user
-// doesn't define PrintTo() for it.
-template <typename T>
-void DefaultPrintTo(WrapPrinterType<kPrintOther> /* dummy */,
-                    const T& value, ::std::ostream* os) {
-  ::testing_internal::DefaultPrintNonContainerTo(value, os);
-}
-
 // Prints the given value using the << operator if it has one;
 // otherwise prints the bytes in it.  This is what
 // UniversalPrinter<T>::Print() does when PrintTo() is not specialized
@@ -479,36 +427,7 @@ void DefaultPrintTo(WrapPrinterType<kPrintOther> /* dummy */,
 // wants).
 template <typename T>
 void PrintTo(const T& value, ::std::ostream* os) {
-  // DefaultPrintTo() is overloaded.  The type of its first argument
-  // determines which version will be picked.
-  //
-  // Note that we check for container types here, prior to we check
-  // for protocol message types in our operator<<.  The rationale is:
-  //
-  // For protocol messages, we want to give people a chance to
-  // override Google Mock's format by defining a PrintTo() or
-  // operator<<.  For STL containers, other formats can be
-  // incompatible with Google Mock's format for the container
-  // elements; therefore we check for container types here to ensure
-  // that our format is used.
-  //
-  // Note that MSVC and clang-cl do allow an implicit conversion from
-  // pointer-to-function to pointer-to-object, but clang-cl warns on it.
-  // So don't use ImplicitlyConvertible if it can be helped since it will
-  // cause this warning, and use a separate overload of DefaultPrintTo for
-  // function pointers so that the `*os << p` in the object pointer overload
-  // doesn't cause that warning either.
-  DefaultPrintTo(
-      WrapPrinterType <
-                  (sizeof(IsContainerTest<T>(0)) == sizeof(IsContainer)) &&
-              !IsRecursiveContainer<T>::value
-          ? kPrintContainer
-          : !std::is_pointer<T>::value
-                ? kPrintOther
-                : std::is_function<typename std::remove_pointer<T>::type>::value
-                      ? kPrintFunctionPointer
-                      : kPrintPointer > (),
-      value, os);
+  internal::PrintWithFallback(value, os);
 }
 
 // The following list of PrintTo() overloads tells
@@ -539,6 +458,16 @@ inline void PrintTo(bool x, ::std::ostream* os) {
 // is implemented as an unsigned type.
 GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
 
+GTEST_API_ void PrintTo(char32_t c, ::std::ostream* os);
+inline void PrintTo(char16_t c, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<char32_t>(c), os);
+}
+#ifdef __cpp_char8_t
+inline void PrintTo(char8_t c, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<char32_t>(c), os);
+}
+#endif
+
 // Overloads for C strings.
 GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
 inline void PrintTo(char* s, ::std::ostream* os) {
@@ -559,6 +488,26 @@ inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
 inline void PrintTo(unsigned char* s, ::std::ostream* os) {
   PrintTo(ImplicitCast_<const void*>(s), os);
 }
+#ifdef __cpp_char8_t
+inline void PrintTo(const char8_t* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(char8_t* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+#endif
+inline void PrintTo(const char16_t* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(char16_t* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(const char32_t* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(char32_t* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
 
 // MSVC can be configured to define wchar_t as a typedef of unsigned
 // short.  It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
@@ -601,12 +550,12 @@ inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
 }
 #endif  // GTEST_HAS_STD_WSTRING
 
-#if GTEST_HAS_ABSL
-// Overload for absl::string_view.
-inline void PrintTo(absl::string_view sp, ::std::ostream* os) {
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+// Overload for internal::StringView.
+inline void PrintTo(internal::StringView sp, ::std::ostream* os) {
   PrintTo(::std::string(sp), os);
 }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
 inline void PrintTo(std::nullptr_t, ::std::ostream* os) { *os << "(nullptr)"; }
 
@@ -680,14 +629,42 @@ class UniversalPrinter {
   GTEST_DISABLE_MSC_WARNINGS_POP_()
 };
 
-#if GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_ANY
 
-// Printer for absl::optional
+// Printer for std::any / absl::any
+
+template <>
+class UniversalPrinter<Any> {
+ public:
+  static void Print(const Any& value, ::std::ostream* os) {
+    if (value.has_value()) {
+      *os << "value of type " << GetTypeName(value);
+    } else {
+      *os << "no value";
+    }
+  }
+
+ private:
+  static std::string GetTypeName(const Any& value) {
+#if GTEST_HAS_RTTI
+    return internal::GetTypeName(value.type());
+#else
+    static_cast<void>(value);  // possibly unused
+    return "<unknown_type>";
+#endif  // GTEST_HAS_RTTI
+  }
+};
+
+#endif  // GTEST_INTERNAL_HAS_ANY
+
+#if GTEST_INTERNAL_HAS_OPTIONAL
+
+// Printer for std::optional / absl::optional
 
 template <typename T>
-class UniversalPrinter<::absl::optional<T>> {
+class UniversalPrinter<Optional<T>> {
  public:
-  static void Print(const ::absl::optional<T>& value, ::std::ostream* os) {
+  static void Print(const Optional<T>& value, ::std::ostream* os) {
     *os << '(';
     if (!value) {
       *os << "nullopt";
@@ -698,14 +675,22 @@ class UniversalPrinter<::absl::optional<T>> {
   }
 };
 
-// Printer for absl::variant
+#endif  // GTEST_INTERNAL_HAS_OPTIONAL
+
+#if GTEST_INTERNAL_HAS_VARIANT
+
+// Printer for std::variant / absl::variant
 
 template <typename... T>
-class UniversalPrinter<::absl::variant<T...>> {
+class UniversalPrinter<Variant<T...>> {
  public:
-  static void Print(const ::absl::variant<T...>& value, ::std::ostream* os) {
+  static void Print(const Variant<T...>& value, ::std::ostream* os) {
     *os << '(';
-    absl::visit(Visitor{os}, value);
+#if GTEST_HAS_ABSL
+    absl::visit(Visitor{os, value.index()}, value);
+#else
+    std::visit(Visitor{os, value.index()}, value);
+#endif  // GTEST_HAS_ABSL
     *os << ')';
   }
 
@@ -713,14 +698,16 @@ class UniversalPrinter<::absl::variant<T...>> {
   struct Visitor {
     template <typename U>
     void operator()(const U& u) const {
-      *os << "'" << GetTypeName<U>() << "' with value ";
+      *os << "'" << GetTypeName<U>() << "(index = " << index
+          << ")' with value ";
       UniversalPrint(u, os);
     }
     ::std::ostream* os;
+    std::size_t index;
   };
 };
 
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_VARIANT
 
 // UniversalPrintArray(begin, len, os) prints an array of 'len'
 // elements, starting at address 'begin'.
@@ -899,16 +886,6 @@ Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
 
 }  // namespace internal
 
-#if GTEST_HAS_ABSL
-namespace internal2 {
-template <typename T>
-void TypeWithoutFormatter<T, kConvertibleToStringView>::PrintValue(
-    const T& value, ::std::ostream* os) {
-  internal::PrintTo(absl::string_view(value), os);
-}
-}  // namespace internal2
-#endif
-
 template <typename T>
 ::std::string PrintToString(const T& value) {
   ::std::stringstream ss;
index 464b316990b1bec8a0c131c7554854afa9f39fc0..b3d40416aa6cf48370547834b1c4b20776b878b7 100644 (file)
@@ -101,6 +101,10 @@ GTEST_DECLARE_bool_(catch_exceptions);
 // to let Google Test decide.
 GTEST_DECLARE_string_(color);
 
+// This flag controls whether the test runner should continue execution past
+// first failure.
+GTEST_DECLARE_bool_(fail_fast);
+
 // This flag sets up the filter to select by name using a glob pattern
 // the tests to run. If the filter is not given all tests are executed.
 GTEST_DECLARE_string_(filter);
@@ -117,6 +121,9 @@ GTEST_DECLARE_bool_(list_tests);
 // in addition to its normal textual output.
 GTEST_DECLARE_string_(output);
 
+// This flags control whether Google Test prints only test failures.
+GTEST_DECLARE_bool_(brief);
+
 // This flags control whether Google Test prints the elapsed time for each
 // test.
 GTEST_DECLARE_bool_(print_time);
@@ -279,7 +286,11 @@ class GTEST_API_ AssertionResult {
   // Used in EXPECT_TRUE/FALSE(assertion_result).
   AssertionResult(const AssertionResult& other);
 
-#if defined(_MSC_VER) && _MSC_VER < 1910
+// C4800 is a level 3 warning in Visual Studio 2015 and earlier.
+// This warning is not emitted in Visual Studio 2017.
+// This warning is off by default starting in Visual Studio 2019 but can be
+// enabled with command-line options.
+#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
   GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
 #endif
 
@@ -299,7 +310,7 @@ class GTEST_API_ AssertionResult {
       = nullptr)
       : success_(success) {}
 
-#if defined(_MSC_VER) && _MSC_VER < 1910
+#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
   GTEST_DISABLE_MSC_WARNINGS_POP_()
 #endif
 
@@ -407,10 +418,10 @@ class GTEST_API_ Test {
   // The d'tor is virtual as we intend to inherit from Test.
   virtual ~Test();
 
-  // Sets up the stuff shared by all tests in this test case.
+  // Sets up the stuff shared by all tests in this test suite.
   //
   // Google Test will call Foo::SetUpTestSuite() before running the first
-  // test in test case Foo.  Hence a sub-class can define its own
+  // test in test suite Foo.  Hence a sub-class can define its own
   // SetUpTestSuite() method to shadow the one defined in the super
   // class.
   static void SetUpTestSuite() {}
@@ -418,12 +429,13 @@ class GTEST_API_ Test {
   // Tears down the stuff shared by all tests in this test suite.
   //
   // Google Test will call Foo::TearDownTestSuite() after running the last
-  // test in test case Foo.  Hence a sub-class can define its own
+  // test in test suite Foo.  Hence a sub-class can define its own
   // TearDownTestSuite() method to shadow the one defined in the super
   // class.
   static void TearDownTestSuite() {}
 
-  // Legacy API is deprecated but still available
+  // Legacy API is deprecated but still available. Use SetUpTestSuite and
+  // TearDownTestSuite instead.
 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
   static void TearDownTestCase() {}
   static void SetUpTestCase() {}
@@ -791,6 +803,9 @@ class GTEST_API_ TestInfo {
   // deletes it.
   void Run();
 
+  // Skip and records the test result for this object.
+  void Skip();
+
   static void ClearTestResult(TestInfo* test_info) {
     test_info->result_.Clear();
   }
@@ -939,6 +954,9 @@ class GTEST_API_ TestSuite {
   // Runs every test in this TestSuite.
   void Run();
 
+  // Skips the execution of tests under this TestSuite
+  void Skip();
+
   // Runs SetUpTestSuite() for this TestSuite.  This wrapper is needed
   // for catching exceptions thrown from SetUpTestSuite().
   void RunSetUpTestSuite() {
@@ -1803,12 +1821,6 @@ class GTEST_API_ AssertHelper {
   GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
 };
 
-enum GTestColor { COLOR_DEFAULT, COLOR_RED, COLOR_GREEN, COLOR_YELLOW };
-
-GTEST_API_ GTEST_ATTRIBUTE_PRINTF_(2, 3) void ColoredPrintf(GTestColor color,
-                                                            const char* fmt,
-                                                            ...);
-
 }  // namespace internal
 
 // The pure interface class that all value-parameterized tests inherit from.
@@ -2364,9 +2376,11 @@ constexpr bool StaticAssertTypeEq() noexcept {
 //   }
 //
 // GOOGLETEST_CM0011 DO NOT DELETE
+#if !GTEST_DONT_DEFINE_TEST
 #define TEST_F(test_fixture, test_name)\
   GTEST_TEST_(test_fixture, test_name, test_fixture, \
               ::testing::internal::GetTypeId<test_fixture>())
+#endif  // !GTEST_DONT_DEFINE_TEST
 
 // Returns a path to temporary directory.
 // Tries to determine an appropriate directory for the platform.
index 6bad8780b5a063c5d87e058c7299f8ad0ed53834..8dc74bbb863120b038440d0ed4e5b953d93da4e5 100644 (file)
@@ -90,7 +90,9 @@
 #define GTEST_STRINGIFY_HELPER_(name, ...) #name
 #define GTEST_STRINGIFY_(...) GTEST_STRINGIFY_HELPER_(__VA_ARGS__, )
 
-namespace proto2 { class Message; }
+namespace proto2 {
+class MessageLite;
+}
 
 namespace testing {
 
@@ -285,7 +287,7 @@ class FloatingPoint {
   //
   // See the following article for more details on ULP:
   // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
-  static const size_t kMaxUlps = 4;
+  static const uint32_t kMaxUlps = 4;
 
   // Constructs a FloatingPoint from a raw floating-point number.
   //
@@ -518,6 +520,7 @@ struct SuiteApiResolver : T {
 
   static SetUpTearDownSuiteFuncType GetSetUpCaseOrSuite(const char* filename,
                                                         int line_num) {
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
     SetUpTearDownSuiteFuncType test_case_fp =
         GetNotDefaultOrNull(&T::SetUpTestCase, &Test::SetUpTestCase);
     SetUpTearDownSuiteFuncType test_suite_fp =
@@ -529,10 +532,16 @@ struct SuiteApiResolver : T {
         << filename << ":" << line_num;
 
     return test_case_fp != nullptr ? test_case_fp : test_suite_fp;
+#else
+    (void)(filename);
+    (void)(line_num);
+    return &T::SetUpTestSuite;
+#endif
   }
 
   static SetUpTearDownSuiteFuncType GetTearDownCaseOrSuite(const char* filename,
                                                            int line_num) {
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
     SetUpTearDownSuiteFuncType test_case_fp =
         GetNotDefaultOrNull(&T::TearDownTestCase, &Test::TearDownTestCase);
     SetUpTearDownSuiteFuncType test_suite_fp =
@@ -544,6 +553,11 @@ struct SuiteApiResolver : T {
         << filename << ":" << line_num;
 
     return test_case_fp != nullptr ? test_case_fp : test_suite_fp;
+#else
+    (void)(filename);
+    (void)(line_num);
+    return &T::TearDownTestSuite;
+#endif
   }
 };
 
@@ -552,11 +566,11 @@ struct SuiteApiResolver : T {
 //
 // Arguments:
 //
-//   test_suite_name:   name of the test suite
+//   test_suite_name:  name of the test suite
 //   name:             name of the test
-//   type_param        the name of the test's type parameter, or NULL if
+//   type_param:       the name of the test's type parameter, or NULL if
 //                     this is not a typed or a type-parameterized test.
-//   value_param       text representation of the test's value parameter,
+//   value_param:      text representation of the test's value parameter,
 //                     or NULL if this is not a type-parameterized test.
 //   code_location:    code location where the test is defined
 //   fixture_class_id: ID of the test fixture class
@@ -878,11 +892,34 @@ class GTEST_API_ Random {
 #define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
   typename std::remove_const<typename std::remove_reference<T>::type>::type
 
-// IsAProtocolMessage<T>::value is a compile-time bool constant that's
-// true if and only if T is type proto2::Message or a subclass of it.
+// HasDebugStringAndShortDebugString<T>::value is a compile-time bool constant
+// that's true if and only if T has methods DebugString() and ShortDebugString()
+// that return std::string.
 template <typename T>
-struct IsAProtocolMessage
-    : public std::is_convertible<const T*, const ::proto2::Message*> {};
+class HasDebugStringAndShortDebugString {
+ private:
+  template <typename C>
+  static constexpr auto CheckDebugString(C*) -> typename std::is_same<
+      std::string, decltype(std::declval<const C>().DebugString())>::type;
+  template <typename>
+  static constexpr std::false_type CheckDebugString(...);
+
+  template <typename C>
+  static constexpr auto CheckShortDebugString(C*) -> typename std::is_same<
+      std::string, decltype(std::declval<const C>().ShortDebugString())>::type;
+  template <typename>
+  static constexpr std::false_type CheckShortDebugString(...);
+
+  using HasDebugStringType = decltype(CheckDebugString<T>(nullptr));
+  using HasShortDebugStringType = decltype(CheckShortDebugString<T>(nullptr));
+
+ public:
+  static constexpr bool value =
+      HasDebugStringType::value && HasShortDebugStringType::value;
+};
+
+template <typename T>
+constexpr bool HasDebugStringAndShortDebugString<T>::value;
 
 // When the compiler sees expression IsContainerTest<C>(0), if C is an
 // STL-style container class, the first overload of IsContainerTest
@@ -1118,8 +1155,6 @@ class NativeArray {
   const Element* array_;
   size_t size_;
   void (NativeArray::*clone_)(const Element*, size_t);
-
-  GTEST_DISALLOW_ASSIGN_(NativeArray);
 };
 
 // Backport of std::index_sequence.
@@ -1143,12 +1178,18 @@ struct DoubleSequence<false, IndexSequence<I...>, sizeofT> {
 // Backport of std::make_index_sequence.
 // It uses O(ln(N)) instantiation depth.
 template <size_t N>
-struct MakeIndexSequence
-    : DoubleSequence<N % 2 == 1, typename MakeIndexSequence<N / 2>::type,
+struct MakeIndexSequenceImpl
+    : DoubleSequence<N % 2 == 1, typename MakeIndexSequenceImpl<N / 2>::type,
                      N / 2>::type {};
 
 template <>
-struct MakeIndexSequence<0> : IndexSequence<> {};
+struct MakeIndexSequenceImpl<0> : IndexSequence<> {};
+
+template <size_t N>
+using MakeIndexSequence = typename MakeIndexSequenceImpl<N>::type;
+
+template <typename... T>
+using IndexSequenceFor = typename MakeIndexSequence<sizeof...(T)>::type;
 
 template <size_t>
 struct Ignore {
@@ -1174,6 +1215,8 @@ struct ElemFromList {
           static_cast<T (*)()>(nullptr)...));
 };
 
+struct FlatTupleConstructTag {};
+
 template <typename... T>
 class FlatTuple;
 
@@ -1184,7 +1227,9 @@ template <typename... T, size_t I>
 struct FlatTupleElemBase<FlatTuple<T...>, I> {
   using value_type = typename ElemFromList<I, T...>::type;
   FlatTupleElemBase() = default;
-  explicit FlatTupleElemBase(value_type t) : value(std::move(t)) {}
+  template <typename Arg>
+  explicit FlatTupleElemBase(FlatTupleConstructTag, Arg&& t)
+      : value(std::forward<Arg>(t)) {}
   value_type value;
 };
 
@@ -1196,8 +1241,30 @@ struct FlatTupleBase<FlatTuple<T...>, IndexSequence<Idx...>>
     : FlatTupleElemBase<FlatTuple<T...>, Idx>... {
   using Indices = IndexSequence<Idx...>;
   FlatTupleBase() = default;
-  explicit FlatTupleBase(T... t)
-      : FlatTupleElemBase<FlatTuple<T...>, Idx>(std::move(t))... {}
+  template <typename... Args>
+  explicit FlatTupleBase(FlatTupleConstructTag, Args&&... args)
+      : FlatTupleElemBase<FlatTuple<T...>, Idx>(FlatTupleConstructTag{},
+                                                std::forward<Args>(args))... {}
+
+  template <size_t I>
+  const typename ElemFromList<I, T...>::type& Get() const {
+    return FlatTupleElemBase<FlatTuple<T...>, I>::value;
+  }
+
+  template <size_t I>
+  typename ElemFromList<I, T...>::type& Get() {
+    return FlatTupleElemBase<FlatTuple<T...>, I>::value;
+  }
+
+  template <typename F>
+  auto Apply(F&& f) -> decltype(std::forward<F>(f)(this->Get<Idx>()...)) {
+    return std::forward<F>(f)(Get<Idx>()...);
+  }
+
+  template <typename F>
+  auto Apply(F&& f) const -> decltype(std::forward<F>(f)(this->Get<Idx>()...)) {
+    return std::forward<F>(f)(Get<Idx>()...);
+  }
 };
 
 // Analog to std::tuple but with different tradeoffs.
@@ -1218,17 +1285,12 @@ class FlatTuple
 
  public:
   FlatTuple() = default;
-  explicit FlatTuple(T... t) : FlatTuple::FlatTupleBase(std::move(t)...) {}
+  template <typename... Args>
+  explicit FlatTuple(FlatTupleConstructTag tag, Args&&... args)
+      : FlatTuple::FlatTupleBase(tag, std::forward<Args>(args)...) {}
 
-  template <size_t I>
-  const typename ElemFromList<I, T...>::type& Get() const {
-    return static_cast<const FlatTupleElemBase<FlatTuple, I>*>(this)->value;
-  }
-
-  template <size_t I>
-  typename ElemFromList<I, T...>::type& Get() {
-    return static_cast<FlatTupleElemBase<FlatTuple, I>*>(this)->value;
-  }
+  using FlatTuple::FlatTupleBase::Apply;
+  using FlatTuple::FlatTupleBase::Get;
 };
 
 // Utility functions to be called with static_assert to induce deprecation
@@ -1261,6 +1323,22 @@ constexpr bool InstantiateTypedTestCase_P_IsDeprecated() { return true; }
 }  // namespace internal
 }  // namespace testing
 
+namespace std {
+// Some standard library implementations use `struct tuple_size` and some use
+// `class tuple_size`. Clang warns about the mismatch.
+// https://reviews.llvm.org/D55466
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmismatched-tags"
+#endif
+template <typename... Ts>
+struct tuple_size<testing::internal::FlatTuple<Ts...>>
+    : std::integral_constant<size_t, sizeof...(Ts)> {};
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+}  // namespace std
+
 #define GTEST_MESSAGE_AT_(file, line, message, result_type) \
   ::testing::internal::AssertHelper(result_type, file, line, message) \
     = ::testing::Message()
@@ -1283,44 +1361,98 @@ constexpr bool InstantiateTypedTestCase_P_IsDeprecated() { return true; }
 // Suppress MSVC warning 4072 (unreachable code) for the code following
 // statement if it returns or throws (or doesn't return or throw in some
 // situations).
+// NOTE: The "else" is important to keep this expansion to prevent a top-level
+// "else" from attaching to our "if".
 #define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
-  if (::testing::internal::AlwaysTrue()) { statement; }
+  if (::testing::internal::AlwaysTrue()) {                        \
+    statement;                                                    \
+  } else                     /* NOLINT */                         \
+    static_assert(true, "")  // User must have a semicolon after expansion.
 
-#define GTEST_TEST_THROW_(statement, expected_exception, fail) \
-  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
-  if (::testing::internal::ConstCharPtr gtest_msg = "") { \
-    bool gtest_caught_expected = false; \
-    try { \
-      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
-    } \
-    catch (expected_exception const&) { \
-      gtest_caught_expected = true; \
-    } \
-    catch (...) { \
-      gtest_msg.value = \
-          "Expected: " #statement " throws an exception of type " \
-          #expected_exception ".\n  Actual: it throws a different type."; \
-      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
-    } \
-    if (!gtest_caught_expected) { \
-      gtest_msg.value = \
-          "Expected: " #statement " throws an exception of type " \
-          #expected_exception ".\n  Actual: it throws nothing."; \
-      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
-    } \
-  } else \
-    GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
-      fail(gtest_msg.value)
+#if GTEST_HAS_EXCEPTIONS
+
+namespace testing {
+namespace internal {
+
+class NeverThrown {
+ public:
+  const char* what() const noexcept {
+    return "this exception should never be thrown";
+  }
+};
+
+}  // namespace internal
+}  // namespace testing
+
+#if GTEST_HAS_RTTI
+
+#define GTEST_EXCEPTION_TYPE_(e) ::testing::internal::GetTypeName(typeid(e))
+
+#else  // GTEST_HAS_RTTI
+
+#define GTEST_EXCEPTION_TYPE_(e) \
+  std::string { "an std::exception-derived error" }
+
+#endif  // GTEST_HAS_RTTI
+
+#define GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception)   \
+  catch (typename std::conditional<                                            \
+         std::is_same<typename std::remove_cv<typename std::remove_reference<  \
+                          expected_exception>::type>::type,                    \
+                      std::exception>::value,                                  \
+         const ::testing::internal::NeverThrown&, const std::exception&>::type \
+             e) {                                                              \
+    gtest_msg.value = "Expected: " #statement                                  \
+                      " throws an exception of type " #expected_exception      \
+                      ".\n  Actual: it throws ";                               \
+    gtest_msg.value += GTEST_EXCEPTION_TYPE_(e);                               \
+    gtest_msg.value += " with description \"";                                 \
+    gtest_msg.value += e.what();                                               \
+    gtest_msg.value += "\".";                                                  \
+    goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__);                \
+  }
+
+#else  // GTEST_HAS_EXCEPTIONS
+
+#define GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception)
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+#define GTEST_TEST_THROW_(statement, expected_exception, fail)              \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_                                             \
+  if (::testing::internal::TrueWithString gtest_msg{}) {                    \
+    bool gtest_caught_expected = false;                                     \
+    try {                                                                   \
+      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement);            \
+    } catch (expected_exception const&) {                                   \
+      gtest_caught_expected = true;                                         \
+    }                                                                       \
+    GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception)    \
+    catch (...) {                                                           \
+      gtest_msg.value = "Expected: " #statement                             \
+                        " throws an exception of type " #expected_exception \
+                        ".\n  Actual: it throws a different type.";         \
+      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__);           \
+    }                                                                       \
+    if (!gtest_caught_expected) {                                           \
+      gtest_msg.value = "Expected: " #statement                             \
+                        " throws an exception of type " #expected_exception \
+                        ".\n  Actual: it throws nothing.";                  \
+      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__);           \
+    }                                                                       \
+  } else /*NOLINT*/                                                         \
+    GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__)                   \
+        : fail(gtest_msg.value.c_str())
 
 #if GTEST_HAS_EXCEPTIONS
 
-#define GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_() \
-  catch (std::exception const& e) { \
-    gtest_msg.value = ( \
-      "it throws std::exception-derived exception with description: \"" \
-    ); \
-    gtest_msg.value += e.what(); \
-    gtest_msg.value += "\"."; \
+#define GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_()                \
+  catch (std::exception const& e) {                               \
+    gtest_msg.value = "it throws ";                               \
+    gtest_msg.value += GTEST_EXCEPTION_TYPE_(e);                  \
+    gtest_msg.value += " with description \"";                    \
+    gtest_msg.value += e.what();                                  \
+    gtest_msg.value += "\".";                                     \
     goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
   }
 
@@ -1404,7 +1536,7 @@ constexpr bool InstantiateTypedTestCase_P_IsDeprecated() { return true; }
   class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)                    \
       : public parent_class {                                                 \
    public:                                                                    \
-    GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {}                   \
+    GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() = default;           \
     ~GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() override = default; \
     GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name,   \
                                                            test_name));       \
index 7f7a13bf84b5a0ed5d22784a8db86459a9c1bd11..d12bd552b2b14c2af3248a2a4592e0f26c122af3 100644 (file)
@@ -459,7 +459,7 @@ class ParameterizedTestSuiteInfoBase {
 
   // Base part of test suite name for display purposes.
   virtual const std::string& GetTestSuiteName() const = 0;
-  // Test case id to verify identity.
+  // Test suite id to verify identity.
   virtual TypeId GetTestSuiteTypeId() const = 0;
   // UnitTest class invokes this method to register tests in this
   // test suite right before running them in RUN_ALL_TESTS macro.
@@ -507,11 +507,11 @@ class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
                                       CodeLocation code_location)
       : test_suite_name_(name), code_location_(code_location) {}
 
-  // Test case base name for display purposes.
+  // Test suite base name for display purposes.
   const std::string& GetTestSuiteName() const override {
     return test_suite_name_;
   }
-  // Test case id to verify identity.
+  // Test suite id to verify identity.
   TypeId GetTestSuiteTypeId() const override { return GetTypeId<TestSuite>(); }
   // TEST_P macro uses AddTestPattern() to record information
   // about a single test in a LocalTestInfo structure.
@@ -520,9 +520,10 @@ class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
   // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
   // test suite base name and DoBar is test base name.
   void AddTestPattern(const char* test_suite_name, const char* test_base_name,
-                      TestMetaFactoryBase<ParamType>* meta_factory) {
-    tests_.push_back(std::shared_ptr<TestInfo>(
-        new TestInfo(test_suite_name, test_base_name, meta_factory)));
+                      TestMetaFactoryBase<ParamType>* meta_factory,
+                      CodeLocation code_location) {
+    tests_.push_back(std::shared_ptr<TestInfo>(new TestInfo(
+        test_suite_name, test_base_name, meta_factory, code_location)));
   }
   // INSTANTIATE_TEST_SUITE_P macro uses AddGenerator() to record information
   // about a generator.
@@ -589,7 +590,7 @@ class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
           MakeAndRegisterTestInfo(
               test_suite_name.c_str(), test_name_stream.GetString().c_str(),
               nullptr,  // No type parameter.
-              PrintToString(*param_it).c_str(), code_location_,
+              PrintToString(*param_it).c_str(), test_info->code_location,
               GetTestSuiteTypeId(),
               SuiteApiResolver<TestSuite>::GetSetUpCaseOrSuite(file, line),
               SuiteApiResolver<TestSuite>::GetTearDownCaseOrSuite(file, line),
@@ -610,14 +611,17 @@ class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
   // with TEST_P macro.
   struct TestInfo {
     TestInfo(const char* a_test_suite_base_name, const char* a_test_base_name,
-             TestMetaFactoryBase<ParamType>* a_test_meta_factory)
+             TestMetaFactoryBase<ParamType>* a_test_meta_factory,
+             CodeLocation a_code_location)
         : test_suite_base_name(a_test_suite_base_name),
           test_base_name(a_test_base_name),
-          test_meta_factory(a_test_meta_factory) {}
+          test_meta_factory(a_test_meta_factory),
+          code_location(a_code_location) {}
 
     const std::string test_suite_base_name;
     const std::string test_base_name;
     const std::unique_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
+    const CodeLocation code_location;
   };
   using TestInfoContainer = ::std::vector<std::shared_ptr<TestInfo> >;
   // Records data received from INSTANTIATE_TEST_SUITE_P macros:
@@ -779,10 +783,15 @@ internal::ParamGenerator<typename Container::value_type> ValuesIn(
 namespace internal {
 // Used in the Values() function to provide polymorphic capabilities.
 
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable : 4100)
+#endif
+
 template <typename... Ts>
 class ValueArray {
  public:
-  ValueArray(Ts... v) : v_{std::move(v)...} {}
+  explicit ValueArray(Ts... v) : v_(FlatTupleConstructTag{}, std::move(v)...) {}
 
   template <typename T>
   operator ParamGenerator<T>() const {  // NOLINT
@@ -798,6 +807,10 @@ class ValueArray {
   FlatTuple<Ts...> v_;
 };
 
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
 template <typename... T>
 class CartesianProductGenerator
     : public ParamGeneratorInterface<::std::tuple<T...>> {
index d3239b25baf9bf477a18ca92bd7301b1b32df3a9..813bf2c659b8d574683acb619a3568c61d3881d1 100644 (file)
@@ -68,6 +68,7 @@
 # define GTEST_OS_OS2 1
 #elif defined __APPLE__
 # define GTEST_OS_MAC 1
+# include <TargetConditionals.h>
 # if TARGET_OS_IPHONE
 #  define GTEST_OS_IOS 1
 # endif
index 0543da54d801aff64b660e3423553dc9f52143c2..6b66362f17aeae44b03b7a93e7506ed864b2605a 100644 (file)
 //                                        suppressed (constant conditional).
 //   GTEST_INTENTIONAL_CONST_COND_POP_  - finish code section where MSVC C4127
 //                                        is suppressed.
+//   GTEST_INTERNAL_HAS_ANY - for enabling UniversalPrinter<std::any> or
+//                            UniversalPrinter<absl::any> specializations.
+//   GTEST_INTERNAL_HAS_OPTIONAL - for enabling UniversalPrinter<std::optional>
+//   or
+//                                 UniversalPrinter<absl::optional>
+//                                 specializations.
+//   GTEST_INTERNAL_HAS_STRING_VIEW - for enabling Matcher<std::string_view> or
+//                                    Matcher<absl::string_view>
+//                                    specializations.
+//   GTEST_INTERNAL_HAS_VARIANT - for enabling UniversalPrinter<std::variant> or
+//                                UniversalPrinter<absl::variant>
+//                                specializations.
 //
 // Synchronization:
 //   Mutex, MutexLock, ThreadLocal, GetThreadCount()
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+
+#include <cerrno>
 #include <cstdint>
 #include <limits>
 #include <type_traits>
 #endif
 
 #include <iostream>  // NOLINT
+#include <locale>
 #include <memory>
 #include <string>  // NOLINT
 #include <tuple>
@@ -676,8 +691,8 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
 // A macro to disallow copy constructor and operator=
 // This should be used in the private: declarations for a class.
 #define GTEST_DISALLOW_COPY_AND_ASSIGN_(type) \
-  type(type const &) = delete; \
-  GTEST_DISALLOW_ASSIGN_(type)
+  type(type const&) = delete;                 \
+  type& operator=(type const&) = delete
 
 // A macro to disallow move operator=
 // This should be used in the private: declarations for a class.
@@ -687,8 +702,8 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
 // A macro to disallow move constructor and operator=
 // This should be used in the private: declarations for a class.
 #define GTEST_DISALLOW_MOVE_AND_ASSIGN_(type) \
-  type(type &&) noexcept = delete; \
-  GTEST_DISALLOW_MOVE_ASSIGN_(type)
+  type(type&&) noexcept = delete;             \
+  type& operator=(type&&) noexcept = delete
 
 // Tell the compiler to warn about unused return values for functions declared
 // with this macro.  The macro should be used on function declarations
@@ -915,8 +930,6 @@ class GTEST_API_ RE {
   const char* full_pattern_;  // For FullMatch();
 
 # endif
-
-  GTEST_DISALLOW_ASSIGN_(RE);
 };
 
 #endif  // GTEST_USES_PCRE
@@ -1957,16 +1970,16 @@ namespace posix {
 typedef struct _stat StatStruct;
 
 # ifdef __BORLANDC__
-inline int IsATTY(int fd) { return isatty(fd); }
+inline int DoIsATTY(int fd) { return isatty(fd); }
 inline int StrCaseCmp(const char* s1, const char* s2) {
   return stricmp(s1, s2);
 }
 inline char* StrDup(const char* src) { return strdup(src); }
 # else  // !__BORLANDC__
 #  if GTEST_OS_WINDOWS_MOBILE
-inline int IsATTY(int /* fd */) { return 0; }
+inline int DoIsATTY(int /* fd */) { return 0; }
 #  else
-inline int IsATTY(int fd) { return _isatty(fd); }
+inline int DoIsATTY(int fd) { return _isatty(fd); }
 #  endif  // GTEST_OS_WINDOWS_MOBILE
 inline int StrCaseCmp(const char* s1, const char* s2) {
   return _stricmp(s1, s2);
@@ -1991,7 +2004,7 @@ inline bool IsDir(const StatStruct& st) {
 typedef struct stat StatStruct;
 
 inline int FileNo(FILE* file) { return fileno(file); }
-inline int IsATTY(int fd) { return isatty(fd); }
+inline int DoIsATTY(int fd) { return isatty(fd); }
 inline int Stat(const char* path, StatStruct* buf) {
   // stat function not implemented on ESP8266
   return 0;
@@ -2008,7 +2021,7 @@ inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
 typedef struct stat StatStruct;
 
 inline int FileNo(FILE* file) { return fileno(file); }
-inline int IsATTY(int fd) { return isatty(fd); }
+inline int DoIsATTY(int fd) { return isatty(fd); }
 inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
 inline int StrCaseCmp(const char* s1, const char* s2) {
   return strcasecmp(s1, s2);
@@ -2019,6 +2032,17 @@ inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
 
 #endif  // GTEST_OS_WINDOWS
 
+inline int IsATTY(int fd) {
+  // DoIsATTY might change errno (for example ENOTTY in case you redirect stdout
+  // to a file on Linux), which is unexpected, so save the previous value, and
+  // restore it after the call.
+  int savedErrno = errno;
+  int isAttyValue = DoIsATTY(fd);
+  errno = savedErrno;
+
+  return isAttyValue;
+}
+
 // Functions deprecated by MSVC 8.0.
 
 GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
@@ -2031,7 +2055,15 @@ GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
 inline int ChDir(const char* dir) { return chdir(dir); }
 #endif
 inline FILE* FOpen(const char* path, const char* mode) {
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
+  struct wchar_codecvt : public std::codecvt<wchar_t, char, std::mbstate_t> {};
+  std::wstring_convert<wchar_codecvt> converter;
+  std::wstring wide_path = converter.from_bytes(path);
+  std::wstring wide_mode = converter.from_bytes(mode);
+  return _wfopen(wide_path.c_str(), wide_mode.c_str());
+#else  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
   return fopen(path, mode);
+#endif  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
 }
 #if !GTEST_OS_WINDOWS_MOBILE
 inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
@@ -2188,7 +2220,8 @@ using TimeInMillis = int64_t;  // Represents time in milliseconds.
 // Parses 'str' for a 32-bit signed integer.  If successful, writes the result
 // to *value and returns true; otherwise leaves *value unchanged and returns
 // false.
-bool ParseInt32(const Message& src_text, const char* str, int32_t* value);
+GTEST_API_ bool ParseInt32(const Message& src_text, const char* str,
+                           int32_t* value);
 
 // Parses a bool/int32_t/string from the environment variable
 // corresponding to the given Google Test flag.
@@ -2220,4 +2253,119 @@ const char* StringFromGTestEnv(const char* flag, const char* default_val);
 
 #endif  // !defined(GTEST_INTERNAL_DEPRECATED)
 
+#if GTEST_HAS_ABSL
+// Always use absl::any for UniversalPrinter<> specializations if googletest
+// is built with absl support.
+#define GTEST_INTERNAL_HAS_ANY 1
+#include "absl/types/any.h"
+namespace testing {
+namespace internal {
+using Any = ::absl::any;
+}  // namespace internal
+}  // namespace testing
+#else
+#ifdef __has_include
+#if __has_include(<any>) && __cplusplus >= 201703L
+// Otherwise for C++17 and higher use std::any for UniversalPrinter<>
+// specializations.
+#define GTEST_INTERNAL_HAS_ANY 1
+#include <any>
+namespace testing {
+namespace internal {
+using Any = ::std::any;
+}  // namespace internal
+}  // namespace testing
+// The case where absl is configured NOT to alias std::any is not
+// supported.
+#endif  // __has_include(<any>) && __cplusplus >= 201703L
+#endif  // __has_include
+#endif  // GTEST_HAS_ABSL
+
+#if GTEST_HAS_ABSL
+// Always use absl::optional for UniversalPrinter<> specializations if
+// googletest is built with absl support.
+#define GTEST_INTERNAL_HAS_OPTIONAL 1
+#include "absl/types/optional.h"
+namespace testing {
+namespace internal {
+template <typename T>
+using Optional = ::absl::optional<T>;
+}  // namespace internal
+}  // namespace testing
+#else
+#ifdef __has_include
+#if __has_include(<optional>) && __cplusplus >= 201703L
+// Otherwise for C++17 and higher use std::optional for UniversalPrinter<>
+// specializations.
+#define GTEST_INTERNAL_HAS_OPTIONAL 1
+#include <optional>
+namespace testing {
+namespace internal {
+template <typename T>
+using Optional = ::std::optional<T>;
+}  // namespace internal
+}  // namespace testing
+// The case where absl is configured NOT to alias std::optional is not
+// supported.
+#endif  // __has_include(<optional>) && __cplusplus >= 201703L
+#endif  // __has_include
+#endif  // GTEST_HAS_ABSL
+
+#if GTEST_HAS_ABSL
+// Always use absl::string_view for Matcher<> specializations if googletest
+// is built with absl support.
+# define GTEST_INTERNAL_HAS_STRING_VIEW 1
+#include "absl/strings/string_view.h"
+namespace testing {
+namespace internal {
+using StringView = ::absl::string_view;
+}  // namespace internal
+}  // namespace testing
+#else
+# ifdef __has_include
+#   if __has_include(<string_view>) && __cplusplus >= 201703L
+// Otherwise for C++17 and higher use std::string_view for Matcher<>
+// specializations.
+#   define GTEST_INTERNAL_HAS_STRING_VIEW 1
+#include <string_view>
+namespace testing {
+namespace internal {
+using StringView = ::std::string_view;
+}  // namespace internal
+}  // namespace testing
+// The case where absl is configured NOT to alias std::string_view is not
+// supported.
+#  endif  // __has_include(<string_view>) && __cplusplus >= 201703L
+# endif  // __has_include
+#endif  // GTEST_HAS_ABSL
+
+#if GTEST_HAS_ABSL
+// Always use absl::variant for UniversalPrinter<> specializations if googletest
+// is built with absl support.
+#define GTEST_INTERNAL_HAS_VARIANT 1
+#include "absl/types/variant.h"
+namespace testing {
+namespace internal {
+template <typename... T>
+using Variant = ::absl::variant<T...>;
+}  // namespace internal
+}  // namespace testing
+#else
+#ifdef __has_include
+#if __has_include(<variant>) && __cplusplus >= 201703L
+// Otherwise for C++17 and higher use std::variant for UniversalPrinter<>
+// specializations.
+#define GTEST_INTERNAL_HAS_VARIANT 1
+#include <variant>
+namespace testing {
+namespace internal {
+template <typename... T>
+using Variant = ::std::variant<T...>;
+}  // namespace internal
+}  // namespace testing
+// The case where absl is configured NOT to alias std::variant is not supported.
+#endif  // __has_include(<variant>) && __cplusplus >= 201703L
+#endif  // __has_include
+#endif  // GTEST_HAS_ABSL
+
 #endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
index 0b2a91a5dce1e21c460fb950ce17e1f6112042e6..323a36e64fa12bceddefcbd65765bd83f73a64c9 100644 (file)
@@ -149,6 +149,9 @@ class GTEST_API_ String {
   // Formats an int value as "%02d".
   static std::string FormatIntWidth2(int value);  // "%02d" for width == 2
 
+  // Formats an int value to given width with leading zeros.
+  static std::string FormatIntWidthN(int value, int width);
+
   // Formats an int value as "%X".
   static std::string FormatHexInt(int value);
 
index 082fdad12c03af0c523e98371a57f994666cb627..c3326f2c5178f996e5ab06b53b5b0ed1229cc364 100644 (file)
@@ -64,34 +64,38 @@ inline std::string CanonicalizeForStdLibVersioning(std::string s) {
   return s;
 }
 
-// GetTypeName<T>() returns a human-readable name of type T.
-// NB: This function is also used in Google Mock, so don't move it inside of
-// the typed-test-only section below.
-template <typename T>
-std::string GetTypeName() {
-# if GTEST_HAS_RTTI
-
-  const char* const name = typeid(T).name();
-#  if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
+#if GTEST_HAS_RTTI
+// GetTypeName(const std::type_info&) returns a human-readable name of type T.
+inline std::string GetTypeName(const std::type_info& type) {
+  const char* const name = type.name();
+#if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
   int status = 0;
   // gcc's implementation of typeid(T).name() mangles the type name,
   // so we have to demangle it.
-#   if GTEST_HAS_CXXABI_H_
+#if GTEST_HAS_CXXABI_H_
   using abi::__cxa_demangle;
-#   endif  // GTEST_HAS_CXXABI_H_
+#endif  // GTEST_HAS_CXXABI_H_
   char* const readable_name = __cxa_demangle(name, nullptr, nullptr, &status);
   const std::string name_str(status == 0 ? readable_name : name);
   free(readable_name);
   return CanonicalizeForStdLibVersioning(name_str);
-#  else
+#else
   return name;
-#  endif  // GTEST_HAS_CXXABI_H_ || __HP_aCC
-
-# else
+#endif  // GTEST_HAS_CXXABI_H_ || __HP_aCC
+}
+#endif  // GTEST_HAS_RTTI
 
+// GetTypeName<T>() returns a human-readable name of type T if and only if
+// RTTI is enabled, otherwise it returns a dummy type name.
+// NB: This function is also used in Google Mock, so don't move it inside of
+// the typed-test-only section below.
+template <typename T>
+std::string GetTypeName() {
+#if GTEST_HAS_RTTI
+  return GetTypeName(typeid(T));
+#else
   return "<type>";
-
-# endif  // GTEST_HAS_RTTI
+#endif  // GTEST_HAS_RTTI
 }
 
 #if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
index 72539bf14a2314cf0044fee4d2fb8de272368cb1..34002f3d6f0b0ac6be608b2b473dd3b5458aa178 100644 (file)
@@ -66,11 +66,11 @@ class OnTheFlyPrimeTable : public PrimeTable {
   }
 
   int GetNextPrime(int p) const override {
-    for (int n = p + 1; n > 0; n++) {
+    if (p < 0) return -1;
+
+    for (int n = p + 1;; n++) {
       if (IsPrime(n)) return n;
     }
-
-    return -1;
   }
 };
 
index 5d1031bea257099d894b2a48a44a998e13500709..ecc47d1b6b526338c70beacd7fc95d52cf1fc42e 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "gtest/gtest-death-test.h"
 
+#include <functional>
 #include <utility>
 
 #include "gtest/internal/gtest-port.h"
@@ -890,18 +891,17 @@ int FuchsiaDeathTest::Wait() {
 
   // Register to wait for the child process to terminate.
   status_zx = child_process_.wait_async(
-      port, kProcessKey, ZX_PROCESS_TERMINATED, ZX_WAIT_ASYNC_ONCE);
+      port, kProcessKey, ZX_PROCESS_TERMINATED, 0);
   GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
 
   // Register to wait for the socket to be readable or closed.
   status_zx = stderr_socket_.wait_async(
-      port, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED,
-      ZX_WAIT_ASYNC_ONCE);
+      port, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED, 0);
   GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
 
   // Register to wait for an exception.
   status_zx = exception_channel_.wait_async(
-      port, kExceptionKey, ZX_CHANNEL_READABLE, ZX_WAIT_ASYNC_ONCE);
+      port, kExceptionKey, ZX_CHANNEL_READABLE, 0);
   GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
 
   bool process_terminated = false;
@@ -941,8 +941,7 @@ int FuchsiaDeathTest::Wait() {
         } else {
           GTEST_DEATH_TEST_CHECK_(status_zx == ZX_ERR_SHOULD_WAIT);
           status_zx = stderr_socket_.wait_async(
-              port, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED,
-              ZX_WAIT_ASYNC_ONCE);
+              port, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED, 0);
           GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
         }
       } else {
@@ -1225,21 +1224,9 @@ struct ExecDeathTestArgs {
   int close_fd;       // File descriptor to close; the read end of a pipe
 };
 
-#  if GTEST_OS_MAC
-inline char** GetEnviron() {
-  // When Google Test is built as a framework on MacOS X, the environ variable
-  // is unavailable. Apple's documentation (man environ) recommends using
-  // _NSGetEnviron() instead.
-  return *_NSGetEnviron();
-}
-#  else
-// Some POSIX platforms expect you to declare environ. extern "C" makes
-// it reside in the global namespace.
+#  if GTEST_OS_QNX
 extern "C" char** environ;
-inline char** GetEnviron() { return environ; }
-#  endif  // GTEST_OS_MAC
-
-#  if !GTEST_OS_QNX
+#  else  // GTEST_OS_QNX
 // The main function for a threadsafe-style death test child process.
 // This function is called in a clone()-ed process and thus must avoid
 // any potentially unsafe operations like malloc or libc functions.
@@ -1259,18 +1246,18 @@ static int ExecDeathTestChildMain(void* child_arg) {
     return EXIT_FAILURE;
   }
 
-  // We can safely call execve() as it's a direct system call.  We
+  // We can safely call execv() as it's almost a direct system call. We
   // cannot use execvp() as it's a libc function and thus potentially
-  // unsafe.  Since execve() doesn't search the PATH, the user must
+  // unsafe.  Since execv() doesn't search the PATH, the user must
   // invoke the test program via a valid path that contains at least
   // one path separator.
-  execve(args->argv[0], args->argv, GetEnviron());
-  DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " +
+  execv(args->argv[0], args->argv);
+  DeathTestAbort(std::string("execv(") + args->argv[0] + ", ...) in " +
                  original_dir + " failed: " +
                  GetLastErrnoDescription());
   return EXIT_FAILURE;
 }
-#  endif  // !GTEST_OS_QNX
+#  endif  // GTEST_OS_QNX
 
 #  if GTEST_HAS_CLONE
 // Two utility routines that together determine the direction the stack
@@ -1284,19 +1271,24 @@ static int ExecDeathTestChildMain(void* child_arg) {
 // correct answer.
 static void StackLowerThanAddress(const void* ptr,
                                   bool* result) GTEST_NO_INLINE_;
+// Make sure sanitizers do not tamper with the stack here.
+// Ideally, we want to use `__builtin_frame_address` instead of a local variable
+// address with sanitizer disabled, but it does not work when the
+// compiler optimizes the stack frame out, which happens on PowerPC targets.
 // HWAddressSanitizer add a random tag to the MSB of the local variable address,
 // making comparison result unpredictable.
+GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
 GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
 static void StackLowerThanAddress(const void* ptr, bool* result) {
-  int dummy;
-  *result = (&dummy < ptr);
+  int dummy = 0;
+  *result = std::less<const void*>()(&dummy, ptr);
 }
 
 // Make sure AddressSanitizer does not tamper with the stack here.
 GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
 GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
 static bool StackGrowsDown() {
-  int dummy;
+  int dummy = 0;
   bool result;
   StackLowerThanAddress(&dummy, &result);
   return result;
@@ -1339,8 +1331,7 @@ static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
                                         fd_flags | FD_CLOEXEC));
   struct inheritance inherit = {0};
   // spawn is a system call.
-  child_pid =
-      spawn(args.argv[0], 0, nullptr, &inherit, args.argv, GetEnviron());
+  child_pid = spawn(args.argv[0], 0, nullptr, &inherit, args.argv, environ);
   // Restores the current working directory.
   GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
   GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
index 9aad12fbd11177e8ba3d57ff28d15ab91622c141..af297684031cd257b321fa984bb570af4c9a23c7 100644 (file)
@@ -349,33 +349,19 @@ FilePath FilePath::RemoveTrailingPathSeparator() const {
 // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
 // redundancies that might be in a pathname involving "." or "..".
 void FilePath::Normalize() {
-  if (pathname_.c_str() == nullptr) {
-    pathname_ = "";
-    return;
-  }
-  const char* src = pathname_.c_str();
-  char* const dest = new char[pathname_.length() + 1];
-  char* dest_ptr = dest;
-  memset(dest_ptr, 0, pathname_.length() + 1);
-
-  while (*src != '\0') {
-    *dest_ptr = *src;
-    if (!IsPathSeparator(*src)) {
-      src++;
+  auto out = pathname_.begin();
+
+  for (const char character : pathname_) {
+    if (!IsPathSeparator(character)) {
+      *(out++) = character;
+    } else if (out == pathname_.begin() || *std::prev(out) != kPathSeparator) {
+      *(out++) = kPathSeparator;
     } else {
-#if GTEST_HAS_ALT_PATH_SEP_
-      if (*dest_ptr == kAlternatePathSeparator) {
-        *dest_ptr = kPathSeparator;
-      }
-#endif
-      while (IsPathSeparator(*src))
-        src++;
+      continue;
     }
-    dest_ptr++;
   }
-  *dest_ptr = '\0';
-  pathname_ = dest;
-  delete[] dest;
+
+  pathname_.erase(out, pathname_.end());
 }
 
 }  // namespace internal
index e42ff475399dda905c14f9fa6a9e6dc3c7ab0b27..38306c8f5d60bb4fba97b6569691b4155618403e 100644 (file)
@@ -84,9 +84,11 @@ const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
 const char kBreakOnFailureFlag[] = "break_on_failure";
 const char kCatchExceptionsFlag[] = "catch_exceptions";
 const char kColorFlag[] = "color";
+const char kFailFast[] = "fail_fast";
 const char kFilterFlag[] = "filter";
 const char kListTestsFlag[] = "list_tests";
 const char kOutputFlag[] = "output";
+const char kBriefFlag[] = "brief";
 const char kPrintTimeFlag[] = "print_time";
 const char kPrintUTF8Flag[] = "print_utf8";
 const char kRandomSeedFlag[] = "random_seed";
@@ -164,10 +166,12 @@ class GTestFlagSaver {
     color_ = GTEST_FLAG(color);
     death_test_style_ = GTEST_FLAG(death_test_style);
     death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
+    fail_fast_ = GTEST_FLAG(fail_fast);
     filter_ = GTEST_FLAG(filter);
     internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
     list_tests_ = GTEST_FLAG(list_tests);
     output_ = GTEST_FLAG(output);
+    brief_ = GTEST_FLAG(brief);
     print_time_ = GTEST_FLAG(print_time);
     print_utf8_ = GTEST_FLAG(print_utf8);
     random_seed_ = GTEST_FLAG(random_seed);
@@ -187,9 +191,11 @@ class GTestFlagSaver {
     GTEST_FLAG(death_test_style) = death_test_style_;
     GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
     GTEST_FLAG(filter) = filter_;
+    GTEST_FLAG(fail_fast) = fail_fast_;
     GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
     GTEST_FLAG(list_tests) = list_tests_;
     GTEST_FLAG(output) = output_;
+    GTEST_FLAG(brief) = brief_;
     GTEST_FLAG(print_time) = print_time_;
     GTEST_FLAG(print_utf8) = print_utf8_;
     GTEST_FLAG(random_seed) = random_seed_;
@@ -208,10 +214,12 @@ class GTestFlagSaver {
   std::string color_;
   std::string death_test_style_;
   bool death_test_use_fork_;
+  bool fail_fast_;
   std::string filter_;
   std::string internal_run_death_test_;
   bool list_tests_;
   std::string output_;
+  bool brief_;
   bool print_time_;
   bool print_utf8_;
   int32_t random_seed_;
@@ -647,10 +655,10 @@ class GTEST_API_ UnitTestImpl {
   // Arguments:
   //
   //   test_suite_name: name of the test suite
-  //   type_param:     the name of the test's type parameter, or NULL if
-  //                   this is not a typed or a type-parameterized test.
-  //   set_up_tc:      pointer to the function that sets up the test suite
-  //   tear_down_tc:   pointer to the function that tears down the test suite
+  //   type_param:      the name of the test's type parameter, or NULL if
+  //                    this is not a typed or a type-parameterized test.
+  //   set_up_tc:       pointer to the function that sets up the test suite
+  //   tear_down_tc:    pointer to the function that tears down the test suite
   TestSuite* GetTestSuite(const char* test_suite_name, const char* type_param,
                           internal::SetUpTestSuiteFunc set_up_tc,
                           internal::TearDownTestSuiteFunc tear_down_tc);
@@ -674,6 +682,7 @@ class GTEST_API_ UnitTestImpl {
   void AddTestInfo(internal::SetUpTestSuiteFunc set_up_tc,
                    internal::TearDownTestSuiteFunc tear_down_tc,
                    TestInfo* test_info) {
+#if GTEST_HAS_DEATH_TEST
     // In order to support thread-safe death tests, we need to
     // remember the original working directory when the test program
     // was first invoked.  We cannot do this in RUN_ALL_TESTS(), as
@@ -686,6 +695,7 @@ class GTEST_API_ UnitTestImpl {
       GTEST_CHECK_(!original_working_dir_.IsEmpty())
           << "Failed to get the current working directory.";
     }
+#endif  // GTEST_HAS_DEATH_TEST
 
     GetTestSuite(test_info->test_suite_name(), test_info->type_param(),
                  set_up_tc, tear_down_tc)
index 7d2fb6851ec4173af6dddc7ae0720e43e43ace52..65104ebab1ba9af06327fc94c0a038b6806d4206 100644 (file)
@@ -58,40 +58,40 @@ Matcher<std::string>::Matcher(const std::string& s) { *this = Eq(s); }
 // s.
 Matcher<std::string>::Matcher(const char* s) { *this = Eq(std::string(s)); }
 
-#if GTEST_HAS_ABSL
-// Constructs a matcher that matches a const absl::string_view& whose value is
+#if GTEST_INTERNAL_HAS_STRING_VIEW
+// Constructs a matcher that matches a const StringView& whose value is
 // equal to s.
-Matcher<const absl::string_view&>::Matcher(const std::string& s) {
+Matcher<const internal::StringView&>::Matcher(const std::string& s) {
   *this = Eq(s);
 }
 
-// Constructs a matcher that matches a const absl::string_view& whose value is
+// Constructs a matcher that matches a const StringView& whose value is
 // equal to s.
-Matcher<const absl::string_view&>::Matcher(const char* s) {
+Matcher<const internal::StringView&>::Matcher(const char* s) {
   *this = Eq(std::string(s));
 }
 
-// Constructs a matcher that matches a const absl::string_view& whose value is
+// Constructs a matcher that matches a const StringView& whose value is
 // equal to s.
-Matcher<const absl::string_view&>::Matcher(absl::string_view s) {
+Matcher<const internal::StringView&>::Matcher(internal::StringView s) {
   *this = Eq(std::string(s));
 }
 
-// Constructs a matcher that matches a absl::string_view whose value is equal to
+// Constructs a matcher that matches a StringView whose value is equal to
 // s.
-Matcher<absl::string_view>::Matcher(const std::string& s) { *this = Eq(s); }
+Matcher<internal::StringView>::Matcher(const std::string& s) { *this = Eq(s); }
 
-// Constructs a matcher that matches a absl::string_view whose value is equal to
+// Constructs a matcher that matches a StringView whose value is equal to
 // s.
-Matcher<absl::string_view>::Matcher(const char* s) {
+Matcher<internal::StringView>::Matcher(const char* s) {
   *this = Eq(std::string(s));
 }
 
-// Constructs a matcher that matches a absl::string_view whose value is equal to
+// Constructs a matcher that matches a StringView whose value is equal to
 // s.
-Matcher<absl::string_view>::Matcher(absl::string_view s) {
+Matcher<internal::StringView>::Matcher(internal::StringView s) {
   *this = Eq(std::string(s));
 }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
 }  // namespace testing
index a05c50a39b695317fdc6ff74a1a699e4f1f6b6fb..3f39f71c07459b5c011057771134e5c2b98ce9ff 100644 (file)
@@ -198,7 +198,8 @@ size_t GetThreadCount() {
   if (sysctl(mib, miblen, NULL, &size, NULL, 0)) {
     return 0;
   }
-  mib[5] = size / mib[4];
+
+  mib[5] = static_cast<int>(size / static_cast<size_t>(mib[4]));
 
   // populate array of structs
   struct kinfo_proc info[mib[5]];
@@ -207,8 +208,8 @@ size_t GetThreadCount() {
   }
 
   // exclude empty members
-  int nthreads = 0;
-  for (int i = 0; i < size / mib[4]; i++) {
+  size_t nthreads = 0;
+  for (size_t i = 0; i < size / static_cast<size_t>(mib[4]); i++) {
     if (info[i].p_tid != -1)
       nthreads++;
   }
index 3337be312ea400ff78c78766ec4a5ba229b0206d..20ce1b8692fe45c716dbc4bd88b1d6728ced263c 100644 (file)
@@ -44,6 +44,7 @@
 #include "gtest/gtest-printers.h"
 #include <stdio.h>
 #include <cctype>
+#include <cstdint>
 #include <cwchar>
 #include <ostream>  // NOLINT
 #include <string>
@@ -104,7 +105,7 @@ void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
 
 }  // namespace
 
-namespace internal2 {
+namespace internal {
 
 // Delegates to PrintBytesInObjectToImpl() to print the bytes in the
 // given object.  The delegation simplifies the implementation, which
@@ -116,10 +117,6 @@ void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
   PrintBytesInObjectToImpl(obj_bytes, count, os);
 }
 
-}  // namespace internal2
-
-namespace internal {
-
 // Depending on the value of a char (or wchar_t), we print it in one
 // of three formats:
 //   - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
@@ -255,6 +252,11 @@ void PrintTo(wchar_t wc, ostream* os) {
   PrintCharAndCodeTo<wchar_t>(wc, os);
 }
 
+void PrintTo(char32_t c, ::std::ostream* os) {
+  *os << std::hex << "U+" << std::uppercase << std::setfill('0') << std::setw(4)
+      << static_cast<uint32_t>(c);
+}
+
 // Prints the given array of characters to the ostream.  CharType must be either
 // char or wchar_t.
 // The array starts at begin, the length is len, it may include '\0' characters
index 1b1cfb0dc15aeeb243ec004d3c84e7812ef09711..722c7b14fb265a337ada39e88e934199f7200c43 100644 (file)
@@ -78,17 +78,7 @@ const char* TypedTestSuitePState::VerifyRegisteredTestNames(
       continue;
     }
 
-    bool found = false;
-    for (RegisteredTestIter it = registered_tests_.begin();
-         it != registered_tests_.end();
-         ++it) {
-      if (name == it->first) {
-        found = true;
-        break;
-      }
-    }
-
-    if (found) {
+    if (registered_tests_.count(name) != 0) {
       tests.insert(name);
     } else {
       errors << "No test named " << name
index 095778e6e93fcd0697594893e414bc2315c7c076..910c1ad3a14204e88573087ad0637343f58b3135 100644 (file)
@@ -35,7 +35,6 @@
 #include "gtest/gtest-spi.h"
 
 #include <ctype.h>
-#include <math.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -44,6 +43,8 @@
 #include <wctype.h>
 
 #include <algorithm>
+#include <chrono>  // NOLINT
+#include <cmath>
 #include <cstdint>
 #include <iomanip>
 #include <limits>
@@ -55,8 +56,6 @@
 
 #if GTEST_OS_LINUX
 
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-
 # include <fcntl.h>  // NOLINT
 # include <limits.h>  // NOLINT
 # include <sched.h>  // NOLINT
@@ -68,7 +67,6 @@
 # include <string>
 
 #elif GTEST_OS_ZOS
-# define GTEST_HAS_GETTIMEOFDAY_ 1
 # include <sys/time.h>  // NOLINT
 
 // On z/OS we additionally need strings.h for strcasecmp.
@@ -86,7 +84,6 @@
 
 #ifdef _MSC_VER
 # include <crtdbg.h>  // NOLINT
-# include <debugapi.h>  // NOLINT
 #endif
 
 # include <io.h>  // NOLINT
 # include <sys/stat.h>  // NOLINT
 
 # if GTEST_OS_WINDOWS_MINGW
-// MinGW has gettimeofday() but not _ftime64().
-#  define GTEST_HAS_GETTIMEOFDAY_ 1
 #  include <sys/time.h>  // NOLINT
 # endif  // GTEST_OS_WINDOWS_MINGW
 
 #else
 
-// Assume other platforms have gettimeofday().
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-
 // cpplint thinks that the header is already included, so we want to
 // silence it.
 # include <sys/time.h>  // NOLINT
@@ -213,6 +205,21 @@ static const char* GetDefaultFilter() {
   return kUniversalFilter;
 }
 
+// Bazel passes in the argument to '--test_runner_fail_fast' via the
+// TESTBRIDGE_TEST_RUNNER_FAIL_FAST environment variable.
+static bool GetDefaultFailFast() {
+  const char* const testbridge_test_runner_fail_fast =
+      internal::posix::GetEnv("TESTBRIDGE_TEST_RUNNER_FAIL_FAST");
+  if (testbridge_test_runner_fail_fast != nullptr) {
+    return strcmp(testbridge_test_runner_fail_fast, "1") == 0;
+  }
+  return false;
+}
+
+GTEST_DEFINE_bool_(
+    fail_fast, internal::BoolFromGTestEnv("fail_fast", GetDefaultFailFast()),
+    "True if and only if a test failure should stop further test execution.");
+
 GTEST_DEFINE_bool_(
     also_run_disabled_tests,
     internal::BoolFromGTestEnv("also_run_disabled_tests", false),
@@ -273,6 +280,10 @@ GTEST_DEFINE_string_(
     "executable's name and, if necessary, made unique by adding "
     "digits.");
 
+GTEST_DEFINE_bool_(
+    brief, internal::BoolFromGTestEnv("brief", false),
+    "True if only test failures should be displayed in text output.");
+
 GTEST_DEFINE_bool_(print_time, internal::BoolFromGTestEnv("print_time", true),
                    "True if and only if " GTEST_NAME_
                    " should display elapsed time in text output.");
@@ -414,8 +425,8 @@ namespace {
 // inserted to report ether an error or a log message.
 //
 // This configuration bit will likely be removed at some point.
-constexpr bool kErrorOnUninstantiatedParameterizedTest = false;
-constexpr bool kErrorOnUninstantiatedTypeParameterizedTest = false;
+constexpr bool kErrorOnUninstantiatedParameterizedTest = true;
+constexpr bool kErrorOnUninstantiatedTypeParameterizedTest = true;
 
 // A test that fails at a given file/line location with a given message.
 class FailureTest : public Test {
@@ -479,7 +490,7 @@ void InsertSyntheticTestCase(const std::string& name, CodeLocation location,
       "removed but the rest got left behind.";
 
   std::string message =
-      "Paramaterized test suite " + name +
+      "Parameterized test suite " + name +
       (has_test_p ? kMissingInstantiation : kMissingTestCase) +
       "\n\n"
       "To suppress this error for this test suite, insert the following line "
@@ -487,7 +498,7 @@ void InsertSyntheticTestCase(const std::string& name, CodeLocation location,
       "\n\n"
       "GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(" + name + ");";
 
-  std::string full_name = "UninstantiatedParamaterizedTestSuite<" + name + ">";
+  std::string full_name = "UninstantiatedParameterizedTestSuite<" + name + ">";
   RegisterTest(  //
       "GoogleTestVerification", full_name.c_str(),
       nullptr,  // No type parameter.
@@ -534,7 +545,7 @@ void TypeParameterizedTestSuiteRegistry::CheckForInstantiations() {
     if (ignored.find(testcase.first) != ignored.end()) continue;
 
     std::string message =
-        "Type paramaterized test suite " + testcase.first +
+        "Type parameterized test suite " + testcase.first +
         " is defined via REGISTER_TYPED_TEST_SUITE_P, but never instantiated "
         "via INSTANTIATE_TYPED_TEST_SUITE_P. None of the test cases will run."
         "\n\n"
@@ -544,13 +555,13 @@ void TypeParameterizedTestSuiteRegistry::CheckForInstantiations() {
         "utilities.)"
         "\n\n"
         "To suppress this error for this test suite, insert the following line "
-        "(in a non-header) in the namespace it is definedin in:"
+        "(in a non-header) in the namespace it is defined in:"
         "\n\n"
         "GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(" +
         testcase.first + ");";
 
     std::string full_name =
-        "UninstantiatedTypeParamaterizedTestSuite<" + testcase.first + ">";
+        "UninstantiatedTypeParameterizedTestSuite<" + testcase.first + ">";
     RegisterTest(  //
         "GoogleTestVerification", full_name.c_str(),
         nullptr,  // No type parameter.
@@ -987,42 +998,10 @@ std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
 
 // Returns the current time in milliseconds.
 TimeInMillis GetTimeInMillis() {
-#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__)
-  // Difference between 1970-01-01 and 1601-01-01 in milliseconds.
-  // http://analogous.blogspot.com/2005/04/epoch.html
-  const TimeInMillis kJavaEpochToWinFileTimeDelta =
-    static_cast<TimeInMillis>(116444736UL) * 100000UL;
-  const DWORD kTenthMicrosInMilliSecond = 10000;
-
-  SYSTEMTIME now_systime;
-  FILETIME now_filetime;
-  ULARGE_INTEGER now_int64;
-  GetSystemTime(&now_systime);
-  if (SystemTimeToFileTime(&now_systime, &now_filetime)) {
-    now_int64.LowPart = now_filetime.dwLowDateTime;
-    now_int64.HighPart = now_filetime.dwHighDateTime;
-    now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) -
-      kJavaEpochToWinFileTimeDelta;
-    return now_int64.QuadPart;
-  }
-  return 0;
-#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_
-  __timeb64 now;
-
-  // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
-  // (deprecated function) there.
-  GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
-  _ftime64(&now);
-  GTEST_DISABLE_MSC_DEPRECATED_POP_()
-
-  return static_cast<TimeInMillis>(now.time) * 1000 + now.millitm;
-#elif GTEST_HAS_GETTIMEOFDAY_
-  struct timeval now;
-  gettimeofday(&now, nullptr);
-  return static_cast<TimeInMillis>(now.tv_sec) * 1000 + now.tv_usec / 1000;
-#else
-# error "Don't know how to get the current time on your system."
-#endif
+  return std::chrono::duration_cast<std::chrono::milliseconds>(
+             std::chrono::system_clock::now() -
+             std::chrono::system_clock::from_time_t(0))
+      .count();
 }
 
 // Utilities
@@ -1537,6 +1516,31 @@ AssertionResult DoubleNearPredFormat(const char* expr1,
   const double diff = fabs(val1 - val2);
   if (diff <= abs_error) return AssertionSuccess();
 
+  // Find the value which is closest to zero.
+  const double min_abs = std::min(fabs(val1), fabs(val2));
+  // Find the distance to the next double from that value.
+  const double epsilon =
+      nextafter(min_abs, std::numeric_limits<double>::infinity()) - min_abs;
+  // Detect the case where abs_error is so small that EXPECT_NEAR is
+  // effectively the same as EXPECT_EQUAL, and give an informative error
+  // message so that the situation can be more easily understood without
+  // requiring exotic floating-point knowledge.
+  // Don't do an epsilon check if abs_error is zero because that implies
+  // that an equality check was actually intended.
+  if (!(std::isnan)(val1) && !(std::isnan)(val2) && abs_error > 0 &&
+      abs_error < epsilon) {
+    return AssertionFailure()
+           << "The difference between " << expr1 << " and " << expr2 << " is "
+           << diff << ", where\n"
+           << expr1 << " evaluates to " << val1 << ",\n"
+           << expr2 << " evaluates to " << val2 << ".\nThe abs_error parameter "
+           << abs_error_expr << " evaluates to " << abs_error
+           << " which is smaller than the minimum distance between doubles for "
+              "numbers of this magnitude which is "
+           << epsilon
+           << ", thus making this EXPECT_NEAR check equivalent to "
+              "EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead.";
+  }
   return AssertionFailure()
       << "The difference between " << expr1 << " and " << expr2
       << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
@@ -2123,8 +2127,13 @@ bool String::EndsWithCaseInsensitive(
 
 // Formats an int value as "%02d".
 std::string String::FormatIntWidth2(int value) {
+  return FormatIntWidthN(value, 2);
+}
+
+// Formats an int value to given width with leading zeros.
+std::string String::FormatIntWidthN(int value, int width) {
   std::stringstream ss;
-  ss << std::setfill('0') << std::setw(2) << value;
+  ss << std::setfill('0') << std::setw(width) << value;
   return ss.str();
 }
 
@@ -2176,7 +2185,9 @@ std::string AppendUserMessage(const std::string& gtest_msg,
   if (user_msg_string.empty()) {
     return gtest_msg;
   }
-
+  if (gtest_msg.empty()) {
+    return user_msg_string;
+  }
   return gtest_msg + "\n" + user_msg_string;
 }
 
@@ -2255,7 +2266,8 @@ static const char* const kReservedTestSuitesAttributes[] = {
 // The list of reserved attributes used in the <testsuite> element of XML
 // output.
 static const char* const kReservedTestSuiteAttributes[] = {
-    "disabled", "errors", "failures", "name", "tests", "time", "timestamp"};
+    "disabled", "errors", "failures",  "name",
+    "tests",    "time",   "timestamp", "skipped"};
 
 // The list of reserved attributes used in the <testcase> element of XML output.
 static const char* const kReservedTestCaseAttributes[] = {
@@ -2268,7 +2280,7 @@ static const char* const kReservedOutputTestCaseAttributes[] = {
     "classname",   "name", "status", "time",   "type_param",
     "value_param", "file", "line",   "result", "timestamp"};
 
-template <int kSize>
+template <size_t kSize>
 std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
   return std::vector<std::string>(array, array + kSize);
 }
@@ -2712,6 +2724,7 @@ TestInfo::TestInfo(const std::string& a_test_suite_name,
       should_run_(false),
       is_disabled_(false),
       matches_filter_(false),
+      is_in_another_shard_(false),
       factory_(factory),
       result_() {}
 
@@ -2725,7 +2738,7 @@ namespace internal {
 //
 // Arguments:
 //
-//   test_suite_name:   name of the test suite
+//   test_suite_name:  name of the test suite
 //   name:             name of the test
 //   type_param:       the name of the test's type parameter, or NULL if
 //                     this is not a typed or a type-parameterized test.
@@ -2863,6 +2876,28 @@ void TestInfo::Run() {
   impl->set_current_test_info(nullptr);
 }
 
+// Skip and records a skipped test result for this object.
+void TestInfo::Skip() {
+  if (!should_run_) return;
+
+  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+  impl->set_current_test_info(this);
+
+  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
+
+  // Notifies the unit test event listeners that a test is about to start.
+  repeater->OnTestStart(*this);
+
+  const TestPartResult test_part_result =
+      TestPartResult(TestPartResult::kSkip, this->file(), this->line(), "");
+  impl->GetTestPartResultReporterForCurrentThread()->ReportTestPartResult(
+      test_part_result);
+
+  // Notifies the unit test event listener that a test has just finished.
+  repeater->OnTestEnd(*this);
+  impl->set_current_test_info(nullptr);
+}
+
 // class TestSuite
 
 // Gets the number of successful tests in this test suite.
@@ -2909,7 +2944,7 @@ int TestSuite::total_test_count() const {
 //
 // Arguments:
 //
-//   name:         name of the test suite
+//   a_name:       name of the test suite
 //   a_type_param: the name of the test suite's type parameter, or NULL if
 //                 this is not a typed or a type-parameterized test suite.
 //   set_up_tc:    pointer to the function that sets up the test suite
@@ -2964,9 +2999,9 @@ void TestSuite::Run() {
   // Call both legacy and the new API
   repeater->OnTestSuiteStart(*this);
 //  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
   repeater->OnTestCaseStart(*this);
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI
+#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
 
   impl->os_stack_trace_getter()->UponLeavingGTest();
   internal::HandleExceptionsInMethodIfSupported(
@@ -2975,6 +3010,12 @@ void TestSuite::Run() {
   start_timestamp_ = internal::GetTimeInMillis();
   for (int i = 0; i < total_test_count(); i++) {
     GetMutableTestInfo(i)->Run();
+    if (GTEST_FLAG(fail_fast) && GetMutableTestInfo(i)->result()->Failed()) {
+      for (int j = i + 1; j < total_test_count(); j++) {
+        GetMutableTestInfo(j)->Skip();
+      }
+      break;
+    }
   }
   elapsed_time_ = internal::GetTimeInMillis() - start_timestamp_;
 
@@ -2985,9 +3026,39 @@ void TestSuite::Run() {
   // Call both legacy and the new API
   repeater->OnTestSuiteEnd(*this);
 //  Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
   repeater->OnTestCaseEnd(*this);
-#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI
+#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
+
+  impl->set_current_test_suite(nullptr);
+}
+
+// Skips all tests under this TestSuite.
+void TestSuite::Skip() {
+  if (!should_run_) return;
+
+  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+  impl->set_current_test_suite(this);
+
+  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
+
+  // Call both legacy and the new API
+  repeater->OnTestSuiteStart(*this);
+//  Legacy API is deprecated but still available
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
+  repeater->OnTestCaseStart(*this);
+#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
+
+  for (int i = 0; i < total_test_count(); i++) {
+    GetMutableTestInfo(i)->Skip();
+  }
+
+  // Call both legacy and the new API
+  repeater->OnTestSuiteEnd(*this);
+  // Legacy API is deprecated but still available
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
+  repeater->OnTestCaseEnd(*this);
+#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
 
   impl->set_current_test_suite(nullptr);
 }
@@ -3039,7 +3110,7 @@ static std::string FormatTestSuiteCount(int test_suite_count) {
 static const char * TestPartResultTypeToString(TestPartResult::Type type) {
   switch (type) {
     case TestPartResult::kSkip:
-      return "Skipped";
+      return "Skipped\n";
     case TestPartResult::kSuccess:
       return "Success";
 
@@ -3056,6 +3127,9 @@ static const char * TestPartResultTypeToString(TestPartResult::Type type) {
 }
 
 namespace internal {
+namespace {
+enum class GTestColor { kDefault, kRed, kGreen, kYellow };
+}  // namespace
 
 // Prints a TestPartResult to an std::string.
 static std::string PrintTestPartResultToString(
@@ -3093,9 +3167,12 @@ static void PrintTestPartResult(const TestPartResult& test_part_result) {
 // Returns the character attribute for the given color.
 static WORD GetColorAttribute(GTestColor color) {
   switch (color) {
-    case COLOR_RED:    return FOREGROUND_RED;
-    case COLOR_GREEN:  return FOREGROUND_GREEN;
-    case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN;
+    case GTestColor::kRed:
+      return FOREGROUND_RED;
+    case GTestColor::kGreen:
+      return FOREGROUND_GREEN;
+    case GTestColor::kYellow:
+      return FOREGROUND_RED | FOREGROUND_GREEN;
     default:           return 0;
   }
 }
@@ -3133,13 +3210,16 @@ static WORD GetNewColor(GTestColor color, WORD old_color_attrs) {
 
 #else
 
-// Returns the ANSI color code for the given color.  COLOR_DEFAULT is
+// Returns the ANSI color code for the given color. GTestColor::kDefault is
 // an invalid input.
 static const char* GetAnsiColorCode(GTestColor color) {
   switch (color) {
-    case COLOR_RED:     return "1";
-    case COLOR_GREEN:   return "2";
-    case COLOR_YELLOW:  return "3";
+    case GTestColor::kRed:
+      return "1";
+    case GTestColor::kGreen:
+      return "2";
+    case GTestColor::kYellow:
+      return "3";
     default:
       return nullptr;
   }
@@ -3188,7 +3268,8 @@ bool ShouldUseColor(bool stdout_is_tty) {
 // cannot simply emit special characters and have the terminal change colors.
 // This routine must actually emit the characters rather than return a string
 // that would be colored when printed, as can be done on Linux.
-void ColoredPrintf(GTestColor color, const char* fmt, ...) {
+
+static void ColoredPrintf(GTestColor color, const char* fmt, ...) {
   va_list args;
   va_start(args, fmt);
 
@@ -3198,7 +3279,7 @@ void ColoredPrintf(GTestColor color, const char* fmt, ...) {
 #else
   static const bool in_color_mode =
       ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
-  const bool use_color = in_color_mode && (color != COLOR_DEFAULT);
+  const bool use_color = in_color_mode && (color != GTestColor::kDefault);
 #endif  // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS
 
   if (!use_color) {
@@ -3310,25 +3391,24 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart(
   // Prints the filter if it's not *.  This reminds the user that some
   // tests may be skipped.
   if (!String::CStringEquals(filter, kUniversalFilter)) {
-    ColoredPrintf(COLOR_YELLOW,
-                  "Note: %s filter = %s\n", GTEST_NAME_, filter);
+    ColoredPrintf(GTestColor::kYellow, "Note: %s filter = %s\n", GTEST_NAME_,
+                  filter);
   }
 
   if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
     const int32_t shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
-    ColoredPrintf(COLOR_YELLOW,
-                  "Note: This is test shard %d of %s.\n",
+    ColoredPrintf(GTestColor::kYellow, "Note: This is test shard %d of %s.\n",
                   static_cast<int>(shard_index) + 1,
                   internal::posix::GetEnv(kTestTotalShards));
   }
 
   if (GTEST_FLAG(shuffle)) {
-    ColoredPrintf(COLOR_YELLOW,
+    ColoredPrintf(GTestColor::kYellow,
                   "Note: Randomizing tests' orders with a seed of %d .\n",
                   unit_test.random_seed());
   }
 
-  ColoredPrintf(COLOR_GREEN,  "[==========] ");
+  ColoredPrintf(GTestColor::kGreen, "[==========] ");
   printf("Running %s from %s.\n",
          FormatTestCount(unit_test.test_to_run_count()).c_str(),
          FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
@@ -3337,7 +3417,7 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart(
 
 void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
     const UnitTest& /*unit_test*/) {
-  ColoredPrintf(COLOR_GREEN,  "[----------] ");
+  ColoredPrintf(GTestColor::kGreen, "[----------] ");
   printf("Global test environment set-up.\n");
   fflush(stdout);
 }
@@ -3346,7 +3426,7 @@ void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
 void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
   const std::string counts =
       FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
-  ColoredPrintf(COLOR_GREEN, "[----------] ");
+  ColoredPrintf(GTestColor::kGreen, "[----------] ");
   printf("%s from %s", counts.c_str(), test_case.name());
   if (test_case.type_param() == nullptr) {
     printf("\n");
@@ -3360,7 +3440,7 @@ void PrettyUnitTestResultPrinter::OnTestSuiteStart(
     const TestSuite& test_suite) {
   const std::string counts =
       FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
-  ColoredPrintf(COLOR_GREEN, "[----------] ");
+  ColoredPrintf(GTestColor::kGreen, "[----------] ");
   printf("%s from %s", counts.c_str(), test_suite.name());
   if (test_suite.type_param() == nullptr) {
     printf("\n");
@@ -3372,7 +3452,7 @@ void PrettyUnitTestResultPrinter::OnTestSuiteStart(
 #endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
 
 void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
-  ColoredPrintf(COLOR_GREEN,  "[ RUN      ] ");
+  ColoredPrintf(GTestColor::kGreen, "[ RUN      ] ");
   PrintTestName(test_info.test_suite_name(), test_info.name());
   printf("\n");
   fflush(stdout);
@@ -3395,11 +3475,11 @@ void PrettyUnitTestResultPrinter::OnTestPartResult(
 
 void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
   if (test_info.result()->Passed()) {
-    ColoredPrintf(COLOR_GREEN, "[       OK ] ");
+    ColoredPrintf(GTestColor::kGreen, "[       OK ] ");
   } else if (test_info.result()->Skipped()) {
-    ColoredPrintf(COLOR_GREEN, "[  SKIPPED ] ");
+    ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
   } else {
-    ColoredPrintf(COLOR_RED, "[  FAILED  ] ");
+    ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
   }
   PrintTestName(test_info.test_suite_name(), test_info.name());
   if (test_info.result()->Failed())
@@ -3420,7 +3500,7 @@ void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) {
 
   const std::string counts =
       FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
-  ColoredPrintf(COLOR_GREEN, "[----------] ");
+  ColoredPrintf(GTestColor::kGreen, "[----------] ");
   printf("%s from %s (%s ms total)\n\n", counts.c_str(), test_case.name(),
          internal::StreamableToString(test_case.elapsed_time()).c_str());
   fflush(stdout);
@@ -3431,7 +3511,7 @@ void PrettyUnitTestResultPrinter::OnTestSuiteEnd(const TestSuite& test_suite) {
 
   const std::string counts =
       FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
-  ColoredPrintf(COLOR_GREEN, "[----------] ");
+  ColoredPrintf(GTestColor::kGreen, "[----------] ");
   printf("%s from %s (%s ms total)\n\n", counts.c_str(), test_suite.name(),
          internal::StreamableToString(test_suite.elapsed_time()).c_str());
   fflush(stdout);
@@ -3440,7 +3520,7 @@ void PrettyUnitTestResultPrinter::OnTestSuiteEnd(const TestSuite& test_suite) {
 
 void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
     const UnitTest& /*unit_test*/) {
-  ColoredPrintf(COLOR_GREEN,  "[----------] ");
+  ColoredPrintf(GTestColor::kGreen, "[----------] ");
   printf("Global test environment tear-down\n");
   fflush(stdout);
 }
@@ -3448,7 +3528,7 @@ void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
 // Internal helper for printing the list of failed tests.
 void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
   const int failed_test_count = unit_test.failed_test_count();
-  ColoredPrintf(COLOR_RED,  "[  FAILED  ] ");
+  ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
   printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());
 
   for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
@@ -3461,7 +3541,7 @@ void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
       if (!test_info.should_run() || !test_info.result()->Failed()) {
         continue;
       }
-      ColoredPrintf(COLOR_RED, "[  FAILED  ] ");
+      ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
       printf("%s.%s", test_suite.name(), test_info.name());
       PrintFullTestCommentIfPresent(test_info);
       printf("\n");
@@ -3482,7 +3562,7 @@ void PrettyUnitTestResultPrinter::PrintFailedTestSuites(
       continue;
     }
     if (test_suite.ad_hoc_test_result().Failed()) {
-      ColoredPrintf(COLOR_RED, "[  FAILED  ] ");
+      ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
       printf("%s: SetUpTestSuite or TearDownTestSuite\n", test_suite.name());
       ++suite_failure_count;
     }
@@ -3510,7 +3590,7 @@ void PrettyUnitTestResultPrinter::PrintSkippedTests(const UnitTest& unit_test) {
       if (!test_info.should_run() || !test_info.result()->Skipped()) {
         continue;
       }
-      ColoredPrintf(COLOR_GREEN, "[  SKIPPED ] ");
+      ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
       printf("%s.%s", test_suite.name(), test_info.name());
       printf("\n");
     }
@@ -3519,7 +3599,7 @@ void PrettyUnitTestResultPrinter::PrintSkippedTests(const UnitTest& unit_test) {
 
 void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
                                                      int /*iteration*/) {
-  ColoredPrintf(COLOR_GREEN,  "[==========] ");
+  ColoredPrintf(GTestColor::kGreen, "[==========] ");
   printf("%s from %s ran.",
          FormatTestCount(unit_test.test_to_run_count()).c_str(),
          FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
@@ -3528,12 +3608,12 @@ void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
            internal::StreamableToString(unit_test.elapsed_time()).c_str());
   }
   printf("\n");
-  ColoredPrintf(COLOR_GREEN,  "[  PASSED  ] ");
+  ColoredPrintf(GTestColor::kGreen, "[  PASSED  ] ");
   printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
 
   const int skipped_test_count = unit_test.skipped_test_count();
   if (skipped_test_count > 0) {
-    ColoredPrintf(COLOR_GREEN, "[  SKIPPED ] ");
+    ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
     printf("%s, listed below:\n", FormatTestCount(skipped_test_count).c_str());
     PrintSkippedTests(unit_test);
   }
@@ -3548,10 +3628,8 @@ void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
     if (unit_test.Passed()) {
       printf("\n");  // Add a spacer if no FAILURE banner is displayed.
     }
-    ColoredPrintf(COLOR_YELLOW,
-                  "  YOU HAVE %d DISABLED %s\n\n",
-                  num_disabled,
-                  num_disabled == 1 ? "TEST" : "TESTS");
+    ColoredPrintf(GTestColor::kYellow, "  YOU HAVE %d DISABLED %s\n\n",
+                  num_disabled, num_disabled == 1 ? "TEST" : "TESTS");
   }
   // Ensure that Google Test output is printed before, e.g., heapchecker output.
   fflush(stdout);
@@ -3559,6 +3637,110 @@ void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
 
 // End PrettyUnitTestResultPrinter
 
+// This class implements the TestEventListener interface.
+//
+// Class BriefUnitTestResultPrinter is copyable.
+class BriefUnitTestResultPrinter : public TestEventListener {
+ public:
+  BriefUnitTestResultPrinter() {}
+  static void PrintTestName(const char* test_suite, const char* test) {
+    printf("%s.%s", test_suite, test);
+  }
+
+  // The following methods override what's in the TestEventListener class.
+  void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
+  void OnTestIterationStart(const UnitTest& /*unit_test*/,
+                            int /*iteration*/) override {}
+  void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override {}
+  void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
+  void OnTestCaseStart(const TestCase& /*test_case*/) override {}
+#else
+  void OnTestSuiteStart(const TestSuite& /*test_suite*/) override {}
+#endif  // OnTestCaseStart
+
+  void OnTestStart(const TestInfo& /*test_info*/) override {}
+
+  void OnTestPartResult(const TestPartResult& result) override;
+  void OnTestEnd(const TestInfo& test_info) override;
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
+  void OnTestCaseEnd(const TestCase& /*test_case*/) override {}
+#else
+  void OnTestSuiteEnd(const TestSuite& /*test_suite*/) override {}
+#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
+
+  void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override {}
+  void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
+  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
+  void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
+};
+
+// Called after an assertion failure.
+void BriefUnitTestResultPrinter::OnTestPartResult(
+    const TestPartResult& result) {
+  switch (result.type()) {
+    // If the test part succeeded, we don't need to do anything.
+    case TestPartResult::kSuccess:
+      return;
+    default:
+      // Print failure message from the assertion
+      // (e.g. expected this and got that).
+      PrintTestPartResult(result);
+      fflush(stdout);
+  }
+}
+
+void BriefUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
+  if (test_info.result()->Failed()) {
+    ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
+    PrintTestName(test_info.test_suite_name(), test_info.name());
+    PrintFullTestCommentIfPresent(test_info);
+
+    if (GTEST_FLAG(print_time)) {
+      printf(" (%s ms)\n",
+             internal::StreamableToString(test_info.result()->elapsed_time())
+                 .c_str());
+    } else {
+      printf("\n");
+    }
+    fflush(stdout);
+  }
+}
+
+void BriefUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
+                                                    int /*iteration*/) {
+  ColoredPrintf(GTestColor::kGreen, "[==========] ");
+  printf("%s from %s ran.",
+         FormatTestCount(unit_test.test_to_run_count()).c_str(),
+         FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
+  if (GTEST_FLAG(print_time)) {
+    printf(" (%s ms total)",
+           internal::StreamableToString(unit_test.elapsed_time()).c_str());
+  }
+  printf("\n");
+  ColoredPrintf(GTestColor::kGreen, "[  PASSED  ] ");
+  printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
+
+  const int skipped_test_count = unit_test.skipped_test_count();
+  if (skipped_test_count > 0) {
+    ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
+    printf("%s.\n", FormatTestCount(skipped_test_count).c_str());
+  }
+
+  int num_disabled = unit_test.reportable_disabled_test_count();
+  if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
+    if (unit_test.Passed()) {
+      printf("\n");  // Add a spacer if no FAILURE banner is displayed.
+    }
+    ColoredPrintf(GTestColor::kYellow, "  YOU HAVE %d DISABLED %s\n\n",
+                  num_disabled, num_disabled == 1 ? "TEST" : "TESTS");
+  }
+  // Ensure that Google Test output is printed before, e.g., heapchecker output.
+  fflush(stdout);
+}
+
+// End BriefUnitTestResultPrinter
+
 // class TestEventRepeater
 //
 // This class forwards events to other event listeners.
@@ -3911,13 +4093,14 @@ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
   struct tm time_struct;
   if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
     return "";
-  // YYYY-MM-DDThh:mm:ss
+  // YYYY-MM-DDThh:mm:ss.sss
   return StreamableToString(time_struct.tm_year + 1900) + "-" +
       String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
       String::FormatIntWidth2(time_struct.tm_mday) + "T" +
       String::FormatIntWidth2(time_struct.tm_hour) + ":" +
       String::FormatIntWidth2(time_struct.tm_min) + ":" +
-      String::FormatIntWidth2(time_struct.tm_sec);
+      String::FormatIntWidth2(time_struct.tm_sec) + "." +
+      String::FormatIntWidthN(static_cast<int>(ms % 1000), 3);
 }
 
 // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
@@ -4000,10 +4183,11 @@ void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
   OutputXmlAttribute(stream, kTestsuite, "classname", test_suite_name);
 
   int failures = 0;
+  int skips = 0;
   for (int i = 0; i < result.total_part_count(); ++i) {
     const TestPartResult& part = result.GetTestPartResult(i);
     if (part.failed()) {
-      if (++failures == 1) {
+      if (++failures == 1 && skips == 0) {
         *stream << ">\n";
       }
       const std::string location =
@@ -4011,18 +4195,31 @@ void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
                                                           part.line_number());
       const std::string summary = location + "\n" + part.summary();
       *stream << "      <failure message=\""
-              << EscapeXmlAttribute(summary.c_str())
+              << EscapeXmlAttribute(summary)
               << "\" type=\"\">";
       const std::string detail = location + "\n" + part.message();
       OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
       *stream << "</failure>\n";
+    } else if (part.skipped()) {
+      if (++skips == 1 && failures == 0) {
+        *stream << ">\n";
+      }
+      const std::string location =
+          internal::FormatCompilerIndependentFileLocation(part.file_name(),
+                                                          part.line_number());
+      const std::string summary = location + "\n" + part.summary();
+      *stream << "      <skipped message=\""
+              << EscapeXmlAttribute(summary.c_str()) << "\">";
+      const std::string detail = location + "\n" + part.message();
+      OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
+      *stream << "</skipped>\n";
     }
   }
 
-  if (failures == 0 && result.test_property_count() == 0) {
+  if (failures == 0 && skips == 0 && result.test_property_count() == 0) {
     *stream << " />\n";
   } else {
-    if (failures == 0) {
+    if (failures == 0 && skips == 0) {
       *stream << ">\n";
     }
     OutputXmlTestProperties(stream, result);
@@ -4044,7 +4241,11 @@ void XmlUnitTestResultPrinter::PrintXmlTestSuite(std::ostream* stream,
     OutputXmlAttribute(
         stream, kTestsuite, "disabled",
         StreamableToString(test_suite.reportable_disabled_test_count()));
+    OutputXmlAttribute(stream, kTestsuite, "skipped",
+                       StreamableToString(test_suite.skipped_test_count()));
+
     OutputXmlAttribute(stream, kTestsuite, "errors", "0");
+
     OutputXmlAttribute(stream, kTestsuite, "time",
                        FormatTimeInMillisAsSeconds(test_suite.elapsed_time()));
     OutputXmlAttribute(
@@ -5309,6 +5510,10 @@ void UnitTestImpl::PostFlagParsingInit() {
     // to shut down the default XML output before invoking RUN_ALL_TESTS.
     ConfigureXmlOutput();
 
+    if (GTEST_FLAG(brief)) {
+      listeners()->SetDefaultResultPrinter(new BriefUnitTestResultPrinter);
+    }
+
 #if GTEST_CAN_STREAM_RESULTS_
     // Configures listeners for streaming test results to the specified server.
     ConfigureStreamingOutput();
@@ -5354,10 +5559,10 @@ class TestSuiteNameIs {
 // Arguments:
 //
 //   test_suite_name: name of the test suite
-//   type_param:     the name of the test suite's type parameter, or NULL if
-//                   this is not a typed or a type-parameterized test suite.
-//   set_up_tc:      pointer to the function that sets up the test suite
-//   tear_down_tc:   pointer to the function that tears down the test suite
+//   type_param:      the name of the test suite's type parameter, or NULL if
+//                    this is not a typed or a type-parameterized test suite.
+//   set_up_tc:       pointer to the function that sets up the test suite
+//   tear_down_tc:    pointer to the function that tears down the test suite
 TestSuite* UnitTestImpl::GetTestSuite(
     const char* test_suite_name, const char* type_param,
     internal::SetUpTestSuiteFunc set_up_tc,
@@ -5516,6 +5721,13 @@ bool UnitTestImpl::RunAllTests() {
         for (int test_index = 0; test_index < total_test_suite_count();
              test_index++) {
           GetMutableSuiteCase(test_index)->Run();
+          if (GTEST_FLAG(fail_fast) &&
+              GetMutableSuiteCase(test_index)->Failed()) {
+            for (int j = test_index + 1; j < total_test_suite_count(); j++) {
+              GetMutableSuiteCase(j)->Skip();
+            }
+            break;
+          }
         }
       }
 
@@ -5554,14 +5766,14 @@ bool UnitTestImpl::RunAllTests() {
 
   if (!gtest_is_initialized_before_run_all_tests) {
     ColoredPrintf(
-        COLOR_RED,
+        GTestColor::kRed,
         "\nIMPORTANT NOTICE - DO NOT IGNORE:\n"
         "This test program did NOT call " GTEST_INIT_GOOGLE_TEST_NAME_
         "() before calling RUN_ALL_TESTS(). This is INVALID. Soon " GTEST_NAME_
         " will start to enforce the valid usage. "
         "Please fix it ASAP, or IT WILL START TO FAIL.\n");  // NOLINT
 #if GTEST_FOR_GOOGLE_
-    ColoredPrintf(COLOR_RED,
+    ColoredPrintf(GTestColor::kRed,
                   "For more details, see http://wiki/Main/ValidGUnitMain.\n");
 #endif  // GTEST_FOR_GOOGLE_
   }
@@ -5578,7 +5790,7 @@ void WriteToShardStatusFileIfNeeded() {
   if (test_shard_file != nullptr) {
     FILE* const file = posix::FOpen(test_shard_file, "w");
     if (file == nullptr) {
-      ColoredPrintf(COLOR_RED,
+      ColoredPrintf(GTestColor::kRed,
                     "Could not write to the test shard status file \"%s\" "
                     "specified by the %s environment variable.\n",
                     test_shard_file, kTestShardStatusFile);
@@ -5612,7 +5824,7 @@ bool ShouldShard(const char* total_shards_env,
       << "Invalid environment variables: you have "
       << kTestShardIndex << " = " << shard_index
       << ", but have left " << kTestTotalShards << " unset.\n";
-    ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
+    ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
     fflush(stdout);
     exit(EXIT_FAILURE);
   } else if (total_shards != -1 && shard_index == -1) {
@@ -5620,7 +5832,7 @@ bool ShouldShard(const char* total_shards_env,
       << "Invalid environment variables: you have "
       << kTestTotalShards << " = " << total_shards
       << ", but have left " << kTestShardIndex << " unset.\n";
-    ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
+    ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
     fflush(stdout);
     exit(EXIT_FAILURE);
   } else if (shard_index < 0 || shard_index >= total_shards) {
@@ -5629,7 +5841,7 @@ bool ShouldShard(const char* total_shards_env,
       << kTestShardIndex << " < " << kTestTotalShards
       << ", but you have " << kTestShardIndex << "=" << shard_index
       << ", " << kTestTotalShards << "=" << total_shards << ".\n";
-    ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
+    ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
     fflush(stdout);
     exit(EXIT_FAILURE);
   }
@@ -6019,7 +6231,7 @@ static bool HasGoogleTestFlagPrefix(const char* str) {
 //   @D    changes to the default terminal text color.
 //
 static void PrintColorEncoded(const char* str) {
-  GTestColor color = COLOR_DEFAULT;  // The current color.
+  GTestColor color = GTestColor::kDefault;  // The current color.
 
   // Conceptually, we split the string into segments divided by escape
   // sequences.  Then we print one segment at a time.  At the end of
@@ -6039,13 +6251,13 @@ static void PrintColorEncoded(const char* str) {
     if (ch == '@') {
       ColoredPrintf(color, "@");
     } else if (ch == 'D') {
-      color = COLOR_DEFAULT;
+      color = GTestColor::kDefault;
     } else if (ch == 'R') {
-      color = COLOR_RED;
+      color = GTestColor::kRed;
     } else if (ch == 'G') {
-      color = COLOR_GREEN;
+      color = GTestColor::kGreen;
     } else if (ch == 'Y') {
-      color = COLOR_YELLOW;
+      color = GTestColor::kYellow;
     } else {
       --str;
     }
@@ -6053,98 +6265,126 @@ static void PrintColorEncoded(const char* str) {
 }
 
 static const char kColorEncodedHelpMessage[] =
-"This program contains tests written using " GTEST_NAME_ ". You can use the\n"
-"following command line flags to control its behavior:\n"
-"\n"
-"Test Selection:\n"
-"  @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n"
-"      List the names of all tests instead of running them. The name of\n"
-"      TEST(Foo, Bar) is \"Foo.Bar\".\n"
-"  @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS"
+    "This program contains tests written using " GTEST_NAME_
+    ". You can use the\n"
+    "following command line flags to control its behavior:\n"
+    "\n"
+    "Test Selection:\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "list_tests@D\n"
+    "      List the names of all tests instead of running them. The name of\n"
+    "      TEST(Foo, Bar) is \"Foo.Bar\".\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "filter=@YPOSITIVE_PATTERNS"
     "[@G-@YNEGATIVE_PATTERNS]@D\n"
-"      Run only the tests whose name matches one of the positive patterns but\n"
-"      none of the negative patterns. '?' matches any single character; '*'\n"
-"      matches any substring; ':' separates two patterns.\n"
-"  @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n"
-"      Run all disabled tests too.\n"
-"\n"
-"Test Execution:\n"
-"  @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n"
-"      Run the tests repeatedly; use a negative count to repeat forever.\n"
-"  @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n"
-"      Randomize tests' orders on every iteration.\n"
-"  @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n"
-"      Random number seed to use for shuffling test orders (between 1 and\n"
-"      99999, or 0 to use a seed based on the current time).\n"
-"\n"
-"Test Output:\n"
-"  @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
-"      Enable/disable colored output. The default is @Gauto@D.\n"
-"  -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n"
-"      Don't print the elapsed time of each test.\n"
-"  @G--" GTEST_FLAG_PREFIX_ "output=@Y(@Gjson@Y|@Gxml@Y)[@G:@YDIRECTORY_PATH@G"
-    GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n"
-"      Generate a JSON or XML report in the given directory or with the given\n"
-"      file name. @YFILE_PATH@D defaults to @Gtest_detail.xml@D.\n"
+    "      Run only the tests whose name matches one of the positive patterns "
+    "but\n"
+    "      none of the negative patterns. '?' matches any single character; "
+    "'*'\n"
+    "      matches any substring; ':' separates two patterns.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "also_run_disabled_tests@D\n"
+    "      Run all disabled tests too.\n"
+    "\n"
+    "Test Execution:\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "repeat=@Y[COUNT]@D\n"
+    "      Run the tests repeatedly; use a negative count to repeat forever.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "shuffle@D\n"
+    "      Randomize tests' orders on every iteration.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "random_seed=@Y[NUMBER]@D\n"
+    "      Random number seed to use for shuffling test orders (between 1 and\n"
+    "      99999, or 0 to use a seed based on the current time).\n"
+    "\n"
+    "Test Output:\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
+    "      Enable/disable colored output. The default is @Gauto@D.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "brief=1@D\n"
+    "      Only print test failures.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "print_time=0@D\n"
+    "      Don't print the elapsed time of each test.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "output=@Y(@Gjson@Y|@Gxml@Y)[@G:@YDIRECTORY_PATH@G" GTEST_PATH_SEP_
+    "@Y|@G:@YFILE_PATH]@D\n"
+    "      Generate a JSON or XML report in the given directory or with the "
+    "given\n"
+    "      file name. @YFILE_PATH@D defaults to @Gtest_detail.xml@D.\n"
 # if GTEST_CAN_STREAM_RESULTS_
-"  @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n"
-"      Stream test results to the given server.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "stream_result_to=@YHOST@G:@YPORT@D\n"
+    "      Stream test results to the given server.\n"
 # endif  // GTEST_CAN_STREAM_RESULTS_
-"\n"
-"Assertion Behavior:\n"
+    "\n"
+    "Assertion Behavior:\n"
 # if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
-"  @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
-"      Set the default death test style.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
+    "      Set the default death test style.\n"
 # endif  // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
-"  @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n"
-"      Turn assertion failures into debugger break-points.\n"
-"  @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n"
-"      Turn assertion failures into C++ exceptions for use by an external\n"
-"      test framework.\n"
-"  @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n"
-"      Do not report exceptions as test failures. Instead, allow them\n"
-"      to crash the program or throw a pop-up (on Windows).\n"
-"\n"
-"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set "
+    "  @G--" GTEST_FLAG_PREFIX_
+    "break_on_failure@D\n"
+    "      Turn assertion failures into debugger break-points.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "throw_on_failure@D\n"
+    "      Turn assertion failures into C++ exceptions for use by an external\n"
+    "      test framework.\n"
+    "  @G--" GTEST_FLAG_PREFIX_
+    "catch_exceptions=0@D\n"
+    "      Do not report exceptions as test failures. Instead, allow them\n"
+    "      to crash the program or throw a pop-up (on Windows).\n"
+    "\n"
+    "Except for @G--" GTEST_FLAG_PREFIX_
+    "list_tests@D, you can alternatively set "
     "the corresponding\n"
-"environment variable of a flag (all letters in upper-case). For example, to\n"
-"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_
+    "environment variable of a flag (all letters in upper-case). For example, "
+    "to\n"
+    "disable colored text output, you can either specify "
+    "@G--" GTEST_FLAG_PREFIX_
     "color=no@D or set\n"
-"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n"
-"\n"
-"For more information, please read the " GTEST_NAME_ " documentation at\n"
-"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n"
-"(not one in your own code or tests), please report it to\n"
-"@G<" GTEST_DEV_EMAIL_ ">@D.\n";
+    "the @G" GTEST_FLAG_PREFIX_UPPER_
+    "COLOR@D environment variable to @Gno@D.\n"
+    "\n"
+    "For more information, please read the " GTEST_NAME_
+    " documentation at\n"
+    "@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_
+    "\n"
+    "(not one in your own code or tests), please report it to\n"
+    "@G<" GTEST_DEV_EMAIL_ ">@D.\n";
 
 static bool ParseGoogleTestFlag(const char* const arg) {
   return ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
                        &GTEST_FLAG(also_run_disabled_tests)) ||
-      ParseBoolFlag(arg, kBreakOnFailureFlag,
-                    &GTEST_FLAG(break_on_failure)) ||
-      ParseBoolFlag(arg, kCatchExceptionsFlag,
-                    &GTEST_FLAG(catch_exceptions)) ||
-      ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||
-      ParseStringFlag(arg, kDeathTestStyleFlag,
-                      &GTEST_FLAG(death_test_style)) ||
-      ParseBoolFlag(arg, kDeathTestUseFork,
-                    &GTEST_FLAG(death_test_use_fork)) ||
-      ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||
-      ParseStringFlag(arg, kInternalRunDeathTestFlag,
-                      &GTEST_FLAG(internal_run_death_test)) ||
-      ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||
-      ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||
-      ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||
-      ParseBoolFlag(arg, kPrintUTF8Flag, &GTEST_FLAG(print_utf8)) ||
-      ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||
-      ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||
-      ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||
-      ParseInt32Flag(arg, kStackTraceDepthFlag,
-                     &GTEST_FLAG(stack_trace_depth)) ||
-      ParseStringFlag(arg, kStreamResultToFlag,
-                      &GTEST_FLAG(stream_result_to)) ||
-      ParseBoolFlag(arg, kThrowOnFailureFlag,
-                    &GTEST_FLAG(throw_on_failure));
+         ParseBoolFlag(arg, kBreakOnFailureFlag,
+                       &GTEST_FLAG(break_on_failure)) ||
+         ParseBoolFlag(arg, kCatchExceptionsFlag,
+                       &GTEST_FLAG(catch_exceptions)) ||
+         ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||
+         ParseStringFlag(arg, kDeathTestStyleFlag,
+                         &GTEST_FLAG(death_test_style)) ||
+         ParseBoolFlag(arg, kDeathTestUseFork,
+                       &GTEST_FLAG(death_test_use_fork)) ||
+         ParseBoolFlag(arg, kFailFast, &GTEST_FLAG(fail_fast)) ||
+         ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||
+         ParseStringFlag(arg, kInternalRunDeathTestFlag,
+                         &GTEST_FLAG(internal_run_death_test)) ||
+         ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||
+         ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||
+         ParseBoolFlag(arg, kBriefFlag, &GTEST_FLAG(brief)) ||
+         ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||
+         ParseBoolFlag(arg, kPrintUTF8Flag, &GTEST_FLAG(print_utf8)) ||
+         ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||
+         ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||
+         ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||
+         ParseInt32Flag(arg, kStackTraceDepthFlag,
+                        &GTEST_FLAG(stack_trace_depth)) ||
+         ParseStringFlag(arg, kStreamResultToFlag,
+                         &GTEST_FLAG(stream_result_to)) ||
+         ParseBoolFlag(arg, kThrowOnFailureFlag, &GTEST_FLAG(throw_on_failure));
 }
 
 #if GTEST_USE_OWN_FLAGFILE_FLAG_
@@ -6314,24 +6554,31 @@ void InitGoogleTest() {
 std::string TempDir() {
 #if defined(GTEST_CUSTOM_TEMPDIR_FUNCTION_)
   return GTEST_CUSTOM_TEMPDIR_FUNCTION_();
-#endif
-
-#if GTEST_OS_WINDOWS_MOBILE
+#elif GTEST_OS_WINDOWS_MOBILE
   return "\\temp\\";
 #elif GTEST_OS_WINDOWS
   const char* temp_dir = internal::posix::GetEnv("TEMP");
-  if (temp_dir == nullptr || temp_dir[0] == '\0')
+  if (temp_dir == nullptr || temp_dir[0] == '\0') {
     return "\\temp\\";
-  else if (temp_dir[strlen(temp_dir) - 1] == '\\')
+  } else if (temp_dir[strlen(temp_dir) - 1] == '\\') {
     return temp_dir;
-  else
+  } else {
     return std::string(temp_dir) + "\\";
+  }
 #elif GTEST_OS_LINUX_ANDROID
   const char* temp_dir = internal::posix::GetEnv("TEST_TMPDIR");
-  if (temp_dir == nullptr || temp_dir[0] == '\0')
+  if (temp_dir == nullptr || temp_dir[0] == '\0') {
     return "/data/local/tmp/";
-  else
+  } else {
     return temp_dir;
+  }
+#elif GTEST_OS_LINUX
+  const char* temp_dir = internal::posix::GetEnv("TEST_TMPDIR");
+  if (temp_dir == nullptr || temp_dir[0] == '\0') {
+    return "/tmp/";
+  } else {
+    return temp_dir;
+  }
 #else
   return "/tmp/";
 #endif  // GTEST_OS_WINDOWS_MOBILE
index 15f7eef86e5745e02e49bf47fa3f1ff6998cad89..41fbca1a393b19a58c7901ac64f46677bad50291 100644 (file)
@@ -28,8 +28,6 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
-# Author: misterg@google.com (Gennadiy Civil)
-#
 # Bazel BUILD for The Google C++ Testing Framework (Google Test)
 
 load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_test")
@@ -37,6 +35,8 @@ load("@rules_python//python:defs.bzl", "py_library", "py_test")
 
 licenses(["notice"])
 
+package(default_visibility = ["//:__subpackages__"])
+
 #on windows exclude gtest-tuple.h
 cc_test(
     name = "gtest_all_test",
@@ -56,9 +56,11 @@ cc_test(
             "gtest-listener_test.cc",
             "gtest-unittest-api_test.cc",
             "googletest-param-test-test.cc",
+            "googletest-param-test2-test.cc",
             "googletest-catch-exceptions-test_.cc",
             "googletest-color-test_.cc",
             "googletest-env-var-test_.cc",
+            "googletest-failfast-unittest_.cc",
             "googletest-filter-unittest_.cc",
             "googletest-break-on-failure-unittest_.cc",
             "googletest-listener-test.cc",
@@ -154,6 +156,7 @@ py_library(
     name = "gtest_test_utils",
     testonly = 1,
     srcs = ["gtest_test_utils.py"],
+    imports = ["."],
 )
 
 cc_binary(
@@ -223,6 +226,21 @@ py_test(
     deps = [":gtest_test_utils"],
 )
 
+cc_binary(
+    name = "googletest-failfast-unittest_",
+    testonly = 1,
+    srcs = ["googletest-failfast-unittest_.cc"],
+    deps = ["//:gtest"],
+)
+
+py_test(
+    name = "googletest-failfast-unittest",
+    size = "medium",
+    srcs = ["googletest-failfast-unittest.py"],
+    data = [":googletest-failfast-unittest_"],
+    deps = [":gtest_test_utils"],
+)
+
 cc_binary(
     name = "googletest-filter-unittest_",
     testonly = 1,
@@ -534,6 +552,10 @@ py_test(
     srcs = ["googletest-param-test-invalid-name1-test.py"],
     data = [":googletest-param-test-invalid-name1-test_"],
     deps = [":gtest_test_utils"],
+    tags = [
+        "no_test_msvc2015",
+        "no_test_msvc2017",
+    ],
 )
 
 py_test(
@@ -542,4 +564,8 @@ py_test(
     srcs = ["googletest-param-test-invalid-name2-test.py"],
     data = [":googletest-param-test-invalid-name2-test_"],
     deps = [":gtest_test_utils"],
+    tags = [
+        "no_test_msvc2015",
+        "no_test_msvc2017",
+    ],
 )
index cba906ccd861df493ae848c814010a2249f9767e..c0b3d1f21d04d3de77803836704cb7f47d2adfe9 100644 (file)
@@ -298,6 +298,13 @@ TEST(ExitStatusPredicateTest, KilledBySignal) {
 
 # endif  // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
 
+// The following code intentionally tests a suboptimal syntax.
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-else"
+#pragma GCC diagnostic ignored "-Wempty-body"
+#pragma GCC diagnostic ignored "-Wpragmas"
+#endif
 // Tests that the death test macros expand to code which may or may not
 // be followed by operator<<, and that in either case the complete text
 // comprises only a single C++ statement.
@@ -321,6 +328,9 @@ TEST_F(TestForDeathTest, SingleStatement) {
   else
     EXPECT_DEATH(_exit(1), "") << 1 << 2 << 3;
 }
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 # if GTEST_USES_PCRE
 
@@ -391,17 +401,19 @@ void SigprofAction(int, siginfo_t*, void*) { /* no op */ }
 
 // Sets SIGPROF action and ITIMER_PROF timer (interval: 1ms).
 void SetSigprofActionAndTimer() {
-  struct itimerval timer;
-  timer.it_interval.tv_sec = 0;
-  timer.it_interval.tv_usec = 1;
-  timer.it_value = timer.it_interval;
-  ASSERT_EQ(0, setitimer(ITIMER_PROF, &timer, nullptr));
   struct sigaction signal_action;
   memset(&signal_action, 0, sizeof(signal_action));
   sigemptyset(&signal_action.sa_mask);
   signal_action.sa_sigaction = SigprofAction;
   signal_action.sa_flags = SA_RESTART | SA_SIGINFO;
   ASSERT_EQ(0, sigaction(SIGPROF, &signal_action, nullptr));
+  // timer comes second, to avoid SIGPROF premature delivery, as suggested at
+  // https://www.gnu.org/software/libc/manual/html_node/Setting-an-Alarm.html
+  struct itimerval timer;
+  timer.it_interval.tv_sec = 0;
+  timer.it_interval.tv_usec = 1;
+  timer.it_value = timer.it_interval;
+  ASSERT_EQ(0, setitimer(ITIMER_PROF, &timer, nullptr));
 }
 
 // Disables ITIMER_PROF timer and ignores SIGPROF signal.
@@ -1374,7 +1386,11 @@ void DieWithMessage(const char* message) {
 TEST(MatcherDeathTest, DoesNotBreakBareRegexMatching) {
   // googletest tests this, of course; here we ensure that including googlemock
   // has not broken it.
+#if GTEST_USES_POSIX_RE
   EXPECT_DEATH(DieWithMessage("O, I die, Horatio."), "I d[aeiou]e");
+#else
+  EXPECT_DEATH(DieWithMessage("O, I die, Horatio."), "I di?e");
+#endif
 }
 
 TEST(MatcherDeathTest, MonomorphicMatcherMatches) {
@@ -1462,6 +1478,13 @@ TEST(ConditionalDeathMacrosTest, AssertDeatDoesNotReturnhIfUnsupported) {
 
 namespace {
 
+// The following code intentionally tests a suboptimal syntax.
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-else"
+#pragma GCC diagnostic ignored "-Wempty-body"
+#pragma GCC diagnostic ignored "-Wpragmas"
+#endif
 // Tests that the death test macros expand to code which may or may not
 // be followed by operator<<, and that in either case the complete text
 // comprises only a single C++ statement.
@@ -1487,6 +1510,9 @@ TEST(ConditionalDeathMacrosSyntaxDeathTest, SingleStatement) {
   else
     EXPECT_DEATH_IF_SUPPORTED(_exit(1), "") << 1 << 2 << 3;
 }
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 // Tests that conditional death test macros expand to code which interacts
 // well with switch statements.
index 7ea5b9468e3b29175fff06614d6815c4649a5ac7..7219680d0749777784f645147b50395db09ba95d 100644 (file)
@@ -59,7 +59,7 @@ TEST(CxxExceptionDeathTest, ExceptionIsFailure) {
 
 class TestException : public std::exception {
  public:
-  const char* what() const throw() override { return "exceptional message"; }
+  const char* what() const noexcept override { return "exceptional message"; }
 };
 
 TEST(CxxExceptionDeathTest, PrintsMessageForStdExceptions) {
index 2f0e406afcfc09dc11754c5fd9dd49a8956ddc91..02c3655c398268965a2851623523175219bac56c 100755 (executable)
@@ -85,9 +85,12 @@ class GTestEnvVarTest(gtest_test_utils.TestCase):
 
     TestFlag('break_on_failure', '1', '0')
     TestFlag('color', 'yes', 'auto')
+    SetEnvVar('TESTBRIDGE_TEST_RUNNER_FAIL_FAST', None)  # For 'fail_fast' test
+    TestFlag('fail_fast', '1', '0')
     TestFlag('filter', 'FooTest.Bar', '*')
     SetEnvVar('XML_OUTPUT_FILE', None)  # For 'output' test
     TestFlag('output', 'xml:tmp/foo.xml', '')
+    TestFlag('brief', '1', '0')
     TestFlag('print_time', '0', '1')
     TestFlag('repeat', '999', '1')
     TestFlag('throw_on_failure', '1', '0')
index fd2aa82f74faa21201e79ae0e5c3b568553df337..52f95864e1e5ff4bd8f1c7e99e15310694181776 100644 (file)
@@ -72,6 +72,11 @@ void PrintFlag(const char* flag) {
     return;
   }
 
+  if (strcmp(flag, "fail_fast") == 0) {
+    cout << GTEST_FLAG(fail_fast);
+    return;
+  }
+
   if (strcmp(flag, "filter") == 0) {
     cout << GTEST_FLAG(filter);
     return;
@@ -82,6 +87,11 @@ void PrintFlag(const char* flag) {
     return;
   }
 
+  if (strcmp(flag, "brief") == 0) {
+    cout << GTEST_FLAG(brief);
+    return;
+  }
+
   if (strcmp(flag, "print_time") == 0) {
     cout << GTEST_FLAG(print_time);
     return;
diff --git a/ceph/src/googletest/googletest/test/googletest-failfast-unittest.py b/ceph/src/googletest/googletest/test/googletest-failfast-unittest.py
new file mode 100755 (executable)
index 0000000..3aeb2df
--- /dev/null
@@ -0,0 +1,410 @@
+#!/usr/bin/env python
+#
+# Copyright 2020 Google Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test for Google Test fail_fast.
+
+A user can specify if a Google Test program should continue test execution
+after a test failure via the GTEST_FAIL_FAST environment variable or the
+--gtest_fail_fast flag. The default value of the flag can also be changed
+by Bazel fail fast environment variable TESTBRIDGE_TEST_RUNNER_FAIL_FAST.
+
+This script tests such functionality by invoking googletest-failfast-unittest_
+(a program written with Google Test) with different environments and command
+line flags.
+"""
+
+import os
+import gtest_test_utils
+
+# Constants.
+
+# Bazel testbridge environment variable for fail fast
+BAZEL_FAIL_FAST_ENV_VAR = 'TESTBRIDGE_TEST_RUNNER_FAIL_FAST'
+
+# The environment variable for specifying fail fast.
+FAIL_FAST_ENV_VAR = 'GTEST_FAIL_FAST'
+
+# The command line flag for specifying fail fast.
+FAIL_FAST_FLAG = 'gtest_fail_fast'
+
+# The command line flag to run disabled tests.
+RUN_DISABLED_FLAG = 'gtest_also_run_disabled_tests'
+
+# The command line flag for specifying a filter.
+FILTER_FLAG = 'gtest_filter'
+
+# Command to run the googletest-failfast-unittest_ program.
+COMMAND = gtest_test_utils.GetTestExecutablePath(
+    'googletest-failfast-unittest_')
+
+# The command line flag to tell Google Test to output the list of tests it
+# will run.
+LIST_TESTS_FLAG = '--gtest_list_tests'
+
+# Indicates whether Google Test supports death tests.
+SUPPORTS_DEATH_TESTS = 'HasDeathTest' in gtest_test_utils.Subprocess(
+    [COMMAND, LIST_TESTS_FLAG]).output
+
+# Utilities.
+
+environ = os.environ.copy()
+
+
+def SetEnvVar(env_var, value):
+  """Sets the env variable to 'value'; unsets it when 'value' is None."""
+
+  if value is not None:
+    environ[env_var] = value
+  elif env_var in environ:
+    del environ[env_var]
+
+
+def RunAndReturnOutput(test_suite=None, fail_fast=None, run_disabled=False):
+  """Runs the test program and returns its output."""
+
+  args = []
+  xml_path = os.path.join(gtest_test_utils.GetTempDir(),
+                          '.GTestFailFastUnitTest.xml')
+  args += ['--gtest_output=xml:' + xml_path]
+  if fail_fast is not None:
+    if isinstance(fail_fast, str):
+      args += ['--%s=%s' % (FAIL_FAST_FLAG, fail_fast)]
+    elif fail_fast:
+      args += ['--%s' % FAIL_FAST_FLAG]
+    else:
+      args += ['--no%s' % FAIL_FAST_FLAG]
+  if test_suite:
+    args += ['--%s=%s.*' % (FILTER_FLAG, test_suite)]
+  if run_disabled:
+    args += ['--%s' % RUN_DISABLED_FLAG]
+  txt_out = gtest_test_utils.Subprocess([COMMAND] + args, env=environ).output
+  with open(xml_path) as xml_file:
+    return txt_out, xml_file.read()
+
+
+# The unit test.
+class GTestFailFastUnitTest(gtest_test_utils.TestCase):
+  """Tests the env variable or the command line flag for fail_fast."""
+
+  def testDefaultBehavior(self):
+    """Tests the behavior of not specifying the fail_fast."""
+
+    txt, _ = RunAndReturnOutput()
+    self.assertIn('22 FAILED TEST', txt)
+
+  def testGoogletestFlag(self):
+    txt, _ = RunAndReturnOutput(test_suite='HasSimpleTest', fail_fast=True)
+    self.assertIn('1 FAILED TEST', txt)
+    self.assertIn('[  SKIPPED ] 3 tests', txt)
+
+    txt, _ = RunAndReturnOutput(test_suite='HasSimpleTest', fail_fast=False)
+    self.assertIn('4 FAILED TEST', txt)
+    self.assertNotIn('[  SKIPPED ]', txt)
+
+  def testGoogletestEnvVar(self):
+    """Tests the behavior of specifying fail_fast via Googletest env var."""
+
+    try:
+      SetEnvVar(FAIL_FAST_ENV_VAR, '1')
+      txt, _ = RunAndReturnOutput('HasSimpleTest')
+      self.assertIn('1 FAILED TEST', txt)
+      self.assertIn('[  SKIPPED ] 3 tests', txt)
+
+      SetEnvVar(FAIL_FAST_ENV_VAR, '0')
+      txt, _ = RunAndReturnOutput('HasSimpleTest')
+      self.assertIn('4 FAILED TEST', txt)
+      self.assertNotIn('[  SKIPPED ]', txt)
+    finally:
+      SetEnvVar(FAIL_FAST_ENV_VAR, None)
+
+  def testBazelEnvVar(self):
+    """Tests the behavior of specifying fail_fast via Bazel testbridge."""
+
+    try:
+      SetEnvVar(BAZEL_FAIL_FAST_ENV_VAR, '1')
+      txt, _ = RunAndReturnOutput('HasSimpleTest')
+      self.assertIn('1 FAILED TEST', txt)
+      self.assertIn('[  SKIPPED ] 3 tests', txt)
+
+      SetEnvVar(BAZEL_FAIL_FAST_ENV_VAR, '0')
+      txt, _ = RunAndReturnOutput('HasSimpleTest')
+      self.assertIn('4 FAILED TEST', txt)
+      self.assertNotIn('[  SKIPPED ]', txt)
+    finally:
+      SetEnvVar(BAZEL_FAIL_FAST_ENV_VAR, None)
+
+  def testFlagOverridesEnvVar(self):
+    """Tests precedence of flag over env var."""
+
+    try:
+      SetEnvVar(FAIL_FAST_ENV_VAR, '0')
+      txt, _ = RunAndReturnOutput('HasSimpleTest', True)
+      self.assertIn('1 FAILED TEST', txt)
+      self.assertIn('[  SKIPPED ] 3 tests', txt)
+    finally:
+      SetEnvVar(FAIL_FAST_ENV_VAR, None)
+
+  def testGoogletestEnvVarOverridesBazelEnvVar(self):
+    """Tests that the Googletest native env var over Bazel testbridge."""
+
+    try:
+      SetEnvVar(BAZEL_FAIL_FAST_ENV_VAR, '0')
+      SetEnvVar(FAIL_FAST_ENV_VAR, '1')
+      txt, _ = RunAndReturnOutput('HasSimpleTest')
+      self.assertIn('1 FAILED TEST', txt)
+      self.assertIn('[  SKIPPED ] 3 tests', txt)
+    finally:
+      SetEnvVar(FAIL_FAST_ENV_VAR, None)
+      SetEnvVar(BAZEL_FAIL_FAST_ENV_VAR, None)
+
+  def testEventListener(self):
+    txt, _ = RunAndReturnOutput(test_suite='HasSkipTest', fail_fast=True)
+    self.assertIn('1 FAILED TEST', txt)
+    self.assertIn('[  SKIPPED ] 3 tests', txt)
+    for expected_count, callback in [(1, 'OnTestSuiteStart'),
+                                     (5, 'OnTestStart'),
+                                     (5, 'OnTestEnd'),
+                                     (5, 'OnTestPartResult'),
+                                     (1, 'OnTestSuiteEnd')]:
+      self.assertEqual(
+          expected_count, txt.count(callback),
+          'Expected %d calls to callback %s match count on output: %s ' %
+          (expected_count, callback, txt))
+
+    txt, _ = RunAndReturnOutput(test_suite='HasSkipTest', fail_fast=False)
+    self.assertIn('3 FAILED TEST', txt)
+    self.assertIn('[  SKIPPED ] 1 test', txt)
+    for expected_count, callback in [(1, 'OnTestSuiteStart'),
+                                     (5, 'OnTestStart'),
+                                     (5, 'OnTestEnd'),
+                                     (5, 'OnTestPartResult'),
+                                     (1, 'OnTestSuiteEnd')]:
+      self.assertEqual(
+          expected_count, txt.count(callback),
+          'Expected %d calls to callback %s match count on output: %s ' %
+          (expected_count, callback, txt))
+
+  def assertXmlResultCount(self, result, count, xml):
+    self.assertEqual(
+        count, xml.count('result="%s"' % result),
+        'Expected \'result="%s"\' match count of %s: %s ' %
+        (result, count, xml))
+
+  def assertXmlStatusCount(self, status, count, xml):
+    self.assertEqual(
+        count, xml.count('status="%s"' % status),
+        'Expected \'status="%s"\' match count of %s: %s ' %
+        (status, count, xml))
+
+  def assertFailFastXmlAndTxtOutput(self,
+                                    fail_fast,
+                                    test_suite,
+                                    passed_count,
+                                    failure_count,
+                                    skipped_count,
+                                    suppressed_count,
+                                    run_disabled=False):
+    """Assert XML and text output of a test execution."""
+
+    txt, xml = RunAndReturnOutput(test_suite, fail_fast, run_disabled)
+    if failure_count > 0:
+      self.assertIn('%s FAILED TEST' % failure_count, txt)
+    if suppressed_count > 0:
+      self.assertIn('%s DISABLED TEST' % suppressed_count, txt)
+    if skipped_count > 0:
+      self.assertIn('[  SKIPPED ] %s tests' % skipped_count, txt)
+    self.assertXmlStatusCount('run',
+                              passed_count + failure_count + skipped_count, xml)
+    self.assertXmlStatusCount('notrun', suppressed_count, xml)
+    self.assertXmlResultCount('completed', passed_count + failure_count, xml)
+    self.assertXmlResultCount('skipped', skipped_count, xml)
+    self.assertXmlResultCount('suppressed', suppressed_count, xml)
+
+  def assertFailFastBehavior(self,
+                             test_suite,
+                             passed_count,
+                             failure_count,
+                             skipped_count,
+                             suppressed_count,
+                             run_disabled=False):
+    """Assert --fail_fast via flag."""
+
+    for fail_fast in ('true', '1', 't', True):
+      self.assertFailFastXmlAndTxtOutput(fail_fast, test_suite, passed_count,
+                                         failure_count, skipped_count,
+                                         suppressed_count, run_disabled)
+
+  def assertNotFailFastBehavior(self,
+                                test_suite,
+                                passed_count,
+                                failure_count,
+                                skipped_count,
+                                suppressed_count,
+                                run_disabled=False):
+    """Assert --nofail_fast via flag."""
+
+    for fail_fast in ('false', '0', 'f', False):
+      self.assertFailFastXmlAndTxtOutput(fail_fast, test_suite, passed_count,
+                                         failure_count, skipped_count,
+                                         suppressed_count, run_disabled)
+
+  def testFlag_HasFixtureTest(self):
+    """Tests the behavior of fail_fast and TEST_F."""
+    self.assertFailFastBehavior(
+        test_suite='HasFixtureTest',
+        passed_count=1,
+        failure_count=1,
+        skipped_count=3,
+        suppressed_count=0)
+    self.assertNotFailFastBehavior(
+        test_suite='HasFixtureTest',
+        passed_count=1,
+        failure_count=4,
+        skipped_count=0,
+        suppressed_count=0)
+
+  def testFlag_HasSimpleTest(self):
+    """Tests the behavior of fail_fast and TEST."""
+    self.assertFailFastBehavior(
+        test_suite='HasSimpleTest',
+        passed_count=1,
+        failure_count=1,
+        skipped_count=3,
+        suppressed_count=0)
+    self.assertNotFailFastBehavior(
+        test_suite='HasSimpleTest',
+        passed_count=1,
+        failure_count=4,
+        skipped_count=0,
+        suppressed_count=0)
+
+  def testFlag_HasParametersTest(self):
+    """Tests the behavior of fail_fast and TEST_P."""
+    self.assertFailFastBehavior(
+        test_suite='HasParametersSuite/HasParametersTest',
+        passed_count=0,
+        failure_count=1,
+        skipped_count=3,
+        suppressed_count=0)
+    self.assertNotFailFastBehavior(
+        test_suite='HasParametersSuite/HasParametersTest',
+        passed_count=0,
+        failure_count=4,
+        skipped_count=0,
+        suppressed_count=0)
+
+  def testFlag_HasDisabledTest(self):
+    """Tests the behavior of fail_fast and Disabled test cases."""
+    self.assertFailFastBehavior(
+        test_suite='HasDisabledTest',
+        passed_count=1,
+        failure_count=1,
+        skipped_count=2,
+        suppressed_count=1,
+        run_disabled=False)
+    self.assertNotFailFastBehavior(
+        test_suite='HasDisabledTest',
+        passed_count=1,
+        failure_count=3,
+        skipped_count=0,
+        suppressed_count=1,
+        run_disabled=False)
+
+  def testFlag_HasDisabledRunDisabledTest(self):
+    """Tests the behavior of fail_fast and Disabled test cases enabled."""
+    self.assertFailFastBehavior(
+        test_suite='HasDisabledTest',
+        passed_count=1,
+        failure_count=1,
+        skipped_count=3,
+        suppressed_count=0,
+        run_disabled=True)
+    self.assertNotFailFastBehavior(
+        test_suite='HasDisabledTest',
+        passed_count=1,
+        failure_count=4,
+        skipped_count=0,
+        suppressed_count=0,
+        run_disabled=True)
+
+  def testFlag_HasDisabledSuiteTest(self):
+    """Tests the behavior of fail_fast and Disabled test suites."""
+    self.assertFailFastBehavior(
+        test_suite='DISABLED_HasDisabledSuite',
+        passed_count=0,
+        failure_count=0,
+        skipped_count=0,
+        suppressed_count=5,
+        run_disabled=False)
+    self.assertNotFailFastBehavior(
+        test_suite='DISABLED_HasDisabledSuite',
+        passed_count=0,
+        failure_count=0,
+        skipped_count=0,
+        suppressed_count=5,
+        run_disabled=False)
+
+  def testFlag_HasDisabledSuiteRunDisabledTest(self):
+    """Tests the behavior of fail_fast and Disabled test suites enabled."""
+    self.assertFailFastBehavior(
+        test_suite='DISABLED_HasDisabledSuite',
+        passed_count=1,
+        failure_count=1,
+        skipped_count=3,
+        suppressed_count=0,
+        run_disabled=True)
+    self.assertNotFailFastBehavior(
+        test_suite='DISABLED_HasDisabledSuite',
+        passed_count=1,
+        failure_count=4,
+        skipped_count=0,
+        suppressed_count=0,
+        run_disabled=True)
+
+  if SUPPORTS_DEATH_TESTS:
+
+    def testFlag_HasDeathTest(self):
+      """Tests the behavior of fail_fast and death tests."""
+      self.assertFailFastBehavior(
+          test_suite='HasDeathTest',
+          passed_count=1,
+          failure_count=1,
+          skipped_count=3,
+          suppressed_count=0)
+      self.assertNotFailFastBehavior(
+          test_suite='HasDeathTest',
+          passed_count=1,
+          failure_count=4,
+          skipped_count=0,
+          suppressed_count=0)
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/ceph/src/googletest/googletest/test/googletest-failfast-unittest_.cc b/ceph/src/googletest/googletest/test/googletest-failfast-unittest_.cc
new file mode 100644 (file)
index 0000000..0b2c951
--- /dev/null
@@ -0,0 +1,167 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Unit test for Google Test test filters.
+//
+// A user can specify which test(s) in a Google Test program to run via
+// either the GTEST_FILTER environment variable or the --gtest_filter
+// flag.  This is used for testing such functionality.
+//
+// The program will be invoked from a Python unit test.  Don't run it
+// directly.
+
+#include "gtest/gtest.h"
+
+namespace {
+
+// Test HasFixtureTest.
+
+class HasFixtureTest : public testing::Test {};
+
+TEST_F(HasFixtureTest, Test0) {}
+
+TEST_F(HasFixtureTest, Test1) { FAIL() << "Expected failure."; }
+
+TEST_F(HasFixtureTest, Test2) { FAIL() << "Expected failure."; }
+
+TEST_F(HasFixtureTest, Test3) { FAIL() << "Expected failure."; }
+
+TEST_F(HasFixtureTest, Test4) { FAIL() << "Expected failure."; }
+
+// Test HasSimpleTest.
+
+TEST(HasSimpleTest, Test0) {}
+
+TEST(HasSimpleTest, Test1) { FAIL() << "Expected failure."; }
+
+TEST(HasSimpleTest, Test2) { FAIL() << "Expected failure."; }
+
+TEST(HasSimpleTest, Test3) { FAIL() << "Expected failure."; }
+
+TEST(HasSimpleTest, Test4) { FAIL() << "Expected failure."; }
+
+// Test HasDisabledTest.
+
+TEST(HasDisabledTest, Test0) {}
+
+TEST(HasDisabledTest, DISABLED_Test1) { FAIL() << "Expected failure."; }
+
+TEST(HasDisabledTest, Test2) { FAIL() << "Expected failure."; }
+
+TEST(HasDisabledTest, Test3) { FAIL() << "Expected failure."; }
+
+TEST(HasDisabledTest, Test4) { FAIL() << "Expected failure."; }
+
+// Test HasDeathTest
+
+TEST(HasDeathTest, Test0) { EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*"); }
+
+TEST(HasDeathTest, Test1) {
+  EXPECT_DEATH_IF_SUPPORTED(FAIL() << "Expected failure.", ".*");
+}
+
+TEST(HasDeathTest, Test2) {
+  EXPECT_DEATH_IF_SUPPORTED(FAIL() << "Expected failure.", ".*");
+}
+
+TEST(HasDeathTest, Test3) {
+  EXPECT_DEATH_IF_SUPPORTED(FAIL() << "Expected failure.", ".*");
+}
+
+TEST(HasDeathTest, Test4) {
+  EXPECT_DEATH_IF_SUPPORTED(FAIL() << "Expected failure.", ".*");
+}
+
+// Test DISABLED_HasDisabledSuite
+
+TEST(DISABLED_HasDisabledSuite, Test0) {}
+
+TEST(DISABLED_HasDisabledSuite, Test1) { FAIL() << "Expected failure."; }
+
+TEST(DISABLED_HasDisabledSuite, Test2) { FAIL() << "Expected failure."; }
+
+TEST(DISABLED_HasDisabledSuite, Test3) { FAIL() << "Expected failure."; }
+
+TEST(DISABLED_HasDisabledSuite, Test4) { FAIL() << "Expected failure."; }
+
+// Test HasParametersTest
+
+class HasParametersTest : public testing::TestWithParam<int> {};
+
+TEST_P(HasParametersTest, Test1) { FAIL() << "Expected failure."; }
+
+TEST_P(HasParametersTest, Test2) { FAIL() << "Expected failure."; }
+
+INSTANTIATE_TEST_SUITE_P(HasParametersSuite, HasParametersTest,
+                         testing::Values(1, 2));
+
+class MyTestListener : public ::testing::EmptyTestEventListener {
+  void OnTestSuiteStart(const ::testing::TestSuite& test_suite) override {
+    printf("We are in OnTestSuiteStart of %s.\n", test_suite.name());
+  }
+
+  void OnTestStart(const ::testing::TestInfo& test_info) override {
+    printf("We are in OnTestStart of %s.%s.\n", test_info.test_suite_name(),
+           test_info.name());
+  }
+
+  void OnTestPartResult(
+      const ::testing::TestPartResult& test_part_result) override {
+    printf("We are in OnTestPartResult %s:%d.\n", test_part_result.file_name(),
+           test_part_result.line_number());
+  }
+
+  void OnTestEnd(const ::testing::TestInfo& test_info) override {
+    printf("We are in OnTestEnd of %s.%s.\n", test_info.test_suite_name(),
+           test_info.name());
+  }
+
+  void OnTestSuiteEnd(const ::testing::TestSuite& test_suite) override {
+    printf("We are in OnTestSuiteEnd of %s.\n", test_suite.name());
+  }
+};
+
+TEST(HasSkipTest, Test0) { SUCCEED() << "Expected success."; }
+
+TEST(HasSkipTest, Test1) { GTEST_SKIP() << "Expected skip."; }
+
+TEST(HasSkipTest, Test2) { FAIL() << "Expected failure."; }
+
+TEST(HasSkipTest, Test3) { FAIL() << "Expected failure."; }
+
+TEST(HasSkipTest, Test4) { FAIL() << "Expected failure."; }
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  ::testing::InitGoogleTest(&argc, argv);
+  ::testing::UnitTest::GetInstance()->listeners().Append(new MyTestListener());
+  return RUN_ALL_TESTS();
+}
index 15861f75cbe83d909e25f605ec0bc12df9db0ea8..e799d473112ae4fe1f5fe69dbf0f212cdc17b65c 100644 (file)
@@ -58,9 +58,9 @@ else:
 
 EXPECTED_NON_EMPTY = {
     u'tests':
-        24,
+        26,
     u'failures':
-        4,
+        5,
     u'disabled':
         2,
     u'errors':
@@ -158,9 +158,9 @@ EXPECTED_NON_EMPTY = {
         u'name':
             u'SkippedTest',
         u'tests':
-            1,
+            3,
         u'failures':
-            0,
+            1,
         u'disabled':
             0,
         u'errors':
@@ -176,6 +176,32 @@ EXPECTED_NON_EMPTY = {
             u'time': u'*',
             u'timestamp': u'*',
             u'classname': u'SkippedTest'
+        }, {
+            u'name': u'SkippedWithMessage',
+            u'status': u'RUN',
+            u'result': u'SKIPPED',
+            u'time': u'*',
+            u'timestamp': u'*',
+            u'classname': u'SkippedTest'
+        }, {
+            u'name':
+                u'SkippedAfterFailure',
+            u'status':
+                u'RUN',
+            u'result':
+                u'COMPLETED',
+            u'time':
+                u'*',
+            u'timestamp':
+                u'*',
+            u'classname':
+                u'SkippedTest',
+            u'failures': [{
+                u'failure': u'gtest_xml_output_unittest_.cc:*\n'
+                            u'Expected equality of these values:\n'
+                            u'  1\n  2' + STACK_TRACE_TEMPLATE,
+                u'type': u''
+            }]
         }]
     }, {
         u'name':
index 8bc45800b94660f748fb0b270686878f9fbd4269..3fab3b97d8f1a22b641d755ab8359e5b03c92209 100644 (file)
@@ -983,33 +983,42 @@ Stack trace: (omitted)
 
 \e[0;31m[  FAILED  ] \e[mPrintingStrings/ParamTest.Failure/a, where GetParam() = "a"
 \e[0;32m[----------] \e[m3 tests from GoogleTestVerification
-\e[0;32m[ RUN      ] \e[mGoogleTestVerification.UninstantiatedParamaterizedTestSuite<NoTests>
-Paramaterized test suite NoTests is instantiated via INSTANTIATE_TEST_SUITE_P, but no tests are defined via TEST_P . No test cases will run.
+\e[0;32m[ RUN      ] \e[mGoogleTestVerification.UninstantiatedParameterizedTestSuite<NoTests>
+googletest-output-test_.cc:#: Failure
+Parameterized test suite NoTests is instantiated via INSTANTIATE_TEST_SUITE_P, but no tests are defined via TEST_P . No test cases will run.
 
 Ideally, INSTANTIATE_TEST_SUITE_P should only ever be invoked from code that always depend on code that provides TEST_P. Failing to do so is often an indication of dead code, e.g. the last TEST_P was removed but the rest got left behind.
 
 To suppress this error for this test suite, insert the following line (in a non-header) in the namespace it is defined in:
 
 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(NoTests);
-\e[0;32m[       OK ] \e[mGoogleTestVerification.UninstantiatedParamaterizedTestSuite<NoTests>
-\e[0;32m[ RUN      ] \e[mGoogleTestVerification.UninstantiatedParamaterizedTestSuite<DetectNotInstantiatedTest>
-Paramaterized test suite DetectNotInstantiatedTest is defined via TEST_P, but never instantiated. None of the test cases will run. Either no INSTANTIATE_TEST_SUITE_P is provided or the only ones provided expand to nothing.
+Stack trace: (omitted)
+
+\e[0;31m[  FAILED  ] \e[mGoogleTestVerification.UninstantiatedParameterizedTestSuite<NoTests>
+\e[0;32m[ RUN      ] \e[mGoogleTestVerification.UninstantiatedParameterizedTestSuite<DetectNotInstantiatedTest>
+googletest-output-test_.cc:#: Failure
+Parameterized test suite DetectNotInstantiatedTest is defined via TEST_P, but never instantiated. None of the test cases will run. Either no INSTANTIATE_TEST_SUITE_P is provided or the only ones provided expand to nothing.
 
 Ideally, TEST_P definitions should only ever be included as part of binaries that intend to use them. (As opposed to, for example, being placed in a library that may be linked in to get other utilities.)
 
 To suppress this error for this test suite, insert the following line (in a non-header) in the namespace it is defined in:
 
 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DetectNotInstantiatedTest);
-\e[0;32m[       OK ] \e[mGoogleTestVerification.UninstantiatedParamaterizedTestSuite<DetectNotInstantiatedTest>
-\e[0;32m[ RUN      ] \e[mGoogleTestVerification.UninstantiatedTypeParamaterizedTestSuite<DetectNotInstantiatedTypesTest>
-Type paramaterized test suite DetectNotInstantiatedTypesTest is defined via REGISTER_TYPED_TEST_SUITE_P, but never instantiated via INSTANTIATE_TYPED_TEST_SUITE_P. None of the test cases will run.
+Stack trace: (omitted)
+
+\e[0;31m[  FAILED  ] \e[mGoogleTestVerification.UninstantiatedParameterizedTestSuite<DetectNotInstantiatedTest>
+\e[0;32m[ RUN      ] \e[mGoogleTestVerification.UninstantiatedTypeParameterizedTestSuite<DetectNotInstantiatedTypesTest>
+googletest-output-test_.cc:#: Failure
+Type parameterized test suite DetectNotInstantiatedTypesTest is defined via REGISTER_TYPED_TEST_SUITE_P, but never instantiated via INSTANTIATE_TYPED_TEST_SUITE_P. None of the test cases will run.
 
 Ideally, TYPED_TEST_P definitions should only ever be included as part of binaries that intend to use them. (As opposed to, for example, being placed in a library that may be linked in to get other utilities.)
 
-To suppress this error for this test suite, insert the following line (in a non-header) in the namespace it is definedin in:
+To suppress this error for this test suite, insert the following line (in a non-header) in the namespace it is defined in:
 
 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DetectNotInstantiatedTypesTest);
-\e[0;32m[       OK ] \e[mGoogleTestVerification.UninstantiatedTypeParamaterizedTestSuite<DetectNotInstantiatedTypesTest>
+Stack trace: (omitted)
+
+\e[0;31m[  FAILED  ] \e[mGoogleTestVerification.UninstantiatedTypeParameterizedTestSuite<DetectNotInstantiatedTypesTest>
 \e[0;32m[----------] \e[mGlobal test environment tear-down
 BarEnvironment::TearDown() called.
 googletest-output-test_.cc:#: Failure
@@ -1024,8 +1033,8 @@ Expected fatal failure.
 Stack trace: (omitted)
 
 \e[0;32m[==========] \e[m88 tests from 41 test suites ran.
-\e[0;32m[  PASSED  ] \e[m34 tests.
-\e[0;31m[  FAILED  ] \e[m54 tests, listed below:
+\e[0;32m[  PASSED  ] \e[m31 tests.
+\e[0;31m[  FAILED  ] \e[m57 tests, listed below:
 \e[0;31m[  FAILED  ] \e[mNonfatalFailureTest.EscapesStringOperands
 \e[0;31m[  FAILED  ] \e[mNonfatalFailureTest.DiffForLongStrings
 \e[0;31m[  FAILED  ] \e[mFatalFailureTest.FatalFailureInSubroutine
@@ -1080,8 +1089,11 @@ Stack trace: (omitted)
 \e[0;31m[  FAILED  ] \e[mBadDynamicFixture2.Derived
 \e[0;31m[  FAILED  ] \e[mPrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2
 \e[0;31m[  FAILED  ] \e[mPrintingStrings/ParamTest.Failure/a, where GetParam() = "a"
+\e[0;31m[  FAILED  ] \e[mGoogleTestVerification.UninstantiatedParameterizedTestSuite<NoTests>
+\e[0;31m[  FAILED  ] \e[mGoogleTestVerification.UninstantiatedParameterizedTestSuite<DetectNotInstantiatedTest>
+\e[0;31m[  FAILED  ] \e[mGoogleTestVerification.UninstantiatedTypeParameterizedTestSuite<DetectNotInstantiatedTypesTest>
 
-54 FAILED TESTS
+57 FAILED TESTS
 \e[0;33m  YOU HAVE 1 DISABLED TEST
 
 \e[mNote: Google Test filter = FatalFailureTest.*:LoggingTest.*
index 76af5bca27c91a33275e37490379e45eec0ed682..b32b8f3cdbd52c7d81a0e6c013b8e83699ed2535 100644 (file)
@@ -476,63 +476,6 @@ TEST(GtestFailAtTest, MessageContainsSpecifiedFileAndLineNumber) {
   GTEST_FAIL_AT("foo.cc", 42) << "Expected fatal failure in foo.cc";
 }
 
-#if GTEST_IS_THREADSAFE
-
-// A unary function that may die.
-void DieIf(bool should_die) {
-  GTEST_CHECK_(!should_die) << " - death inside DieIf().";
-}
-
-// Tests running death tests in a multi-threaded context.
-
-// Used for coordination between the main and the spawn thread.
-struct SpawnThreadNotifications {
-  SpawnThreadNotifications() {}
-
-  Notification spawn_thread_started;
-  Notification spawn_thread_ok_to_terminate;
-
- private:
-  GTEST_DISALLOW_COPY_AND_ASSIGN_(SpawnThreadNotifications);
-};
-
-// The function to be executed in the thread spawn by the
-// MultipleThreads test (below).
-static void ThreadRoutine(SpawnThreadNotifications* notifications) {
-  // Signals the main thread that this thread has started.
-  notifications->spawn_thread_started.Notify();
-
-  // Waits for permission to finish from the main thread.
-  notifications->spawn_thread_ok_to_terminate.WaitForNotification();
-}
-
-// This is a death-test test, but it's not named with a DeathTest
-// suffix.  It starts threads which might interfere with later
-// death tests, so it must run after all other death tests.
-class DeathTestAndMultiThreadsTest : public testing::Test {
- protected:
-  // Starts a thread and waits for it to begin.
-  void SetUp() override {
-    thread_.reset(new ThreadWithParam<SpawnThreadNotifications*>(
-        &ThreadRoutine, &notifications_, nullptr));
-    notifications_.spawn_thread_started.WaitForNotification();
-  }
-  // Tells the thread to finish, and reaps it.
-  // Depending on the version of the thread library in use,
-  // a manager thread might still be left running that will interfere
-  // with later death tests.  This is unfortunate, but this class
-  // cleans up after itself as best it can.
-  void TearDown() override {
-    notifications_.spawn_thread_ok_to_terminate.Notify();
-  }
-
- private:
-  SpawnThreadNotifications notifications_;
-  std::unique_ptr<ThreadWithParam<SpawnThreadNotifications*> > thread_;
-};
-
-#endif  // GTEST_IS_THREADSAFE
-
 // The MixedUpTestSuiteTest test case verifies that Google Test will fail a
 // test if it uses a different fixture class than what other tests in
 // the same test case use.  It deliberately contains two fixture
index 6ba89654d66fa6e2845991d345aeb80220ccb787..c852220e27ed21303d1c4a2e89558806fcb7696e 100644 (file)
@@ -490,16 +490,17 @@ TEST(CombineTest, CombineWithMaxNumberOfParameters) {
 class NonDefaultConstructAssignString {
  public:
   NonDefaultConstructAssignString(const std::string& s) : str_(s) {}
+  NonDefaultConstructAssignString() = delete;
+  NonDefaultConstructAssignString(const NonDefaultConstructAssignString&) =
+      default;
+  NonDefaultConstructAssignString& operator=(
+      const NonDefaultConstructAssignString&) = delete;
+  ~NonDefaultConstructAssignString() = default;
 
   const std::string& str() const { return str_; }
 
  private:
   std::string str_;
-
-  // Not default constructible
-  NonDefaultConstructAssignString();
-  // Not assignable
-  void operator=(const NonDefaultConstructAssignString&);
 };
 
 TEST(CombineTest, NonDefaultConstructAssign) {
index 60d637c32f63369ff7c6eb9d25e12b11504193f3..4a87df0b82892eb8498c0e9da38f7f0b30c087b9 100644 (file)
@@ -90,10 +90,10 @@ TEST(IsXDigitTest, ReturnsFalseForWideNonAscii) {
 
 class Base {
  public:
-  // Copy constructor and assignment operator do exactly what we need, so we
-  // use them.
   Base() : member_(0) {}
   explicit Base(int n) : member_(n) {}
+  Base(const Base&) = default;
+  Base& operator=(const Base&) = default;
   virtual ~Base() {}
   int member() { return member_; }
 
@@ -201,6 +201,13 @@ TEST(ImplicitCastTest, CanUseImplicitConstructor) {
   EXPECT_TRUE(converted);
 }
 
+// The following code intentionally tests a suboptimal syntax.
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-else"
+#pragma GCC diagnostic ignored "-Wempty-body"
+#pragma GCC diagnostic ignored "-Wpragmas"
+#endif
 TEST(GtestCheckSyntaxTest, BehavesLikeASingleStatement) {
   if (AlwaysFalse())
     GTEST_CHECK_(false) << "This should never be executed; "
@@ -216,6 +223,9 @@ TEST(GtestCheckSyntaxTest, BehavesLikeASingleStatement) {
   else
     GTEST_CHECK_(true) << "";
 }
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 TEST(GtestCheckSyntaxTest, WorksWithSwitch) {
   switch (0) {
@@ -1180,8 +1190,6 @@ class DestructorTracker {
     return DestructorCall::List().size() - 1;
   }
   const size_t index_;
-
-  GTEST_DISALLOW_ASSIGN_(DestructorTracker);
 };
 
 typedef ThreadLocal<DestructorTracker>* ThreadParam;
index bf37fb453c13b60bc13e7f8c650f5296853025b5..bf1e0b598d85367bf429d77cf88f0a430ee35394 100644 (file)
@@ -90,6 +90,18 @@ class BiggestIntConvertible {
   operator ::testing::internal::BiggestInt() const { return 42; }
 };
 
+// A parent class with two child classes. The parent and one of the kids have
+// stream operators.
+class ParentClass {};
+class ChildClassWithStreamOperator : public ParentClass {};
+class ChildClassWithoutStreamOperator : public ParentClass {};
+static void operator<<(std::ostream& os, const ParentClass&) {
+  os << "ParentClass";
+}
+static void operator<<(std::ostream& os, const ChildClassWithStreamOperator&) {
+  os << "ChildClassWithStreamOperator";
+}
+
 // A user-defined unprintable class template in the global namespace.
 template <typename T>
 class UnprintableTemplateInGlobal {
@@ -177,6 +189,17 @@ inline ::std::ostream& operator<<(::std::ostream& os,
   return os << "StreamableTemplateInFoo: " << x.value();
 }
 
+// A user-defined streamable type in a user namespace whose operator<< is
+// templated on the type of the output stream.
+struct TemplatedStreamableInFoo {};
+
+template <typename OutputStream>
+OutputStream& operator<<(OutputStream& os,
+                         const TemplatedStreamableInFoo& /*ts*/) {
+  os << "TemplatedStreamableInFoo";
+  return os;
+}
+
 // A user-defined streamable but recursivly-defined container type in
 // a user namespace, it mimics therefore std::filesystem::path or
 // boost::filesystem::path.
@@ -310,6 +333,20 @@ TEST(PrintCharTest, UnsignedChar) {
             Print(static_cast<unsigned char>('b')));
 }
 
+TEST(PrintCharTest, Char16) {
+  EXPECT_EQ("U+0041", Print(u'A'));
+}
+
+TEST(PrintCharTest, Char32) {
+  EXPECT_EQ("U+0041", Print(U'A'));
+}
+
+#ifdef __cpp_char8_t
+TEST(PrintCharTest, Char8) {
+  EXPECT_EQ("U+0041", Print(u8'A'));
+}
+#endif
+
 // Tests printing other simple, built-in types.
 
 // bool.
@@ -359,6 +396,20 @@ TEST(PrintBuiltInTypeTest, Integer) {
             Print(std::numeric_limits<uint64_t>::max()));  // uint64
   EXPECT_EQ("-9223372036854775808",
             Print(std::numeric_limits<int64_t>::min()));  // int64
+#ifdef __cpp_char8_t
+  EXPECT_EQ("U+0000",
+            Print(std::numeric_limits<char8_t>::min()));  // char8_t
+  EXPECT_EQ("U+00FF",
+            Print(std::numeric_limits<char8_t>::max()));  // char8_t
+#endif
+  EXPECT_EQ("U+0000",
+            Print(std::numeric_limits<char16_t>::min()));  // char16_t
+  EXPECT_EQ("U+FFFF",
+            Print(std::numeric_limits<char16_t>::max()));  // char16_t
+  EXPECT_EQ("U+0000",
+            Print(std::numeric_limits<char32_t>::min()));  // char32_t
+  EXPECT_EQ("U+FFFFFFFF",
+            Print(std::numeric_limits<char32_t>::max()));  // char32_t
 }
 
 // Size types.
@@ -485,6 +536,56 @@ TEST(PrintCharPointerTest, ConstUnsignedChar) {
   EXPECT_EQ("NULL", Print(p));
 }
 
+#ifdef __cpp_char8_t
+// char8_t*
+TEST(PrintCharPointerTest, Char8) {
+  char8_t* p = reinterpret_cast<char8_t*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = nullptr;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// const char8_t*
+TEST(PrintCharPointerTest, ConstChar8) {
+  const char8_t* p = reinterpret_cast<const char8_t*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = nullptr;
+  EXPECT_EQ("NULL", Print(p));
+}
+#endif
+
+// char16_t*
+TEST(PrintCharPointerTest, Char16) {
+  char16_t* p = reinterpret_cast<char16_t*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = nullptr;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// const char16_t*
+TEST(PrintCharPointerTest, ConstChar16) {
+  const char16_t* p = reinterpret_cast<const char16_t*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = nullptr;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// char32_t*
+TEST(PrintCharPointerTest, Char32) {
+  char32_t* p = reinterpret_cast<char32_t*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = nullptr;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// const char32_t*
+TEST(PrintCharPointerTest, ConstChar32) {
+  const char32_t* p = reinterpret_cast<const char32_t*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = nullptr;
+  EXPECT_EQ("NULL", Print(p));
+}
+
 // Tests printing pointers to simple, built-in types.
 
 // bool*.
@@ -643,6 +744,45 @@ TEST(PrintArrayTest, WConstCharArrayWithTerminatingNul) {
   EXPECT_EQ("L\"\\0Hi\"", PrintArrayHelper(a));
 }
 
+#ifdef __cpp_char8_t
+// char8_t array.
+TEST(PrintArrayTest, Char8Array) {
+  const char8_t a[] = u8"Hello, world!";
+  EXPECT_EQ(
+      "{ U+0048, U+0065, U+006C, U+006C, U+006F, U+002C, U+0020, U+0077, "
+      "U+006F, U+0072, U+006C, U+0064, U+0021, U+0000 }",
+      PrintArrayHelper(a));
+}
+#endif
+
+// char16_t array.
+#ifdef _MSC_VER
+// TODO(b/173029407): Figure out why this doesn't work under MSVC.
+TEST(PrintArrayTest, DISABLED_Char16Array) {
+#else
+TEST(PrintArrayTest, Char16Array) {
+#endif
+  const char16_t a[] = u"Hello, 世界";
+  EXPECT_EQ(
+      "{ U+0048, U+0065, U+006C, U+006C, U+006F, U+002C, U+0020, U+4E16, "
+      "U+754C, U+0000 }",
+      PrintArrayHelper(a));
+}
+
+// char32_t array.
+#ifdef _MSC_VER
+// TODO(b/173029407): Figure out why this doesn't work under MSVC.
+TEST(PrintArrayTest, DISABLED_Char32Array) {
+#else
+TEST(PrintArrayTest, Char32Array) {
+#endif
+  const char32_t a[] = U"Hello, 世界";
+  EXPECT_EQ(
+      "{ U+0048, U+0065, U+006C, U+006C, U+006F, U+002C, U+0020, U+4E16, "
+      "U+754C, U+0000 }",
+      PrintArrayHelper(a));
+}
+
 // Array of objects.
 TEST(PrintArrayTest, ObjectArray) {
   std::string a[3] = {"Hi", "Hello", "Ni hao"};
@@ -702,6 +842,45 @@ TEST(PrintWideStringTest, StringAmbiguousHex) {
 }
 #endif  // GTEST_HAS_STD_WSTRING
 
+#ifdef __cpp_char8_t
+TEST(PrintStringTest, U8String) {
+  std::u8string str = u8"Hello, world!";
+  EXPECT_EQ(str, str);  // Verify EXPECT_EQ compiles with this type.
+  EXPECT_EQ(
+      "{ U+0048, U+0065, U+006C, U+006C, U+006F, U+002C, U+0020, U+0077, "
+      "U+006F, U+0072, U+006C, U+0064, U+0021 }",
+      Print(str));
+}
+#endif
+
+#ifdef _MSC_VER
+// TODO(b/173029407): Figure out why this doesn't work under MSVC.
+TEST(PrintStringTest, DISABLED_U16String) {
+#else
+TEST(PrintStringTest, U16String) {
+#endif
+  std::u16string str = u"Hello, 世界";
+  EXPECT_EQ(str, str);  // Verify EXPECT_EQ compiles with this type.
+  EXPECT_EQ(
+      "{ U+0048, U+0065, U+006C, U+006C, U+006F, U+002C, U+0020, U+4E16, "
+      "U+754C }",
+      Print(str));
+}
+
+#ifdef _MSC_VER
+// TODO(b/173029407): Figure out why this doesn't work under MSVC.
+TEST(PrintStringTest, DISABLED_U32String) {
+#else
+TEST(PrintStringTest, U32String) {
+#endif
+  std::u32string str = U"Hello, 世界";
+  EXPECT_EQ(str, str);  // Verify EXPECT_EQ compiles with this type.
+  EXPECT_EQ(
+      "{ U+0048, U+0065, U+006C, U+006C, U+006F, U+002C, U+0020, U+4E16, "
+      "U+754C }",
+      Print(str));
+}
+
 // Tests printing types that support generic streaming (i.e. streaming
 // to std::basic_ostream<Char, CharTraits> for any valid Char and
 // CharTraits types).
@@ -760,22 +939,22 @@ TEST(PrintTypeWithGenericStreamingTest, TypeImplicitlyConvertible) {
   EXPECT_EQ("AllowsGenericStreamingAndImplicitConversionTemplate", Print(a));
 }
 
-#if GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_STRING_VIEW
 
-// Tests printing ::absl::string_view.
+// Tests printing internal::StringView.
 
 TEST(PrintStringViewTest, SimpleStringView) {
-  const ::absl::string_view sp = "Hello";
+  const internal::StringView sp = "Hello";
   EXPECT_EQ("\"Hello\"", Print(sp));
 }
 
 TEST(PrintStringViewTest, UnprintableCharacters) {
   const char str[] = "NUL (\0) and \r\t";
-  const ::absl::string_view sp(str, sizeof(str) - 1);
+  const internal::StringView sp(str, sizeof(str) - 1);
   EXPECT_EQ("\"NUL (\\0) and \\r\\t\"", Print(sp));
 }
 
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_STRING_VIEW
 
 // Tests printing STL containers.
 
@@ -1065,6 +1244,20 @@ TEST(PrintStreamableTypeTest, TemplateTypeInUserNamespace) {
             Print(::foo::StreamableTemplateInFoo<int>()));
 }
 
+TEST(PrintStreamableTypeTest, TypeInUserNamespaceWithTemplatedStreamOperator) {
+  EXPECT_EQ("TemplatedStreamableInFoo",
+            Print(::foo::TemplatedStreamableInFoo()));
+}
+
+TEST(PrintStreamableTypeTest, SubclassUsesSuperclassStreamOperator) {
+  ParentClass parent;
+  ChildClassWithStreamOperator child_stream;
+  ChildClassWithoutStreamOperator child_no_stream;
+  EXPECT_EQ("ParentClass", Print(parent));
+  EXPECT_EQ("ChildClassWithStreamOperator", Print(child_stream));
+  EXPECT_EQ("ParentClass", Print(child_no_stream));
+}
+
 // Tests printing a user-defined recursive container type that has a <<
 // operator.
 TEST(PrintStreamableTypeTest, PathLikeInUserNamespace) {
@@ -1531,32 +1724,65 @@ TEST(UniversalTersePrintTupleFieldsToStringsTestWithStd, PrintsTersely) {
   EXPECT_EQ("\"a\"", result[1]);
 }
 
-#if GTEST_HAS_ABSL
+#if GTEST_INTERNAL_HAS_ANY
+class PrintAnyTest : public ::testing::Test {
+ protected:
+  template <typename T>
+  static std::string ExpectedTypeName() {
+#if GTEST_HAS_RTTI
+    return internal::GetTypeName<T>();
+#else
+    return "<unknown_type>";
+#endif  // GTEST_HAS_RTTI
+  }
+};
+
+TEST_F(PrintAnyTest, Empty) {
+  internal::Any any;
+  EXPECT_EQ("no value", PrintToString(any));
+}
+
+TEST_F(PrintAnyTest, NonEmpty) {
+  internal::Any any;
+  constexpr int val1 = 10;
+  const std::string val2 = "content";
+
+  any = val1;
+  EXPECT_EQ("value of type " + ExpectedTypeName<int>(), PrintToString(any));
+
+  any = val2;
+  EXPECT_EQ("value of type " + ExpectedTypeName<std::string>(),
+            PrintToString(any));
+}
+#endif  // GTEST_INTERNAL_HAS_ANY
 
+#if GTEST_INTERNAL_HAS_OPTIONAL
 TEST(PrintOptionalTest, Basic) {
-  absl::optional<int> value;
+  internal::Optional<int> value;
   EXPECT_EQ("(nullopt)", PrintToString(value));
   value = {7};
   EXPECT_EQ("(7)", PrintToString(value));
-  EXPECT_EQ("(1.1)", PrintToString(absl::optional<double>{1.1}));
-  EXPECT_EQ("(\"A\")", PrintToString(absl::optional<std::string>{"A"}));
+  EXPECT_EQ("(1.1)", PrintToString(internal::Optional<double>{1.1}));
+  EXPECT_EQ("(\"A\")", PrintToString(internal::Optional<std::string>{"A"}));
 }
+#endif  // GTEST_INTERNAL_HAS_OPTIONAL
 
+#if GTEST_INTERNAL_HAS_VARIANT
 struct NonPrintable {
   unsigned char contents = 17;
 };
 
 TEST(PrintOneofTest, Basic) {
-  using Type = absl::variant<int, StreamableInGlobal, NonPrintable>;
-  EXPECT_EQ("('int' with value 7)", PrintToString(Type(7)));
-  EXPECT_EQ("('StreamableInGlobal' with value StreamableInGlobal)",
+  using Type = internal::Variant<int, StreamableInGlobal, NonPrintable>;
+  EXPECT_EQ("('int(index = 0)' with value 7)", PrintToString(Type(7)));
+  EXPECT_EQ("('StreamableInGlobal(index = 1)' with value StreamableInGlobal)",
             PrintToString(Type(StreamableInGlobal{})));
   EXPECT_EQ(
-      "('testing::gtest_printers_test::NonPrintable' with value 1-byte object "
-      "<11>)",
+      "('testing::gtest_printers_test::NonPrintable(index = 2)' with value "
+      "1-byte object <11>)",
       PrintToString(Type(NonPrintable{})));
 }
-#endif  // GTEST_HAS_ABSL
+#endif  // GTEST_INTERNAL_HAS_VARIANT
 namespace {
 class string_ref;
 
index c1fc106686e242d233f1090606c22a60823c2507..4505663ae433c4fd53205c160fbc2ab3e8e66ed4 100644 (file)
@@ -82,7 +82,7 @@ class TestNamePrinter : public EmptyTestEventListener {
   }
 
   void OnTestStart(const TestInfo& test_info) override {
-    printf("%s.%s\n", test_info.test_case_name(), test_info.name());
+    printf("%s.%s\n", test_info.test_suite_name(), test_info.name());
   }
 };
 
diff --git a/ceph/src/googletest/googletest/test/googletest-test2_test.cc b/ceph/src/googletest/googletest/test/googletest-test2_test.cc
deleted file mode 100644 (file)
index 2e425da..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Tests for Google Test itself.  This verifies that the basic constructs of
-// Google Test work.
-
-#include "gtest/gtest.h"
-#include "googletest-param-test-test.h"
-
-using ::testing::Values;
-using ::testing::internal::ParamGenerator;
-
-// Tests that generators defined in a different translation unit
-// are functional. The test using extern_gen_2 is defined
-// in googletest-param-test-test.cc.
-ParamGenerator<int> extern_gen_2 = Values(33);
-
-// Tests that a parameterized test case can be defined in one translation unit
-// and instantiated in another. The test is defined in
-// googletest-param-test-test.cc and ExternalInstantiationTest fixture class is
-// defined in gtest-param-test_test.h.
-INSTANTIATE_TEST_SUITE_P(MultiplesOf33,
-                         ExternalInstantiationTest,
-                         Values(33, 66));
-
-// Tests that a parameterized test case can be instantiated
-// in multiple translation units. Another instantiation is defined
-// in googletest-param-test-test.cc and
-// InstantiationInMultipleTranslationUnitsTest fixture is defined in
-// gtest-param-test_test.h
-INSTANTIATE_TEST_SUITE_P(Sequence2,
-                         InstantiationInMultipleTranslationUnitsTest,
-                         Values(42*3, 42*4, 42*5));
-
index 0c1f660fb55c4128fa12ac656870b7aef3ef47f3..de1db0cb9868881563c8b2ef3cd87f244e15d79d 100644 (file)
@@ -193,13 +193,13 @@ TYPED_TEST(TypedTestWithNames, TestSuiteName) {
   if (std::is_same<TypeParam, char>::value) {
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
-                     ->test_case_name(),
+                     ->test_suite_name(),
                  "TypedTestWithNames/char0");
   }
   if (std::is_same<TypeParam, int>::value) {
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
-                     ->test_case_name(),
+                     ->test_suite_name(),
                  "TypedTestWithNames/int1");
   }
 }
@@ -315,13 +315,13 @@ TYPED_TEST_P(TypeParametrizedTestWithNames, TestSuiteName) {
   if (std::is_same<TypeParam, char>::value) {
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
-                     ->test_case_name(),
+                     ->test_suite_name(),
                  "CustomName/TypeParametrizedTestWithNames/parChar0");
   }
   if (std::is_same<TypeParam, int>::value) {
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
-                     ->test_case_name(),
+                     ->test_suite_name(),
                  "CustomName/TypeParametrizedTestWithNames/parInt1");
   }
 }
index 7d2d8cc959b6281cf995b9a45c597d439445b4e8..25a8afb20cc80d4c59824914297c64f2d7f88d77 100644 (file)
@@ -55,8 +55,8 @@ class UnitTestHelper {
   // name.  The caller is responsible for deleting the array.
   static TestSuite const** GetSortedTestSuites() {
     UnitTest& unit_test = *UnitTest::GetInstance();
-    auto const** const test_suites =
-        new const TestSuite*[unit_test.total_test_suite_count()];
+    auto const** const test_suites = new const TestSuite*[static_cast<size_t>(
+      unit_test.total_test_suite_count())];
 
     for (int i = 0; i < unit_test.total_test_suite_count(); ++i)
       test_suites[i] = unit_test.GetTestSuite(i);
@@ -83,8 +83,8 @@ class UnitTestHelper {
   // sorted by the test name.  The caller is responsible for deleting the
   // array.
   static TestInfo const** GetSortedTests(const TestSuite* test_suite) {
-    TestInfo const** const tests =
-        new const TestInfo*[test_suite->total_test_count()];
+    TestInfo const** const tests = new const TestInfo*[static_cast<size_t>(
+      test_suite->total_test_count())];
 
     for (int i = 0; i < test_suite->total_test_count(); ++i)
       tests[i] = test_suite->GetTestInfo(i);
index 582d24c2dcce894538aa63ccbd6120bdd4b350a0..609615e80bf744103060bc7e059dd2172fc16c09 100755 (executable)
@@ -68,6 +68,7 @@ HELP_REGEX = re.compile(
     FLAG_PREFIX + r'shuffle.*' +
     FLAG_PREFIX + r'random_seed=.*' +
     FLAG_PREFIX + r'color=.*' +
+    FLAG_PREFIX + r'brief.*' +
     FLAG_PREFIX + r'print_time.*' +
     FLAG_PREFIX + r'output=.*' +
     FLAG_PREFIX + r'break_on_failure.*' +
index 3bba7ea2cfd37cad5509f40f8e8b0022706be784..b882126e11c463cca362a16f697d832a30e7f4e1 100644 (file)
@@ -46,16 +46,42 @@ GTEST_LIST_TESTS_FLAG = '--gtest_list_tests'
 GTEST_OUTPUT_FLAG = '--gtest_output'
 
 EXPECTED_XML = """<\?xml version="1.0" encoding="UTF-8"\?>
-<testsuites tests="2" name="AllTests">
+<testsuites tests="16" name="AllTests">
   <testsuite name="FooTest" tests="2">
     <testcase name="Test1" file=".*gtest_list_output_unittest_.cc" line="43" />
     <testcase name="Test2" file=".*gtest_list_output_unittest_.cc" line="45" />
   </testsuite>
+  <testsuite name="FooTestFixture" tests="2">
+    <testcase name="Test3" file=".*gtest_list_output_unittest_.cc" line="48" />
+    <testcase name="Test4" file=".*gtest_list_output_unittest_.cc" line="49" />
+  </testsuite>
+  <testsuite name="TypedTest/0" tests="2">
+    <testcase name="Test7" type_param="int" file=".*gtest_list_output_unittest_.cc" line="61" />
+    <testcase name="Test8" type_param="int" file=".*gtest_list_output_unittest_.cc" line="62" />
+  </testsuite>
+  <testsuite name="TypedTest/1" tests="2">
+    <testcase name="Test7" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="61" />
+    <testcase name="Test8" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="62" />
+  </testsuite>
+  <testsuite name="Single/TypeParameterizedTestSuite/0" tests="2">
+    <testcase name="Test9" type_param="int" file=".*gtest_list_output_unittest_.cc" line="69" />
+    <testcase name="Test10" type_param="int" file=".*gtest_list_output_unittest_.cc" line="70" />
+  </testsuite>
+  <testsuite name="Single/TypeParameterizedTestSuite/1" tests="2">
+    <testcase name="Test9" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="69" />
+    <testcase name="Test10" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="70" />
+  </testsuite>
+  <testsuite name="ValueParam/ValueParamTest" tests="4">
+    <testcase name="Test5/0" value_param="33" file=".*gtest_list_output_unittest_.cc" line="52" />
+    <testcase name="Test5/1" value_param="42" file=".*gtest_list_output_unittest_.cc" line="52" />
+    <testcase name="Test6/0" value_param="33" file=".*gtest_list_output_unittest_.cc" line="53" />
+    <testcase name="Test6/1" value_param="42" file=".*gtest_list_output_unittest_.cc" line="53" />
+  </testsuite>
 </testsuites>
 """
 
 EXPECTED_JSON = """{
-  "tests": 2,
+  "tests": 16,
   "name": "AllTests",
   "testsuites": \[
     {
@@ -73,6 +99,124 @@ EXPECTED_JSON = """{
           "line": 45
         }
       \]
+    },
+    {
+      "name": "FooTestFixture",
+      "tests": 2,
+      "testsuite": \[
+        {
+          "name": "Test3",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 48
+        },
+        {
+          "name": "Test4",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 49
+        }
+      \]
+    },
+    {
+      "name": "TypedTest\\\\/0",
+      "tests": 2,
+      "testsuite": \[
+        {
+          "name": "Test7",
+          "type_param": "int",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 61
+        },
+        {
+          "name": "Test8",
+          "type_param": "int",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 62
+        }
+      \]
+    },
+    {
+      "name": "TypedTest\\\\/1",
+      "tests": 2,
+      "testsuite": \[
+        {
+          "name": "Test7",
+          "type_param": "bool",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 61
+        },
+        {
+          "name": "Test8",
+          "type_param": "bool",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 62
+        }
+      \]
+    },
+    {
+      "name": "Single\\\\/TypeParameterizedTestSuite\\\\/0",
+      "tests": 2,
+      "testsuite": \[
+        {
+          "name": "Test9",
+          "type_param": "int",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 69
+        },
+        {
+          "name": "Test10",
+          "type_param": "int",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 70
+        }
+      \]
+    },
+    {
+      "name": "Single\\\\/TypeParameterizedTestSuite\\\\/1",
+      "tests": 2,
+      "testsuite": \[
+        {
+          "name": "Test9",
+          "type_param": "bool",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 69
+        },
+        {
+          "name": "Test10",
+          "type_param": "bool",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 70
+        }
+      \]
+    },
+    {
+      "name": "ValueParam\\\\/ValueParamTest",
+      "tests": 4,
+      "testsuite": \[
+        {
+          "name": "Test5\\\\/0",
+          "value_param": "33",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 52
+        },
+        {
+          "name": "Test5\\\\/1",
+          "value_param": "42",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 52
+        },
+        {
+          "name": "Test6\\\\/0",
+          "value_param": "33",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 53
+        },
+        {
+          "name": "Test6\\\\/1",
+          "value_param": "42",
+          "file": ".*gtest_list_output_unittest_.cc",
+          "line": 53
+        }
+      \]
     }
   \]
 }
@@ -114,8 +258,9 @@ class GTestListTestsOutputUnitTest(gtest_test_utils.TestCase):
     p = gtest_test_utils.Subprocess(
         command, env=environ_copy, working_dir=gtest_test_utils.GetTempDir())
 
-    self.assert_(p.exited)
-    self.assertEquals(0, p.exit_code)
+    self.assertTrue(p.exited)
+    self.assertEqual(0, p.exit_code)
+    self.assertTrue(os.path.isfile(file_path))
     with open(file_path) as f:
       result = f.read()
     return result
@@ -128,7 +273,7 @@ class GTestListTestsOutputUnitTest(gtest_test_utils.TestCase):
     for actual_line in actual_lines:
       expected_line = expected_lines[line_count]
       expected_line_re = re.compile(expected_line.strip())
-      self.assert_(
+      self.assertTrue(
           expected_line_re.match(actual_line.strip()),
           ('actual output of "%s",\n'
            'which does not match expected regex of "%s"\n'
index b1c7b4de3461fc1645f411b71f9e37f8224fd8a6..2eea3ebd832fcfc7062cdef401c751e89364f4d9 100644 (file)
@@ -44,6 +44,36 @@ TEST(FooTest, Test1) {}
 
 TEST(FooTest, Test2) {}
 
+class FooTestFixture : public ::testing::Test {};
+TEST_F(FooTestFixture, Test3) {}
+TEST_F(FooTestFixture, Test4) {}
+
+class ValueParamTest : public ::testing::TestWithParam<int> {};
+TEST_P(ValueParamTest, Test5) {}
+TEST_P(ValueParamTest, Test6) {}
+INSTANTIATE_TEST_SUITE_P(ValueParam, ValueParamTest, ::testing::Values(33, 42));
+
+#if GTEST_HAS_TYPED_TEST
+template <typename T>
+class TypedTest : public ::testing::Test {};
+typedef testing::Types<int, bool> TypedTestTypes;
+TYPED_TEST_SUITE(TypedTest, TypedTestTypes);
+TYPED_TEST(TypedTest, Test7) {}
+TYPED_TEST(TypedTest, Test8) {}
+#endif
+
+#if GTEST_HAS_TYPED_TEST_P
+template <typename T>
+class TypeParameterizedTestSuite : public ::testing::Test {};
+TYPED_TEST_SUITE_P(TypeParameterizedTestSuite);
+TYPED_TEST_P(TypeParameterizedTestSuite, Test9) {}
+TYPED_TEST_P(TypeParameterizedTestSuite, Test10) {}
+REGISTER_TYPED_TEST_SUITE_P(TypeParameterizedTestSuite, Test9, Test10);
+typedef testing::Types<int, bool> TypeParameterizedTestSuiteTypes;  // NOLINT
+INSTANTIATE_TYPED_TEST_SUITE_P(Single, TypeParameterizedTestSuite,
+                               TypeParameterizedTestSuiteTypes);
+#endif
+
 int main(int argc, char **argv) {
   ::testing::InitGoogleTest(&argc, argv);
 
index ef9363c3694539833826ecf670cdcd159a28a585..d0c24466a4b7e3e623b5af495b8e26eaa8a9c864 100755 (executable)
@@ -217,7 +217,6 @@ class Subprocess:
       following attributes:
         terminated_by_signal   True if and only if the child process has been
                                terminated by a signal.
-        signal                 Sygnal that terminated the child process.
         exited                 True if and only if the child process exited
                                normally.
         exit_code              The code with which the child process exited.
@@ -289,10 +288,9 @@ class Subprocess:
       else:  # os.WIFEXITED(ret_code) should return True here.
         self._return_code = os.WEXITSTATUS(ret_code)
 
-    if self._return_code < 0:
+    if bool(self._return_code & 0x80000000):
       self.terminated_by_signal = True
       self.exited = False
-      self.signal = -self._return_code
     else:
       self.terminated_by_signal = False
       self.exited = True
index 06c5e671e45acf63549eeb9b96a28b590dc3a02b..ac0f179a50442e90ed15f6cf15fe550052828e22 100644 (file)
 // code once "gtest.h" has been #included.
 // Do not move it after other gtest #includes.
 TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) {
-  bool dummy = testing::GTEST_FLAG(also_run_disabled_tests)
-      || testing::GTEST_FLAG(break_on_failure)
-      || testing::GTEST_FLAG(catch_exceptions)
-      || testing::GTEST_FLAG(color) != "unknown"
-      || testing::GTEST_FLAG(filter) != "unknown"
-      || testing::GTEST_FLAG(list_tests)
-      || testing::GTEST_FLAG(output) != "unknown"
-      || testing::GTEST_FLAG(print_time)
-      || testing::GTEST_FLAG(random_seed)
-      || testing::GTEST_FLAG(repeat) > 0
-      || testing::GTEST_FLAG(show_internal_stack_frames)
-      || testing::GTEST_FLAG(shuffle)
-      || testing::GTEST_FLAG(stack_trace_depth) > 0
-      || testing::GTEST_FLAG(stream_result_to) != "unknown"
-      || testing::GTEST_FLAG(throw_on_failure);
+  bool dummy = testing::GTEST_FLAG(also_run_disabled_tests) ||
+               testing::GTEST_FLAG(break_on_failure) ||
+               testing::GTEST_FLAG(catch_exceptions) ||
+               testing::GTEST_FLAG(color) != "unknown" ||
+               testing::GTEST_FLAG(fail_fast) ||
+               testing::GTEST_FLAG(filter) != "unknown" ||
+               testing::GTEST_FLAG(list_tests) ||
+               testing::GTEST_FLAG(output) != "unknown" ||
+               testing::GTEST_FLAG(brief) || testing::GTEST_FLAG(print_time) ||
+               testing::GTEST_FLAG(random_seed) ||
+               testing::GTEST_FLAG(repeat) > 0 ||
+               testing::GTEST_FLAG(show_internal_stack_frames) ||
+               testing::GTEST_FLAG(shuffle) ||
+               testing::GTEST_FLAG(stack_trace_depth) > 0 ||
+               testing::GTEST_FLAG(stream_result_to) != "unknown" ||
+               testing::GTEST_FLAG(throw_on_failure);
   EXPECT_TRUE(dummy || !dummy);  // Suppresses warning that dummy is unused.
 }
 
@@ -63,6 +64,7 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) {
 #include <cstdint>
 #include <map>
 #include <ostream>
+#include <string>
 #include <type_traits>
 #include <unordered_set>
 #include <vector>
@@ -202,9 +204,11 @@ using testing::GTEST_FLAG(break_on_failure);
 using testing::GTEST_FLAG(catch_exceptions);
 using testing::GTEST_FLAG(color);
 using testing::GTEST_FLAG(death_test_use_fork);
+using testing::GTEST_FLAG(fail_fast);
 using testing::GTEST_FLAG(filter);
 using testing::GTEST_FLAG(list_tests);
 using testing::GTEST_FLAG(output);
+using testing::GTEST_FLAG(brief);
 using testing::GTEST_FLAG(print_time);
 using testing::GTEST_FLAG(random_seed);
 using testing::GTEST_FLAG(repeat);
@@ -215,17 +219,18 @@ using testing::GTEST_FLAG(stream_result_to);
 using testing::GTEST_FLAG(throw_on_failure);
 using testing::IsNotSubstring;
 using testing::IsSubstring;
+using testing::kMaxStackTraceDepth;
 using testing::Message;
 using testing::ScopedFakeTestPartResultReporter;
 using testing::StaticAssertTypeEq;
 using testing::Test;
-using testing::TestCase;
 using testing::TestEventListeners;
 using testing::TestInfo;
 using testing::TestPartResult;
 using testing::TestPartResultArray;
 using testing::TestProperty;
 using testing::TestResult;
+using testing::TestSuite;
 using testing::TimeInMillis;
 using testing::UnitTest;
 using testing::internal::AlwaysFalse;
@@ -241,7 +246,6 @@ using testing::internal::FloatingPoint;
 using testing::internal::ForEach;
 using testing::internal::FormatEpochTimeInMillisAsIso8601;
 using testing::internal::FormatTimeInMillisAsSeconds;
-using testing::internal::GTestFlagSaver;
 using testing::internal::GetCurrentOsStackTraceExceptTop;
 using testing::internal::GetElementOr;
 using testing::internal::GetNextRandomSeed;
@@ -250,11 +254,14 @@ using testing::internal::GetTestTypeId;
 using testing::internal::GetTimeInMillis;
 using testing::internal::GetTypeId;
 using testing::internal::GetUnitTestImpl;
+using testing::internal::GTestFlagSaver;
+using testing::internal::HasDebugStringAndShortDebugString;
 using testing::internal::Int32FromEnvOrDie;
-using testing::internal::IsAProtocolMessage;
 using testing::internal::IsContainer;
 using testing::internal::IsContainerTest;
 using testing::internal::IsNotContainer;
+using testing::internal::kMaxRandomSeed;
+using testing::internal::kTestTypeIdInGoogleTest;
 using testing::internal::NativeArray;
 using testing::internal::OsStackTraceGetter;
 using testing::internal::OsStackTraceGetterInterface;
@@ -276,9 +283,6 @@ using testing::internal::WideStringToUtf8;
 using testing::internal::edit_distance::CalculateOptimalEdits;
 using testing::internal::edit_distance::CreateUnifiedDiff;
 using testing::internal::edit_distance::EditType;
-using testing::internal::kMaxRandomSeed;
-using testing::internal::kTestTypeIdInGoogleTest;
-using testing::kMaxStackTraceDepth;
 
 #if GTEST_HAS_STREAM_REDIRECTION
 using testing::internal::CaptureStdout;
@@ -482,28 +486,28 @@ class FormatEpochTimeInMillisAsIso8601Test : public Test {
 const TimeInMillis FormatEpochTimeInMillisAsIso8601Test::kMillisPerSec;
 
 TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsTwoDigitSegments) {
-  EXPECT_EQ("2011-10-31T18:52:42",
+  EXPECT_EQ("2011-10-31T18:52:42.000",
             FormatEpochTimeInMillisAsIso8601(1320087162 * kMillisPerSec));
 }
 
-TEST_F(FormatEpochTimeInMillisAsIso8601Test, MillisecondsDoNotAffectResult) {
+TEST_F(FormatEpochTimeInMillisAsIso8601Test, IncludesMillisecondsAfterDot) {
   EXPECT_EQ(
-      "2011-10-31T18:52:42",
+      "2011-10-31T18:52:42.234",
       FormatEpochTimeInMillisAsIso8601(1320087162 * kMillisPerSec + 234));
 }
 
 TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsLeadingZeroes) {
-  EXPECT_EQ("2011-09-03T05:07:02",
+  EXPECT_EQ("2011-09-03T05:07:02.000",
             FormatEpochTimeInMillisAsIso8601(1315026422 * kMillisPerSec));
 }
 
 TEST_F(FormatEpochTimeInMillisAsIso8601Test, Prints24HourTime) {
-  EXPECT_EQ("2011-09-28T17:08:22",
+  EXPECT_EQ("2011-09-28T17:08:22.000",
             FormatEpochTimeInMillisAsIso8601(1317229702 * kMillisPerSec));
 }
 
 TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsEpochStart) {
-  EXPECT_EQ("1970-01-01T00:00:00", FormatEpochTimeInMillisAsIso8601(0));
+  EXPECT_EQ("1970-01-01T00:00:00.000", FormatEpochTimeInMillisAsIso8601(0));
 }
 
 # ifdef __BORLANDC__
@@ -1598,9 +1602,11 @@ class GTestFlagSaverTest : public Test {
     GTEST_FLAG(catch_exceptions) = false;
     GTEST_FLAG(death_test_use_fork) = false;
     GTEST_FLAG(color) = "auto";
+    GTEST_FLAG(fail_fast) = false;
     GTEST_FLAG(filter) = "";
     GTEST_FLAG(list_tests) = false;
     GTEST_FLAG(output) = "";
+    GTEST_FLAG(brief) = false;
     GTEST_FLAG(print_time) = true;
     GTEST_FLAG(random_seed) = 0;
     GTEST_FLAG(repeat) = 1;
@@ -1625,9 +1631,11 @@ class GTestFlagSaverTest : public Test {
     EXPECT_FALSE(GTEST_FLAG(catch_exceptions));
     EXPECT_STREQ("auto", GTEST_FLAG(color).c_str());
     EXPECT_FALSE(GTEST_FLAG(death_test_use_fork));
+    EXPECT_FALSE(GTEST_FLAG(fail_fast));
     EXPECT_STREQ("", GTEST_FLAG(filter).c_str());
     EXPECT_FALSE(GTEST_FLAG(list_tests));
     EXPECT_STREQ("", GTEST_FLAG(output).c_str());
+    EXPECT_FALSE(GTEST_FLAG(brief));
     EXPECT_TRUE(GTEST_FLAG(print_time));
     EXPECT_EQ(0, GTEST_FLAG(random_seed));
     EXPECT_EQ(1, GTEST_FLAG(repeat));
@@ -1641,9 +1649,11 @@ class GTestFlagSaverTest : public Test {
     GTEST_FLAG(catch_exceptions) = true;
     GTEST_FLAG(color) = "no";
     GTEST_FLAG(death_test_use_fork) = true;
+    GTEST_FLAG(fail_fast) = true;
     GTEST_FLAG(filter) = "abc";
     GTEST_FLAG(list_tests) = true;
     GTEST_FLAG(output) = "xml:foo.xml";
+    GTEST_FLAG(brief) = true;
     GTEST_FLAG(print_time) = false;
     GTEST_FLAG(random_seed) = 1;
     GTEST_FLAG(repeat) = 100;
@@ -2758,7 +2768,7 @@ class FloatingPointTest : public Test {
   typedef typename Floating::Bits Bits;
 
   void SetUp() override {
-    const size_t max_ulps = Floating::kMaxUlps;
+    const uint32_t max_ulps = Floating::kMaxUlps;
 
     // The bits that represent 0.0.
     const Bits zero_bits = Floating(0).bits();
@@ -3075,6 +3085,13 @@ TEST_F(DoubleTest, EXPECT_NEAR) {
   EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0, 1.5, 0.25),  // NOLINT
                           "The difference between 1.0 and 1.5 is 0.5, "
                           "which exceeds 0.25");
+  // At this magnitude adjacent doubles are 512.0 apart, so this triggers a
+  // slightly different failure reporting path.
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_NEAR(4.2934311416234112e+18, 4.2934311416234107e+18, 1.0),
+      "The abs_error parameter 1.0 evaluates to 1 which is smaller than the "
+      "minimum distance between doubles for numbers of this magnitude which is "
+      "512");
 }
 
 // Tests ASSERT_NEAR.
@@ -3336,6 +3353,20 @@ TEST_F(SingleEvaluationTest, OtherCases) {
 
 #if GTEST_HAS_EXCEPTIONS
 
+#if GTEST_HAS_RTTI
+
+#ifdef _MSC_VER
+#define ERROR_DESC "class std::runtime_error"
+#else
+#define ERROR_DESC "std::runtime_error"
+#endif
+
+#else  // GTEST_HAS_RTTI
+
+#define ERROR_DESC "an std::exception-derived error"
+
+#endif  // GTEST_HAS_RTTI
+
 void ThrowAnInteger() {
   throw 1;
 }
@@ -3359,31 +3390,38 @@ TEST_F(SingleEvaluationTest, ExceptionTests) {
   }, bool), "throws a different type");
   EXPECT_EQ(2, a_);
 
+  // failed EXPECT_THROW, throws runtime error
+  EXPECT_NONFATAL_FAILURE(EXPECT_THROW({  // NOLINT
+    a_++;
+    ThrowRuntimeError("A description");
+  }, bool), "throws " ERROR_DESC " with description \"A description\"");
+  EXPECT_EQ(3, a_);
+
   // failed EXPECT_THROW, throws nothing
   EXPECT_NONFATAL_FAILURE(EXPECT_THROW(a_++, bool), "throws nothing");
-  EXPECT_EQ(3, a_);
+  EXPECT_EQ(4, a_);
 
   // successful EXPECT_NO_THROW
   EXPECT_NO_THROW(a_++);
-  EXPECT_EQ(4, a_);
+  EXPECT_EQ(5, a_);
 
   // failed EXPECT_NO_THROW
   EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW({  // NOLINT
     a_++;
     ThrowAnInteger();
   }), "it throws");
-  EXPECT_EQ(5, a_);
+  EXPECT_EQ(6, a_);
 
   // successful EXPECT_ANY_THROW
   EXPECT_ANY_THROW({  // NOLINT
     a_++;
     ThrowAnInteger();
   });
-  EXPECT_EQ(6, a_);
+  EXPECT_EQ(7, a_);
 
   // failed EXPECT_ANY_THROW
   EXPECT_NONFATAL_FAILURE(EXPECT_ANY_THROW(a_++), "it doesn't");
-  EXPECT_EQ(7, a_);
+  EXPECT_EQ(8, a_);
 }
 
 #endif  // GTEST_HAS_EXCEPTIONS
@@ -3803,6 +3841,12 @@ TEST(AssertionTest, ASSERT_THROW) {
       ASSERT_THROW(ThrowAnInteger(), bool),
       "Expected: ThrowAnInteger() throws an exception of type bool.\n"
       "  Actual: it throws a different type.");
+  EXPECT_FATAL_FAILURE(
+      ASSERT_THROW(ThrowRuntimeError("A description"), std::logic_error),
+      "Expected: ThrowRuntimeError(\"A description\") "
+      "throws an exception of type std::logic_error.\n  "
+      "Actual: it throws " ERROR_DESC " "
+      "with description \"A description\".");
 # endif
 
   EXPECT_FATAL_FAILURE(
@@ -3820,8 +3864,8 @@ TEST(AssertionTest, ASSERT_NO_THROW) {
   EXPECT_FATAL_FAILURE(ASSERT_NO_THROW(ThrowRuntimeError("A description")),
                        "Expected: ThrowRuntimeError(\"A description\") "
                        "doesn't throw an exception.\n  "
-                       "Actual: it throws std::exception-derived exception "
-                       "with description: \"A description\".");
+                       "Actual: it throws " ERROR_DESC " "
+                       "with description \"A description\".");
 }
 
 // Tests ASSERT_ANY_THROW.
@@ -4091,11 +4135,13 @@ TEST(HRESULTAssertionTest, Streaming) {
 
 #endif  // GTEST_OS_WINDOWS
 
-#ifdef __BORLANDC__
-// Silences warnings: "Condition is always true", "Unreachable code"
-# pragma option push -w-ccc -w-rch
+// The following code intentionally tests a suboptimal syntax.
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-else"
+#pragma GCC diagnostic ignored "-Wempty-body"
+#pragma GCC diagnostic ignored "-Wpragmas"
 #endif
-
 // Tests that the assertion macros behave like single statements.
 TEST(AssertionSyntaxTest, BasicAssertionsBehavesLikeSingleStatement) {
   if (AlwaysFalse())
@@ -4115,6 +4161,9 @@ TEST(AssertionSyntaxTest, BasicAssertionsBehavesLikeSingleStatement) {
   else
     EXPECT_GT(3, 2) << "";
 }
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 #if GTEST_HAS_EXCEPTIONS
 // Tests that the compiler will not complain about unreachable code in the
@@ -4131,6 +4180,17 @@ TEST(ExpectThrowTest, DoesNotGenerateUnreachableCodeWarning) {
   EXPECT_NONFATAL_FAILURE(EXPECT_ANY_THROW(n++), "");
 }
 
+TEST(ExpectThrowTest, DoesNotGenerateDuplicateCatchClauseWarning) {
+  EXPECT_THROW(throw std::exception(), std::exception);
+}
+
+// The following code intentionally tests a suboptimal syntax.
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-else"
+#pragma GCC diagnostic ignored "-Wempty-body"
+#pragma GCC diagnostic ignored "-Wpragmas"
+#endif
 TEST(AssertionSyntaxTest, ExceptionAssertionsBehavesLikeSingleStatement) {
   if (AlwaysFalse())
     EXPECT_THROW(ThrowNothing(), bool);
@@ -4156,8 +4216,19 @@ TEST(AssertionSyntaxTest, ExceptionAssertionsBehavesLikeSingleStatement) {
   else
     ;  // NOLINT
 }
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
 #endif  // GTEST_HAS_EXCEPTIONS
 
+// The following code intentionally tests a suboptimal syntax.
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-else"
+#pragma GCC diagnostic ignored "-Wempty-body"
+#pragma GCC diagnostic ignored "-Wpragmas"
+#endif
 TEST(AssertionSyntaxTest, NoFatalFailureAssertionsBehavesLikeSingleStatement) {
   if (AlwaysFalse())
     EXPECT_NO_FATAL_FAILURE(FAIL()) << "This should never be executed. "
@@ -4180,6 +4251,9 @@ TEST(AssertionSyntaxTest, NoFatalFailureAssertionsBehavesLikeSingleStatement) {
   else
     ASSERT_NO_FATAL_FAILURE(SUCCEED());
 }
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 // Tests that the assertion macros work well with switch statements.
 TEST(AssertionSyntaxTest, WorksWithSwitch) {
@@ -4541,6 +4615,12 @@ TEST(ExpectTest, EXPECT_THROW) {
   EXPECT_NONFATAL_FAILURE(EXPECT_THROW(ThrowAnInteger(), bool),
                           "Expected: ThrowAnInteger() throws an exception of "
                           "type bool.\n  Actual: it throws a different type.");
+  EXPECT_NONFATAL_FAILURE(EXPECT_THROW(ThrowRuntimeError("A description"),
+                                       std::logic_error),
+                          "Expected: ThrowRuntimeError(\"A description\") "
+                          "throws an exception of type std::logic_error.\n  "
+                          "Actual: it throws " ERROR_DESC " "
+                          "with description \"A description\".");
   EXPECT_NONFATAL_FAILURE(
       EXPECT_THROW(ThrowNothing(), bool),
       "Expected: ThrowNothing() throws an exception of type bool.\n"
@@ -4556,8 +4636,8 @@ TEST(ExpectTest, EXPECT_NO_THROW) {
   EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW(ThrowRuntimeError("A description")),
                           "Expected: ThrowRuntimeError(\"A description\") "
                           "doesn't throw an exception.\n  "
-                          "Actual: it throws std::exception-derived exception "
-                          "with description: \"A description\".");
+                          "Actual: it throws " ERROR_DESC " "
+                          "with description \"A description\".");
 }
 
 // Tests EXPECT_ANY_THROW.
@@ -5297,7 +5377,7 @@ class TestInfoTest : public Test {
 TEST_F(TestInfoTest, Names) {
   const TestInfo* const test_info = GetTestInfo("Names");
 
-  ASSERT_STREQ("TestInfoTest", test_info->test_case_name());
+  ASSERT_STREQ("TestInfoTest", test_info->test_suite_name());
   ASSERT_STREQ("Names", test_info->name());
 }
 
@@ -5367,7 +5447,7 @@ INSTANTIATE_TYPED_TEST_SUITE_P(My, CodeLocationForTYPEDTESTP, int);
 
 // Tests setting up and tearing down a test case.
 // Legacy API is deprecated but still available
-#ifndef REMOVE_LEGACY_TEST_CASEAPI
+#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
 class SetUpTestCaseTest : public Test {
  protected:
   // This will be called once before the first test in this test case
@@ -5426,7 +5506,7 @@ TEST_F(SetUpTestCaseTest, Test1) { EXPECT_STRNE(nullptr, shared_resource_); }
 TEST_F(SetUpTestCaseTest, Test2) {
   EXPECT_STREQ("123", shared_resource_);
 }
-#endif  //  REMOVE_LEGACY_TEST_CASEAPI
+#endif  //  GTEST_REMOVE_LEGACY_TEST_CASEAPI_
 
 // Tests SetupTestSuite/TearDown TestSuite
 class SetUpTestSuiteTest : public Test {
@@ -5495,20 +5575,23 @@ TEST_F(SetUpTestSuiteTest, TestSetupTestSuite2) {
 // The Flags struct stores a copy of all Google Test flags.
 struct Flags {
   // Constructs a Flags struct where each flag has its default value.
-  Flags() : also_run_disabled_tests(false),
-            break_on_failure(false),
-            catch_exceptions(false),
-            death_test_use_fork(false),
-            filter(""),
-            list_tests(false),
-            output(""),
-            print_time(true),
-            random_seed(0),
-            repeat(1),
-            shuffle(false),
-            stack_trace_depth(kMaxStackTraceDepth),
-            stream_result_to(""),
-            throw_on_failure(false) {}
+  Flags()
+      : also_run_disabled_tests(false),
+        break_on_failure(false),
+        catch_exceptions(false),
+        death_test_use_fork(false),
+        fail_fast(false),
+        filter(""),
+        list_tests(false),
+        output(""),
+        brief(false),
+        print_time(true),
+        random_seed(0),
+        repeat(1),
+        shuffle(false),
+        stack_trace_depth(kMaxStackTraceDepth),
+        stream_result_to(""),
+        throw_on_failure(false) {}
 
   // Factory methods.
 
@@ -5544,6 +5627,14 @@ struct Flags {
     return flags;
   }
 
+  // Creates a Flags struct where the gtest_fail_fast flag has
+  // the given value.
+  static Flags FailFast(bool fail_fast) {
+    Flags flags;
+    flags.fail_fast = fail_fast;
+    return flags;
+  }
+
   // Creates a Flags struct where the gtest_filter flag has the given
   // value.
   static Flags Filter(const char* filter) {
@@ -5568,6 +5659,14 @@ struct Flags {
     return flags;
   }
 
+  // Creates a Flags struct where the gtest_brief flag has the given
+  // value.
+  static Flags Brief(bool brief) {
+    Flags flags;
+    flags.brief = brief;
+    return flags;
+  }
+
   // Creates a Flags struct where the gtest_print_time flag has the given
   // value.
   static Flags PrintTime(bool print_time) {
@@ -5629,9 +5728,11 @@ struct Flags {
   bool break_on_failure;
   bool catch_exceptions;
   bool death_test_use_fork;
+  bool fail_fast;
   const char* filter;
   bool list_tests;
   const char* output;
+  bool brief;
   bool print_time;
   int32_t random_seed;
   int32_t repeat;
@@ -5650,9 +5751,11 @@ class ParseFlagsTest : public Test {
     GTEST_FLAG(break_on_failure) = false;
     GTEST_FLAG(catch_exceptions) = false;
     GTEST_FLAG(death_test_use_fork) = false;
+    GTEST_FLAG(fail_fast) = false;
     GTEST_FLAG(filter) = "";
     GTEST_FLAG(list_tests) = false;
     GTEST_FLAG(output) = "";
+    GTEST_FLAG(brief) = false;
     GTEST_FLAG(print_time) = true;
     GTEST_FLAG(random_seed) = 0;
     GTEST_FLAG(repeat) = 1;
@@ -5680,9 +5783,11 @@ class ParseFlagsTest : public Test {
     EXPECT_EQ(expected.break_on_failure, GTEST_FLAG(break_on_failure));
     EXPECT_EQ(expected.catch_exceptions, GTEST_FLAG(catch_exceptions));
     EXPECT_EQ(expected.death_test_use_fork, GTEST_FLAG(death_test_use_fork));
+    EXPECT_EQ(expected.fail_fast, GTEST_FLAG(fail_fast));
     EXPECT_STREQ(expected.filter, GTEST_FLAG(filter).c_str());
     EXPECT_EQ(expected.list_tests, GTEST_FLAG(list_tests));
     EXPECT_STREQ(expected.output, GTEST_FLAG(output).c_str());
+    EXPECT_EQ(expected.brief, GTEST_FLAG(brief));
     EXPECT_EQ(expected.print_time, GTEST_FLAG(print_time));
     EXPECT_EQ(expected.random_seed, GTEST_FLAG(random_seed));
     EXPECT_EQ(expected.repeat, GTEST_FLAG(repeat));
@@ -5766,6 +5871,15 @@ TEST_F(ParseFlagsTest, NoFlag) {
   GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), false);
 }
 
+// Tests parsing --gtest_fail_fast.
+TEST_F(ParseFlagsTest, FailFast) {
+  const char* argv[] = {"foo.exe", "--gtest_fail_fast", nullptr};
+
+  const char* argv2[] = {"foo.exe", nullptr};
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::FailFast(true), false);
+}
+
 // Tests parsing a bad --gtest_filter flag.
 TEST_F(ParseFlagsTest, FilterBad) {
   const char* argv[] = {"foo.exe", "--gtest_filter", nullptr};
@@ -5965,6 +6079,33 @@ TEST_F(ParseFlagsTest, OutputXmlDirectory) {
                             Flags::Output("xml:directory/path/"), false);
 }
 
+// Tests having a --gtest_brief flag
+TEST_F(ParseFlagsTest, BriefFlag) {
+  const char* argv[] = {"foo.exe", "--gtest_brief", nullptr};
+
+  const char* argv2[] = {"foo.exe", nullptr};
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Brief(true), false);
+}
+
+// Tests having a --gtest_brief flag with a "true" value
+TEST_F(ParseFlagsTest, BriefFlagTrue) {
+  const char* argv[] = {"foo.exe", "--gtest_brief=1", nullptr};
+
+  const char* argv2[] = {"foo.exe", nullptr};
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Brief(true), false);
+}
+
+// Tests having a --gtest_brief flag with a "false" value
+TEST_F(ParseFlagsTest, BriefFlagFalse) {
+  const char* argv[] = {"foo.exe", "--gtest_brief=0", nullptr};
+
+  const char* argv2[] = {"foo.exe", nullptr};
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Brief(false), false);
+}
+
 // Tests having a --gtest_print_time flag
 TEST_F(ParseFlagsTest, PrintTimeFlag) {
   const char* argv[] = {"foo.exe", "--gtest_print_time", nullptr};
@@ -6271,8 +6412,8 @@ TEST_F(CurrentTestInfoTest, WorksForFirstTestInATestSuite) {
     UnitTest::GetInstance()->current_test_info();
   ASSERT_TRUE(nullptr != test_info)
       << "There is a test running so we should have a valid TestInfo.";
-  EXPECT_STREQ("CurrentTestInfoTest", test_info->test_case_name())
-      << "Expected the name of the currently running test case.";
+  EXPECT_STREQ("CurrentTestInfoTest", test_info->test_suite_name())
+      << "Expected the name of the currently running test suite.";
   EXPECT_STREQ("WorksForFirstTestInATestSuite", test_info->name())
       << "Expected the name of the currently running test.";
 }
@@ -6286,8 +6427,8 @@ TEST_F(CurrentTestInfoTest, WorksForSecondTestInATestSuite) {
     UnitTest::GetInstance()->current_test_info();
   ASSERT_TRUE(nullptr != test_info)
       << "There is a test running so we should have a valid TestInfo.";
-  EXPECT_STREQ("CurrentTestInfoTest", test_info->test_case_name())
-      << "Expected the name of the currently running test case.";
+  EXPECT_STREQ("CurrentTestInfoTest", test_info->test_suite_name())
+      << "Expected the name of the currently running test suite.";
   EXPECT_STREQ("WorksForSecondTestInATestSuite", test_info->name())
       << "Expected the name of the currently running test.";
 }
@@ -7075,24 +7216,71 @@ GTEST_TEST(AlternativeNameTest, Works) {  // GTEST_TEST is the same as TEST.
 class ConversionHelperBase {};
 class ConversionHelperDerived : public ConversionHelperBase {};
 
-// Tests that IsAProtocolMessage<T>::value is a compile-time constant.
-TEST(IsAProtocolMessageTest, ValueIsCompileTimeConstant) {
-  GTEST_COMPILE_ASSERT_(IsAProtocolMessage<::proto2::Message>::value,
-                        const_true);
-  GTEST_COMPILE_ASSERT_(!IsAProtocolMessage<int>::value, const_false);
-}
+struct HasDebugStringMethods {
+  std::string DebugString() const { return ""; }
+  std::string ShortDebugString() const { return ""; }
+};
+
+struct InheritsDebugStringMethods : public HasDebugStringMethods {};
+
+struct WrongTypeDebugStringMethod {
+  std::string DebugString() const { return ""; }
+  int ShortDebugString() const { return 1; }
+};
+
+struct NotConstDebugStringMethod {
+  std::string DebugString() { return ""; }
+  std::string ShortDebugString() const { return ""; }
+};
+
+struct MissingDebugStringMethod {
+  std::string DebugString() { return ""; }
+};
 
-// Tests that IsAProtocolMessage<T>::value is true when T is
-// proto2::Message or a sub-class of it.
-TEST(IsAProtocolMessageTest, ValueIsTrueWhenTypeIsAProtocolMessage) {
-  EXPECT_TRUE(IsAProtocolMessage< ::proto2::Message>::value);
+struct IncompleteType;
+
+// Tests that HasDebugStringAndShortDebugString<T>::value is a compile-time
+// constant.
+TEST(HasDebugStringAndShortDebugStringTest, ValueIsCompileTimeConstant) {
+  GTEST_COMPILE_ASSERT_(
+      HasDebugStringAndShortDebugString<HasDebugStringMethods>::value,
+      const_true);
+  GTEST_COMPILE_ASSERT_(
+      HasDebugStringAndShortDebugString<InheritsDebugStringMethods>::value,
+      const_true);
+  GTEST_COMPILE_ASSERT_(HasDebugStringAndShortDebugString<
+                            const InheritsDebugStringMethods>::value,
+                        const_true);
+  GTEST_COMPILE_ASSERT_(
+      !HasDebugStringAndShortDebugString<WrongTypeDebugStringMethod>::value,
+      const_false);
+  GTEST_COMPILE_ASSERT_(
+      !HasDebugStringAndShortDebugString<NotConstDebugStringMethod>::value,
+      const_false);
+  GTEST_COMPILE_ASSERT_(
+      !HasDebugStringAndShortDebugString<MissingDebugStringMethod>::value,
+      const_false);
+  GTEST_COMPILE_ASSERT_(
+      !HasDebugStringAndShortDebugString<IncompleteType>::value, const_false);
+  GTEST_COMPILE_ASSERT_(!HasDebugStringAndShortDebugString<int>::value,
+                        const_false);
+}
+
+// Tests that HasDebugStringAndShortDebugString<T>::value is true when T has
+// needed methods.
+TEST(HasDebugStringAndShortDebugStringTest,
+     ValueIsTrueWhenTypeHasDebugStringAndShortDebugString) {
+  EXPECT_TRUE(
+      HasDebugStringAndShortDebugString<InheritsDebugStringMethods>::value);
 }
 
-// Tests that IsAProtocolMessage<T>::value is false when T is neither
-// ::proto2::Message nor a sub-class of it.
-TEST(IsAProtocolMessageTest, ValueIsFalseWhenTypeIsNotAProtocolMessage) {
-  EXPECT_FALSE(IsAProtocolMessage<int>::value);
-  EXPECT_FALSE(IsAProtocolMessage<const ConversionHelperBase>::value);
+// Tests that HasDebugStringAndShortDebugString<T>::value is false when T
+// doesn't have needed methods.
+TEST(HasDebugStringAndShortDebugStringTest,
+     ValueIsFalseWhenTypeIsNotAProtocolMessage) {
+  EXPECT_FALSE(HasDebugStringAndShortDebugString<int>::value);
+  EXPECT_FALSE(
+      HasDebugStringAndShortDebugString<const ConversionHelperBase>::value);
 }
 
 // Tests GTEST_REMOVE_REFERENCE_AND_CONST_.
@@ -7367,7 +7555,8 @@ TEST(FlatTuple, Basic) {
   EXPECT_EQ(0.0, tuple.Get<1>());
   EXPECT_EQ(nullptr, tuple.Get<2>());
 
-  tuple = FlatTuple<int, double, const char*>(7, 3.2, "Foo");
+  tuple = FlatTuple<int, double, const char*>(
+      testing::internal::FlatTupleConstructTag{}, 7, 3.2, "Foo");
   EXPECT_EQ(7, tuple.Get<0>());
   EXPECT_EQ(3.2, tuple.Get<1>());
   EXPECT_EQ(std::string("Foo"), tuple.Get<2>());
@@ -7376,6 +7565,147 @@ TEST(FlatTuple, Basic) {
   EXPECT_EQ(5.1, tuple.Get<1>());
 }
 
+namespace {
+std::string AddIntToString(int i, const std::string& s) {
+  return s + std::to_string(i);
+}
+}  // namespace
+
+TEST(FlatTuple, Apply) {
+  using testing::internal::FlatTuple;
+
+  FlatTuple<int, std::string> tuple{testing::internal::FlatTupleConstructTag{},
+                                    5, "Hello"};
+
+  // Lambda.
+  EXPECT_TRUE(tuple.Apply([](int i, const std::string& s) -> bool {
+    return i == static_cast<int>(s.size());
+  }));
+
+  // Function.
+  EXPECT_EQ(tuple.Apply(AddIntToString), "Hello5");
+
+  // Mutating operations.
+  tuple.Apply([](int& i, std::string& s) {
+    ++i;
+    s += s;
+  });
+  EXPECT_EQ(tuple.Get<0>(), 6);
+  EXPECT_EQ(tuple.Get<1>(), "HelloHello");
+}
+
+struct ConstructionCounting {
+  ConstructionCounting() { ++default_ctor_calls; }
+  ~ConstructionCounting() { ++dtor_calls; }
+  ConstructionCounting(const ConstructionCounting&) { ++copy_ctor_calls; }
+  ConstructionCounting(ConstructionCounting&&) noexcept { ++move_ctor_calls; }
+  ConstructionCounting& operator=(const ConstructionCounting&) {
+    ++copy_assignment_calls;
+    return *this;
+  }
+  ConstructionCounting& operator=(ConstructionCounting&&) noexcept {
+    ++move_assignment_calls;
+    return *this;
+  }
+
+  static void Reset() {
+    default_ctor_calls = 0;
+    dtor_calls = 0;
+    copy_ctor_calls = 0;
+    move_ctor_calls = 0;
+    copy_assignment_calls = 0;
+    move_assignment_calls = 0;
+  }
+
+  static int default_ctor_calls;
+  static int dtor_calls;
+  static int copy_ctor_calls;
+  static int move_ctor_calls;
+  static int copy_assignment_calls;
+  static int move_assignment_calls;
+};
+
+int ConstructionCounting::default_ctor_calls = 0;
+int ConstructionCounting::dtor_calls = 0;
+int ConstructionCounting::copy_ctor_calls = 0;
+int ConstructionCounting::move_ctor_calls = 0;
+int ConstructionCounting::copy_assignment_calls = 0;
+int ConstructionCounting::move_assignment_calls = 0;
+
+TEST(FlatTuple, ConstructorCalls) {
+  using testing::internal::FlatTuple;
+
+  // Default construction.
+  ConstructionCounting::Reset();
+  { FlatTuple<ConstructionCounting> tuple; }
+  EXPECT_EQ(ConstructionCounting::default_ctor_calls, 1);
+  EXPECT_EQ(ConstructionCounting::dtor_calls, 1);
+  EXPECT_EQ(ConstructionCounting::copy_ctor_calls, 0);
+  EXPECT_EQ(ConstructionCounting::move_ctor_calls, 0);
+  EXPECT_EQ(ConstructionCounting::copy_assignment_calls, 0);
+  EXPECT_EQ(ConstructionCounting::move_assignment_calls, 0);
+
+  // Copy construction.
+  ConstructionCounting::Reset();
+  {
+    ConstructionCounting elem;
+    FlatTuple<ConstructionCounting> tuple{
+        testing::internal::FlatTupleConstructTag{}, elem};
+  }
+  EXPECT_EQ(ConstructionCounting::default_ctor_calls, 1);
+  EXPECT_EQ(ConstructionCounting::dtor_calls, 2);
+  EXPECT_EQ(ConstructionCounting::copy_ctor_calls, 1);
+  EXPECT_EQ(ConstructionCounting::move_ctor_calls, 0);
+  EXPECT_EQ(ConstructionCounting::copy_assignment_calls, 0);
+  EXPECT_EQ(ConstructionCounting::move_assignment_calls, 0);
+
+  // Move construction.
+  ConstructionCounting::Reset();
+  {
+    FlatTuple<ConstructionCounting> tuple{
+        testing::internal::FlatTupleConstructTag{}, ConstructionCounting{}};
+  }
+  EXPECT_EQ(ConstructionCounting::default_ctor_calls, 1);
+  EXPECT_EQ(ConstructionCounting::dtor_calls, 2);
+  EXPECT_EQ(ConstructionCounting::copy_ctor_calls, 0);
+  EXPECT_EQ(ConstructionCounting::move_ctor_calls, 1);
+  EXPECT_EQ(ConstructionCounting::copy_assignment_calls, 0);
+  EXPECT_EQ(ConstructionCounting::move_assignment_calls, 0);
+
+  // Copy assignment.
+  // TODO(ofats): it should be testing assignment operator of FlatTuple, not its
+  // elements
+  ConstructionCounting::Reset();
+  {
+    FlatTuple<ConstructionCounting> tuple;
+    ConstructionCounting elem;
+    tuple.Get<0>() = elem;
+  }
+  EXPECT_EQ(ConstructionCounting::default_ctor_calls, 2);
+  EXPECT_EQ(ConstructionCounting::dtor_calls, 2);
+  EXPECT_EQ(ConstructionCounting::copy_ctor_calls, 0);
+  EXPECT_EQ(ConstructionCounting::move_ctor_calls, 0);
+  EXPECT_EQ(ConstructionCounting::copy_assignment_calls, 1);
+  EXPECT_EQ(ConstructionCounting::move_assignment_calls, 0);
+
+  // Move assignment.
+  // TODO(ofats): it should be testing assignment operator of FlatTuple, not its
+  // elements
+  ConstructionCounting::Reset();
+  {
+    FlatTuple<ConstructionCounting> tuple;
+    tuple.Get<0>() = ConstructionCounting{};
+  }
+  EXPECT_EQ(ConstructionCounting::default_ctor_calls, 2);
+  EXPECT_EQ(ConstructionCounting::dtor_calls, 2);
+  EXPECT_EQ(ConstructionCounting::copy_ctor_calls, 0);
+  EXPECT_EQ(ConstructionCounting::move_ctor_calls, 0);
+  EXPECT_EQ(ConstructionCounting::copy_assignment_calls, 0);
+  EXPECT_EQ(ConstructionCounting::move_assignment_calls, 1);
+
+  ConstructionCounting::Reset();
+}
+
 TEST(FlatTuple, ManyTypes) {
   using testing::internal::FlatTuple;
 
index e093f6f05e3e3ad747df47cca9db51cb9ba5f258..ac66feb66719e62cfa16c79a17f63de990f277c1 100755 (executable)
@@ -42,7 +42,7 @@ GTEST_OUTPUT_2_TEST = "gtest_xml_outfile2_test_"
 
 EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
 <testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
-  <testsuite name="PropertyOne" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="PropertyOne" tests="1" failures="0" skipped="0" disabled="0" errors="0" time="*" timestamp="*">
     <testcase name="TestSomeProperties" status="run" result="completed" time="*" timestamp="*" classname="PropertyOne">
       <properties>
         <property name="SetUpProp" value="1"/>
@@ -56,7 +56,7 @@ EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
 
 EXPECTED_XML_2 = """<?xml version="1.0" encoding="UTF-8"?>
 <testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
-  <testsuite name="PropertyTwo" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="PropertyTwo" tests="1" failures="0" skipped="0" disabled="0" errors="0" time="*" timestamp="*">
     <testcase name="TestSomeProperties" status="run" result="completed" time="*" timestamp="*" classname="PropertyTwo">
       <properties>
         <property name="SetUpProp" value="2"/>
index 63b1af0b6c10161eca2c9eaf9731cb29b08b1827..de8b8c751ad3599f83c291947da57b80914e3a52 100755 (executable)
@@ -65,11 +65,11 @@ else:
   sys.argv.remove(NO_STACKTRACE_SUPPORT_FLAG)
 
 EXPECTED_NON_EMPTY_XML = """<?xml version="1.0" encoding="UTF-8"?>
-<testsuites tests="24" failures="4" disabled="2" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
-  <testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+<testsuites tests="26" failures="5" disabled="2" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
+  <testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="Succeeds" status="run" result="completed" time="*" timestamp="*" classname="SuccessfulTest"/>
   </testsuite>
-  <testsuite name="FailedTest" tests="1" failures="1" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="FailedTest" tests="1" failures="1" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="Fails" status="run" result="completed" time="*" timestamp="*" classname="FailedTest">
       <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Expected equality of these values:&#x0A;  1&#x0A;  2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
 Expected equality of these values:
@@ -77,7 +77,7 @@ Expected equality of these values:
   2%(stack)s]]></failure>
     </testcase>
   </testsuite>
-  <testsuite name="MixedResultTest" tests="3" failures="1" disabled="1" errors="0" time="*" timestamp="*">
+  <testsuite name="MixedResultTest" tests="3" failures="1" disabled="1" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="Succeeds" status="run" result="completed" time="*" timestamp="*" classname="MixedResultTest"/>
     <testcase name="Fails" status="run" result="completed" time="*" timestamp="*" classname="MixedResultTest">
       <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Expected equality of these values:&#x0A;  1&#x0A;  2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
@@ -91,27 +91,43 @@ Expected equality of these values:
     </testcase>
     <testcase name="DISABLED_test" status="notrun" result="suppressed" time="*" timestamp="*" classname="MixedResultTest"/>
   </testsuite>
-  <testsuite name="XmlQuotingTest" tests="1" failures="1" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="XmlQuotingTest" tests="1" failures="1" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="OutputsCData" status="run" result="completed" time="*" timestamp="*" classname="XmlQuotingTest">
       <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Failed&#x0A;XML output: &lt;?xml encoding=&quot;utf-8&quot;&gt;&lt;top&gt;&lt;![CDATA[cdata text]]&gt;&lt;/top&gt;" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
 Failed
 XML output: <?xml encoding="utf-8"><top><![CDATA[cdata text]]>]]&gt;<![CDATA[</top>%(stack)s]]></failure>
     </testcase>
   </testsuite>
-  <testsuite name="InvalidCharactersTest" tests="1" failures="1" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="InvalidCharactersTest" tests="1" failures="1" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="InvalidCharactersInMessage" status="run" result="completed" time="*" timestamp="*" classname="InvalidCharactersTest">
       <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Failed&#x0A;Invalid characters in brackets []" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
 Failed
 Invalid characters in brackets []%(stack)s]]></failure>
     </testcase>
   </testsuite>
-  <testsuite name="DisabledTest" tests="1" failures="0" disabled="1" errors="0" time="*" timestamp="*">
+  <testsuite name="DisabledTest" tests="1" failures="0" disabled="1" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="DISABLED_test_not_run" status="notrun" result="suppressed" time="*" timestamp="*" classname="DisabledTest"/>
   </testsuite>
-  <testsuite name="SkippedTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
-    <testcase name="Skipped" status="run" result="skipped" time="*" timestamp="*" classname="SkippedTest"/>
+  <testsuite name="SkippedTest" tests="3" failures="1" disabled="0" skipped="2" errors="0" time="*" timestamp="*">
+    <testcase name="Skipped" status="run" result="skipped" time="*" timestamp="*" classname="SkippedTest">
+      <skipped message="gtest_xml_output_unittest_.cc:*&#x0A;"><![CDATA[gtest_xml_output_unittest_.cc:*
+%(stack)s]]></skipped>
+    </testcase>
+    <testcase name="SkippedWithMessage" status="run" result="skipped" time="*" timestamp="*" classname="SkippedTest">
+      <skipped message="gtest_xml_output_unittest_.cc:*&#x0A;It is good practice to tell why you skip a test."><![CDATA[gtest_xml_output_unittest_.cc:*
+It is good practice to tell why you skip a test.%(stack)s]]></skipped>
+    </testcase>
+    <testcase name="SkippedAfterFailure" status="run" result="completed" time="*" timestamp="*" classname="SkippedTest">
+      <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Expected equality of these values:&#x0A;  1&#x0A;  2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
+Expected equality of these values:
+  1
+  2%(stack)s]]></failure>
+      <skipped message="gtest_xml_output_unittest_.cc:*&#x0A;It is good practice to tell why you skip a test."><![CDATA[gtest_xml_output_unittest_.cc:*
+It is good practice to tell why you skip a test.%(stack)s]]></skipped>
+    </testcase>
+
   </testsuite>
-  <testsuite name="PropertyRecordingTest" tests="4" failures="0" disabled="0" errors="0" time="*" timestamp="*" SetUpTestSuite="yes" TearDownTestSuite="aye">
+  <testsuite name="PropertyRecordingTest" tests="4" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*" SetUpTestSuite="yes" TearDownTestSuite="aye">
     <testcase name="OneProperty" status="run" result="completed" time="*" timestamp="*" classname="PropertyRecordingTest">
       <properties>
         <property name="key_1" value="1"/>
@@ -135,7 +151,7 @@ Invalid characters in brackets []%(stack)s]]></failure>
       </properties>
     </testcase>
   </testsuite>
-  <testsuite name="NoFixtureTest" tests="3" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="NoFixtureTest" tests="3" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
      <testcase name="RecordProperty" status="run" result="completed" time="*" timestamp="*" classname="NoFixtureTest">
        <properties>
          <property name="key" value="1"/>
@@ -152,22 +168,22 @@ Invalid characters in brackets []%(stack)s]]></failure>
        </properties>
      </testcase>
   </testsuite>
-  <testsuite name="Single/ValueParamTest" tests="4" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="Single/ValueParamTest" tests="4" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="HasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
     <testcase name="HasValueParamAttribute/1" value_param="42" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
     <testcase name="AnotherTestThatHasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
     <testcase name="AnotherTestThatHasValueParamAttribute/1" value_param="42" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
   </testsuite>
-  <testsuite name="TypedTest/0" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="TypedTest/0" tests="1" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" timestamp="*" classname="TypedTest/0" />
   </testsuite>
-  <testsuite name="TypedTest/1" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="TypedTest/1" tests="1" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" timestamp="*" classname="TypedTest/1" />
   </testsuite>
-  <testsuite name="Single/TypeParameterizedTestSuite/0" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="Single/TypeParameterizedTestSuite/0" tests="1" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" timestamp="*" classname="Single/TypeParameterizedTestSuite/0" />
   </testsuite>
-  <testsuite name="Single/TypeParameterizedTestSuite/1" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="Single/TypeParameterizedTestSuite/1" tests="1" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="HasTypeParamAttribute" type_param="*" status="run" result="completed" time="*" timestamp="*" classname="Single/TypeParameterizedTestSuite/1" />
   </testsuite>
 </testsuites>""" % {
@@ -177,7 +193,7 @@ Invalid characters in brackets []%(stack)s]]></failure>
 EXPECTED_FILTERED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
 <testsuites tests="1" failures="0" disabled="0" errors="0" time="*"
             timestamp="*" name="AllTests" ad_hoc_property="42">
-  <testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0"
+  <testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" skipped="0"
              errors="0" time="*" timestamp="*">
     <testcase name="Succeeds" status="run" result="completed" time="*" timestamp="*" classname="SuccessfulTest"/>
   </testsuite>
@@ -185,18 +201,18 @@ EXPECTED_FILTERED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
 
 EXPECTED_SHARDED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
 <testsuites tests="3" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
-  <testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
+  <testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
     <testcase name="Succeeds" status="run" result="completed" time="*" timestamp="*" classname="SuccessfulTest"/>
   </testsuite>
-  <testsuite name="PropertyRecordingTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" SetUpTestSuite="yes" TearDownTestSuite="aye">
-    <testcase name="TwoValuesForOneKeyUsesLastValue" status="run" result="completed" time="*" timestamp="*" classname="PropertyRecordingTest">
+  <testsuite name="PropertyRecordingTest" tests="1" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*" SetUpTestSuite="yes" TearDownTestSuite="aye">
+    <testcase name="IntValuedProperty" status="run" result="completed" time="*" timestamp="*" classname="PropertyRecordingTest">
       <properties>
-        <property name="key_1" value="2"/>
+        <property name="key_int" value="1"/>
       </properties>
     </testcase>
   </testsuite>
-  <testsuite name="Single/ValueParamTest" tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*">
-    <testcase name="AnotherTestThatHasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
+  <testsuite name="Single/ValueParamTest" tests="1" failures="0" disabled="0" skipped="0" errors="0" time="*" timestamp="*">
+    <testcase name="HasValueParamAttribute/0" value_param="33" status="run" result="completed" time="*" timestamp="*" classname="Single/ValueParamTest" />
   </testsuite>
 </testsuites>"""
 
index c95fd66cfaef24d07d350f649970f5aa7b0884e2..2b6634b5c6a36724418fdc58dc35bf629a2fd7a2 100644 (file)
@@ -74,6 +74,15 @@ TEST_F(SkippedTest, Skipped) {
   GTEST_SKIP();
 }
 
+TEST_F(SkippedTest, SkippedWithMessage) {
+  GTEST_SKIP() << "It is good practice to tell why you skip a test.";
+}
+
+TEST_F(SkippedTest, SkippedAfterFailure) {
+  EXPECT_EQ(1, 2);
+  GTEST_SKIP() << "It is good practice to tell why you skip a test.";
+}
+
 TEST(MixedResultTest, Succeeds) {
   EXPECT_EQ(1, 1);
   ASSERT_EQ(1, 1);
index 9914a49ec188b7ceaaf23718b8f73236bac2251f..5dd0eb92443ad73159fc3845c579f399e8f3bf84 100755 (executable)
@@ -105,6 +105,7 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
       'testsuite': 'name',
       'testcase': 'name',
       'failure': 'message',
+      'skipped': 'message',
       'property': 'name',
   }
 
@@ -171,7 +172,7 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
 
     if element.tagName in ('testsuites', 'testsuite', 'testcase'):
       timestamp = element.getAttributeNode('timestamp')
-      timestamp.value = re.sub(r'^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d$',
+      timestamp.value = re.sub(r'^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d\d\d$',
                                '*', timestamp.value)
     if element.tagName in ('testsuites', 'testsuite', 'testcase'):
       time = element.getAttributeNode('time')
@@ -179,7 +180,7 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
       type_param = element.getAttributeNode('type_param')
       if type_param and type_param.value:
         type_param.value = '*'
-    elif element.tagName == 'failure':
+    elif element.tagName == 'failure' or element.tagName == 'skipped':
       source_line_pat = r'^.*[/\\](.*:)\d+\n'
       # Replaces the source line information with a normalized form.
       message = element.getAttributeNode('message')
index dfd5e923d388132aba3013790e24c6841f6819cb..acbca1464b1a5211e7d6cc1878197fe0a6ecc7ee 100644 (file)
@@ -876,7 +876,7 @@ struct denc_traits<ceph::buffer::list> {
 template<typename A, typename B>
 struct denc_traits<
   std::pair<A, B>,
-  std::enable_if_t<denc_supported<A> && denc_supported<B>>> {
+  std::enable_if_t<denc_supported<std::remove_const_t<A>> && denc_supported<B>>> {
   typedef denc_traits<A> a_traits;
   typedef denc_traits<B> b_traits;
 
@@ -908,14 +908,14 @@ struct denc_traits<
   }
 
   static void decode(std::pair<A,B>& v, ceph::buffer::ptr::const_iterator& p, uint64_t f=0) {
-    denc(v.first, p, f);
+    denc(const_cast<std::remove_const_t<A>&>(v.first), p, f);
     denc(v.second, p, f);
   }
   template<typename AA=A>
   static std::enable_if_t<!!sizeof(AA) && !need_contiguous>
   decode(std::pair<A,B>& v, ceph::buffer::list::const_iterator& p,
         uint64_t f = 0) {
-    denc(v.first, p);
+    denc(const_cast<std::remove_const_t<AA>&>(v.first), p);
     denc(v.second, p);
   }
 };
@@ -1116,8 +1116,7 @@ struct denc_traits<
 namespace _denc {
   template<typename Container>
   struct maplike_details : public container_details_base<Container> {
-    using T = std::pair<typename Container::key_type,
-                       typename Container::mapped_type>;
+    using T = typename Container::value_type;
     template<typename ...Args>
     static void insert(Container& c, Args&& ...args) {
       c.emplace_hint(c.cend(), std::forward<Args>(args)...);
index fdcbc3abb6814daa9ae219a5bcc66340ea1f9e4d..c2eb48070a66b800bba45854e60ad30869d70b1a 100644 (file)
@@ -221,6 +221,11 @@ static int build_map_buf(CephContext *cct, const krbd_spec& spec,
     }
   }
 
+  if (oss.tellp() == 0) {
+    std::cerr << "rbd: failed to get mon address (possible ms_mode mismatch)" << std::endl;
+    return -ENOENT;
+  }
+
   oss << " name=" << cct->_conf->name.get_id();
 
   KeyRing keyring;
index decaeeacccecd50fc1c559a583811c5c35cd279b..27b9e8a4085a0f6f6c2ea7987e6a575b4d815fa8 100644 (file)
@@ -390,7 +390,7 @@ extern "C" int _rados_pool_reverse_lookup(rados_t cluster, int64_t id,
   tracepoint(librados, rados_pool_reverse_lookup_enter, cluster, id, maxlen);
   librados::RadosClient *radosp = (librados::RadosClient *)cluster;
   std::string name;
-  int r = radosp->pool_get_name(id, &name);
+  int r = radosp->pool_get_name(id, &name, true);
   if (r < 0) {
     tracepoint(librados, rados_pool_reverse_lookup_exit, r, "");
     return r;
index 3702350984ae3a9bd2090cb3c1863bbb0454814e..0c8512b85beec995a36424cb7334c9684263cb28 100644 (file)
@@ -2559,7 +2559,7 @@ int64_t librados::Rados::pool_lookup(const char *name)
 
 int librados::Rados::pool_reverse_lookup(int64_t id, std::string *name)
 {
-  return client->pool_get_name(id, name);
+  return client->pool_get_name(id, name, true);
 }
 
 int librados::Rados::mon_command(string cmd, const bufferlist& inbl,
index c46549a78d3d57479732cb3bad6279f69801842e..483e67d67f877ba0be87c9b2f185b274527976c3 100644 (file)
@@ -166,7 +166,7 @@ void ImageWatcher<I>::handle_async_complete(const AsyncRequestId &request,
   }
 
   std::unique_lock async_request_locker{m_async_request_lock};
-  m_async_pending.erase(request);
+  mark_async_request_complete(request, r);
   m_async_op_tracker.finish_op();
 }
 
@@ -397,12 +397,11 @@ template <typename I>
 void ImageWatcher<I>::schedule_request_lock(bool use_timer, int timer_delay) {
   ceph_assert(ceph_mutex_is_locked(m_image_ctx.owner_lock));
 
-  if (m_image_ctx.exclusive_lock == nullptr) {
-    // exclusive lock dynamically disabled via image refresh
+  // see notify_request_lock()
+  if (m_image_ctx.exclusive_lock == nullptr ||
+      m_image_ctx.exclusive_lock->is_lock_owner()) {
     return;
   }
-  ceph_assert(m_image_ctx.exclusive_lock &&
-              !m_image_ctx.exclusive_lock->is_lock_owner());
 
   std::shared_lock watch_locker{this->m_watch_lock};
   if (this->is_registered(this->m_watch_lock)) {
@@ -489,6 +488,44 @@ void ImageWatcher<I>::notify_lock_owner(const Payload& payload,
   notify_lock_owner->send();
 }
 
+template <typename I>
+bool ImageWatcher<I>::is_new_request(const AsyncRequestId &id) const {
+  ceph_assert(ceph_mutex_is_locked(m_async_request_lock));
+
+  return m_async_pending.count(id) == 0 && m_async_complete.count(id) == 0;
+}
+
+template <typename I>
+bool ImageWatcher<I>::mark_async_request_complete(const AsyncRequestId &id,
+                                                  int r) {
+  ceph_assert(ceph_mutex_is_locked(m_async_request_lock));
+
+  bool found = m_async_pending.erase(id);
+
+  auto now = ceph_clock_now();
+
+  auto it = m_async_complete_expiration.begin();
+  while (it != m_async_complete_expiration.end() && it->first < now) {
+    m_async_complete.erase(it->second);
+    it = m_async_complete_expiration.erase(it);
+  }
+
+  if (!m_async_complete.insert({id, r}).second) {
+    for (it = m_async_complete_expiration.begin();
+         it != m_async_complete_expiration.end(); it++) {
+      if (!(it->second != id)) {
+        m_async_complete_expiration.erase(it);
+        break;
+      }
+    }
+  }
+  auto expiration_time = now;
+  expiration_time += 600;
+  m_async_complete_expiration.insert({expiration_time, id});
+
+  return found;
+}
+
 template <typename I>
 Context *ImageWatcher<I>::remove_async_request(const AsyncRequestId &id) {
   std::unique_lock async_request_locker{m_async_request_lock};
@@ -570,13 +607,20 @@ int ImageWatcher<I>::prepare_async_request(const AsyncRequestId& async_request_i
     return -ERESTART;
   } else {
     std::unique_lock l{m_async_request_lock};
-    if (m_async_pending.count(async_request_id) == 0) {
+    if (is_new_request(async_request_id)) {
       m_async_pending.insert(async_request_id);
       *new_request = true;
       *prog_ctx = new RemoteProgressContext(*this, async_request_id);
       *ctx = new RemoteContext(*this, async_request_id, *prog_ctx);
     } else {
       *new_request = false;
+      auto it = m_async_complete.find(async_request_id);
+      if (it != m_async_complete.end()) {
+        int r = it->second;
+        // reset complete request expiration time
+        mark_async_request_complete(async_request_id, r);
+        return r;
+      }
     }
   }
   return 0;
index 2d97467617e8dfb3f8ad219bee324e7780517bfb..52b2bc18cae6c09e166e9abd42a0e64bb1518c10 100644 (file)
@@ -168,6 +168,9 @@ private:
   ceph::shared_mutex m_async_request_lock;
   std::map<watch_notify::AsyncRequestId, AsyncRequest> m_async_requests;
   std::set<watch_notify::AsyncRequestId> m_async_pending;
+  std::map<watch_notify::AsyncRequestId, int> m_async_complete;
+  std::set<std::pair<utime_t,
+                     watch_notify::AsyncRequestId>> m_async_complete_expiration;
 
   ceph::mutex m_owner_client_id_lock;
   watch_notify::ClientId m_owner_client_id;
@@ -188,6 +191,9 @@ private:
   void notify_lock_owner(const watch_notify::Payload& payload,
                          Context *on_finish);
 
+  bool is_new_request(const watch_notify::AsyncRequestId &id) const;
+  bool mark_async_request_complete(const watch_notify::AsyncRequestId &id,
+                                   int r);
   Context *remove_async_request(const watch_notify::AsyncRequestId &id);
   void schedule_async_request_timed_out(const watch_notify::AsyncRequestId &id);
   void async_request_timed_out(const watch_notify::AsyncRequestId &id);
index 07e37162b4340476b71fe98fdb8b321e1de39a22..8148607e39ff217ef48620a62689cb5058f7cf8d 100644 (file)
@@ -28,7 +28,6 @@ typedef std::map<std::string_view, std::pair<std::string, config_source_t>> Pare
 static std::set<std::string_view> EXCLUDE_OPTIONS {
     "rbd_auto_exclusive_lock_until_manual_request",
     "rbd_default_format",
-    "rbd_default_map_options",
     "rbd_default_pool",
     "rbd_discard_on_zeroed_write_same",
     "rbd_op_thread_timeout",
index 14ee0fdebf8acf99c441c7dcb1a7c00237f0d13b..00675072b4b660ef82cb16fefc68057b301af089 100644 (file)
@@ -303,14 +303,15 @@ int Image<I>::list_descendants(
     std::vector<librbd::linked_image_spec_t> *images) {
   ImageCtx *ictx = new librbd::ImageCtx("", image_id, nullptr,
                                         io_ctx, true);
+  CephContext *cct = ictx->cct;
   int r = ictx->state->open(OPEN_FLAG_SKIP_OPEN_PARENT);
   if (r < 0) {
     if (r == -ENOENT) {
       return 0;
     }
-    lderr(ictx->cct) << "failed to open descendant " << image_id
-                     << " from pool " << io_ctx.get_pool_name() << ":"
-                     << cpp_strerror(r) << dendl;
+    lderr(cct) << "failed to open descendant " << image_id
+               << " from pool " << io_ctx.get_pool_name() << ":"
+               << cpp_strerror(r) << dendl;
     return r;
   }
 
@@ -318,9 +319,9 @@ int Image<I>::list_descendants(
 
   int r1 = ictx->state->close();
   if (r1 < 0) {
-    lderr(ictx->cct) << "error when closing descendant " << image_id
-                     << " from pool " << io_ctx.get_pool_name() << ":"
-                     << cpp_strerror(r) << dendl;
+    lderr(cct) << "error when closing descendant " << image_id
+               << " from pool " << io_ctx.get_pool_name() << ":"
+               << cpp_strerror(r1) << dendl;
   }
 
   return r;
index 3a6d315813d9c51e9a18d6032e2bba377fc94062..3beadd65bc9431dbaf652f3c4bfe42ea1f182030 100644 (file)
@@ -108,8 +108,8 @@ bool WriteAroundObjectDispatch<I>::write_same(
   ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " "
                  << object_off << "~" << object_len << dendl;
 
-  return dispatch_io(object_no, object_off, object_len, 0, dispatch_result,
-                     on_finish, on_dispatched);
+  return dispatch_io(object_no, object_off, object_len, op_flags,
+                     dispatch_result, on_finish, on_dispatched);
 }
 
 template <typename I>
index cd4fd25cbb6813eff03f06eec84fcaa06a71d0ee..70ff6b98f6e6c1f576eb4d4d9130a93756145a72 100644 (file)
@@ -4,6 +4,7 @@
 #include "ImageCopyRequest.h"
 #include "ObjectCopyRequest.h"
 #include "common/errno.h"
+#include "common/WorkQueue.h"
 #include "librbd/Utils.h"
 #include "librbd/deep_copy/Handler.h"
 #include "librbd/deep_copy/Utils.h"
@@ -20,6 +21,7 @@
 namespace librbd {
 namespace deep_copy {
 
+using librbd::util::create_async_context_callback;
 using librbd::util::create_context_callback;
 using librbd::util::unique_lock_name;
 
@@ -147,11 +149,8 @@ void ImageCopyRequest<I>::send_object_copies() {
 
     // attempt to schedule at least 'max_ops' initial requests where
     // some objects might be skipped if fast-diff notes no change
-    while (m_current_ops < max_ops) {
-      int r = send_next_object_copy();
-      if (r < 0) {
-        break;
-      }
+    for (uint64_t i = 0; i < max_ops; i++) {
+      send_next_object_copy();
     }
 
     complete = (m_current_ops == 0) && !m_updating_progress;
@@ -163,7 +162,7 @@ void ImageCopyRequest<I>::send_object_copies() {
 }
 
 template <typename I>
-int ImageCopyRequest<I>::send_next_object_copy() {
+void ImageCopyRequest<I>::send_next_object_copy() {
   ceph_assert(ceph_mutex_is_locked(m_lock));
 
   if (m_canceled && m_ret_val == 0) {
@@ -171,13 +170,18 @@ int ImageCopyRequest<I>::send_next_object_copy() {
     m_ret_val = -ECANCELED;
   }
 
-  if (m_ret_val < 0) {
-    return m_ret_val;
-  } else if (m_object_no >= m_end_object_no) {
-    return -ENODATA;
+  if (m_ret_val < 0 || m_object_no >= m_end_object_no) {
+    return;
   }
 
   uint64_t ono = m_object_no++;
+  Context *ctx = new LambdaContext(
+    [this, ono](int r) {
+      handle_object_copy(ono, r);
+    });
+
+  ldout(m_cct, 20) << "object_num=" << ono << dendl;
+  ++m_current_ops;
 
   if (m_object_diff_state.size() > 0) {
     std::set<uint64_t> src_objects;
@@ -194,27 +198,20 @@ int ImageCopyRequest<I>::send_next_object_copy() {
 
     if (skip) {
       ldout(m_cct, 20) << "skipping clean object " << ono << dendl;
-      return 1;
+      create_async_context_callback(*m_src_image_ctx, ctx)->complete(0);
+      return;
     }
   }
 
-  ldout(m_cct, 20) << "object_num=" << ono << dendl;
-  ++m_current_ops;
-
   uint32_t flags = 0;
   if (m_flatten) {
     flags |= OBJECT_COPY_REQUEST_FLAG_FLATTEN;
   }
 
-  Context *ctx = new LambdaContext(
-    [this, ono](int r) {
-      handle_object_copy(ono, r);
-    });
   auto req = ObjectCopyRequest<I>::create(
     m_src_image_ctx, m_dst_image_ctx, m_src_snap_id_start, m_dst_snap_id_start,
     m_snap_map, ono, flags, m_handler, ctx);
   req->send();
-  return 0;
 }
 
 template <typename I>
@@ -249,13 +246,7 @@ void ImageCopyRequest<I>::handle_object_copy(uint64_t object_no, int r) {
       }
     }
 
-    while (true) {
-      r = send_next_object_copy();
-      if (r != 1) {
-        break;
-      }
-    }
-
+    send_next_object_copy();
     complete = (m_current_ops == 0) && !m_updating_progress;
   }
 
index 9b7934dd35adb9ae98ee3f0b7beb2015d7b2bd66..cb8b83781a5c55908df397fe4beb1444bf8fd1bb 100644 (file)
@@ -109,7 +109,7 @@ private:
   void handle_compute_diff(int r);
 
   void send_object_copies();
-  int send_next_object_copy();
+  void send_next_object_copy();
   void handle_object_copy(uint64_t object_no, int r);
 
   void finish(int r);
index 438b58716837502fe4a66e1800b9d912ab24651c..7af9cfeace895f73563e03bf2f31a020c201f82a 100644 (file)
@@ -102,6 +102,40 @@ static auto create_write_raw(librbd::ImageCtx *ictx, const char *buf,
       deleter(new UserBufferDeleter(ictx->cct, aio_completion))));
 }
 
+static int get_iovec_length(const struct iovec *iov, int iovcnt, size_t &len)
+{
+  len = 0;
+
+  if (iovcnt <= 0) {
+    return -EINVAL;
+  }
+
+  for (int i = 0; i < iovcnt; ++i) {
+    const struct iovec &io = iov[i];
+    // check for overflow
+    if (len + io.iov_len < len) {
+      return -EINVAL;
+    }
+    len += io.iov_len;
+  }
+
+  return 0;
+}
+
+static bufferlist iovec_to_bufferlist(librbd::ImageCtx *ictx,
+                                      const struct iovec *iov,
+                                      int iovcnt,
+                                      librbd::io::AioCompletion* aio_completion)
+{
+  bufferlist bl;
+  for (int i = 0; i < iovcnt; ++i) {
+    const struct iovec &io = iov[i];
+    bl.push_back(create_write_raw(ictx, static_cast<char*>(io.iov_base),
+                                  io.iov_len, aio_completion));
+  }
+  return bl;
+}
+
 CephContext* get_cct(IoCtx &io_ctx) {
   return reinterpret_cast<CephContext*>(io_ctx.cct());
 }
@@ -5980,30 +6014,16 @@ extern "C" int rbd_aio_writev(rbd_image_t image, const struct iovec *iov,
   librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
   librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c;
 
-  // convert the scatter list into a bufferlist
-  auto aio_completion = get_aio_completion(comp);
-  ssize_t len = 0;
-  bufferlist bl;
-  for (int i = 0; i < iovcnt; ++i) {
-    const struct iovec &io = iov[i];
-    len += io.iov_len;
-    if (len < 0) {
-      break;
-    }
-
-    bl.push_back(create_write_raw(ictx, static_cast<char*>(io.iov_base),
-                                  io.iov_len, aio_completion));
-  }
-
-  int r = 0;
-  if (iovcnt <= 0 || len < 0) {
-    r = -EINVAL;
-  }
+  size_t len;
+  int r = get_iovec_length(iov, iovcnt, len);
 
   tracepoint(librbd, aio_write_enter, ictx, ictx->name.c_str(),
              ictx->snap_name.c_str(), ictx->read_only, off, len, NULL,
              comp->pc);
+
   if (r == 0) {
+    auto aio_completion = get_aio_completion(comp);
+    auto bl = iovec_to_bufferlist(ictx, iov, iovcnt, aio_completion);
     ictx->io_work_queue->aio_write(aio_completion, off, len, std::move(bl), 0);
   }
   tracepoint(librbd, aio_write_exit, r);
@@ -6053,18 +6073,8 @@ extern "C" int rbd_aio_readv(rbd_image_t image, const struct iovec *iov,
   librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
   librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c;
 
-  ssize_t len = 0;
-  for (int i = 0; i < iovcnt; ++i) {
-    len += iov[i].iov_len;
-    if (len < 0) {
-      break;
-    }
-  }
-
-  int r = 0;
-  if (iovcnt == 0 || len < 0) {
-    r = -EINVAL;
-  }
+  size_t len;
+  int r = get_iovec_length(iov, iovcnt, len);
 
   tracepoint(librbd, aio_read_enter, ictx, ictx->name.c_str(),
              ictx->snap_name.c_str(), ictx->read_only, off, len, NULL,
index 65a8a05b97a462facd483cdcdb110df84d5e55ca..1461d188d5bfb71a4dd11f0cbd4803ccfed5da80 100644 (file)
@@ -216,7 +216,7 @@ void CreatePrimaryRequest<I>::unlink_peer() {
         continue;
       }
       count++;
-      if (count == 3) {
+      if (count == max_snapshots) {
         unlink_snap_id = snap_it.first;
       }
       if (count > max_snapshots) {
index 3c1ca791c60ae88df571c6b83cfd9f5a530c240b..8ca8a22fa3f6625bf09c22c0f0181e09a5589125 100644 (file)
@@ -4052,6 +4052,7 @@ void CInode::encode_cap_message(const ref_t<MClientCaps> &m, Capability *cap)
   m->mtime = i->mtime;
   m->atime = i->atime;
   m->ctime = i->ctime;
+  m->btime = i->btime;
   m->change_attr = i->change_attr;
   m->time_warp_seq = i->time_warp_seq;
   m->nfiles = i->dirstat.nfiles;
index 2a587659afdef348ebc7706e899ceafc2136b4c6..ff98c8d3cf321dc6b4171b87dcee353a0a61e139 100644 (file)
@@ -5415,6 +5415,7 @@ void Locker::file_eval(ScatterLock *lock, bool *need_issue)
   }
   else if (in->state_test(CInode::STATE_NEEDSRECOVER)) {
     mds->mdcache->queue_file_recover(in);
+    mds->mdcache->do_file_recover();
   }
 }
 
index adf46a839e61e4d760eb1d7bef06a7b38e4e886a..bcb6d6a43c1c6374c5020ec42cf36e0ecae3bca7 100644 (file)
@@ -3733,8 +3733,9 @@ bool MDCache::expire_recursive(CInode *in, expiremap &expiremap)
       return true;
     }
 
-    for (auto &it : subdir->items) {
-      CDentry *dn = it.second;
+    for (auto it = subdir->items.begin(); it != subdir->items.end();) {
+      CDentry *dn = it->second;
+      it++;
       CDentry::linkage_t *dnl = dn->get_linkage();
       if (dnl->is_primary()) {
        CInode *tin = dnl->get_inode();
@@ -5323,7 +5324,7 @@ void MDCache::rejoin_open_ino_finish(inodeno_t ino, int ret)
   cap_imports_num_opening--;
 
   if (cap_imports_num_opening == 0) {
-    if (rejoin_gather.empty())
+    if (rejoin_gather.empty() && rejoin_ack_gather.count(mds->get_nodeid()))
       rejoin_gather_finish();
     else if (rejoin_gather.count(mds->get_nodeid()))
       process_imported_caps();
@@ -5345,7 +5346,7 @@ void MDCache::rejoin_open_sessions_finish(map<client_t,pair<Session*,uint64_t> >
   dout(10) << "rejoin_open_sessions_finish" << dendl;
   mds->server->finish_force_open_sessions(session_map);
   rejoin_session_map.swap(session_map);
-  if (rejoin_gather.empty())
+  if (rejoin_gather.empty() && rejoin_ack_gather.count(mds->get_nodeid()))
     rejoin_gather_finish();
 }
 
@@ -6001,7 +6002,7 @@ bool MDCache::open_undef_inodes_dirfrags()
   MDSGatherBuilder gather(g_ceph_context,
       new MDSInternalContextWrapper(mds,
        new LambdaContext([this](int r) {
-           if (rejoin_gather.empty())
+           if (rejoin_gather.empty() && rejoin_ack_gather.count(mds->get_nodeid()))
              rejoin_gather_finish();
          })
        )
@@ -6390,14 +6391,19 @@ void MDCache::identify_files_to_recover()
 
 void MDCache::start_files_to_recover()
 {
+  int count = 0;
   for (CInode *in : rejoin_check_q) {
     if (in->filelock.get_state() == LOCK_XLOCKSNAP)
       mds->locker->issue_caps(in);
     mds->locker->check_inode_max_size(in);
+    if (!(++count % 1000))
+      mds->heartbeat_reset();
   }
   rejoin_check_q.clear();
   for (CInode *in : rejoin_recover_q) {
     mds->locker->file_recover(&in->filelock);
+    if (!(++count % 1000))
+      mds->heartbeat_reset();
   }
   if (!rejoin_recover_q.empty()) {
     rejoin_recover_q.clear();
@@ -8211,7 +8217,7 @@ int MDCache::path_traverse(MDRequestRef& mdr, MDSContextFactory& cf,
   if (mdr)
     mdr->snapid = snapid;
 
-  client_t client = (mdr && mdr->reqid.name.is_client()) ? mdr->reqid.name.num() : -1;
+  client_t client = mdr ? mdr->get_client() : -1;
 
   if (mds->logger) mds->logger->inc(l_mds_traverse);
 
index 2ee4c70b1790f04c3a96cf002a25b68b2127d932..072f367b62b49b8e018289731acb8bb44b7a1237 100644 (file)
@@ -961,7 +961,7 @@ void MDLog::_recovery_thread(MDSContext *completion)
 
       // Oh dear, something unreadable in the store for this rank: require
       // operator intervention.
-      mds->damaged();
+      mds->damaged_unlocked();
       ceph_abort();  // damaged should not return
   }
 
index f875715009170c37b793e3355d0b6bd6b33e3f34..7b3976e3513839b6c8f46e3f89decdc208127def 100644 (file)
@@ -177,6 +177,7 @@ void MDSDaemon::asok_command(
        heapcmd_vec.push_back(value);
       }
       ceph_heap_profiler_handle_command(heapcmd_vec, ss);
+      r = 0;
     }
   } else if (command == "cpu_profiler") {
     string arg;
index 4100043164036d89ed5ed2a35d8d026504a5ad90..8d992ed5adf33809126e97c3bb3a92822c003a0f 100644 (file)
@@ -2009,7 +2009,9 @@ void Server::perf_gather_op_latency(const cref_t<MClientRequest> &req, utime_t l
   case CEPH_MDS_OP_RENAMESNAP:
     code = l_mdss_req_renamesnap_latency;
     break;
-  default: ceph_abort();
+  default:
+    dout(1) << ": unknown client op" << dendl;
+    return;
   }
   logger->tinc(code, lat);   
 }
@@ -6404,6 +6406,7 @@ void Server::handle_client_link(MDRequestRef& mdr)
   if (targeti->get_projected_inode()->nlink == 0) {
     dout(7) << "target has no link, failing..." << dendl;
     respond_to_request(mdr, -ENOENT);
+    return;
   }
 
   if ((!mdr->has_more() || mdr->more()->witnessed.empty())) {
@@ -7950,7 +7953,7 @@ void Server::handle_client_rename(MDRequestRef& mdr)
     if (!check_access(mdr, destdn->get_dir()->get_inode(), MAY_WRITE))
       return;
 
-    if (!check_fragment_space(mdr, destdn->get_dir()))
+    if (!linkmerge && !check_fragment_space(mdr, destdn->get_dir()))
       return;
 
     if (!check_access(mdr, srci, MAY_WRITE))
index b99008318c5b528e44914c155813801c58813355..fa525507e8f55202f4d29d543b4d3f6956ed9927 100644 (file)
@@ -19,7 +19,7 @@
 
 class MOSDMarkMeDown : public PaxosServiceMessage {
 private:
-  static constexpr int HEAD_VERSION = 3;
+  static constexpr int HEAD_VERSION = 4;
   static constexpr int COMPAT_VERSION = 3;
 
  public:
@@ -28,6 +28,7 @@ private:
   entity_addrvec_t target_addrs;
   epoch_t epoch = 0;
   bool request_ack = false;          // ack requested
+  bool down_and_dead = false;        // mark down and dead
 
   MOSDMarkMeDown()
     : PaxosServiceMessage{MSG_OSD_MARK_ME_DOWN, 0,
@@ -38,6 +39,12 @@ private:
                          HEAD_VERSION, COMPAT_VERSION},
       fsid(fs), target_osd(osd), target_addrs(av),
       epoch(e), request_ack(request_ack) {}
+  MOSDMarkMeDown(const uuid_d &fs, int osd, const entity_addrvec_t& av,
+                epoch_t e, bool request_ack, bool down_and_dead)
+    : PaxosServiceMessage{MSG_OSD_MARK_ME_DOWN, e,
+                         HEAD_VERSION, COMPAT_VERSION},
+      fsid(fs), target_osd(osd), target_addrs(av),
+      epoch(e), request_ack(request_ack), down_and_dead(down_and_dead) {}
  private:
   ~MOSDMarkMeDown() override {}
 
@@ -62,6 +69,8 @@ public:
     decode(target_addrs, p);
     decode(epoch, p);
     decode(request_ack, p);
+    if(header.version >= 4)
+      decode(down_and_dead, p);
   }
 
   void encode_payload(uint64_t features) override {
@@ -85,12 +94,14 @@ public:
     encode(target_addrs, payload, features);
     encode(epoch, payload);
     encode(request_ack, payload);
+    encode(down_and_dead, payload);
   }
 
   std::string_view get_type_name() const override { return "MOSDMarkMeDown"; }
   void print(ostream& out) const override {
     out << "MOSDMarkMeDown("
        << "request_ack=" << request_ack
+       << ", down_and_dead=" << down_and_dead
        << ", osd." << target_osd
        << ", " << target_addrs
        << ", fsid=" << fsid
index 530c803ce48f7b2740b3bff383a6db6551ac9ffc..035aae852a8a7fd6e46869f57816e48a81ebbef3 100644 (file)
@@ -64,7 +64,7 @@ private:
   utime_t ping_stamp;               ///< when the PING was sent
   ceph::signedspan mono_ping_stamp; ///< relative to sender's clock
   ceph::signedspan mono_send_stamp; ///< replier's send stamp
-  std::optional<ceph::time_detail::signedspan> delta_ub;  ///< ping sender
+  std::optional<ceph::signedspan> delta_ub;  ///< ping sender
   epoch_t up_from = 0;
 
   uint32_t min_message_size = 0;
@@ -75,7 +75,7 @@ private:
           ceph::signedspan mss,
           epoch_t upf,
           uint32_t min_message,
-          std::optional<ceph::time_detail::signedspan> delta_ub = {})
+          std::optional<ceph::signedspan> delta_ub = {})
     : Message{MSG_OSD_PING, HEAD_VERSION, COMPAT_VERSION},
       fsid(f), map_epoch(e), op(o),
       ping_stamp(s),
index 9b5af411d394c47485e261b329a5be0e217aaf92..6d18354effd453b115db5da8299c2873e9e8adaf 100644 (file)
@@ -2635,15 +2635,24 @@ void DaemonServer::adjust_pgs()
            } else {
              active = false;
            }
+           unsigned pg_gap = p.get_pg_num() - p.get_pgp_num();
+        unsigned max_jump = cct->_conf.get_val<uint64_t>("mgr_max_pg_num_change");
            if (!active) {
              dout(10) << "pool " << i.first
                       << " pg_num_target " << p.get_pg_num_target()
                       << " pg_num " << p.get_pg_num()
                       << " - not all pgs active"
                       << dendl;
+           } else if (pg_gap >= max_jump) {
+             dout(10) << "pool " << i.first
+                      << " pg_num " << p.get_pg_num()
+                      << " - pgp_num " << p.get_pgp_num()
+                      << " gap > max_pg_num_change " << max_jump
+                      << " - must scale pgp_num first"
+                      << dendl;
            } else {
              unsigned add = std::min(
-               left,
+               std::min(left, max_jump - pg_gap),
                p.get_pg_num_target() - p.get_pg_num());
              unsigned target = p.get_pg_num() + add;
              left -= add;
index 21635974c606836df105c284e13a3ebd103afc43..5da998a94d6ed28a98976f2838fcef0154af0ba4 100644 (file)
@@ -1001,7 +1001,7 @@ COMMAND("osd pool create "
        "name=pg_num_min,type=CephInt,range=0,req=false "
        "name=autoscale_mode,type=CephChoices,strings=on|off|warn,req=false "
        "name=target_size_bytes,type=CephInt,range=0,req=false "
-       "name=target_size_ratio,type=CephFloat,range=0|1,req=false",\
+       "name=target_size_ratio,type=CephFloat,range=0.0,req=false",\
        "create pool", "osd", "rw")
 COMMAND_WITH_FLAG("osd pool delete "
        "name=pool,type=CephPoolname "
index 908d062ca8b8006240e48f90e8c3dfb5d4f38083..8741eaaaadcb5e5dd357eb11f32c02fda9e8145c 100644 (file)
@@ -378,6 +378,11 @@ int Monitor::do_admin_command(
     cmd_getval(cmdmap, "devid", want_devid);
 
     string devname = store->get_devname();
+    if (devname.empty()) {
+      err << "could not determine device name for " << store->get_path();
+      r = -ENOENT;
+      goto abort;
+    }
     set<string> devnames;
     get_raw_devices(devname, &devnames);
     json_spirit::mObject json_map;
@@ -3332,7 +3337,15 @@ void Monitor::handle_command(MonOpRequestRef op)
 
   // validate user's permissions for requested command
   map<string,string> param_str_map;
-  _generate_command_map(cmdmap, param_str_map);
+
+  // Catch bad_cmd_get exception if _generate_command_map() throws it
+  try {
+    _generate_command_map(cmdmap, param_str_map);
+  }
+  catch(bad_cmd_get& e) {
+    reply_command(op, -EINVAL, e.what(), 0);
+  }
+
   if (!_allowed_command(session, service, prefix, cmdmap,
                         param_str_map, mon_cmd)) {
     dout(1) << __func__ << " access denied" << dendl;
index 6dba96064be091d1cd2a9e0ed3ef92a61aad8dcc..9e4c57b06c8bdca373a46c45f90ab5096f9962c6 100644 (file)
@@ -57,6 +57,10 @@ class MonitorDBStore
     return devname;
   }
 
+  std::string get_path() {
+    return path;
+  }
+
   std::shared_ptr<PriorityCache::PriCache> get_priority_cache() const {
     return db->get_priority_cache();
   }
index 6865bcf10cf564c2e1326c640eac0abf36cdb28f..a2c0ce33795111599454a06614a2d0ef824a576f 100644 (file)
@@ -2957,8 +2957,14 @@ bool OSDMonitor::prepare_mark_me_down(MonOpRequestRef op)
   ceph_assert(osdmap.is_up(target_osd));
   ceph_assert(osdmap.get_addrs(target_osd) == m->target_addrs);
 
-  mon->clog->info() << "osd." << target_osd << " marked itself down";
+  mon->clog->info() << "osd." << target_osd << " marked itself " << ((m->down_and_dead) ? "down and dead" : "down");
   pending_inc.new_state[target_osd] = CEPH_OSD_UP;
+  if (m->down_and_dead) {
+    if (!pending_inc.new_xinfo.count(target_osd)) {
+      pending_inc.new_xinfo[target_osd] = osdmap.osd_xinfo[target_osd];
+    }
+    pending_inc.new_xinfo[target_osd].dead_epoch = m->get_epoch();
+  }
   if (m->request_ack)
     wait_for_finished_proposal(op, new C_AckMarkedDown(this, op));
   return true;
@@ -8538,6 +8544,11 @@ int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
            << "later before setting target_size_bytes";
         return -EINVAL;
       }
+    } else if (var == "target_size_ratio") {
+      if (f < 0.0) {
+       ss << "target_size_ratio cannot be negative";
+       return -EINVAL;
+      }
     } else if (var == "pg_num_min") {
       if (interr.length()) {
         ss << "error parsing int value '" << val << "': " << interr;
index 08ddc6b94a189e62045eac712d3a6aa901ec7b76..f920c79397f9212d60fcb189d363fdc103d80340 100644 (file)
@@ -39,8 +39,8 @@ uint64_t AvlAllocator::_pick_block_after(uint64_t *cursor,
   auto rs_start = range_tree.lower_bound(range_t{*cursor, size}, compare);
   for (auto rs = rs_start; rs != range_tree.end(); ++rs) {
     uint64_t offset = p2roundup(rs->start, align);
+    *cursor = offset + size;
     if (offset + size <= rs->end) {
-      *cursor = offset + size;
       return offset;
     }
     if (max_search_count > 0 && ++search_count > max_search_count) {
@@ -51,6 +51,7 @@ uint64_t AvlAllocator::_pick_block_after(uint64_t *cursor,
       return -1ULL;
     }
   }
+
   if (*cursor == 0) {
     // If we already started from beginning, don't bother with searching from beginning
     return -1ULL;
@@ -58,8 +59,8 @@ uint64_t AvlAllocator::_pick_block_after(uint64_t *cursor,
   // If we reached end, start from beginning till cursor.
   for (auto rs = range_tree.begin(); rs != rs_start; ++rs) {
     uint64_t offset = p2roundup(rs->start, align);
+    *cursor = offset + size;
     if (offset + size <= rs->end) {
-      *cursor = offset + size;
       return offset;
     }
     if (max_search_count > 0 && ++search_count > max_search_count) {
index 4ba6ef84f90850767fca53e2ab15e0764e02b67f..1c8cacc08e2a4df676553c09df7d0ec4bf8846a3 100644 (file)
@@ -1346,7 +1346,7 @@ bool OSDService::prepare_to_stop()
 
   OSDMapRef osdmap = get_osdmap();
   if (osdmap && osdmap->is_up(whoami)) {
-    dout(0) << __func__ << " telling mon we are shutting down" << dendl;
+    dout(0) << __func__ << " telling mon we are shutting down and dead " << dendl;
     set_state(PREPARING_TO_STOP);
     monc->send_mon_message(
       new MOSDMarkMeDown(
@@ -1354,12 +1354,14 @@ bool OSDService::prepare_to_stop()
        whoami,
        osdmap->get_addrs(whoami),
        osdmap->get_epoch(),
-       true  // request ack
+       true,  // request ack
+       true   // mark as down and dead
        ));
     const auto timeout = ceph::make_timespan(cct->_conf->osd_mon_shutdown_timeout);
     is_stopping_cond.wait_for(l, timeout,
       [this] { return get_state() == STOPPING; });
   }
+
   dout(0) << __func__ << " starting shutdown" << dendl;
   set_state(STOPPING);
   return true;
@@ -7601,6 +7603,15 @@ vector<DaemonHealthMetric> OSD::get_health_metrics()
     too_old -= cct->_conf.get_val<double>("osd_op_complaint_time");
     int slow = 0;
     TrackedOpRef oldest_op;
+    OSDMapRef osdmap = get_osdmap();
+    // map of slow op counts by slow op event type for an aggregated logging to
+    // the cluster log.
+    map<uint8_t, int> slow_op_types;
+    // map of slow op counts by pool for reporting a pool name with highest
+    // slow ops.
+    map<uint64_t, int> slow_op_pools;
+    bool log_aggregated_slow_op =
+           cct->_conf.get_val<bool>("osd_aggregated_slow_ops_logging");
     auto count_slow_ops = [&](TrackedOp& op) {
       if (op.get_initiated() < too_old) {
         stringstream ss;
@@ -7610,7 +7621,19 @@ vector<DaemonHealthMetric> OSD::get_health_metrics()
            << " currently "
            << op.state_string();
         lgeneric_subdout(cct,osd,20) << ss.str() << dendl;
-        clog->warn() << ss.str();
+        if (log_aggregated_slow_op) {
+          if (const OpRequest *req = dynamic_cast<const OpRequest *>(&op)) {
+            uint8_t op_type = req->state_flag();
+            auto m = req->get_req<MOSDFastDispatchOp>();
+            uint64_t poolid = m->get_spg().pgid.m_pool;
+            slow_op_types[op_type]++;
+            if (poolid > 0 && poolid <= (uint64_t) osdmap->get_pool_max()) {
+              slow_op_pools[poolid]++;
+            }
+          }
+        } else {
+          clog->warn() << ss.str();
+        }
        slow++;
        if (!oldest_op || op.get_initiated() < oldest_op->get_initiated()) {
          oldest_op = &op;
@@ -7624,6 +7647,32 @@ vector<DaemonHealthMetric> OSD::get_health_metrics()
       if (slow) {
        derr << __func__ << " reporting " << slow << " slow ops, oldest is "
             << oldest_op->get_desc() << dendl;
+        if (log_aggregated_slow_op &&
+             slow_op_types.size() > 0) {
+          stringstream ss;
+          ss << slow << " slow requests (by type [ ";
+          for (const auto& [op_type, count] : slow_op_types) {
+            ss << "'" << OpRequest::get_state_string(op_type)
+               << "' : " << count
+               << " ";
+          }
+          auto slow_pool_it = std::max_element(slow_op_pools.begin(), slow_op_pools.end(),
+                                 [](std::pair<uint64_t, int> p1, std::pair<uint64_t, int> p2) {
+                                   return p1.second < p2.second;
+                                 });
+          if (osdmap->get_pools().find(slow_pool_it->first) != osdmap->get_pools().end()) {
+            string pool_name = osdmap->get_pool_name(slow_pool_it->first);
+            ss << "] most affected pool [ '"
+               << pool_name
+               << "' : "
+               << slow_pool_it->second
+               << " ])";
+          } else {
+            ss << "])";
+          }
+          lgeneric_subdout(cct,osd,20) << ss.str() << dendl;
+          clog->warn() << ss.str();
+        }
       }
       metrics.emplace_back(daemon_metric::SLOW_OPS, slow, oldest_secs);
     } else {
index 94164cc3bae02da552565f9d94699f8c92d4c9ae..2a974a11aa8dc191a000ef5355607f490131a46e 100644 (file)
@@ -1935,12 +1935,20 @@ bool OSDMap::check_pg_upmaps(
     // okay, upmap is valid
     // continue to check if it is still necessary
     auto i = pg_upmap.find(pg);
-    if (i != pg_upmap.end() && raw == i->second) {
-      ldout(cct, 10) << " removing redundant pg_upmap "
-                     << i->first << " " << i->second
-                     << dendl;
-      to_cancel->push_back(pg);
-      continue;
+    if (i != pg_upmap.end()) {
+      if (i->second == raw) {
+        ldout(cct, 10) << "removing redundant pg_upmap " << i->first << " "
+                       << i->second << dendl;
+        to_cancel->push_back(pg);
+        continue;
+      }
+      if ((int)i->second.size() != get_pg_pool_size(pg)) {
+        ldout(cct, 10) << "removing pg_upmap " << i->first << " "
+                       << i->second << " != pool size " << get_pg_pool_size(pg)
+                       << dendl;
+        to_cancel->push_back(pg);
+        continue;
+      }
     }
     auto j = pg_upmap_items.find(pg);
     if (j != pg_upmap_items.end()) {
@@ -5930,7 +5938,13 @@ void OSDMap::check_health(CephContext *cct,
   }
 
   // OSD_UPGRADE_FINISHED
-  // none of these (yet) since we don't run until luminous upgrade is done.
+  if (auto require_release = pending_require_osd_release()) {
+    ostringstream ss;
+    ss << "all OSDs are running " << *require_release << " or later but"
+       << " require_osd_release < " << *require_release;
+    auto& d = checks->add("OSD_UPGRADE_FINISHED", HEALTH_WARN, ss.str(), 0);
+    d.detail.push_back(ss.str());
+  }
 
   // POOL_NEARFULL/BACKFILLFULL/FULL
   {
@@ -6147,3 +6161,17 @@ unsigned OSDMap::get_device_class_flags(int id) const
     flags = it->second;
   return flags;
 }
+
+std::optional<std::string> OSDMap::pending_require_osd_release() const
+{
+  if (HAVE_FEATURE(get_up_osd_features(), SERVER_OCTOPUS) &&
+      require_osd_release < ceph_release_t::octopus) {
+    return "octopus";
+  }
+  if (HAVE_FEATURE(get_up_osd_features(), SERVER_NAUTILUS) &&
+      require_osd_release < ceph_release_t::nautilus) {
+    return "nautilus";
+  }
+
+  return std::nullopt;
+}
index c9bb3c3184e742ef2555a79f2daff98881b697e3..0431c1d50b40119a3e750fd87e5809da4dcb5008 100644 (file)
@@ -1529,6 +1529,7 @@ public:
                        std::ostream *ss) const;
 
   float pool_raw_used_rate(int64_t poolid) const;
+  std::optional<std::string> pending_require_osd_release() const;
 
 };
 WRITE_CLASS_ENCODER_FEATURES(OSDMap)
index 37ec74f6f50b55cf8849291a1d51ba9e8b138e7e..8ca6a439f25700c48df2d25fd4cf25f150e433c9 100644 (file)
@@ -115,7 +115,11 @@ protected:
     ParallelPGMapper *m;
 
     WQ(ParallelPGMapper *m_, ThreadPool *tp)
-      : ThreadPool::WorkQueue<Item>("ParallelPGMapper::WQ", 0, 0, tp),
+      : ThreadPool::WorkQueue<Item>(
+       "ParallelPGMapper::WQ",
+       m_->cct->_conf->threadpool_default_timeout,
+       0,
+       tp),
         m(m_) {}
 
     bool _enqueue(Item *i) override {
index dc5b5e34b1f2d28cac3f653736885c4baddec828..443dbf292e2bf027336038a2ac27cad48c95f363 100644 (file)
@@ -102,6 +102,9 @@ public:
       return entity_name_t();
     }
   }
+  uint8_t state_flag() const {
+    return latest_flag_point;
+  }
 
   std::string_view state_string() const override {
     switch(latest_flag_point) {
@@ -116,6 +119,32 @@ public:
     return "no flag points reached";
   }
 
+  static std::string get_state_string(uint8_t flag) {
+    std::string flag_point;
+
+    switch(flag) {
+      case flag_queued_for_pg:
+        flag_point = "queued for pg";
+        break;
+      case flag_reached_pg:
+        flag_point = "reached pg";
+        break;
+      case flag_delayed:
+        flag_point = "delayed";
+        break;
+      case flag_started:
+        flag_point = "started";
+        break;
+      case flag_sub_op_sent:
+        flag_point = "waiting for sub ops";
+        break;
+      case flag_commit_sent:
+        flag_point = "commit sent; apply or cleanup";
+        break;
+    }
+    return flag_point;
+  }
+
   void mark_queued_for_pg() {
     mark_flag_point(flag_queued_for_pg, "queued_for_pg");
   }
index a684f2e9d437d89474f2b33950108e935e8eefee..3457f6e784382581dfe2fcf0a17df3e6936b9981 100644 (file)
@@ -3881,6 +3881,8 @@ void PeeringState::append_log(
 
   psdout(10) << __func__ << " approx pg log length =  "
             << pg_log.get_log().approx_size() << dendl;
+  psdout(10) << __func__ << " dups pg log length =  "
+            << pg_log.get_log().dups.size() << dendl;
   psdout(10) << __func__ << " transaction_applied = "
             << transaction_applied << dendl;
   if (!transaction_applied || async)
index 765c34b724b8a158e98a9166e5d6d3b9a9733460..1ad35e7841cd0c813080465d2c4649a0a68e5df5 100644 (file)
@@ -7667,6 +7667,7 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          goto fail;
        }
        t->omap_rmkeyrange(soid, key_begin, key_end);
+        ctx->clean_regions.mark_omap_dirty();
        ctx->delta_stats.num_wr++;
       }
       obs.oi.clear_omap_digest();
@@ -15285,6 +15286,9 @@ boost::statechart::result PrimaryLogPG::AwaitAsyncWork::react(const DoSnapWork&)
 
   vector<hobject_t> to_trim;
   unsigned max = pg->cct->_conf->osd_pg_max_concurrent_snap_trims;
+  // we need to look for at least 1 snaptrim, otherwise we'll misinterpret
+  // the ENOENT below and erase snap_to_trim.
+  ceph_assert(max > 0);
   to_trim.reserve(max);
   int r = pg->snap_mapper.get_next_objects_to_trim(
     snap_to_trim,
index 582bf2191f5e61b81432b7d7b795fd0bdf9e08c4..c2c5d9840e5bfdec96f1e2ae4576fe91d9859363 100644 (file)
@@ -312,6 +312,10 @@ int SnapMapper::get_next_objects_to_trim(
 {
   ceph_assert(out);
   ceph_assert(out->empty());
+
+  // if max would be 0, we return ENOENT and the caller would mistakenly
+  // trim the snaptrim queue
+  ceph_assert(max > 0);
   int r = 0;
   for (set<string>::iterator i = prefixes.begin();
        i != prefixes.end() && out->size() < max && r == 0;
@@ -646,6 +650,38 @@ bool SnapMapper::is_legacy_mapping(const string &to_test)
     LEGACY_MAPPING_PREFIX;
 }
 
+/* Octopus modified the SnapMapper key format from
+ *
+ *  <LEGACY_MAPPING_PREFIX><snapid>_<shardid>_<hobject_t::to_str()>
+ *
+ * to
+ *
+ *  <MAPPING_PREFIX><pool>_<snapid>_<shardid>_<hobject_t::to_str()>
+ *
+ * We can't reconstruct the new key format just from the value since the
+ * Mapping object contains an hobject rather than a ghobject. Instead,
+ * we exploit the fact that the new format is identical starting at <snapid>.
+ *
+ * Note that the original version of this conversion introduced in 94ebe0ea
+ * had a crucial bug which essentially destroyed legacy keys by mapping
+ * them to
+ *
+ *  <MAPPING_PREFIX><poolid>_<snapid>_
+ *
+ * without the object-unique suffix.
+ * See https://tracker.ceph.com/issues/56147
+ */
+std::string SnapMapper::convert_legacy_key(
+  const std::string& old_key,
+  const bufferlist& value)
+{
+  auto old = from_raw(make_pair(old_key, value));
+  std::string object_suffix = old_key.substr(
+    SnapMapper::LEGACY_MAPPING_PREFIX.length());
+  return SnapMapper::MAPPING_PREFIX + std::to_string(old.second.pool)
+    + "_" + object_suffix;
+}
+
 int SnapMapper::convert_legacy(
   CephContext *cct,
   ObjectStore *store,
@@ -667,13 +703,9 @@ int SnapMapper::convert_legacy(
   while (iter->valid()) {
     bool valid = SnapMapper::is_legacy_mapping(iter->key());
     if (valid) {
-      SnapMapper::Mapping m;
-      bufferlist bl(iter->value());
-      auto bp = bl.cbegin();
-      decode(m, bp);
       to_set.emplace(
-       SnapMapper::get_prefix(m.hoid.pool, m.snap),
-       bl);
+       convert_legacy_key(iter->key(), iter->value()),
+       iter->value());
       ++n;
       iter->next();
     }
index 3fbc2261a9df05038033fc6a99b0a04bf4ebc010..8571adb091c88f84548b728d1ab5f91bb8100ec6 100644 (file)
@@ -100,6 +100,7 @@ public:
  * particular snap will group under up to 8 prefixes.
  */
 class SnapMapper {
+  friend class MapperVerifier;
 public:
   CephContext* cct;
   struct object_snaps {
@@ -174,6 +175,10 @@ public:
     void run();
   };
 
+  static std::string convert_legacy_key(
+    const std::string& old_key,
+    const bufferlist& value);
+
   static int convert_legacy(
     CephContext *cct,
     ObjectStore *store,
index 1629738444b834dda71583c70fa7cab251a34a19..1b40245367332efe59b4ab63ecde422c4830a11e 100644 (file)
@@ -172,6 +172,9 @@ class SpecStore():
             service_name, specs))
         return specs
 
+    def get_created(self, spec: ServiceSpec) -> Optional[datetime.datetime]:
+        return self.spec_created.get(spec.service_name())
+
 
 class HostCache():
     """
@@ -213,8 +216,10 @@ class HostCache():
         self.facts = {}                # type: Dict[str, Dict[str, Any]]
         self.last_facts_update = {}    # type: Dict[str, datetime.datetime]
         self.osdspec_previews = {}     # type: Dict[str, List[Dict[str, Any]]]
+        self.osdspec_last_applied = {} # type: Dict[str, Dict[str, datetime.datetime]]
         self.networks = {}             # type: Dict[str, Dict[str, List[str]]]
         self.last_device_update = {}   # type: Dict[str, datetime.datetime]
+        self.last_device_change = {}   # type: Dict[str, datetime.datetime]
         self.daemon_refresh_queue = []  # type: List[str]
         self.device_refresh_queue = []  # type: List[str]
         self.osdspec_previews_refresh_queue = []  # type: List[str]
@@ -242,11 +247,14 @@ class HostCache():
                     self.last_device_update[host] = str_to_datetime(j['last_device_update'])
                 else:
                     self.device_refresh_queue.append(host)
+                if 'last_device_change' in j:
+                    self.last_device_change[host] = str_to_datetime(j['last_device_change'])
                 # for services, we ignore the persisted last_*_update
                 # and always trigger a new scrape on mgr restart.
                 self.daemon_refresh_queue.append(host)
                 self.daemons[host] = {}
                 self.osdspec_previews[host] = []
+                self.osdspec_last_applied[host] = {}
                 self.devices[host] = []
                 self.networks[host] = {}
                 self.daemon_config_deps[host] = {}
@@ -257,6 +265,8 @@ class HostCache():
                     self.devices[host].append(inventory.Device.from_json(d))
                 self.networks[host] = j.get('networks', {})
                 self.osdspec_previews[host] = j.get('osdspec_previews', {})
+                for name, ts in j.get('osdspec_last_applied', {}).items():
+                    self.osdspec_last_applied[host][name] = str_to_datetime(ts)
 
                 for name, d in j.get('daemon_config_deps', {}).items():
                     self.daemon_config_deps[host][name] = {
@@ -289,13 +299,30 @@ class HostCache():
     def update_host_facts(self, host, facts):
         # type: (str, Dict[str, Dict[str, Any]]) -> None
         self.facts[host] = facts
-        self.last_facts_update[host] = datetime.datetime.utcnow()
+        self.last_facts_update[host] = datetime_now()
+
+    def devices_changed(self, host: str, b: List[inventory.Device]) -> bool:
+        a = self.devices[host]
+        if len(a) != len(b):
+            return True
+        aj = {d.path: d.to_json() for d in a}
+        bj = {d.path: d.to_json() for d in b}
+        if aj != bj:
+            self.mgr.log.info("Detected new or changed devices on %s" % host)
+            return True
+        return False
 
     def update_host_devices_networks(self, host, dls, nets):
         # type: (str, List[inventory.Device], Dict[str,List[str]]) -> None
+        if (
+                host not in self.devices
+                or host not in self.last_device_change
+                or self.devices_changed(host, dls)
+        ):
+            self.last_device_change[host] = datetime_now()
+        self.last_device_update[host] = datetime_now()
         self.devices[host] = dls
         self.networks[host] = nets
-        self.last_device_update[host] = datetime_now()
 
     def update_daemon_config_deps(self, host: str, name: str, deps: List[str], stamp: datetime.datetime) -> None:
         self.daemon_config_deps[host][name] = {
@@ -307,6 +334,10 @@ class HostCache():
         # type: (str) -> None
         self.last_host_check[host] = datetime_now()
 
+    def update_osdspec_last_applied(self, host, service_name, ts):
+        # type: (str, str, datetime.datetime) -> None
+        self.osdspec_last_applied[host][service_name] = ts
+
     def prime_empty_host(self, host):
         # type: (str) -> None
         """
@@ -316,6 +347,7 @@ class HostCache():
         self.devices[host] = []
         self.networks[host] = {}
         self.osdspec_previews[host] = []
+        self.osdspec_last_applied[host] = {}
         self.daemon_config_deps[host] = {}
         self.daemon_refresh_queue.append(host)
         self.device_refresh_queue.append(host)
@@ -344,12 +376,15 @@ class HostCache():
             'daemons': {},
             'devices': [],
             'osdspec_previews': [],
+            'osdspec_last_applied': {},
             'daemon_config_deps': {},
         }
         if host in self.last_daemon_update:
             j['last_daemon_update'] = datetime_to_str(self.last_daemon_update[host])
         if host in self.last_device_update:
             j['last_device_update'] = datetime_to_str(self.last_device_update[host])
+        if host in self.last_device_change:
+            j['last_device_change'] = datetime_to_str(self.last_device_change[host])
         if host in self.daemons:
             for name, dd in self.daemons[host].items():
                 j['daemons'][name] = dd.to_json()
@@ -366,6 +401,9 @@ class HostCache():
                 }
         if host in self.osdspec_previews and self.osdspec_previews[host]:
             j['osdspec_previews'] = self.osdspec_previews[host]
+        if host in self.osdspec_last_applied:
+            for name, ts in self.osdspec_last_applied[host].items():
+                j['osdspec_last_applied'][name] = datetime_to_str(ts)
 
         if host in self.last_host_check:
             j['last_host_check'] = datetime_to_str(self.last_host_check[host])
@@ -389,6 +427,8 @@ class HostCache():
             del self.last_facts_update[host]
         if host in self.osdspec_previews:
             del self.osdspec_previews[host]
+        if host in self.osdspec_last_applied:
+            del self.osdspec_last_applied[host]
         if host in self.loading_osdspec_preview:
             self.loading_osdspec_preview.remove(host)
         if host in self.networks:
@@ -397,6 +437,8 @@ class HostCache():
             del self.last_daemon_update[host]
         if host in self.last_device_update:
             del self.last_device_update[host]
+        if host in self.last_device_change:
+            del self.last_device_change[host]
         if host in self.daemon_config_deps:
             del self.daemon_config_deps[host]
         if host in self.scheduled_daemon_actions:
@@ -489,7 +531,7 @@ class HostCache():
         if host in self.mgr.offline_hosts:
             logger.debug(f'Host "{host}" marked as offline. Skipping gather facts refresh')
             return False
-        cutoff = datetime.datetime.utcnow() - datetime.timedelta(
+        cutoff = datetime_now() - datetime.timedelta(
             seconds=self.mgr.facts_cache_timeout)
         if host not in self.last_facts_update or self.last_facts_update[host] < cutoff:
             return True
@@ -554,6 +596,20 @@ class HostCache():
         # already up to date:
         return False
 
+    def osdspec_needs_apply(self, host: str, spec: ServiceSpec) -> bool:
+        if (
+            host not in self.devices
+            or host not in self.last_device_change
+            or host not in self.last_device_update
+            or host not in self.osdspec_last_applied
+            or spec.service_name() not in self.osdspec_last_applied[host]
+        ):
+            return True
+        created = self.mgr.spec_store.get_created(spec)
+        if not created or created > self.last_device_change[host]:
+            return True
+        return self.osdspec_last_applied[host][spec.service_name()] < self.last_device_change[host];
+
     def update_last_etc_ceph_ceph_conf(self, host: str) -> None:
         if not self.mgr.last_monmap:
             return
index 76a4d9b765e3b730eeaa20d71c14dc07a34087ce..a4c5a0f20cc9aeb5f9ef9cd67b20cec5805461ca 100644 (file)
@@ -2238,7 +2238,6 @@ To check that the host is reachable:
                                                 replace=replace,
                                                 force=force,
                                                 hostname=daemon.hostname,
-                                                fullname=daemon.name(),
                                                 process_started_at=datetime_now(),
                                                 remove_util=self.to_remove_osds.rm_util))
             except NotFoundError:
index b1019f55fb6f2e6380823405676d5df04b6ce485..9b23558e377943c463ffa1db64a52886994759fd 100644 (file)
@@ -1,6 +1,7 @@
 import json
 import re
 import logging
+import socket
 import subprocess
 from abc import ABCMeta, abstractmethod
 from typing import TYPE_CHECKING, List, Callable, Any, TypeVar, Generic, \
@@ -122,9 +123,14 @@ class CephadmService(metaclass=ABCMeta):
         # defined, return empty Daemon Desc
         return DaemonDescription()
 
-    def _inventory_get_addr(self, hostname: str) -> str:
-        """Get a host's address with its hostname."""
-        return self.mgr.inventory.get_addr(hostname)
+    def _inventory_get_fqdn(self, hostname: str) -> str:
+        """Get a host's FQDN with its hostname.
+
+           If the FQDN can't be resolved, the address from the inventory will
+           be returned instead.
+        """
+        addr = self.mgr.inventory.get_addr(hostname)
+        return socket.getfqdn(addr)
 
     def _set_service_url_on_dashboard(self,
                                       service_name: str,
index 998acc38951c5cfad48824e7a518b7c07d790c8c..a7c820d17fd935129ddcd080f979b56aa61031af 100644 (file)
@@ -1,11 +1,14 @@
+import ipaddress
 import logging
 import os
+import socket
 from typing import List, Any, Tuple, Dict
 
 from orchestrator import DaemonDescription
 from ceph.deployment.service_spec import AlertManagerSpec
 from cephadm.services.cephadmservice import CephadmService, CephadmDaemonSpec
 from mgr_util import verify_tls, ServerConfigException, create_self_signed_cert
+from urllib.parse import urlparse
 
 logger = logging.getLogger(__name__)
 
@@ -70,7 +73,7 @@ class GrafanaService(CephadmService):
         # TODO: signed cert
         dd = self.get_active_daemon(daemon_descrs)
         service_url = 'https://{}:{}'.format(
-            self._inventory_get_addr(dd.hostname), self.DEFAULT_SERVICE_PORT)
+            self._inventory_get_fqdn(dd.hostname), self.DEFAULT_SERVICE_PORT)
         self._set_service_url_on_dashboard(
             'Grafana',
             'dashboard get-grafana-api-url',
@@ -106,9 +109,21 @@ class AlertmanagerService(CephadmService):
         proto = None  # http: or https:
         url = mgr_map.get('services', {}).get('dashboard', None)
         if url:
-            dashboard_urls.append(url)
-            proto = url.split('/')[0]
-            port = url.split('/')[2].split(':')[1]
+            p_result = urlparse(url.rstrip('/'))
+            hostname = socket.getfqdn(p_result.hostname)
+
+            try:
+                ip = ipaddress.ip_address(hostname)
+            except ValueError:
+                pass
+            else:
+                if ip.version == 6:
+                    hostname = f'[{hostname}]'
+
+            dashboard_urls.append(
+                f'{p_result.scheme}://{hostname}:{p_result.port}{"/" if not p_result.path.startswith("/") else ""}{p_result.path}')
+            proto = p_result.scheme
+            port = p_result.port
         # scan all mgrs to generate deps and to get standbys too.
         # assume that they are all on the same port as the active mgr.
         for dd in self.mgr.cache.get_daemons_by_service('mgr'):
@@ -119,8 +134,8 @@ class AlertmanagerService(CephadmService):
                 continue
             if dd.daemon_id == self.mgr.get_mgr_id():
                 continue
-            addr = self.mgr.inventory.get_addr(dd.hostname)
-            dashboard_urls.append('%s//%s:%s/' % (proto, addr.split(':')[0],
+            addr = self._inventory_get_fqdn(dd.hostname)
+            dashboard_urls.append('%s://%s:%s/' % (proto, addr.split(':')[0],
                                                   port))
 
         context = {
@@ -133,7 +148,7 @@ class AlertmanagerService(CephadmService):
         port = '9094'
         for dd in self.mgr.cache.get_daemons_by_service('alertmanager'):
             deps.append(dd.name())
-            addr = self.mgr.inventory.get_addr(dd.hostname)
+            addr = self._inventory_get_fqdn(dd.hostname)
             peers.append(addr.split(':')[0] + ':' + port)
         return {
             "files": {
@@ -151,7 +166,7 @@ class AlertmanagerService(CephadmService):
 
     def config_dashboard(self, daemon_descrs: List[DaemonDescription]) -> None:
         dd = self.get_active_daemon(daemon_descrs)
-        service_url = 'http://{}:{}'.format(self._inventory_get_addr(dd.hostname),
+        service_url = 'http://{}:{}'.format(self._inventory_get_fqdn(dd.hostname),
                                             self.DEFAULT_SERVICE_PORT)
         self._set_service_url_on_dashboard(
             'AlertManager',
@@ -194,14 +209,14 @@ class PrometheusService(CephadmService):
                 continue
             if dd.daemon_id == self.mgr.get_mgr_id():
                 continue
-            addr = self.mgr.inventory.get_addr(dd.hostname)
+            addr = self._inventory_get_fqdn(dd.hostname)
             mgr_scrape_list.append(addr.split(':')[0] + ':' + port)
 
         # scrape node exporters
         nodes = []
         for dd in self.mgr.cache.get_daemons_by_service('node-exporter'):
             deps.append(dd.name())
-            addr = self.mgr.inventory.get_addr(dd.hostname)
+            addr = self._inventory_get_fqdn(dd.hostname)
             nodes.append({
                 'hostname': dd.hostname,
                 'url': addr.split(':')[0] + ':9100'
@@ -211,7 +226,7 @@ class PrometheusService(CephadmService):
         alertmgr_targets = []
         for dd in self.mgr.cache.get_daemons_by_service('alertmanager'):
             deps.append(dd.name())
-            addr = self.mgr.inventory.get_addr(dd.hostname)
+            addr = self._inventory_get_fqdn(dd.hostname)
             alertmgr_targets.append("'{}:9093'".format(addr.split(':')[0]))
 
         # generate the prometheus configuration
@@ -246,7 +261,7 @@ class PrometheusService(CephadmService):
     def config_dashboard(self, daemon_descrs: List[DaemonDescription]) -> None:
         dd = self.get_active_daemon(daemon_descrs)
         service_url = 'http://{}:{}'.format(
-            self._inventory_get_addr(dd.hostname), self.DEFAULT_SERVICE_PORT)
+            self._inventory_get_fqdn(dd.hostname), self.DEFAULT_SERVICE_PORT)
         self._set_service_url_on_dashboard(
             'Prometheus',
             'dashboard get-prometheus-api-host',
index 8febf352b615bb4c67c1a421c21c14dd1d978ede..5b388106aae45807a85cff4f2b2bc731f9af460a 100644 (file)
@@ -12,6 +12,7 @@ from ceph.utils import datetime_to_str, str_to_datetime
 from datetime import datetime
 import orchestrator
 from cephadm.utils import forall_hosts
+from ceph.utils import datetime_now
 from orchestrator import OrchestratorError
 from mgr_module import MonCommandFailed
 
@@ -35,23 +36,40 @@ class OSDService(CephService):
 
         @forall_hosts
         def create_from_spec_one(host: str, drive_selection: DriveSelection) -> Optional[str]:
+            # skip this host if there has been no change in inventory
+            if not self.mgr.cache.osdspec_needs_apply(host, drive_group):
+                self.mgr.log.debug("skipping apply of %s on %s (no change)" % (
+                    host, drive_group))
+                return None
+
             cmd = self.driveselection_to_ceph_volume(drive_selection,
                                                      osd_id_claims.get(host, []))
             if not cmd:
                 logger.debug("No data_devices, skipping DriveGroup: {}".format(
                     drive_group.service_id))
                 return None
-            logger.info('Applying drive group %s on host %s...' % (drive_group.service_id, host))
+
+            logger.info('Applying service osd.%s on host %s...' % (
+                drive_group.service_id, host
+            ))
+            start_ts = datetime_now()
             env_vars: List[str] = [f"CEPH_VOLUME_OSDSPEC_AFFINITY={drive_group.service_id}"]
             ret_msg = self.create_single_host(
-                host, cmd, replace_osd_ids=osd_id_claims.get(host, []), env_vars=env_vars
+                drive_group, host, cmd,
+                replace_osd_ids=osd_id_claims.get(host, []), env_vars=env_vars
             )
+            self.mgr.cache.update_osdspec_last_applied(
+                host, drive_group.service_name(), start_ts
+            )
+            self.mgr.cache.save_host(host)
             return ret_msg
 
         ret = create_from_spec_one(self.prepare_drivegroup(drive_group))
         return ", ".join(filter(None, ret))
 
-    def create_single_host(self, host: str, cmd: str, replace_osd_ids: List[str],
+    def create_single_host(self,
+                           drive_group: DriveGroupSpec,
+                           host: str, cmd: str, replace_osd_ids: List[str],
                            env_vars: Optional[List[str]] = None) -> str:
         out, err, code = self._run_ceph_volume_command(host, cmd, env_vars=env_vars)
 
@@ -374,9 +392,37 @@ class RemoveUtil(object):
             'ids': [str(osd.osd_id) for osd in osds]
         })
         if ret != 0:
-            self.mgr.log.error(f"Could not set <{flag}> flag for osds: {osds}. <{err}>")
+            self.mgr.log.error(f"Could not set {flag} flag for {osds}. <{err}>")
             return False
-        self.mgr.log.info(f"OSDs <{osds}> are now <{flag}>")
+        self.mgr.log.info(f"{','.join([str(o) for o in osds])} now {flag}")
+        return True
+
+    def get_weight(self, osd: "OSD") -> Optional[float]:
+        ret, out, err = self.mgr.mon_command({
+            'prefix': 'osd crush tree',
+            'format': 'json',
+        })
+        if ret != 0:
+            self.mgr.log.error(f"Could not dump crush weights. <{err}>")
+            return None
+        j = json.loads(out)
+        for n in j.get("nodes", []):
+            if n.get("name") == f"osd.{osd.osd_id}":
+                self.mgr.log.info(f"{osd} crush weight is {n.get('crush_weight')}")
+                return n.get("crush_weight")
+        return None
+
+    def reweight_osd(self, osd: "OSD", weight: float) -> bool:
+        self.mgr.log.debug(f"running cmd: osd crush reweight on {osd}")
+        ret, out, err = self.mgr.mon_command({
+            'prefix': "osd crush reweight",
+            'name': f"osd.{osd.osd_id}",
+            'weight': weight,
+        })
+        if ret != 0:
+            self.mgr.log.error(f"Could not reweight {osd} to {weight}. <{err}>")
+            return False
+        self.mgr.log.info(f"{osd} weight is now {weight}")
         return True
 
     def safe_to_destroy(self, osd_ids: List[int]) -> bool:
@@ -433,7 +479,6 @@ class OSD:
                  replace: bool = False,
                  force: bool = False,
                  hostname: Optional[str] = None,
-                 fullname: Optional[str] = None,
                  ):
         # the ID of the OSD
         self.osd_id = osd_id
@@ -465,12 +510,12 @@ class OSD:
         self.force = force
         # The name of the node
         self.hostname = hostname
-        # The full name of the osd
-        self.fullname = fullname
 
         # mgr obj to make mgr/mon calls
         self.rm_util: RemoveUtil = remove_util
 
+        self.original_weight: Optional[float] = None
+
     def start(self) -> None:
         if self.started:
             logger.debug(f"Already started draining {self}")
@@ -482,14 +527,22 @@ class OSD:
         if self.stopped:
             logger.debug(f"Won't start draining {self}. OSD draining is stopped.")
             return False
-        self.rm_util.set_osd_flag([self], 'out')
+        if self.replace:
+            self.rm_util.set_osd_flag([self], 'out')
+        else:
+            self.original_weight = self.rm_util.get_weight(self)
+            self.rm_util.reweight_osd(self, 0.0)
         self.drain_started_at = datetime.utcnow()
         self.draining = True
         logger.debug(f"Started draining {self}.")
         return True
 
     def stop_draining(self) -> bool:
-        self.rm_util.set_osd_flag([self], 'in')
+        if self.replace:
+            self.rm_util.set_osd_flag([self], 'in')
+        else:
+            if self.original_weight:
+                self.rm_util.reweight_osd(self, self.original_weight)
         self.drain_stopped_at = datetime.utcnow()
         self.draining = False
         logger.debug(f"Stopped draining {self}.")
@@ -592,7 +645,7 @@ class OSD:
         return self.osd_id == other.osd_id
 
     def __repr__(self) -> str:
-        return f"<OSD>(osd_id={self.osd_id}, draining={self.draining})"
+        return f"osd.{self.osd_id}{' (draining)' if self.draining else ''}"
 
 
 class OSDRemovalQueue(object):
@@ -635,13 +688,13 @@ class OSDRemovalQueue(object):
             if not osd.force:
                 # skip criteria
                 if not osd.is_empty:
-                    logger.info(f"OSD <{osd.osd_id}> is not empty yet. Waiting a bit more")
+                    logger.debug(f"{osd} is not empty yet. Waiting a bit more")
                     new_queue.add(osd)
                     continue
 
             if not osd.safe_to_destroy():
-                logger.info(
-                    f"OSD <{osd.osd_id}> is not safe-to-destroy yet. Waiting a bit more")
+                logger.debug(
+                    f"{osd} is not safe-to-destroy yet. Waiting a bit more")
                 new_queue.add(osd)
                 continue
 
@@ -649,23 +702,26 @@ class OSDRemovalQueue(object):
             if not osd.down():
                 # also remove it from the remove_osd list and set a health_check warning?
                 raise orchestrator.OrchestratorError(
-                    f"Could not set OSD <{osd.osd_id}> to 'down'")
+                    f"Could not mark {osd} down")
+
+            # stop and remove daemon
+            assert osd.hostname is not None
+            self.mgr._remove_daemon(f'osd.{osd.osd_id}', osd.hostname)
+            logger.info(f"Successfully removed {osd} on {osd.hostname}")
 
             if osd.replace:
+                # mark destroyed in osdmap
                 if not osd.destroy():
                     raise orchestrator.OrchestratorError(
-                        f"Could not destroy OSD <{osd.osd_id}>")
+                        f"Could not destroy {osd}")
+                logger.info(f"Successfully destroyed old {osd} on {osd.hostname}; ready for replacement")
             else:
+                # purge from osdmap
                 if not osd.purge():
-                    raise orchestrator.OrchestratorError(f"Could not purge OSD <{osd.osd_id}>")
+                    raise orchestrator.OrchestratorError(f"Could not purge {osd}")
+                logger.info(f"Successfully purged {osd} on {osd.hostname}")
 
-            if not osd.exists:
-                continue
-            assert osd.fullname is not None
-            assert osd.hostname is not None
-            self.mgr._remove_daemon(osd.fullname, osd.hostname)
-            logger.info(f"Successfully removed OSD <{osd.osd_id}> on {osd.hostname}")
-            logger.debug(f"Removing {osd.osd_id} from the queue.")
+            logger.debug(f"Removing {osd} from the queue.")
 
         # self could change while this is processing (osds get added from the CLI)
         # The new set is: 'an intersection of all osds that are still not empty/removed (new_queue) and
index bfc0f0b99e7a90344e603ac6ea5b790fb8664937..672d9b44bdaf4947a75e9a6d6777686f0f330741 100644 (file)
@@ -129,11 +129,16 @@ def assert_rm_service(cephadm, srv_name):
 
 
 @contextmanager
-def with_service(cephadm_module: CephadmOrchestrator, spec: ServiceSpec, meth, host: str) -> Iterator[List[str]]:
-    if spec.placement.is_empty():
+def with_service(cephadm_module: CephadmOrchestrator, spec: ServiceSpec, meth=None, host: str = '') -> Iterator[List[str]]:
+    if spec.placement.is_empty() and host:
         spec.placement = PlacementSpec(hosts=[host], count=1)
-    c = meth(cephadm_module, spec)
-    assert wait(cephadm_module, c) == f'Scheduled {spec.service_name()} update...'
+    if meth is not None:
+        c = meth(cephadm_module, spec)
+        assert wait(cephadm_module, c) == f'Scheduled {spec.service_name()} update...'
+    else:
+        c = cephadm_module.apply([spec])
+        assert wait(cephadm_module, c) == [f'Scheduled {spec.service_name()} update...']
+
     specs = [d.spec for d in wait(cephadm_module, cephadm_module.describe_service())]
     assert spec in specs
 
@@ -141,7 +146,8 @@ def with_service(cephadm_module: CephadmOrchestrator, spec: ServiceSpec, meth, h
 
     dds = wait(cephadm_module, cephadm_module.list_daemons())
     own_dds = [dd for dd in dds if dd.service_name() == spec.service_name()]
-    assert own_dds
+    if host and spec.service_type != 'osd':
+        assert own_dds
 
     yield [dd.name() for dd in own_dds]
 
index ae17dd3201fe04ac2adc6cf3919068430013a07a..a8c286aef3bfe0baa0324e7a96b6e990a1c78203 100644 (file)
@@ -634,7 +634,6 @@ class TestCephadm(object):
                                                       replace=False,
                                                       force=False,
                                                       hostname='test',
-                                                      fullname='osd.0',
                                                       process_started_at=datetime_now(),
                                                       remove_util=cephadm_module.to_remove_osds.rm_util
                                                       ))
@@ -700,6 +699,7 @@ class TestCephadm(object):
     )
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     @mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _, __, ___: None)
+    @mock.patch("mgr_module.MgrModule.get", lambda _, __: {"services": {"dashboard": "http://192.168.0.123:8080"}})
     def test_daemon_add(self, spec: ServiceSpec, meth, cephadm_module):
         with with_host(cephadm_module, 'test'):
             with with_daemon(cephadm_module, spec, meth, 'test'):
@@ -865,6 +865,7 @@ class TestCephadm(object):
     )
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     @mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _, __, ___: None)
+    @mock.patch("mgr_module.MgrModule.get", lambda _, __: {"services": {"dashboard": "http://192.168.0.123:8080"}})
     def test_apply_save(self, spec: ServiceSpec, meth, cephadm_module: CephadmOrchestrator):
         with with_host(cephadm_module, 'test'):
             with with_service(cephadm_module, spec, meth, 'test'):
index 0fb81796ab38058b33a1ec0baa19113c7bdae99e..b2f27abbc4f053595f81749d616b7d4a4b6a2946 100644 (file)
@@ -105,13 +105,25 @@ class TestOSD:
         assert osd_obj.started is True
         assert osd_obj.stopped is False
 
-    def test_start_draining(self, osd_obj):
+    def test_start_draining_purge(self, osd_obj):
         assert osd_obj.draining is False
         assert osd_obj.drain_started_at is None
         ret = osd_obj.start_draining()
+        osd_obj.rm_util.reweight_osd.assert_called_with(osd_obj, 0.0)
+        assert isinstance(osd_obj.drain_started_at, datetime)
+        assert osd_obj.draining is True
+        assert osd_obj.replace is False
+        assert ret is True
+
+    def test_start_draining_replace(self, osd_obj):
+        assert osd_obj.draining is False
+        assert osd_obj.drain_started_at is None
+        osd_obj.replace = True
+        ret = osd_obj.start_draining()
         osd_obj.rm_util.set_osd_flag.assert_called_with([osd_obj], 'out')
         assert isinstance(osd_obj.drain_started_at, datetime)
         assert osd_obj.draining is True
+        assert osd_obj.replace is True
         assert ret is True
 
     def test_start_draining_stopped(self, osd_obj):
@@ -121,13 +133,22 @@ class TestOSD:
         assert ret is False
         assert osd_obj.draining is False
 
-    def test_stop_draining(self, osd_obj):
+    def test_stop_draining_replace(self, osd_obj):
+        osd_obj.replace = True
         ret = osd_obj.stop_draining()
         osd_obj.rm_util.set_osd_flag.assert_called_with([osd_obj], 'in')
         assert isinstance(osd_obj.drain_stopped_at, datetime)
         assert osd_obj.draining is False
         assert ret is True
 
+    def test_stop_draining_purge(self, osd_obj):
+        osd_obj.original_weight = 1.0
+        ret = osd_obj.stop_draining()
+        osd_obj.rm_util.reweight_osd.assert_called_with(osd_obj, 1.0)
+        assert isinstance(osd_obj.drain_stopped_at, datetime)
+        assert osd_obj.draining is False
+        assert ret is True
+
     @mock.patch('cephadm.services.osd.OSD.stop_draining')
     def test_stop(self, stop_draining_mock, osd_obj):
         ret = osd_obj.stop()
index b6ab142493b3009d42977a8aeeded2161ae22bab..7204514247294373237eb6ba951e200c59892545 100644 (file)
@@ -1,6 +1,8 @@
 import pytest
+import json
+from textwrap import dedent
 
-from unittest.mock import MagicMock, call
+from unittest.mock import MagicMock, call, patch
 
 from cephadm.services.cephadmservice import MonService, MgrService, MdsService, RgwService, \
     RbdMirrorService, CrashService, CephadmService, AuthEntity
@@ -9,7 +11,9 @@ from cephadm.services.nfs import NFSService
 from cephadm.services.osd import RemoveUtil, OSDRemovalQueue, OSDService, OSD, NotFoundError
 from cephadm.services.monitoring import GrafanaService, AlertmanagerService, PrometheusService, \
     NodeExporterService
-from ceph.deployment.service_spec import IscsiServiceSpec
+from cephadm.module import CephadmOrchestrator
+from ceph.deployment.service_spec import IscsiServiceSpec, AlertManagerSpec
+from cephadm.tests.fixtures import cephadm_module, with_host, with_service
 
 from orchestrator import OrchestratorError
 
@@ -139,3 +143,141 @@ class TestCephadmService:
                 cephadm_services[daemon_type].get_auth_entity("id1", "host")
                 cephadm_services[daemon_type].get_auth_entity("id1", "")
                 cephadm_services[daemon_type].get_auth_entity("id1")
+
+
+class TestMonitoring:
+    def _get_config(self, url: str) -> str:
+        return f"""
+        # This file is generated by cephadm.
+        # See https://prometheus.io/docs/alerting/configuration/ for documentation.
+
+        global:
+          resolve_timeout: 5m
+
+        route:
+          receiver: 'default'
+          routes:
+            - group_by: ['alertname']
+              group_wait: 10s
+              group_interval: 10s
+              repeat_interval: 1h
+              receiver: 'ceph-dashboard'
+
+        receivers:
+        - name: 'default'
+          webhook_configs:
+        - name: 'ceph-dashboard'
+          webhook_configs:
+          - url: '{url}/api/prometheus_receiver'
+        """
+
+    @patch("cephadm.module.CephadmOrchestrator._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    def test_alertmanager_config(self, mock_get, _run_cephadm,
+                                 cephadm_module: CephadmOrchestrator):
+        _run_cephadm.return_value = ('{}', '', 0)
+        mock_get.return_value = {"services": {"dashboard": "http://[::1]:8080"}}
+
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config('http://localhost:8080')).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--config-json', '-',
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
+
+    @patch("cephadm.module.CephadmOrchestrator._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    def test_alertmanager_config_v6(self, mock_get, _run_cephadm,
+                                    cephadm_module: CephadmOrchestrator):
+        dashboard_url = "http://[2001:db8:4321:0000:0000:0000:0000:0000]:8080"
+        _run_cephadm.return_value = ('{}', '', 0)
+        mock_get.return_value = {"services": {"dashboard": dashboard_url}}
+
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config(dashboard_url)).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--config-json', '-',
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
+
+    @patch("cephadm.module.CephadmOrchestrator._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    @patch("socket.getfqdn")
+    def test_alertmanager_config_v6_fqdn(self, mock_getfqdn, mock_get, _run_cephadm,
+                                         cephadm_module: CephadmOrchestrator):
+        _run_cephadm.return_value = ('{}', '', 0)
+        mock_getfqdn.return_value = "mgr.test.fqdn"
+        mock_get.return_value = {"services": {
+            "dashboard": "http://[2001:db8:4321:0000:0000:0000:0000:0000]:8080"}}
+
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config("http://mgr.test.fqdn:8080")).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--config-json', '-',
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
+
+    @patch("cephadm.module.CephadmOrchestrator._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    def test_alertmanager_config_v4(self, mock_get, _run_cephadm, cephadm_module: CephadmOrchestrator):
+        dashboard_url = "http://192.168.0.123:8080"
+        _run_cephadm.return_value = ('{}', '', 0)
+        mock_get.return_value = {"services": {"dashboard": dashboard_url}}
+
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config(dashboard_url)).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--config-json', '-',
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
+
+    @patch("cephadm.module.CephadmOrchestrator._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    @patch("socket.getfqdn")
+    def test_alertmanager_config_v4_fqdn(self, mock_getfqdn, mock_get, _run_cephadm,
+                                         cephadm_module: CephadmOrchestrator):
+        _run_cephadm.return_value = ('{}', '', 0)
+        mock_getfqdn.return_value = "mgr.test.fqdn"
+        mock_get.return_value = {"services": {"dashboard": "http://192.168.0.123:8080"}}
+
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config("http://mgr.test.fqdn:8080")).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--config-json', '-',
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
index dd614609a8dc489ff5bae7b6d07ef6343e442504..66b23ee80c36f11f306b4ed539695578342c3cc6 100644 (file)
@@ -75,7 +75,7 @@ def patch_builtin_ssl_wrap(v, new_wrap):
     if v < StrictVersion("9.0.0"):
         from cherrypy.wsgiserver.ssl_builtin import BuiltinSSLAdapter as builtin_ssl
     else:
-        from cheroot.ssl.builtin import BuiltinSSLAdapter as builtin_ssl
+        from cheroot.ssl.builtin import BuiltinSSLAdapter as builtin_ssl  # type: ignore
     builtin_ssl.wrap = new_wrap(builtin_ssl.wrap)
 
 
index e075cdc5c903ab8c57c63178b2a09bdcebe4bb8a..1c0dc508772cf16ab26d4b936426c4f5cfa50082 100644 (file)
@@ -24,5 +24,5 @@
   </noscript>
 
   <cd-root></cd-root>
-<script src="runtime.aa14b459a46eea461c85.js" defer></script><script src="polyfills.14628a6f4ca10d3018fd.js" defer></script><script src="scripts.76632aba1e576c7cc54a.js" defer></script><script src="main.aa7c24ee4ac262fc4e51.js" defer></script></body>
+<script src="runtime.aa14b459a46eea461c85.js" defer></script><script src="polyfills.14628a6f4ca10d3018fd.js" defer></script><script src="scripts.76632aba1e576c7cc54a.js" defer></script><script src="main.1ac2b6e56666a64e1346.js" defer></script></body>
 </html>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.1ac2b6e56666a64e1346.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.1ac2b6e56666a64e1346.js
new file mode 100644 (file)
index 0000000..67ce696
--- /dev/null
@@ -0,0 +1,2 @@
+/*! For license information please see main.1ac2b6e56666a64e1346.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"+0ag":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=/ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(t);return e?"dev"===e[2]?"master":e[1]:t}}},"+FhV":function(t,e,n){var a=n("IMTC")(Object.getPrototypeOf,Object);t.exports=a},"+GvH":function(t,e,n){var a=n("rk81"),r=n("ezUo"),i=n("w4fU"),s=n("2bSy"),u=n("qwH+"),o=n("0GLT"),l=n("y/5f"),d=n("uPDw"),c="[object Object]",f=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,h,g,p){var b=o(t),m=o(e),y=b?"[object Array]":u(t),v=m?"[object Array]":u(e),x=(y="[object Arguments]"==y?c:y)==c,_=(v="[object Arguments]"==v?c:v)==c,T=y==v;if(T&&l(t)){if(!l(e))return!1;b=!0,x=!1}if(T&&!x)return p||(p=new a),b||d(t)?r(t,e,n,h,g,p):i(t,e,y,n,h,g,p);if(!(1&n)){var w=x&&f.call(t,"__wrapped__"),O=_&&f.call(e,"__wrapped__");if(w||O){var S=w?t.value():t,I=O?e.value():e;return p||(p=new a),g(S,I,n,h,p)}}return!!T&&(p||(p=new a),s(t,e,n,h,g,p))}},"+GxX":function(t,e,n){var a=n("77kF"),r=n("1Yk6");t.exports=function(t,e){return a(t,r(t),e)}},"+NyF":function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},"+Wg/":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="pt-BR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Alternar navegação</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Painel de controle</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Serviços</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuração</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mapa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Módulos do gerenciador</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Registros</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pools</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloco</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Imagens</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Espelhamento</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemas de arquivos</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Usuários</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartimentos</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Selecionar Idioma</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Carregando dados do painel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Seletor de Horário do Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Redefinir Configurações</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Voltar</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Falha ao carregar dados.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>selecionado(s)</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>encontrado(s)</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descrição</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descrição extensa</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Padrão</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Padrão do daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valores</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Salvar</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visualizador de mapa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Carregando...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome de host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo é obrigatório.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sim, desejo.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fechar</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de Hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Desempenho Geral</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenhuma entrada encontrada</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Registros do Cluster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de Auditoria</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Carregando configuração...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Não foi possível carregar a configuração.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Editar módulo do gerenciador</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>O valor inserido não é um UUID válido. Ex.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>O valor inserido precisa ser um endereço IP válido.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>O valor inserido precisa ser um número.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>O valor inserido precisa ser um número ou decimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Atualizar</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID do Cluster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>época de monmap</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con obrigatório</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon obrigatório</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>No Quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Não está no Quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Adicionar</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Recursos</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flags OSD de todo o Cluster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avançado...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridade de Recuperação de OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioridade</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizar valores de prioridade</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Este campo é obrigatório!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>O valor precisa ser entre 0 e 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Reponderar</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profundo } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profundo} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista de OSDs</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Editar</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Excluir</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Saúde</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estatísticas</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clientes</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Qualquer cliente pode acessar</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Endereços</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obrigatório</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Deve conter um ou mais valores separados por vírgula</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Por exemplo:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo de Acesso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Executar Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Adicionar clientes</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Não há clusters disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Selecionar cluster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Adicionar daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend de Armazenamento</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Não há pools de dados disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Selecionar backend de armazenamento --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Usuário do Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Não há usuários disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selecionar usuário do gateway de objetos --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID de Usuário do CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Não há clientes disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Selecionar cliente do cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nome do CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Rótulo de Segurança</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar rótulo de segurança</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Caminho do CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>O caminho precisa começar com \'/\' e pode ser seguido de uma palavra</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Novo diretório será criado</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Caminho</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>O caminho pode ser apenas uma \'/\' ou uma palavra</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Novo compartimento será criado</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocolo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Clientes não podem montar subdiretórios (ou seja, se Tag = foo, o cliente não poderá montar foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Ao usar opções diferentes de Tag, o mesmo Caminho pode ser exportado várias vezes.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Ao usar opções diferentes de Pseudo, o mesmo Caminho pode ser exportado várias vezes.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Não há tipos de acesso disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Selecionar tipo de acesso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Não há squashes disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>--Selecionar que tipo de squash de ID de usuário será executado --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocolo de Transporte</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Bem-vindo ao Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nome de usuário é obrigatório</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Senha é obrigatória</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Login</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>O usuário não existe no Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Proibido</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Você não tem permissão para ver o que está procurando.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuração de RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Remova o valor de configuração local. No lugar dele, o valor de configuração pai será herdado e usado.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>O valor mínimo é 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista de Pools</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>O nome pode conter apenas caracteres alfanuméricos, traços e sublinhados.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>O nome do perfil de código de eliminação escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plug-in</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Pacotes de dados (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Deve ser igual ou maior do que 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Pacotes de codificação (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Deve ser igual ou maior do que 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimador de durabilidade (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localidade (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domínio de falha do Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localidade do Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nenhum</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Técnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tamanho do pacote</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Raiz do Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe do dispositivo do Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>qualquer</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Diretório</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nome...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>O nome do pool do Ceph escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo de pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Selecionar tipo de pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de posicionamento</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Pelo menos um grupo de posicionamento é necessário!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Seu cluster não pode processar tantos PGs. Recalcule a quantidade de PG necessária.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ajuda no cálculo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tamanho replicado</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flags</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sobregravações de EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplicativos</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil do código de eliminação</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Não há perfis de código de eliminação disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Selecionar perfil do código de eliminação --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Conjunto de regras do Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selecionar regra de crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regra de Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Etapas do Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compactação</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modo</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Não há algoritmos de compactação de eliminação disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamanho mínimo do blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>ex. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>O valor deve ser maior do que 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamanho máximo do blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>ex. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>O valor deve ser maior do que o tamanho mínimo do blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Taxa</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Taxa de compactação</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>O valor deve ser entre 0.0 e 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ex. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detalhes</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalhes de Desempenho</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalhes das Camadas do Cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Mover imagem para o lixo</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Vencimento da proteção em</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NÃO PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato de data incorreto. Use "AAAA-MM-DD HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>A proteção já venceu. Escolha uma data no futuro ou deixe-a vazia.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Mover Imagem</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Visão geral</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinos</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticação de Descoberta</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuário</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Os nomes de usuário devem ter entre 8 e 64 caracteres e\n              apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Senha</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usuário Mútuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Senha Mútua</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informações disponíveis:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool de Dados</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Criado</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tamanho</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tamanho do objeto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unidade de distribuição</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Total de distribuições</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Pai</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefixo do nome do bloco</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Ordem</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantâneos</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagem</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Esta configuração substitui o valor global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Este é o valor global. Nenhum valor para esta opção foi definido para esta imagem.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' não são permitidos.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Não há pools de RBD disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Selecionar pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Usar pool de dados dedicado</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool de dados</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool dedicado que armazena os dados de objetos do RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Você precisa aumentar o tamanho.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avançado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Distribuição</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidade de distribuição</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selecionar unidade de distribuição --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Este campo é obrigatório porque o total de distribuições foi definido!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>A unidade de distribuição é maior do que o tamanho do objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Total de distribuições</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Este campo é obrigatório porque a unidade de distribuição foi definida!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>O total de distribuições deve ser maior do que 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Você está prestes a fazer rollback</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Purgar Lixo</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tudo</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nome do pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar Imagem</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Para restaurar</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>digite o novo nome da imagem e clique em</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Novo Nome</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Venceu em</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protegido até</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Não costuma ser necessário mudar o valor padrão destes parâmetros.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Configurações</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Configurações Avançadas</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN de Destino</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN tem padrão incorreto.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Por exemplo: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Mais informações</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Este destino tem configurações avançadas modificadas.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portais</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Adicionar portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagem tem configurações modificadas.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Adicionar imagem</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticação ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciadores</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciador</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN do Cliente</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>O IQN do Iniciador precisa ser exclusivo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Os nomes de usuário devem ter entre 8 e 64 caracteres e\n                        apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>O iniciador pertence a um grupo. As imagens serão configuradas no grupo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nenhum item adicionado.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Adicionar iniciador</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupos</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Adicionar grupo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Lixo</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemas</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizando</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Pronto</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Editar modo de espelho do pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Clusters de peer devem ser removidos antes de desabilitar o espelho.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Editar} other {Adicionar} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nome do Cluster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>O nome do cluster não é válido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID do CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID do CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>O ID do CephX não é válido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Endereços do Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Endereços delimitados por vírgula...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>O endereço de monitoria não é válido.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Chave do CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Chave codificada com base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>A chave do CephX deve ser codificada com base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contadores de desempenho não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de Daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contadores de Desempenho</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Carregando dados do compartimento...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>O valor não é válido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>O nome escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Proprietário</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selecionar usuário --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Habilitado</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo de índice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regra de posicionamento</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marcador</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marcador máximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versão</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versão master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Horário da modificação</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Grupo de zonas</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Cota do compartimento</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamanho máximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Ilimitado</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Máximo de objetos</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome de usuário</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selecionar nome de usuário --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Gerar chave automaticamente</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Chave de acesso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Chave secreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nome completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Endereço de e-mail</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspenso</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Máximo de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusuários</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Recursos</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cota do usuário</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chaves</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Selecionar tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Permissão</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selecionar permissão --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusuário</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>O ID de subusuário escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>leitura, gravação</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>completo</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Chave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Gerar segredo automaticamente</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Carregando dados do usuário...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Não foi possível carregar os dados do usuário.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>O ID de usuário escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Este não é um endereço de e-mail válido.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>O endereço de e-mail escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Máx. de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Desabilitado</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizado</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Não há subusuários.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Não há chaves.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Não há recursos.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tamanho ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tamanho máx.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objetos ilimitados</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Máx. de objetos</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>O valor inserido deve ser &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descrição...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permissões</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Funções</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar senha</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>A confirmação de senha não corresponde à senha.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>E-mail inválido.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Você está prestes a remover as permissões de "leitura/atualização de usuário" do seu próprio usuário.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Se você continuar, não poderá mais adicionar ou remover funções de nenhum usuário.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Deseja realmente continuar?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Ajuda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentação</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Sobre</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Configurações do Painel de Controle</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gerenciamento de usuários</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usuário que efetuou login</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Efetuar logout</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributos (mapa OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadados não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadados</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contador de desempenho</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Gravações</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Leituras</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histograma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valores atuais</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Mín.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Máx.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origem</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Nível</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Pode ser atualizado em tempo de execução (editável)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tags</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valores de enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Consulte também</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status do Cluster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons do Gerenciador</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Gateways de Objetos</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Servidores de Metadados</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Gateways iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS do Cliente</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Throughput do Cliente</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Leitura/Gravação do Cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Remoção</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Desempenho</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacidade Bruta</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PGs por OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status do PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacidade</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Posições</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Atual</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticação de descoberta atualizada</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Não há portais disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Não há imagens disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Não há imagens disponíveis. Adicione uma imagem ao destino.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Não há iniciadores disponíveis. Adicione um iniciador ao destino.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destino</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes de Leitura</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes de Gravação</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Op. de Leitura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Op. de Gravação</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Desde</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instância</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Andamento</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modo de Edição</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Adicionar Peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Editar Peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Excluir Peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Nº Local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Nº Remoto</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>espelhar peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Chave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Nivelamento profundo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Disposição em camadas</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Bloqueio exclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa de objetos (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Registro em diário (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NÃO PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback de instantâneo do RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Fazer Rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instantâneo do RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Excluído à(s)</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>estado</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versão</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>raiz</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de standby</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Posição</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Atividade</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Uso</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Atualizado</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>É possível atualizar o valor em temo de execução.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemons/clientes não extraem este valor do\n      banco de dados de configuração do monitor. A configuração desta opção não é permitida por meio de \'ceph config\n      set ...\'. Essa opção deve ser configurada por meio do ceph.conf ou da\n      linha de comando.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>A opção entra em vigor apenas durante a inicialização do daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>A opção afeta apenas a criação do cluster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>A opção afeta apenas a criação do daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Serviço</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valor atual</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Editável</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Habilitar</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Desabilitar</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconectando, aguarde...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Endereço Público</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessões Abertas</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Não Entrada</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Os OSDs que já foram marcados como saída não serão remarcados como entrada ao serem iniciados</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Não Saída</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Os OSDs não serão automaticamente marcados como saída após o intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Não Ativo</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Os OSDs não podem ser iniciados</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Não Inativo</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Os relatórios de falha de OSD estão sendo ignorados, portanto, os monitores não marcarão os OSDs como inativos</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pausar</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pausa leituras e gravações</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Sem Remoção</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Remoção desabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Sem Remoção Profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Remoção Profunda desabilitada</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Sem Provisionamento</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Provisionamento de PGs suspenso</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Sem Recuperação</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recuperação de PGs suspensa</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Classificação Bit a Bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar classificação bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdirs Purgados</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDs converteram snapsets</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Exclusões de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Exclusões realizadas durante a recuperação, e não o emparelhamento</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite Físico do Registro de PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Atribui um limite físico ao tamanho do registro de PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flags OSD Atualizadas</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>saída</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>entrada</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>inativo</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marcar</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdido</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marcado como perdido</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Purgar</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purgado</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>destruir</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>destruído</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PGs</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes de leitura</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de gravação</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Op. de leitura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Op. de gravação</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Máx. de Provisionamentos</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Máx. Recuperação Ativo</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Máx. Recuperação Inicialização Única</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Suspensão de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Tarefa</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravidade</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Iniciado</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Usado</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Disp.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Limpar</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Em funcionamento</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Aviso</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Desconhecido</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>ativo</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>sem sistemas de arquivos</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>ativo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon ativo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>O serviço NFS Ganesha não está configurado.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transporte</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Usuário do CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Sistema de Arquivos do CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(herdado da configuração global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>herdado da configuração global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Selecionar que tipo de squash de ID de usuário será executado --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Não há daemons disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de Cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Tempo Mín. Expulsão</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Tempo Mín. Descarregamento</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Máx. de Bytes de Destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Máx. de Objetos de Destino</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nenhum aplicativo adicionado</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Limite de aplicativos atingido</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Um pool apenas pode ter até quatro definições de aplicativos.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caracteres permitidos: \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Tamanho máximo de 128 caracteres</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrar ou adicionar aplicativos</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Adicionar aplicativo</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de código de eliminação</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamanho da Réplica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Última Alteração</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil Codificado para Eliminação</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Conjunto de Regras do Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartimento</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimentos</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usuário</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuários</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Escopo</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Leitura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Criar</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Função do Sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Atualizar usuário</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuar</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Você foi automaticamente desconectado porque suas funções foram alteradas.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Cada objeto é dividido em partes de pacotes de dados, cada uma armazenada em um OSD diferente.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcule os pacotes de codificação de cada objeto e armazene-os em diferentes OSDs.\n      O número de pacotes de codificação é também o número de OSDs que podem ficar inativos sem perda de dados.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>O plug-in jerasure é o mais genérico e flexível,\n          além de ser o padrão para pools codificados para eliminação do Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>A técnica mais flexível é reed_sol_van: ela é suficiente para definir k\n          e m. A técnica cauchy_good pode ser mais rápida, mas você precisa escolher o tamanho do pacote\n          com cuidado. Todos os reed_sol_r6_op, liberation, blaum_roth e liber8tion são equivalentes ao RAID6\n          no sentido de que só podem ser configurados com m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>A codificação será feita em pacotes de tamanho de bytes um de cada vez.\n          A escolha do tamanho do pacote certo é difícil.\n          A documentação do jerasure contém informações completas sobre este tópico.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Com o plug-in jerasure, quando um objeto codificado para eliminação é armazenado em\n          vários OSDs, a recuperação após a perda de um OSD requer a leitura de todos os outros.\n          Por exemplo, se o jerasure for configurado com k=8 e m=4, a perda de um OSD exigirá a leitura\n          dos outros onze para fazer o reparo.\n\n          O plug-in de código de eliminação lrc cria pacotes locais de paridade para conseguir recuperar usando\n          menos OSDs. Por exemplo, se o lrc for configurado com k=8, m=4 e l=4, ele criará\n          um pacote de paridade adicional para cada quatro OSDs. Quando um único OSD é perdido, ele pode ser\n          recuperado apenas com quatro OSDs, em vez de onze.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Agrupe os pacotes de codificação e dados em conjuntos de localidades com tamanho. Por exemplo,\n          no caso de k=4 e m=2, quando locality=3, dois grupos de três são criados. Cada conjunto pode\n          ser recuperado sem a leitura dos pacotes do outro conjunto.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>O tipo do compartimento de crush em que cada conjunto de pacotes definido\n          por l será armazenado. Por exemplo, se isso for definido como rack, cada grupo de pacotes l será\n          colocado em um rack diferente. Isso é usado para criar uma etapa da regra CRUSH, como a etapa de escolha do\n          rack. Se isso não for definido, esse tipo de agrupamento não será feito.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>O plug-in isa encapsula a biblioteca ISA. Ele apenas é executado em processadores Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>O plug-in ISA vem em dois formatos de Reed Solomon.\n          Se reed_sol_van for definido, ele será Vandermonde, se cauchy for definido, ele será Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>O plug-in shec encapsula a biblioteca múltipla SHEC.\n          Ele permite ao ceph recuperar dados com mais eficiência do que os códigos de Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>O número de pacotes de paridade, em que cada um inclui cada pacote de dados em sua\n          faixa de cálculo. O número é usado como estimador de durabilidade. Por exemplo, se c=2,\n          2 OSDs podem ficar inativos sem perda de dados.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>O nome do compartimento de crush usado para a primeira etapa da regra CRUSH.\n      Por exemplo, a etapa assumir o padrão.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Verifique se não há dois pacotes em um compartimento com o mesmo domínio de\n      falha. Por exemplo, se o domínio de falha for um host, não armazene dois pacotes no mesmo\n      host. Isso é usado para criar uma etapa da regra CRUSH, como a etapa de escolha do host folha.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restrinja o posicionamento a dispositivos de uma classe específica\n      (ex. ssd ou hdd), usando nomes de classe de dispositivo crush no mapa CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Defina o nome do diretório do qual o plug-in de código de eliminação é carregado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas as operações</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Permite apenas as operações que não modificam o servidor</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Não permite operações de leitura ou gravação, mas permite qualquer outra operação</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Não permite leitura, gravação ou qualquer operação que modifica os atributos do arquivo ou o conteúdo do diretório</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Não permite nenhum tipo de acesso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Selecionar prioridade --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Baixa</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informações</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Últimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Últimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Últimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Última 1 hora (Padrão)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Últimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Últimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Últimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Últimas 24 horas</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ontem</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hoje</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Até agora hoje</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Antes de ontem</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Últimos 2 dias</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este dia na semana passada</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Semana anterior</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Esta semana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Até agora nesta semana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Últimos 7 dias</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Mês anterior</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este mês</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Até agora neste mês</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Últimos 30 dias</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Últimos 90 dias</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Últimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Último ano</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Ano anterior</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este ano</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Até agora neste ano</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Últimos 2 anos</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Últimos 5 anos</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nenhum item selecionado.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Desmarcar item para selecionar novamente</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de seleção atingido</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tags de filtro</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Adicionar selo</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Não há itens disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copiar</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Remoção Profunda</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Nivelar</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marcar como Inativo</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marcar como Entrada</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marcar como Perdido</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar como Saída</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renomear</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurar</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Mover para Lixo</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Cancelar proteção</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Excluído</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Nivelado</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgado</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback feito</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sim</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Não</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualidade do Serviço</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite de BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>O limite de bytes por segundo de E/S desejado.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite de IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>O limite de operações por segundo de E/S desejado.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite de BPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>O limite de bytes por segundo de leitura desejado.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite de IOPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>O limite de operações por segundo de leitura desejado.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite de BPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>O limite de bytes por segundo de gravação desejado.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite de IOPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>O limite de operações por segundo de gravação desejado.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Intermitência de BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>O limite de bytes de E/S de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Intermitência de IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>O limite de operações de E/S de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Intermitência de BPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>O limite de bytes de leitura de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Intermitência de IOPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>O limite de operações de leitura de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Intermitência de BPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>O limite de bytes de gravação de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Intermitência de IOPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>O limite de operações de gravação de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Executando</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>executar</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Executado</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tarefa desconhecida</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Criando</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>criar</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Atualizando</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>atualizar</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Excluindo</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonando</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clonar</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copiando</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copiar</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Nivelando</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>nivelar</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Fazendo rollback</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Movendo</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>mover</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Movido</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Imagem não encontrada.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Restaurando</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurar</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Purgando</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>purgar</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>todos os pools</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossível desabilitar espelhamento porque ele contém um peer.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"+Z6c":function(t,e,n){var a=n("TbD+"),r=n("LJNh")((function(t,e){return null==t?{}:a(t,e)}));t.exports=r},"+fVR":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{setExpandedRow(t){this.expandedRow=t}}},"+gVj":function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return i})),n.d(e,"e",(function(){return l})),n.d(e,"f",(function(){return g})),n.d(e,"g",(function(){return c})),n.d(e,"h",(function(){return h}));var a=n("8Y7J"),r=n("s7LF");class i{constructor(){this.validSubmit=new a.EventEmitter}onSubmit(){this.markAsTouchedAndDirty(this.formGroup),this.formGroup.valid&&this.validSubmit.emit(this.formGroup.value)}markAsTouchedAndDirty(t){t instanceof r.k?Object.keys(t.controls).forEach(e=>this.markAsTouchedAndDirty(t.controls[e])):t instanceof r.f?t.controls.forEach(t=>this.markAsTouchedAndDirty(t)):t instanceof r.i&&t.enabled&&(t.markAsDirty(),t.markAsTouched(),t.updateValueAndValidity())}}const s=function(){var t={Three:0,Four:1};return t[t.Three]="Three",t[t.Four]="Four",t}(),u=new a.InjectionToken("ng-bootstrap-form-validation custom error messages"),o=new a.InjectionToken("ng-bootstrap-form-validation module options");class l{constructor(t){this.bootstrapVersion=t,this.messages=()=>[]}get className(){switch(this.bootstrapVersion){case s.Three:return"help-block";case s.Four:return"invalid-feedback"}}}const d=[{error:"required",format:t=>t+" is required"},{error:"pattern",format:t=>t+" is invalid"},{error:"minlength",format:(t,e)=>`${t} must be at least ${e.requiredLength} characters`},{error:"maxlength",format:(t,e)=>`${t} must be no longer than ${e.requiredLength} characters`},{error:"requiredTrue",format:(t,e)=>t+" is required"},{error:"email",format:(t,e)=>"Invalid email address"},{error:"max",format:(t,e)=>`${t} must be no greater than ${e.max}`},{error:"min",format:(t,e)=>`${t} must be no less than ${e.min}`}];let c=(()=>{class t{constructor(t){this.customErrorMessages=t,this.defaultErrors=d,this.errorMessages=t.reduce((t,e)=>t.concat(e),this.defaultErrors)}}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(u))},token:t,providedIn:"root"}),t})();class f{constructor(t,e){this.elRef=t,this.errorMessageService=e,this.customErrorMessages=[],this.validationDisabled=!1,this.messages=()=>this.getMessages()}get hasErrors(){return this.FormControlNames.some(t=>!t.valid&&t.dirty&&t.touched)&&!this.validationDisabled}get hasSuccess(){return!this.FormControlNames.some(t=>!t.valid)&&this.FormControlNames.some(t=>t.dirty&&t.touched)&&!this.validationDisabled}ngAfterContentInit(){this.messagesBlock&&(this.messagesBlock.messages=this.messages)}ngOnInit(){this.errorMessages=this.errorMessageService.errorMessages.concat(this.customErrorMessages).reverse()}get label(){const t=this.elRef.nativeElement.querySelector("label");return t&&t.textContent?t.textContent.trim():"This field"}get isDirtyAndTouched(){return this.FormControlNames.some(t=>t.dirty&&t.touched)}getMessages(){const t=[];if(!this.isDirtyAndTouched||this.validationDisabled)return t;const e=this.FormControlNames.map(t=>t.name);return this.FormControlNames.filter((t,n)=>!t.valid&&!!t.errors&&e.indexOf(t.name)===n).forEach(e=>{Object.keys(e.errors).forEach(n=>{const a=this.errorMessages.find(t=>t.error===n);a&&t.push(a.format(this.label,e.errors[n]))})}),t}}class h{constructor(t,e){this.parent=t,this.bootstrapVersion=e}get validClass(){return!!this.control&&this.bootstrapFour&&this.control.valid&&(this.control.touched||this.control.dirty)}get invalidClass(){return!!this.control&&this.bootstrapFour&&this.control.invalid&&this.control.touched&&this.control.dirty}get path(){return[...this.parent.path,this.formControlName]}get control(){return this.formDirective&&this.formDirective.getControl(this)}get formDirective(){return this.parent?this.parent.formDirective:null}get bootstrapFour(){return this.bootstrapVersion===s.Four}}class g{static forRoot(t={bootstrapVersion:s.Four}){return{ngModule:g,providers:[{provide:u,useValue:t.customErrorMessages||[],multi:!0},{provide:o,useValue:t.bootstrapVersion},c]}}}},"+s0g":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"+xYL":function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},"//9w":function(t,e,n){!function(t){"use strict";t.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"/F2L":function(t,e,n){var a=n("emnf"),r=n("G3uG")(a);t.exports=r},"/GqU":function(t,e,n){var a=n("RK3t"),r=n("HYAF");t.exports=function(t){return a(r(t))}},"/Gx3":function(t,e,n){var a=n("aHcz"),r=n("8V0S"),i=n("/F2L");t.exports=function(t,e){return i(r(t,e,a),t+"")}},"/NlG":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("8Y7J"),r=n("oxzT");class i{constructor(t){this.i18n=t,this.title="",this.bootstrapClass="",this.backAction=new a.EventEmitter,this.size="normal",this.showIcon=!0,this.showTitle=!0,this.dismissible=!1,this.dismissed=new a.EventEmitter,this.icons=r.a}ngOnInit(){switch(this.type){case"warning":this.title=this.title||this.i18n("Warning"),this.typeIcon=this.typeIcon||r.a.warning,this.bootstrapClass=this.bootstrapClass||"warning";break;case"error":this.title=this.title||this.i18n("Error"),this.typeIcon=this.typeIcon||r.a.destroyCircle,this.bootstrapClass=this.bootstrapClass||"danger";break;case"info":this.title=this.title||this.i18n("Information"),this.typeIcon=this.typeIcon||r.a.infoCircle,this.bootstrapClass=this.bootstrapClass||"info";break;case"success":this.title=this.title||this.i18n("Success"),this.typeIcon=this.typeIcon||r.a.check,this.bootstrapClass=this.bootstrapClass||"success";break;case"danger":this.title=this.title||this.i18n("Danger"),this.typeIcon=this.typeIcon||r.a.warning,this.bootstrapClass=this.bootstrapClass||"danger"}}onClose(){this.dismissed.emit()}}},"/OPJ":function(t,e,n){var a=n("0Dky"),r=n("2oRo").RegExp;t.exports=a((function(){var t=r(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)}))},"/X5v":function(t,e,n){!function(t){"use strict";t.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"/b8u":function(t,e,n){var a=n("STAE");t.exports=a&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},"/byt":function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},"/rd/":function(t,e,n){var a=n("im1V"),r=n("x3F9");t.exports=function(t){return r(t)&&a(t)}},0:function(t,e,n){t.exports=n("zUnb")},"0+/T":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("s7LF"),r=n("QFaf");n("sb0X");class i{constructor(t){this.modalRef=t,this.actionDescription="delete"}ngOnInit(){const t={confirmation:new a.i(!1,[a.B.requiredTrue])};if(this.childFormGroup&&(t.child=this.childFormGroup),this.deletionForm=new r.a(t),!this.submitAction&&!this.submitActionObservable)throw new Error("No submit action defined")}callSubmitAction(){this.submitActionObservable?this.submitActionObservable().subscribe(null,this.stopLoadingSpinner.bind(this),this.hideModal.bind(this)):this.submitAction()}hideModal(){this.modalRef.hide()}stopLoadingSpinner(){this.deletionForm.setErrors({cdSubmitButton:!0})}}},"02OF":function(t,e,n){var a=n("IfUl"),r=n("j09V"),i=n("lEOU"),s=n("Y3RO"),u=n("pcUq"),o=n("PHub"),l=n("0GLT"),d=n("/rd/"),c=n("y/5f"),f=n("Q7RW"),h=n("hmSm"),g=n("CslI"),p=n("uPDw"),b=n("dCge"),m=n("eAIQ");t.exports=function(t,e,n,y,v,x,_){var T=b(t,n),w=b(e,n),O=_.get(w);if(O)a(t,n,O);else{var S=x?x(T,w,n+"",t,e,_):void 0,I=void 0===S;if(I){var N=l(w),C=!N&&c(w),R=!N&&!C&&p(w);S=w,N||C||R?l(T)?S=T:d(T)?S=s(T):C?(I=!1,S=r(w,!0)):R?(I=!1,S=i(w,!0)):S=[]:g(w)||o(w)?(S=T,o(T)?S=m(T):h(T)&&!f(T)||(S=u(w))):I=!1}I&&(_.set(w,S),v(S,w,y,x,_),_.delete(w)),a(t,n,S)}}},"07d7":function(t,e,n){var a=n("AO7/"),r=n("busE"),i=n("sEFX");a||r(Object.prototype,"toString",i,{unsafe:!0})},"0BK2":function(t,e){t.exports={}},"0BcO":function(t,e,n){var a=n("KFwg")(n("Wa4q"),"WeakMap");t.exports=a},"0Dky":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"0EUg":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("bHdf");function r(){return Object(a.a)(1)}},"0GLT":function(t,e){t.exports=Array.isArray},"0GbY":function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=function(t){return r(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(a[t]):a[t]&&a[t][e]}},"0eef":function(t,e,n){"use strict";var a={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!a.call({1:2},1);e.f=i?function(t){var e=r(this,t);return!!e&&e.enumerable}:a},"0mo+":function(t,e,n){!function(t){"use strict";var e={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};t.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(t){return t.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(t,e){return 12===t&&(t=0),"མཚན་མོ"===e&&t>=4||"ཉིན་གུང"===e&&t<5||"དགོང་དག"===e?t+12:t},meridiem:function(t,e,n){return t<4?"མཚན་མོ":t<10?"ཞོགས་ཀས":t<17?"ཉིན་གུང":t<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("wd/R"))},"0nKi":function(t,e){t.exports=function(t){return function(e){return t(e)}}},"0rEg":function(t,e){t.exports=function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}},"0rvr":function(t,e,n){var a=n("4zBA"),r=n("glrk"),i=n("O741");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=a(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(s){}return function(n,a){return r(n),i(a),e?t(n,a):n.__proto__=a,n}}():void 0)},"0tRk":function(t,e,n){!function(t){"use strict";t.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n("wd/R"))},"128B":function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("Kqap"),r=n("BFxc"),i=n("xbPD"),s=n("mCNh");function u(t,e){return arguments.length>=2?function(n){return Object(s.a)(Object(a.a)(t,e),Object(r.a)(1),Object(i.a)(e))(n)}:function(e){return Object(s.a)(Object(a.a)((e,n,a)=>t(e,n,a+1)),Object(r.a)(1))(e)}}},"14R3":function(t,e){"undefined"!=typeof Element&&("function"!=typeof Element.prototype.matches&&(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.webkitMatchesSelector||function(t){for(var e=(this.document||this.ownerDocument).querySelectorAll(t),n=0;e[n]&&e[n]!==this;)++n;return Boolean(e[n])}),"function"!=typeof Element.prototype.closest&&(Element.prototype.closest=function(t){for(var e=this;e&&1===e.nodeType;){if(e.matches(t))return e;e=e.parentNode}return null}))},"14Sl":function(t,e,n){"use strict";n("rB9j");var a=n("4zBA"),r=n("busE"),i=n("kmMV"),s=n("0Dky"),u=n("tiKp"),o=n("kRJp"),l=u("species"),d=RegExp.prototype;t.exports=function(t,e,n,c){var f=u(t),h=!s((function(){var e={};return e[f]=function(){return 7},7!=""[t](e)})),g=h&&!s((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[f]=/./[f]),n.exec=function(){return e=!0,null},n[f](""),!e}));if(!h||!g||n){var p=a(/./[f]),b=e(f,""[t],(function(t,e,n,r,s){var u=a(t),o=e.exec;return o===i||o===d.exec?h&&!s?{done:!0,value:p(e,n,r)}:{done:!0,value:u(n,e,r)}:{done:!1}}));r(String.prototype,t,b[0]),r(d,f,b[1])}c&&o(d[f],"sham",!0)}},"1E5z":function(t,e,n){var a=n("m/L8").f,r=n("Gi26"),i=n("tiKp")("toStringTag");t.exports=function(t,e,n){t&&!n&&(t=t.prototype),t&&!r(t,i)&&a(t,i,{configurable:!0,value:e})}},"1Ni5":function(t,e,n){"use strict";n.d(e,"b",(function(){return f})),n.d(e,"a",(function(){return h}));var a=n("s7LF"),r=n("LvDl"),i=n("LRne"),s=n("PqYM"),u=n("aGrj"),o=n("lJxs"),l=n("IzEk"),d=n("Fgil"),c=n("aXbf");function f(t){return null==t||0===t.length}class h{static email(t){return f(t.value)?null:a.B.email(t)}static ip(t=0){const e=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i,n=/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i;return a.B.pattern(4===t?e:6===t?n:new RegExp(e.source+"|"+n.source))}static number(t=!0){return a.B.pattern(t?/^-?[0-9]+$/i:/^[0-9]+$/i)}static decimalNumber(t=!0){return a.B.pattern(t?/^-?[0-9]+(.[0-9]+)?$/i:/^[0-9]+(.[0-9]+)?$/i)}static sslCert(){return a.B.pattern(/^-----BEGIN CERTIFICATE-----(\n|\r|\f)((.+)?((\n|\r|\f).+)*)(\n|\r|\f)-----END CERTIFICATE-----[\n\r\f]*$/)}static sslPrivKey(){return a.B.pattern(/^-----BEGIN RSA PRIVATE KEY-----(\n|\r|\f)((.+)?((\n|\r|\f).+)*)(\n|\r|\f)-----END RSA PRIVATE KEY-----[\n\r\f]*$/)}static requiredIf(t,e){let n=!1;return a=>(!n&&a.parent&&(Object.keys(t).forEach(t=>{a.parent.get(t).valueChanges.subscribe(()=>{a.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(e=>{if(!a.parent)return!1;const n=a.parent.get(e).value,i=t[e];if(r.isObjectLike(i)){let t=!1;switch(i.op){case"empty":t=r.isEmpty(n);break;case"!empty":t=!r.isEmpty(n);break;case"equal":t=n===i.arg1;break;case"!equal":t=n!==i.arg1;break;case"minLength":r.isString(n)&&(t=n.length>=i.arg1)}return t}return n===i})&&(r.isFunction(e)?e.call(e,a.value):f(a.value))?{required:!0}:null)}static composeIf(t,e){let n=!1;return r=>(!n&&r.parent&&(Object.keys(t).forEach(t=>{r.parent.get(t).valueChanges.subscribe(()=>{r.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(e=>r.parent&&r.parent.get(e).value===t[e])?a.B.compose(e)(r):null)}static custom(t,e){return n=>{const a=e.call(this,n.value);return a?{[t]:a}:null}}static validateIf(t,e,n,r=[],i=[]){n=n.concat(r),t.setValidators(t=>e.call(this)?a.B.compose(n)(t):r.length>0?a.B.compose(r)(t):null),i.forEach(e=>{e.valueChanges.subscribe(()=>{t.updateValueAndValidity({emitEvent:!1})})})}static match(t,e){return n=>{const a=n.get(t),i=n.get(e);if(!a||!i)return null;if(a.value!==i.value)i.setErrors({match:!0});else if(i.hasError("match")){const t=i.errors;r.unset(t,"match"),i.setErrors(r.isEmpty(r.keys(t))?null:t)}return null}}static unique(t,e=null,n,a=!1){let d;return c=>c.pristine||f(c.value)?Object(i.a)(null):(d=c.value,r.isFunction(n)&&null!==n()&&""!==n()&&(d=a?`${c.value}$${n()}`:`${n()}$${c.value}`),Object(s.a)().pipe(Object(u.a)(t.call(e,d)),Object(o.a)(t=>t?{notUnique:!0}:null),Object(l.a)(1)))}static uuid(t=!1){const e=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return n=>n.pristine&&n.untouched?null:t||n.value?e.test(n.value)?null:{invalidUuid:"This is not a valid UUID"}:null}static binaryMin(t){return e=>{const n=new c.a,a=(new c.a).toBytes(e.value);if(t<=a)return null;const r=new d.a(n).transform(t);return{binaryMin:t=>t("Size has to be at least {{value}} or more",{value:r})}}}static binaryMax(t){return e=>{const n=new c.a,a=n.toBytes(e.value);if(t>=a)return null;const r=new d.a(n).transform(t);return{binaryMax:t=>t("Size has to be at most {{value}} or less",{value:r})}}}static passwordPolicy(t,e,n){return a=>{if(a.pristine||""===a.value)return r.isFunction(n)&&n(!0,0),Object(i.a)(null);let d;return r.isFunction(e)&&(d=e()),Object(s.a)(500).pipe(Object(u.a)(r.invoke(t,"validatePassword",a.value,d)),Object(o.a)(t=>(r.isFunction(n)&&n(t.valid,t.credits,t.valuation),t.valid?null:{passwordPolicy:!0})),Object(l.a)(1))}}}},"1Y/n":function(t,e,n){var a=n("2oRo"),r=n("We1y"),i=n("ewvW"),s=n("RK3t"),u=n("B/qT"),o=a.TypeError,l=function(t){return function(e,n,a,l){r(n);var d=i(e),c=s(d),f=u(d),h=t?f-1:0,g=t?-1:1;if(a<2)for(;;){if(h in c){l=c[h],h+=g;break}if(h+=g,t?h<0:f<=h)throw o("Reduce of empty array with no initial value")}for(;t?h>=0:f>h;h+=g)h in c&&(l=n(l,c[h],h,d));return l}};t.exports={left:l(!1),right:l(!0)}},"1Yk6":function(t,e,n){var a=n("IyEx"),r=n("kA6G"),i=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols;t.exports=s?function(t){return null==t?[]:(t=Object(t),a(s(t),(function(e){return i.call(t,e)})))}:r},"1nQr":function(t,e,n){"use strict";var a=n("LvDl"),r=n("lJxs"),i=n("20UP");class s{constructor(t){this.pwdPolicyEnabled=t.pwd_policy_enabled,this.pwdPolicyMinLength=t.pwd_policy_min_length,this.pwdPolicyCheckLengthEnabled=t.pwd_policy_check_length_enabled,this.pwdPolicyCheckOldpwdEnabled=t.pwd_policy_check_oldpwd_enabled,this.pwdPolicyCheckUsernameEnabled=t.pwd_policy_check_username_enabled,this.pwdPolicyCheckExclusionListEnabled=t.pwd_policy_check_exclusion_list_enabled,this.pwdPolicyCheckRepetitiveCharsEnabled=t.pwd_policy_check_repetitive_chars_enabled,this.pwdPolicyCheckSequentialCharsEnabled=t.pwd_policy_check_sequential_chars_enabled,this.pwdPolicyCheckComplexityEnabled=t.pwd_policy_check_complexity_enabled}}var u=n("8Y7J"),o=n("GiVz");n.d(e,"a",(function(){return l}));let l=(()=>{class t{constructor(t,e){this.i18n=t,this.settingsService=e}getHelpText(){return this.settingsService.getStandardSettings().pipe(Object(r.a)(t=>{const e=new s(t);let n=[];if(e.pwdPolicyEnabled){n.push(this.i18n("Required rules for passwords:"));const t={pwdPolicyCheckLengthEnabled:this.i18n("Must contain at least {{length}} characters",{length:e.pwdPolicyMinLength}),pwdPolicyCheckOldpwdEnabled:this.i18n("Must not be the same as the previous one"),pwdPolicyCheckUsernameEnabled:this.i18n("Cannot contain the username"),pwdPolicyCheckExclusionListEnabled:this.i18n("Cannot contain any configured keyword"),pwdPolicyCheckRepetitiveCharsEnabled:this.i18n('Cannot contain any repetitive characters e.g. "aaa"'),pwdPolicyCheckSequentialCharsEnabled:this.i18n('Cannot contain any sequential characters e.g. "abc"'),pwdPolicyCheckComplexityEnabled:this.i18n("Must consist of characters from the following groups:\n  * Alphabetic a-z, A-Z\n  * Numbers 0-9\n  * Special chars: !\"#$%& '()*+,-./:;<=>?@[\\]^_`{{|}}~\n  * Any other characters (signs)")};n=n.concat(a.keys(t).filter(t=>a.get(e,t)).map(e=>"- "+a.get(t,e)))}return n.join("\n")}))}mapCreditsToCssClass(t){let e="very-strong";return t<10?e="too-weak":t<15?e="weak":t<20?e="ok":t<25&&(e="strong"),e}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](o.a),u["ɵɵinject"](i.a))},token:t,providedIn:"root"}),t})()},"1rYy":function(t,e,n){!function(t){"use strict";t.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(t){return/^(ցերեկվա|երեկոյան)$/.test(t)},meridiem:function(t){return t<4?"գիշերվա":t<12?"առավոտվա":t<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-ին":t+"-րդ";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},"1xZ4":function(t,e,n){!function(t){"use strict";t.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"è";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})}(n("wd/R"))},"20UP":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("LvDl"),r=n("lJxs"),i=n("8Y7J"),s=n("IheW"),u=n("pL04");let o=(()=>{class t{constructor(t){this.http=t,this.settings={}}getValues(t){return a.isArray(t)&&(t=t.join(",")),this.http.get("api/settings?names="+t).pipe(Object(r.a)(t=>{const e={};return a.forEach(t,t=>{a.set(e,t.name,t.value)}),e}))}ifSettingConfigured(t,e,n){const a=this.settings[t];void 0===a?this.http.get(t).subscribe(a=>{this.settings[t]=this.getSettingsValue(a),this.ifSettingConfigured(t,e,n)},e=>{401!==e.status&&(this.settings[t]="")}):""!==a?e(a):n&&n()}disableSetting(t){this.settings[t]=""}getSettingsValue(t){return t.value||t.instance||""}validateGrafanaDashboardUrl(t){return this.http.get("api/grafana/validation/"+t)}getStandardSettings(){return this.http.get("ui-api/standard_settings")}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.c))},token:t,providedIn:u.a}),t})()},2316:function(t,e,n){var a=n("LWR0"),r=n("hmSm");t.exports=function(t,e,n){var i=!0,s=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return r(n)&&(i="leading"in n?!!n.leading:i,s="trailing"in n?!!n.trailing:s),a(t,e,{leading:i,maxWait:e,trailing:s})}},"25BL":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("DqMs"),i=n("/NlG"),s=n("GiVz"),u=n("SVse"),o=n("FE24"),l=n("z/SZ"),d=n("GS7A"),c=n("s7LF"),f=n("w9WL"),h=a["ɵcrt"]({encapsulation:2,styles:[".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;-webkit-transform:translate3d(0,0,0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable :after,.ngx-datatable :before{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-header-inner,.ngx-datatable .datatable-row-center{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:0}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:0}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:0}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}"],data:{}});function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"datatable-header",[["class","datatable-header"]],[[4,"height",null],[4,"width",null]],[[null,"sort"],[null,"resize"],[null,"reorder"],[null,"select"],[null,"columnContextmenu"]],(function(t,e,n){var a=!0,r=t.component;return"sort"===e&&(a=!1!==r.onColumnSort(n)&&a),"resize"===e&&(a=!1!==r.onColumnResize(n)&&a),"reorder"===e&&(a=!1!==r.onColumnReorder(n)&&a),"select"===e&&(a=!1!==r.onHeaderSelect(n)&&a),"columnContextmenu"===e&&(a=!1!==r.onColumnContextmenu(n)&&a),a}),x,m)),a["ɵdid"](1,180224,[[2,4]],0,f.i,[a.ChangeDetectorRef],{sortAscendingIcon:[0,"sortAscendingIcon"],sortDescendingIcon:[1,"sortDescendingIcon"],scrollbarH:[2,"scrollbarH"],dealsWithGroup:[3,"dealsWithGroup"],targetMarkerTemplate:[4,"targetMarkerTemplate"],innerWidth:[5,"innerWidth"],sorts:[6,"sorts"],sortType:[7,"sortType"],allRowsSelected:[8,"allRowsSelected"],selectionType:[9,"selectionType"],reorderable:[10,"reorderable"],headerHeight:[11,"headerHeight"],columns:[12,"columns"],offsetX:[13,"offsetX"]},{sort:"sort",reorder:"reorder",resize:"resize",select:"select",columnContextmenu:"columnContextmenu"}),a["ɵpid"](131072,u.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,1,[n.cssClasses.sortAscending,n.cssClasses.sortDescending,n.scrollbarH,void 0!==n.groupedRows,n.targetMarkerTemplate,n._innerWidth,n.sorts,n.sortType,n.allRowsSelected,n.selectionType,n.reorderable,n.headerHeight,n._internalColumns,a["ɵunv"](e,1,13,a["ɵnov"](e,2).transform(n._offsetX))])}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).headerHeight,a["ɵnov"](e,1).headerWidth)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-footer",[["class","datatable-footer"]],null,[[null,"page"]],(function(t,e,n){var a=!0;return"page"===e&&(a=!1!==t.component.onFooterPage(n)&&a),a}),Nt,_t)),a["ɵdid"](1,49152,null,0,f.f,[],{footerHeight:[0,"footerHeight"],rowCount:[1,"rowCount"],pageSize:[2,"pageSize"],offset:[3,"offset"],pagerLeftArrowIcon:[4,"pagerLeftArrowIcon"],pagerRightArrowIcon:[5,"pagerRightArrowIcon"],pagerPreviousIcon:[6,"pagerPreviousIcon"],pagerNextIcon:[7,"pagerNextIcon"],totalMessage:[8,"totalMessage"],footerTemplate:[9,"footerTemplate"],selectedCount:[10,"selectedCount"],selectedMessage:[11,"selectedMessage"]},{page:"page"})],(function(t,e){var n=e.component;t(e,1,1,[n.footerHeight,n.rowCount,n.pageSize,n.offset,n.cssClasses.pagerLeftArrow,n.cssClasses.pagerRightArrow,n.cssClasses.pagerPrevious,n.cssClasses.pagerNext,n.messages.totalMessage,n.footer,n.selected.length,!!n.selectionType&&n.messages.selectedMessage])}),null)}function b(t){return a["ɵvid"](2,[a["ɵqud"](671088640,1,{bodyComponent:0}),a["ɵqud"](671088640,2,{headerComponent:0}),(t()(),a["ɵeld"](2,0,null,null,8,"div",[["visibilityObserver",""]],[[2,"visible",null]],[[null,"visible"]],(function(t,e,n){var a=!0;return"visible"===e&&(a=!1!==t.component.recalculate()&&a),a}),null,null)),a["ɵdid"](3,212992,null,0,f.B,[a.ElementRef,a.NgZone],null,{visible:"visible"}),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](6,0,null,null,2,"datatable-body",[["class","datatable-body"]],[[4,"width",null],[4,"height",null]],[[null,"page"],[null,"activate"],[null,"rowContextmenu"],[null,"select"],[null,"scroll"],[null,"treeAction"]],(function(t,e,n){var a=!0,r=t.component;return"page"===e&&(a=!1!==r.onBodyPage(n)&&a),"activate"===e&&(a=!1!==r.activate.emit(n)&&a),"rowContextmenu"===e&&(a=!1!==r.onRowContextmenu(n)&&a),"select"===e&&(a=!1!==r.onBodySelect(n)&&a),"scroll"===e&&(a=!1!==r.onBodyScroll(n)&&a),"treeAction"===e&&(a=!1!==r.onTreeAction(n)&&a),a}),F,R)),a["ɵdid"](7,245760,[[1,4]],0,f.c,[a.ChangeDetectorRef],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],loadingIndicator:[2,"loadingIndicator"],externalPaging:[3,"externalPaging"],rowHeight:[4,"rowHeight"],offsetX:[5,"offsetX"],emptyMessage:[6,"emptyMessage"],selectionType:[7,"selectionType"],selected:[8,"selected"],rowIdentity:[9,"rowIdentity"],rowDetail:[10,"rowDetail"],groupHeader:[11,"groupHeader"],selectCheck:[12,"selectCheck"],displayCheck:[13,"displayCheck"],trackByProp:[14,"trackByProp"],rowClass:[15,"rowClass"],groupedRows:[16,"groupedRows"],groupExpansionDefault:[17,"groupExpansionDefault"],innerWidth:[18,"innerWidth"],groupRowsBy:[19,"groupRowsBy"],virtualization:[20,"virtualization"],summaryRow:[21,"summaryRow"],summaryPosition:[22,"summaryPosition"],summaryHeight:[23,"summaryHeight"],pageSize:[24,"pageSize"],rows:[25,"rows"],columns:[26,"columns"],offset:[27,"offset"],rowCount:[28,"rowCount"],bodyHeight:[29,"bodyHeight"]},{scroll:"scroll",page:"page",activate:"activate",select:"select",rowContextmenu:"rowContextmenu",treeAction:"treeAction"}),a["ɵpid"](131072,u.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](10,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0),t(e,5,0,n.headerHeight),t(e,7,1,[n.scrollbarV,n.scrollbarH,n.loadingIndicator,n.externalPaging,n.rowHeight,a["ɵunv"](e,7,5,a["ɵnov"](e,8).transform(n._offsetX)),n.messages.emptyMessage,n.selectionType,n.selected,n.rowIdentity,n.rowDetail,n.groupHeader,n.selectCheck,n.displayCheck,n.trackByProp,n.rowClass,n.groupedRows,n.groupExpansionDefault,n._innerWidth,n.groupRowsBy,n.virtualization,n.summaryRow,n.summaryPosition,n.summaryHeight,n.pageSize,n._internalRows,n._internalColumns,n.offset,n.rowCount,n.bodyHeight]),t(e,10,0,n.footerHeight)}),(function(t,e){t(e,2,0,a["ɵnov"](e,3).isVisible),t(e,6,0,a["ɵnov"](e,7).bodyWidth,a["ɵnov"](e,7).bodyHeight)}))}var m=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"datatable-header-cell",[["class","datatable-header-cell"],["draggable",""],["long-press",""],["resizeable",""]],[[2,"resizeable",null],[2,"press",null],[2,"longpress",null],[4,"height","px"],[8,"className",0],[1,"title",0],[4,"minWidth","px"],[4,"maxWidth","px"],[4,"width","px"]],[[null,"resize"],[null,"longPressStart"],[null,"longPressEnd"],[null,"sort"],[null,"select"],[null,"columnContextmenu"],[null,"mousedown"],[null,"contextmenu"]],(function(t,e,n){var r=!0,i=t.component;return"mousedown"===e&&(r=!1!==a["ɵnov"](t,2).onMousedown(n)&&r),"mousedown"===e&&(r=!1!==a["ɵnov"](t,3).onMouseDown(n)&&r),"contextmenu"===e&&(r=!1!==a["ɵnov"](t,4).onContextmenu(n)&&r),"resize"===e&&(r=!1!==i.onColumnResized(n,t.context.$implicit)&&r),"longPressStart"===e&&(r=!1!==i.onLongPressStart(n)&&r),"longPressEnd"===e&&(r=!1!==i.onLongPressEnd(n)&&r),"sort"===e&&(r=!1!==i.onSort(n)&&r),"select"===e&&(r=!1!==i.select.emit(n)&&r),"columnContextmenu"===e&&(r=!1!==i.columnContextmenu.emit(n)&&r),r}),C,_)),a["ɵdid"](1,671744,[[1,4]],0,f.s,[a.ElementRef],{dragEventTarget:[0,"dragEventTarget"],dragModel:[1,"dragModel"],dragX:[2,"dragX"],dragY:[3,"dragY"]},null),a["ɵdid"](2,4341760,null,0,f.x,[a.ElementRef,a.Renderer2],{resizeEnabled:[0,"resizeEnabled"]},{resize:"resize"}),a["ɵdid"](3,147456,null,0,f.t,[],{pressEnabled:[0,"pressEnabled"],pressModel:[1,"pressModel"]},{longPressStart:"longPressStart",longPressEnd:"longPressEnd"}),a["ɵdid"](4,49152,null,0,f.h,[a.ChangeDetectorRef],{sortType:[0,"sortType"],sortAscendingIcon:[1,"sortAscendingIcon"],sortDescendingIcon:[2,"sortDescendingIcon"],isTarget:[3,"isTarget"],targetMarkerTemplate:[4,"targetMarkerTemplate"],targetMarkerContext:[5,"targetMarkerContext"],allRowsSelected:[6,"allRowsSelected"],selectionType:[7,"selectionType"],column:[8,"column"],headerHeight:[9,"headerHeight"],sorts:[10,"sorts"]},{sort:"sort",select:"select",columnContextmenu:"columnContextmenu"})],(function(t,e){var n=e.component;t(e,1,0,n.dragEventTarget,e.context.$implicit,n.reorderable&&e.context.$implicit.draggable&&e.context.$implicit.dragging,!1),t(e,2,0,e.context.$implicit.resizeable),t(e,3,0,n.reorderable&&e.context.$implicit.draggable,e.context.$implicit),t(e,4,1,[n.sortType,n.sortAscendingIcon,n.sortDescendingIcon,e.context.$implicit.isTarget,n.targetMarkerTemplate,e.context.$implicit.targetMarkerContext,n.allRowsSelected,n.selectionType,e.context.$implicit,n.headerHeight,n.sorts])}),(function(t,e){t(e,0,0,a["ɵnov"](e,2).resizeEnabled,a["ɵnov"](e,3).press,a["ɵnov"](e,3).isLongPress,a["ɵnov"](e,4).headerHeight,a["ɵnov"](e,4).columnCssClasses,a["ɵnov"](e,4).name,a["ɵnov"](e,4).minWidth,a["ɵnov"](e,4).maxWidth,a["ɵnov"](e,4).width)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[8,"className",0]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](4,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,2,0,n._styleByGroup[e.context.$implicit.type]),t(e,4,0,e.context.$implicit.columns,n.columnTrackingFn)}),(function(t,e){t(e,0,0,"datatable-row-"+e.context.$implicit.type)}))}function x(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","datatable-header-inner"],["orderable",""]],[[4,"width","px"]],[[null,"reorder"],[null,"targetChanged"]],(function(t,e,n){var a=!0,r=t.component;return"reorder"===e&&(a=!1!==r.onColumnReordered(n)&&a),"targetChanged"===e&&(a=!1!==r.onTargetChanged(n)&&a),a}),null,null)),a["ɵdid"](1,1196032,null,1,f.v,[a.KeyValueDiffers,u.DOCUMENT],null,{reorder:"reorder",targetChanged:"targetChanged"}),a["ɵqud"](603979776,1,{draggables:1}),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](4,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,4,0,n._columnsByPin,n.trackByGroups)}),(function(t,e){t(e,0,0,e.component._columnGroupWidths.total)}))}var _=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function T(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.targetMarkerContext,n.targetMarkerTemplate)}),null)}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==r.select.emit(!r.allRowsSelected)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.allRowsSelected)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","datatable-header-cell-wrapper"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"span",[["class","datatable-header-cell-label draggable"]],[[8,"innerHTML",1]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSort()&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.name)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.headerTemplate)}),null)}function C(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","datatable-header-cell-template-wrap"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,S)),a["ɵdid"](6,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](8,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](9,0,null,null,0,"span",[],[[8,"className",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSort()&&a),a}),null,null))],(function(t,e){var n=e.component;t(e,2,0,n.isTarget),t(e,4,0,n.isCheckboxable),t(e,6,0,!n.column.headerTemplate),t(e,8,0,n.column.headerTemplate)}),(function(t,e){t(e,9,0,e.component.sortClass)}))}var R=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-progress",[],null,null,null,rt,at)),a["ɵdid"](1,49152,null,0,f.w,[],null,null)],null,null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,xt,yt)),a["ɵdid"](1,573440,null,0,f.m,[],{rows:[0,"rows"],columns:[1,"columns"],rowHeight:[2,"rowHeight"],offsetX:[3,"offsetX"],innerWidth:[4,"innerWidth"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)}),null)}function E(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"treeAction"],[null,"activate"],[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0,i=t.component;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction(t.parent.context.$implicit)&&r),"activate"===e&&(r=!1!==a["ɵnov"](t.parent.parent.parent,2).onActivate(n,i.indexes.first+t.parent.context.index)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],expanded:[2,"expanded"],rowClass:[3,"rowClass"],row:[4,"row"],isSelected:[5,"isSelected"],rowIndex:[6,"rowIndex"],displayCheck:[7,"displayCheck"],treeStatus:[8,"treeStatus"],offsetX:[9,"offsetX"],rowHeight:[10,"rowHeight"]},{activate:"activate",treeAction:"treeAction"})],(function(t,e){var n=e.component;t(e,1,1,[n.columns,n.innerWidth,n.getRowExpanded(e.parent.context.$implicit),n.rowClass,e.parent.context.$implicit,a["ɵnov"](e.parent.parent.parent,2).getRowSelected(e.parent.context.$implicit),n.getRowIndex(e.parent.context.$implicit),n.displayCheck,e.parent.context.$implicit.treeStatus,n.offsetX,n.getRowHeight(e.parent.context.$implicit)])}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"activate"],[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),"activate"===e&&(r=!1!==a["ɵnov"](t.parent.parent.parent.parent,2).onActivate(n,t.context.index)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],expanded:[2,"expanded"],rowClass:[3,"rowClass"],row:[4,"row"],group:[5,"group"],isSelected:[6,"isSelected"],rowIndex:[7,"rowIndex"],offsetX:[8,"offsetX"],rowHeight:[9,"rowHeight"]},{activate:"activate"})],(function(t,e){var n=e.component;t(e,1,0,n.columns,n.innerWidth,n.getRowExpanded(e.context.$implicit),n.rowClass,e.context.$implicit,e.parent.parent.context.$implicit.value,a["ɵnov"](e.parent.parent.parent.parent,2).getRowSelected(e.context.$implicit),n.getRowIndex(e.context.$implicit),n.offsetX,n.getRowHeight(e.context.$implicit))}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function D(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,L)),a["ɵdid"](1,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.parent.context.$implicit.value,e.component.rowTrackingFn)}),null)}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"datatable-row-wrapper",[["class","datatable-row-wrapper"]],null,[[null,"rowContextmenu"],[null,"contextmenu"]],(function(t,e,n){var r=!0,i=t.component;return"contextmenu"===e&&(r=!1!==a["ɵnov"](t,3).onContextmenu(n)&&r),"rowContextmenu"===e&&(r=!1!==i.rowContextmenu.emit(n)&&r),r}),pt,ut)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),a["ɵdid"](3,311296,null,0,f.k,[a.ChangeDetectorRef,a.KeyValueDiffers],{innerWidth:[0,"innerWidth"],rowDetail:[1,"rowDetail"],groupHeader:[2,"groupHeader"],offsetX:[3,"offsetX"],detailRowHeight:[4,"detailRowHeight"],row:[5,"row"],groupedRows:[6,"groupedRows"],rowIndex:[7,"rowIndex"],expanded:[8,"expanded"]},{rowContextmenu:"rowContextmenu"}),(t()(),a["ɵand"](16777216,null,0,1,null,E)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["groupedRowsTemplate",2]],0,0,null,D))],(function(t,e){var n=e.component;t(e,2,0,n.getRowsStyles(e.context.$implicit)),t(e,3,0,n.innerWidth,n.rowDetail,n.groupHeader,n.offsetX,n.getDetailRowHeight(e.context.$implicit[e.context.index],e.context.index),e.context.$implicit,n.groupedRows,n.getRowIndex(e.context.$implicit[e.context.index]),n.getRowExpanded(e.context.$implicit)),t(e,5,0,!n.groupedRows,a["ɵnov"](e,6))}),null)}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,xt,yt)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),a["ɵdid"](3,573440,null,0,f.m,[],{rows:[0,"rows"],columns:[1,"columns"],rowHeight:[2,"rowHeight"],offsetX:[3,"offsetX"],innerWidth:[4,"innerWidth"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.getBottomSummaryRowStyles()),t(e,3,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)}),null)}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"datatable-scroller",[["class","datatable-scroll"]],[[4,"height","px"],[4,"width","px"]],[[null,"scroll"]],(function(t,e,n){var a=!0;return"scroll"===e&&(a=!1!==t.component.onBodyScroll(n)&&a),a}),st,it)),a["ɵdid"](1,245760,[[1,4]],0,f.z,[a.NgZone,a.ElementRef,a.Renderer2],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],scrollHeight:[2,"scrollHeight"],scrollWidth:[3,"scrollWidth"]},{scroll:"scroll"}),(t()(),a["ɵand"](16777216,null,0,1,null,k)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,P)),a["ɵdid"](5,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,M)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.scrollbarV,n.scrollbarH,n.scrollHeight,null==n.columnGroupWidths?null:n.columnGroupWidths.total),t(e,3,0,n.summaryRow&&"top"===n.summaryPosition),t(e,5,0,n.temp,n.rowTrackingFn),t(e,7,0,n.summaryRow&&"bottom"===n.summaryPosition)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).scrollHeight,a["ɵnov"](e,1).scrollWidth)}))}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","empty-row"]],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,0,0,e.component.emptyMessage)}))}function F(t){return a["ɵvid"](2,[a["ɵqud"](671088640,1,{scroller:0}),(t()(),a["ɵeld"](1,0,null,null,7,"datatable-selection",[],null,[[null,"select"],[null,"activate"]],(function(t,e,n){var a=!0,r=t.component;return"select"===e&&(a=!1!==r.select.emit(n)&&a),"activate"===e&&(a=!1!==r.activate.emit(n)&&a),a}),mt,bt)),a["ɵdid"](2,49152,[["selector",4]],0,f.l,[],{rows:[0,"rows"],selected:[1,"selected"],selectEnabled:[2,"selectEnabled"],selectionType:[3,"selectionType"],rowIdentity:[4,"rowIdentity"],selectCheck:[5,"selectCheck"]},{activate:"activate",select:"select"}),(t()(),a["ɵand"](16777216,null,0,1,null,A)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,q)),a["ɵdid"](6,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,j)),a["ɵdid"](8,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.rows,n.selected,n.selectEnabled,n.selectionType,n.rowIdentity,n.selectCheck),t(e,4,0,n.loadingIndicator),t(e,6,0,null==n.rows?null:n.rows.length),t(e,8,0,!(null!=n.rows&&n.rows.length||n.loadingIndicator))}),null)}var V=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onCheckboxChange(n)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.isSelected)}))}function B(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-collapse"]],null,null,null,null,null))],null,null)}function z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-up"]],null,null,null,null,null))],null,null)}function Y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-down"]],null,null,null,null,null))],null,null)}function H(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"button",[["class","datatable-tree-button"]],[[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onTreeAction()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,B)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,z)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Y)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"loading"===n.treeStatus),t(e,5,0,"collapsed"===n.treeStatus),t(e,7,0,"expanded"===n.treeStatus||"disabled"===n.treeStatus)}),(function(t,e){t(e,0,0,"disabled"===e.component.treeStatus)}))}function U(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function W(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,U)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](2,{cellContext:0}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,2,0,n.cellContext);t(e,1,0,a,n.column.treeToggleTemplate)}),null)}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,H)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,W)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!n.column.treeToggleTemplate),t(e,4,0,n.column.treeToggleTemplate)}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[],[[8,"title",0],[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.sanitizedValue,n.value)}))}function J(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function Z(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,[[1,3],["cellTemplate",2]],null,1,null,J)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.cellTemplate)}),null)}function Q(t){return a["ɵvid"](2,[a["ɵqud"](402653184,1,{cellTemplate:0}),(t()(),a["ɵeld"](1,0,null,null,8,"div",[["class","datatable-body-cell-label"]],[[4,"margin-left","px"]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,K)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,$)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Z)),a["ɵdid"](9,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.column.checkboxable&&(!n.displayCheck||n.displayCheck(n.row,n.column,n.value))),t(e,5,0,n.column.isTreeColumn),t(e,7,0,!n.column.cellTemplate),t(e,9,0,n.column.cellTemplate)}),(function(t,e){var n=e.component;t(e,1,0,n.calcLeftMargin(n.column,n.row))}))}var X=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-cell",[["tabindex","-1"]],[[8,"className",0],[4,"width","px"],[4,"minWidth","px"],[4,"maxWidth","px"],[4,"height",null]],[[null,"activate"],[null,"treeAction"],[null,"focus"],[null,"blur"],[null,"click"],[null,"dblclick"],[null,"keydown"]],(function(t,e,n){var r=!0,i=t.component;return"focus"===e&&(r=!1!==a["ɵnov"](t,1).onFocus()&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onBlur()&&r),"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick(n)&&r),"dblclick"===e&&(r=!1!==a["ɵnov"](t,1).onDblClick(n)&&r),"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"activate"===e&&(r=!1!==i.onActivate(n,t.context.index)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction()&&r),r}),Q,V)),a["ɵdid"](1,442368,null,0,f.b,[a.ElementRef,a.ChangeDetectorRef],{displayCheck:[0,"displayCheck"],group:[1,"group"],rowHeight:[2,"rowHeight"],isSelected:[3,"isSelected"],expanded:[4,"expanded"],rowIndex:[5,"rowIndex"],column:[6,"column"],row:[7,"row"],treeStatus:[8,"treeStatus"]},{activate:"activate",treeAction:"treeAction"})],(function(t,e){var n=e.component;t(e,1,0,n.displayCheck,n.group,n.rowHeight,n.isSelected,n.expanded,n.rowIndex,e.context.$implicit,n.row,n.treeStatus)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).columnCssClasses,a["ɵnov"](e,1).width,a["ɵnov"](e,1).minWidth,a["ɵnov"](e,1).maxWidth,a["ɵnov"](e,1).height)}))}function et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[8,"className",0]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,tt)),a["ɵdid"](4,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,2,0,n._groupStyles[e.context.$implicit.type]),t(e,4,0,e.context.$implicit.columns,n.columnTrackingFn)}),(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"datatable-row-",e.context.$implicit.type," datatable-row-group"))}))}function nt(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,et)),a["ɵdid"](1,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,1,0,n._columnsByPin,n.trackByGroups)}),null)}var at=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function rt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","progress-linear"],["role","progressbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","container"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,0,"div",[["class","bar"]],null,null,null,null,null))],null,null)}var it=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function st(t){return a["ɵvid"](2,[a["ɵncd"](null,0)],null,null)}var ut=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ot(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function lt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,ot)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.groupContext,n.groupHeader.template)}),null)}function dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","datatable-group-header"]],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,lt)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.getGroupHeaderStyle()),t(e,4,0,n.groupHeader&&n.groupHeader.template)}),null)}function ct(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,null)}function ft(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function ht(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,ft)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.rowContext,n.rowDetail.template)}),null)}function gt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","datatable-row-detail"]],[[4,"height","px"]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ht)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.rowDetail&&n.rowDetail.template)}),(function(t,e){t(e,0,0,e.component.detailRowHeight)}))}function pt(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,dt)),a["ɵdid"](1,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ct)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,gt)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.groupHeader&&n.groupHeader.template),t(e,3,0,n.groupHeader&&n.groupHeader.template&&n.expanded||!n.groupHeader||!n.groupHeader.template),t(e,5,0,n.rowDetail&&n.rowDetail.template&&n.expanded)}),null)}var bt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function mt(t){return a["ɵvid"](2,[a["ɵncd"](null,0)],null,null)}var yt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function vt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],row:[2,"row"],rowIndex:[3,"rowIndex"],offsetX:[4,"offsetX"],rowHeight:[5,"rowHeight"]},null)],(function(t,e){var n=e.component;t(e,1,0,n._internalColumns,n.innerWidth,n.summaryRow,-1,n.offsetX,n.rowHeight)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function xt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,vt)),a["ɵdid"](1,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.summaryRow&&n._internalColumns)}),null)}var _t=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Tt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function wt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,Tt)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](2,{rowCount:0,pageSize:1,selectedCount:2,curPage:3,offset:4}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,2,0,n.rowCount,n.pageSize,n.selectedCount,n.curPage,n.offset);t(e,1,0,a,n.footerTemplate.template)}),null)}function Ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "," / "]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.selectedCount?null:n.selectedCount.toLocaleString(),n.selectedMessage)}))}function St(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ot)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](3,null,[" "," "," "]))],(function(t,e){t(e,2,0,e.component.selectedMessage)}),(function(t,e){var n=e.component;t(e,3,0,null==n.rowCount?null:n.rowCount.toLocaleString(),n.totalMessage)}))}function It(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-pager",[["class","datatable-pager"]],[[8,"hidden",0]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.page.emit(n)&&a),a}),At,Ct)),a["ɵdid"](1,49152,null,0,f.j,[],{pagerLeftArrowIcon:[0,"pagerLeftArrowIcon"],pagerRightArrowIcon:[1,"pagerRightArrowIcon"],pagerPreviousIcon:[2,"pagerPreviousIcon"],pagerNextIcon:[3,"pagerNextIcon"],size:[4,"size"],count:[5,"count"],page:[6,"page"]},{change:"change"})],(function(t,e){var n=e.component;t(e,1,0,n.pagerLeftArrowIcon,n.pagerRightArrowIcon,n.pagerPreviousIcon,n.pagerNextIcon,n.pageSize,n.rowCount,n.curPage)}),(function(t,e){t(e,0,0,!e.component.isVisible)}))}function Nt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","datatable-footer-inner"]],[[4,"height","px"]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{"selected-count":0}),(t()(),a["ɵand"](16777216,null,null,1,null,wt)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,St)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,It)),a["ɵdid"](9,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=t(e,3,0,n.selectedMessage);t(e,2,0,"datatable-footer-inner",a),t(e,5,0,n.footerTemplate),t(e,7,0,!n.footerTemplate),t(e,9,0,!n.footerTemplate)}),(function(t,e){t(e,0,0,e.component.footerHeight)}))}var Ct=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[["class","pages"],["role","button"]],[[1,"aria-label",0],[2,"active",null]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"a",[["href","javascript:void(0)"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectPage(t.context.$implicit.number)&&a),a}),null,null)),(t()(),a["ɵted"](2,null,[" "," "]))],null,(function(t,e){t(e,0,0,"page "+e.context.$implicit.number,e.context.$implicit.number===e.component.page),t(e,2,0,e.context.$implicit.text)}))}function At(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,14,"ul",[["class","pager"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"a",[["aria-label","go to first page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectPage(1)&&a),a}),null,null)),(t()(),a["ɵeld"](3,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](4,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"a",[["aria-label","go to previous page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.prevPage()&&a),a}),null,null)),(t()(),a["ɵeld"](6,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Rt)),a["ɵdid"](8,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](9,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](10,0,null,null,1,"a",[["aria-label","go to next page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.nextPage()&&a),a}),null,null)),(t()(),a["ɵeld"](11,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](12,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](13,0,null,null,1,"a",[["aria-label","go to last page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectPage(r.totalPages)&&a),a}),null,null)),(t()(),a["ɵeld"](14,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null))],(function(t,e){t(e,8,0,e.component.pages)}),(function(t,e){var n=e.component;t(e,1,0,!n.canPrevious()),t(e,3,0,a["ɵinlineInterpolate"](1,"",n.pagerPreviousIcon,"")),t(e,4,0,!n.canPrevious()),t(e,6,0,a["ɵinlineInterpolate"](1,"",n.pagerLeftArrowIcon,"")),t(e,9,0,!n.canNext()),t(e,11,0,a["ɵinlineInterpolate"](1,"",n.pagerRightArrowIcon,"")),t(e,12,0,!n.canNext()),t(e,14,0,a["ɵinlineInterpolate"](1,"",n.pagerNextIcon,""))}))}var kt=n("JxMD"),Et=n("dgut"),Lt=n("Fgil"),Dt=n("iInd"),Pt=n("4DD9"),Mt=n("yT6U"),qt=n("TJUb"),jt=n("efK2");n("uIqm"),n.d(e,"a",(function(){return Ft})),n.d(e,"b",(function(){return Oe}));var Ft=a["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.dataTables_wrapper[_ngcontent-%COMP%]{margin-bottom:25px}.dataTables_wrapper[_ngcontent-%COMP%]   .separator[_ngcontent-%COMP%]{height:30px;border-left:1px solid rgba(0,0,0,.09);padding-left:5px;margin-left:5px;display:inline-block;vertical-align:middle}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]{float:right;border-left:1px solid rgba(0,0,0,.09);padding:0 8px}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-left:0}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]{white-space:nowrap}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{cursor:default}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{width:100%;margin-bottom:0;padding-left:0;padding-right:0;cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dataTables_length[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{line-height:25px;text-align:right}.dataTables_header[_ngcontent-%COMP%]{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative}.dataTables_header[_ngcontent-%COMP%]   .cd-datatable-actions[_ngcontent-%COMP%]{float:left}.dataTables_header[_ngcontent-%COMP%]     .table-filters{float:right;border-left:1px solid rgba(0,0,0,.09);padding-left:8px}.dataTables_header[_ngcontent-%COMP%]     .table-filters label{margin-right:4px}.dataTables_header[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]{padding-left:8px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]{float:right;border-left:1px solid rgba(0,0,0,.09);padding-left:8px;padding-right:8px;width:40%;max-width:250px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%]{height:30px}.dataTables_header[_ngcontent-%COMP%]   .input-group.dataTables_paginate[_ngcontent-%COMP%]{width:8%;min-width:85px;padding-right:8px}.dataTables_header[_ngcontent-%COMP%]   .filter-chips[_ngcontent-%COMP%]{float:right;padding:0 8px}  .cd-datatable{border:1px solid #d1d1d1;margin-bottom:0;max-width:none!important}  .cd-datatable .progress-linear{display:block;position:relative;width:100%;height:5px;padding:0;margin:0}  .cd-datatable .progress-linear .container{background-color:#afd9ee}  .cd-datatable .progress-linear .container .bar{left:0;height:100%;width:100%;position:absolute;overflow:hidden;background-color:#afd9ee}  .cd-datatable .progress-linear .container .bar:before{display:block;position:absolute;content:"";left:-200px;width:200px;height:100%;background-color:#2b99a8;animation:3s linear infinite progress-loading}  .cd-datatable .datatable-header{background-clip:padding-box;background-color:#f5f5f5;background-image:linear-gradient(to bottom,#f5f5f5 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffafafa", endColorstr="#ffededed", GradientType=0)}  .cd-datatable .datatable-header .sort-asc,   .cd-datatable .datatable-header .sort-desc{color:#2b99a8}  .cd-datatable .datatable-header .datatable-header-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;text-align:left;font-weight:700}  .cd-datatable .datatable-header .datatable-header-cell .datatable-header-cell-label:after{font-family:ForkAwesome;font-weight:400;height:9px;left:10px;line-height:12px;position:relative;vertical-align:baseline;width:12px}  .cd-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-asc .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-desc .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell:first-child{border-left:none}  .cd-datatable .datatable-body{margin-bottom:-6px}  .cd-datatable .datatable-body .empty-row{background-color:#fff3cd;text-align:center;font-weight:700;font-style:italic;padding-top:5px;padding-bottom:5px}  .cd-datatable .datatable-body .datatable-body-row.clickable:hover .datatable-row-group{background-color:#eee;transition-property:background;transition-duration:.3s;transition-timing-function:linear}  .cd-datatable .datatable-body .datatable-body-row.datatable-row-even{background-color:#fff}  .cd-datatable .datatable-body .datatable-body-row.datatable-row-odd{background-color:#f5f5f5}  .cd-datatable .datatable-body .datatable-body-row.active,   .cd-datatable .datatable-body .datatable-body-row.active:hover{background-color:#d1ecf1}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell:first-child{border-left:none}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell .datatable-body-cell-label{display:block;height:100%}  .cd-datatable .datatable-body .datatable-row-detail{padding:20px;border-bottom:2px solid #d1d1d1;overflow-y:visible!important}  .cd-datatable .datatable-body .expand-collapse-icon{display:block;height:100%;text-align:center}  .cd-datatable .datatable-body .expand-collapse-icon:hover{text-decoration:none}  .cd-datatable .datatable-body .expand-collapse-icon-right:before{font-family:ForkAwesome,sans-serif;font-size:1rem;color:#212529;line-height:1;content:""}  .cd-datatable .datatable-body .expand-collapse-icon-down:before{font-family:ForkAwesome,sans-serif;font-size:1rem;color:#212529;line-height:1;content:""}  .cd-datatable .datatable-footer{display:unset!important}  .cd-datatable .datatable-footer .page-count,   .cd-datatable .datatable-footer .selected-count{font-style:italic;padding-left:5px}  .cd-datatable .cd-datatable-checkbox{text-align:center}@keyframes progress-loading{from{left:-200px;width:15%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}']],data:{}});function Vt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Failed to load data."]))],(function(t,e){t(e,1,0,"error")}),null)}function Gt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","cd-datatable-actions"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,null)}function Bt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"a",[["class","dropdown-item"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onSelectFilter(t.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.column.name)}))}function zt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu dropdown-menu-right px-1"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Bt)),a["ɵdid"](2,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.columnFilters)}),null)}function Yt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),null)}function Ht(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"a",[["class","dropdown-item"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(r.onChangeFilter(r.selectedFilter,t.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵted"](2,null,[""," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Yt)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,void 0!==n.selectedFilter.value&&n.selectedFilter.value.raw===e.context.$implicit.raw)}),(function(t,e){t(e,2,0,e.context.$implicit.formatted)}))}function Ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu dropdown-menu-right px-1"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ht)),a["ɵdid"](2,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.selectedFilter.options)}),null)}function Wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,20,"div",[["class","btn-group widget-toolbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,16777216,null,null,11,"div",[["class","btn-group tc_filter_name"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,o.f,o.f,[]),a["ɵdid"](3,212992,null,0,o.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,o.f,o.a,d.b],null,null),(t()(),a["ɵeld"](4,0,null,null,6,"a",[["class","btn btn-light dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,5).onClick()&&r),r}),null,null)),a["ɵdid"](5,147456,null,0,o.g,[a.ChangeDetectorRef,o.c,a.ElementRef,a.Renderer2,o.f],null,null),(t()(),a["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](8,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](9,2),(t()(),a["ɵted"](10,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,zt)),a["ɵdid"](12,16384,null,0,o.d,[o.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["ɵeld"](13,16777216,null,null,7,"div",[["class","btn-group tc_filter_option"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,o.f,o.f,[]),a["ɵdid"](15,212992,null,0,o.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,o.f,o.a,d.b],null,null),(t()(),a["ɵeld"](16,0,null,null,2,"a",[["class","btn btn-light dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[2,"disabled",null],[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,17).onClick()&&r),r}),null,null)),a["ɵdid"](17,147456,null,0,o.g,[a.ChangeDetectorRef,o.c,a.ElementRef,a.Renderer2,o.f],null,null),(t()(),a["ɵted"](18,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Ut)),a["ɵdid"](20,16384,null,0,o.d,[o.f,a.ViewContainerRef,a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,3,0);var a=t(e,9,0,n.icons.large,n.icons.filter);t(e,8,0,a),t(e,15,0)}),(function(t,e){var n=e.component;t(e,1,0,a["ɵnov"](e,3).dropup,a["ɵnov"](e,3).isOpen,a["ɵnov"](e,3).isOpen&&a["ɵnov"](e,3).isBs4),t(e,4,0,!0,a["ɵnov"](e,5).isDisabled,a["ɵnov"](e,5).isOpen),t(e,10,0,n.selectedFilter.column.name),t(e,13,0,a["ɵnov"](e,15).dropup,a["ɵnov"](e,15).isOpen,a["ɵnov"](e,15).isOpen&&a["ɵnov"](e,15).isBs4),t(e,16,0,0===n.selectedFilter.options.length,!0,a["ɵnov"](e,17).isDisabled,a["ɵnov"](e,17).isOpen),t(e,18,0,n.selectedFilter.value?n.selectedFilter.value.formatted:"Any")}))}function Kt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"div",[["class","input-group search"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"span",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,4,"span",[["class","input-group-text"]],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,1),(t()(),a["ɵeld"](7,0,null,null,5,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["ɵnov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,8)._compositionEnd(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.search=n)&&r),"keyup"===e&&(r=!1!==i.updateFilter()&&r),r}),null,null)),a["ɵdid"](8,16384,null,0,c.e,[a.Renderer2,a.ElementRef,[2,c.b]],null,null),a["ɵprd"](1024,null,c.p,(function(t){return[t]}),[c.e]),a["ɵdid"](10,671744,null,0,c.u,[[8,null],[8,null],[8,null],[6,c.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["ɵprd"](2048,null,c.q,null,[c.u]),a["ɵdid"](12,16384,null,0,c.r,[[4,c.q]],null,null),(t()(),a["ɵeld"](13,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),a["ɵeld"](14,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onClearSearch()&&a),a}),null,null)),(t()(),a["ɵeld"](15,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null))],(function(t,e){var n=e.component,a=t(e,6,0,n.icons.search);t(e,5,0,a),t(e,10,0,n.search)}),(function(t,e){var n=e.component;t(e,7,0,a["ɵnov"](e,12).ngClassUntouched,a["ɵnov"](e,12).ngClassTouched,a["ɵnov"](e,12).ngClassPristine,a["ɵnov"](e,12).ngClassDirty,a["ɵnov"](e,12).ngClassValid,a["ɵnov"](e,12).ngClassInvalid,a["ɵnov"](e,12).ngClassPending),t(e,15,0,a["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,""))}))}function $t(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[["class","input-group dataTables_paginate"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["class","form-control"],["max","9999"],["min","1"],["type","number"]],[[8,"value",0]],[[null,"click"],[null,"keyup"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.setLimit(n)&&a),"keyup"===e&&(a=!1!==r.setLimit(n)&&a),"blur"===e&&(a=!1!==r.setLimit(n)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.userConfig.limit)}))}function Jt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"li",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,0,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"name",0],[8,"id",0],[8,"checked",0]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.toggleColumn(n)&&a),a}),null,null)),(t()(),a["ɵeld"](3,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["ɵted"](4,null,["",""]))],null,(function(t,e){t(e,2,0,e.parent.context.$implicit.prop,e.parent.context.$implicit.prop,!e.parent.context.$implicit.isHidden),t(e,3,0,e.parent.context.$implicit.prop),t(e,4,0,e.parent.context.$implicit.name)}))}function Zt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Jt)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0,""!==e.context.$implicit.name)}),null)}function Qt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu px-3"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Zt)),a["ɵdid"](2,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.columns)}),null)}function Xt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["class","widget-toolbar tc_refreshBtn"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshBtn()&&a),a}),null,null)),(t()(),a["ɵeld"](2,0,null,null,3,"i",[],[[2,"fa-spin",null]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](5,2)],(function(t,e){var n=e.component,a=t(e,5,0,n.icons.large,n.icons.refresh);t(e,4,0,a)}),(function(t,e){var n=e.component;t(e,2,0,n.updating||n.loadingIndicator)}))}function te(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,23,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","cd-datatable-actions"]],null,null,null,null,null)),a["ɵncd"](null,1),a["ɵncd"](null,2),(t()(),a["ɵand"](16777216,null,null,1,null,Wt)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Kt)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,$t)),a["ɵdid"](9,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](10,0,null,null,11,"div",[["class","widget-toolbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](11,16777216,null,null,10,"div",[["class","dropdown tc_menuitem tc_menuitem_cluster"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,o.f,o.f,[]),a["ɵdid"](13,212992,null,0,o.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,o.f,o.a,d.b],{insideClick:[0,"insideClick"]},null),(t()(),a["ɵeld"](14,0,null,null,5,"a",[["class","btn btn-light dropdown-toggle tc_columnBtn"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,15).onClick()&&r),r}),null,null)),a["ɵdid"](15,147456,null,0,o.g,[a.ChangeDetectorRef,o.c,a.ElementRef,a.Renderer2,o.f],null,null),(t()(),a["ɵeld"](16,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](18,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](19,2),(t()(),a["ɵand"](16777216,null,null,1,null,Qt)),a["ɵdid"](21,16384,null,0,o.d,[o.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,Xt)),a["ɵdid"](23,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,0!==n.columnFilters.length),t(e,7,0,n.searchField),t(e,9,0,n.limit),t(e,13,0,!0);var a=t(e,19,0,n.icons.large,n.icons.table);t(e,18,0,a),t(e,23,0,n.fetchData.observers.length>0)}),(function(t,e){t(e,11,0,a["ɵnov"](e,13).dropup,a["ɵnov"](e,13).isOpen,a["ɵnov"](e,13).isOpen&&a["ɵnov"](e,13).isBs4),t(e,14,0,!0,a["ɵnov"](e,15).isDisabled,a["ɵnov"](e,15).isOpen)}))}function ee(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"span",[["class","badge badge-info mr-2"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[["class","mr-2"]],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",": ",""])),(t()(),a["ɵeld"](3,0,null,null,4,"a",[["class","badge-remove"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onChangeFilter(t.parent.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](6,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](7,1)],(function(t,e){var n=t(e,7,0,e.component.icons.destroy);t(e,6,0,n)}),(function(t,e){t(e,2,0,e.parent.context.$implicit.column.name,e.parent.context.$implicit.value.formatted)}))}function ne(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ee)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit.value)}),null)}function ae(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","filter-chips"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ne)),a["ɵdid"](3,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](4,0,null,null,2,"a",[["class","tc_clearSelections"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onClearFilters(),a=!1),a}),null,null)),(t()(),a["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Clear filters"]))],(function(t,e){t(e,3,0,e.component.columnFilters)}),null)}function re(t){return a["ɵvid"](0,[a["ɵncd"](null,3),(t()(),a["ɵand"](0,null,null,0))],null,null)}function ie(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "])),(t()(),a["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["selected"])),(t()(),a["ɵted"](-1,null,[" / "]))],null,(function(t,e){t(e,1,0,e.parent.context.selectedCount)}))}function se(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "])),(t()(),a["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["found"])),(t()(),a["ɵted"](-1,null,[" / "]))],null,(function(t,e){t(e,1,0,e.parent.context.rowCount)}))}function ue(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ie)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,se)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](5,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,[" "," "])),(t()(),a["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["total"])),(t()(),a["ɵeld"](9,0,null,null,1,"datatable-pager",[["class","datatable-pager"]],[[8,"hidden",0]],[[null,"change"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t.parent,26).onFooterPage(n)&&r),r}),At,Ct)),a["ɵdid"](10,49152,null,0,f.j,[],{pagerLeftArrowIcon:[0,"pagerLeftArrowIcon"],pagerRightArrowIcon:[1,"pagerRightArrowIcon"],pagerPreviousIcon:[2,"pagerPreviousIcon"],pagerNextIcon:[3,"pagerNextIcon"],size:[4,"size"],count:[5,"count"],page:[6,"page"]},{change:"change"})],(function(t,e){var n=e.component;t(e,2,0,n.selectionType),t(e,4,0,e.context.rowCount!=(null==n.data?null:n.data.length)),t(e,10,0,n.paginationClasses.pagerLeftArrow,n.paginationClasses.pagerRightArrow,n.paginationClasses.pagerPrevious,n.paginationClasses.pagerNext,e.context.pageSize,e.context.rowCount,e.context.curPage)}),(function(t,e){var n=e.component;t(e,6,0,(null==n.data?null:n.data.length)||0),t(e,9,0,!(e.context.rowCount/e.context.pageSize>1))}))}function oe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.value)}))}function le(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-sparkline",[],null,null,null,kt.b,kt.a)),a["ɵdid"](1,638976,null,0,Et.a,[Lt.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],(function(t,e){t(e,1,0,e.context.value,e.context.row.cdIsBinary)}),null)}function de(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r}),null,null)),a["ɵdid"](1,671744,null,0,Dt.p,[Dt.m,Dt.a,u.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),a["ɵpad"](2,1),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){var n=e.context.row.cdParams,a=t(e,2,0,e.context.row.cdLink);t(e,1,0,n,a)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).target,a["ɵnov"](e,1).href),t(e,3,0,e.context.value)}))}function ce(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"i",[],[[8,"hidden",0]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1),a["ɵppd"](4,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),(function(t,e){var n=!a["ɵunv"](e,0,0,t(e,4,0,a["ɵnov"](e.parent,0),e.context.value));t(e,0,0,n)}))}function fe(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," /s\n"]))],null,(function(t,e){t(e,0,0,e.context.value)}))}function he(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,2)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function ge(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","text-muted italic"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["(",")"]))],null,(function(t,e){t(e,1,0,e.parent.context.row.cdExecuting)}))}function pe(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,he)),a["ɵdid"](1,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](2,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,ge)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.row.cdExecuting),t(e,4,0,e.context.row.cdExecuting)}),(function(t,e){t(e,2,0,e.context.value)}))}function be(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"",e.component.useCustomClass(e.context.value),"")),t(e,1,0,e.context.value)}))}function me(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[["class","badge"]],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,"badge",null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.map&&null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&null!=e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit]&&e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].class?e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].class:null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.class?e.parent.parent.context.column.customTemplateConfig.class:"badge-primary")}),(function(t,e){t(e,3,0,null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.map&&null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&null!=e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit]&&e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].value?e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].value:null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.prefix?e.parent.parent.context.column.customTemplateConfig.prefix+e.parent.context.$implicit:e.parent.context.$implicit)}))}function ye(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" "]))],null,null)}function ve(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,me)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ye)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&e.parent.context.column.customTemplateConfig.map&&null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&null!=e.parent.context.column.customTemplateConfig.map[e.context.$implicit]&&e.parent.context.column.customTemplateConfig.map[e.context.$implicit].value?e.parent.context.column.customTemplateConfig.map[e.context.$implicit].value:null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&e.parent.context.column.customTemplateConfig.prefix?e.parent.context.column.customTemplateConfig.prefix+e.context.$implicit:e.context.$implicit),t(e,4,0,!e.context.last)}),null)}function xe(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,ve)),a["ɵdid"](1,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵppd"](2,1),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,1),e.context.value));t(e,1,0,n)}),null)}function _e(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""])),a["ɵppd"](2,2)],null,(function(t,e){var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,2),e.context.value,null==e.context.column?null:e.context.column.customTemplateConfig));t(e,1,0,n)}))}function Te(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[["data-toggle","tooltip"]],[[8,"title",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""])),a["ɵppd"](2,3)],null,(function(t,e){t(e,0,0,e.context.value);var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,3),e.context.value,null==e.context.column||null==e.context.column.customTemplateConfig?null:e.context.column.customTemplateConfig.length,null==e.context.column||null==e.context.column.customTemplateConfig?null:e.context.column.customTemplateConfig.omission));t(e,1,0,n)}))}function we(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"a",[["class","expand-collapse-icon tc_expand-collapse"],["href","javascript:void(0)"],["title","Expand/Collapse Row"]],[[2,"expand-collapse-icon-right",null],[2,"expand-collapse-icon-down",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleExpandRow(t.context.row,t.context.expanded,n)&&a),a}),null,null))],null,(function(t,e){t(e,0,0,!e.context.expanded,e.context.expanded)}))}function Oe(t){return a["ɵvid"](2,[a["ɵpid"](0,Pt.a,[]),a["ɵpid"](0,Mt.a,[]),a["ɵpid"](0,qt.a,[]),a["ɵpid"](0,jt.a,[]),a["ɵqud"](402653184,1,{table:0}),a["ɵqud"](402653184,2,{tableCellBoldTpl:0}),a["ɵqud"](402653184,3,{sparklineTpl:0}),a["ɵqud"](402653184,4,{routerLinkTpl:0}),a["ɵqud"](402653184,5,{checkIconTpl:0}),a["ɵqud"](402653184,6,{perSecondTpl:0}),a["ɵqud"](402653184,7,{executingTpl:0}),a["ɵqud"](402653184,8,{classAddingTpl:0}),a["ɵqud"](402653184,9,{badgeTpl:0}),a["ɵqud"](402653184,10,{mapTpl:0}),a["ɵqud"](402653184,11,{truncateTpl:0}),a["ɵqud"](402653184,12,{rowDetailsTpl:0}),(t()(),a["ɵand"](16777216,null,null,1,null,Vt)),a["ɵdid"](17,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](18,0,null,null,22,"div",[["class","dataTables_wrapper"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Gt)),a["ɵdid"](20,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,te)),a["ɵdid"](22,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ae)),a["ɵdid"](24,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](25,0,null,null,15,"ngx-datatable",[["class","bootstrap cd-datatable ngx-datatable"]],[[2,"fixed-header",null],[2,"fixed-row",null],[2,"scroll-vertical",null],[2,"virtualized",null],[2,"scroll-horz",null],[2,"selectable",null],[2,"checkbox-selection",null],[2,"cell-selection",null],[2,"single-selection",null],[2,"multi-selection",null],[2,"multi-click-selection",null]],[[null,"select"],[null,"sort"],["window","resize"]],(function(t,e,n){var r=!0,i=t.component;return"window:resize"===e&&(r=!1!==a["ɵnov"](t,26).onWindowResize()&&r),"select"===e&&(r=!1!==i.onSelect(n)&&r),"sort"===e&&(r=!1!==i.changeSorting(n)&&r),r}),b,h)),a["ɵdid"](26,5750784,[[1,4],["table",4]],4,f.n,[[1,f.y],[1,f.r],a.ChangeDetectorRef,a.ElementRef,a.KeyValueDiffers,f.a,[2,"configuration"]],{rows:[0,"rows"],columns:[1,"columns"],selected:[2,"selected"],rowHeight:[3,"rowHeight"],columnMode:[4,"columnMode"],headerHeight:[5,"headerHeight"],footerHeight:[6,"footerHeight"],limit:[7,"limit"],loadingIndicator:[8,"loadingIndicator"],selectionType:[9,"selectionType"],sorts:[10,"sorts"],cssClasses:[11,"cssClasses"],rowClass:[12,"rowClass"],rowIdentity:[13,"rowIdentity"]},{select:"select",sort:"sort"}),a["ɵqud"](603979776,13,{columnTemplates:1}),a["ɵqud"](603979776,14,{rowDetail:0}),a["ɵqud"](603979776,15,{groupHeader:0}),a["ɵqud"](603979776,16,{footer:0}),(t()(),a["ɵeld"](31,0,[["detailRow",1]],null,4,"ngx-datatable-row-detail",[["rowHeight","auto"]],null,null,null,null,null)),a["ɵdid"](32,16384,[[14,4]],1,f.p,[],{rowHeight:[0,"rowHeight"]},null),a["ɵqud"](335544320,17,{_templateQuery:0}),(t()(),a["ɵand"](0,[[17,2]],null,1,null,re)),a["ɵdid"](35,16384,null,0,f.q,[a.TemplateRef],null,null),(t()(),a["ɵeld"](36,0,null,null,4,"ngx-datatable-footer",[],null,null,null,null,null)),a["ɵdid"](37,16384,[[16,4]],1,f.o,[],null,null),a["ɵqud"](603979776,18,{_templateQuery:0}),(t()(),a["ɵand"](0,[[18,2]],null,1,null,ue)),a["ɵdid"](40,16384,null,0,f.g,[a.TemplateRef],null,null),(t()(),a["ɵand"](0,[[2,2],["tableCellBoldTpl",2]],null,0,null,oe)),(t()(),a["ɵand"](0,[[3,2],["sparklineTpl",2]],null,0,null,le)),(t()(),a["ɵand"](0,[[4,2],["routerLinkTpl",2]],null,0,null,de)),(t()(),a["ɵand"](0,[[5,2],["checkIconTpl",2]],null,0,null,ce)),(t()(),a["ɵand"](0,[[6,2],["perSecondTpl",2]],null,0,null,fe)),(t()(),a["ɵand"](0,[[7,2],["executingTpl",2]],null,0,null,pe)),(t()(),a["ɵand"](0,[[8,2],["classAddingTpl",2]],null,0,null,be)),(t()(),a["ɵand"](0,[[9,2],["badgeTpl",2]],null,0,null,xe)),(t()(),a["ɵand"](0,[[10,2],["mapTpl",2]],null,0,null,_e)),(t()(),a["ɵand"](0,[[11,2],["truncateTpl",2]],null,0,null,Te)),(t()(),a["ɵand"](0,[[12,2],["rowDetailsTpl",2]],null,1,null,we)),a["ɵdid"](52,16384,null,0,f.e,[a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,17,0,n.loadingError),t(e,20,0,n.onlyActionHeader),t(e,22,0,n.toolHeader),t(e,24,0,n.toolHeader&&n.columnFiltered),t(e,26,1,[n.rows,n.tableColumns,n.selection.selected,"auto",n.columnMode,n.header?"auto":0,n.footer?"auto":0,n.userConfig.limit>0?n.userConfig.limit:void 0,n.loadingIndicator,n.selectionType,n.userConfig.sorts,n.paginationClasses,n.getRowClass(),n.rowIdentity()]),t(e,32,0,"auto")}),(function(t,e){t(e,25,1,[a["ɵnov"](e,26).isFixedHeader,a["ɵnov"](e,26).isFixedRow,a["ɵnov"](e,26).isVertScroll,a["ɵnov"](e,26).isVirtualized,a["ɵnov"](e,26).isHorScroll,a["ɵnov"](e,26).isSelectable,a["ɵnov"](e,26).isCheckboxSelection,a["ɵnov"](e,26).isCellSelection,a["ɵnov"](e,26).isSingleSelection,a["ɵnov"](e,26).isMultiSelection,a["ɵnov"](e,26).isMultiClickSelection])}))}},"2EZI":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("s7LF"),r=n("QFaf"),i=n("8Y7J");let s=(()=>{class t extends a.h{group(t,e=null){const n=super.group(t,e);return new r.a(n.controls,n.validator,n.asyncValidator)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},"2Gvs":function(t,e,n){var a=n("0Dky");t.exports=a((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},"2QA8":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>"function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random())()},"2Vo4":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("XNiG"),r=n("9ppp");class i extends a.a{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const e=super._subscribe(t);return e&&!e.closed&&t.next(this._value),e}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new r.a;return this._value}next(t){super.next(this._value=t)}}},"2ZVE":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return o})),n.d(e,"d",(function(){return l})),n.d(e,"e",(function(){return s})),n.d(e,"f",(function(){return i}));var a=n("8Y7J");class r{constructor(t){this.viewRef=t}set ngTransclude(t){this._ngTransclude=t,t&&this.viewRef.createEmbeddedView(t)}get ngTransclude(){return this._ngTransclude}}class i{constructor(){this.type="tabs",this.ariaLabel="Tabs"}}class s{constructor(t,e,n){this.renderer=e,this.elementRef=n,this.clazz=!0,this.tabs=[],this.classMap={},Object.assign(this,t)}get vertical(){return this._vertical}set vertical(t){this._vertical=t,this.setClassMap()}get justified(){return this._justified}set justified(t){this._justified=t,this.setClassMap()}get type(){return this._type}set type(t){this._type=t,this.setClassMap()}ngOnDestroy(){this.isDestroyed=!0}addTab(t){this.tabs.push(t),t.active=1===this.tabs.length&&void 0===t.active}removeTab(t,e={reselect:!0,emit:!0}){const n=this.tabs.indexOf(t);if(-1!==n&&!this.isDestroyed){if(e.reselect&&t.active&&this.hasAvailableTabs(n)){const t=this.getClosestTabIndex(n);this.tabs[t].active=!0}e.emit&&t.removed.emit(t),this.tabs.splice(n,1),t.elementRef.nativeElement.parentNode&&this.renderer.removeChild(t.elementRef.nativeElement.parentNode,t.elementRef.nativeElement)}}keyNavActions(t,e){const n=Array.from(this.elementRef.nativeElement.querySelectorAll(".nav-link"));if(13!==t.keyCode&&"Enter"!==t.key&&32!==t.keyCode&&"Space"!==t.key)if(39!==t.keyCode&&"RightArrow"!==t.key)if(37!==t.keyCode&&"LeftArrow"!==t.key)if(36!==t.keyCode&&"Home"!==t.key)if(35!==t.keyCode&&"End"!==t.key){if((46===t.keyCode||"Delete"===t.key)&&this.tabs[e].removable){if(this.removeTab(this.tabs[e]),n[e+1])return void n[(e+1)%n.length].focus();n[n.length-1]&&n[0].focus()}}else{let a;t.preventDefault();let r=1,i=e;do{i-r<0?(i=n.length-1,a=n[i],r=0):a=n[i-r],r++}while(a.classList.contains("disabled"));a.focus()}else{let e;t.preventDefault();let a=0;do{e=n[a%n.length],a++}while(e.classList.contains("disabled"));e.focus()}else{let t,a=1,r=e;do{r-a<0?(r=n.length-1,t=n[r],a=0):t=n[r-a],a++}while(t.classList.contains("disabled"));t.focus()}else{let t,a=1;do{t=n[(e+a)%n.length],a++}while(t.classList.contains("disabled"));t.focus()}else t.preventDefault(),n[e%n.length].click()}getClosestTabIndex(t){const e=this.tabs.length;if(!e)return-1;for(let n=1;n<=e;n+=1){const e=t-n,a=t+n;if(this.tabs[e]&&!this.tabs[e].disabled)return e;if(this.tabs[a]&&!this.tabs[a].disabled)return a}return-1}hasAvailableTabs(t){const e=this.tabs.length;if(!e)return!1;for(let n=0;n<e;n+=1)if(!this.tabs[n].disabled&&n!==t)return!0;return!1}setClassMap(){this.classMap={"nav-stacked":this.vertical,"flex-column":this.vertical,"nav-justified":this.justified,["nav-"+this.type]:!0}}}class u{constructor(t,e,n){this.elementRef=e,this.renderer=n,this.selectTab=new a.EventEmitter,this.deselect=new a.EventEmitter,this.removed=new a.EventEmitter,this.addClass=!0,this.role="tabpanel",this.tabset=t,this.tabset.addTab(this)}get customClass(){return this._customClass}set customClass(t){this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.removeClass(this.elementRef.nativeElement,t)}),this._customClass=t?t.trim():null,this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.addClass(this.elementRef.nativeElement,t)})}get active(){return this._active}set active(t){this._active!==t&&(this.disabled&&t||!t?this._active&&!t&&(this.deselect.emit(this),this._active=t):(this._active=t,this.selectTab.emit(this),this.tabset.tabs.forEach(t=>{t!==this&&(t.active=!1)})))}get ariaLabelledby(){return this.id?this.id+"-link":""}ngOnInit(){this.removable=this.removable}ngOnDestroy(){this.tabset.removeTab(this,{reselect:!1,emit:!1})}}class o{constructor(t,e){e.headingRef=t}}class l{static forRoot(){return{ngModule:l,providers:[i]}}}},"2bSy":function(t,e,n){var a=n("iQ+a"),r=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,i,s,u){var o=1&n,l=a(t),d=l.length;if(d!=a(e).length&&!o)return!1;for(var c=d;c--;){var f=l[c];if(!(o?f in e:r.call(e,f)))return!1}var h=u.get(t),g=u.get(e);if(h&&g)return h==e&&g==t;var p=!0;u.set(t,e),u.set(e,t);for(var b=o;++c<d;){var m=t[f=l[c]],y=e[f];if(i)var v=o?i(y,m,f,e,t,u):i(m,y,f,t,e,u);if(!(void 0===v?m===y||s(m,y,n,i,u):v)){p=!1;break}b||(b="constructor"==f)}if(p&&!b){var x=t.constructor,_=e.constructor;x==_||!("constructor"in t)||!("constructor"in e)||"function"==typeof x&&x instanceof x&&"function"==typeof _&&_ instanceof _||(p=!1)}return u.delete(t),u.delete(e),p}},"2bX/":function(t,e,n){var a=n("2oRo"),r=n("0GbY"),i=n("Fib7"),s=n("OpvP"),u=n("/b8u"),o=a.Object;t.exports=u?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return i(e)&&s(e.prototype,o(t))}},"2fFW":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));let a=!1;const r={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){if(t){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else a&&console.log("RxJS: Back to a better error behavior. Thank you. <3");a=t},get useDeprecatedSynchronousErrorHandling(){return a}}},"2fjn":function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}}})}(n("wd/R"))},"2oRo":function(t,e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof global&&global)||function(){return this}()||Function("return this")()},"2oum":function(t,e){t.exports=function(t){return this.__data__.has(t)}},"2uy1":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("XNiG"),s=n("VRyK"),u=n("xgIS"),o=n("LRne"),l=n("3N8a");class d extends l.a{constructor(t,e){super(t,e),this.scheduler=t,this.work=e}requestAsyncId(t,e,n=0){return null!==n&&n>0?super.requestAsyncId(t,e,n):(t.actions.push(this),t.scheduled||(t.scheduled=requestAnimationFrame(()=>t.flush(null))))}recycleAsyncId(t,e,n=0){if(null!==n&&n>0||null===n&&this.delay>0)return super.recycleAsyncId(t,e,n);0===t.actions.length&&(cancelAnimationFrame(e),t.scheduled=void 0)}}var c=n("IjjT");class f extends c.a{flush(t){this.active=!0,this.scheduled=void 0;const{actions:e}=this;let n,a=-1,r=e.length;t=t||e.shift();do{if(n=t.execute(t.state,t.delay))break}while(++a<r&&(t=e.shift()));if(this.active=!1,n){for(;++a<r&&(t=e.shift());)t.unsubscribe();throw n}}}const h=new f(d);function g(t,e){if(1!==t.nodeType)return[];const n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function p(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function b(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}const{overflow:e,overflowX:n,overflowY:a}=g(t);return/(auto|scroll|overlay)/.test(String(e)+String(a)+String(n))?t:b(p(t))}n.d(e,"a",(function(){return U}));const m="undefined"!=typeof window&&"undefined"!=typeof document,y=m&&!(!window.MSInputMethodContext||!document.documentMode),v=m&&!(!window.MSInputMethodContext||!/MSIE 10/.test(navigator.userAgent));function x(t){return 11===t?y:10===t?v:y||v}function _(t){if(!t)return document.documentElement;const e=x(10)?document.body:null;let n,a=t.offsetParent||null;for(;a===e&&t.nextElementSibling&&n!==t.nextElementSibling;)n=t.nextElementSibling,a=n.offsetParent;const r=a&&a.nodeName;return r&&"BODY"!==r&&"HTML"!==r?-1!==["TH","TD","TABLE"].indexOf(a.nodeName)&&"static"===g(a,"position")?_(a):a:n?n.ownerDocument.documentElement:document.documentElement}function T(t){return null!==t.parentNode?T(t.parentNode):t}function w(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;const n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,a=n?t:e,r=n?e:t,i=document.createRange();i.setStart(a,0),i.setEnd(r,0);const{commonAncestorContainer:s}=i;if(t!==s&&e!==s||a.contains(r))return function(t){const{nodeName:e}=t;return"BODY"!==e&&("HTML"===e||_(t.firstElementChild)===t)}(s)?s:_(s);const u=T(t);return u.host?w(u.host,e):w(t,T(e).host)}function O(t,e){const n="x"===e?"Left":"Top",a="Left"===n?"Right":"Bottom";return parseFloat(t[`border${n}Width`])+parseFloat(t[`border${a}Width`])}function S(t,e,n,a){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],x(10)?parseInt(n["offset"+t],10)+parseInt(a["margin"+("Height"===t?"Top":"Left")],10)+parseInt(a["margin"+("Height"===t?"Bottom":"Right")],10):0)}function I(t){const e=t.body,n=t.documentElement,a=x(10)&&getComputedStyle(n);return{height:S("Height",e,n,a),width:S("Width",e,n,a)}}function N(t,e="top"){const n="top"===e?"scrollTop":"scrollLeft",a=t.nodeName;if("BODY"===a||"HTML"===a){const e=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||e)[n]}return t[n]}function C(t){return Object.assign({},t,{right:t.left+t.width,bottom:t.top+t.height})}function R(t){let e={};try{if(x(10)){e=t.getBoundingClientRect();const n=N(t,"top"),a=N(t,"left");e.top+=n,e.left+=a,e.bottom+=n,e.right+=a}else e=t.getBoundingClientRect()}catch(s){return}const n={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},a="HTML"===t.nodeName?I(t.ownerDocument):{};let r=t.offsetWidth-(a.width||t.clientWidth||n.right-n.left),i=t.offsetHeight-(a.height||t.clientHeight||n.bottom-n.top);if(r||i){const e=g(t);r-=O(e,"x"),i-=O(e,"y"),n.width-=r,n.height-=i}return C(n)}function A(t,e,n=!1){const a=x(10),r="HTML"===e.nodeName,i=R(t),s=R(e),u=b(t),o=g(e),l=parseFloat(o.borderTopWidth),d=parseFloat(o.borderLeftWidth);n&&r&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));let c=C({top:i.top-s.top-l,left:i.left-s.left-d,width:i.width,height:i.height});if(c.marginTop=0,c.marginLeft=0,!a&&r){const t=parseFloat(o.marginTop),e=parseFloat(o.marginLeft);c.top-=l-t,c.bottom-=l-t,c.left-=d-e,c.right-=d-e,c.marginTop=t,c.marginLeft=e}return(a&&!n?e.contains(u):e===u&&"BODY"!==u.nodeName)&&(c=function(t,e,n=!1){const a=N(e,"top"),r=N(e,"left"),i=n?-1:1;return t.top+=a*i,t.bottom+=a*i,t.left+=r*i,t.right+=r*i,t}(c,e)),c}function k(t){if(!t||!t.parentElement||x())return document.documentElement;let e=t.parentElement;for(;e&&"none"===g(e,"transform");)e=e.parentElement;return e||document.documentElement}function E(t,e,n=0,a,r=!1){let i={top:0,left:0};const s=r?k(t):w(t,e);if("viewport"===a)i=function(t,e=!1){const n=t.ownerDocument.documentElement,a=A(t,n),r=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:N(n),u=e?0:N(n,"left");return C({top:s-Number(a.top)+Number(a.marginTop),left:u-Number(a.left)+Number(a.marginLeft),width:r,height:i})}(s,r);else{let n;"scrollParent"===a?(n=b(p(e)),"BODY"===n.nodeName&&(n=t.ownerDocument.documentElement)):n="window"===a?t.ownerDocument.documentElement:a;const u=A(n,s,r);if("HTML"!==n.nodeName||function t(e){const n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===g(e,"position")||t(p(e)))}(s))i=u;else{const{height:e,width:n}=I(t.ownerDocument);i.top+=u.top-u.marginTop,i.bottom=Number(e)+Number(u.top),i.left+=u.left-u.marginLeft,i.right=Number(n)+Number(u.left)}}return i.left+=n,i.top+=n,i.right-=n,i.bottom-=n,i}function L({width:t,height:e}){return t*e}function D(t,e,n,a,r=["top","bottom","right","left"],i="viewport",s=0){if(-1===t.indexOf("auto"))return t;const u=E(n,a,s,i),o={top:{width:u.width,height:e.top-u.top},right:{width:u.right-e.right,height:u.height},bottom:{width:u.width,height:u.bottom-e.bottom},left:{width:e.left-u.left,height:u.height}},l=Object.keys(o).map(t=>Object.assign({key:t},o[t],{area:L(o[t])})).sort((t,e)=>e.area-t.area);let d=l.filter(({width:t,height:e})=>t>=n.clientWidth&&e>=n.clientHeight);d=d.filter(t=>r.some(e=>e===t.key));const c=d.length>0?d[0].key:l[0].key,f=t.split(" ")[1];return n.className=n.className.replace(/bs-tooltip-auto/g,"bs-tooltip-"+c),c+(f?"-"+f:"")}function P(t){const e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),a=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:Number(t.offsetWidth)+a,height:Number(t.offsetHeight)+n}}function M(t,e,n=null){return A(e,n?k(t):w(t,e),n)}function q(t,e,n){const a=n.split(" ")[0],r=P(t),i={width:r.width,height:r.height},s=-1!==["right","left"].indexOf(a),u=s?"top":"left",o=s?"left":"top",l=s?"height":"width",d=s?"width":"height";return i[u]=e[u]+e[l]/2-r[l]/2,i[o]=a===o?e[o]-r[d]:e[function(t){const e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,t=>e[t])}(o)],i}function j(t,e){return t&&t.modifiers&&t.modifiers[e]&&t.modifiers[e].enabled}function F(t,e,n){Object.keys(e).forEach(a=>{let r="";var i;-1!==["width","height","top","right","bottom","left"].indexOf(a)&&""!==(i=e[a])&&!isNaN(parseFloat(i))&&isFinite(i)&&(r="px"),n?n.setStyle(t,a,`${String(e[a])}${r}`):t.style[a]=String(e[a])+r})}function V(t){let e=t.offsets.target;const n=t.instance.target.querySelector(".arrow");if(!n)return t;const a=-1!==["left","right"].indexOf(t.placement),r=a?"height":"width",i=a?"Top":"Left",s=i.toLowerCase(),u=a?"left":"top",o=a?"bottom":"right",l=P(n)[r];t.offsets.host[o]-l<e[s]&&(e[s]-=e[s]-(t.offsets.host[o]-l)),Number(t.offsets.host[s])+Number(l)>e[o]&&(e[s]+=Number(t.offsets.host[s])+Number(l)-Number(e[o])),e=C(e);const d=Number(t.offsets.host[s])+Number(t.offsets.host[r]/2-l/2),c=g(t.instance.target),f=parseFloat(c["margin"+i]),h=parseFloat(c[`border${i}Width`]);let p=d-e[s]-f-h;return p=Math.max(Math.min(e[r]-l,p),0),t.offsets.arrow={[s]:Math.round(p),[u]:""},t.instance.arrow=n,t}function G(t){if(t.offsets.target=C(t.offsets.target),!j(t.options,"flip"))return t.offsets.target=Object.assign({},t.offsets.target,q(t.instance.target,t.offsets.host,t.placement)),t;const e=E(t.instance.target,t.instance.host,0,"viewport",!1);let n=t.placement.split(" ")[0],a=t.placement.split(" ")[1]||"";const r=D("auto",t.offsets.host,t.instance.target,t.instance.host,t.options.allowedPositions),i=[n,r];return i.forEach((r,s)=>{if(n!==r||i.length===s+1)return t;n=t.placement.split(" ")[0];const u="left"===n&&Math.floor(t.offsets.target.right)>Math.floor(t.offsets.host.left)||"right"===n&&Math.floor(t.offsets.target.left)<Math.floor(t.offsets.host.right)||"top"===n&&Math.floor(t.offsets.target.bottom)>Math.floor(t.offsets.host.top)||"bottom"===n&&Math.floor(t.offsets.target.top)<Math.floor(t.offsets.host.bottom),o=Math.floor(t.offsets.target.left)<Math.floor(e.left),l=Math.floor(t.offsets.target.right)>Math.floor(e.right),d=Math.floor(t.offsets.target.top)<Math.floor(e.top),c=Math.floor(t.offsets.target.bottom)>Math.floor(e.bottom),f="left"===n&&o||"right"===n&&l||"top"===n&&d||"bottom"===n&&c,h=-1!==["top","bottom"].indexOf(n),g=h&&"left"===a&&o||h&&"right"===a&&l||!h&&"left"===a&&d||!h&&"right"===a&&c;(u||f||g)&&((u||f)&&(n=i[s+1]),g&&(a=function(t){return"right"===t?"left":"left"===t?"right":t}(a)),t.placement=n+(a?" "+a:""),t.offsets.target=Object.assign({},t.offsets.target,q(t.instance.target,t.offsets.host,t.placement)))}),t}function B(t){if(!j(t.options,"preventOverflow"))return t;const e="transform",n=t.instance.target.style,{top:a,left:r,[e]:i}=n;n.top="",n.left="",n[e]="";const s=E(t.instance.target,t.instance.host,0,"scrollParent",!1);n.top=a,n.left=r,n[e]=i;const u={primary(e){let n=t.offsets.target[e];return t.offsets.target[e]<s[e]&&(n=Math.max(t.offsets.target[e],s[e])),{[e]:n}},secondary(e){const n="right"===e?"left":"top";let a=t.offsets.target[n];return t.offsets.target[e]>s[e]&&(a=Math.min(t.offsets.target[n],s[e]-("right"===e?t.offsets.target.width:t.offsets.target.height))),{[n]:a}}};let o;return["left","right","top","bottom"].forEach(e=>{o=-1!==["left","top"].indexOf(e)?"primary":"secondary",t.offsets.target=Object.assign({},t.offsets.target,u[o](e))}),t}function z(t){const e=t.placement,n=e.split(" ")[0],a=e.split(" ")[1];if(a){const{host:e,target:r}=t.offsets,i=-1!==["bottom","top"].indexOf(n),s=i?"left":"top",u=i?"width":"height";t.offsets.target=Object.assign({},r,{start:{[s]:e[s]},end:{[s]:e[s]+e[u]-r[u]}}[a])}return t}class Y{position(t,e,n=!0){return this.offset(t,e,!1)}offset(t,e,n=!0){return M(e,t)}positionElements(t,e,n,a,r){return[G,z,B,V].reduce((t,e)=>e(t),function(t,e,n,a){const r=M(t,e);n.match(/^(auto)*\s*(left|right|top|bottom)*$/)||n.match(/^(left|right|top|bottom)*\s*(start|end)*$/)||(n="auto");const i=!!n.match(/auto/g);let s=n.match(/auto\s(left|right|top|bottom)/)?n.split(" ")[1]||"auto":n;const u=q(t,r,s);return s=D(s,r,t,e,a?a.allowedPositions:void 0),{options:a,instance:{target:t,host:e,arrow:null},offsets:{target:u,host:r,arrow:null},positionFixed:!1,placement:s,placementAuto:i}}(e,t,n,r))}}const H=new Y;class U{constructor(t,e,n){this.update$$=new i.a,this.positionElements=new Map,this.isDisabled=!1,Object(r.isPlatformBrowser)(n)&&t.runOutsideAngular(()=>{this.triggerEvent$=Object(s.a)(Object(u.a)(window,"scroll",{passive:!0}),Object(u.a)(window,"resize",{passive:!0}),Object(o.a)(0,h),this.update$$),this.triggerEvent$.subscribe(()=>{this.isDisabled||this.positionElements.forEach(t=>{!function(t,e,n,a,r,i){const s=H.positionElements(t,e,n,a,r),u=function(t){return{width:t.offsets.target.width,height:t.offsets.target.height,left:Math.floor(t.offsets.target.left),top:Math.round(t.offsets.target.top),bottom:Math.round(t.offsets.target.bottom),right:Math.floor(t.offsets.target.right)}}(s);F(e,{"will-change":"transform",top:"0px",left:"0px",transform:`translate3d(${u.left}px, ${u.top}px, 0px)`},i),s.instance.arrow&&F(s.instance.arrow,s.offsets.arrow,i),function(t,e){const n=t.instance.target;let a=n.className;t.placementAuto&&(a=a.replace(/bs-popover-auto/g,"bs-popover-"+t.placement),a=a.replace(/bs-tooltip-auto/g,"bs-tooltip-"+t.placement),a=a.replace(/\sauto/g," "+t.placement),-1!==a.indexOf("popover")&&-1===a.indexOf("popover-auto")&&(a+=" popover-auto"),-1!==a.indexOf("tooltip")&&-1===a.indexOf("tooltip-auto")&&(a+=" tooltip-auto")),a=a.replace(/left|right|top|bottom/g,""+t.placement.split(" ")[0]),e?e.setAttribute(n,"class",a):n.className=a}(s,i)}(W(t.target),W(t.element),t.attachment,t.appendToBody,this.options,e.createRenderer(null,null))})})})}position(t){this.addPositionElement(t)}get event$(){return this.triggerEvent$}disable(){this.isDisabled=!0}enable(){this.isDisabled=!1}addPositionElement(t){this.positionElements.set(W(t.element),t)}calcPosition(){this.update$$.next()}deletePositionElement(t){this.positionElements.delete(W(t))}setOptions(t){this.options=t}}function W(t){return"string"==typeof t?document.querySelector(t):t instanceof a.ElementRef?t.nativeElement:t}},"2vnA":function(t,e,n){"use strict";n.d(e,"a",(function(){return Jt})),n.d(e,"b",(function(){return Qt})),n.d(e,"c",(function(){return it})),n.d(e,"d",(function(){return et})),n.d(e,"e",(function(){return ee}));var a=[];Object.freeze(a);var r={};Object.freeze(r);var i={};function s(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:i}function u(){return++kt.mobxGuid}function o(t){throw l(!1,t),"X"}function l(t,e){if(!t)throw new Error("[mobx] "+(e||"An invariant failed, however the error is obfuscated because this is an production build."))}function d(t){var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}}var c=function(){};function f(t){return null!==t&&"object"==typeof t}function h(t){if(null===t||"object"!=typeof t)return!1;var e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function g(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!0,configurable:!0,value:n})}function p(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!1,configurable:!0,value:n})}function b(t,e){var n="isMobX"+t;return e.prototype[n]=!0,function(t){return f(t)&&!0===t[n]}}function m(t){return void 0!==s().Map&&t instanceof s().Map}function y(t){return t instanceof Set}function v(t){for(var e=[];;){var n=t.next();if(n.done)break;e.push(n.value)}return e}function x(){return"function"==typeof Symbol&&Symbol.toPrimitive||"@@toPrimitive"}function _(t){return null===t?null:"object"==typeof t?""+t:t}function T(t,e){for(var n=t.next();!n.done;)e(n.value),n=t.next()}function w(){return"function"==typeof Symbol&&Symbol.iterator||"@@iterator"}function O(t,e){p(t,w(),e)}function S(t){return t[w()]=N,t}function I(){return"function"==typeof Symbol&&Symbol.toStringTag||"@@toStringTag"}function N(){return this}var C=function(){function t(t){void 0===t&&(t="Atom@"+u()),this.name=t,this.isPendingUnobservation=!1,this.isBeingObserved=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.lastAccessedBy=0,this.lowestObserverState=st.NOT_TRACKING}return t.prototype.onBecomeUnobserved=function(){},t.prototype.onBecomeObserved=function(){},t.prototype.reportObserved=function(){return qt(this)},t.prototype.reportChanged=function(){Pt(),function(t){if(t.lowestObserverState!==st.STALE){t.lowestObserverState=st.STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===st.UP_TO_DATE&&(a.isTracing!==ut.NONE&&jt(a,t),a.onBecomeStale()),a.dependenciesState=st.STALE}}}(this),Mt()},t.prototype.toString=function(){return this.name},t}(),R=b("Atom",C);function A(t,e,n){void 0===e&&(e=c),void 0===n&&(n=c);var a=new C(t);return ae("onBecomeObserved",a,e,void 0),ne(a,n),a}function k(t,e){return t===e}var E={identity:k,structural:function(t,e){return We(t,e)},default:function(t,e){return function(t,e){return"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(t,e)||k(t,e)},shallow:function(t,e){return We(t,e,1)}},L=function(t,e){return(L=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function D(t,e){function n(){this.constructor=t}L(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var P=function(){return(P=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function M(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(u){r={error:u}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function q(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(M(arguments[e]));return t}var j={},F={};function V(t,e){var n=e?j:F;return n[t]||(n[t]={configurable:!0,enumerable:e,get:function(){return G(this),this[t]},set:function(e){G(this),this[t]=e}})}function G(t){if(!0!==t.__mobxDidRunLazyInitializers){var e=t.__mobxDecorators;if(e)for(var n in g(t,"__mobxDidRunLazyInitializers",!0),e){var a=e[n];a.propertyCreator(t,a.prop,a.descriptor,a.decoratorTarget,a.decoratorArguments)}}}function B(t,e){return function(){var n,r=function(a,r,i,s){return!0===s?(e(a,r,i,a,n),null):(Object.prototype.hasOwnProperty.call(a,"__mobxDecorators")||g(a,"__mobxDecorators",P({},a.__mobxDecorators)),a.__mobxDecorators[r]={prop:r,propertyCreator:e,descriptor:i,decoratorTarget:a,decoratorArguments:n},V(r,t))};return z(arguments)?(n=a,r.apply(null,arguments)):(n=Array.prototype.slice.call(arguments),r)}}function z(t){return(2===t.length||3===t.length)&&"string"==typeof t[1]||4===t.length&&!0===t[3]}function Y(t,e,n){return ue(t)?t:Array.isArray(t)?et.array(t,{name:n}):h(t)?et.object(t,void 0,{name:n}):m(t)?et.map(t,{name:n}):y(t)?et.set(t,{name:n}):t}function H(t){return t}function U(t){l(t);var e=B(!0,(function(e,n,a,r,i){!function(t,e,n,a){var r=Fe(t);if(de(r)){var i=fe(r,{object:t,name:e,type:"add",newValue:n});if(!i)return;n=i.newValue}n=(r.values[e]=new It(n,a,r.name+"."+e,!1)).value,Object.defineProperty(t,e,function(t){return Ve[t]||(Ve[t]={configurable:!0,enumerable:!0,get:function(){return this.$mobx.read(this,t)},set:function(e){this.$mobx.write(this,t,e)}})}(e)),r.keys&&r.keys.push(e),function(t,e,n,a){var r=he(t),i=Bt(),s=r||i?{type:"add",object:e,name:n,newValue:a}:null;i&&Yt(P(P({},s),{name:t.name,key:n})),r&&pe(t,s),i&&Ut()}(r,t,e,n)}(e,n,a?a.initializer?a.initializer.call(e):a.value:void 0,t)})),n=("undefined"!=typeof process&&process,e);return n.enhancer=t,n}var W={deep:!0,name:void 0,defaultDecorator:void 0};function K(t){return null==t?W:"string"==typeof t?{name:t,deep:!0}:t}function $(t){return t.defaultDecorator?t.defaultDecorator.enhancer:!1===t.deep?H:Y}Object.freeze(W),Object.freeze({deep:!1,name:void 0,defaultDecorator:void 0});var J=U(Y),Z=U((function(t,e,n){return null==t||Ye(t)||Ae(t)||De(t)||qe(t)?t:Array.isArray(t)?et.array(t,{name:n,deep:!1}):h(t)?et.object(t,void 0,{name:n,deep:!1}):m(t)?et.map(t,{name:n,deep:!1}):y(t)?et.set(t,{name:n,deep:!1}):o(!1)})),Q=U(H),X=U((function(t,e,n){return We(t,e)?e:t})),tt={box:function(t,e){arguments.length>2&&nt("box");var n=K(e);return new It(t,$(n),n.name,!0,n.equals)},shallowBox:function(t,e){return arguments.length>2&&nt("shallowBox"),et.box(t,{name:e,deep:!1})},array:function(t,e){arguments.length>2&&nt("array");var n=K(e);return new Oe(t,$(n),n.name)},shallowArray:function(t,e){return arguments.length>2&&nt("shallowArray"),et.array(t,{name:e,deep:!1})},map:function(t,e){arguments.length>2&&nt("map");var n=K(e);return new Ee(t,$(n),n.name)},shallowMap:function(t,e){return arguments.length>2&&nt("shallowMap"),et.map(t,{name:e,deep:!1})},set:function(t,e){arguments.length>2&&nt("set");var n=K(e);return new Me(t,$(n),n.name)},object:function(t,e,n){"string"==typeof arguments[1]&&nt("object");var a=K(n);return re({},t,e,a)},shallowObject:function(t,e){return"string"==typeof arguments[1]&&nt("shallowObject"),et.object(t,{},{name:e,deep:!1})},ref:Q,shallow:Z,deep:J,struct:X},et=function(t,e,n){if("string"==typeof arguments[1])return J.apply(null,arguments);if(ue(t))return t;var a=h(t)?et.object(t,e,n):Array.isArray(t)?et.array(t,e):m(t)?et.map(t,e):y(t)?et.set(t,e):t;if(a!==t)return a;o(!1)};function nt(t){o("Expected one or two arguments to observable."+t+". Did you accidentally try to use observable."+t+" as decorator?")}Object.keys(tt).forEach((function(t){return et[t]=tt[t]}));var at=B(!1,(function(t,e,n,a,r){var i,s,u,o;i=t,s=e,u=P({get:n.get,set:n.set},r[0]||{}),o=Fe(i),u.name=o.name+"."+s,u.context=i,o.values[s]=new Nt(u),Object.defineProperty(i,s,function(t){return Ge[t]||(Ge[t]={configurable:kt.computedConfigurable,enumerable:!1,get:function(){return Be(this).read(this,t)},set:function(e){Be(this).write(this,t,e)}})}(s))})),rt=at({equals:E.structural}),it=function(t,e,n){if("string"==typeof e)return at.apply(null,arguments);if(null!==t&&"object"==typeof t&&1===arguments.length)return at.apply(null,arguments);var a="object"==typeof e?e:{};return a.get=t,a.set="function"==typeof e?e:a.set,a.name=a.name||t.name||"",new Nt(a)};it.struct=rt;var st=function(t){return t[t.NOT_TRACKING=-1]="NOT_TRACKING",t[t.UP_TO_DATE=0]="UP_TO_DATE",t[t.POSSIBLY_STALE=1]="POSSIBLY_STALE",t[t.STALE=2]="STALE",t}({}),ut=function(t){return t[t.NONE=0]="NONE",t[t.LOG=1]="LOG",t[t.BREAK=2]="BREAK",t}({}),ot=function(){return function(t){this.cause=t}}();function lt(t){return t instanceof ot}function dt(t){switch(t.dependenciesState){case st.UP_TO_DATE:return!1;case st.NOT_TRACKING:case st.STALE:return!0;case st.POSSIBLY_STALE:for(var e=mt(!0),n=pt(),a=t.observing,r=a.length,i=0;i<r;i++){var s=a[i];if(Ct(s)){if(kt.disableErrorBoundaries)s.get();else try{s.get()}catch(u){return bt(n),yt(e),!0}if(t.dependenciesState===st.STALE)return bt(n),yt(e),!0}}return vt(t),bt(n),yt(e),!1}}function ct(t){var e=t.observers.length>0;kt.computationDepth>0&&e&&o(!1),kt.allowStateChanges||!e&&"strict"!==kt.enforceActions||o(!1)}function ft(t,e,n){var a=mt(!0);vt(t),t.newObserving=new Array(t.observing.length+100),t.unboundDepsCount=0,t.runId=++kt.runId;var r,i=kt.trackingDerivation;if(kt.trackingDerivation=t,!0===kt.disableErrorBoundaries)r=e.call(n);else try{r=e.call(n)}catch(s){r=new ot(s)}return kt.trackingDerivation=i,function(t){for(var e=t.observing,n=t.observing=t.newObserving,a=st.UP_TO_DATE,r=0,i=t.unboundDepsCount,s=0;s<i;s++)0===(u=n[s]).diffValue&&(u.diffValue=1,r!==s&&(n[r]=u),r++),u.dependenciesState>a&&(a=u.dependenciesState);for(n.length=r,t.newObserving=null,i=e.length;i--;)0===(u=e[i]).diffValue&&Lt(u,t),u.diffValue=0;for(;r--;){var u;1===(u=n[r]).diffValue&&(u.diffValue=0,Et(u,t))}a!==st.UP_TO_DATE&&(t.dependenciesState=a,t.onBecomeStale())}(t),yt(a),r}function ht(t){var e=t.observing;t.observing=[];for(var n=e.length;n--;)Lt(e[n],t);t.dependenciesState=st.NOT_TRACKING}function gt(t){var e=pt(),n=t();return bt(e),n}function pt(){var t=kt.trackingDerivation;return kt.trackingDerivation=null,t}function bt(t){kt.trackingDerivation=t}function mt(t){var e=kt.allowStateReads;return kt.allowStateReads=t,e}function yt(t){kt.allowStateReads=t}function vt(t){if(t.dependenciesState!==st.UP_TO_DATE){t.dependenciesState=st.UP_TO_DATE;for(var e=t.observing,n=e.length;n--;)e[n].lowestObserverState=st.UP_TO_DATE}}var xt=0,_t=1;function Tt(t,e){var n=function(){return wt(t,e,this,arguments)};return n.isMobxAction=!0,n}function wt(t,e,n,a){var r=function(t,e,n){var a=Bt()&&!!t,r=0;if(a){r=Date.now();var i=n&&n.length||0,s=new Array(i);if(i>0)for(var u=0;u<i;u++)s[u]=n[u];Yt({type:"action",name:t,object:e,arguments:s})}var o=pt();Pt();var l={prevDerivation:o,prevAllowStateChanges:Ot(!0),prevAllowStateReads:mt(!0),notifySpy:a,startTime:r,actionId:_t++,parentActionId:xt};return xt=l.actionId,l}(t,n,a);try{return e.apply(n,a)}catch(i){throw r.error=i,i}finally{!function(t){xt!==t.actionId&&o("invalid action stack. did you forget to finish an action?"),xt=t.parentActionId,void 0!==t.error&&(kt.suppressReactionErrors=!0),St(t.prevAllowStateChanges),yt(t.prevAllowStateReads),Mt(),bt(t.prevDerivation),t.notifySpy&&Ut({time:Date.now()-t.startTime}),kt.suppressReactionErrors=!1}(r)}}function Ot(t){var e=kt.allowStateChanges;return kt.allowStateChanges=t,e}function St(t){kt.allowStateChanges=t}Object.getOwnPropertyDescriptor((function(){}),"name");var It=function(t){function e(e,n,a,r,i){void 0===a&&(a="ObservableValue@"+u()),void 0===r&&(r=!0),void 0===i&&(i=E.default);var s=t.call(this,a)||this;return s.enhancer=n,s.name=a,s.equals=i,s.hasUnreportedChange=!1,s.value=n(e,void 0,a),r&&Bt()&&zt({type:"create",name:s.name,newValue:""+s.value}),s}return D(e,t),e.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},e.prototype.set=function(t){var e=this.value;if((t=this.prepareNewValue(t))!==kt.UNCHANGED){var n=Bt();n&&Yt({type:"update",name:this.name,newValue:t,oldValue:e}),this.setNewValue(t),n&&Ut()}},e.prototype.prepareNewValue=function(t){if(ct(this),de(this)){var e=fe(this,{object:this,type:"update",newValue:t});if(!e)return kt.UNCHANGED;t=e.newValue}return t=this.enhancer(t,this.value,this.name),this.equals(this.value,t)?kt.UNCHANGED:t},e.prototype.setNewValue=function(t){var e=this.value;this.value=t,this.reportChanged(),he(this)&&pe(this,{type:"update",object:this,newValue:t,oldValue:e})},e.prototype.get=function(){return this.reportObserved(),this.dehanceValue(this.value)},e.prototype.intercept=function(t){return ce(this,t)},e.prototype.observe=function(t,e){return e&&t({object:this,type:"update",newValue:this.value,oldValue:void 0}),ge(this,t)},e.prototype.toJSON=function(){return this.get()},e.prototype.toString=function(){return this.name+"["+this.value+"]"},e.prototype.valueOf=function(){return _(this.get())},e}(C);It.prototype[x()]=It.prototype.valueOf,b("ObservableValue",It);var Nt=function(){function t(t){this.dependenciesState=st.NOT_TRACKING,this.observing=[],this.newObserving=null,this.isBeingObserved=!1,this.isPendingUnobservation=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.runId=0,this.lastAccessedBy=0,this.lowestObserverState=st.UP_TO_DATE,this.unboundDepsCount=0,this.__mapid="#"+u(),this.value=new ot(null),this.isComputing=!1,this.isRunningSetter=!1,this.isTracing=ut.NONE,l(t.get,"missing option for computed: get"),this.derivation=t.get,this.name=t.name||"ComputedValue@"+u(),t.set&&(this.setter=Tt(this.name+"-setter",t.set)),this.equals=t.equals||(t.compareStructural||t.struct?E.structural:E.default),this.scope=t.context,this.requiresReaction=!!t.requiresReaction,this.keepAlive=!!t.keepAlive}return t.prototype.onBecomeStale=function(){!function(t){if(t.lowestObserverState===st.UP_TO_DATE){t.lowestObserverState=st.POSSIBLY_STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===st.UP_TO_DATE&&(a.dependenciesState=st.POSSIBLY_STALE,a.isTracing!==ut.NONE&&jt(a,t),a.onBecomeStale())}}}(this)},t.prototype.onBecomeUnobserved=function(){},t.prototype.onBecomeObserved=function(){},t.prototype.get=function(){this.isComputing&&o("Cycle detected in computation "+this.name+": "+this.derivation),0!==kt.inBatch||0!==this.observers.length||this.keepAlive?(qt(this),dt(this)&&this.trackAndCompute()&&function(t){if(t.lowestObserverState!==st.STALE){t.lowestObserverState=st.STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===st.POSSIBLY_STALE?a.dependenciesState=st.STALE:a.dependenciesState===st.UP_TO_DATE&&(t.lowestObserverState=st.UP_TO_DATE)}}}(this)):dt(this)&&(this.warnAboutUntrackedRead(),Pt(),this.value=this.computeValue(!1),Mt());var t=this.value;if(lt(t))throw t.cause;return t},t.prototype.peek=function(){var t=this.computeValue(!1);if(lt(t))throw t.cause;return t},t.prototype.set=function(t){if(this.setter){l(!this.isRunningSetter,"The setter of computed value '"+this.name+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"),this.isRunningSetter=!0;try{this.setter.call(this.scope,t)}finally{this.isRunningSetter=!1}}else l(!1,!1)},t.prototype.trackAndCompute=function(){Bt()&&zt({object:this.scope,type:"compute",name:this.name});var t=this.value,e=this.dependenciesState===st.NOT_TRACKING,n=this.computeValue(!0),a=e||lt(t)||lt(n)||!this.equals(t,n);return a&&(this.value=n),a},t.prototype.computeValue=function(t){var e;if(this.isComputing=!0,kt.computationDepth++,t)e=ft(this,this.derivation,this.scope);else if(!0===kt.disableErrorBoundaries)e=this.derivation.call(this.scope);else try{e=this.derivation.call(this.scope)}catch(n){e=new ot(n)}return kt.computationDepth--,this.isComputing=!1,e},t.prototype.suspend=function(){this.keepAlive||(ht(this),this.value=void 0)},t.prototype.observe=function(t,e){var n=this,a=!0,r=void 0;return Qt((function(){var i=n.get();if(!a||e){var s=pt();t({type:"update",object:n,newValue:i,oldValue:r}),bt(s)}a=!1,r=i}))},t.prototype.warnAboutUntrackedRead=function(){},t.prototype.toJSON=function(){return this.get()},t.prototype.toString=function(){return this.name+"["+this.derivation.toString()+"]"},t.prototype.valueOf=function(){return _(this.get())},t}();Nt.prototype[x()]=Nt.prototype.valueOf;var Ct=b("ComputedValue",Nt),Rt=function(){return function(){this.version=5,this.UNCHANGED={},this.trackingDerivation=null,this.computationDepth=0,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!0,this.allowStateReads=!0,this.enforceActions=!1,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.computedConfigurable=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1}}(),At=!0,kt=function(){var t=s();return t.__mobxInstanceCount>0&&!t.__mobxGlobals&&(At=!1),t.__mobxGlobals&&t.__mobxGlobals.version!==(new Rt).version&&(At=!1),At?t.__mobxGlobals?(t.__mobxInstanceCount+=1,t.__mobxGlobals.UNCHANGED||(t.__mobxGlobals.UNCHANGED={}),t.__mobxGlobals):(t.__mobxInstanceCount=1,t.__mobxGlobals=new Rt):(setTimeout((function(){o("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`")}),1),new Rt)}();function Et(t,e){var n=t.observers.length;n&&(t.observersIndexes[e.__mapid]=n),t.observers[n]=e,t.lowestObserverState>e.dependenciesState&&(t.lowestObserverState=e.dependenciesState)}function Lt(t,e){if(1===t.observers.length)t.observers.length=0,Dt(t);else{var n=t.observers,a=t.observersIndexes,r=n.pop();if(r!==e){var i=a[e.__mapid]||0;i?a[r.__mapid]=i:delete a[r.__mapid],n[i]=r}delete a[e.__mapid]}}function Dt(t){!1===t.isPendingUnobservation&&(t.isPendingUnobservation=!0,kt.pendingUnobservations.push(t))}function Pt(){kt.inBatch++}function Mt(){if(0==--kt.inBatch){Vt();for(var t=kt.pendingUnobservations,e=0;e<t.length;e++){var n=t[e];n.isPendingUnobservation=!1,0===n.observers.length&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBecomeUnobserved()),n instanceof Nt&&n.suspend())}kt.pendingUnobservations=[]}}function qt(t){var e=kt.trackingDerivation;return null!==e?(e.runId!==t.lastAccessedBy&&(t.lastAccessedBy=e.runId,e.newObserving[e.unboundDepsCount++]=t,t.isBeingObserved||(t.isBeingObserved=!0,t.onBecomeObserved())),!0):(0===t.observers.length&&kt.inBatch>0&&Dt(t),!1)}function jt(t,e){if(console.log("[mobx.trace] '"+t.name+"' is invalidated due to a change in: '"+e.name+"'"),t.isTracing===ut.BREAK){var n=[];!function t(e,n,a){n.length>=1e3?n.push("(and many more)"):(n.push(""+new Array(a).join("\t")+e.name),e.dependencies&&e.dependencies.forEach((function(e){return t(e,n,a+1)})))}((a=t,ie(He(a,void 0))),n,1),new Function("debugger;\n/*\nTracing '"+t.name+"'\n\nYou are entering this break point because derivation '"+t.name+"' is being traced and '"+e.name+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(t instanceof Nt?t.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n    ")()}var a}var Ft=function(){function t(t,e,n,a){void 0===t&&(t="Reaction@"+u()),void 0===a&&(a=!1),this.name=t,this.onInvalidate=e,this.errorHandler=n,this.requiresObservable=a,this.observing=[],this.newObserving=[],this.dependenciesState=st.NOT_TRACKING,this.diffValue=0,this.runId=0,this.unboundDepsCount=0,this.__mapid="#"+u(),this.isDisposed=!1,this._isScheduled=!1,this._isTrackPending=!1,this._isRunning=!1,this.isTracing=ut.NONE}return t.prototype.onBecomeStale=function(){this.schedule()},t.prototype.schedule=function(){this._isScheduled||(this._isScheduled=!0,kt.pendingReactions.push(this),Vt())},t.prototype.isScheduled=function(){return this._isScheduled},t.prototype.runReaction=function(){if(!this.isDisposed){if(Pt(),this._isScheduled=!1,dt(this)){this._isTrackPending=!0;try{this.onInvalidate(),this._isTrackPending&&Bt()&&zt({name:this.name,type:"scheduled-reaction"})}catch(t){this.reportExceptionInDerivation(t)}}Mt()}},t.prototype.track=function(t){Pt();var e,n=Bt();n&&(e=Date.now(),Yt({name:this.name,type:"reaction"})),this._isRunning=!0;var a=ft(this,t,void 0);this._isRunning=!1,this._isTrackPending=!1,this.isDisposed&&ht(this),lt(a)&&this.reportExceptionInDerivation(a.cause),n&&Ut({time:Date.now()-e}),Mt()},t.prototype.reportExceptionInDerivation=function(t){var e=this;if(this.errorHandler)this.errorHandler(t,this);else{if(kt.disableErrorBoundaries)throw t;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";kt.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name+"' suppressed, fix error of causing action below)"):console.error(n,t),Bt()&&zt({type:"error",name:this.name,message:n,error:""+t}),kt.globalReactionErrorHandlers.forEach((function(n){return n(t,e)}))}},t.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this._isRunning||(Pt(),ht(this),Mt()))},t.prototype.getDisposer=function(){var t=this.dispose.bind(this);return t.$mobx=this,t},t.prototype.toString=function(){return"Reaction["+this.name+"]"},t.prototype.trace=function(t){void 0===t&&(t=!1),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=!1;"boolean"==typeof t[t.length-1]&&(n=t.pop());var a=oe(t);if(!a)return o(!1);a.isTracing===ut.NONE&&console.log("[mobx.trace] '"+a.name+"' tracing enabled"),a.isTracing=n?ut.BREAK:ut.LOG}(this,t)},t}();function Vt(){kt.inBatch>0||kt.isRunningReactions||function(){kt.isRunningReactions=!0;for(var t=kt.pendingReactions,e=0;t.length>0;){100==++e&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+t[0]),t.splice(0));for(var n=t.splice(0),a=0,r=n.length;a<r;a++)n[a].runReaction()}kt.isRunningReactions=!1}()}var Gt=b("Reaction",Ft);function Bt(){return!!kt.spyListeners.length}function zt(t){if(kt.spyListeners.length)for(var e=kt.spyListeners,n=0,a=e.length;n<a;n++)e[n](t)}function Yt(t){zt(P(P({},t),{spyReportStart:!0}))}var Ht={spyReportEnd:!0};function Ut(t){zt(t?P(P({},t),{spyReportEnd:!0}):Ht)}function Wt(){o(!1)}function Kt(t){return function(e,n,a){if(a){if(a.value)return{value:Tt(t,a.value),enumerable:!1,configurable:!0,writable:!0};var r=a.initializer;return{enumerable:!1,configurable:!0,writable:!0,initializer:function(){return Tt(t,r.call(this))}}}return $t(t).apply(this,arguments)}}function $t(t){return function(e,n,a){Object.defineProperty(e,n,{configurable:!0,enumerable:!1,get:function(){},set:function(e){g(this,n,Jt(t,e))}})}}var Jt=function(t,e,n,a){return 1===arguments.length&&"function"==typeof t?Tt(t.name||"<unnamed action>",t):2===arguments.length&&"function"==typeof e?Tt(t,e):1===arguments.length&&"string"==typeof t?Kt(t):!0!==a?Kt(e).apply(null,arguments):void(t[e]=Tt(t.name||e,n.value))};function Zt(t,e,n){g(t,e,Tt(e,n.bind(t)))}function Qt(t,e){void 0===e&&(e=r);var n,a=e&&e.name||t.name||"Autorun@"+u();if(e.scheduler||e.delay){var i=te(e),s=!1;n=new Ft(a,(function(){s||(s=!0,i((function(){s=!1,n.isDisposed||n.track(o)})))}),e.onError,e.requiresObservable)}else n=new Ft(a,(function(){this.track(o)}),e.onError,e.requiresObservable);function o(){t(n)}return n.schedule(),n.getDisposer()}Jt.bound=function(t,e,n,a){return!0===a?(Zt(t,e,n.value),null):n?{configurable:!0,enumerable:!1,get:function(){return Zt(this,e,n.value||n.initializer.call(this)),this[e]},set:Wt}:{enumerable:!1,configurable:!0,set:function(t){Zt(this,e,t)},get:function(){}}};var Xt=function(t){return t()};function te(t){return t.scheduler?t.scheduler:t.delay?function(e){return setTimeout(e,t.delay)}:Xt}function ee(t,e,n){void 0===n&&(n=r),"boolean"==typeof n&&(n={fireImmediately:n});var a,i,s,o=n.name||"Reaction@"+u(),l=Jt(o,n.onError?(a=n.onError,i=e,function(){try{return i.apply(this,arguments)}catch(t){a.call(this,t)}}):e),d=!n.scheduler&&!n.delay,c=te(n),f=!0,h=!1,g=n.compareStructural?E.structural:n.equals||E.default,p=new Ft(o,(function(){f||d?b():h||(h=!0,c(b))}),n.onError,n.requiresObservable);function b(){if(h=!1,!p.isDisposed){var e=!1;p.track((function(){var n=t(p);e=f||!g(s,n),s=n})),f&&n.fireImmediately&&l(s,p),f||!0!==e||l(s,p),f&&(f=!1)}}return p.schedule(),p.getDisposer()}function ne(t,e,n){return ae("onBecomeUnobserved",t,e,n)}function ae(t,e,n,a){var r="function"==typeof a?He(e,n):He(e),i="function"==typeof a?a:n,s=r[t];return"function"!=typeof s?o(!1):(r[t]=function(){s.call(this),i.call(this)},function(){r[t]=s})}function re(t,e,n,a){var r=(a=K(a)).defaultDecorator||(!1===a.deep?Q:J);G(t),Fe(t,a.name,r.enhancer),Pt();try{for(var i=Object.getOwnPropertyNames(e),s=0,u=i.length;s<u;s++){var o=i[s],l=Object.getOwnPropertyDescriptor(e,o),d=(n&&o in n?n[o]:l.get?at:r)(t,o,l,!0);d&&Object.defineProperty(t,o,d)}}finally{Mt()}return t}function ie(t){var e,n,a={name:t.name};return t.observing&&t.observing.length>0&&(a.dependencies=(e=t.observing,n=[],e.forEach((function(t){-1===n.indexOf(t)&&n.push(t)})),n).map(ie)),a}function se(t,e){if(null==t)return!1;if(void 0!==e){if(Ye(t)){var n=t.$mobx;return n.values&&!!n.values[e]}return!1}return Ye(t)||!!t.$mobx||R(t)||Gt(t)||Ct(t)}function ue(t){return 1!==arguments.length&&o(!1),se(t)}function oe(t){switch(t.length){case 0:return kt.trackingDerivation;case 1:return He(t[0]);case 2:return He(t[0],t[1])}}function le(t,e){void 0===e&&(e=void 0),Pt();try{return t.apply(e)}finally{Mt()}}function de(t){return void 0!==t.interceptors&&t.interceptors.length>0}function ce(t,e){var n=t.interceptors||(t.interceptors=[]);return n.push(e),d((function(){var t=n.indexOf(e);-1!==t&&n.splice(t,1)}))}function fe(t,e){var n=pt();try{var a=t.interceptors;if(a)for(var r=0,i=a.length;r<i&&(l(!(e=a[r](e))||e.type,"Intercept handlers should return nothing or a change object"),e);r++);return e}finally{bt(n)}}function he(t){return void 0!==t.changeListeners&&t.changeListeners.length>0}function ge(t,e){var n=t.changeListeners||(t.changeListeners=[]);return n.push(e),d((function(){var t=n.indexOf(e);-1!==t&&n.splice(t,1)}))}function pe(t,e){var n=pt(),a=t.changeListeners;if(a){for(var r=0,i=(a=a.slice()).length;r<i;r++)a[r](e);bt(n)}}Object.create(Error.prototype);var be,me,ye,ve,xe=(be=!1,me={},Object.defineProperty(me,"0",{set:function(){be=!0}}),Object.create(me)[0]=1,!1===be),_e=0,Te=function(){return function(){}}();ye=Te,ve=Array.prototype,void 0!==Object.setPrototypeOf?Object.setPrototypeOf(ye.prototype,ve):void 0!==ye.prototype.__proto__?ye.prototype.__proto__=ve:ye.prototype=ve,Object.isFrozen(Array)&&["constructor","push","shift","concat","pop","unshift","replace","find","findIndex","splice","reverse","sort"].forEach((function(t){Object.defineProperty(Te.prototype,t,{configurable:!0,writable:!0,value:Array.prototype[t]})}));var we=function(){function t(t,e,n,a){this.array=n,this.owned=a,this.values=[],this.lastKnownLength=0,this.atom=new C(t||"ObservableArray@"+u()),this.enhancer=function(n,a){return e(n,a,t+"[..]")}}return t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.dehanceValues=function(t){return void 0!==this.dehancer&&t.length>0?t.map(this.dehancer):t},t.prototype.intercept=function(t){return ce(this,t)},t.prototype.observe=function(t,e){return void 0===e&&(e=!1),e&&t({object:this.array,type:"splice",index:0,added:this.values.slice(),addedCount:this.values.length,removed:[],removedCount:0}),ge(this,t)},t.prototype.getArrayLength=function(){return this.atom.reportObserved(),this.values.length},t.prototype.setArrayLength=function(t){if("number"!=typeof t||t<0)throw new Error("[mobx.array] Out of range: "+t);var e=this.values.length;if(t!==e)if(t>e){for(var n=new Array(t-e),a=0;a<t-e;a++)n[a]=void 0;this.spliceWithArray(e,0,n)}else this.spliceWithArray(t,e-t)},t.prototype.updateArrayLength=function(t,e){if(t!==this.lastKnownLength)throw new Error("[mobx] Modification exception: the internal structure of an observable array was changed. Did you use peek() to change it?");this.lastKnownLength+=e,e>0&&t+e+1>_e&&Ce(t+e+1)},t.prototype.spliceWithArray=function(t,e,n){var r=this;ct(this.atom);var i=this.values.length;if(void 0===t?t=0:t>i?t=i:t<0&&(t=Math.max(0,i+t)),e=1===arguments.length?i-t:null==e?0:Math.max(0,Math.min(e,i-t)),void 0===n&&(n=a),de(this)){var s=fe(this,{object:this.array,type:"splice",index:t,removedCount:e,added:n});if(!s)return a;e=s.removedCount,n=s.added}var u=(n=0===n.length?n:n.map((function(t){return r.enhancer(t,void 0)}))).length-e;this.updateArrayLength(i,u);var o=this.spliceItemsIntoValues(t,e,n);return 0===e&&0===n.length||this.notifyArraySplice(t,n,o),this.dehanceValues(o)},t.prototype.spliceItemsIntoValues=function(t,e,n){var a;if(n.length<1e4)return(a=this.values).splice.apply(a,q([t,e],n));var r=this.values.slice(t,t+e);return this.values=this.values.slice(0,t).concat(n,this.values.slice(t+e)),r},t.prototype.notifyArrayChildUpdate=function(t,e,n){var a=!this.owned&&Bt(),r=he(this),i=r||a?{object:this.array,type:"update",index:t,newValue:e,oldValue:n}:null;a&&Yt(P(P({},i),{name:this.atom.name})),this.atom.reportChanged(),r&&pe(this,i),a&&Ut()},t.prototype.notifyArraySplice=function(t,e,n){var a=!this.owned&&Bt(),r=he(this),i=r||a?{object:this.array,type:"splice",index:t,removed:n,added:e,removedCount:n.length,addedCount:e.length}:null;a&&Yt(P(P({},i),{name:this.atom.name})),this.atom.reportChanged(),r&&pe(this,i),a&&Ut()},t}(),Oe=function(t){function e(e,n,a,r){void 0===a&&(a="ObservableArray@"+u()),void 0===r&&(r=!1);var i=t.call(this)||this,s=new we(a,n,i,r);if(p(i,"$mobx",s),e&&e.length){var o=Ot(!0);i.spliceWithArray(0,0,e),St(o)}return xe&&Object.defineProperty(s.array,"0",Se),i}return D(e,t),e.prototype.intercept=function(t){return this.$mobx.intercept(t)},e.prototype.observe=function(t,e){return void 0===e&&(e=!1),this.$mobx.observe(t,e)},e.prototype.clear=function(){return this.splice(0)},e.prototype.concat=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return this.$mobx.atom.reportObserved(),Array.prototype.concat.apply(this.peek(),t.map((function(t){return Ae(t)?t.peek():t})))},e.prototype.replace=function(t){return this.$mobx.spliceWithArray(0,this.$mobx.values.length,t)},e.prototype.toJS=function(){return this.slice()},e.prototype.toJSON=function(){return this.toJS()},e.prototype.peek=function(){return this.$mobx.atom.reportObserved(),this.$mobx.dehanceValues(this.$mobx.values)},e.prototype.find=function(t,e,n){void 0===n&&(n=0);var a=this.findIndex.apply(this,arguments);return-1===a?void 0:this.get(a)},e.prototype.findIndex=function(t,e,n){void 0===n&&(n=0);for(var a=this.peek(),r=a.length,i=n;i<r;i++)if(t.call(e,a[i],i,this))return i;return-1},e.prototype.splice=function(t,e){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];switch(arguments.length){case 0:return[];case 1:return this.$mobx.spliceWithArray(t);case 2:return this.$mobx.spliceWithArray(t,e)}return this.$mobx.spliceWithArray(t,e,n)},e.prototype.spliceWithArray=function(t,e,n){return this.$mobx.spliceWithArray(t,e,n)},e.prototype.push=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this.$mobx;return n.spliceWithArray(n.values.length,0,t),n.values.length},e.prototype.pop=function(){return this.splice(Math.max(this.$mobx.values.length-1,0),1)[0]},e.prototype.shift=function(){return this.splice(0,1)[0]},e.prototype.unshift=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this.$mobx;return n.spliceWithArray(0,0,t),n.values.length},e.prototype.reverse=function(){var t=this.slice();return t.reverse.apply(t,arguments)},e.prototype.sort=function(t){var e=this.slice();return e.sort.apply(e,arguments)},e.prototype.remove=function(t){var e=this.$mobx.dehanceValues(this.$mobx.values).indexOf(t);return e>-1&&(this.splice(e,1),!0)},e.prototype.move=function(t,e){function n(t){if(t<0)throw new Error("[mobx.array] Index out of bounds: "+t+" is negative");var e=this.$mobx.values.length;if(t>=e)throw new Error("[mobx.array] Index out of bounds: "+t+" is not smaller than "+e)}if(n.call(this,t),n.call(this,e),t!==e){var a,r=this.$mobx.values;a=t<e?q(r.slice(0,t),r.slice(t+1,e+1),[r[t]],r.slice(e+1)):q(r.slice(0,e),[r[t]],r.slice(e,t),r.slice(t+1)),this.replace(a)}},e.prototype.get=function(t){var e=this.$mobx;if(e){if(t<e.values.length)return e.atom.reportObserved(),e.dehanceValue(e.values[t]);console.warn("[mobx.array] Attempt to read an array index ("+t+") that is out of bounds ("+e.values.length+"). Please check length first. Out of bound indices will not be tracked by MobX")}},e.prototype.set=function(t,e){var n=this.$mobx,a=n.values;if(t<a.length){ct(n.atom);var r=a[t];if(de(n)){var i=fe(n,{type:"update",object:this,index:t,newValue:e});if(!i)return;e=i.newValue}(e=n.enhancer(e,r))!==r&&(a[t]=e,n.notifyArrayChildUpdate(t,e,r))}else{if(t!==a.length)throw new Error("[mobx.array] Index out of bounds, "+t+" is larger than "+a.length);n.spliceWithArray(t,0,[e])}},e}(Te);O(Oe.prototype,(function(){this.$mobx.atom.reportObserved();var t=this,e=0;return S({next:function(){return e<t.length?{value:t[e++],done:!1}:{done:!0,value:void 0}}})})),Object.defineProperty(Oe.prototype,"length",{enumerable:!1,configurable:!0,get:function(){return this.$mobx.getArrayLength()},set:function(t){this.$mobx.setArrayLength(t)}}),g(Oe.prototype,I(),"Array"),["indexOf","join","lastIndexOf","slice","toString","toLocaleString"].forEach((function(t){var e=Array.prototype[t];l("function"==typeof e,"Base function not defined on Array prototype: '"+t+"'"),g(Oe.prototype,t,(function(){return e.apply(this.peek(),arguments)}))})),["every","filter","forEach","map","some"].forEach((function(t){l("function"==typeof Array.prototype[t],"Base function not defined on Array prototype: '"+t+"'"),g(Oe.prototype,t,(function(e,n){var a=this,r=this.$mobx;return r.atom.reportObserved(),r.dehanceValues(r.values)[t]((function(t,r){return e.call(n,t,r,a)}),n)}))})),["reduce","reduceRight"].forEach((function(t){g(Oe.prototype,t,(function(){var e=this,n=this.$mobx;n.atom.reportObserved();var a=arguments[0];return arguments[0]=function(t,r,i){return r=n.dehanceValue(r),a(t,r,i,e)},n.values[t].apply(n.values,arguments)}))})),function(t,e){for(var n=0;n<e.length;n++)g(t,e[n],t[e[n]])}(Oe.prototype,["constructor","intercept","observe","clear","concat","get","replace","toJS","toJSON","peek","find","findIndex","splice","spliceWithArray","push","pop","set","shift","unshift","reverse","sort","remove","move","toString","toLocaleString"]);var Se=Ie(0);function Ie(t){return{enumerable:!1,configurable:!1,get:function(){return this.get(t)},set:function(e){this.set(t,e)}}}function Ne(t){Object.defineProperty(Oe.prototype,""+t,Ie(t))}function Ce(t){for(var e=_e;e<t;e++)Ne(e);_e=t}Ce(1e3);var Re=b("ObservableArrayAdministration",we);function Ae(t){return f(t)&&Re(t.$mobx)}var ke={},Ee=function(){function t(t,e,n){if(void 0===e&&(e=Y),void 0===n&&(n="ObservableMap@"+u()),this.enhancer=e,this.name=n,this.$mobx=ke,this._keysAtom=A(this.name+".keys()"),"function"!=typeof Map)throw new Error("mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js");this._data=new Map,this._hasMap=new Map,this.merge(t)}return t.prototype._has=function(t){return this._data.has(t)},t.prototype.has=function(t){var e=this;if(!kt.trackingDerivation)return this._has(t);var n=this._hasMap.get(t);if(!n){var a=n=new It(this._has(t),H,this.name+"."+Le(t)+"?",!1);this._hasMap.set(t,a),ne(a,(function(){return e._hasMap.delete(t)}))}return n.get()},t.prototype.set=function(t,e){var n=this._has(t);if(de(this)){var a=fe(this,{type:n?"update":"add",object:this,newValue:e,name:t});if(!a)return this;e=a.newValue}return n?this._updateValue(t,e):this._addValue(t,e),this},t.prototype.delete=function(t){var e=this;if(ct(this._keysAtom),de(this)&&!(r=fe(this,{type:"delete",object:this,name:t})))return!1;if(this._has(t)){var n=Bt(),a=he(this),r=a||n?{type:"delete",object:this,oldValue:this._data.get(t).value,name:t}:null;return n&&Yt(P(P({},r),{name:this.name,key:t})),le((function(){e._keysAtom.reportChanged(),e._updateHasMapEntry(t,!1),e._data.get(t).setNewValue(void 0),e._data.delete(t)})),a&&pe(this,r),n&&Ut(),!0}return!1},t.prototype._updateHasMapEntry=function(t,e){var n=this._hasMap.get(t);n&&n.setNewValue(e)},t.prototype._updateValue=function(t,e){var n=this._data.get(t);if((e=n.prepareNewValue(e))!==kt.UNCHANGED){var a=Bt(),r=he(this),i=r||a?{type:"update",object:this,oldValue:n.value,name:t,newValue:e}:null;a&&Yt(P(P({},i),{name:this.name,key:t})),n.setNewValue(e),r&&pe(this,i),a&&Ut()}},t.prototype._addValue=function(t,e){var n=this;ct(this._keysAtom),le((function(){var a=new It(e,n.enhancer,n.name+"."+Le(t),!1);n._data.set(t,a),e=a.value,n._updateHasMapEntry(t,!0),n._keysAtom.reportChanged()}));var a=Bt(),r=he(this),i=r||a?{type:"add",object:this,name:t,newValue:e}:null;a&&Yt(P(P({},i),{name:this.name,key:t})),r&&pe(this,i),a&&Ut()},t.prototype.get=function(t){return this.has(t)?this.dehanceValue(this._data.get(t).get()):this.dehanceValue(void 0)},t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.keys=function(){return this._keysAtom.reportObserved(),this._data.keys()},t.prototype.values=function(){var t=this,e=this.keys();return S({next:function(){var n=e.next(),a=n.done;return{done:a,value:a?void 0:t.get(n.value)}}})},t.prototype.entries=function(){var t=this,e=this.keys();return S({next:function(){var n=e.next(),a=n.done,r=n.value;return{done:a,value:a?void 0:[r,t.get(r)]}}})},t.prototype.forEach=function(t,e){var n=this;this._keysAtom.reportObserved(),this._data.forEach((function(a,r){return t.call(e,n.get(r),r,n)}))},t.prototype.merge=function(t){var e=this;return De(t)&&(t=t.toJS()),le((function(){var n=Ot(!0);try{h(t)?Object.keys(t).forEach((function(n){return e.set(n,t[n])})):Array.isArray(t)?t.forEach((function(t){var n=M(t,2);return e.set(n[0],n[1])})):m(t)?t.constructor!==Map?o("Cannot initialize from classes that inherit from Map: "+t.constructor.name):t.forEach((function(t,n){return e.set(n,t)})):null!=t&&o("Cannot initialize map from "+t)}finally{St(n)}})),this},t.prototype.clear=function(){var t=this;le((function(){gt((function(){t._data.forEach((function(e,n){return t.delete(n)}))}))}))},t.prototype.replace=function(t){var e=this;return le((function(){var n=function(t){if(m(t)||De(t))return t;if(Array.isArray(t))return new Map(t);if(h(t)){var e=new Map;for(var n in t)e.set(n,t[n]);return e}return o("Cannot convert to map from '"+t+"'")}(t),a=new Map,r=!1;if(T(e._data.keys(),(function(t){if(!n.has(t))if(e.delete(t))r=!0;else{var i=e._data.get(t);a.set(t,i)}})),T(n.entries(),(function(t){var n=M(t,2),i=n[0],s=n[1],u=e._data.has(i);if(e.set(i,s),e._data.has(i)){var o=e._data.get(i);a.set(i,o),u||(r=!0)}})),!r)if(e._data.size!==a.size)e._keysAtom.reportChanged();else for(var i=e._data.keys(),s=a.keys(),u=i.next(),l=s.next();!u.done;){if(u.value!==l.value){e._keysAtom.reportChanged();break}u=i.next(),l=s.next()}e._data=a})),this},Object.defineProperty(t.prototype,"size",{get:function(){return this._keysAtom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),t.prototype.toPOJO=function(){var t=this,e={};return this.forEach((function(n,a){return e["symbol"==typeof a?a:Le(a)]=t.get(a)})),e},t.prototype.toJS=function(){return new Map(this)},t.prototype.toJSON=function(){return this.toPOJO()},t.prototype.toString=function(){var t=this;return this.name+"[{ "+v(this.keys()).map((function(e){return Le(e)+": "+t.get(e)})).join(", ")+" }]"},t.prototype.observe=function(t,e){return ge(this,t)},t.prototype.intercept=function(t){return ce(this,t)},t}();function Le(t){return t&&t.toString?t.toString():new String(t).toString()}O(Ee.prototype,(function(){return this.entries()})),p(Ee.prototype,I(),"Map");var De=b("ObservableMap",Ee),Pe={},Me=function(){function t(t,e,n){if(void 0===e&&(e=Y),void 0===n&&(n="ObservableSet@"+u()),this.name=n,this.$mobx=Pe,this._data=new Set,this._atom=A(this.name),"function"!=typeof Set)throw new Error("mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js");this.enhancer=function(t,a){return e(t,a,n)},t&&this.replace(t)}return t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.clear=function(){var t=this;le((function(){gt((function(){t._data.forEach((function(e){t.delete(e)}))}))}))},t.prototype.forEach=function(t,e){var n=this;this._atom.reportObserved(),this._data.forEach((function(a){t.call(e,a,a,n)}))},Object.defineProperty(t.prototype,"size",{get:function(){return this._atom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),t.prototype.add=function(t){var e=this;if(ct(this._atom),de(this)&&!(r=fe(this,{type:"add",object:this,newValue:t})))return this;if(!this.has(t)){le((function(){e._data.add(e.enhancer(t,void 0)),e._atom.reportChanged()}));var n=Bt(),a=he(this),r=a||n?{type:"add",object:this,newValue:t}:null;a&&pe(this,r)}return this},t.prototype.delete=function(t){var e=this;if(de(this)&&!(r=fe(this,{type:"delete",object:this,oldValue:t})))return!1;if(this.has(t)){var n=Bt(),a=he(this),r=a||n?{type:"delete",object:this,oldValue:t}:null;return le((function(){e._atom.reportChanged(),e._data.delete(t)})),a&&pe(this,r),!0}return!1},t.prototype.has=function(t){return this._atom.reportObserved(),this._data.has(this.dehanceValue(t))},t.prototype.entries=function(){var t=0,e=v(this.keys()),n=v(this.values());return S({next:function(){var a=t;return t+=1,a<n.length?{value:[e[a],n[a]],done:!1}:{done:!0}}})},t.prototype.keys=function(){return this.values()},t.prototype.values=function(){this._atom.reportObserved();var t,e=this,n=0;return void 0!==this._data.values?t=v(this._data.values()):(t=[],this._data.forEach((function(e){return t.push(e)}))),S({next:function(){return n<t.length?{value:e.dehanceValue(t[n++]),done:!1}:{done:!0}}})},t.prototype.replace=function(t){var e=this;return qe(t)&&(t=t.toJS()),le((function(){var n=Ot(!0);try{Array.isArray(t)||y(t)?(e.clear(),t.forEach((function(t){return e.add(t)}))):null!=t&&o("Cannot initialize set from "+t)}finally{St(n)}})),this},t.prototype.observe=function(t,e){return ge(this,t)},t.prototype.intercept=function(t){return ce(this,t)},t.prototype.toJS=function(){return new Set(this)},t.prototype.toString=function(){return this.name+"[ "+v(this.keys()).join(", ")+" ]"},t}();O(Me.prototype,(function(){return this.values()})),p(Me.prototype,I(),"Set");var qe=b("ObservableSet",Me),je=function(){function t(t,e,n){this.target=t,this.name=e,this.defaultEnhancer=n,this.values={}}return t.prototype.read=function(t,e){if(this.target===t||(this.illegalAccess(t,e),this.values[e]))return this.values[e].get()},t.prototype.write=function(t,e,n){var a=this.target;a!==t&&this.illegalAccess(t,e);var r=this.values[e];if(r instanceof Nt)r.set(n);else{if(de(this)){if(!(u=fe(this,{type:"update",object:a,name:e,newValue:n})))return;n=u.newValue}if((n=r.prepareNewValue(n))!==kt.UNCHANGED){var i=he(this),s=Bt(),u=i||s?{type:"update",object:a,oldValue:r.value,name:e,newValue:n}:null;s&&Yt(P(P({},u),{name:this.name,key:e})),r.setNewValue(n),i&&pe(this,u),s&&Ut()}}},t.prototype.remove=function(t){if(this.values[t]){var e=this.target;if(de(this)&&!(i=fe(this,{object:e,name:t,type:"remove"})))return;try{Pt();var n=he(this),a=Bt(),r=this.values[t].get();this.keys&&this.keys.remove(t),delete this.values[t],delete this.target[t];var i=n||a?{type:"remove",object:e,oldValue:r,name:t}:null;a&&Yt(P(P({},i),{name:this.name,key:t})),n&&pe(this,i),a&&Ut()}finally{Mt()}}},t.prototype.illegalAccess=function(t,e){console.warn("Property '"+e+"' of '"+t+"' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner")},t.prototype.observe=function(t,e){return ge(this,t)},t.prototype.intercept=function(t){return ce(this,t)},t.prototype.getKeys=function(){var t=this;return void 0===this.keys&&(this.keys=new Oe(Object.keys(this.values).filter((function(e){return t.values[e]instanceof It})),H,"keys("+this.name+")",!0)),this.keys.slice()},t}();function Fe(t,e,n){void 0===e&&(e=""),void 0===n&&(n=Y);var a=t.$mobx;return a||(h(t)||(e=(t.constructor.name||"ObservableObject")+"@"+u()),e||(e="ObservableObject@"+u()),p(t,"$mobx",a=new je(t,e,n)),a)}var Ve=Object.create(null),Ge=Object.create(null);function Be(t){return t.$mobx||(G(t),t.$mobx)}var ze=b("ObservableObjectAdministration",je);function Ye(t){return!!f(t)&&(G(t),ze(t.$mobx))}function He(t,e){if("object"==typeof t&&null!==t){if(Ae(t))return void 0!==e&&o(!1),t.$mobx.atom;if(qe(t))return t.$mobx;if(De(t)){var n=t;return void 0===e?n._keysAtom:((a=n._data.get(e)||n._hasMap.get(e))||o(!1),a)}var a;if(G(t),Ye(t))return e?((a=t.$mobx.values[e])||o(!1),a):o(!1);if(R(t)||Ct(t)||Gt(t))return t}else if("function"==typeof t&&Gt(t.$mobx))return t.$mobx;return o(!1)}var Ue=Object.prototype.toString;function We(t,e,n){return void 0===n&&(n=-1),function t(e,n,a,r,i){if(e===n)return 0!==e||1/e==1/n;if(null==e||null==n)return!1;if(e!=e)return n!=n;var s=typeof e;if("function"!==s&&"object"!==s&&"object"!=typeof n)return!1;e=Ke(e),n=Ke(n);var u=Ue.call(e);if(u!==Ue.call(n))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+e==""+n;case"[object Number]":return+e!=+e?+n!=+n:0==+e?1/+e==1/n:+e==+n;case"[object Date]":case"[object Boolean]":return+e==+n;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(e)===Symbol.valueOf.call(n)}var o="[object Array]"===u;if(!o){if("object"!=typeof e||"object"!=typeof n)return!1;var l=e.constructor,d=n.constructor;if(l!==d&&!("function"==typeof l&&l instanceof l&&"function"==typeof d&&d instanceof d)&&"constructor"in e&&"constructor"in n)return!1}if(0===a)return!1;a<0&&(a=-1),i=i||[];for(var c=(r=r||[]).length;c--;)if(r[c]===e)return i[c]===n;if(r.push(e),i.push(n),o){if((c=e.length)!==n.length)return!1;for(;c--;)if(!t(e[c],n[c],a-1,r,i))return!1}else{var f=Object.keys(e),h=void 0;if(c=f.length,Object.keys(n).length!==c)return!1;for(;c--;)if(!$e(n,h=f[c])||!t(e[h],n[h],a-1,r,i))return!1}return r.pop(),i.pop(),!0}(t,e,n)}function Ke(t){return Ae(t)?t.peek():m(t)||De(t)||y(t)||qe(t)?v(t.entries()):t}function $e(t,e){return Object.prototype.hasOwnProperty.call(t,e)}"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(t){return kt.spyListeners.push(t),d((function(){kt.spyListeners=kt.spyListeners.filter((function(e){return e!==t}))}))},extras:{getDebugName:function(t,e){return(void 0!==e?He(t,e):Ye(t)||De(t)||qe(t)?function t(e,n){return e||o("Expecting some object"),void 0!==n?t(He(e,n)):R(e)||Ct(e)||Gt(e)||De(e)||qe(e)?e:(G(e),e.$mobx?e.$mobx:void o(!1))}(t):He(t)).name}},$mobx:"$mobx"})},"2ykv":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"2zzJ":function(t,e,n){var a=n("MOZO"),r=n("Wv1A");t.exports=function(t,e){for(var n=0,i=(e=a(e,t)).length;null!=t&&n<i;)t=t[r(e[n++])];return n&&n==i?t:void 0}},"3+CB":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="ko-KR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>네비게이션 전환</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>현황판</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>클러스터</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>호스트들</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>모니터들</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>서비스들</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD들</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>설정</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>크러쉬맵</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>메니저 모듈들</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>로그들</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>풀들</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>블럭</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>이미지들</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>미러링</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>파일시스템들</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>오브젝트게이트웨이</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>데몬들</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>버킷들</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>언어선택</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>패널 데이타 로딩 중...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>그라파나 타임 픽커</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>설정 초기화</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>뒤로</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>데이타 로딩 실폐</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>선택된</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>발견된</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>전체</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>이름</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>설명</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>자세한 설명</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>기본값</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>데모 기본값</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>값들</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>저장하기</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>크러쉬맵 보기</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>로딩중...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>호스트이름</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>이 필드는 필수적입니다.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>예, 확실합니다.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>취소</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>닫기</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>호스트 목록들</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>통합 성능치</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>항목들을 찾을 수 없음</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>클러스터 로그들</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>감사 로그들</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>설정 로딩 중</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>설정을 로드할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>관리모듈 편집하기</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>입력된 값이 유효한 UUID가 아닙니다, 예.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>입력된 값은 유효한 IP주소 여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>입력된 값은 적어도 하나의 숫자를 필요로 합니다.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>입력 된 값은 숫자 또는 십진수여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>갱신</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>클러스터 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>몬맵 변경시간</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>몬맵 변경번호</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>정족수 일치번호</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>정족수 모니터상태</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>요구되는 일치번호</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>요구되는 모니터상태</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>정족수에 포함</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>정족수 미포함</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>추가</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>특징들</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>클러스터-수준의 OSD 플레그들</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>제출</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>자세한 옵션...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 복구 우선순위</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>우선순위</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>우선 순위 값 맞춤 설정</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>이 필드는 요구됩니다!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>값은 0과 1사이어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>재-조정</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, 선택, 1 {깊이 } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, 선택, 1 {깊이 } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 목록들</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>값</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>편집</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>삭제</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>건강상태</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>통계들</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>클라이언트들</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>모든 클라이언트 접근가능</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>주소들</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>필수 입력란</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>반드시 하나 이상의 쉼표로 구분 된 값을 포함해야 함</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>예를들면:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>접근형태</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>클라이언트들 추가</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 사용가능 클러스터 없음 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 클러스터 선택 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>데몬 추가하기</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>스토리지 백엔드</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 이용가능한 데이타풀 없음 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 스토리지 백엔드 선택 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>객체 게이트웨이 사용자</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 사용가능한 사용자들 없음 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 객체 게이트웨이 사용자 선택 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 사용자 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 사용가능한 클라이언트 없음 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx 클라이언트 선택 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 이름</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>보안 레이블</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>보안 레이블 사용</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 경로</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>경로는 \'/\'로 시작해야하며 그 뒤에 단어가 올 수 있습니다</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>새로운 디렉토리가 만들어 질 것입니다</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>경로</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>경로는 하나의 \'/\' 또는 하나의 단어 일 수 있습니다</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>새로운 버킷이 만들어 질 것입니다</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 프로토콜</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 태크</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>클라이언트는 하위 디렉토리를 마운트 할 수 없습니다 (즉, Tag = foo 인 경우 클라이언트가 foo / baz를 마운트하지 못할 수 있습니다).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>다른 태그 옵션을 사용하면 같은 경로를 여러 번 내보낼 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>다른 Pseudo 옵션을 사용하면 동일한 경로를 여러 번 내보낼 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 사용가능한 접근형태 없음 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 접근형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 사용가능한 squash 없음 --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 어떤 종류의 사용자 ID 스쿼시가 수행되는지 선택하세요 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>전송프로토콜</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Ceph 사용을 환영합니다.</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>사용자이름이 필요합니다</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>암호가 필요합니다</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>로그인</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>미안합니다. 사용자가 Ceph내에 존재하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>금지됨</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>미안합니다. 당신이 요청할 것을 열람하는 것이 허락되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 설정들</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>로컬 구성 값을 제거하십시오. 상위 구성 값은 계승되고 대신 사용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>최소값은 0입니다.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>풀 목록들</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>이름은 영숫자, 대시 및 밑줄로만 구성 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>선택한 Erasure Code 프로파일 이름이 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>플러그인</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>데이터 덩어리들 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>반드시 2보다 크거나 같아야합니다.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>코딩 덩어리들 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>반드시 1보다 크거나 같아야합니다.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>내구성 평가(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>지역 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>크러쉬 실패 도메인</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>크러쉬 지역</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>없음</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>기술</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>패킷크기</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>크러쉬루트</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>크러쉬 장치 클래스</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>모든</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>디렉토리</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>이름...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>선택한 Ceph 풀이름이 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>풀 형태</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 풀 형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>게재위치 그룹</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>적어도 하나의 게재위치 그룹이 필요함!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>클러스터는 이 많은 PG들를 처리 할 수 없습니다. 필요한 PG 양을 다시 계산하십시오.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>계산 도움말</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>복제되는 크기</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>플레그들</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 덮어쓰기</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>응용프로그램들</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure Code 프로파일</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 사용가능한 Erasure Code 프로파일 없음 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 한개의 Erasure Code 프로파일 선택 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>크러쉬 룰셋</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 크러쉬 룰 선택 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>크러쉬 룰</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>크러쉬 단계들</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>압축</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>양식</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>알고리즘</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 이용가능한 Erasure 압축알고리즘 없음 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>최소 blob 크기</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>예) 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>값은 0보다 커야합니다</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>최대 blob 크기</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>예) 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>값은 최소 blob 크기보다 커야 합니다</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>비율</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>압축율</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>값은 0.0과 1.0 사이 여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>예., 100 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>세부설명</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>성능 세부정보들</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>케쉬 계층들 상세설명들</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>이미지를 휴지통에 이동</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>보호가 만료되는 </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>보호되지 않음</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>날짜 형식 오류. "YYYY-MM-DD HH:mm:ss" 형식으로 지정하세요.</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>보호기간이 이미 만료되었습니다. 더 미래의 날짜를 선택하거나 공란으로 남겨두세요.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>이미지 옮기기</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>개관</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>타겟들</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>인증 탐색</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>사용자이름은 8~64자까지 길이의 문자들을 가져야 하며 그리고, 오직 , \'.\', \'@\', \'-\', \'_\', \':\' 등의 특수 문자들만을 포함가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>암호</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>공동 사용자</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>공통 암호</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>이용가능한 정보:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI 타겟이 이용 불가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>풀</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>데이타 풀</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>생성된</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>크기</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>오브젝트들</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>객체크기</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>준비된</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>이용불가</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>준비된 총계</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>스트라이핑 단위</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>스트라이핑 횟수</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>상위</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>블록 이름 접두사</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>순서</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>스냅삿</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>이미지</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>이 설정은 전역 값을 덮어씁니다.</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>글로벌</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>이것은 전역 값입니다. 이 이미지에 대해 이 옵션의 값이 설정되지 않았습니다.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' 와 \'@\' 문자는 사용불가입니다.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 이용가능한 rbd풀 없음 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 풀 선택 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>전용 데이타 풀들을 사용하세요</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>데이타 풀</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>RBD의 객체-데이타를 저장하고 있는 전용 풀</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>사이즈를 증가시켜야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>자세한</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>분산저장</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>분산저장단위</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 분산저장단위 선택 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>분산저장 개수가 정의되어 있으므로 이 필드는 필수입니다!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>분산저장단위는 객체크기보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>분산저장 갯수</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>분산저장 단위가 정의되어 있으므로 이 필드는 필수입니다!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>분산저장 갯수는 반드시 0보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>롤백하려고 합니다.</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>휴지통 비우기</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>모든</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>풀:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>풀 이름:</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>이미지 복구하기</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>복구를 위해</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>이미지들의 새로운 이름을 입력하고 클릭하세요</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>새로운 이름</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>폐기될</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>까지 보호됨</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 토폴로지</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>기본설정 값들로 부터 인자를 변경하는 것은 일반적으로 필요하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>설정들</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>백스토어</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>확인</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>고급설정들</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>타겟 IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN이 잘못된 패턴을 가지고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Key\n예를들면: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>추가 정보</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>이 타겟은 고급설정들을 수정했습니다.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>포털</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>포털 추가</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>이 이미지는 설정들을 수정했습니다. </target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>이미지 추가</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 인증</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>개시자들</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>개시자들</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>클라이언트 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>개시자 IQN은 유일해야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>사용자이름은 8~64자까지 길이의 문자들을 가져야 하며 그리고, 오직 , \'.\', \'@\', \'-\', \'_\', \':\' 등의 특수 문자들만 포함이 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>개시자는 하나의 그룹에 속해야 하고, 이미지는 그룹안에서 설정합니다.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>추가된 아이템들이 없음</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>게시자 추가</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>그룹들</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>그룹</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>그룹추가</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>휴지통</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>이슈들</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>동기화중</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>준비됨</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>풀 미러모드를 편집하기</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>상대방 클러스터들은 미러를 단절하기 전에 반드시 제거되어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>클러스터 이름</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>클러스터 이름이 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX 아이디</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX 아이디...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX 아이디가 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>모니터 주소들</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>콤마로 분리된 주소들...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>모니터 주소가 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 키</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64로 인코딩 된 키 ...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 키는 반드시 base64로 인코드 되어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>성능 카운터들을 사용 할 수 없음</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>데몬 목록들</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>성능 카운터</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>버킷데이타 적재 중</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>값이 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>선택한 이름이 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>소유자</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 사용자 선택 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>이용가능</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>색인형식</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>위치규칙</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>표시</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>최대 마커</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>버젼</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>마스터 버젼</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>수정된 시간</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>제로그룹</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>버킷 할당량</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>최대 크기</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>무제한</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>최대 객체들</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>사용자명</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 사용자명 선택 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>자동생성된 키</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>접근 키</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>비밀 키</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>전체 이름</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>전자우편 주소</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>유예되다.</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>시스템</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>최대 버킷들</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>보조사용자들</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>능력치들</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>사용자 할당량</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>보기</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>키들</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>형태</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>권한</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 권한 선택 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>보조사용자</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>선택한 보조사용자 아이디가 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>읽기, 쓰기</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>가득찬</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>스위프트 키</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>자동생선된 비밀</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>사용자 데이타 적재 중...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>사용자 데이타를 적재할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>선택된 사용자 아이디가 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>이것은 유효한 전자우편 주소가 아닙니다.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>선택한 전자우편 주소가 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>최대 버킷들</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>설정해제됨</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>커스텀</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 키</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>보조사용자가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>키가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>스위프트</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>능력치가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>무제한 크기</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>최대 크기</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>무제한 객체들</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>최대 객체들</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>입력된 값은 반드시 0보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>세부설명...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>권한들</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>역할들</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>암호 확인</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>암호 확인이 암호와 일치하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>전자우편</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>유효하지않는 전자우편.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>당신의 사용자로부터 "사용자 읽기 / 업데이트"권한을 제거하려고합니다.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>계속하면 모든 사용자에게 역할을 추가하거나 제거 할 수 없게됩니다.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>계속 진행하기를 원하십니까?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>도움말</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>문서</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>대하여</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>대쉬보드 설정</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>사용자 관리</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>로그인된 사용자</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>로그아웃</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>속성들 (OSD 맵)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>메타데이타 사용할 수 없음</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>메타데이타</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>성능 카운터</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>쓰기</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>읽기</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>히스토그램</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>현재 값들</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>최소</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>최대</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>소스</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>수준</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>수행시간에 갱신가능함(편집가능)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>테크들</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>열거형 값들</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>추가로 더보기</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>클러스터 상태</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>관리자 데몬들</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>오브젝트 게이트웨이들</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>메타데이타 서버들</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 게이트웨이들</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>클라이언트 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>클라이언트 처리량</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>클라이언트 읽기/쓰기</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>복구 처리량</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>세정작업</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>성능</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>원시용량</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSD당 PG들</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 상태들</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>용량</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>순위</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>현재</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>업데이트된 검색 인증</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>사용가능한 포탈들이 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>사용가능한 이미지들이 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>사용할 수있는 이미지가 없습니다. 대상에 이미지를 추가했는지 확인하십시오.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>사용할 수있는 개시자가 없습니다. 대상에 개시자를 추가했는지 확인하십시오.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>타겟</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>읽은 바이트들</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>쓰기 바이트들</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>읽기 Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>쓰기 Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O 이래로</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>인스탄스</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>이슈</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>진행중</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>편집모드</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>상대방 추가</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>상대방 편집</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>상대방 삭제</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>리더</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># 로컬</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># 원격</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>상대방 미러</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>키</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>딥 패턴</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>계층화</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>배타적인 락</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>오프젝트-맵(배타적인-락을 요구한다)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>저널링(배탁적인-락을 요구합니다.)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>보호안됨</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 스냅샷 롤백</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>롤백</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 스냅샷</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>삭제될 </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>형태</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>버젼</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>호스트</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>루트</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>대기 데몬들</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>순위</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>데몬</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>활동</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>덴트리들</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>아이노드들</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>사용량</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>갱신된</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>이 값은 런타임에 업데이트 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>데몬들 / 클라이언트들은 모니터 구성 데이터베이스에서이 값을 가져 오지 않습니다. \'ceph config set ...\'을 통해이 옵션을 설정하는 것은 허락되지 않습니다. 이 옵션은 ceph.conf 또는 명령 줄을 통해 구성해야합니다.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>옵션은 데몬 시작 중에 만 적용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>옵션은 클러스터 생성할 때 만 영향을 줍니다.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>옵션은 데몬 생성할 때만 영향을줍니다.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>서비스</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>현재값</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>편집가능</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>사용가능</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>사용불가</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>재-접속 중, 기다려 주세요...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>공개 주소</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>열린 세션들</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>들어올 수 없는</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>이전에 마크 아웃 된 OSD는 시작시 다시 표시되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>나갈 수 없는</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD들은 구성된 간격 후에는 자동으로 표시되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>살아나지 않는</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD는 시작할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>죽일 수 없는</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>모니터가 OSD들의 다운을 표시하지 않도록 OSD 장애 보고서가 무시되고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>멈출</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>읽기와 쓰기를 멈춤</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>스크러빙 않됨</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>스크러빙이 비활성화되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>딥 스크럽 안됨</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>딥 스크러빙이 비활성되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>백필 없음</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG들의 백필이 일시중지 되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>복구 않됨</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG들의 복구가 일시중지 되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>비트단위 정렬</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>비트단위 정렬을 사용하세요</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>완전삭제된 스냅디렉토리들</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD들이 변화된 스냅셋을 가지고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>삭제된 복구들</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>피어링 대신 복구 중에 수행된 삭제물들</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 로그 하드 한계</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>pg 로그 길이에 하드 한계를 넣으세요</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>갱신된 OSD 플래그들</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>아웃</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>인</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>다운</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>표시</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 손실</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>손실 표시</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>완전제거</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>완전제거된</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>파괴된</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>삭제</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>읽은 바이트들</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>쓰여진 바이트들</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>읽기 ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>쓰기 ops</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>최대 백필들</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>최대 활성화를 복구하기</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>최대 단일 시작을 복구하기</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>잠자기를 복구하기</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>일</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>심각도</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>시작된</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>사용된</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>이용가능:</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>깨끗한</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>정상동작중</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>경고</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>알려지지 않은</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>정상</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>파일시스템들 없음</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>활성화된</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>대기중인</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>이용불가</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>활성화된 데몬들</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>정족수</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganesha 서비스가 설정되지 않음</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>전송</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 사용자</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 파일시스템</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(전역 구성에서 상속)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>전역 구성에서 상속</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>- 어떤 종류의 사용자 ID 스쿼시가 수행되는지 선택 -</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>사용가능한 데몬이 없읍니다.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>캐쉬모드</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>최소 퇴거 연령</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>최소 플러시 연령</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>목표 최대 바이트들</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>목표 최대 오브젝트들</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>추가된 응용프로그램 없음</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>응용프로그램 한계에 도달함</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>하나의 풀은 오직 네개의 응용프로그램 정의들을 가질 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target> \'_a-zA-Z0-9\' 문자들만 허락됨</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>최대 길이는 128글자이다.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>필터 또는 추가된 응용프로그램들</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>응용프로그램 추가</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure 코드 프로파일</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>복제 크기</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>마지막 변경</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure 코드화된 프로파일</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>크러쉬 룰셋</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>버킷</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>버킷들</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>사용자들</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>범위</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>읽기</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>만들기</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>시스템 롤</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>갱신된 사용자</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>계속</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>당신의 롤들이 변경되어 당신은 자동적으로 로그아웃되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>각각의 오브젝트들은 데이타-청크 부분들로 분리되어, 각기 다른 OSD에 보관됩니다.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>각 오브젝트들에 대한 코딩 청크를 계산하고 서로 다른 OSD에 저장합니다. \n코딩된 청크의 수는 데이터 손실없이 작동중지 되어 질 수있는 OSD의 숫자이기도합니다.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Jerasure 플러그인은 가장 일반적이고 유연한 플러그인으로,\n또한 Ceph erasure 코드 풀의 기본값이기도합니다.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>보다 유연한 기술은 reed_sol_van입니다 : k와 m을 설정하면 충분합니다. \ncauchy_good 기술은 빠를 수 있지만 패킷크기를 주의깊게 선택해야합니다. \nreed_sol_r6_op, liberation, blaum_roth, liber8tion은 모두 m = 2로만 구성 할 수 있다는 점에서 RAID-6에 해당합니다.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>인코딩은 한번에 바이트들 크기의 패킷에 대해 수행됩니다. 올바른 패킷 크기를 선택하는 것은 어렵습니다. jerasure 문서에는이 주제에 대한 광범위한 정보가 들어 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>jerasure 플러그인을 사용하면 삭제 된 코딩 된 객체가 여러 OSD에 저장 될 때 하나의 OSD가 손실되는 것을 복구하려면 다른 모든 OSD를 읽어야합니다. 예를 들어 jerasure가 k = 8 및 m = 4로 구성되어있는 경우 하나의 OSD를 잃어 버리면 11 명의 다른 사람들이 수리해야합니다.\nlrc erasure code plugin은 적은 양의 OSD를 사용하여 복구 할 수 있도록 로컬 패리티 청크를 만듭니다. 예를 들어, lrc가 k = 8, m = 4 및 l = 4로 구성된 경우 4 개의 OSD마다 추가 패리티 덩어리가 생성됩니다. 단일 OSD가 손실되면 11 개 대신 4 개의 OSD만으로 복구 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>코딩 및 데이터 청크를 크기 지역 집합으로 그룹화합니다. 예를 들어, k = 4 및 m = 2에 대해, 지역성 = 3 일 때 두 개의 세 그룹이 생성됩니다. 각 세트는 다른 세트의 청크를 읽지 않고도 복구 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>l로 정의 된 각 청크 집합이 저장되는 크러시 버킷의 유형입니다. 예를 들어 랙으로 설정하면 l 개의 청크 그룹이 각각 다른 랙에 배치됩니다. \n랙 선택 단계와 같은 CRUSH 규칙 단계를 만드는 데 사용됩니다. 설정되어 있지 않으면, 그러한 그룹화가 수행되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 플러그인은 ISA 라이브러리를 캡슐화합니다. 인텔 프로세서에서만 실행됩니다.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 플러그인은 두 개의 리드 솔로몬 형식으로 제공됩니다.\nreed_sol_van이 설정되면 Vandermonde, cauchy가 설정되면 Cauchy입니다.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec plugin은 다중 SHEC 라이브러리를 캡슐화합니다.\n           ceph가 리드 솔로몬 코드보다 더 효율적으로 데이터를 복구 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>각 데이터 청크가 계산 범위에 포함되는 패리티 청크의 수입니다. 이 수치는 내구성 측정기로 사용됩니다. 예를 들어, c = 2 인 경우 2 개의 OSD가 데이터 손실없이 중단 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSH 규칙의 첫 번째 단계에 사용 된 크러시 버킷의 이름입니다. 예를 들어 step은 기본값을 취합니다.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>동일한 실패 도메인을 가진 양동이에 두 개의 청크가 없는지 확인하십시오. 예를 들어 실패 도메인이 호스트 인 경우 두 개의 청크가 동일한 호스트에 저장되지 않습니다. 이 단계는 리프 호스트를 선택하는 단계와 같은 CRUSH 규칙 단계를 만드는 데 사용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>CRUSH지도에서 크래시 장치 클래스 이름을 사용하여 특정 클래스 (예 : ssd 또는 hdd)의 장치로 배치를 제한합니다.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>삭제 코드 플러그인이로드되는 디렉토리 이름을 설정하십시오.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>모든 작업들 허용</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>오직 서버를 수정하지 않는 작업들만 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>읽기와 쓰기 작업은 허용되지 않지만, 그외 모든 작업이 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>파일의 속성과 디렉토리 내용을 변경하는 읽기, 쓰기 또는 어떠한 작업은 허용되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>전혀 어떠한 접근도 허용되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 우선순위 선택 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>낮음</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>높음</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>정보</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>마지막 5분</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>지난 15분</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>지난 30분</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>지난 1시간(기본)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>지난 3시간</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>지난 6시간</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>지난 12시간</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>지난 24시간</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>어제</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>오늘</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>오늘 지금까지</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>그저께</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>지난 2일</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>이번 주 마지막날</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>전주</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>이번주</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>이번주 지금까지</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>지난 7일</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>지난 달</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>이번 달</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>이번 달 지금까지</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>지난 30일</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>지난 90일</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>지난 6개월</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>지난 1년</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>전년도</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>금년도</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>금년 지금까지</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>지난 2년</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>지난 5년</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>선택된 아이템 없음</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>다시 선택하기 위해 아이템 선택을 취소</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>선택 한계에 도달함</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>필터 테그들</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>베찌 추가</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>사용가능한 아이템 없음</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>복제</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>복사</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>딥 스크럽</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>단조로움</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>다운 표시</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>인 표시</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>손실 표시</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>아웃 표시</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>보호</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>이름변경</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>복구</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>휴지통으로 옮기기</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>보호않됨</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>삭제돔</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>복제된</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>복사된</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>평평하게 됨</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>완전삭제됨</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>복구됨</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>롤백됨</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>예</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>아니오</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>서비스 량</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 한계</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>원하는 초당 IO 바이트 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 제한</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>원하는 초당 IO 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>읽기 BPS 제한</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>원하는 초당 읽기 바이스 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>읽기 IOPS 한도</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>원하는 초당 읽기 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>쓰기 BPS 한도</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>원하는 초당 쓰기 바이트 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>쓰기 IOPS 제한</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>원하는 초당 쓰기 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>원하는 버스트 IO 바이트 한도 입니다.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>원하는 IO 작업의 버스트 한계입니다.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>읽기 BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>원하는 읽기 버스트 한계입니다.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>읽기 IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>원하는 읽기 작업의 버스트 한도입니다.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>쓰기 BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>쓰기 바이트의 원하는 버스트 한도.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>쓰기 IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>쓰기 바이트의 원하는 버스트 한도.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>수행중</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>수행</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>수행된</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>알려지지 않는 작업</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>생성하는 중</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>생성</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>갱신 중</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>갱신</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>삭제 중</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>복제중</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>복제</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>복사중</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>복사</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>평평하게 하는 중</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>평평함</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>롤백 중</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>롤백</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>옮기는 중</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>옮기기</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>옮겨짐</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>이미지를 찾을 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>복구중</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>복구</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>완전삭제 중</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>완전삭제</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>모든 풀들</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>피어가 포함되어 있기 때문에 미러링을 비활성화 할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"33Wh":function(t,e,n){var a=n("yoRg"),r=n("eDl+");t.exports=Object.keys||function(t){return a(t,r)}},"372+":function(t,e,n){var a=n("LaC8"),r=n("0GLT"),i=n("x3F9");t.exports=function(t){return"string"==typeof t||!r(t)&&i(t)&&"[object String]"==a(t)}},"38Bd":function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return r})),n.d(e,"d",(function(){return u}));var a=n("hpHm");class r{constructor(){this.animate=!1,this.max=100}}class i{constructor(t){this.isStacked=!1,this.addClass=!0,this.bars=[],this._max=100,Object.assign(this,t)}set animate(t){this._animate=t,this.bars.forEach(e=>{e.animate=t})}set striped(t){this._striped=t,this.bars.forEach(e=>{e.striped=t})}set value(t){this.isStacked=Array.isArray(t),this._value=t}get isBs3(){return Object(a.d)()}get max(){return this._max}set max(t){this._max=t,this.bars.forEach(t=>{t.recalculatePercentage()})}addBar(t){t.animate=this._animate,t.striped=this._striped,this.bars.push(t)}removeBar(t){this.bars.splice(this.bars.indexOf(t),1)}}class s{constructor(t,e,n){this.el=t,this.renderer=n,this.addClass=!0,this.percent=0,this.progress=e}get type(){return this._type}set type(t){this._type=t,this.applyTypeClasses()}get value(){return this._value}set value(t){(t||0===t)&&(this._value=t,this.recalculatePercentage())}get setBarWidth(){return this.recalculatePercentage(),this.percent}get isBs3(){return Object(a.d)()}ngOnInit(){this.progress.addBar(this)}ngOnDestroy(){this.progress.removeBar(this)}recalculatePercentage(){this.percent=+(this.value/this.progress.max*100).toFixed(2);const t=this.progress.bars.reduce((function(t,e){return t+e.percent}),0);t>100&&(this.percent-=t-100)}applyTypeClasses(){if(this._prevType){const t="bg-"+this._prevType;this.renderer.removeClass(this.el.nativeElement,"progress-bar-"+this._prevType),this.renderer.removeClass(this.el.nativeElement,t),this._prevType=null}if(this._type){const t="bg-"+this._type;this.renderer.addClass(this.el.nativeElement,"progress-bar-"+this._type),this.renderer.addClass(this.el.nativeElement,t),this._prevType=this._type}}}class u{static forRoot(){return{ngModule:u,providers:[r]}}}},"3E1r":function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};t.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात"===e?t<4?t:t+12:"सुबह"===e?t:"दोपहर"===e?t>=10?t:t+12:"शाम"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात":t<10?"सुबह":t<17?"दोपहर":t<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("wd/R"))},"3ENo":function(t,e,n){var a=n("Ytn0");t.exports=function(t){return a(this,t).has(t)}},"3Eq5":function(t,e,n){var a=n("We1y");t.exports=function(t,e){var n=t[e];return null==n?void 0:a(n)}},"3N8a":function(t,e,n){"use strict";var a=n("quSY");class r extends a.a{constructor(t,e){super()}schedule(t,e=0){return this}}n.d(e,"a",(function(){return i}));class i extends r{constructor(t,e){super(t,e),this.scheduler=t,this.work=e,this.pending=!1}schedule(t,e=0){if(this.closed)return this;this.state=t;const n=this.id,a=this.scheduler;return null!=n&&(this.id=this.recycleAsyncId(a,n,e)),this.pending=!0,this.delay=e,this.id=this.id||this.requestAsyncId(a,this.id,e),this}requestAsyncId(t,e,n=0){return setInterval(t.flush.bind(t,this),n)}recycleAsyncId(t,e,n=0){if(null!==n&&this.delay===n&&!1===this.pending)return e;clearInterval(e)}execute(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const n=this._execute(t,e);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,e){let n=!1,a=void 0;try{this.work(t)}catch(r){n=!0,a=!!r&&r||new Error(r)}if(n)return this.unsubscribe(),a}_unsubscribe(){const t=this.id,e=this.scheduler,n=e.actions,a=n.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==a&&n.splice(a,1),null!=t&&(this.id=this.recycleAsyncId(e,t,null)),this.delay=null}}},"3a3P":function(t,e,n){var a=n("2zzJ");t.exports=function(t){return function(e){return a(e,t)}}},"3bBZ":function(t,e,n){var a=n("2oRo"),r=n("/byt"),i=n("eFrH"),s=n("4mDm"),u=n("kRJp"),o=n("tiKp"),l=o("iterator"),d=o("toStringTag"),c=s.values,f=function(t,e){if(t){if(t[l]!==c)try{u(t,l,c)}catch(a){t[l]=c}if(t[d]||u(t,d,e),r[e])for(var n in s)if(t[n]!==s[n])try{u(t,n,s[n])}catch(a){t[n]=s[n]}}};for(var h in r)f(a[h]&&a[h].prototype,h);f(i,"DOMTokenList")},"43VP":function(t,e,n){var a=n("SDUG"),r=n("TAQX")(a);t.exports=r},"4DD9":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){let e=!1;switch(t){case!0:case 1:case"y":case"yes":case"t":case"true":case"on":case"1":e=!0}return e}}},"4Dmd":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},i=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},s=function(){function t(t,e,n){this.renderer=t,this.templateRef=e,this.viewContainerRef=n}return Object.defineProperty(t.prototype,"isOpen",{set:function(t){t?(this._show(),this.isEnabled&&!1===this._isOpen&&this._animateOpen()):this.isEnabled?this._animateClose():this._hide(),this._isOpen=!!t},enumerable:!0,configurable:!0}),t.prototype._show=function(){this.innerElement||(this.innerElement=this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0])},t.prototype._hide=function(){this.viewContainerRef.clear(),this.innerElement=null},t.prototype._animateOpen=function(){var t=this,e=this.animateSpeed,n=this.animateAcceleration,a=0;this.renderer.setStyle(this.innerElement,"max-height","0"),setTimeout((function(){var r=setInterval((function(){if(!t._isOpen||!t.innerElement)return clearInterval(r);var i=Math.round(a+=e);t.renderer.setStyle(t.innerElement,"max-height",i+"px");var s=t.innerElement.getBoundingClientRect?t.innerElement.getBoundingClientRect().height:0;e*=n,n*=1.005,s<i&&(t.renderer.setStyle(t.innerElement,"max-height",null),clearInterval(r))}),17)}))},t.prototype._animateClose=function(){var t=this;if(this.innerElement)var e=this.animateSpeed,n=this.animateAcceleration,a=this.innerElement.getBoundingClientRect().height,r=setInterval((function(){if(t._isOpen||!t.innerElement)return clearInterval(r);t.renderer.setStyle(t.innerElement,"max-height",(a-=e)+"px"),e*=n,n*=1.005,a<=0&&(t.viewContainerRef.clear(),t.innerElement=null,clearInterval(r))}),17)},r([Object(a.Input)("treeAnimateOpenSpeed"),i("design:type",Number)],t.prototype,"animateSpeed",void 0),r([Object(a.Input)("treeAnimateOpenAcceleration"),i("design:type",Number)],t.prototype,"animateAcceleration",void 0),r([Object(a.Input)("treeAnimateOpenEnabled"),i("design:type",Boolean)],t.prototype,"isEnabled",void 0),r([Object(a.Input)("treeAnimateOpen"),i("design:type",Boolean),i("design:paramtypes",[Boolean])],t.prototype,"isOpen",null),r([Object(a.Directive)({selector:"[treeAnimateOpen]"}),i("design:paramtypes",[a.Renderer2,a.TemplateRef,a.ViewContainerRef])],t)}()},"4HWh":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("KOzp"),s=n("z/SZ"),u=n("2uy1");n("p4Cf"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return d}));var o=a["ɵcrt"]({encapsulation:0,styles:[["i[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer;padding-left:4px}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[],[[8,"className",0],[8,"innerHTML",1]],null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,(function(t,e){var n=e.component;t(e,0,0,n.class,n.html)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,[["popoverTpl",2]],null,0,null,l)),(t()(),a["ɵeld"](1,16777216,null,null,4,"i",[["aria-hidden","true"],["container","body"],["placement","bottom"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](4,1),a["ɵdid"](5,212992,null,0,i.c,[i.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,u.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null)],(function(t,e){var n=t(e,4,0,e.component.icons.questionCircle);t(e,3,0,n),t(e,5,0,a["ɵnov"](e,0),"bottom",!0,"body")}),null)}},"4I5i":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return t.prototype=Object.create(Error.prototype),t})()},"4MV3":function(t,e,n){!function(t){"use strict";var e={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};t.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(t){return t.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(t,e){return 12===t&&(t=0),"રાત"===e?t<4?t:t+12:"સવાર"===e?t:"બપોર"===e?t>=10?t:t+12:"સાંજ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"રાત":t<10?"સવાર":t<17?"બપોર":t<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("wd/R"))},"4WOD":function(t,e,n){var a=n("2oRo"),r=n("Gi26"),i=n("Fib7"),s=n("ewvW"),u=n("93I0"),o=n("4Xet"),l=u("IE_PROTO"),d=a.Object,c=d.prototype;t.exports=o?d.getPrototypeOf:function(t){var e=s(t);if(r(e,l))return e[l];var n=e.constructor;return i(n)&&e instanceof n?n.prototype:e instanceof d?c:null}},"4Xet":function(t,e,n){var a=n("0Dky");t.exports=!a((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},"4a5m":function(t,e,n){var a=n("zAeO");t.exports=function(t){var e=a(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},"4dOw":function(t,e,n){!function(t){"use strict";t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"4l63":function(t,e,n){var a=n("I+eb"),r=n("wg0c");a({global:!0,forced:parseInt!=r},{parseInt:r})},"4mDm":function(t,e,n){"use strict";var a=n("/GqU"),r=n("RNIs"),i=n("P4y1"),s=n("afO8"),u=n("m/L8").f,o=n("fdAy"),l=n("xDBR"),d=n("g6v/"),c=s.set,f=s.getterFor("Array Iterator");t.exports=o(Array,"Array",(function(t,e){c(this,{type:"Array Iterator",target:a(t),index:0,kind:e})}),(function(){var t=f(this),e=t.target,n=t.kind,a=t.index++;return!e||a>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:a,done:!1}:"values"==n?{value:e[a],done:!1}:{value:[a,e[a]],done:!1}}),"values");var h=i.Arguments=i.Array;if(r("keys"),r("values"),r("entries"),!l&&d&&"values"!==h.name)try{u(h,"name",{value:"values"})}catch(g){}},"4syw":function(t,e,n){var a=n("busE");t.exports=function(t,e,n){for(var r in e)a(t,r,e[r],n);return t}},"4zBA":function(t,e){var n=Function.prototype,a=n.bind,r=n.call,i=a&&a.bind(r);t.exports=a?function(t){return t&&i(r,t)}:function(t){return t&&function(){return r.apply(t,arguments)}}},"5+tZ":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("ZUHj"),r=n("l7GE"),i=n("51Dv"),s=n("lJxs"),u=n("Cfvw");function o(t,e,n=Number.POSITIVE_INFINITY){return"function"==typeof e?a=>a.pipe(o((n,a)=>Object(u.a)(t(n,a)).pipe(Object(s.a)((t,r)=>e(n,t,a,r))),n)):("number"==typeof e&&(n=e),e=>e.lift(new l(t,n)))}class l{constructor(t,e=Number.POSITIVE_INFINITY){this.project=t,this.concurrent=e}call(t,e){return e.subscribe(new d(t,this.project,this.concurrent))}}class d extends r.a{constructor(t,e,n=Number.POSITIVE_INFINITY){super(t),this.project=e,this.concurrent=n,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(t){this.active<this.concurrent?this._tryNext(t):this.buffer.push(t)}_tryNext(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this.active++,this._innerSub(e,t,n)}_innerSub(t,e,n){const r=new i.a(this,e,n),s=this.destination;s.add(r);const u=Object(a.a)(this,t,void 0,void 0,r);u!==r&&s.add(u)}_complete(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()}notifyNext(t,e,n,a,r){this.destination.next(e)}notifyComplete(t){const e=this.buffer;this.remove(t),this.active--,e.length>0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}},"51Dv":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");class r extends a.a{constructor(t,e,n){super(),this.parent=t,this.outerValue=e,this.outerIndex=n,this.index=0}_next(t){this.parent.notifyNext(this.outerValue,t,this.outerIndex,this.index++,this)}_error(t){this.parent.notifyError(t,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}},"5DBd":function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}},"5EpR":function(t,e,n){var a=n("jNLg");t.exports=function(t){return t?(t=a(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},"5itS":function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},"6+QB":function(t,e,n){!function(t){"use strict";t.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},"6B0Y":function(t,e,n){!function(t){"use strict";var e={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};t.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(t){return"ល្ងាច"===t},meridiem:function(t,e,n){return t<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(t){return t.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},"6II+":function(t,e,n){var a=n("R8cQ");t.exports=function(t){return null==t?"":a(t)}},"6JNq":function(t,e,n){var a=n("Gi26"),r=n("Vu81"),i=n("Bs8V"),s=n("m/L8");t.exports=function(t,e,n){for(var u=r(e),o=s.f,l=i.f,d=0;d<u.length;d++){var c=u[d];a(t,c)||n&&a(n,c)||o(t,c,l(e,c))}}},"6LWA":function(t,e,n){var a=n("xrYK");t.exports=Array.isArray||function(t){return"Array"==a(t)}},"6MU2":function(t,e){t.exports=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}},"6VoE":function(t,e,n){var a=n("tiKp"),r=n("P4y1"),i=a("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||s[i]===t)}},"6eui":function(t,e,n){var a=n("hmSm"),r=n("5itS"),i=n("l2xC"),s=Object.prototype.hasOwnProperty;t.exports=function(t){if(!a(t))return i(t);var e=r(t),n=[];for(var u in t)("constructor"!=u||!e&&s.call(t,u))&&n.push(u);return n}},"6qls":function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("tz6c");class a{constructor(t,e){this.docService=t,this.i18n=e,this.docText=this.i18n("documentation")}ngOnInit(){this.docService.subscribeOnce(this.section,t=>{this.docUrl=t})}}},"7+rY":function(t,e,n){var a=n("bQrF"),r=n("MOZO"),i=n("Uies"),s=n("hmSm"),u=n("Wv1A");t.exports=function(t,e,n,o){if(!s(t))return t;for(var l=-1,d=(e=r(e,t)).length,c=d-1,f=t;null!=f&&++l<d;){var h=u(e[l]),g=n;if("__proto__"===h||"constructor"===h||"prototype"===h)return t;if(l!=c){var p=f[h];void 0===(g=o?o(p,h,f):void 0)&&(g=s(p)?p:i(e[l+1])?[]:{})}a(f,h,g),f=f[h]}return t}},"77kF":function(t,e,n){var a=n("bQrF"),r=n("ZPW6");t.exports=function(t,e,n,i){var s=!n;n||(n={});for(var u=-1,o=e.length;++u<o;){var l=e[u],d=i?i(n[l],t[l],l,n,t):void 0;void 0===d&&(d=t[l]),s?r(n,l,d):a(n,l,d)}return n}},"7BjC":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[t+"sekundi",t+"sekundit"],m:["ühe minuti","üks minut"],mm:[t+" minuti",t+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[t+" tunni",t+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[t+" kuu",t+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[t+" aasta",t+" aastat"]};return e?r[n][2]?r[n][2]:r[n][1]:a?r[n][0]:r[n][1]}t.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d päeva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"7Igq":function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},"7Nlv":function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}},"7VGY":function(t,e,n){var a=n("7Nlv"),r=n("BkBO"),i=n("l9nr"),s=n("0GLT"),u=n("QUkU");t.exports=function(t,e,n){var o=s(t)?a:r;return n&&u(t,e,n)&&(e=void 0),o(t,i(e,3))}},"7aV9":function(t,e,n){!function(t){"use strict";t.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(t){return t+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(t){return"ප.ව."===t||"පස් වරු"===t},meridiem:function(t,e,n){return t>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("wd/R"))},"7o/Q":function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("n6bG"),r=n("gRHU"),i=n("quSY"),s=n("2QA8"),u=n("2fFW"),o=n("NJ4a");class l extends i.a{constructor(t,e,n){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=r.a;break;case 1:if(!t){this.destination=r.a;break}if("object"==typeof t){t instanceof l?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new d(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new d(this,t,e,n)}}[s.a](){return this}static create(t,e,n){const a=new l(t,e,n);return a.syncErrorThrowable=!1,a}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class d extends l{constructor(t,e,n,i){let s;super(),this._parentSubscriber=t;let u=this;Object(a.a)(e)?s=e:e&&(s=e.next,n=e.error,i=e.complete,e!==r.a&&(u=Object.create(e),Object(a.a)(u.unsubscribe)&&this.add(u.unsubscribe.bind(u)),u.unsubscribe=this.unsubscribe.bind(this))),this._context=u,this._next=s,this._error=n,this._complete=i}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:e}=this;u.a.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:e}=this,{useDeprecatedSynchronousErrorHandling:n}=u.a;if(this._error)n&&e.syncErrorThrowable?(this.__tryOrSetError(e,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(e.syncErrorThrowable)n?(e.syncErrorValue=t,e.syncErrorThrown=!0):Object(o.a)(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;Object(o.a)(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const e=()=>this._complete.call(this._context);u.a.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,e),this.unsubscribe()):(this.__tryOrUnsub(e),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),u.a.useDeprecatedSynchronousErrorHandling)throw n;Object(o.a)(n)}}__tryOrSetError(t,e,n){if(!u.a.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{e.call(this._context,n)}catch(a){return u.a.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=a,t.syncErrorThrown=!0,!0):(Object(o.a)(a),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}},"7qid":function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return f}));var a=n("8Y7J"),r=n("38Bd"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function u(t){return a["ɵvid"](0,[a["ɵncd"](null,0)],null,null)}var o=a["ɵcrt"]({encapsulation:0,styles:["[_nghost-%COMP%] {\n      width: 100%;\n      display: flex;\n    }"],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[2,"progress-bar-animated",null],[2,"progress-bar-striped",null],[2,"active",null],[1,"aria-valuenow",0],[1,"aria-valuetext",0],[1,"aria-valuemax",0],[4,"height","%"],[4,"width","%"],[2,"progress-bar",null]],null,null,u,s)),a["ɵdid"](1,245760,null,0,r.a,[a.ElementRef,r.b,a.Renderer2],{type:[0,"type"],value:[1,"value"]},null),a["ɵncd"](0,0)],(function(t,e){var n=e.component;t(e,1,0,n.type,n._value)}),(function(t,e){t(e,0,0,!a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).striped,a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).value,a["ɵnov"](e,1).percent?a["ɵnov"](e,1).percent.toFixed(0)+"%":"",a["ɵnov"](e,1).max,"100",a["ɵnov"](e,1).setBarWidth,a["ɵnov"](e,1).addClass)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[2,"progress-bar-animated",null],[2,"progress-bar-striped",null],[2,"active",null],[1,"aria-valuenow",0],[1,"aria-valuetext",0],[1,"aria-valuemax",0],[4,"height","%"],[4,"width","%"],[2,"progress-bar",null]],null,null,u,s)),a["ɵdid"](1,245760,null,0,r.a,[a.ElementRef,r.b,a.Renderer2],{type:[0,"type"],value:[1,"value"]},null),(t()(),a["ɵted"](2,0,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.type,e.context.$implicit.value)}),(function(t,e){t(e,0,0,!a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).striped,a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).value,a["ɵnov"](e,1).percent?a["ɵnov"](e,1).percent.toFixed(0)+"%":"",a["ɵnov"](e,1).max,"100",a["ɵnov"](e,1).setBarWidth,a["ɵnov"](e,1).addClass),t(e,2,0,e.context.$implicit.label)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](1,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component._value)}),null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](3,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,!n.isStacked),t(e,3,0,n.isStacked)}),null)}},"8+Q7":function(t,e){var n=Object.prototype.hasOwnProperty;t.exports=function(t){var e=t.length,a=new t.constructor(e);return e&&"string"==typeof t[0]&&n.call(t,"index")&&(a.index=t.index,a.input=t.input),a}},"8+is":function(t,e,n){var a=n("IWUC"),r=n("0nKi"),i=n("L0Z1"),s=i&&i.isSet,u=s?r(s):a;t.exports=u},"8/+R":function(t,e,n){!function(t){"use strict";var e={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};t.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(t){return t.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ਰਾਤ"===e?t<4?t:t+12:"ਸਵੇਰ"===e?t:"ਦੁਪਹਿਰ"===e?t>=10?t:t+12:"ਸ਼ਾਮ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ਰਾਤ":t<10?"ਸਵੇਰ":t<17?"ਦੁਪਹਿਰ":t<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("wd/R"))},"85J/":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=/ceph version\s+([^ ]+)\s+\(.+\)/.exec(t);return e?e[1]:t}}},"8SuI":function(t,e,n){t.exports=n("K3g9")},"8Tpr":function(t,e,n){var a=n("r2+u"),r=n("0nKi"),i=n("L0Z1"),s=i&&i.isMap,u=s?r(s):a;t.exports=u},"8V0S":function(t,e,n){var a=n("6MU2"),r=Math.max;t.exports=function(t,e,n){return e=r(void 0===e?t.length-1:e,0),function(){for(var i=arguments,s=-1,u=r(i.length-e,0),o=Array(u);++s<u;)o[s]=i[e+s];s=-1;for(var l=Array(e+1);++s<e;)l[s]=i[s];return l[e]=n(o),a(t,this,l)}}},"8Y7J":function(t,e,n){"use strict";n.r(e);var a=n("XNiG"),r=n("quSY"),i=n("HDdC"),s=n("VRyK"),u=n("7o/Q");function o(){return function(t){return t.lift(new l(t))}}class l{constructor(t){this.connectable=t}call(t,e){const{connectable:n}=this;n._refCount++;const a=new d(t,n),r=e.subscribe(a);return a.closed||(a.connection=n.connect()),r}}class d extends u.a{constructor(t,e){super(t),this.connectable=e}_unsubscribe(){const{connectable:t}=this;if(!t)return void(this.connection=null);this.connectable=null;const e=t._refCount;if(e<=0)return void(this.connection=null);if(t._refCount=e-1,e>1)return void(this.connection=null);const{connection:n}=this,a=t._connection;this.connection=null,!a||n&&a!==n||a.unsubscribe()}}class c extends i.a{constructor(t,e){super(),this.source=t,this.subjectFactory=e,this._refCount=0,this._isComplete=!1}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject}connect(){let t=this._connection;return t||(this._isComplete=!1,t=this._connection=new r.a,t.add(this.source.subscribe(new h(this.getSubject(),this))),t.closed&&(this._connection=null,t=r.a.EMPTY)),t}refCount(){return o()(this)}}const f=(()=>{const t=c.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}})();class h extends a.b{constructor(t,e){super(t),this.connectable=e}_error(t){this._unsubscribe(),super._error(t)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const t=this.connectable;if(t){this.connectable=null;const e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}}}function g(){return new a.a}n.d(e,"ɵangular_packages_core_core_q",(function(){return fv})),n.d(e,"ɵangular_packages_core_core_n",(function(){return lv})),n.d(e,"ɵangular_packages_core_core_o",(function(){return dv})),n.d(e,"ɵangular_packages_core_core_p",(function(){return cv})),n.d(e,"ɵangular_packages_core_core_r",(function(){return hv})),n.d(e,"ɵangular_packages_core_core_f",(function(){return xm})),n.d(e,"ɵangular_packages_core_core_l",(function(){return lf})),n.d(e,"ɵangular_packages_core_core_m",(function(){return bf})),n.d(e,"ɵangular_packages_core_core_k",(function(){return Wy})),n.d(e,"ɵangular_packages_core_core_j",(function(){return Uy})),n.d(e,"ɵangular_packages_core_core_b",(function(){return ot})),n.d(e,"ɵangular_packages_core_core_a",(function(){return at})),n.d(e,"ɵangular_packages_core_core_c",(function(){return yo})),n.d(e,"ɵangular_packages_core_core_d",(function(){return io})),n.d(e,"ɵangular_packages_core_core_e",(function(){return fo})),n.d(e,"ɵangular_packages_core_core_i",(function(){return Py})),n.d(e,"ɵangular_packages_core_core_s",(function(){return ty})),n.d(e,"ɵangular_packages_core_core_u",(function(){return Jm})),n.d(e,"ɵangular_packages_core_core_t",(function(){return $m})),n.d(e,"ɵangular_packages_core_core_x",(function(){return Xm})),n.d(e,"ɵangular_packages_core_core_v",(function(){return Zm})),n.d(e,"ɵangular_packages_core_core_w",(function(){return Qm})),n.d(e,"ɵangular_packages_core_core_ba",(function(){return Sg})),n.d(e,"ɵangular_packages_core_core_bb",(function(){return xa})),n.d(e,"ɵangular_packages_core_core_bc",(function(){return Ae})),n.d(e,"ɵangular_packages_core_core_bd",(function(){return Ge})),n.d(e,"ɵangular_packages_core_core_be",(function(){return rn})),n.d(e,"ɵangular_packages_core_core_bm",(function(){return ca})),n.d(e,"ɵangular_packages_core_core_bl",(function(){return ve})),n.d(e,"ɵangular_packages_core_core_g",(function(){return $s})),n.d(e,"ɵangular_packages_core_core_h",(function(){return Js})),n.d(e,"ɵangular_packages_core_core_bg",(function(){return Cr})),n.d(e,"ɵangular_packages_core_core_bk",(function(){return Ot})),n.d(e,"ɵangular_packages_core_core_bh",(function(){return x})),n.d(e,"ɵangular_packages_core_core_bi",(function(){return _})),n.d(e,"ɵangular_packages_core_core_bn",(function(){return R})),n.d(e,"ɵangular_packages_core_core_y",(function(){return dg})),n.d(e,"ɵangular_packages_core_core_z",(function(){return Vf})),n.d(e,"createPlatform",(function(){return Sy})),n.d(e,"assertPlatform",(function(){return Ny})),n.d(e,"destroyPlatform",(function(){return Cy})),n.d(e,"getPlatform",(function(){return Ry})),n.d(e,"PlatformRef",(function(){return Ay})),n.d(e,"ApplicationRef",(function(){return Ey})),n.d(e,"createPlatformFactory",(function(){return Iy})),n.d(e,"NgProbeToken",(function(){return Oy})),n.d(e,"enableProdMode",(function(){return Ka})),n.d(e,"isDevMode",(function(){return Wa})),n.d(e,"APP_ID",(function(){return vm})),n.d(e,"PACKAGE_ROOT_URL",(function(){return Im})),n.d(e,"PLATFORM_INITIALIZER",(function(){return wm})),n.d(e,"PLATFORM_ID",(function(){return Om})),n.d(e,"APP_BOOTSTRAP_LISTENER",(function(){return Sm})),n.d(e,"APP_INITIALIZER",(function(){return mm})),n.d(e,"ApplicationInitStatus",(function(){return ym})),n.d(e,"DebugElement",(function(){return uv})),n.d(e,"DebugEventListener",(function(){return Hy})),n.d(e,"DebugNode",(function(){return sv})),n.d(e,"asNativeElements",(function(){return Ky})),n.d(e,"getDebugNode",(function(){return rv})),n.d(e,"Testability",(function(){return py})),n.d(e,"TestabilityRegistry",(function(){return by})),n.d(e,"setTestabilityGetter",(function(){return yy})),n.d(e,"TRANSLATIONS",(function(){return Rm})),n.d(e,"TRANSLATIONS_FORMAT",(function(){return Am})),n.d(e,"LOCALE_ID",(function(){return Cm})),n.d(e,"MissingTranslationStrategy",(function(){return km})),n.d(e,"ApplicationModule",(function(){return gv})),n.d(e,"wtfCreateScope",(function(){return ny})),n.d(e,"wtfLeave",(function(){return ay})),n.d(e,"wtfStartTimeRange",(function(){return ry})),n.d(e,"wtfEndTimeRange",(function(){return iy})),n.d(e,"Type",(function(){return nu})),n.d(e,"EventEmitter",(function(){return tb})),n.d(e,"ErrorHandler",(function(){return Da})),n.d(e,"Sanitizer",(function(){return vr})),n.d(e,"SecurityContext",(function(){return yr})),n.d(e,"Attribute",(function(){return N})),n.d(e,"ANALYZE_FOR_ENTRY_COMPONENTS",(function(){return vo})),n.d(e,"ContentChild",(function(){return To})),n.d(e,"ContentChildren",(function(){return _o})),n.d(e,"Query",(function(){return xo})),n.d(e,"ViewChild",(function(){return Oo})),n.d(e,"ViewChildren",(function(){return wo})),n.d(e,"Component",(function(){return nm})),n.d(e,"Directive",(function(){return em})),n.d(e,"HostBinding",(function(){return sm})),n.d(e,"HostListener",(function(){return um})),n.d(e,"Input",(function(){return rm})),n.d(e,"Output",(function(){return im})),n.d(e,"Pipe",(function(){return am})),n.d(e,"NgModule",(function(){return gm})),n.d(e,"CUSTOM_ELEMENTS_SCHEMA",(function(){return Pa})),n.d(e,"NO_ERRORS_SCHEMA",(function(){return Ma})),n.d(e,"ViewEncapsulation",(function(){return wt})),n.d(e,"Version",(function(){return uf})),n.d(e,"VERSION",(function(){return of})),n.d(e,"InjectFlags",(function(){return C})),n.d(e,"ɵɵdefineInjectable",(function(){return k})),n.d(e,"defineInjectable",(function(){return E})),n.d(e,"ɵɵdefineInjector",(function(){return L})),n.d(e,"forwardRef",(function(){return V})),n.d(e,"resolveForwardRef",(function(){return G})),n.d(e,"Injectable",(function(){return Ou})),n.d(e,"Injector",(function(){return Bu})),n.d(e,"ɵɵinject",(function(){return rt})),n.d(e,"inject",(function(){return it})),n.d(e,"INJECTOR",(function(){return $})),n.d(e,"ReflectiveInjector",(function(){return mo})),n.d(e,"ResolvedReflectiveFactory",(function(){return oo})),n.d(e,"ReflectiveKey",(function(){return to})),n.d(e,"InjectionToken",(function(){return K})),n.d(e,"Inject",(function(){return T})),n.d(e,"Optional",(function(){return w})),n.d(e,"Self",(function(){return O})),n.d(e,"SkipSelf",(function(){return S})),n.d(e,"Host",(function(){return I})),n.d(e,"NgZone",(function(){return oy})),n.d(e,"ɵNoopNgZone",(function(){return gy})),n.d(e,"RenderComponentType",(function(){return Zc})),n.d(e,"Renderer",(function(){return Xc})),n.d(e,"Renderer2",(function(){return af})),n.d(e,"RendererFactory2",(function(){return ef})),n.d(e,"RendererStyleFlags2",(function(){return nf})),n.d(e,"RootRenderer",(function(){return tf})),n.d(e,"COMPILER_OPTIONS",(function(){return Hm})),n.d(e,"Compiler",(function(){return Ym})),n.d(e,"CompilerFactory",(function(){return Um})),n.d(e,"ModuleWithComponentFactories",(function(){return Dm})),n.d(e,"ComponentFactory",(function(){return Vc})),n.d(e,"ɵComponentFactory",(function(){return Vc})),n.d(e,"ComponentRef",(function(){return Fc})),n.d(e,"ComponentFactoryResolver",(function(){return Yc})),n.d(e,"ElementRef",(function(){return Kc})),n.d(e,"NgModuleFactory",(function(){return ht})),n.d(e,"NgModuleRef",(function(){return ft})),n.d(e,"NgModuleFactoryLoader",(function(){return Dy})),n.d(e,"getModuleFactory",(function(){return qy})),n.d(e,"QueryList",(function(){return nb})),n.d(e,"SystemJsNgModuleLoader",(function(){return Gy})),n.d(e,"SystemJsNgModuleLoaderConfig",(function(){return Fy})),n.d(e,"TemplateRef",(function(){return Of})),n.d(e,"ViewContainerRef",(function(){return Nf})),n.d(e,"EmbeddedViewRef",(function(){return Yy})),n.d(e,"ViewRef",(function(){return zy})),n.d(e,"ChangeDetectionStrategy",(function(){return xt})),n.d(e,"ChangeDetectorRef",(function(){return Xs})),n.d(e,"DefaultIterableDiffer",(function(){return cf})),n.d(e,"IterableDiffers",(function(){return vf})),n.d(e,"KeyValueDiffers",(function(){return xf})),n.d(e,"SimpleChange",(function(){return Tc})),n.d(e,"WrappedValue",(function(){return Mo})),n.d(e,"platformCore",(function(){return ov})),n.d(e,"ɵALLOW_MULTIPLE_PLATFORMS",(function(){return wy})),n.d(e,"ɵAPP_ID_RANDOM_PROVIDER",(function(){return _m})),n.d(e,"ɵdefaultIterableDiffers",(function(){return Tf})),n.d(e,"ɵdefaultKeyValueDiffers",(function(){return wf})),n.d(e,"ɵdevModeEqual",(function(){return Po})),n.d(e,"ɵisListLikeIterable",(function(){return qo})),n.d(e,"ɵChangeDetectorStatus",(function(){return _t})),n.d(e,"ɵisDefaultChangeDetectionStrategy",(function(){return Tt})),n.d(e,"ɵConsole",(function(){return Nm})),n.d(e,"ɵsetCurrentInjector",(function(){return et})),n.d(e,"ɵgetInjectableDef",(function(){return D})),n.d(e,"ɵAPP_ROOT",(function(){return Nu})),n.d(e,"ɵDEFAULT_LOCALE_ID",(function(){return Dg})),n.d(e,"ɵivyEnabled",(function(){return Lm})),n.d(e,"ɵCodegenComponentFactoryResolver",(function(){return Hc})),n.d(e,"ɵclearResolutionOfComponentResourcesQueue",(function(){return Ro})),n.d(e,"ɵresolveComponentResources",(function(){return So})),n.d(e,"ɵReflectionCapabilities",(function(){return ou})),n.d(e,"ɵRenderDebugInfo",(function(){return Qc})),n.d(e,"ɵ_sanitizeHtml",(function(){return br})),n.d(e,"ɵ_sanitizeStyle",(function(){return Tr})),n.d(e,"ɵ_sanitizeUrl",(function(){return Qa})),n.d(e,"ɵglobal",(function(){return U})),n.d(e,"ɵlooseIdentical",(function(){return Do})),n.d(e,"ɵstringify",(function(){return j})),n.d(e,"ɵmakeDecorator",(function(){return y})),n.d(e,"ɵisObservable",(function(){return ed})),n.d(e,"ɵisPromise",(function(){return td})),n.d(e,"ɵclearOverrides",(function(){return zx})),n.d(e,"ɵinitServicesIfNeeded",(function(){return rx})),n.d(e,"ɵoverrideComponentView",(function(){return Bx})),n.d(e,"ɵoverrideProvider",(function(){return Gx})),n.d(e,"ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR",(function(){return mg})),n.d(e,"ɵgetLocalePluralCase",(function(){return Eg})),n.d(e,"ɵfindLocaleData",(function(){return Lg})),n.d(e,"ɵLOCALE_DATA",(function(){return Cg})),n.d(e,"ɵLocaleDataIndex",(function(){return Rg})),n.d(e,"ɵɵattribute",(function(){return Wo})),n.d(e,"ɵɵattributeInterpolate1",(function(){return al})),n.d(e,"ɵɵattributeInterpolate2",(function(){return rl})),n.d(e,"ɵɵattributeInterpolate3",(function(){return il})),n.d(e,"ɵɵattributeInterpolate4",(function(){return sl})),n.d(e,"ɵɵattributeInterpolate5",(function(){return ul})),n.d(e,"ɵɵattributeInterpolate6",(function(){return ol})),n.d(e,"ɵɵattributeInterpolate7",(function(){return ll})),n.d(e,"ɵɵattributeInterpolate8",(function(){return dl})),n.d(e,"ɵɵattributeInterpolateV",(function(){return cl})),n.d(e,"ɵɵdefineBase",(function(){return Bt})),n.d(e,"ɵɵdefineComponent",(function(){return Pt})),n.d(e,"ɵɵdefineDirective",(function(){return zt})),n.d(e,"ɵɵdefinePipe",(function(){return Yt})),n.d(e,"ɵɵdefineNgModule",(function(){return Ft})),n.d(e,"ɵdetectChanges",(function(){return fl})),n.d(e,"ɵrenderComponent",(function(){return bc})),n.d(e,"ɵRender3ComponentFactory",(function(){return Ig})),n.d(e,"ɵRender3ComponentRef",(function(){return Ng})),n.d(e,"ɵɵdirectiveInject",(function(){return Tl})),n.d(e,"ɵɵinjectAttribute",(function(){return wl})),n.d(e,"ɵɵinjectPipeChangeDetectorRef",(function(){return Sb})),n.d(e,"ɵɵgetFactoryOf",(function(){return Ra})),n.d(e,"ɵɵgetInheritedFactory",(function(){return Aa})),n.d(e,"ɵɵsetComponentScope",(function(){return Mt})),n.d(e,"ɵɵsetNgModuleScope",(function(){return Vt})),n.d(e,"ɵɵtemplateRefExtractor",(function(){return Ob})),n.d(e,"ɵɵProvidersFeature",(function(){return jc})),n.d(e,"ɵɵInheritDefinitionFeature",(function(){return Nc})),n.d(e,"ɵɵNgOnChangesFeature",(function(){return wc})),n.d(e,"ɵLifecycleHooksFeature",(function(){return xc})),n.d(e,"ɵRender3NgModuleRef",(function(){return Lp})),n.d(e,"ɵmarkDirty",(function(){return hl})),n.d(e,"ɵNgModuleFactory",(function(){return Dp})),n.d(e,"ɵNO_CHANGE",(function(){return ci})),n.d(e,"ɵɵcontainer",(function(){return gl})),n.d(e,"ɵɵnextContext",(function(){return ud})),n.d(e,"ɵɵelementStart",(function(){return zl})),n.d(e,"ɵɵnamespaceHTML",(function(){return gn})),n.d(e,"ɵɵnamespaceMathML",(function(){return hn})),n.d(e,"ɵɵnamespaceSVG",(function(){return fn})),n.d(e,"ɵɵelement",(function(){return Hl})),n.d(e,"ɵɵlistener",(function(){return nd})),n.d(e,"ɵɵtext",(function(){return wd})),n.d(e,"ɵɵtextInterpolate",(function(){return Sd})),n.d(e,"ɵɵtextInterpolate1",(function(){return Id})),n.d(e,"ɵɵtextInterpolate2",(function(){return Nd})),n.d(e,"ɵɵtextInterpolate3",(function(){return Cd})),n.d(e,"ɵɵtextInterpolate4",(function(){return Rd})),n.d(e,"ɵɵtextInterpolate5",(function(){return Ad})),n.d(e,"ɵɵtextInterpolate6",(function(){return kd})),n.d(e,"ɵɵtextInterpolate7",(function(){return Ed})),n.d(e,"ɵɵtextInterpolate8",(function(){return Ld})),n.d(e,"ɵɵtextInterpolateV",(function(){return Dd})),n.d(e,"ɵɵembeddedViewStart",(function(){return Zl})),n.d(e,"ɵɵprojection",(function(){return fd})),n.d(e,"ɵɵpipeBind1",(function(){return Wp})),n.d(e,"ɵɵpipeBind2",(function(){return Kp})),n.d(e,"ɵɵpipeBind3",(function(){return $p})),n.d(e,"ɵɵpipeBind4",(function(){return Jp})),n.d(e,"ɵɵpipeBindV",(function(){return Zp})),n.d(e,"ɵɵpureFunction0",(function(){return Mp})),n.d(e,"ɵɵpureFunction1",(function(){return qp})),n.d(e,"ɵɵpureFunction2",(function(){return jp})),n.d(e,"ɵɵpureFunction3",(function(){return Fp})),n.d(e,"ɵɵpureFunction4",(function(){return Vp})),n.d(e,"ɵɵpureFunction5",(function(){return Gp})),n.d(e,"ɵɵpureFunction6",(function(){return Bp})),n.d(e,"ɵɵpureFunction7",(function(){return zp})),n.d(e,"ɵɵpureFunction8",(function(){return Yp})),n.d(e,"ɵɵpureFunctionV",(function(){return Hp})),n.d(e,"ɵɵgetCurrentView",(function(){return Xl})),n.d(e,"ɵgetDirectives",(function(){return sc})),n.d(e,"ɵgetHostElement",(function(){return oc})),n.d(e,"ɵɵrestoreView",(function(){return Ve})),n.d(e,"ɵɵcontainerRefreshStart",(function(){return bl})),n.d(e,"ɵɵcontainerRefreshEnd",(function(){return ml})),n.d(e,"ɵɵqueryRefresh",(function(){return cb})),n.d(e,"ɵɵviewQuery",(function(){return hb})),n.d(e,"ɵɵstaticViewQuery",(function(){return fb})),n.d(e,"ɵɵstaticContentQuery",(function(){return mb})),n.d(e,"ɵɵloadViewQuery",(function(){return pb})),n.d(e,"ɵɵcontentQuery",(function(){return bb})),n.d(e,"ɵɵloadContentQuery",(function(){return vb})),n.d(e,"ɵɵelementEnd",(function(){return Yl})),n.d(e,"ɵɵhostProperty",(function(){return Xd})),n.d(e,"ɵɵproperty",(function(){return Ho})),n.d(e,"ɵɵpropertyInterpolate",(function(){return hd})),n.d(e,"ɵɵpropertyInterpolate1",(function(){return gd})),n.d(e,"ɵɵpropertyInterpolate2",(function(){return pd})),n.d(e,"ɵɵpropertyInterpolate3",(function(){return bd})),n.d(e,"ɵɵpropertyInterpolate4",(function(){return md})),n.d(e,"ɵɵpropertyInterpolate5",(function(){return yd})),n.d(e,"ɵɵpropertyInterpolate6",(function(){return vd})),n.d(e,"ɵɵpropertyInterpolate7",(function(){return xd})),n.d(e,"ɵɵpropertyInterpolate8",(function(){return _d})),n.d(e,"ɵɵpropertyInterpolateV",(function(){return Td})),n.d(e,"ɵɵupdateSyntheticHostBinding",(function(){return tc})),n.d(e,"ɵɵcomponentHostSyntheticListener",(function(){return ad})),n.d(e,"ɵɵprojectionDef",(function(){return ld})),n.d(e,"ɵɵreference",(function(){return xl})),n.d(e,"ɵɵenableBindings",(function(){return Ce})),n.d(e,"ɵɵdisableBindings",(function(){return Re})),n.d(e,"ɵɵallocHostVars",(function(){return ko})),n.d(e,"ɵɵelementContainerStart",(function(){return Kl})),n.d(e,"ɵɵelementContainerEnd",(function(){return $l})),n.d(e,"ɵɵelementContainer",(function(){return Jl})),n.d(e,"ɵɵstyling",(function(){return Ol})),n.d(e,"ɵɵstyleMap",(function(){return Al})),n.d(e,"ɵɵstyleSanitizer",(function(){return Sl})),n.d(e,"ɵɵclassMap",(function(){return kl})),n.d(e,"ɵɵclassMapInterpolate1",(function(){return Pd})),n.d(e,"ɵɵclassMapInterpolate2",(function(){return Md})),n.d(e,"ɵɵclassMapInterpolate3",(function(){return qd})),n.d(e,"ɵɵclassMapInterpolate4",(function(){return jd})),n.d(e,"ɵɵclassMapInterpolate5",(function(){return Fd})),n.d(e,"ɵɵclassMapInterpolate6",(function(){return Vd})),n.d(e,"ɵɵclassMapInterpolate7",(function(){return Gd})),n.d(e,"ɵɵclassMapInterpolate8",(function(){return Bd})),n.d(e,"ɵɵclassMapInterpolateV",(function(){return zd})),n.d(e,"ɵɵstyleProp",(function(){return Il})),n.d(e,"ɵɵstylePropInterpolate1",(function(){return Yd})),n.d(e,"ɵɵstylePropInterpolate2",(function(){return Hd})),n.d(e,"ɵɵstylePropInterpolate3",(function(){return Ud})),n.d(e,"ɵɵstylePropInterpolate4",(function(){return Wd})),n.d(e,"ɵɵstylePropInterpolate5",(function(){return Kd})),n.d(e,"ɵɵstylePropInterpolate6",(function(){return $d})),n.d(e,"ɵɵstylePropInterpolate7",(function(){return Jd})),n.d(e,"ɵɵstylePropInterpolate8",(function(){return Zd})),n.d(e,"ɵɵstylePropInterpolateV",(function(){return Qd})),n.d(e,"ɵɵstylingApply",(function(){return Pl})),n.d(e,"ɵɵclassProp",(function(){return Cl})),n.d(e,"ɵɵelementHostAttrs",(function(){return Ul})),n.d(e,"ɵɵselect",(function(){return wi})),n.d(e,"ɵɵtextBinding",(function(){return Od})),n.d(e,"ɵɵtemplate",(function(){return pl})),n.d(e,"ɵɵembeddedViewEnd",(function(){return Ql})),n.d(e,"ɵstore",(function(){return vl})),n.d(e,"ɵɵload",(function(){return _l})),n.d(e,"ɵɵpipe",(function(){return Up})),n.d(e,"ɵwhenRendered",(function(){return _c})),n.d(e,"ɵɵi18n",(function(){return dp})),n.d(e,"ɵɵi18nAttributes",(function(){return cp})),n.d(e,"ɵɵi18nExp",(function(){return gp})),n.d(e,"ɵɵi18nStart",(function(){return np})),n.d(e,"ɵɵi18nEnd",(function(){return sp})),n.d(e,"ɵɵi18nApply",(function(){return pp})),n.d(e,"ɵɵi18nPostprocess",(function(){return ip})),n.d(e,"ɵi18nConfigureLocalize",(function(){return Tp})),n.d(e,"ɵɵi18nLocalize",(function(){return Op})),n.d(e,"ɵsetLocaleId",(function(){return Ip})),n.d(e,"ɵsetClassMetadata",(function(){return Pp})),n.d(e,"ɵɵresolveWindow",(function(){return Tn})),n.d(e,"ɵɵresolveDocument",(function(){return wn})),n.d(e,"ɵɵresolveBody",(function(){return On})),n.d(e,"ɵcompileComponent",(function(){return Bb})),n.d(e,"ɵcompileDirective",(function(){return zb})),n.d(e,"ɵcompileNgModule",(function(){return Eb})),n.d(e,"ɵcompileNgModuleDefs",(function(){return Lb})),n.d(e,"ɵpatchComponentDefWithScope",(function(){return jb})),n.d(e,"ɵresetCompiledComponents",(function(){return Mb})),n.d(e,"ɵflushModuleScopingQueueAsMuchAsPossible",(function(){return Ab})),n.d(e,"ɵtransitiveScopesFor",(function(){return Fb})),n.d(e,"ɵcompilePipe",(function(){return tm})),n.d(e,"ɵɵsanitizeHtml",(function(){return wr})),n.d(e,"ɵɵsanitizeStyle",(function(){return Or})),n.d(e,"ɵɵdefaultStyleSanitizer",(function(){return Ar})),n.d(e,"ɵɵsanitizeScript",(function(){return Nr})),n.d(e,"ɵɵsanitizeUrl",(function(){return Sr})),n.d(e,"ɵɵsanitizeResourceUrl",(function(){return Ir})),n.d(e,"ɵɵsanitizeUrlOrResourceUrl",(function(){return Rr})),n.d(e,"ɵbypassSanitizationTrustHtml",(function(){return Fa})),n.d(e,"ɵbypassSanitizationTrustStyle",(function(){return Va})),n.d(e,"ɵbypassSanitizationTrustScript",(function(){return Ga})),n.d(e,"ɵbypassSanitizationTrustUrl",(function(){return Ba})),n.d(e,"ɵbypassSanitizationTrustResourceUrl",(function(){return za})),n.d(e,"ɵgetLContext",(function(){return Dr})),n.d(e,"ɵNG_ELEMENT_ID",(function(){return Lt})),n.d(e,"ɵNG_COMPONENT_DEF",(function(){return Nt})),n.d(e,"ɵNG_DIRECTIVE_DEF",(function(){return Ct})),n.d(e,"ɵNG_PIPE_DEF",(function(){return Rt})),n.d(e,"ɵNG_MODULE_DEF",(function(){return At})),n.d(e,"ɵNG_BASE_DEF",(function(){return Et})),n.d(e,"ɵNG_INJECTABLE_DEF",(function(){return M})),n.d(e,"ɵNG_INJECTOR_DEF",(function(){return q})),n.d(e,"ɵcompileNgModuleFactory__POST_R3__",(function(){return _y})),n.d(e,"ɵisBoundToModule__POST_R3__",(function(){return Ty})),n.d(e,"ɵSWITCH_COMPILE_COMPONENT__POST_R3__",(function(){return om})),n.d(e,"ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__",(function(){return lm})),n.d(e,"ɵSWITCH_COMPILE_PIPE__POST_R3__",(function(){return dm})),n.d(e,"ɵSWITCH_COMPILE_NGMODULE__POST_R3__",(function(){return pm})),n.d(e,"ɵgetDebugNode__POST_R3__",(function(){return av})),n.d(e,"ɵSWITCH_COMPILE_INJECTABLE__POST_R3__",(function(){return Su})),n.d(e,"ɵSWITCH_IVY_ENABLED__POST_R3__",(function(){return Em})),n.d(e,"ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__",(function(){return tu})),n.d(e,"ɵCompiler_compileModuleSync__POST_R3__",(function(){return Mm})),n.d(e,"ɵCompiler_compileModuleAsync__POST_R3__",(function(){return jm})),n.d(e,"ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__",(function(){return Vm})),n.d(e,"ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__",(function(){return Bm})),n.d(e,"ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__",(function(){return $c})),n.d(e,"ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__",(function(){return Sf})),n.d(e,"ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__",(function(){return Cf})),n.d(e,"ɵSWITCH_RENDERER2_FACTORY__POST_R3__",(function(){return rf})),n.d(e,"ɵgetModuleFactory__POST_R3__",(function(){return My})),n.d(e,"ɵregisterNgModuleType",(function(){return Ap})),n.d(e,"ɵpublishGlobalUtil",(function(){return pc})),n.d(e,"ɵpublishDefaultGlobalUtils",(function(){return gc})),n.d(e,"ɵcreateInjector",(function(){return Lu})),n.d(e,"ɵINJECTOR_IMPL__POST_R3__",(function(){return Vu})),n.d(e,"ɵregisterModuleFactory",(function(){return Cp})),n.d(e,"ɵEMPTY_ARRAY",(function(){return Th})),n.d(e,"ɵEMPTY_MAP",(function(){return wh})),n.d(e,"ɵand",(function(){return pv})),n.d(e,"ɵccf",(function(){return Mh})),n.d(e,"ɵcmf",(function(){return Yx})),n.d(e,"ɵcrt",(function(){return Uf})),n.d(e,"ɵdid",(function(){return ug})),n.d(e,"ɵeld",(function(){return bv})),n.d(e,"ɵgetComponentViewDefinitionFactory",(function(){return qh})),n.d(e,"ɵinlineInterpolate",(function(){return xh})),n.d(e,"ɵinterpolate",(function(){return vh})),n.d(e,"ɵmod",(function(){return Rh})),n.d(e,"ɵmpd",(function(){return Ch})),n.d(e,"ɵncd",(function(){return Iv})),n.d(e,"ɵnov",(function(){return Kh})),n.d(e,"ɵpid",(function(){return og})),n.d(e,"ɵprd",(function(){return lg})),n.d(e,"ɵpad",(function(){return Rv})),n.d(e,"ɵpod",(function(){return Av})),n.d(e,"ɵppd",(function(){return Cv})),n.d(e,"ɵqud",(function(){return _v})),n.d(e,"ɵted",(function(){return Ev})),n.d(e,"ɵunv",(function(){return Hf})),n.d(e,"ɵvid",(function(){return Pv}));const p="__annotations__",b="__parameters__",m="__prop__metadata__";function y(t,e,n,a,r){const i=v(e);function s(...t){if(this instanceof s)return i.call(this,...t),this;const e=new s(...t);return function(n){return r&&r(n,...t),(n.hasOwnProperty(p)?n[p]:Object.defineProperty(n,p,{value:[]})[p]).push(e),a&&a(n),n}}return n&&(s.prototype=Object.create(n.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s}function v(t){return function(...e){if(t){const n=t(...e);for(const t in n)this[t]=n[t]}}}function x(t,e,n){const a=v(e);function r(...t){if(this instanceof r)return a.apply(this,t),this;const e=new r(...t);return n.annotation=e,n;function n(t,n,a){const r=t.hasOwnProperty(b)?t[b]:Object.defineProperty(t,b,{value:[]})[b];for(;r.length<=a;)r.push(null);return(r[a]=r[a]||[]).push(e),t}}return n&&(r.prototype=Object.create(n.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r}function _(t,e,n,a){const r=v(e);function i(...t){if(this instanceof i)return r.apply(this,t),this;const e=new i(...t);return function(n,r){const i=n.constructor,s=i.hasOwnProperty(m)?i[m]:Object.defineProperty(i,m,{value:{}})[m];s[r]=s.hasOwnProperty(r)&&s[r]||[],s[r].unshift(e),a&&a(n,r,...t)}}return n&&(i.prototype=Object.create(n.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i}const T=x("Inject",t=>({token:t})),w=x("Optional"),O=x("Self"),S=x("SkipSelf"),I=x("Host"),N=x("Attribute",t=>({attributeName:t}));var C=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}({});function R(t){for(let e in t)if(t[e]===R)return e;throw Error("Could not find renamed property on target object.")}function A(t,e){for(const n in e)e.hasOwnProperty(n)&&!t.hasOwnProperty(n)&&(t[n]=e[n])}function k(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}const E=k;function L(t){return{factory:t.factory,providers:t.providers||[],imports:t.imports||[]}}function D(t){const e=t[M];return e&&e.token===t?e:null}function P(t){return t&&t.hasOwnProperty(q)?t[q]:null}const M=R({ngInjectableDef:R}),q=R({ngInjectorDef:R});function j(t){if("string"==typeof t)return t;if(t instanceof Array)return"["+t.map(j).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return""+t.overriddenName;if(t.name)return""+t.name;const e=t.toString();if(null==e)return""+e;const n=e.indexOf("\n");return-1===n?e:e.substring(0,n)}const F=R({__forward_ref__:R});function V(t){return t.__forward_ref__=V,t.toString=function(){return j(this())},t}function G(t){const e=t;return"function"==typeof e&&e.hasOwnProperty(F)&&e.__forward_ref__===V?e():t}const B="undefined"!=typeof globalThis&&globalThis,z="undefined"!=typeof window&&window,Y="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,H="undefined"!=typeof global&&global,U=B||H||z||Y;function W(){const t=U.ng;if(!t||!t.ɵcompilerFacade)throw new Error("Angular JIT compilation failed: '@angular/compiler' not loaded!\n  - JIT compilation is discouraged for production use-cases! Consider AOT mode instead.\n  - Did you bootstrap using '@angular/platform-browser-dynamic' or '@angular/platform-server'?\n  - Alternatively provide the compiler with 'import \"@angular/compiler\";' before bootstrapping.");return t.ɵcompilerFacade}class K{constructor(t,e){this._desc=t,this.ngMetadataName="InjectionToken",this.ngInjectableDef=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.ngInjectableDef=k({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}toString(){return"InjectionToken "+this._desc}}const $=new K("INJECTOR",-1),J=new Object,Z=/\n/gm,Q=R({provide:String,useValue:R});let X,tt=void 0;function et(t){const e=tt;return tt=t,e}function nt(t){const e=X;return X=t,e}function at(t,e=C.Default){if(void 0===tt)throw new Error("inject() must be called from an injection context");return null===tt?st(t,void 0,e):tt.get(t,e&C.Optional?null:void 0,e)}function rt(t,e=C.Default){return(X||at)(t,e)}const it=rt;function st(t,e,n){const a=D(t);if(a&&"root"==a.providedIn)return void 0===a.value?a.value=a.factory():a.value;if(n&C.Optional)return null;if(void 0!==e)return e;throw new Error(`Injector: NOT_FOUND [${j(t)}]`)}function ut(t){const e=[];for(let n=0;n<t.length;n++){const a=G(t[n]);if(Array.isArray(a)){if(0===a.length)throw new Error("Arguments array must have arguments.");let t=void 0,n=C.Default;for(let e=0;e<a.length;e++){const r=a[e];r instanceof w||"Optional"===r.ngMetadataName||r===w?n|=C.Optional:r instanceof S||"SkipSelf"===r.ngMetadataName||r===S?n|=C.SkipSelf:r instanceof O||"Self"===r.ngMetadataName||r===O?n|=C.Self:t=r instanceof T||r===T?r.token:r}e.push(rt(t,n))}else e.push(rt(a))}return e}class ot{get(t,e=J){if(e===J){const e=new Error(`NullInjectorError: No provider for ${j(t)}!`);throw e.name="NullInjectorError",e}return e}}function lt(t,e,n,a){const r=t.ngTempTokenPath;throw e.__source&&r.unshift(e.__source),t.message=dt("\n"+t.message,r,n,a),t.ngTokenPath=r,t.ngTempTokenPath=null,t}function dt(t,e,n,a=null){t=t&&"\n"===t.charAt(0)&&"ɵ"==t.charAt(1)?t.substr(2):t;let r=j(e);if(e instanceof Array)r=e.map(j).join(" -> ");else if("object"==typeof e){let t=[];for(let n in e)if(e.hasOwnProperty(n)){let a=e[n];t.push(n+":"+("string"==typeof a?JSON.stringify(a):j(a)))}r=`{${t.join(", ")}}`}return`${n}${a?"("+a+")":""}[${r}]: ${t.replace(Z,"\n  ")}`}const ct={"ɵɵdefineInjectable":k,"ɵɵdefineInjector":L,"ɵɵinject":rt,"ɵɵgetFactoryOf":function(t){const e=t,n=D(e)||P(e);return n&&void 0!==n.factory?n.factory:null}};class ft{}class ht{}function gt(t,e){for(let n=0;n<t.length;n++)e.push(t[n])}function pt(t,e){void 0===e&&(e=t);for(let n=0;n<t.length;n++){let a=t[n];Array.isArray(a)?(e===t&&(e=t.slice(0,n)),pt(a,e)):e!==t&&e.push(a)}return e}function bt(t,e){t.forEach(t=>Array.isArray(t)?bt(t,e):e(t))}function mt(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function yt(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function vt(t){throw new Error("ASSERTION ERROR: "+t)}const xt=function(){var t={OnPush:0,Default:1};return t[t.OnPush]="OnPush",t[t.Default]="Default",t}(),_t=function(){var t={CheckOnce:0,Checked:1,CheckAlways:2,Detached:3,Errored:4,Destroyed:5};return t[t.CheckOnce]="CheckOnce",t[t.Checked]="Checked",t[t.CheckAlways]="CheckAlways",t[t.Detached]="Detached",t[t.Errored]="Errored",t[t.Destroyed]="Destroyed",t}();function Tt(t){return null==t||t===xt.Default}const wt=function(){var t={Emulated:0,Native:1,None:2,ShadowDom:3};return t[t.Emulated]="Emulated",t[t.Native]="Native",t[t.None]="None",t[t.ShadowDom]="ShadowDom",t}();function Ot(t){return""+{toString:t}}const St={},It=[],Nt=R({ngComponentDef:R}),Ct=R({ngDirectiveDef:R}),Rt=R({ngPipeDef:R}),At=R({ngModuleDef:R}),kt=R({ngLocaleIdDef:R}),Et=R({ngBaseDef:R}),Lt=R({__NG_ELEMENT_ID__:R});let Dt=0;function Pt(t){const e=t.type,n=e.prototype,a={},r={type:e,providersResolver:null,consts:t.consts,vars:t.vars,factory:t.factory,template:t.template||null,ngContentSelectors:t.ngContentSelectors,hostBindings:t.hostBindings||null,contentQueries:t.contentQueries||null,declaredInputs:a,inputs:null,outputs:null,exportAs:t.exportAs||null,onChanges:null,onInit:n.ngOnInit||null,doCheck:n.ngDoCheck||null,afterContentInit:n.ngAfterContentInit||null,afterContentChecked:n.ngAfterContentChecked||null,afterViewInit:n.ngAfterViewInit||null,afterViewChecked:n.ngAfterViewChecked||null,onDestroy:n.ngOnDestroy||null,onPush:t.changeDetection===xt.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||wt.Emulated,id:"c",styles:t.styles||It,_:null,setInput:null,schemas:t.schemas||null,tView:null};return r._=Ot(()=>{const n=t.directives,i=t.features,s=t.pipes;r.id+=Dt++,r.inputs=Gt(t.inputs,a),r.outputs=Gt(t.outputs),i&&i.forEach(t=>t(r)),r.directiveDefs=n?()=>("function"==typeof n?n():n).map(qt):null,r.pipeDefs=s?()=>("function"==typeof s?s():s).map(jt):null,e.hasOwnProperty(M)||(e[M]=k({token:e,factory:t.factory}))}),r}function Mt(t,e,n){const a=t.ngComponentDef;a.directiveDefs=()=>e.map(qt),a.pipeDefs=()=>n.map(jt)}function qt(t){return Ht(t)||Ut(t)}function jt(t){return Wt(t)}function Ft(t){return{type:t.type,bootstrap:t.bootstrap||It,declarations:t.declarations||It,imports:t.imports||It,exports:t.exports||It,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}}function Vt(t,e){return Ot(()=>{const n=$t(t,!0);n.declarations=e.declarations||It,n.imports=e.imports||It,n.exports=e.exports||It})}function Gt(t,e){if(null==t)return St;const n={};for(const a in t)if(t.hasOwnProperty(a)){let r=t[a],i=r;Array.isArray(r)&&(i=r[1],r=r[0]),n[r]=a,e&&(e[r]=i)}return n}function Bt(t){const e={};return{inputs:Gt(t.inputs,e),declaredInputs:e,outputs:Gt(t.outputs),viewQuery:t.viewQuery||null,contentQueries:t.contentQueries||null,hostBindings:t.hostBindings||null}}const zt=Pt;function Yt(t){return{name:t.name,factory:t.factory,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function Ht(t){return t[Nt]||null}function Ut(t){return t[Ct]||null}function Wt(t){return t[Rt]||null}function Kt(t){return t[Et]||null}function $t(t,e){const n=t[At]||null;if(!n&&!0===e)throw new Error(`Type ${j(t)} does not have 'ngModuleDef' property.`);return n}function Jt(t){return Array.isArray(t)&&"object"==typeof t[1]}function Zt(t){return Array.isArray(t)&&!0===t[1]}function Qt(t){return 0!=(4&t.flags)}function Xt(t){return 1==(1&t.flags)}function te(t){return null!==t.template}function ee(t){return 0!=(512&t[2])}class ne{constructor(t,e,n){this.factory=t,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=n}}function ae(t,e,n,a,r,i){const{onChanges:s,onInit:u,doCheck:o}=e;r>=0&&(!n.preOrderHooks||r===n.preOrderHooks.length)&&(s||u||o)&&(n.preOrderHooks||(n.preOrderHooks=[])).push(a),i>=0&&(!n.preOrderCheckHooks||i===n.preOrderCheckHooks.length)&&(s||o)&&(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(a),s&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,s),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,s)),u&&(n.preOrderHooks||(n.preOrderHooks=[])).push(-t,u),o&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,o),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,o))}function re(t,e){if(t.firstTemplatePass)for(let n=e.directiveStart,a=e.directiveEnd;n<a;n++){const e=t.data[n];e.afterContentInit&&(t.contentHooks||(t.contentHooks=[])).push(-n,e.afterContentInit),e.afterContentChecked&&((t.contentHooks||(t.contentHooks=[])).push(n,e.afterContentChecked),(t.contentCheckHooks||(t.contentCheckHooks=[])).push(n,e.afterContentChecked)),e.afterViewInit&&(t.viewHooks||(t.viewHooks=[])).push(-n,e.afterViewInit),e.afterViewChecked&&((t.viewHooks||(t.viewHooks=[])).push(n,e.afterViewChecked),(t.viewCheckHooks||(t.viewCheckHooks=[])).push(n,e.afterViewChecked)),null!=e.onDestroy&&(t.destroyHooks||(t.destroyHooks=[])).push(n,e.onDestroy)}}function ie(t,e,n,a){n||se(t,e.preOrderHooks,e.preOrderCheckHooks,n,0,void 0!==a?a:null)}function se(t,e,n,a,r,i){if(a)return;const s=(3&t[2])===r?e:n;s&&function(t,e,n,a){const r=null!=a?a:-1;let i=0;for(let s=void 0!==a?65535&t[18]:0;s<e.length;s++)if("number"==typeof e[s+1]){if(i=e[s],null!=a&&i>=a)break}else e[s]<0&&(t[18]+=65536),(i<r||-1==r)&&(ue(t,n,e,s),t[18]=(4294901760&t[18])+s+2),s++}(t,s,r,i),null==i&&(3&t[2])===r&&3!==r&&(t[2]&=1023,t[2]+=1)}function ue(t,e,n,a){const r=n[a]<0,i=n[a+1],s=t[r?-n[a]:n[a]];r?t[2]>>10<t[18]>>16&&(3&t[2])===e&&(t[2]+=1024,i.call(s)):i.call(s)}let oe=null;const le=new Map;let de,ce=null;function fe(t,e){return ce&&t===ce||(ce=t,e&&(oe=le.get(t)||null),oe=oe||{classesBitMask:0,classesIndex:1,stylesBitMask:0,stylesIndex:1}),oe}function he(){oe=null,ce=null}function ge(t){for(;Array.isArray(t);)t=t[0];return t}function pe(t,e){return ge(e[t+19])}function be(t,e){return ge(e[t.index])}function me(t,e){const n=t.index;return-1==n?null:ge(e[n])}function ye(t,e){return e[1].data[t+19]}function ve(t,e){return t[e+19]}function xe(t,e){const n=e[t];return Jt(n)?n:n[0]}function _e(t){return t.__ngContext__}function Te(t){const e=_e(t);return e?Array.isArray(e)?e:e.lView:null}function we(t){t[18]=0}let Oe,Se=null;function Ie(t){Se=t}function Ne(){return Oe}function Ce(){Oe=!0}function Re(){Oe=!1}function Ae(){return Le}let ke,Ee,Le,De=1,Pe=0,Me=0;function qe(t=null){un!==t&&(ln(null==t?-1:t),De=null==t?0:1,Pe=0,Me=0)}function je(){De+=1+Me,Pe=0,Me=0}function Fe(t){Pe+=t,Me=Math.max(Me,Pe)}function Ve(t){We=t}function Ge(){return ke}function Be(t,e){ke=t,Ee=e}function ze(t,e){ke=t,Le=e}function Ye(){return Ee}function He(){Ee=!1}function Ue(t=Le){return 4==(4&t[2])}let We=null,Ke=!1;function $e(){return Ke}function Je(t){Ke=t}let Ze=-1;function Qe(){return Ze}function Xe(t){Ze=t}let tn=0;function en(){return tn}function nn(t){tn=t}function an(t,e){const n=Le;return t&&(Ze=t[1].bindingStartIndex),ke=e,Ee=!0,Le=We=t,n}function rn(t=1){return We=function(t,e){for(;t>0;)e=e[16],t--;return e}(t,We),We[9]}function sn(t,e){const n=Le[1];if(Ue(Le))Le[2]&=-5;else try{we(Le),e&&se(Le,n.viewHooks,n.viewCheckHooks,Ke,2,void 0)}finally{Le[2]&=-73,Le[7]=n.bindingStartIndex}an(t,null)}let un=-1;function on(){return un}function ln(t){un=t,he()}let dn,cn=null;function fn(){cn="http://www.w3.org/2000/svg"}function hn(){cn="http://www.w3.org/1998/MathML/"}function gn(){pn()}function pn(){cn=null}function bn(t){dn=t}function mn(){return dn}function yn(t,e){return!(t!=t&&e!=e)&&t!==e}function vn(t){return"string"==typeof t?t:null==t?"":""+t}function xn(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():vn(t)}const _n=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(U))();function Tn(t){return{name:"window",target:t.ownerDocument.defaultView}}function wn(t){return{name:"document",target:t.ownerDocument}}function On(t){return{name:"body",target:t.ownerDocument.body}}function Sn(t){return t.indexOf("�")>=0}function In(t){return t instanceof Function?t():t}function Nn(t,e){0===e?t[2]>0&&function(t){Rn(t,2|Cn(t))}(t):t[2]=e}function Cn(t){return t[1]}function Rn(t,e){t[1]=e}function An(t,e){return t[e+2]}function kn(t,e){return 1&t[e+0]}function En(t,e){return(1&kn(t,e))>0}function Ln(t,e){return t[e+0]>>1}function Dn(t,e,n){const a=kn(t,e);t[e+0]=a|n<<1}function Pn(t,e){return t[e+1]}function Mn(t,e,n){return t[e+3+n]}function qn(t,e){return!(!t||e!==t[2])}function jn(t){return(1&Cn(t))>0}function Fn(t){return(2&Cn(t))>0}function Vn(t){return 6+t[4]}function Gn(t,e){let n=Array.isArray(t)?t[0]:t,a=Array.isArray(e)?e[0]:e;return n instanceof String&&(n=n.toString()),a instanceof String&&(a=a.toString()),yn(n,a)}function Bn(t){return null!=t&&""!==t}function zn(t,e,n=" "){return t+(e.length&&t.length?n:"")+e}function Yn(t){return t.replace(/[a-z][A-Z]/g,t=>t.charAt(0)+"-"+t.charAt(1)).toLowerCase()}function Hn(t){return Un(t)?t[0]:t}function Un(t){return Array.isArray(t)&&t.length>=6&&"string"!=typeof t[1]}function Wn(t){const e=Hn(t);return e&&e[0]||""}function Kn(t){return 0!=(8&t.flags)}function $n(t){return 0!=(16&t.flags)}function Jn(t,e){return t[e+0]}function Zn(t,e,n){t[e+1]=n}function Qn(t,e){return t[e+1]}const Xn=function(){var t={Important:1,DashCase:2};return t[t.Important]="Important",t[t.DashCase]="DashCase",t}();function ta(t){return!!t.listen}const ea={createRenderer:(t,e)=>document};function na(t,e){const n=Ae()[12],a=ta(n);let r=0;for(;r<e.length;){const i=e[r];if("number"==typeof i){if(0!==i)break;r++;const s=e[r++],u=e[r++],o=e[r++];a?n.setAttribute(t,u,o,s):t.setAttributeNS(s,u,o)}else{const s=i,u=e[++r];ra(s)?a&&n.setProperty(t,s,u):a?n.setAttribute(t,s,u):t.setAttribute(s,u),r++}}return r}function aa(t){return 3===t||4===t||6===t}function ra(t){return"@"===t[0]}function ia(t){return-1!==t}function sa(t){return 32767&t}function ua(t){return t>>16}function oa(t,e){let n=ua(t),a=e;for(;n>0;)a=a[16],n--;return a}function la(t){const e=t[3];return Zt(e)?e[3]:e}function da(t){let e=t[6];for(;null!==e&&2===e.type;)e=(t=t[16])[6];return t}function ca(t){return function(t){let e=Jt(t)?t:Te(t);for(;e&&!(512&e[2]);)e=la(e);return e}(t)[9]}let fa=!0;function ha(t){const e=fa;return fa=t,e}let ga=0;function pa(t,e){const n=ma(t,e);if(-1!==n)return n;const a=e[1];a.firstTemplatePass&&(t.injectorIndex=e.length,ba(a.data,t),ba(e,null),ba(a.blueprint,null));const r=ya(t,e),i=sa(r),s=oa(r,e),u=t.injectorIndex;if(ia(r)){const t=s[1].data;for(let n=0;n<8;n++)e[u+n]=s[i+n]|t[i+n]}return e[u+8]=r,u}function ba(t,e){t.push(0,0,0,0,0,0,0,0,e)}function ma(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null==e[t.injectorIndex+8]?-1:t.injectorIndex}function ya(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let n=e[6],a=1;for(;n&&-1===n.injectorIndex;)n=(e=e[16])?e[6]:null,a++;return n?n.injectorIndex|a<<16:-1}function va(t,e,n){!function(t,e,n){let a="string"!=typeof n?n[Lt]:n.charCodeAt(0)||0;null==a&&(a=n[Lt]=ga++);const r=255&a,i=1<<r,s=64&r,u=32&r,o=e.data;128&r?s?u?o[t+7]|=i:o[t+6]|=i:u?o[t+5]|=i:o[t+4]|=i:s?u?o[t+3]|=i:o[t+2]|=i:u?o[t+1]|=i:o[t]|=i}(t,e,n)}function xa(t,e){if("class"===e)return Wn(t.classes);if("style"===e)return Wn(t.styles);const n=t.attrs;if(n){const t=n.length;let a=0;for(;a<t;){const r=n[a];if(aa(r))break;if(0===r)a+=2;else if("number"==typeof r)for(a++;a<t&&"string"==typeof n[a];)a++;else{if(r===e)return n[a+1];a+=2}}}return null}function _a(t,e,n,a=C.Default,r){if(t){const r=function(t){if("string"==typeof t)return t.charCodeAt(0)||0;const e=t[Lt];return"number"==typeof e&&e>0?255&e:e}(n);if("function"==typeof r){const i=Ge(),s=Ae();ze(t,e);try{const t=r();if(null!=t||a&C.Optional)return t;throw new Error(`No provider for ${xn(n)}!`)}finally{ze(i,s)}}else if("number"==typeof r){if(-1===r)return new Ca(t,e);let i=null,s=ma(t,e),u=-1,o=a&C.Host?da(e)[6]:null;for((-1===s||a&C.SkipSelf)&&(u=-1===s?ya(t,e):e[s+8],Na(a,!1)?(i=e[1],s=sa(u),e=oa(u,e)):s=-1);-1!==s;){u=e[s+8];const t=e[1];if(Ia(r,s,t.data)){const t=wa(s,e,n,i,a,o);if(t!==Ta)return t}Na(a,e[1].data[s+8]===o)&&Ia(r,s,e)?(i=t,s=sa(u),e=oa(u,e)):s=-1}}}if(a&C.Optional&&void 0===r&&(r=null),0==(a&(C.Self|C.Host))){const t=e[10],i=nt(void 0);try{return t?t.get(n,r,a&C.Optional):st(n,r,a&C.Optional)}finally{nt(i)}}if(a&C.Optional)return r;throw new Error(`NodeInjector: NOT_FOUND [${xn(n)}]`)}const Ta={};function wa(t,e,n,a,r,i){const s=e[1],u=s.data[t+8],o=Oa(u,s,n,null==a?Xt(u)&&fa:a!=s&&3===u.type,r&C.Host&&i===u);return null!==o?Sa(s.data,e,o,u):Ta}function Oa(t,e,n,a,r){const i=t.providerIndexes,s=e.data,u=65535&i,o=t.directiveStart,l=i>>16,d=r?u+l:t.directiveEnd;for(let c=a?u:u+l;c<d;c++){const t=s[c];if(c<o&&n===t||c>=o&&t.type===n)return c}if(r){const t=s[o];if(t&&te(t)&&t.type===n)return o}return null}function Sa(t,e,n,a){let r=e[n];if(null!==(i=r)&&"object"==typeof i&&Object.getPrototypeOf(i)==ne.prototype){const i=r;if(i.resolving)throw new Error("Circular dep for "+xn(t[n]));const s=ha(i.canSeeViewProviders);let u;i.resolving=!0,i.injectImpl&&(u=nt(i.injectImpl));const o=Ge(),l=Ae();ze(a,e);try{r=e[n]=i.factory(void 0,t,e,a)}finally{i.injectImpl&&nt(u),ha(s),i.resolving=!1,ze(o,l)}}var i;return r}function Ia(t,e,n){const a=64&t,r=32&t;let i;return i=128&t?a?r?n[e+7]:n[e+6]:r?n[e+5]:n[e+4]:a?r?n[e+3]:n[e+2]:r?n[e+1]:n[e],!!(i&1<<t)}function Na(t,e){return!(t&C.Self||t&C.Host&&e)}class Ca{constructor(t,e){this._tNode=t,this._lView=e}get(t,e){return _a(this._tNode,this._lView,t,void 0,e)}}function Ra(t){const e=t,n=Ht(e)||Ut(e)||Wt(e)||D(e)||P(e);return n&&void 0!==n.factory?n.factory:null}function Aa(t){const e=Ra(Object.getPrototypeOf(t.prototype).constructor);return null!==e?e:t=>new t}function ka(t){return t.ngDebugContext}function Ea(t){return t.ngOriginalError}function La(t,...e){t.error(...e)}class Da{constructor(){this._console=console}handleError(t){const e=this._findOriginalError(t),n=this._findContext(t),a=function(t){return t.ngErrorLogger||La}(t);a(this._console,"ERROR",t),e&&a(this._console,"ORIGINAL ERROR",e),n&&a(this._console,"ERROR CONTEXT",n)}_findContext(t){return t?ka(t)?ka(t):this._findContext(Ea(t)):null}_findOriginalError(t){let e=Ea(t);for(;e&&Ea(e);)e=Ea(e);return e}}const Pa={name:"custom-elements"},Ma={name:"no-errors-schema"},qa="__SANITIZER_TRUSTED_BRAND__";function ja(t,e){return t instanceof String&&t[qa]===e}function Fa(t){return Ya(t,"Html")}function Va(t){return Ya(t,"Style")}function Ga(t){return Ya(t,"Script")}function Ba(t){return Ya(t,"Url")}function za(t){return Ya(t,"ResourceUrl")}function Ya(t,e){const n=new String(t);return n[qa]=e,n}let Ha=!0,Ua=!1;function Wa(){return Ua=!0,Ha}function Ka(){if(Ua)throw new Error("Cannot enable prod mode after platform setup.");Ha=!1}class $a{constructor(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),this.inertBodyElement=this.inertDocument.body,null==this.inertBodyElement){const t=this.inertDocument.createElement("html");this.inertDocument.appendChild(t),this.inertBodyElement=this.inertDocument.createElement("body"),t.appendChild(this.inertBodyElement)}this.inertBodyElement.innerHTML='<svg><g onload="this.parentNode.remove()"></g></svg>',!this.inertBodyElement.querySelector||this.inertBodyElement.querySelector("svg")?(this.inertBodyElement.innerHTML='<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',this.getInertBodyElement=this.inertBodyElement.querySelector&&this.inertBodyElement.querySelector("svg img")&&function(){try{return!!window.DOMParser}catch(t){return!1}}()?this.getInertBodyElement_DOMParser:this.getInertBodyElement_InertDocument):this.getInertBodyElement=this.getInertBodyElement_XHR}getInertBodyElement_XHR(t){t="<body><remove></remove>"+t+"</body>";try{t=encodeURI(t)}catch(a){return null}const e=new XMLHttpRequest;e.responseType="document",e.open("GET","data:text/html;charset=utf-8,"+t,!1),e.send(void 0);const n=e.response.body;return n.removeChild(n.firstChild),n}getInertBodyElement_DOMParser(t){t="<body><remove></remove>"+t+"</body>";try{const e=(new window.DOMParser).parseFromString(t,"text/html").body;return e.removeChild(e.firstChild),e}catch(e){return null}}getInertBodyElement_InertDocument(t){const e=this.inertDocument.createElement("template");return"content"in e?(e.innerHTML=t,e):(this.inertBodyElement.innerHTML=t,this.defaultDoc.documentMode&&this.stripCustomNsAttrs(this.inertBodyElement),this.inertBodyElement)}stripCustomNsAttrs(t){const e=t.attributes;for(let a=e.length-1;0<a;a--){const n=e.item(a).name;"xmlns:ns1"!==n&&0!==n.indexOf("ns1:")||t.removeAttribute(n)}let n=t.firstChild;for(;n;)n.nodeType===Node.ELEMENT_NODE&&this.stripCustomNsAttrs(n),n=n.nextSibling}}const Ja=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Za=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i;function Qa(t){return(t=String(t)).match(Ja)||t.match(Za)?t:(Wa()&&console.warn(`WARNING: sanitizing unsafe URL value ${t} (see http://g.co/ng/security#xss)`),"unsafe:"+t)}function Xa(t){return(t=String(t)).split(",").map(t=>Qa(t.trim())).join(", ")}function tr(t){const e={};for(const n of t.split(","))e[n]=!0;return e}function er(...t){const e={};for(const n of t)for(const t in n)n.hasOwnProperty(t)&&(e[t]=!0);return e}const nr=tr("area,br,col,hr,img,wbr"),ar=tr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),rr=tr("rp,rt"),ir=er(rr,ar),sr=er(nr,er(ar,tr("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),er(rr,tr("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),ir),ur=tr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),or=tr("srcset"),lr=er(ur,or,tr("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),tr("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),dr=tr("script,style,template");class cr{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(t){let e=t.firstChild,n=!0;for(;e;)if(e.nodeType===Node.ELEMENT_NODE?n=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,n&&e.firstChild)e=e.firstChild;else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let t=this.checkClobberedElement(e,e.nextSibling);if(t){e=t;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")}startElement(t){const e=t.nodeName.toLowerCase();if(!sr.hasOwnProperty(e))return this.sanitizedSomething=!0,!dr.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const n=t.attributes;for(let a=0;a<n.length;a++){const t=n.item(a),e=t.name,r=e.toLowerCase();if(!lr.hasOwnProperty(r)){this.sanitizedSomething=!0;continue}let i=t.value;ur[r]&&(i=Qa(i)),or[r]&&(i=Xa(i)),this.buf.push(" ",e,'="',gr(i),'"')}return this.buf.push(">"),!0}endElement(t){const e=t.nodeName.toLowerCase();sr.hasOwnProperty(e)&&!nr.hasOwnProperty(e)&&(this.buf.push("</"),this.buf.push(e),this.buf.push(">"))}chars(t){this.buf.push(gr(t))}checkClobberedElement(t,e){if(e&&(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error("Failed to sanitize html because the element is clobbered: "+t.outerHTML);return e}}const fr=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,hr=/([^\#-~ |!])/g;function gr(t){return t.replace(/&/g,"&amp;").replace(fr,(function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"})).replace(hr,(function(t){return"&#"+t.charCodeAt(0)+";"})).replace(/</g,"&lt;").replace(/>/g,"&gt;")}let pr;function br(t,e){let n=null;try{pr=pr||new $a(t);let a=e?String(e):"";n=pr.getInertBodyElement(a);let r=5,i=a;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,a=i,i=n.innerHTML,n=pr.getInertBodyElement(a)}while(a!==i);const s=new cr,u=s.sanitizeChildren(mr(n)||n);return Wa()&&s.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),u}finally{if(n){const t=mr(n)||n;for(;t.firstChild;)t.removeChild(t.firstChild)}}}function mr(t){return"content"in t&&function(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}const yr=function(){var t={NONE:0,HTML:1,STYLE:2,SCRIPT:3,URL:4,RESOURCE_URL:5};return t[t.NONE]="NONE",t[t.HTML]="HTML",t[t.STYLE]="STYLE",t[t.SCRIPT]="SCRIPT",t[t.URL]="URL",t[t.RESOURCE_URL]="RESOURCE_URL",t}();class vr{}const xr=new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|Z|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:calc|attr))\\([-0-9.%, #a-zA-Z]+\\))$","g"),_r=/^url\(([^)]+)\)$/;function Tr(t){if(!(t=String(t).trim()))return"";const e=t.match(_r);return e&&Qa(e[1])===e[1]||t.match(xr)&&function(t){let e=!0,n=!0;for(let a=0;a<t.length;a++){const r=t.charAt(a);"'"===r&&n?e=!e:'"'===r&&e&&(n=!n)}return e&&n}(t)?t:(Wa()&&console.warn(`WARNING: sanitizing unsafe style value ${t} (see http://g.co/ng/security#xss).`),"unsafe")}function wr(t){const e=kr();return e?e.sanitize(yr.HTML,t)||"":ja(t,"Html")?t.toString():br(document,vn(t))}function Or(t){const e=kr();return e?e.sanitize(yr.STYLE,t)||"":ja(t,"Style")?t.toString():Tr(vn(t))}function Sr(t){const e=kr();return e?e.sanitize(yr.URL,t)||"":ja(t,"Url")?t.toString():Qa(vn(t))}function Ir(t){const e=kr();if(e)return e.sanitize(yr.RESOURCE_URL,t)||"";if(ja(t,"ResourceUrl"))return t.toString();throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)")}function Nr(t){const e=kr();if(e)return e.sanitize(yr.SCRIPT,t)||"";if(ja(t,"Script"))return t.toString();throw new Error("unsafe value used in a script context")}function Cr(t,e){return"src"===e&&("embed"===t||"frame"===t||"iframe"===t||"media"===t||"script"===t)||"href"===e&&("base"===t||"link"===t)?Ir:Sr}function Rr(t,e,n){return Cr(e,n)(t)}const Ar=function(t,e,n){let a=!0;return 1&(n=n||3)&&(a="background-image"===t||"background"===t||"border-image"===t||"filter"===t||"list-style"===t||"list-style-image"===t||"clip-path"===t),2&n?a?Or(e):e:a};function kr(){const t=Ae();return t&&t[13]}const Er=/([A-Z])/g;function Lr(t){try{return null!=t?t.toString().slice(0,30):t}catch(e){return"[ERROR] Exception while trying to serialize the value"}}function Dr(t){let e=_e(t);if(e){if(Array.isArray(e)){const a=e;let r,i=void 0,s=void 0;if((n=t)&&n.constructor&&n.constructor.ngComponentDef){if(r=Vr(a,t),-1==r)throw new Error("The provided component was not found in the application");i=t}else if(function(t){return t&&t.constructor&&t.constructor.ngDirectiveDef}(t)){if(r=function(t,e){let n=t[1].firstChild;for(;n;){const a=n.directiveEnd;for(let r=n.directiveStart;r<a;r++)if(t[r]===e)return n.index;n=Fr(n)}return-1}(a,t),-1==r)throw new Error("The provided directive was not found in the application");s=Gr(r,a,!1)}else if(r=jr(a,t),-1==r)return null;const u=ge(a[r]),o=_e(u),l=o&&!Array.isArray(o)?o:Pr(a,r,u);if(i&&void 0===l.component&&(l.component=i,qr(l.component,l)),s&&void 0===l.directives){l.directives=s;for(let t=0;t<s.length;t++)qr(s[t],l)}qr(l.native,l),e=l}}else{const n=t;let a=n;for(;a=a.parentNode;){const t=_e(a);if(t){let a;if(a=Array.isArray(t)?t:t.lView,!a)return null;const r=jr(a,n);if(r>=0){const t=ge(a[r]),n=Pr(a,r,t);qr(t,n),e=n;break}}}}var n;return e||null}function Pr(t,e,n){return{lView:t,nodeIndex:e,native:n,component:void 0,directives:void 0,localRefs:void 0}}function Mr(t){let e,n=_e(t);if(Array.isArray(n)){const a=Vr(n,t);e=xe(a,n);const r=Pr(n,a,e[0]);r.component=t,qr(t,r),qr(r.native,r)}else e=xe(n.nodeIndex,n.lView);return e}function qr(t,e){t.__ngContext__=e}function jr(t,e){let n=t[1].firstChild;for(;n;){if(me(n,t)===e)return n.index;n=Fr(n)}return-1}function Fr(t){if(t.child)return t.child;if(t.next)return t.next;for(;t.parent&&!t.parent.next;)t=t.parent;return t.parent&&t.parent.next}function Vr(t,e){const n=t[1].components;if(n)for(let a=0;a<n.length;a++){const r=n[a];if(xe(r,t)[9]===e)return r}else if(xe(19,t)[9]===e)return 19;return-1}function Gr(t,e,n){const a=e[1].data[t];let r=a.directiveStart;return 0==r?It:(!n&&1&a.flags&&r++,e.slice(r,a.directiveEnd))}function Br(t){throw new Error("Multiple components match node with tagname "+t.tagName)}function zr(){throw new Error("Cannot mix multi providers and regular providers")}function Yr(t,e){const n=t.length,a=t.indexOf(e),r=a+e.length;return!(-1===a||a>0&&" "!==t[a-1]||r<n&&" "!==t[r])}function Hr(t,e,n){return e===(0!==t.type||n?t.tagName:"ng-template")}function Ur(t,e,n){let a=4;const r=t.attrs||[],i=function(t){for(let e=0;e<t.length;e++)if(aa(t[e]))return e;return t.length}(r);let s=!1;for(let u=0;u<e.length;u++){const o=e[u];if("number"!=typeof o){if(!s)if(4&a){if(a=2|1&a,""!==o&&!Hr(t,o,n)||""===o&&1===e.length){if(Wr(a))return!1;s=!0}}else{const l=8&a?o:e[++u];if(8&a&&t.classes){if(!Yr(Wn(t.classes),l)){if(Wr(a))return!1;s=!0}continue}const d=Kr(8&a?"class":o,r,0==t.type&&"ng-template"!==t.tagName,n);if(-1===d){if(Wr(a))return!1;s=!0;continue}if(""!==l){let t;t=d>i?"":r[d+1];const e=8&a?t:null;if(e&&!Yr(e,l)||2&a&&l!==t){if(Wr(a))return!1;s=!0}}}}else{if(!s&&!Wr(a)&&!Wr(o))return!1;if(s&&Wr(o))continue;s=!1,a=o|1&a}}return Wr(a)||s}function Wr(t){return 0==(1&t)}function Kr(t,e,n,a){if(null===e)return-1;let r=0;if(a||!n){let n=!1;for(;r<e.length;){const a=e[r];if(a===t)return r;if(3===a||6===a)n=!0;else{if(1===a){let t=e[++r];for(;"string"==typeof t;)t=e[++r];continue}if(4===a)break;if(0===a){r+=4;continue}}r+=n?1:2}return-1}return function(t,e){let n=t.indexOf(4);if(n>-1)for(n++;n<t.length;){if(t[n]===e)return n;n++}return-1}(e,t)}function $r(t,e,n=!1){for(let a=0;a<e.length;a++)if(Ur(t,e[a],n))return!0;return!1}function Jr(t,e){t:for(let n=0;n<e.length;n++){const a=e[n];if(t.length===a.length){for(let e=0;e<t.length;e++)if(t[e]!==a[e])continue t;return!0}}return!1}let Zr=[];function Qr(t,e,n,a,r,i,s,u){const o=!a,l=fe(n,Fn(t)),d=o?0:l.classesIndex++;return!(!ti(t,e,d,a,r,i,s,u,!1)&&!u||(l.classesBitMask|=1<<d,0))}function Xr(t,e,n,a,r,i,s,u,o){const l=!a,d=fe(n,Fn(t)),c=l?0:d.stylesIndex++;return!(!ti(t,e,c,a,r,i,u,o,!!l||!!s&&s(a,null,1))&&!o||(d.stylesBitMask|=1<<c,0))}function ti(t,e,n,a,r,i,s,u,o){jn(t)||(s?function(t,e,n,a,r){Zr.unshift(t,e,n,a,r)}(t,n,a,r,o):(Zr.length&&ei(),ni(t,n,a,r,o)));const l=u||Gn(e[r],i);return l&&(e[r]=i),l}function ei(){let t=0;for(;t<Zr.length;)ni(Zr[t++],Zr[t++],Zr[t++],Zr[t++],Zr[t++]);Zr.length=0}function ni(t,e,n,a,r){let i=!1;if(n){let s=!1,u=Vn(t);for(;u<t.length;){const i=Pn(t,u),o=An(t,u);if(s=n<=o,s){n<o&&ai(t,u,n,r),ri(t,!1,u,a,e);break}u+=3+i}s||(ai(t,t.length,n,r),ri(t,!1,u,a,e),i=!0)}else ri(t,!0,3,a,e),i=!0;return i}function ai(t,e,n,a){t.splice(e,0,a?1:0,1,n,null),Dn(t,e,1)}function ri(t,e,n,a,r){const i=n+3;let s=i+Pn(t,n);if(e||s--,"number"==typeof a){for(let e=i;e<=s;e++)if(t[e]===a)return;t.splice(s,0,a),t[n+1]++,Dn(t,n,Ln(t,n)|1<<r)}else null!==a&&null==t[s]&&(t[s]=a)}function ii(t,e,n,a,r,i,s,u){return r&&a&&(function(t){if(!jn(t)){const e=Hn(t);e&&function(t,e){for(let n=1;n<e.length;n+=2){const a=Qn(e,n);a&&ni(t,-1,Jn(e,n),a,!1)}}(t,e),function(t){Rn(t,1|Cn(t))}(t)}}(a),function(t,e){return t&&e>0}(a,i))?(si(a,t,e,n,i,s,u),!0):r}function si(t,e,n,a,r,i,s){const u=!0===(o=r)?-1:!1===o?0:o;var o;const l=ui,d=(u&Ln(t,3))>0?1:0;let c=Vn(t);for(;c<t.length;){const r=Pn(t,c);if(u&Ln(t,c)){let u=!1;const o=An(t,c),f=r-1,h=Mn(t,c,f);for(let r=0;r<f;r++){const l=Mn(t,c,r),d=a[l];if(Bn(d)){i(e,n,o,s&&En(t,c)?s(o,d,2):d,l),u=!0;break}}if(l){const r=l(t,e,n,a,i,s,d|(u?4:2),o,h);u=u||r}u||i(e,n,o,h)}c+=3+r}l&&l(t,e,n,a,i,s,d)}let ui=null;const oi=(t,e,n,a)=>{const r=e.style;a?(a=a.toString(),t&&ta(t)?t.setStyle(e,n,a,Xn.DashCase):r&&r.setProperty(n,a)):t&&ta(t)?t.removeStyle(e,n,Xn.DashCase):r&&r.removeProperty(n)},li=(t,e,n,a)=>{if(""!==n){const r=e.classList;a?t&&ta(t)?t.addClass(e,n):r&&r.add(n):t&&ta(t)?t.removeClass(e,n):r&&r.remove(n)}};function di(t,e,n,a){const r=Hn(n);if(r)for(let i=1;i<r.length;i+=2){const n=Jn(r,i),s=Qn(r,i);a?li(t,e,n,s):oi(t,e,n,s)}}const ci={},fi={marker:"element"},hi={marker:"comment"},gi=(t,e,n,a,r,i,s,u,o)=>{let l=!1;if(Pn(t,3)){let d=!0;const c=!u;c&&-2&s&&(d=!1,l=!0),d&&(l=function t(e,n,a,r,i,s,u,o,l,d){let c=!1;if(l<Pn(e,3)){const f=Mn(e,3,l),h=r[f];let g=function(t){return t>=yi.length&&yi.push(1),yi[t]}(l);for(;g<h.length;){const p=Jn(h,g),b=o&&p>o,m=!b&&p===o,y=Qn(h,g),v=Bn(y);let x=t(e,n,a,r,i,s,b?u:bi(u,v,m),b?o:p,l+1,d);if(b){c||(c=x);break}if(!x&&mi(u,m)){const t=m&&!v,e=t?d:y,r=t?f:null;i(n,a,p,s?s(p,e,3):e,r),x=!0}c=x&&m,g+=2}if(yi[l]=g,1===h.length||!o)return t(e,n,a,r,i,s,u,o,l+1,d)}return c}(t,e,n,a,r,i,s,u||null,0,o||null)),c&&function(){for(let t=0;t<yi.length;t++)yi[t]=1}()}return l};function pi(){ui=gi}function bi(t,e,n){let a=t;return e||4&t||!(n||1&t)?(a|=4,a&=-3):(a|=2,a&=-5),a}function mi(t,e){let n=(1&t)>0;return n?4&t&&e&&(n=!1):2&t&&(n=e),n}const yi=[];function vi(t,e,n,a){for(let r=1;r<t.length;r+=2){const i=Jn(t,r);if(e<=i){let s=!1;if(i===e){const e=t[r];!a&&Bn(e)||(s=!0,Zn(t,r,n))}else s=!0,t.splice(r,0,e,n);return s}}return t.push(e,n),!0}function xi(t,e){let n="";for(let a=1;a<t.length;a+=2){const r=Jn(t,a),i=Qn(t,a),s=zn(r,e?"":i,":");n=zn(n,s,e?" ":"; ")}return n}function _i(t){let e={};if(t)for(let n=1;n<t.length;n+=2){const a=Jn(t,n),r=Qn(t,n);e[a]=r}return e}class Ti{constructor(t,e,n){this.context=t,this._data=e,this._isClassBased=n,this._sanitizer=null}overrideSanitizer(t){this._sanitizer=t}get summary(){const t={};return this._mapValues((e,n,a)=>{t[e]={prop:e,value:n,bindingIndex:a}}),t}get values(){const t={};return this._mapValues((e,n)=>{t[e]=n}),t}_mapValues(t){Pn(this.context,3)>0&&pi();const e=this._isClassBased?null:this._sanitizer||mn();si(this.context,null,{},this._data,!0,(e,n,a,r,i)=>{t(a,r,i||null)},e)}}function wi(t){Oi(Ae(),t)}function Oi(t,e){ie(t,t[1],$e(),e),ln(e)}const Si=(()=>Promise.resolve(null))();function Ii(t){const e=t[1],n=Ue(t);if(e.firstTemplatePass=!1,t[7]=e.bindingStartIndex,!n){const n=$e();ie(t,e,n,void 0),function(t){for(let e=t[14];null!==e;e=e[4])if(-1===e[2]&&Zt(e))for(let t=9;t<e.length;t++){const n=e[t];Ei(n,n[1],n[9])}}(t),Ni(e,t),we(t),se(t,e.contentHooks,e.contentCheckHooks,n,1,void 0),function(t,e){const n=on();try{if(t.expandoInstructions){let n=e[7]=t.expandoStartIndex;Xe(n);let a=-1,r=-1;for(let i=0;i<t.expandoInstructions.length;i++){const s=t.expandoInstructions[i];"number"==typeof s?(s<=0?(r=-s,qe(r),n+=9+t.expandoInstructions[++i],a=n):n+=s,Xe(n)):(null!==s&&(e[7]=n,s(2,ge(e[a]),r),je()),a++)}}}finally{qe(n)}}(e,t)}n&&e.staticContentQueries&&Ni(e,t),n&&!e.staticViewQueries||ds(2,e,t[9]),function(t,e){if(null!=e)for(let n=0;n<e.length;n++)as(t,e[n])}(t,e.components)}function Ni(t,e){const n=t.contentQueries;if(null!==n)for(let a=0;a<n.length;a+=2){const r=n[a],i=n[a+1];if(-1!==i){const n=t.data[i];nn(r),n.contentQueries(2,e[i],i)}}}function Ci(t,e){let n;const a=e||Ae()[12],r=cn;return n=ta(a)?a.createElement(t,r):null===r?a.createElement(t):a.createElementNS(r,t),n}function Ri(t,e,n,a,r,i,s,u,o,l){const d=e.blueprint.slice();return d[0]=r,d[2]=140|a,we(d),d[3]=d[16]=t,d[9]=n,d[11]=s||t&&t[11],d[12]=u||t&&t[12],d[13]=o||t&&t[13]||null,d[10]=l||t&&t[10]||null,d[6]=i,d}function Ai(t,e,n,a,r,i){const s=n+19,u=t.data[s]||function(t,e,n,a,r,i,s){const u=Ge(),o=Ye(),l=o?u:u&&u.parent,d=t.data[n]=Gi(0,l&&l!==e?l:null,a,n,r,i);return 0!==s&&t.firstChild||(t.firstChild=d),u&&(!o||null!=u.child||null===d.parent&&2!==u.type?o||(u.next=d):u.child=d),d}(t,e,s,a,r,i,n);return Be(u,!0),u}function ki(t,e,n,a){let r=t.node;return null==r&&(t.node=r=Gi(0,e,2,n,null,null)),a[6]=r}function Ei(t,e,n){const a=Ye(),r=Ge();let i;if(512&t[2])ss(ca(t));else{let s=!1;try{Be(null,!0),i=an(t,t[6]),we(t),Di(t,e.template,Pi(t),n),e.firstTemplatePass=!1,Ii(t),s=!0}finally{sn(i,s),Be(r,a)}}}function Li(t,e,n){const a=t[11],r=an(t,t[6]),i=!$e(),s=Ue(t);let u=!1;try{i&&!s&&a.begin&&a.begin(),s&&(n&&Di(t,n,1,e),Ii(t),t[2]&=-5),we(t),n&&Di(t,n,2,e),Ii(t),u=!0}finally{i&&!s&&a.end&&a.end(),sn(r,u)}}function Di(t,e,n,a){pn();const r=on();try{qe(null),2&n&&Oi(t,0),e(n,a)}finally{ln(r)}}function Pi(t){return Ue(t)?1:2}function Mi(t,e,n){if(Qt(e)){const a=e.directiveEnd;for(let r=e.directiveStart;r<a;r++){const e=t.data[r];e.contentQueries&&e.contentQueries(1,n[r],r)}}}function qi(t,e,n,a=be){Ne()&&(function(t,e,n){const a=n.directiveStart,r=n.directiveEnd;!t.firstTemplatePass&&a<r&&pa(n,e);for(let i=a;i<r;i++){const a=t.data[i];te(a)&&ts(e,n,a),Ki(e,Sa(t.data,e,i,n),a,i)}}(t,e,n),function(t,e,n){const a=n.directiveStart,r=n.directiveEnd,i=t.expandoInstructions,s=t.firstTemplatePass,u=n.index-19,o=on();try{qe(u);for(let u=a;u<r;u++){const a=t.data[u],r=e[u];a.hostBindings?(Ui(a,i,r,n,s),je()):s&&i.push(null)}}finally{qe(o)}}(t,e,n),function(t,e,n){const a=e.localNames;if(a){let r=e.index+1;for(let i=0;i<a.length;i+=2){const s=a[i+1],u=-1===s?n(e,t):t[s];t[r++]=u}}}(e,n,a),qe(null))}function ji(t){return t.tView||(t.tView=Fi(-1,t.template,t.consts,t.vars,t.directiveDefs,t.pipeDefs,t.viewQuery,t.schemas))}function Fi(t,e,n,a,r,i,s,u){const o=19+n,l=o+a,d=function(t,e){const n=new Array(e).fill(null,0,t).fill(ci,t);return n[7]=t,n}(o,l);return d[1]={id:t,blueprint:d,template:e,queries:null,viewQuery:s,node:null,data:d.slice().fill(null,o),bindingStartIndex:o,expandoStartIndex:l,expandoInstructions:null,firstTemplatePass:!0,staticViewQueries:!1,staticContentQueries:!1,preOrderHooks:null,preOrderCheckHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:"function"==typeof r?r():r,pipeRegistry:"function"==typeof i?i():i,firstChild:null,schemas:u}}function Vi(t,e){const n=t.createRenderer(null,null);return"string"==typeof e?ta(n)?n.selectRootElement(e):n.querySelector(e):e}function Gi(t,e,n,a,r,i){return{type:n,index:a,injectorIndex:e?e.injectorIndex:-1,directiveStart:-1,directiveEnd:-1,propertyMetadataStartIndex:-1,propertyMetadataEndIndex:-1,flags:0,providerIndexes:0,tagName:r,attrs:i,localNames:null,initialInputs:void 0,inputs:void 0,outputs:void 0,tViews:null,next:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,classes:null}}function Bi(t,e){const n=Ae()[1];let a=null;const r=t.directiveStart,i=t.directiveEnd;if(i>r){const t=0===e,s=n.data;for(let e=r;e<i;e++){const n=s[e],r=t?n.inputs:n.outputs;for(let t in r)if(r.hasOwnProperty(t)){a=a||{};const n=r[t];a.hasOwnProperty(t)?a[t].push(e,t,n):a[t]=[e,t,n]}}}return a}const zi={class:"className",for:"htmlFor",formaction:"formAction",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"};function Yi(t,e,n,a,r,i){const s=Ae(),u=pe(t,s),o=ye(t,s);let l,d;if(!r&&(l=hs(o))&&(d=l[e]))ys(s,d,n),Xt(o)&&function(t,e){const n=xe(e,t);16&n[2]||(n[2]|=64)}(s,t+19);else if(3===o.type){!function(t,e,n,a,r){const i=e[7]-1,s=a[i];"�"==s[0]&&(a[i]=n+s,r||(-1==t.propertyMetadataStartIndex&&(t.propertyMetadataStartIndex=i),t.propertyMetadataEndIndex=i+1))}(o,s,e=zi[e]||e,s[1].data,r);const t=i?i(o,s):s[12];n=null!=a?a(n,o.tagName||"",e):n,ta(t)?t.setProperty(u,e,n):ra(e)||(u.setProperty?u.setProperty(e,n):u[e]=n)}}function Hi(t,e,n,a){if(!Ne())return;const r=function(t,e,n){const a=t.directiveRegistry;let r=null;if(a)for(let i=0;i<a.length;i++){const s=a[i];$r(n,s.selectors,!1)&&(r||(r=[]),va(pa(n,e),t,s.type),te(s)?(1&n.flags&&Br(n),n.flags=1,r.unshift(s)):r.push(s))}return r}(t,e,n),i=a?{"":-1}:null;if(r){Qi(n,t.data.length,r.length);for(let t=0;t<r.length;t++){const e=r[t];e.providersResolver&&e.providersResolver(e)}Wi(t,n,r.length);const a=t.preOrderHooks&&t.preOrderHooks.length||0,s=t.preOrderCheckHooks&&t.preOrderCheckHooks.length||0,u=n.index-19;for(let n=0;n<r.length;n++){const o=r[n],l=t.data.length;Xi(t,e,o,o.factory),Zi(t.data.length-1,o,i),ae(l,o,t,u,a,s)}}i&&function(t,e,n){if(e){const a=t.localNames=[];for(let t=0;t<e.length;t+=2){const r=n[e[t+1]];if(null==r)throw new Error(`Export of name '${e[t+1]}' not found!`);a.push(e[t],r)}}}(n,a,i)}function Ui(t,e,n,a,r){const i=e.length;Ie(t),t.hostBindings(1,n,a.index-19),Ie(null),i===e.length&&r&&e.push(t.hostBindings)}function Wi(t,e,n){const a=-(e.index-19),r=t.data.length-(65535&e.providerIndexes);(t.expandoInstructions||(t.expandoInstructions=[])).push(a,r,n)}function Ki(t,e,n,a){const r=Ge();$i(t,r,e),r&&r.attrs&&function(t,e,n,a){let r=a.initialInputs;(void 0===r||t>=r.length)&&(r=function(t,e,n){const a=n.initialInputs||(n.initialInputs=[]);for(let s=a.length;s<=t;s++)a.push(null);const r=n.attrs;let i=0;for(;i<r.length;){const n=r[i];if(0===n){i+=4;continue}if(5===n){i+=2;continue}if("number"==typeof n)break;const s=e[n],u=r[i+1];void 0!==s&&(a[t]||(a[t]=[])).push(n,s,u),i+=2}return a}(t,n.inputs,a));const i=r[t];if(i){const t=n.setInput;for(let a=0;a<i.length;){const r=i[a++],s=i[a++],u=i[a++];t?n.setInput(e,u,r,s):e[s]=u}}}(a,e,n,r),t[1].firstTemplatePass&&n.contentQueries&&(r.flags|=4),te(n)&&(xe(r.index,t)[9]=e)}function $i(t,e,n){const a=be(e,t);qr(n,t),a&&qr(a,t)}function Ji(t){const e=Ae()[1];(e.components||(e.components=[])).push(t.index)}function Zi(t,e,n){if(n){if(e.exportAs)for(let a=0;a<e.exportAs.length;a++)n[e.exportAs[a]]=t;e.template&&(n[""]=t)}}function Qi(t,e,n){t.flags=1&t.flags,t.directiveStart=e,t.directiveEnd=e+n,t.providerIndexes=e}function Xi(t,e,n,a){t.data.push(n);const r=new ne(a,te(n),null);t.blueprint.push(r),e.push(r)}function ts(t,e,n){const a=be(e,t),r=ji(n),i=t[11],s=rs(t,Ri(t,r,null,n.onPush?64:16,t[e.index],e,i,i.createRenderer(a,n)));s[6]=e,t[e.index]=s,t[1].firstTemplatePass&&Ji(e)}function es(t,e,n,a,r,i){const s=pe(t,a),u=a[12];if(null==n)ta(u)?u.removeAttribute(s,e,i):s.removeAttribute(e);else{const o=ye(t,a),l=null==r?vn(n):r(n,o.tagName||"",e);ta(u)?u.setAttribute(s,e,l,i):i?s.setAttributeNS(i,e,l):s.setAttribute(e,l)}}function ns(t,e,n,a,r){return new Array(t,!0,r?-1:0,e,null,null,a,n,null)}function as(t,e){const n=xe(e,t);(128==(128&n[2])||Ue(t))&&80&n[2]&&(function(t){const e=t[1];for(let n=t.length;n<e.blueprint.length;n++)t[n]=e.blueprint[n]}(n),ls(n,n[9]))}function rs(t,e){return t[14]?t[15][4]=e:t[14]=e,t[15]=e,e}function is(t){for(;t;){t[2]|=64;const e=la(t);if(ee(t)&&!e)return t;t=e}return null}function ss(t){for(let e=0;e<t.components.length;e++){const n=t.components[e];Li(Te(n),n)}}function us(t,e){const n=t[11];n.begin&&n.begin();try{Ue(t)&&ls(t,e),ls(t,e)}catch(a){throw ms(t,a),a}finally{n.end&&n.end()}}function os(t){ss(t[9])}function ls(t,e){const n=t[1],a=an(t,t[6]),r=n.template,i=Ue(t);let s=!1;try{we(t),i&&ds(1,n,e),Di(t,r,Pi(t),e),Ii(t),s=!0}finally{sn(a,s)}}function ds(t,e,n){const a=e.viewQuery;null!==a&&(nn(0),a(t,n))}function cs(t,e="",n=""){const a=t[1].data,r=t[7]-1;return null==a[r]?a[r]="�"+e+"�"+n:null}const fs=Si;function hs(t){return void 0===t.inputs&&(t.inputs=Bi(t,0)),t.inputs}function gs(t){return t[8]||(t[8]=[])}function ps(t){return t[1].cleanup||(t[1].cleanup=[])}function bs(t,e){return e[t.index][12]}function ms(t,e){const n=t[10],a=n?n.get(Da,null):null;a&&a.handleError(e)}function ys(t,e,n){const a=t[1];for(let r=0;r<e.length;){const i=e[r++],s=e[r++],u=e[r++],o=t[i],l=a.data[i];l.setInput?l.setInput(o,n,s,u):o[u]=n}}function vs(t,e,n){const a=pe(e,t),r=t[12];ta(r)?r.setValue(a,n):a.textContent=n}function xs(t,e,n){di(t,e,n.classes,!0),di(t,e,n.styles,!1)}function _s(t,e){const n=e[3];return-1===t.index?Zt(n)?n:null:n}function Ts(t,e){const n=_s(t,e);return n?Ps(e[12],n[7]):null}function ws(t,e,n,a,r){if(null!=a){let i,s=!1;Zt(a)?i=a:Jt(a)&&(s=!0,a=a[0]);const u=ge(a);0===t?Ls(e,n,u,r||null):1===t?js(e,u,s):2===t&&e.destroyNode(u),null!=i&&function(t,e,n,a,r){const i=n[7];i!==ge(n)&&ws(e,t,a,i,r);for(let s=9;s<n.length;s++)Bs(t,e,n[s],a,i)}(e,t,i,n,r)}}function Os(t,e){return ta(e)?e.createText(vn(t)):e.createTextNode(vn(t))}function Ss(t,e,n){const a=Ts(t[1].node,t);a&&Bs(t[12],e?0:1,t,a,n)}function Is(t,e,n){const a=9+n,r=e.length;n>0&&(e[a-1][4]=t),n<r-9?(t[4]=e[a],mt(e,9+n,t)):(e.push(t),t[4]=null),t[3]=e;const i=t[17];null!==i&&e!==i&&function(t,e){const n=t[5];null===n?t[5]=[e]:n.push(e)}(i,t);const s=t[5];null!==s&&s.insertView(t[1]),t[2]|=128}function Ns(t,e){const n=t[5],a=n.indexOf(e);n.splice(a,1)}function Cs(t,e){if(t.length<=9)return;const n=9+e,a=t[n];if(a){const r=a[17];null!==r&&r!==t&&Ns(r,a),e>0&&(t[n-1][4]=a[4]);const i=yt(t,9+e);Ss(a,!1);const s=i[5];null!==s&&s.detachView(i[1]),a[3]=null,a[4]=null,a[2]&=-129}return a}function Rs(t,e){const n=Cs(t,e);n&&As(n)}function As(t){if(!(256&t[2])){const e=t[12];ta(e)&&e.destroyNode&&Bs(e,2,t,null,null),function(t){let e=t[14];if(!e)return Es(t);for(;e;){let n=null;if(Jt(e))n=e[14];else{const t=e[9];t&&(n=t)}if(!n){for(;e&&!e[4]&&e!==t;)Es(e),e=ks(e,t);Es(e||t),n=e&&e[4]}e=n}}(t)}}function ks(t,e){let n;return Jt(t)&&(n=t[6])&&2===n.type?_s(n,t):t[3]===e?null:t[3]}function Es(t){if(Jt(t)&&!(256&t[2])){t[2]&=-129,t[2]|=256,function(t){const e=t[1];let n;if(null!=e&&null!=(n=e.destroyHooks))for(let a=0;a<n.length;a+=2){const e=t[n[a]];e instanceof ne||n[a+1].call(e)}}(t),function(t){const e=t[1].cleanup;if(null!==e){const n=t[8];for(let a=0;a<e.length-1;a+=2)if("string"==typeof e[a]){const r=e[a+1],i="function"==typeof r?r(t):ge(t[r]),s=n[e[a+2]],u=e[a+3];"boolean"==typeof u?i.removeEventListener(e[a],s,u):u>=0?n[u]():n[-u].unsubscribe(),a+=2}else e[a].call(n[e[a+1]]);t[8]=null}}(t);const e=t[6];e&&3===e.type&&ta(t[12])&&t[12].destroy();const n=t[17];if(null!==n&&Zt(t[3])){n!==t[3]&&Ns(n,t);const e=t[5];null!==e&&e.detachView(t[1])}}}function Ls(t,e,n,a){ta(t)?t.insertBefore(e,n,a):e.insertBefore(n,a,!0)}function Ds(t,e,n,a){null!==a?Ls(t,e,n,a):function(t,e,n){ta(t)?t.appendChild(e,n):e.appendChild(n)}(t,e,n)}function Ps(t,e){return ta(t)?t.parentNode(e):e.parentNode}function Ms(t,e,n){const a=function(t,e){if(ee(e))return Ps(e[12],be(t,e));const n=function(t){for(;null!=t.parent&&(4===t.parent.type||5===t.parent.type);)t=t.parent;return t}(t),a=n.parent;if(null==a){const t=e[6];return 2===t.type?Ts(t,e):function(t){const e=t[6];return e&&3===e.type?be(e,la(t)):null}(e)}{const t=n&&5===n.type;if(t&&2&n.flags)return be(n,e).parentNode;if(1&a.flags&&!t){const t=e[1].data,n=t[t[a.index].directiveStart].encapsulation;if(n!==wt.ShadowDom&&n!==wt.Native)return null}return be(a,e)}}(e,n);if(null!=a){const r=n[12],i=function(t,e){if(2===t.type){const n=_s(t,e);return qs(n.indexOf(e,9)-9,n)}return 4===t.type||5===t.type?be(t,e):null}(e.parent||n[6],n);if(Array.isArray(t))for(let e of t)Ds(r,a,e,i);else Ds(r,a,t,i)}}function qs(t,e){const n=9+t+1;if(n<e.length){const t=e[n],a=t[6].child;return null!==a?me(a,t):e[7]}return e[7]}function js(t,e,n){const a=Ps(t,e);a&&function(t,e,n,a){ta(t)?t.removeChild(e,n,a):e.removeChild(n)}(t,a,e,n)}function Fs(t,e,n,a){const r=a[3];let i=a[6].projection[n];if(Array.isArray(i))Ms(i,e,t);else for(;i;)32&i.flags||(1===i.type?Fs(t,e,i.projection,da(r)):(i.flags|=2,Gs(i,e,t,r))),i=i.projectionNext}function Vs(t,e,n,a){for(;t;)Gs(t,e,n,a),t=t.next}function Gs(t,e,n,a){const r=be(t,a);Ms(r,e,n),qr(r,a);const i=a[t.index];if(0===t.type)for(let s=9;s<i.length;s++)Ss(i[s],!0,i[7]);else if(5===t.type){let e=t.child;Vs(e,e,a,a)}else 4===t.type&&Vs(t.child,e,n,a),Zt(i)&&Ms(i[7],e,n)}function Bs(t,e,n,a,r){let i=n[1].node.child;for(;null!==i;)zs(t,e,n,i,a,r),i=i.next}function zs(t,e,n,a,r,i){const s=a.type;32&a.flags||(4===s||5===s?function(t,e,n,a,r,i){ws(e,t,r,n[a.index],i);let s=a.child;for(;s;)zs(t,e,n,s,r,i),s=s.next}(t,e,n,a,r,i):1===s?function(t,e,n,a,r,i){const s=da(n),u=s[6].projection[a.projection];if(void 0!==u)if(Array.isArray(u))for(let o=0;o<u.length;o++)ws(e,t,r,u[o],i);else{let n=u;const a=s[3];for(;null!==n;)zs(t,e,a,n,r,i),n=n.projectionNext}}(t,e,n,a,r,i):ws(e,t,r,n[a.index],i))}class Ys{constructor(t,e,n){this._context=e,this._componentIndex=n,this._appRef=null,this._viewContainerRef=null,this._tViewNode=null,this._lView=t}get rootNodes(){return null==this._lView[0]?function t(e,n,a){let r=n.child;for(;r;){const n=me(r,e);if(n&&a.push(n),4===r.type)t(e,r,a);else if(1===r.type){const t=da(e),n=t[6],i=la(t);let s=n.projection[r.projection];for(;s&&i;)a.push(be(s,i)),s=s.next}r=r.next}return a}(this._lView,this._lView[6],[]):[]}get context(){return this._context?this._context:this._lookUpContext()}get destroyed(){return 256==(256&this._lView[2])}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._viewContainerRef){const t=this._viewContainerRef.indexOf(this);t>-1&&this._viewContainerRef.detach(t),this._viewContainerRef=null}As(this._lView)}onDestroy(t){var e,n;n=t,gs(e=this._lView).push(n),e[1].firstTemplatePass&&ps(e).push(e[8].length-1,null)}markForCheck(){is(this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){us(this._lView,this.context)}checkNoChanges(){!function(t,e){Je(!0);try{us(t,e)}finally{Je(!1)}}(this._lView,this.context)}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}detachFromAppRef(){this._appRef=null,function(t){Bs(t[12],1,t,null,null)}(this._lView)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}_lookUpContext(){return this._context=la(this._lView)[this._componentIndex]}}class Hs extends Ys{constructor(t){super(t,null,-1),this._view=t}detectChanges(){os(this._view)}checkNoChanges(){!function(t){Je(!0);try{os(t)}finally{Je(!1)}}(this._view)}get context(){return null}}let Us,Ws,Ks;function $s(t,e,n){return Us||(Us=class extends t{}),new Us(be(e,n))}function Js(t,e,n,a){return Ws||(Ws=class extends t{constructor(t,e,n){super(),this._declarationView=t,this._declarationTContainer=e,this.elementRef=n}createEmbeddedView(t){const e=this._declarationTContainer.tViews,n=function(t,e,n,a){const r=Ye(),i=Ge();Be(null,!0);const s=Ri(n,t,e,16,null,null);return s[16]=n,ki(t,null,-1,s),t.firstTemplatePass&&(t.node.injectorIndex=a),Be(i,r),s}(e,t,this._declarationView,this._declarationTContainer.injectorIndex);n[17]=this._declarationView[this._declarationTContainer.index];const a=this._declarationView[5];null!==a&&(n[5]=a.createEmbeddedView(e)),Ei(n,e,t);const r=new Ys(n,t,-1);return r._tViewNode=n[6],r}}),0===n.type?new Ws(a,n,$s(e,n,a)):null}function Zs(t,e,n,a){let r;Ks||(Ks=class extends t{constructor(t,e,n){super(),this._lContainer=t,this._hostTNode=e,this._hostView=n}get element(){return $s(e,this._hostTNode,this._hostView)}get injector(){return new Ca(this._hostTNode,this._hostView)}get parentInjector(){const t=ya(this._hostTNode,this._hostView),e=oa(t,this._hostView),n=function(t,e,n){if(n.parent&&-1!==n.parent.injectorIndex){const t=n.parent.injectorIndex;let e=n.parent;for(;null!=e.parent&&t==e.injectorIndex;)e=e.parent;return e}let a=ua(t),r=e,i=e[6];for(;a>1;)r=r[16],i=r[6],a--;return i}(t,this._hostView,this._hostTNode);return ia(t)&&null!=n?new Ca(n,e):new Ca(null,this._hostView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){return null!==this._lContainer[8]&&this._lContainer[8][t]||null}get length(){return this._lContainer.length-9}createEmbeddedView(t,e,n){const a=t.createEmbeddedView(e||{});return this.insert(a,n),a}createComponent(t,e,n,a,r){const i=n||this.parentInjector;!r&&null==t.ngModule&&i&&(r=i.get(ft,null));const s=t.create(i,a,void 0,r);return this.insert(s.hostView,e),s}insert(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");this.allocateContainerIfNeeded();const n=t._lView,a=this._adjustIndex(e);return Zt(n[3])?this.move(t,a):(Is(n,this._lContainer,a),Ss(n,!0,qs(a,this._lContainer)),t.attachToViewContainerRef(this),mt(this._lContainer[8],a,t),t)}move(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");const n=this.indexOf(t);return-1!==n&&this.detach(n),this.insert(t,e),t}indexOf(t){return null!==this._lContainer[8]?this._lContainer[8].indexOf(t):0}remove(t){this.allocateContainerIfNeeded();const e=this._adjustIndex(t,-1);Rs(this._lContainer,e),yt(this._lContainer[8],e)}detach(t){this.allocateContainerIfNeeded();const e=this._adjustIndex(t,-1),n=Cs(this._lContainer,e);return n&&null!=yt(this._lContainer[8],e)?new Ys(n,n[9],-1):null}_adjustIndex(t,e=0){return null==t?this.length+e:t}allocateContainerIfNeeded(){null===this._lContainer[8]&&(this._lContainer[8]=[])}});const i=a[n.index];if(Zt(i))r=i,r[2]=-1;else{let t;if(t=4===n.type?ge(i):a[12].createComment(""),ee(a)){const e=a[12],r=be(n,a);Ls(e,Ps(e,r),t,function(t,e){return ta(t)?t.nextSibling(e):e.nextSibling}(e,r))}else Ms(t,n,a);a[n.index]=r=ns(i,a,t,n,!0),rs(a,r)}return new Ks(r,n,a)}function Qs(t=!1){return function(t,e,n){if(Xt(t)&&!n){const n=t.directiveStart,a=xe(t.index,e);return new Ys(a,null,n)}if(3===t.type||0===t.type||4===t.type){const t=da(e);return new Ys(t,t[9],-1)}return null}(Ge(),Ae(),t)}let Xs=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>eu(),t})();const tu=Qs,eu=(...t)=>{},nu=Function;function au(t){return"function"==typeof t}const ru=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/,iu=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,su=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,uu=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s+super\(\.\.\.arguments\)/;class ou{constructor(t){this._reflect=t||U.Reflect}isReflectionEnabled(){return!0}factory(t){return(...e)=>new t(...e)}_zipTypesAndAnnotations(t,e){let n;n=new Array(void 0===t?e.length:t.length);for(let a=0;a<n.length;a++)n[a]=void 0===t?[]:t[a]&&t[a]!=Object?[t[a]]:[],e&&null!=e[a]&&(n[a]=n[a].concat(e[a]));return n}_ownParameters(t,e){if(n=t.toString(),ru.test(n)||uu.test(n)||iu.test(n)&&!su.test(n))return null;var n;if(t.parameters&&t.parameters!==e.parameters)return t.parameters;const a=t.ctorParameters;if(a&&a!==e.ctorParameters){const t="function"==typeof a?a():a,e=t.map(t=>t&&t.type),n=t.map(t=>t&&lu(t.decorators));return this._zipTypesAndAnnotations(e,n)}const r=t.hasOwnProperty(b)&&t[b],i=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",t);return i||r?this._zipTypesAndAnnotations(i,r):new Array(t.length).fill(void 0)}parameters(t){if(!au(t))return[];const e=du(t);let n=this._ownParameters(t,e);return n||e===Object||(n=this.parameters(e)),n||[]}_ownAnnotations(t,e){if(t.annotations&&t.annotations!==e.annotations){let e=t.annotations;return"function"==typeof e&&e.annotations&&(e=e.annotations),e}return t.decorators&&t.decorators!==e.decorators?lu(t.decorators):t.hasOwnProperty(p)?t[p]:null}annotations(t){if(!au(t))return[];const e=du(t),n=this._ownAnnotations(t,e)||[];return(e!==Object?this.annotations(e):[]).concat(n)}_ownPropMetadata(t,e){if(t.propMetadata&&t.propMetadata!==e.propMetadata){let e=t.propMetadata;return"function"==typeof e&&e.propMetadata&&(e=e.propMetadata),e}if(t.propDecorators&&t.propDecorators!==e.propDecorators){const e=t.propDecorators,n={};return Object.keys(e).forEach(t=>{n[t]=lu(e[t])}),n}return t.hasOwnProperty(m)?t[m]:null}propMetadata(t){if(!au(t))return{};const e=du(t),n={};if(e!==Object){const t=this.propMetadata(e);Object.keys(t).forEach(e=>{n[e]=t[e]})}const a=this._ownPropMetadata(t,e);return a&&Object.keys(a).forEach(t=>{const e=[];n.hasOwnProperty(t)&&e.push(...n[t]),e.push(...a[t]),n[t]=e}),n}ownPropMetadata(t){return au(t)&&this._ownPropMetadata(t,du(t))||{}}hasLifecycleHook(t,e){return t instanceof nu&&e in t.prototype}guards(t){return{}}getter(t){return new Function("o","return o."+t+";")}setter(t){return new Function("o","v","return o."+t+" = v;")}method(t){return new Function("o","args",`if (!o.${t}) throw new Error('"${t}" is undefined');\n        return o.${t}.apply(o, args);`)}importUri(t){return"object"==typeof t&&t.filePath?t.filePath:"./"+j(t)}resourceUri(t){return"./"+j(t)}resolveIdentifier(t,e,n,a){return a}resolveEnum(t,e){return t[e]}}function lu(t){return t?t.map(t=>new(0,t.type.annotationCls)(...t.args?t.args:[])):[]}function du(t){const e=t.prototype?Object.getPrototypeOf(t.prototype):null;return(e?e.constructor:null)||Object}let cu=null;function fu(){return cu=cu||new ou}function hu(t){return gu(fu().parameters(t))}function gu(t){const e=W();return t.map(t=>function(t,e){const n={token:null,host:!1,optional:!1,resolved:t.R3ResolvedDependencyType.Token,self:!1,skipSelf:!1};function a(e){n.resolved=t.R3ResolvedDependencyType.Token,n.token=e}if(Array.isArray(e)){if(0===e.length)throw new Error("Dependency array must have arguments.");for(let r=0;r<e.length;r++){const i=e[r];if(void 0!==i)if(i instanceof w||"Optional"===i.__proto__.ngMetadataName)n.optional=!0;else if(i instanceof S||"SkipSelf"===i.__proto__.ngMetadataName)n.skipSelf=!0;else if(i instanceof O||"Self"===i.__proto__.ngMetadataName)n.self=!0;else if(i instanceof I||"Host"===i.__proto__.ngMetadataName)n.host=!0;else if(i instanceof T)n.token=i.token;else if(i instanceof N){if(void 0===i.attributeName)throw new Error("Attribute name must be defined.");n.token=i.attributeName,n.resolved=t.R3ResolvedDependencyType.Attribute}else i===Xs?(n.token=i,n.resolved=t.R3ResolvedDependencyType.ChangeDetectorRef):a(i)}}else a(e);return n}(e,t))}function pu(t,e){let n=null;t.hasOwnProperty(M)||Object.defineProperty(t,M,{get:()=>{if(null===n){const a=e||{providedIn:null},r=mu(a)||vu(a)||yu(a)||xu(a),i={name:t.name,type:t,typeArgumentCount:0,providedIn:a.providedIn,ctorDeps:hu(t),userDeps:void 0};if((mu(a)||vu(a))&&void 0!==a.deps&&(i.userDeps=gu(a.deps)),r)if(mu(a))i.useClass=a.useClass;else if(yu(a))i.useValue=a.useValue;else if(vu(a))i.useFactory=a.useFactory;else{if(!xu(a))throw new Error("Unreachable state.");i.useExisting=a.useExisting}else i.useClass=t;n=W().compileInjectable(ct,`ng:///${t.name}/ngInjectableDef.js`,i)}return n}})}const bu=R({provide:String,useValue:R});function mu(t){return void 0!==t.useClass}function yu(t){return bu in t}function vu(t){return void 0!==t.useFactory}function xu(t){return void 0!==t.useExisting}const _u=R({provide:String,useValue:R}),Tu=[];function wu(t,e){if(!e){const e=(new ou).parameters(t);return()=>new t(...ut(e))}if(_u in e){const t=e;return()=>t.useValue}if(e.useExisting){const t=e;return()=>rt(t.useExisting)}if(e.useFactory){const t=e;return()=>t.useFactory(...ut(t.deps||Tu))}if(e.useClass){const n=e;let a=e.deps;if(!a){const e=new ou;a=e.parameters(t)}return()=>new n.useClass(...ut(a))}{let n=e.deps;if(!n){const e=new ou;n=e.parameters(t)}return()=>new t(...ut(n))}}const Ou=y("Injectable",void 0,void 0,void 0,(t,e)=>Iu(t,e)),Su=pu,Iu=function(t,e){e&&void 0!==e.providedIn&&!D(t)&&(t.ngInjectableDef=k({token:t,providedIn:e.providedIn,factory:wu(t,e)}))},Nu=new K("The presence of this token marks an injector as being the root injector."),Cu={},Ru={},Au=[];let ku=void 0;function Eu(){return void 0===ku&&(ku=new ot),ku}function Lu(t,e=null,n=null,a){return e=e||Eu(),new Du(t,n,e,a)}class Du{constructor(t,e,n,a=null){this.parent=n,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this._destroyed=!1;const r=[];bt([t],t=>this.processInjectorType(t,[],r)),e&&bt(e,n=>this.processProvider(n,t,e)),this.records.set($,qu(void 0,this)),this.isRootInjector=this.records.has(Nu),this.injectorDefTypes.forEach(t=>this.get(t)),this.source=a||("object"==typeof t?null:j(t))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(t=>t.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(t,e=J,n=C.Default){this.assertNotDestroyed();const a=et(this);try{if(!(n&C.SkipSelf)){let e=this.records.get(t);if(void 0===e){const n=("function"==typeof(r=t)||"object"==typeof r&&r instanceof K)&&D(t);n&&this.injectableDefInScope(n)&&(e=qu(Pu(t),Cu),this.records.set(t,e))}if(void 0!==e)return this.hydrate(t,e)}return(n&C.Self?Eu():this.parent).get(t,n&C.Optional?null:e)}catch(i){if("NullInjectorError"===i.name){if((i.ngTempTokenPath=i.ngTempTokenPath||[]).unshift(j(t)),a)throw i;return lt(i,t,"R3InjectorError",this.source)}throw i}finally{et(a)}var r}toString(){const t=[];return this.records.forEach((e,n)=>t.push(j(n))),`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(t,e,n){if(!(t=G(t)))return!1;let a=P(t);const r=null==a&&t.ngModule||void 0,i=void 0===r?t:r,s=-1!==n.indexOf(i);if(void 0!==r&&(a=P(r)),null==a)return!1;if(this.injectorDefTypes.add(i),this.records.set(i,qu(a.factory,Cu)),null!=a.imports&&!s){let t;n.push(i);try{bt(a.imports,a=>{this.processInjectorType(a,e,n)&&(void 0===t&&(t=[]),t.push(a))})}finally{}if(void 0!==t)for(let e=0;e<t.length;e++){const{ngModule:n,providers:a}=t[e];bt(a,t=>this.processProvider(t,n,a||Au))}}const u=a.providers;if(null!=u&&!s){const e=t;bt(u,t=>this.processProvider(t,e,u))}return void 0!==r&&void 0!==t.providers}processProvider(t,e,n){let a=Fu(t=G(t))?t:G(t&&t.provide);const r=function(t,e,n){let a=Mu(t,e,n);return ju(t)?qu(void 0,t.useValue):qu(a,Cu)}(t,e,n);if(Fu(t)||!0!==t.multi){const t=this.records.get(a);t&&void 0!==t.multi&&zr()}else{let e=this.records.get(a);e?void 0===e.multi&&zr():(e=qu(void 0,Cu,!0),e.factory=()=>ut(e.multi),this.records.set(a,e)),a=t,e.multi.push(t)}this.records.set(a,r)}hydrate(t,e){var n;return e.value===Ru?function(t){throw new Error("Cannot instantiate cyclic dependency! "+t)}(j(t)):e.value===Cu&&(e.value=Ru,e.value=e.factory()),"object"==typeof e.value&&e.value&&null!==(n=e.value)&&"object"==typeof n&&"function"==typeof n.ngOnDestroy&&this.onDestroy.add(e.value),e.value}injectableDefInScope(t){return!!t.providedIn&&("string"==typeof t.providedIn?"any"===t.providedIn||"root"===t.providedIn&&this.isRootInjector:this.injectorDefTypes.has(t.providedIn))}}function Pu(t){const e=D(t);if(null!==e)return e.factory;const n=P(t);if(null!==n)return n.factory;if(t instanceof K)throw new Error(`Token ${j(t)} is missing an ngInjectableDef definition.`);if(t instanceof Function)return function(t){const e=t.length;if(e>0){const n=new Array(e).fill("?");throw new Error(`Can't resolve all parameters for ${j(t)}: (${n.join(", ")}).`)}const n=(a=t)&&a[M]?(console.warn(`DEPRECATED: DI is instantiating a token "${a.name}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in v10. Please add @Injectable() to the "${a.name}" class.`),a[M]):null;var a;return null!==n?()=>n.factory(t):()=>new t}(t);throw new Error("unreachable")}function Mu(t,e,n){let a=void 0;if(Fu(t))return Pu(G(t));if(ju(t))a=()=>G(t.useValue);else if((r=t)&&r.useExisting)a=()=>rt(G(t.useExisting));else if(function(t){return!(!t||!t.useFactory)}(t))a=()=>t.useFactory(...ut(t.deps||[]));else{const r=G(t&&(t.useClass||t.provide));if(r||function(t,e,n){let a="";throw t&&e&&(a=` - only instances of Provider and Type are allowed, got: [${e.map(t=>t==n?"?"+n+"?":"...").join(", ")}]`),new Error(`Invalid provider for the NgModule '${j(t)}'`+a)}(e,n,t),!function(t){return!!t.deps}(t))return Pu(r);a=()=>new r(...ut(t.deps))}var r;return a}function qu(t,e,n=!1){return{factory:t,value:e,multi:n?[]:void 0}}function ju(t){return null!==t&&"object"==typeof t&&Q in t}function Fu(t){return"function"==typeof t}function Vu(t,e,n){return Lu({name:n},e,t,n)}const Gu=function(t,e,n){return new Wu(t,e,n)};let Bu=(()=>{class t{static create(t,e){return Array.isArray(t)?Gu(t,e,""):Gu(t.providers,t.parent,t.name||"")}}return t.THROW_IF_NOT_FOUND=J,t.NULL=new ot,t.ngInjectableDef=k({token:t,providedIn:"any",factory:()=>rt($)}),t.__NG_ELEMENT_ID__=-1,t})();const zu=function(t){return t},Yu=[],Hu=zu,Uu=function(){return Array.prototype.slice.call(arguments)};class Wu{constructor(t,e=Bu.NULL,n=null){this.parent=e,this.source=n;const a=this._records=new Map;a.set(Bu,{token:Bu,fn:zu,deps:Yu,value:this,useNew:!1}),a.set($,{token:$,fn:zu,deps:Yu,value:this,useNew:!1}),function t(e,n){if(n)if((n=G(n))instanceof Array)for(let a=0;a<n.length;a++)t(e,n[a]);else{if("function"==typeof n)throw $u("Function/Class not supported",n);if(!n||"object"!=typeof n||!n.provide)throw $u("Unexpected provider",n);{let t=G(n.provide);const a=function(t){const e=function(t){let e=Yu;const n=t.deps;if(n&&n.length){e=[];for(let t=0;t<n.length;t++){let a=6,r=G(n[t]);if(r instanceof Array)for(let t=0,e=r;t<e.length;t++){const n=e[t];n instanceof w||n==w?a|=1:n instanceof S||n==S?a&=-3:n instanceof O||n==O?a&=-5:r=n instanceof T?n.token:G(n)}e.push({token:r,options:a})}}else if(t.useExisting)e=[{token:G(t.useExisting),options:6}];else if(!n&&!(Q in t))throw $u("'deps' required",t);return e}(t);let n=zu,a=Yu,r=!1,i=G(t.provide);if(Q in t)a=t.useValue;else if(t.useFactory)n=t.useFactory;else if(t.useExisting);else if(t.useClass)r=!0,n=G(t.useClass);else{if("function"!=typeof i)throw $u("StaticProvider does not have [useValue|useFactory|useExisting|useClass] or [provide] is not newable",t);r=!0,n=i}return{deps:e,fn:n,useNew:r,value:a}}(n);if(!0===n.multi){let a=e.get(t);if(a){if(a.fn!==Uu)throw Ku(t)}else e.set(t,a={token:n.provide,deps:[],useNew:!1,fn:Uu,value:Yu});t=n,a.deps.push({token:t,options:6})}const r=e.get(t);if(r&&r.fn==Uu)throw Ku(t);e.set(t,a)}}}(a,t)}get(t,e,n=C.Default){const a=this._records.get(t);try{return function t(e,n,a,r,i,s){try{return function(e,n,a,r,i,s){let u;if(!n||s&C.SkipSelf)s&C.Self||(u=r.get(e,i,C.Default));else{if(u=n.value,u==Hu)throw Error("ɵCircular dependency");if(u===Yu){n.value=Hu;let e=void 0,i=n.useNew,s=n.fn,o=n.deps,l=Yu;if(o.length){l=[];for(let e=0;e<o.length;e++){const n=o[e],i=n.options,s=2&i?a.get(n.token):void 0;l.push(t(n.token,s,a,s||4&i?r:Bu.NULL,1&i?null:Bu.THROW_IF_NOT_FOUND,C.Default))}}n.value=u=i?new s(...l):s.apply(e,l)}}return u}(e,n,a,r,i,s)}catch(u){throw u instanceof Error||(u=new Error(u)),(u.ngTempTokenPath=u.ngTempTokenPath||[]).unshift(e),n&&n.value==Hu&&(n.value=Yu),u}}(t,a,this._records,this.parent,e,n)}catch(r){return lt(r,t,"StaticInjectorError",this.source)}}toString(){const t=[];return this._records.forEach((e,n)=>t.push(j(n))),`StaticInjector[${t.join(", ")}]`}}function Ku(t){return $u("Cannot mix multi providers and regular providers",t)}function $u(t,e){return new Error(dt(t,e,"StaticInjectorError"))}function Ju(t){return t.length>1?" ("+function(t){const e=[];for(let n=0;n<t.length;++n){if(e.indexOf(t[n])>-1)return e.push(t[n]),e;e.push(t[n])}return e}(t.slice().reverse()).map(t=>j(t.token)).join(" -> ")+")":""}function Zu(t,e,n,a){const r=[e],i=n(r),s=a?function(t,e){const n=`${t} caused by: ${e instanceof Error?e.message:e}`,a=Error(n);return a.ngOriginalError=e,a}(i,a):Error(i);return s.addKey=Qu,s.keys=r,s.injectors=[t],s.constructResolvingMessage=n,s.ngOriginalError=a,s}function Qu(t,e){this.injectors.push(t),this.keys.push(e),this.message=this.constructResolvingMessage(this.keys)}function Xu(t,e){const n=[];for(let a=0,r=e.length;a<r;a++){const t=e[a];n.push(t&&0!=t.length?t.map(j).join(" "):"?")}return Error("Cannot resolve all parameters for '"+j(t)+"'("+n.join(", ")+"). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '"+j(t)+"' is decorated with Injectable.")}class to{constructor(t,e){if(this.token=t,this.id=e,!t)throw new Error("Token must be defined!");this.displayName=j(this.token)}static get(t){return no.get(G(t))}static get numberOfKeys(){return no.numberOfKeys}}class eo{constructor(){this._allKeys=new Map}get(t){if(t instanceof to)return t;if(this._allKeys.has(t))return this._allKeys.get(t);const e=new to(t,to.numberOfKeys);return this._allKeys.set(t,e),e}get numberOfKeys(){return this._allKeys.size}}const no=new eo;class ao{constructor(t){this.reflectionCapabilities=t}updateCapabilities(t){this.reflectionCapabilities=t}factory(t){return this.reflectionCapabilities.factory(t)}parameters(t){return this.reflectionCapabilities.parameters(t)}annotations(t){return this.reflectionCapabilities.annotations(t)}propMetadata(t){return this.reflectionCapabilities.propMetadata(t)}hasLifecycleHook(t,e){return this.reflectionCapabilities.hasLifecycleHook(t,e)}getter(t){return this.reflectionCapabilities.getter(t)}setter(t){return this.reflectionCapabilities.setter(t)}method(t){return this.reflectionCapabilities.method(t)}importUri(t){return this.reflectionCapabilities.importUri(t)}resourceUri(t){return this.reflectionCapabilities.resourceUri(t)}resolveIdentifier(t,e,n,a){return this.reflectionCapabilities.resolveIdentifier(t,e,n,a)}resolveEnum(t,e){return this.reflectionCapabilities.resolveEnum(t,e)}}const ro=new ao(new ou);class io{constructor(t,e,n){this.key=t,this.optional=e,this.visibility=n}static fromKey(t){return new io(t,!1,null)}}const so=[];class uo{constructor(t,e,n){this.key=t,this.resolvedFactories=e,this.multiProvider=n,this.resolvedFactory=this.resolvedFactories[0]}}class oo{constructor(t,e){this.factory=t,this.dependencies=e}}function lo(t){let e,n;if(t.useClass){const a=G(t.useClass);e=ro.factory(a),n=ho(a)}else t.useExisting?(e=t=>t,n=[io.fromKey(to.get(t.useExisting))]):t.useFactory?(e=t.useFactory,n=function(t,e){if(e){const n=e.map(t=>[t]);return e.map(e=>go(t,e,n))}return ho(t)}(t.useFactory,t.deps)):(e=()=>t.useValue,n=so);return new oo(e,n)}function co(t){return new uo(to.get(t.provide),[lo(t)],t.multi||!1)}function fo(t){const e=function(t,e){for(let n=0;n<t.length;n++){const a=t[n],r=e.get(a.key.id);if(r){if(a.multiProvider!==r.multiProvider)throw Error(`Cannot mix multi providers and regular providers, got: ${r} ${a}`);if(a.multiProvider)for(let t=0;t<a.resolvedFactories.length;t++)r.resolvedFactories.push(a.resolvedFactories[t]);else e.set(a.key.id,a)}else{let t;t=a.multiProvider?new uo(a.key,a.resolvedFactories.slice(),a.multiProvider):a,e.set(a.key.id,t)}}return e}(function t(e,n){return e.forEach(e=>{if(e instanceof nu)n.push({provide:e,useClass:e});else if(e&&"object"==typeof e&&void 0!==e.provide)n.push(e);else{if(!(e instanceof Array))throw Error("Invalid provider - only instances of Provider and Type are allowed, got: "+e);t(e,n)}}),n}(t,[]).map(co),new Map);return Array.from(e.values())}function ho(t){const e=ro.parameters(t);if(!e)return[];if(e.some(t=>null==t))throw Xu(t,e);return e.map(n=>go(t,n,e))}function go(t,e,n){let a=null,r=!1;if(!Array.isArray(e))return po(e instanceof T?e.token:e,r,null);let i=null;for(let s=0;s<e.length;++s){const t=e[s];t instanceof nu?a=t:t instanceof T?a=t.token:t instanceof w?r=!0:t instanceof O||t instanceof S?i=t:t instanceof K&&(a=t)}if(a=G(a),null!=a)return po(a,r,i);throw Xu(t,n)}function po(t,e,n){return new io(to.get(t),e,n)}const bo=new Object;class mo{static resolve(t){return fo(t)}static resolveAndCreate(t,e){const n=mo.resolve(t);return mo.fromResolvedProviders(n,e)}static fromResolvedProviders(t,e){return new yo(t,e)}}let yo=(()=>{class t{constructor(t,e){this._constructionCounter=0,this._providers=t,this.parent=e||null;const n=t.length;this.keyIds=new Array(n),this.objs=new Array(n);for(let a=0;a<n;a++)this.keyIds[a]=t[a].key.id,this.objs[a]=bo}get(t,e=J){return this._getByKey(to.get(t),null,e)}resolveAndCreateChild(t){const e=mo.resolve(t);return this.createChildFromResolved(e)}createChildFromResolved(e){const n=new t(e);return n.parent=this,n}resolveAndInstantiate(t){return this.instantiateResolved(mo.resolve([t])[0])}instantiateResolved(t){return this._instantiateProvider(t)}getProviderAtIndex(t){if(t<0||t>=this._providers.length)throw function(t){return Error(`Index ${t} is out-of-bounds.`)}(t);return this._providers[t]}_new(t){if(this._constructionCounter++>this._getMaxNumberOfObjects())throw Zu(this,t.key,(function(t){return"Cannot instantiate cyclic dependency!"+Ju(t)}));return this._instantiateProvider(t)}_getMaxNumberOfObjects(){return this.objs.length}_instantiateProvider(t){if(t.multiProvider){const e=new Array(t.resolvedFactories.length);for(let n=0;n<t.resolvedFactories.length;++n)e[n]=this._instantiate(t,t.resolvedFactories[n]);return e}return this._instantiate(t,t.resolvedFactories[0])}_instantiate(t,e){const n=e.factory;let a,r;try{a=e.dependencies.map(t=>this._getByReflectiveDependency(t))}catch(s){throw s.addKey&&s.addKey(this,t.key),s}try{r=n(...a)}catch(s){throw Zu(this,t.key,(function(t){const e=j(t[0].token);return`${i.message}: Error during instantiation of ${e}!${Ju(t)}.`}),i=s)}var i;return r}_getByReflectiveDependency(t){return this._getByKey(t.key,t.visibility,t.optional?null:J)}_getByKey(e,n,a){return e===t.INJECTOR_KEY?this:n instanceof O?this._getByKeySelf(e,a):this._getByKeyDefault(e,a,n)}_getObjByKeyId(t){for(let e=0;e<this.keyIds.length;e++)if(this.keyIds[e]===t)return this.objs[e]===bo&&(this.objs[e]=this._new(this._providers[e])),this.objs[e];return bo}_throwOrNull(t,e){if(e!==J)return e;throw function(t,e){return Zu(t,e,(function(t){return`No provider for ${j(t[0].token)}!${Ju(t)}`}))}(this,t)}_getByKeySelf(t,e){const n=this._getObjByKeyId(t.id);return n!==bo?n:this._throwOrNull(t,e)}_getByKeyDefault(e,n,a){let r;for(r=a instanceof S?this.parent:this;r instanceof t;){const t=r,n=t._getObjByKeyId(e.id);if(n!==bo)return n;r=t.parent}return null!==r?r.get(e.token,n):this._throwOrNull(e,n)}get displayName(){return`ReflectiveInjector(providers: [${function(t,e){const n=new Array(t._providers.length);for(let a=0;a<t._providers.length;++a)n[a]=e(t.getProviderAtIndex(a));return n}(this,t=>' "'+t.key.displayName+'" ').join(", ")}])`}toString(){return this.displayName}}return t.INJECTOR_KEY=to.get(Bu),t})();const vo=new K("AnalyzeForEntryComponents");class xo{}const _o=_("ContentChildren",(t,e={})=>Object.assign({selector:t,first:!1,isViewQuery:!1,descendants:!1},e),xo),To=_("ContentChild",(t,e={})=>Object.assign({selector:t,first:!0,isViewQuery:!1,descendants:!0},e),xo),wo=_("ViewChildren",(t,e={})=>Object.assign({selector:t,first:!1,isViewQuery:!0,descendants:!0},e),xo),Oo=_("ViewChild",(t,e)=>Object.assign({selector:t,first:!0,isViewQuery:!0,descendants:!0},e),xo);function So(t){const e=[],n=new Map;function a(e){let a=n.get(e);if(!a){const r=t(e);n.set(e,a=r.then(Ao))}return a}return Io.forEach((t,n)=>{const r=[];t.templateUrl&&r.push(a(t.templateUrl).then(e=>{t.template=e}));const i=t.styleUrls,s=t.styles||(t.styles=[]),u=t.styles.length;i&&i.forEach((e,n)=>{s.push(""),r.push(a(e).then(a=>{s[u+n]=a,i.splice(i.indexOf(e),1),0==i.length&&(t.styleUrls=void 0)}))});const o=Promise.all(r).then(()=>function(t){No.delete(t)}(n));e.push(o)}),Ro(),Promise.all(e).then(()=>{})}let Io=new Map;const No=new Set;function Co(t){return!!(t.templateUrl&&!t.hasOwnProperty("template")||t.styleUrls&&t.styleUrls.length)}function Ro(){const t=Io;return Io=new Map,t}function Ao(t){return"string"==typeof t?t:t.text()}function ko(t){const e=Ae(),n=e[1];n.firstTemplatePass&&(function(t,e,n){const a=t.expandoInstructions,r=a.length;r>=2&&a[r-2]===e.hostBindings?a[r-1]=a[r-1]+n:a.push(e.hostBindings,n)}(n,Se,t),function(t,e,n){for(let a=0;a<n;a++)e.push(ci),t.blueprint.push(ci),t.data.push(null)}(n,e,t))}let Eo=null;function Lo(){if(!Eo){const t=U.Symbol;if(t&&t.iterator)Eo=t.iterator;else{const t=Object.getOwnPropertyNames(Map.prototype);for(let e=0;e<t.length;++e){const n=t[e];"entries"!==n&&"size"!==n&&Map.prototype[n]===Map.prototype.entries&&(Eo=n)}}}return Eo}function Do(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}function Po(t,e){const n=qo(t),a=qo(e);if(n&&a)return function(t,e,n){const a=t[Lo()](),r=e[Lo()]();for(;;){const t=a.next(),e=r.next();if(t.done&&e.done)return!0;if(t.done||e.done)return!1;if(!n(t.value,e.value))return!1}}(t,e,Po);{const r=t&&("object"==typeof t||"function"==typeof t),i=e&&("object"==typeof e||"function"==typeof e);return!(n||!r||a||!i)||Do(t,e)}}class Mo{constructor(t){this.wrapped=t}static wrap(t){return new Mo(t)}static unwrap(t){return Mo.isWrapped(t)?t.wrapped:t}static isWrapped(t){return t instanceof Mo}}function qo(t){return!!jo(t)&&(Array.isArray(t)||!(t instanceof Map)&&Lo()in t)}function jo(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function Fo(t,e,n){return t[e]=n}function Vo(t,e){return t[e]}function Go(t,e,n){return!!yn(t[e],n)&&(t[e]=n,!0)}function Bo(t,e,n,a){const r=Go(t,e,n);return Go(t,e+1,a)||r}function zo(t,e,n,a,r){const i=Bo(t,e,n,a);return Go(t,e+2,r)||i}function Yo(t,e,n,a,r,i){const s=Bo(t,e,n,a);return Bo(t,e+2,r,i)||s}function Ho(t,e,n){const a=on(),r=Uo(Ae(),e);return r!==ci&&Yi(a,t,r,n),Ho}function Uo(t,e){const n=t[7]++;return cs(t),Go(t,n,e)?e:ci}function Wo(t,e,n,a){const r=on(),i=Ae(),s=Uo(i,e);return s!==ci&&es(r,t,s,i,n,a),Wo}function Ko(t,e){let n=!1;const a=t[1].data;let r=t[7];if(null==a[r]){for(let t=2;t<e.length;t+=2)a[r++]=e[t];r=t[7]}for(let s=1;s<e.length;s+=2)n=Go(t,r++,e[s])||n;if(t[7]=r,cs(t,e[0],e[e.length-1]),!n)return ci;let i=e[0];for(let s=1;s<e.length;s+=2)i+=vn(e[s])+e[s+1];return i}function $o(t,e,n,a){const r=Go(t,t[7]++,n);return cs(t,e,a),r?e+vn(n)+a:ci}function Jo(t,e,n,a,r,i){const s=t[7],u=Bo(t,s,n,r);return t[7]+=2,cs(t,e,i)&&(t[1].data[s]=a),u?e+vn(n)+a+vn(r)+i:ci}function Zo(t,e,n,a,r,i,s,u){const o=t[7],l=zo(t,o,n,r,s);if(t[7]+=3,cs(t,e,u)){const e=t[1].data;e[o]=a,e[o+1]=i}return l?e+vn(n)+a+vn(r)+i+vn(s)+u:ci}function Qo(t,e,n,a,r,i,s,u,o,l){const d=t[7],c=Yo(t,d,n,r,s,o);if(t[7]+=4,cs(t,e,l)){const e=t[1].data;e[d]=a,e[d+1]=i,e[d+2]=u}return c?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l:ci}function Xo(t,e,n,a,r,i,s,u,o,l,d,c){const f=t[7];let h=Yo(t,f,n,r,s,o);if(h=Go(t,f+4,d)||h,t[7]+=5,cs(t,e,c)){const e=t[1].data;e[f]=a,e[f+1]=i,e[f+2]=u,e[f+3]=l}return h?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l+vn(d)+c:ci}function tl(t,e,n,a,r,i,s,u,o,l,d,c,f,h){const g=t[7];let p=Yo(t,g,n,r,s,o);if(p=Bo(t,g+4,d,f)||p,t[7]+=6,cs(t,e,h)){const e=t[1].data;e[g]=a,e[g+1]=i,e[g+2]=u,e[g+3]=l,e[g+4]=c}return p?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l+vn(d)+c+vn(f)+h:ci}function el(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p){const b=t[7];let m=Yo(t,b,n,r,s,o);if(m=zo(t,b+4,d,f,g)||m,t[7]+=7,cs(t,e,p)){const e=t[1].data;e[b]=a,e[b+1]=i,e[b+2]=u,e[b+3]=l,e[b+4]=c,e[b+5]=h}return m?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l+vn(d)+c+vn(f)+h+vn(g)+p:ci}function nl(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m){const y=t[7];let v=Yo(t,y,n,r,s,o);if(v=Yo(t,y+4,d,f,g,b)||v,t[7]+=8,cs(t,e,m)){const e=t[1].data;e[y]=a,e[y+1]=i,e[y+2]=u,e[y+3]=l,e[y+4]=c,e[y+5]=h,e[y+6]=p}return v?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l+vn(d)+c+vn(f)+h+vn(g)+p+vn(b)+m:ci}function al(t,e,n,a,r,i){const s=on(),u=Ae(),o=$o(u,e,n,a);return o!==ci&&es(s,t,o,u,r,i),al}function rl(t,e,n,a,r,i,s,u){const o=on(),l=Ae(),d=Jo(l,e,n,a,r,i);return d!==ci&&es(o,t,d,l,s,u),rl}function il(t,e,n,a,r,i,s,u,o,l){const d=on(),c=Ae(),f=Zo(c,e,n,a,r,i,s,u);return f!==ci&&es(d,t,f,c,o,l),il}function sl(t,e,n,a,r,i,s,u,o,l,d,c){const f=on(),h=Ae(),g=Qo(h,e,n,a,r,i,s,u,o,l);return g!==ci&&es(f,t,g,h,d,c),sl}function ul(t,e,n,a,r,i,s,u,o,l,d,c,f,h){const g=on(),p=Ae(),b=Xo(p,e,n,a,r,i,s,u,o,l,d,c);return b!==ci&&es(g,t,b,p,f,h),ul}function ol(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p){const b=on(),m=Ae(),y=tl(m,e,n,a,r,i,s,u,o,l,d,c,f,h);return y!==ci&&es(b,t,y,m,g,p),ol}function ll(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m){const y=on(),v=Ae(),x=el(v,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p);return x!==ci&&es(y,t,x,v,b,m),ll}function dl(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m,y,v){const x=on(),_=Ae(),T=nl(_,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m);return T!==ci&&es(x,t,T,_,y,v),dl}function cl(t,e,n,a){const r=on(),i=Ae(),s=Ko(i,e);return s!==ci&&es(r,t,s,i,n,a),cl}function fl(t){us(Mr(t),t)}function hl(t){!function(t,e){const n=0===t.flags;if(t.flags|=1,n&&t.clean==Si){let e;t.clean=new Promise(t=>e=t),t.scheduler(()=>{if(1&t.flags&&(t.flags&=-2,ss(t)),2&t.flags){t.flags&=-3;const e=t.playerHandler;e&&e.flushPlayers()}t.clean=Si,e(null)})}}(is(Mr(t))[9])}function gl(t){const e=Ae(),n=yl(e,t,null,null);e[1].firstTemplatePass&&(n.tViews=[]),He()}function pl(t,e,n,a,r,i,s,u){const o=Ae(),l=o[1],d=yl(o,t,r||null,i||null);if(l.firstTemplatePass){Hi(l,o,d,s||null);const t=d.tViews=Fi(-1,e,n,a,l.directiveRegistry,l.pipeRegistry,null,null);null!==l.queries&&(l.queries.template(l,d),t.queries=l.queries.embeddedTView(d))}qi(l,o,d,u),qr(be(d,o),o),re(l,d),He()}function bl(t){const e=Ae(),n=e[1];Be(ve(n.data,t),!0),e[t+19][2]=0,ie(e,n,$e(),void 0)}function ml(){let t=Ge();Ye()?He():(t=t.parent,Be(t,!1));const e=Ae()[t.index],n=e[2];for(;n<e.length-9;)Rs(e,n)}function yl(t,e,n,a){const r=e+19,i=t[r]=t[12].createComment(""),s=Ai(t[1],t[6],e,0,n,a),u=t[r]=ns(i,t,i,s);return Ms(i,s,t),rs(t,u),s}function vl(t,e){const n=Ae(),a=n[1],r=t+19;r>=a.data.length&&(a.data[r]=null,a.blueprint[r]=null),n[r]=e}function xl(t){return ve(We,t)}function _l(t){return ve(Ae(),t)}function Tl(t,e=C.Default){t=G(t);const n=Ae();return null==n?rt(t,e):_a(Ge(),n,t,e)}function wl(t){return xa(Ge(),t)}function Ol(){var t,e;Ae()[1].firstTemplatePass&&(t=Ge(),e=jl(),Nn(Vl(t),e),Nn(Fl(t),e))}function Sl(t){bn(t)}function Il(t,e,n){Nl(on(),t,e,n)}function Nl(t,e,n,a){Rl(t,Ae()[7]++,e,function(t,e){if(t===ci)return t;let n=null;return null!==t&&(n=e?vn(t)+e:t),n}(n,a),!1,Bl())}function Cl(t,e){const n=Ae()[7]++;Rl(on(),n,t,e,!0,Bl())}function Rl(t,e,n,a,r,i){const s=Ae(),u=ye(t,s),o=be(u,s);let l=!1;if(a!==ci)if(r)l=Qr(Vl(u),s,o,n,e,a,i,!1);else{const t=mn();l=Xr(Fl(u),s,o,n,e,a,t,i,!1)}return l}function Al(t){const e=on(),n=Ae(),a=ye(e,n),r=Fl(a),i=jl(),s=n[7]++;!i&&$n(a)&&t!==ci&&(Dl(r,n,a,s,t,!1),t=ci),Ll(e,r,s,t,!1,Bl())}function kl(t){El(on(),t)}function El(t,e){const n=Ae(),a=ye(t,n),r=Vl(a),i=jl(),s=n[7]++;!i&&Kn(a)&&e!==ci&&(Dl(r,n,a,s,e,!0),e=ci),Ll(t,r,s,e,!0,Bl())}function Ll(t,e,n,a,r,i){pi();const s=Ae();let u=!1;if(a!==ci){const o=be(ye(t,s),s),l=s[n];u=Gn(l,a);const d=function(t,e,n){const a=Array.isArray(t)?t:[null];a[0]=e||null;for(let u=1;u<a.length;u+=2)Zn(a,u,null);let r,i=null,s=!1;if("string"==typeof e?e.length&&(i=e.split(/\s+/),s=!0):(i=e?Object.keys(e):null,r=e),i)for(let u=0;u<i.length;u++){const t=i[u];vi(a,n?Yn(t):t,!!s||r[t],!0)}return a}(l,a,!r);r?Qr(e,s,o,null,n,d,i,u):Xr(e,s,o,null,n,d,mn(),i,u)}return u}function Dl(t,e,n,a,r,i){e[a]!==r&&((r||jn(t))&&ys(e,n.inputs[i?"class":"style"],function(t,e,n){let a=e;var r;return t.length>0&&(a=n?zn(t,((r=e)&&"string"!=typeof r&&(r=Object.keys(r).join(" ")),r||"")):zn(t,function(t){let e="";if(t){const n=Object.keys(t);for(let a=0;a<n.length;a++){const r=n[a];e=zn(e,`${r}:${t[r]}`,";")}}return e}(e),";")),a}(Wn(t),r,i)),e[a]=r)}function Pl(){const t=on(),e=Ae(),n=ye(t,e),a=function(t,e){return 3===t.type?e[12]:null}(n,e),r=be(n,e),i=jl(),s=mn();(function(t,e,n,a,r,i,s){const u=n?Fn(n):!!a&&Fn(a),o=qn(n,i),l=qn(a,i);Zr.length&&(o||l)&&ei();const d=fe(r,u),c=ii(t,r,e,n,o,d.classesBitMask,li,null),f=ii(t,r,e,a,l,d.stylesBitMask,oi,s);c&&f?(he(),u&&function(t){le.delete(t)}(r)):u&&function(t,e){le.set(t,e)}(r,d)})(a,e,Vl(n),Fl(n),r,i,s),bn(null)}function Ml(t,e,n){let a=!1,r=Hn(t.styles),i=Hn(t.classes),s=-1;for(let u=n;u<e.length;u++){const t=e[u];"number"==typeof t?s=t:1==s?(i=i||[""],vi(i,t,!0),a=!0):2==s&&(r=r||[""],vi(r,t,e[++u]),a=!0)}return i&&i.length>1&&(t.classes||(t.classes=i),ql(t.classes,xi(i,!0))),r&&r.length>1&&(t.styles||(t.styles=r),ql(t.styles,xi(r,!1))),a}function ql(t,e){Hn(t)[0]=e}function jl(){return De+Pe}function Fl(t){return Gl(t,!1)}function Vl(t){return Gl(t,!0)}function Gl(t,e){let n=e?t.classes:t.styles;return Un(n)||(n=[n||[""],0,0,1,0,"--MAP--"],e?t.classes=n:t.styles=n),n}function Bl(){return Me>0}function zl(t,e,n,a){const r=Ae(),i=r[1],s=r[t+19]=Ci(e),u=r[12],o=Ai(i,r[6],t,3,e,n||null);if(null!=n){const t=na(s,n);i.firstTemplatePass&&Ml(o,n,t)}if(xs(u,s,o),Ms(s,o,r),0===de&&qr(s,r),de++,i.firstTemplatePass){Hi(i,r,o,a||null);const t=hs(o);t&&t.hasOwnProperty("class")&&(o.flags|=8),t&&t.hasOwnProperty("style")&&(o.flags|=16),null!==i.queries&&i.queries.elementStart(i,o)}qi(i,r,o),Mi(i,o,r)}function Yl(){let t=Ge();Ye()?He():(t=t.parent,Be(t,!1));const e=t,n=Ae(),a=n[1];re(a,t),de--,a.firstTemplatePass&&null!==a.queries&&Qt(t)&&a.queries.elementEnd(t),Kn(e)&&e.classes&&Wl(e.classes,n,e.inputs.class),$n(e)&&e.styles&&Wl(e.styles,n,e.inputs.style)}function Hl(t,e,n,a){zl(t,e,n,a),Yl()}function Ul(t){const e=on(),n=Ae(),a=n[1],r=ye(e,n);if(3===r.type){const e=be(r,n),i=na(e,t);a.firstTemplatePass&&Ml(r,t,i)&&xs(n[12],e,r)}}function Wl(t,e,n){ys(e,n,Wn(t)||null)}function Kl(t,e,n){const a=Ae(),r=a[1],i=a[t+19]=a[12].createComment(""),s=Ai(r,a[6],t,4,"ng-container",e||null);e&&r.firstTemplatePass&&Ml(s,e,0),Ms(i,s,a),r.firstTemplatePass&&(Hi(r,a,s,n||null),r.queries&&r.queries.elementStart(r,s)),qi(r,a,s),qr(i,a),Mi(r,s,a)}function $l(){let t=Ge();const e=Ae()[1];Ye()?He():(t=t.parent,Be(t,!1)),re(e,t),e.firstTemplatePass&&null!==e.queries&&Qt(t)&&e.queries.elementEnd(t)}function Jl(t,e,n){Kl(t,e,n),$l()}function Zl(t,e,n){const a=Ae(),r=Ge(),i=2===r.type?r.parent:r,s=a[i.index];let u=function(t,e,n){for(let a=e+9;a<t.length;a++){const e=t[a][1].id;if(e===n)return t[a];if(!(e<n))break;Rs(t,a-9)}return null}(s,s[2],t);if(u)Ee=!0,an(u,u[1].node);else{u=Ri(a,function(t,e,n,a){const r=Ae()[1],i=a.tViews;return(t>=i.length||null==i[t])&&(i[t]=Fi(t,null,e,n,r.directiveRegistry,r.pipeRegistry,null,null)),i[t]}(t,e,n,i),null,16,null,null);const s=Ye()?r:r&&r.parent;ki(u[1],s,t,u),an(u,u[1].node)}return s&&(Ue(u)&&Is(u,s,s[2]),s[2]++),Ue(u)?3:2}function Ql(){const t=Ae(),e=t[6];Ue(t)&&(Ii(t),t[2]&=-5),we(t),Ii(t),sn(t[3][3],!0),Be(e,!1)}function Xl(){return Ae()}function td(t){return!!t&&"function"==typeof t.then}function ed(t){return!!t&&"function"==typeof t.subscribe}function nd(t,e,n=!1,a){rd(t,e,n,a)}function ad(t,e,n=!1,a){rd(t,e,n,a,bs)}function rd(t,e,n=!1,a,r){const i=Ae(),s=Ge(),u=i[1],o=u.firstTemplatePass&&(u.cleanup||(u.cleanup=[]));let l=!0;if(3===s.type){const u=be(s,i),d=a?a(u):St,c=d.target||u,f=r?r(s,i):i[12],h=gs(i),g=h.length,p=a?t=>a(ge(t[s.index])).target:s.index;if(ta(f)){let n=null;if(!a&&function(t){return t.directiveEnd>t.directiveStart}(s)&&(n=function(t,e,n){const a=t[1].cleanup;if(null!=a)for(let r=0;r<a.length-1;r+=2){const i=a[r];if(i===e&&a[r+1]===n){const e=t[8],n=a[r+2];return e.length>n?e[n]:null}"string"==typeof i&&(r+=2)}return null}(i,t,s.index)),null!==n)e.__ngNextListenerFn__=n.__ngNextListenerFn__,n.__ngNextListenerFn__=e,l=!1;else{e=sd(s,i,e,!1);const n=f.listen(d.name||c,t,e);h.push(e,n),o&&o.push(t,p,g,g+1)}}else e=sd(s,i,e,!0),c.addEventListener(t,e,n),h.push(e),o&&o.push(t,p,g,n)}void 0===s.outputs&&(s.outputs=Bi(s,1));const d=s.outputs;let c;if(l&&d&&(c=d[t])){const n=c.length;if(n){const a=gs(i);for(let r=0;r<n;r+=3){const n=i[c[r]][c[r+2]].subscribe(e),u=a.length;a.push(e,n),o&&o.push(t,s.index,u,-(u+1))}}}}function id(t,e,n){try{return!1!==e(n)}catch(a){return ms(t,a),!1}}function sd(t,e,n,a){return function r(i){const s=1&t.flags?xe(t.index,e):e;0==(32&e[2])&&is(s);let u=id(e,n,i),o=r.__ngNextListenerFn__;for(;o;)u=id(e,o,i)&&u,o=o.__ngNextListenerFn__;return a&&!1===u&&(i.preventDefault(),i.returnValue=!1),u}}function ud(t=1){return rn(t)}function od(t,e){let n=null;const a=function(t){const e=t.attrs;if(null!=e){const t=e.indexOf(5);if(0==(1&t))return e[t+1]}return null}(t);for(let r=0;r<e.length;r++){const i=e[r];if("*"!==i){if(null===a?$r(t,i,!0):Jr(a,i))return r}else n=r}return n}function ld(t){const e=da(Ae())[6];if(!e.projection){const n=e.projection=new Array(t?t.length:1).fill(null),a=n.slice();let r=e.child;for(;null!==r;){const e=t?od(r,t):0;null!==e&&(a[e]?a[e].projectionNext=r:n[e]=r,a[e]=r),r=r.next}}}let dd=!1;function cd(t){dd=t}function fd(t,e=0,n){const a=Ae(),r=Ai(a[1],a[6],t,1,null,n||null);null===r.projection&&(r.projection=e),He(),dd||Fs(a,r,e,da(a))}function hd(t,e,n){return gd(t,"",e,"",n),hd}function gd(t,e,n,a,r){const i=on(),s=$o(Ae(),e,n,a);return s!==ci&&Yi(i,t,s,r),gd}function pd(t,e,n,a,r,i,s){const u=on(),o=Jo(Ae(),e,n,a,r,i);return o!==ci&&Yi(u,t,o,s),pd}function bd(t,e,n,a,r,i,s,u,o){const l=on(),d=Zo(Ae(),e,n,a,r,i,s,u);return d!==ci&&Yi(l,t,d,o),bd}function md(t,e,n,a,r,i,s,u,o,l,d){const c=on(),f=Qo(Ae(),e,n,a,r,i,s,u,o,l);return f!==ci&&Yi(c,t,f,d),md}function yd(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=on(),g=Xo(Ae(),e,n,a,r,i,s,u,o,l,d,c);return g!==ci&&Yi(h,t,g,f),yd}function vd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g){const p=on(),b=tl(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h);return b!==ci&&Yi(p,t,b,g),vd}function xd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b){const m=on(),y=el(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h,g,p);return y!==ci&&Yi(m,t,y,b),xd}function _d(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m,y){const v=on(),x=nl(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m);return x!==ci&&Yi(v,t,x,y),_d}function Td(t,e,n){const a=on(),r=Ko(Ae(),e);return r!==ci&&Yi(a,t,r,n),Td}function wd(t,e){const n=Ae(),a=n[t+19]=Os(e,n[12]),r=Ai(n[1],n[6],t,3,null,null);He(),Ms(a,r,n)}function Od(t){const e=Ae(),n=on(),a=Uo(e,t);a!==ci&&vs(e,n,vn(a))}function Sd(t){return Id("",t,""),Sd}function Id(t,e,n){const a=on(),r=Ae(),i=$o(r,t,e,n);return i!==ci&&vs(r,a,i),Id}function Nd(t,e,n,a,r){const i=on(),s=Ae(),u=Jo(s,t,e,n,a,r);return u!==ci&&vs(s,i,u),Nd}function Cd(t,e,n,a,r,i,s){const u=on(),o=Ae(),l=Zo(o,t,e,n,a,r,i,s);return l!==ci&&vs(o,u,l),Cd}function Rd(t,e,n,a,r,i,s,u,o){const l=on(),d=Ae(),c=Qo(d,t,e,n,a,r,i,s,u,o);return c!==ci&&vs(d,l,c),Rd}function Ad(t,e,n,a,r,i,s,u,o,l,d){const c=on(),f=Ae(),h=Xo(f,t,e,n,a,r,i,s,u,o,l,d);return h!==ci&&vs(f,c,h),Ad}function kd(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=on(),g=Ae(),p=tl(g,t,e,n,a,r,i,s,u,o,l,d,c,f);return p!==ci&&vs(g,h,p),kd}function Ed(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g){const p=on(),b=Ae(),m=el(b,t,e,n,a,r,i,s,u,o,l,d,c,f,h,g);return m!==ci&&vs(b,p,m),Ed}function Ld(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b){const m=on(),y=Ae(),v=nl(y,t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b);return v!==ci&&vs(y,m,v),Ld}function Dd(t){const e=on(),n=Ae(),a=Ko(n,t);return a!==ci&&vs(n,e,a),Dd}function Pd(t,e,n){const a=$o(Ae(),t,e,n);El(on(),a)}function Md(t,e,n,a,r){const i=Jo(Ae(),t,e,n,a,r);El(on(),i)}function qd(t,e,n,a,r,i,s){const u=Zo(Ae(),t,e,n,a,r,i,s);El(on(),u)}function jd(t,e,n,a,r,i,s,u,o){const l=Qo(Ae(),t,e,n,a,r,i,s,u,o);El(on(),l)}function Fd(t,e,n,a,r,i,s,u,o,l,d){const c=Xo(Ae(),t,e,n,a,r,i,s,u,o,l,d);El(on(),c)}function Vd(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=tl(Ae(),t,e,n,a,r,i,s,u,o,l,d,c,f);El(on(),h)}function Gd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g){const p=el(Ae(),t,e,n,a,r,i,s,u,o,l,d,c,f,h,g);El(on(),p)}function Bd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b){const m=nl(Ae(),t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b);El(on(),m)}function zd(t){const e=Ko(Ae(),t);El(on(),e)}function Yd(t,e,n,a,r){const i=$o(Ae(),e,n,a);return Nl(on(),t,i,r),Yd}function Hd(t,e,n,a,r,i,s){const u=Jo(Ae(),e,n,a,r,i);return Nl(on(),t,u,s),Hd}function Ud(t,e,n,a,r,i,s,u,o){const l=Zo(Ae(),e,n,a,r,i,s,u);return Nl(on(),t,l,o),Ud}function Wd(t,e,n,a,r,i,s,u,o,l,d){const c=Qo(Ae(),e,n,a,r,i,s,u,o,l);return Nl(on(),t,c,d),Wd}function Kd(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=Xo(Ae(),e,n,a,r,i,s,u,o,l,d,c);return Nl(on(),t,h,f),Kd}function $d(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g){const p=tl(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h);return Nl(on(),t,p,g),$d}function Jd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b){const m=el(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h,g,p);return Nl(on(),t,m,b),Jd}function Zd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m,y){const v=nl(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m);return Nl(on(),t,v,y),Zd}function Qd(t,e,n){const a=Ko(Ae(),e);return Nl(on(),t,a,n),Qd}function Xd(t,e,n){const a=on(),r=Uo(Ae(),e);return r!==ci&&Yi(a,t,r,n,!0),Xd}function tc(t,e,n){const a=on(),r=Uo(Ae(),e);return r!==ci&&Yi(a,t,r,n,!0,bs),tc}function ec(t){const e=lc(t);return void 0===e.component&&(e.component=function(t,e){const n=e[1].data[t];return 1&n.flags?e[n.directiveStart]:null}(e.nodeIndex,e.lView)),e.component}function nc(t){return lc(t).lView[9]}function ac(t){let e,n=uc(t).lView;for(;null===n[0]&&(e=la(n));)n=e;return 512&n[2]?null:n[9]}function rc(t){return[...ca(t).components]}function ic(t){const e=uc(t);return new Ca(e.lView[1].data[e.nodeIndex],e.lView)}function sc(t){const e=uc(t);return void 0===e.directives&&(e.directives=Gr(e.nodeIndex,e.lView,!1)),e.directives||[]}function uc(t,e=!0){const n=Dr(t);if(!n&&e)throw new Error("Invalid ng target");return n}function oc(t){return Dr(t).native}function lc(t){if(!(t instanceof Node))throw new Error("Expecting instance of DOM Node");return uc(t)}function dc(t){return"boolean"==typeof t.useCapture}function cc(t){const e=lc(t).lView,n=e[8],a=e[1].cleanup,r=[];if(a&&n)for(let i=0;i<a.length;){const s=a[i++],u=a[i++];if("string"==typeof s){const o=s,l=ge(e[u]),d=n[a[i++]],c=a[i++],f="boolean"==typeof c?c:!(c>=0)&&null;t==l&&r.push({element:t,name:o,callback:d,useCapture:f})}}return r.sort(fc),r}function fc(t,e){return t.name==e.name?0:t.name<e.name?-1:1}let hc=!1;function gc(){hc||(hc=!0,pc("getComponent",ec),pc("getContext",nc),pc("getListeners",cc),pc("getViewComponent",ac),pc("getHostElement",oc),pc("getInjector",ic),pc("getRootComponents",rc),pc("getDirectives",sc),pc("markDirty",hl))}function pc(t,e){if(U){let n=U.ng;n||(n=U.ng={}),n[t]=e}}function bc(t,e={}){qe(null);const n=e.rendererFactory||ea,a=e.sanitizer||null,r=Ht(t);r.type!=t&&(r.type=t);const i=Vi(n,e.host||r.selectors[0][0]),s=r.onPush?576:528,u=vc(e.scheduler,e.playerHandler),o=n.createRenderer(i,r),l=Ri(null,Fi(-1,null,1,0,null,null,null,null),u,s,null,null,n,o,void 0,e.injector||null),d=an(l,null);let c,f=!1;try{n.begin&&n.begin();const t=mc(i,r,l,n,o,a);c=yc(t,r,l,u,e.hostFeatures||null),rs(l,t),Ii(l),l[2]&=-5,we(l),Ii(l),f=!0}finally{sn(d,f),n.end&&n.end()}return c}function mc(t,e,n,a,r,i){Ee=!1,ke=null,de=0,Oe=!0,bn(null),he(),le.clear();const s=n[1];n[19]=t;const u=Ai(s,null,0,3,null,null),o=Ri(n,ji(e),null,e.onPush?64:16,n[19],u,a,r,i);return s.firstTemplatePass&&(va(pa(u,n),s,e.type),u.flags=1,Qi(u,n.length,1),Ji(u)),n[19]=o}function yc(t,e,n,a,r){const i=n[1],s=function(t,e,n){const a=Ge();t.firstTemplatePass&&(n.providersResolver&&n.providersResolver(n),Wi(t,a,1),Xi(t,e,n,n.factory));const r=Sa(t.data,e,e.length-1,a);return $i(e,a,r),r}(i,n,e);a.components.push(s),t[9]=s,r&&r.forEach(t=>t(s,e)),e.contentQueries&&e.contentQueries(1,s,n.length-1);const u=Ge();return i.firstTemplatePass&&e.hostBindings&&(qe(u.index-19),Ui(e,i.expandoInstructions,s,u,i.firstTemplatePass),qe(null)),s}function vc(t,e){return{components:[],scheduler:t||_n,clean:fs,playerHandler:e||null,flags:0}}function xc(t,e){const n=Te(t)[1],a=n.data.length-1;ae(a,e,n,-1,-1,-1),re(n,{directiveStart:a,directiveEnd:a+1})}function _c(t){return ca(t).clean}class Tc{constructor(t,e,n){this.previousValue=t,this.currentValue=e,this.firstChange=n}isFirstChange(){return this.firstChange}}function wc(){return Oc.ngInherit=!0,Oc}function Oc(t){t.type.prototype.ngOnChanges&&(t.setInput=Sc,t.onChanges=function(){const t=Ic(this),e=t&&t.current;if(e){const n=t.previous;if(n===St)t.previous=e;else for(let t in e)n[t]=e[t];t.current=null,this.ngOnChanges(e)}})}function Sc(t,e,n,a){const r=Ic(t)||function(t,e){return t.__ngSimpleChanges__=e}(t,{previous:St,current:null}),i=r.current||(r.current={}),s=r.previous,u=this.declaredInputs[n],o=s[u];i[u]=new Tc(o&&o.currentValue,e,s===St),t[a]=e}function Ic(t){return t.__ngSimpleChanges__||null}function Nc(t){let e=Object.getPrototypeOf(t.type.prototype).constructor;for(;e;){let n=void 0;if(te(t))n=e.ngComponentDef||e.ngDirectiveDef;else{if(e.ngComponentDef)throw new Error("Directives cannot inherit Components");n=e.ngDirectiveDef}const a=e.ngBaseDef;if(a||n){const e=t;e.inputs=Cc(t.inputs),e.declaredInputs=Cc(t.declaredInputs),e.outputs=Cc(t.outputs)}if(a){const e=a.viewQuery,n=a.contentQueries,r=a.hostBindings;r&&kc(t,r),e&&Rc(t,e),n&&Ac(t,n),A(t.inputs,a.inputs),A(t.declaredInputs,a.declaredInputs),A(t.outputs,a.outputs)}if(n){const e=n.hostBindings;e&&kc(t,e);const a=n.viewQuery,r=n.contentQueries;a&&Rc(t,a),r&&Ac(t,r),A(t.inputs,n.inputs),A(t.declaredInputs,n.declaredInputs),A(t.outputs,n.outputs),t.afterContentChecked=t.afterContentChecked||n.afterContentChecked,t.afterContentInit=t.afterContentInit||n.afterContentInit,t.afterViewChecked=t.afterViewChecked||n.afterViewChecked,t.afterViewInit=t.afterViewInit||n.afterViewInit,t.doCheck=t.doCheck||n.doCheck,t.onDestroy=t.onDestroy||n.onDestroy,t.onInit=t.onInit||n.onInit;const i=n.features;if(i)for(const n of i)n&&n.ngInherit&&n(t)}else{const n=e.prototype;n&&(t.afterContentChecked=t.afterContentChecked||n.ngAfterContentChecked,t.afterContentInit=t.afterContentInit||n.ngAfterContentInit,t.afterViewChecked=t.afterViewChecked||n.ngAfterViewChecked,t.afterViewInit=t.afterViewInit||n.ngAfterViewInit,t.doCheck=t.doCheck||n.ngDoCheck,t.onDestroy=t.onDestroy||n.ngOnDestroy,t.onInit=t.onInit||n.ngOnInit,n.ngOnChanges&&wc()(t))}e=Object.getPrototypeOf(e)}}function Cc(t){return t===St?{}:t===It?[]:t}function Rc(t,e){const n=t.viewQuery;t.viewQuery=n?(t,a)=>{e(t,a),n(t,a)}:e}function Ac(t,e){const n=t.contentQueries;t.contentQueries=n?(t,a,r)=>{e(t,a,r),n(t,a,r)}:e}function kc(t,e){const n=t.hostBindings;e!==n&&(t.hostBindings=n?(t,a,r)=>{Fe(1);try{e(t,a,r)}finally{Fe(-1)}n(t,a,r)}:e)}function Ec(t,e,n,a,r){if(t=G(t),Array.isArray(t))for(let i=0;i<t.length;i++)Ec(t[i],e,n,a,r);else{const i=Ae(),s=i[1];let u=Fu(t)?t:G(t.provide),o=Mu(t);const l=Ge(),d=65535&l.providerIndexes,c=l.directiveStart,f=l.providerIndexes>>16;if(t.useClass||Fu(t)){const n=(t.useClass||t).prototype.ngOnDestroy;n&&(s.destroyHooks||(s.destroyHooks=[])).push(e.length,n)}if(Fu(t)||!t.multi){const t=new ne(o,r,Tl),a=Dc(u,e,r?d:d+f,c);-1==a?(va(pa(l,i),s,u),e.push(u),l.directiveStart++,l.directiveEnd++,r&&(l.providerIndexes+=65536),n.push(t),i.push(t)):(n[a]=t,i[a]=t)}else{const t=Dc(u,e,d+f,c),h=Dc(u,e,d,d+f),g=t>=0&&n[t],p=h>=0&&n[h];if(r&&!p||!r&&!g){va(pa(l,i),s,u);const t=function(t,e,n,a,r){const i=new ne(t,n,Tl);return i.multi=[],i.index=e,i.componentProviders=0,Lc(i,r,a&&!n),i}(r?Mc:Pc,n.length,r,a,o);!r&&p&&(n[h].providerFactory=t),e.push(u),l.directiveStart++,l.directiveEnd++,r&&(l.providerIndexes+=65536),n.push(t),i.push(t)}else Lc(n[r?h:t],o,!r&&a);!r&&a&&p&&n[h].componentProviders++}}}function Lc(t,e,n){t.multi.push(e),n&&t.componentProviders++}function Dc(t,e,n,a){for(let r=n;r<a;r++)if(e[r]===t)return r;return-1}function Pc(t,e,n,a){return qc(this.multi,[])}function Mc(t,e,n,a){const r=this.multi;let i;if(this.providerFactory){const t=this.providerFactory.componentProviders,s=Sa(e,n,this.providerFactory.index,a);i=s.slice(0,t),qc(r,i);for(let e=t;e<s.length;e++)i.push(s[e])}else i=[],qc(r,i);return i}function qc(t,e){for(let n=0;n<t.length;n++)e.push((0,t[n])());return e}function jc(t,e=[]){return n=>{n.providersResolver=(n,a)=>function(t,e,n){const a=Ae()[1];if(a.firstTemplatePass){const r=te(t);Ec(n,a.data,a.blueprint,r,!0),Ec(e,a.data,a.blueprint,r,!1)}}(n,a?a(t):t,e)}}class Fc{}class Vc{}function Gc(t){const e=Error(`No component factory found for ${j(t)}. Did you add it to @NgModule.entryComponents?`);return e[Bc]=t,e}const Bc="ngComponent";class zc{resolveComponentFactory(t){throw Gc(t)}}let Yc=(()=>{class t{}return t.NULL=new zc,t})();class Hc{constructor(t,e,n){this._parent=e,this._ngModule=n,this._factories=new Map;for(let a=0;a<t.length;a++){const e=t[a];this._factories.set(e.componentType,e)}}resolveComponentFactory(t){let e=this._factories.get(t);if(!e&&this._parent&&(e=this._parent.resolveComponentFactory(t)),!e)throw Gc(t);return new Uc(e,this._ngModule)}}class Uc extends Vc{constructor(t,e){super(),this.factory=t,this.ngModule=e,this.selector=t.selector,this.componentType=t.componentType,this.ngContentSelectors=t.ngContentSelectors,this.inputs=t.inputs,this.outputs=t.outputs}create(t,e,n,a){return this.factory.create(t,e,n,a||this.ngModule)}}function Wc(...t){}let Kc=(()=>{class t{constructor(t){this.nativeElement=t}}return t.__NG_ELEMENT_ID__=()=>Jc(t),t})();const $c=function(t){return $s(t,Ge(),Ae())},Jc=Wc;class Zc{constructor(t,e,n,a,r,i){this.id=t,this.templateUrl=e,this.slotCount=n,this.encapsulation=a,this.styles=r,this.animations=i}}class Qc{}class Xc{}class tf{}class ef{}const nf=function(){var t={Important:1,DashCase:2};return t[t.Important]="Important",t[t.DashCase]="DashCase",t}();let af=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>sf(),t})();const rf=function(){const t=Ae(),e=xe(Ge().index,t);return function(t){const e=t[12];if(ta(e))return e;throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")}(Jt(e)?e:t)},sf=Wc;class uf{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const of=new uf("8.2.14");class lf{constructor(){}supports(t){return qo(t)}create(t){return new cf(t)}}const df=(t,e)=>e;class cf{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||df}forEachItem(t){let e;for(e=this._itHead;null!==e;e=e._next)t(e)}forEachOperation(t){let e=this._itHead,n=this._removalsHead,a=0,r=null;for(;e||n;){const i=!n||e&&e.currentIndex<pf(n,a,r)?e:n,s=pf(i,a,r),u=i.currentIndex;if(i===n)a--,n=n._nextRemoved;else if(e=e._next,null==i.previousIndex)a++;else{r||(r=[]);const t=s-a,e=u-a;if(t!=e){for(let n=0;n<t;n++){const a=n<r.length?r[n]:r[n]=0,i=a+n;e<=i&&i<t&&(r[n]=a+1)}r[i.previousIndex]=e-t}}s!==u&&t(i,s,u)}}forEachPreviousItem(t){let e;for(e=this._previousItHead;null!==e;e=e._nextPrevious)t(e)}forEachAddedItem(t){let e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)}forEachMovedItem(t){let e;for(e=this._movesHead;null!==e;e=e._nextMoved)t(e)}forEachRemovedItem(t){let e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)}forEachIdentityChange(t){let e;for(e=this._identityChangesHead;null!==e;e=e._nextIdentityChange)t(e)}diff(t){if(null==t&&(t=[]),!qo(t))throw new Error(`Error trying to diff '${j(t)}'. Only arrays and iterables are allowed`);return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let e,n,a,r=this._itHead,i=!1;if(Array.isArray(t)){this.length=t.length;for(let e=0;e<this.length;e++)n=t[e],a=this._trackByFn(e,n),null!==r&&Do(r.trackById,a)?(i&&(r=this._verifyReinsertion(r,n,a,e)),Do(r.item,n)||this._addIdentityChange(r,n)):(r=this._mismatch(r,n,a,e),i=!0),r=r._next}else e=0,function(t,e){if(Array.isArray(t))for(let n=0;n<t.length;n++)e(t[n]);else{const n=t[Lo()]();let a;for(;!(a=n.next()).done;)e(a.value)}}(t,t=>{a=this._trackByFn(e,t),null!==r&&Do(r.trackById,a)?(i&&(r=this._verifyReinsertion(r,t,a,e)),Do(r.item,t)||this._addIdentityChange(r,t)):(r=this._mismatch(r,t,a,e),i=!0),r=r._next,e++}),this.length=e;return this._truncate(r),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t,e;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=e)t.previousIndex=t.currentIndex,e=t._nextMoved;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,e,n,a){let r;return null===t?r=this._itTail:(r=t._prev,this._remove(t)),null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(n,a))?(Do(t.item,e)||this._addIdentityChange(t,e),this._moveAfter(t,r,a)):null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(Do(t.item,e)||this._addIdentityChange(t,e),this._reinsertAfter(t,r,a)):t=this._addAfter(new ff(e,n),r,a),t}_verifyReinsertion(t,e,n,a){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null);return null!==r?t=this._reinsertAfter(r,t._prev,a):t.currentIndex!=a&&(t.currentIndex=a,this._addToMoves(t,a)),t}_truncate(t){for(;null!==t;){const e=t._next;this._addToRemovals(this._unlink(t)),t=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,e,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const a=t._prevRemoved,r=t._nextRemoved;return null===a?this._removalsHead=r:a._nextRemoved=r,null===r?this._removalsTail=a:r._prevRemoved=a,this._insertAfter(t,e,n),this._addToMoves(t,n),t}_moveAfter(t,e,n){return this._unlink(t),this._insertAfter(t,e,n),this._addToMoves(t,n),t}_addAfter(t,e,n){return this._insertAfter(t,e,n),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,e,n){const a=null===e?this._itHead:e._next;return t._next=a,t._prev=e,null===a?this._itTail=t:a._prev=t,null===e?this._itHead=t:e._next=t,null===this._linkedRecords&&(this._linkedRecords=new gf),this._linkedRecords.put(t),t.currentIndex=n,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const e=t._prev,n=t._next;return null===e?this._itHead=n:e._next=n,null===n?this._itTail=e:n._prev=e,t}_addToMoves(t,e){return t.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new gf),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,e){return t.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class ff{constructor(t,e){this.item=t,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class hf{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,e){let n;for(n=this._head;null!==n;n=n._nextDup)if((null===e||e<=n.currentIndex)&&Do(n.trackById,t))return n;return null}remove(t){const e=t._prevDup,n=t._nextDup;return null===e?this._head=n:e._nextDup=n,null===n?this._tail=e:n._prevDup=e,null===this._head}}class gf{constructor(){this.map=new Map}put(t){const e=t.trackById;let n=this.map.get(e);n||(n=new hf,this.map.set(e,n)),n.add(t)}get(t,e){const n=this.map.get(t);return n?n.get(t,e):null}remove(t){const e=t.trackById;return this.map.get(e).remove(t)&&this.map.delete(e),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function pf(t,e,n){const a=t.previousIndex;if(null===a)return a;let r=0;return n&&a<n.length&&(r=n[a]),a+e+r}class bf{constructor(){}supports(t){return t instanceof Map||jo(t)}create(){return new mf}}class mf{constructor(){this._records=new Map,this._mapHead=null,this._appendAfter=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}get isDirty(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead}forEachItem(t){let e;for(e=this._mapHead;null!==e;e=e._next)t(e)}forEachPreviousItem(t){let e;for(e=this._previousMapHead;null!==e;e=e._nextPrevious)t(e)}forEachChangedItem(t){let e;for(e=this._changesHead;null!==e;e=e._nextChanged)t(e)}forEachAddedItem(t){let e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)}forEachRemovedItem(t){let e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)}diff(t){if(t){if(!(t instanceof Map||jo(t)))throw new Error(`Error trying to diff '${j(t)}'. Only maps and objects are allowed`)}else t=new Map;return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let e=this._mapHead;if(this._appendAfter=null,this._forEach(t,(t,n)=>{if(e&&e.key===n)this._maybeAddToChanges(e,t),this._appendAfter=e,e=e._next;else{const a=this._getOrCreateRecordForKey(n,t);e=this._insertBeforeOrAppend(e,a)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let t=e;null!==t;t=t._nextRemoved)t===this._mapHead&&(this._mapHead=null),this._records.delete(t.key),t._nextRemoved=t._next,t.previousValue=t.currentValue,t.currentValue=null,t._prev=null,t._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,e){if(t){const n=t._prev;return e._next=t,e._prev=n,t._prev=e,n&&(n._next=e),t===this._mapHead&&(this._mapHead=e),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(t,e){if(this._records.has(t)){const n=this._records.get(t);this._maybeAddToChanges(n,e);const a=n._prev,r=n._next;return a&&(a._next=r),r&&(r._prev=a),n._next=null,n._prev=null,n}const n=new yf(t);return this._records.set(t,n),n.currentValue=e,this._addToAdditions(n),n}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,e){Do(e,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=e,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,e){t instanceof Map?t.forEach(e):Object.keys(t).forEach(n=>e(t[n],n))}}class yf{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}let vf=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(null!=n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend IterableDiffers without a parent injector");return t.create(e,n)},deps:[[t,new S,new w]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(null!=e)return e;throw new Error(`Cannot find a differ supporting object '${t}' of type '${n=t,n.name||typeof n}'`);var n}}return t.ngInjectableDef=k({token:t,providedIn:"root",factory:()=>new t([new lf])}),t})(),xf=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return t.create(e,n)},deps:[[t,new S,new w]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(e)return e;throw new Error(`Cannot find a differ supporting object '${t}'`)}}return t.ngInjectableDef=k({token:t,providedIn:"root",factory:()=>new t([new bf])}),t})();const _f=[new bf],Tf=new vf([new lf]),wf=new xf(_f);let Of=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>If(t,Kc),t})();const Sf=function(t,e){return Js(t,e,Ge(),Ae())},If=Wc;let Nf=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>Rf(t,Kc),t})();const Cf=function(t,e){return Zs(t,e,Ge(),Ae())},Rf=Wc;function Af(t,e,n,a){let r=`ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '${e}'. Current value: '${n}'.`;return a&&(r+=" It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook ?"),function(t,e){const n=new Error(t);return kf(n,e),n}(r,t)}function kf(t,e){t.ngDebugContext=e,t.ngErrorLogger=e.logError.bind(e)}function Ef(t){return new Error("ViewDestroyedError: Attempt to use a destroyed view: "+t)}function Lf(t,e,n){const a=t.state,r=1792&a;return r===e?(t.state=-1793&a|n,t.initIndex=-1,!0):r===n}function Df(t,e,n){return(1792&t.state)===e&&t.initIndex<=n&&(t.initIndex=n+1,!0)}function Pf(t,e){return t.nodes[e]}function Mf(t,e){return t.nodes[e]}function qf(t,e){return t.nodes[e]}function jf(t,e){return t.nodes[e]}function Ff(t,e){return t.nodes[e]}class Vf{}const Gf={setCurrentNode:void 0,createRootView:void 0,createEmbeddedView:void 0,createComponentView:void 0,createNgModuleRef:void 0,overrideProvider:void 0,overrideComponentView:void 0,clearOverrides:void 0,checkAndUpdateView:void 0,checkNoChangesView:void 0,destroyView:void 0,resolveDep:void 0,createDebugContext:void 0,handleEvent:void 0,updateDirectives:void 0,updateRenderer:void 0,dirtyParentQueries:void 0},Bf=()=>{},zf=new Map;function Yf(t){let e=zf.get(t);return e||(e=j(t)+"_"+zf.size,zf.set(t,e)),e}function Hf(t,e,n,a){if(Mo.isWrapped(a)){a=Mo.unwrap(a);const r=t.def.nodes[e].bindingIndex+n,i=Mo.unwrap(t.oldValues[r]);t.oldValues[r]=new Mo(i)}return a}function Uf(t){return{id:"$$undefined",styles:t.styles,encapsulation:t.encapsulation,data:t.data}}let Wf=0;function Kf(t,e,n,a){return!(!(2&t.state)&&Do(t.oldValues[e.bindingIndex+n],a))}function $f(t,e,n,a){return!!Kf(t,e,n,a)&&(t.oldValues[e.bindingIndex+n]=a,!0)}function Jf(t,e,n,a){const r=t.oldValues[e.bindingIndex+n];if(1&t.state||!Po(r,a)){const i=e.bindings[n].name;throw Af(Gf.createDebugContext(t,e.nodeIndex),`${i}: ${r}`,`${i}: ${a}`,0!=(1&t.state))}}function Zf(t){let e=t;for(;e;)2&e.def.flags&&(e.state|=8),e=e.viewContainerParent||e.parent}function Qf(t,e){let n=t;for(;n&&n!==e;)n.state|=64,n=n.viewContainerParent||n.parent}function Xf(t,e,n,a){try{return Zf(33554432&t.def.nodes[e].flags?Mf(t,e).componentView:t),Gf.handleEvent(t,e,n,a)}catch(r){t.root.errorHandler.handleError(r)}}function th(t){return t.parent?Mf(t.parent,t.parentNodeDef.nodeIndex):null}function eh(t){return t.parent?t.parentNodeDef.parent:null}function nh(t,e){switch(201347067&e.flags){case 1:return Mf(t,e.nodeIndex).renderElement;case 2:return Pf(t,e.nodeIndex).renderText}}function ah(t){return!!t.parent&&!!(32768&t.parentNodeDef.flags)}function rh(t){return!(!t.parent||32768&t.parentNodeDef.flags)}function ih(t){return 1<<t%32}function sh(t){const e={};let n=0;const a={};return t&&t.forEach(([t,r])=>{"number"==typeof t?(e[t]=r,n|=ih(t)):a[t]=r}),{matchedQueries:e,references:a,matchedQueryIds:n}}function uh(t,e){return t.map(t=>{let n,a;return Array.isArray(t)?[a,n]=t:(a=0,n=t),n&&("function"==typeof n||"object"==typeof n)&&e&&Object.defineProperty(n,"__source",{value:e,configurable:!0}),{flags:a,token:n,tokenKey:Yf(n)}})}function oh(t,e,n){let a=n.renderParent;return a?0==(1&a.flags)||0==(33554432&a.flags)||a.element.componentRendererType&&a.element.componentRendererType.encapsulation===wt.Native?Mf(t,n.renderParent.nodeIndex).renderElement:void 0:e}const lh=new WeakMap;function dh(t){let e=lh.get(t);return e||(e=t(()=>Bf),e.factory=t,lh.set(t,e)),e}function ch(t,e,n,a,r){3===e&&(n=t.renderer.parentNode(nh(t,t.def.lastRenderRootNode))),fh(t,e,0,t.def.nodes.length-1,n,a,r)}function fh(t,e,n,a,r,i,s){for(let u=n;u<=a;u++){const n=t.def.nodes[u];11&n.flags&&gh(t,n,e,r,i,s),u+=n.childCount}}function hh(t,e,n,a,r,i){let s=t;for(;s&&!ah(s);)s=s.parent;const u=s.parent,o=eh(s),l=o.nodeIndex+o.childCount;for(let d=o.nodeIndex+1;d<=l;d++){const t=u.def.nodes[d];t.ngContentIndex===e&&gh(u,t,n,a,r,i),d+=t.childCount}if(!u.parent){const s=t.root.projectableNodes[e];if(s)for(let e=0;e<s.length;e++)ph(t,s[e],n,a,r,i)}}function gh(t,e,n,a,r,i){if(8&e.flags)hh(t,e.ngContent.index,n,a,r,i);else{const s=nh(t,e);if(3===n&&33554432&e.flags&&48&e.bindingFlags?(16&e.bindingFlags&&ph(t,s,n,a,r,i),32&e.bindingFlags&&ph(Mf(t,e.nodeIndex).componentView,s,n,a,r,i)):ph(t,s,n,a,r,i),16777216&e.flags){const s=Mf(t,e.nodeIndex).viewContainer._embeddedViews;for(let t=0;t<s.length;t++)ch(s[t],n,a,r,i)}1&e.flags&&!e.element.name&&fh(t,n,e.nodeIndex+1,e.nodeIndex+e.childCount,a,r,i)}}function ph(t,e,n,a,r,i){const s=t.renderer;switch(n){case 1:s.appendChild(a,e);break;case 2:s.insertBefore(a,e,r);break;case 3:s.removeChild(a,e);break;case 0:i.push(e)}}const bh=/^:([^:]+):(.+)$/;function mh(t){if(":"===t[0]){const e=t.match(bh);return[e[1],e[2]]}return["",t]}function yh(t){let e=0;for(let n=0;n<t.length;n++)e|=t[n].flags;return e}function vh(t,e){let n="";for(let a=0;a<2*t;a+=2)n=n+e[a]+_h(e[a+1]);return n+e[2*t]}function xh(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m,y,v){switch(t){case 1:return e+_h(n)+a;case 2:return e+_h(n)+a+_h(r)+i;case 3:return e+_h(n)+a+_h(r)+i+_h(s)+u;case 4:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l;case 5:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c;case 6:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c+_h(f)+h;case 7:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c+_h(f)+h+_h(g)+p;case 8:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c+_h(f)+h+_h(g)+p+_h(b)+m;case 9:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c+_h(f)+h+_h(g)+p+_h(b)+m+_h(y)+v;default:throw new Error("Does not support more than 9 expressions")}}function _h(t){return null!=t?t.toString():""}const Th=[],wh={},Oh=new Object,Sh=Yf(Bu),Ih=Yf($),Nh=Yf(ft);function Ch(t,e,n,a){return n=G(n),{index:-1,deps:uh(a,j(e)),flags:t,token:e,value:n}}function Rh(t){const e={},n=[];let a=!1;for(let r=0;r<t.length;r++){const i=t[r];i.token===Nu&&!0===i.value&&(a=!0),1073741824&i.flags&&n.push(i.token),i.index=r,e[Yf(i.token)]=i}return{factory:null,providersByKey:e,providers:t,modules:n,isRoot:a}}function Ah(t,e,n=Bu.THROW_IF_NOT_FOUND){const a=et(t);try{if(8&e.flags)return e.token;if(2&e.flags&&(n=null),1&e.flags)return t._parent.get(e.token,n);const s=e.tokenKey;switch(s){case Sh:case Ih:case Nh:return t}const u=t._def.providersByKey[s];let o;if(u){let e=t._providers[u.index];return void 0===e&&(e=t._providers[u.index]=kh(t,u)),e===Oh?void 0:e}if((o=D(e.token))&&(r=t,null!=(i=o).providedIn&&(function(t,e){return t._def.modules.indexOf(e)>-1}(r,i.providedIn)||"root"===i.providedIn&&r._def.isRoot))){const n=t._providers.length;return t._def.providers[n]=t._def.providersByKey[e.tokenKey]={flags:5120,value:o.factory,deps:[],index:n,token:e.token},t._providers[n]=Oh,t._providers[n]=kh(t,t._def.providersByKey[e.tokenKey])}return 4&e.flags?n:t._parent.get(e.token,n)}finally{et(a)}var r,i}function kh(t,e){let n;switch(201347067&e.flags){case 512:n=function(t,e,n){const a=n.length;switch(a){case 0:return new e;case 1:return new e(Ah(t,n[0]));case 2:return new e(Ah(t,n[0]),Ah(t,n[1]));case 3:return new e(Ah(t,n[0]),Ah(t,n[1]),Ah(t,n[2]));default:const r=new Array(a);for(let e=0;e<a;e++)r[e]=Ah(t,n[e]);return new e(...r)}}(t,e.value,e.deps);break;case 1024:n=function(t,e,n){const a=n.length;switch(a){case 0:return e();case 1:return e(Ah(t,n[0]));case 2:return e(Ah(t,n[0]),Ah(t,n[1]));case 3:return e(Ah(t,n[0]),Ah(t,n[1]),Ah(t,n[2]));default:const r=Array(a);for(let e=0;e<a;e++)r[e]=Ah(t,n[e]);return e(...r)}}(t,e.value,e.deps);break;case 2048:n=Ah(t,e.deps[0]);break;case 256:n=e.value}return n===Oh||null===n||"object"!=typeof n||131072&e.flags||"function"!=typeof n.ngOnDestroy||(e.flags|=131072),void 0===n?Oh:n}function Eh(t,e){const n=t.viewContainer._embeddedViews;if((null==e||e>=n.length)&&(e=n.length-1),e<0)return null;const a=n[e];return a.viewContainerParent=null,yt(n,e),Gf.dirtyParentQueries(a),Dh(a),a}function Lh(t,e,n){const a=e?nh(e,e.def.lastRenderRootNode):t.renderElement,r=n.renderer.parentNode(a),i=n.renderer.nextSibling(a);ch(n,2,r,i,void 0)}function Dh(t){ch(t,3,null,null,void 0)}const Ph=new Object;function Mh(t,e,n,a,r,i){return new jh(t,e,n,a,r,i)}function qh(t){return t.viewDefFactory}class jh extends Vc{constructor(t,e,n,a,r,i){super(),this.selector=t,this.componentType=e,this._inputs=a,this._outputs=r,this.ngContentSelectors=i,this.viewDefFactory=n}get inputs(){const t=[],e=this._inputs;for(let n in e)t.push({propName:n,templateName:e[n]});return t}get outputs(){const t=[];for(let e in this._outputs)t.push({propName:e,templateName:this._outputs[e]});return t}create(t,e,n,a){if(!a)throw new Error("ngModule should be provided");const r=dh(this.viewDefFactory),i=r.nodes[0].element.componentProvider.nodeIndex,s=Gf.createRootView(t,e||[],n,r,a,Ph),u=qf(s,i).instance;return n&&s.renderer.setAttribute(Mf(s,0).renderElement,"ng-version",of.full),new Fh(s,new zh(s),u)}}class Fh extends Fc{constructor(t,e,n){super(),this._view=t,this._viewRef=e,this._component=n,this._elDef=this._view.def.nodes[0],this.hostView=e,this.changeDetectorRef=e,this.instance=n}get location(){return new Kc(Mf(this._view,this._elDef.nodeIndex).renderElement)}get injector(){return new Wh(this._view,this._elDef)}get componentType(){return this._component.constructor}destroy(){this._viewRef.destroy()}onDestroy(t){this._viewRef.onDestroy(t)}}function Vh(t,e,n){return new Gh(t,e,n)}class Gh{constructor(t,e,n){this._view=t,this._elDef=e,this._data=n,this._embeddedViews=[]}get element(){return new Kc(this._data.renderElement)}get injector(){return new Wh(this._view,this._elDef)}get parentInjector(){let t=this._view,e=this._elDef.parent;for(;!e&&t;)e=eh(t),t=t.parent;return t?new Wh(t,e):new Wh(this._view,null)}clear(){for(let t=this._embeddedViews.length-1;t>=0;t--){const e=Eh(this._data,t);Gf.destroyView(e)}}get(t){const e=this._embeddedViews[t];if(e){const t=new zh(e);return t.attachToViewContainerRef(this),t}return null}get length(){return this._embeddedViews.length}createEmbeddedView(t,e,n){const a=t.createEmbeddedView(e||{});return this.insert(a,n),a}createComponent(t,e,n,a,r){const i=n||this.parentInjector;r||t instanceof Uc||(r=i.get(ft));const s=t.create(i,a,void 0,r);return this.insert(s.hostView,e),s}insert(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");const n=t;return function(t,e,n,a){let r=e.viewContainer._embeddedViews;null==n&&(n=r.length),a.viewContainerParent=t,mt(r,n,a),function(t,e){const n=th(e);if(!n||n===t||16&e.state)return;e.state|=16;let a=n.template._projectedViews;a||(a=n.template._projectedViews=[]),a.push(e),function(t,e){if(4&e.flags)return;t.nodeFlags|=4,e.flags|=4;let n=e.parent;for(;n;)n.childFlags|=4,n=n.parent}(e.parent.def,e.parentNodeDef)}(e,a),Gf.dirtyParentQueries(a),Lh(e,n>0?r[n-1]:null,a)}(this._view,this._data,e,n._view),n.attachToViewContainerRef(this),t}move(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");const n=this._embeddedViews.indexOf(t._view);return function(t,e,n){const a=t.viewContainer._embeddedViews,r=a[e];yt(a,e),null==n&&(n=a.length),mt(a,n,r),Gf.dirtyParentQueries(r),Dh(r),Lh(t,n>0?a[n-1]:null,r)}(this._data,n,e),t}indexOf(t){return this._embeddedViews.indexOf(t._view)}remove(t){const e=Eh(this._data,t);e&&Gf.destroyView(e)}detach(t){const e=Eh(this._data,t);return e?new zh(e):null}}function Bh(t){return new zh(t)}class zh{constructor(t){this._view=t,this._viewContainerRef=null,this._appRef=null}get rootNodes(){return function(t){const e=[];return ch(t,0,void 0,void 0,e),e}(this._view)}get context(){return this._view.context}get destroyed(){return 0!=(128&this._view.state)}markForCheck(){Zf(this._view)}detach(){this._view.state&=-5}detectChanges(){const t=this._view.root.rendererFactory;t.begin&&t.begin();try{Gf.checkAndUpdateView(this._view)}finally{t.end&&t.end()}}checkNoChanges(){Gf.checkNoChangesView(this._view)}reattach(){this._view.state|=4}onDestroy(t){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(t)}destroy(){this._appRef?this._appRef.detachView(this):this._viewContainerRef&&this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),Gf.destroyView(this._view)}detachFromAppRef(){this._appRef=null,Dh(this._view),Gf.dirtyParentQueries(this._view)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}}function Yh(t,e){return new Hh(t,e)}class Hh extends Of{constructor(t,e){super(),this._parentView=t,this._def=e}createEmbeddedView(t){return new zh(Gf.createEmbeddedView(this._parentView,this._def,this._def.element.template,t))}get elementRef(){return new Kc(Mf(this._parentView,this._def.nodeIndex).renderElement)}}function Uh(t,e){return new Wh(t,e)}class Wh{constructor(t,e){this.view=t,this.elDef=e}get(t,e=Bu.THROW_IF_NOT_FOUND){return Gf.resolveDep(this.view,this.elDef,!!this.elDef&&0!=(33554432&this.elDef.flags),{flags:0,token:t,tokenKey:Yf(t)},e)}}function Kh(t,e){const n=t.def.nodes[e];if(1&n.flags){const e=Mf(t,n.nodeIndex);return n.element.template?e.template:e.renderElement}if(2&n.flags)return Pf(t,n.nodeIndex).renderText;if(20240&n.flags)return qf(t,n.nodeIndex).instance;throw new Error("Illegal state: read nodeValue for node index "+e)}function $h(t){return new Jh(t.renderer)}class Jh{constructor(t){this.delegate=t}selectRootElement(t){return this.delegate.selectRootElement(t)}createElement(t,e){const[n,a]=mh(e),r=this.delegate.createElement(a,n);return t&&this.delegate.appendChild(t,r),r}createViewRoot(t){return t}createTemplateAnchor(t){const e=this.delegate.createComment("");return t&&this.delegate.appendChild(t,e),e}createText(t,e){const n=this.delegate.createText(e);return t&&this.delegate.appendChild(t,n),n}projectNodes(t,e){for(let n=0;n<e.length;n++)this.delegate.appendChild(t,e[n])}attachViewAfter(t,e){const n=this.delegate.parentNode(t),a=this.delegate.nextSibling(t);for(let r=0;r<e.length;r++)this.delegate.insertBefore(n,e[r],a)}detachView(t){for(let e=0;e<t.length;e++){const n=t[e],a=this.delegate.parentNode(n);this.delegate.removeChild(a,n)}}destroyView(t,e){for(let n=0;n<e.length;n++)this.delegate.destroyNode(e[n])}listen(t,e,n){return this.delegate.listen(t,e,n)}listenGlobal(t,e,n){return this.delegate.listen(t,e,n)}setElementProperty(t,e,n){this.delegate.setProperty(t,e,n)}setElementAttribute(t,e,n){const[a,r]=mh(e);null!=n?this.delegate.setAttribute(t,r,n,a):this.delegate.removeAttribute(t,r,a)}setBindingDebugInfo(t,e,n){}setElementClass(t,e,n){n?this.delegate.addClass(t,e):this.delegate.removeClass(t,e)}setElementStyle(t,e,n){null!=n?this.delegate.setStyle(t,e,n):this.delegate.removeStyle(t,e)}invokeElementMethod(t,e,n){t[e].apply(t,n)}setText(t,e){this.delegate.setValue(t,e)}animate(){throw new Error("Renderer.animate is no longer supported!")}}function Zh(t,e,n,a){return new Qh(t,e,n,a)}class Qh{constructor(t,e,n,a){this._moduleType=t,this._parent=e,this._bootstrapComponents=n,this._def=a,this._destroyListeners=[],this._destroyed=!1,this.injector=this,function(t){const e=t._def,n=t._providers=new Array(e.providers.length);for(let a=0;a<e.providers.length;a++){const r=e.providers[a];4096&r.flags||void 0===n[a]&&(n[a]=kh(t,r))}}(this)}get(t,e=Bu.THROW_IF_NOT_FOUND,n=C.Default){let a=0;return n&C.SkipSelf?a|=1:n&C.Self&&(a|=4),Ah(this,{token:t,tokenKey:Yf(t),flags:a},e)}get instance(){return this.get(this._moduleType)}get componentFactoryResolver(){return this.get(Yc)}destroy(){if(this._destroyed)throw new Error(`The ng module ${j(this.instance.constructor)} has already been destroyed.`);this._destroyed=!0,function(t,e){const n=t._def,a=new Set;for(let r=0;r<n.providers.length;r++)if(131072&n.providers[r].flags){const e=t._providers[r];if(e&&e!==Oh){const t=e.ngOnDestroy;"function"!=typeof t||a.has(e)||(t.apply(e),a.add(e))}}}(this),this._destroyListeners.forEach(t=>t())}onDestroy(t){this._destroyListeners.push(t)}}const Xh=Yf(Xc),tg=Yf(af),eg=Yf(Kc),ng=Yf(Nf),ag=Yf(Of),rg=Yf(Xs),ig=Yf(Bu),sg=Yf($);function ug(t,e,n,a,r,i,s,u){const o=[];if(s)for(let d in s){const[t,e]=s[d];o[t]={flags:8,name:d,nonMinifiedName:e,ns:null,securityContext:null,suffix:null}}const l=[];if(u)for(let d in u)l.push({type:1,propName:d,target:null,eventName:u[d]});return dg(t,e|=16384,n,a,r,r,i,o,l)}function og(t,e,n){return dg(-1,t|=16,null,0,e,e,n)}function lg(t,e,n,a,r){return dg(-1,t,e,0,n,a,r)}function dg(t,e,n,a,r,i,s,u,o){const{matchedQueries:l,references:d,matchedQueryIds:c}=sh(n);o||(o=[]),u||(u=[]),i=G(i);const f=uh(s,j(r));return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:l,matchedQueryIds:c,references:d,ngContentIndex:-1,childCount:a,bindings:u,bindingFlags:yh(u),outputs:o,element:null,provider:{token:r,value:i,deps:f},text:null,query:null,ngContent:null}}function cg(t,e){return pg(t,e)}function fg(t,e){let n=t;for(;n.parent&&!ah(n);)n=n.parent;return bg(n.parent,eh(n),!0,e.provider.value,e.provider.deps)}function hg(t,e){const n=bg(t,e.parent,(32768&e.flags)>0,e.provider.value,e.provider.deps);if(e.outputs.length)for(let a=0;a<e.outputs.length;a++){const r=e.outputs[a],i=n[r.propName];if(!ed(i))throw new Error(`@Output ${r.propName} not initialized in '${n.constructor.name}'.`);{const n=i.subscribe(gg(t,e.parent.nodeIndex,r.eventName));t.disposables[e.outputIndex+a]=n.unsubscribe.bind(n)}}return n}function gg(t,e,n){return a=>Xf(t,e,n,a)}function pg(t,e){const n=(8192&e.flags)>0,a=e.provider;switch(201347067&e.flags){case 512:return bg(t,e.parent,n,a.value,a.deps);case 1024:return function(t,e,n,a,r){const i=r.length;switch(i){case 0:return a();case 1:return a(yg(t,e,n,r[0]));case 2:return a(yg(t,e,n,r[0]),yg(t,e,n,r[1]));case 3:return a(yg(t,e,n,r[0]),yg(t,e,n,r[1]),yg(t,e,n,r[2]));default:const s=Array(i);for(let a=0;a<i;a++)s[a]=yg(t,e,n,r[a]);return a(...s)}}(t,e.parent,n,a.value,a.deps);case 2048:return yg(t,e.parent,n,a.deps[0]);case 256:return a.value}}function bg(t,e,n,a,r){const i=r.length;switch(i){case 0:return new a;case 1:return new a(yg(t,e,n,r[0]));case 2:return new a(yg(t,e,n,r[0]),yg(t,e,n,r[1]));case 3:return new a(yg(t,e,n,r[0]),yg(t,e,n,r[1]),yg(t,e,n,r[2]));default:const s=new Array(i);for(let a=0;a<i;a++)s[a]=yg(t,e,n,r[a]);return new a(...s)}}const mg={};function yg(t,e,n,a,r=Bu.THROW_IF_NOT_FOUND){if(8&a.flags)return a.token;const i=t;2&a.flags&&(r=null);const s=a.tokenKey;s===rg&&(n=!(!e||!e.element.componentView)),e&&1&a.flags&&(n=!1,e=e.parent);let u=t;for(;u;){if(e)switch(s){case Xh:return $h(vg(u,e,n));case tg:return vg(u,e,n).renderer;case eg:return new Kc(Mf(u,e.nodeIndex).renderElement);case ng:return Mf(u,e.nodeIndex).viewContainer;case ag:if(e.element.template)return Mf(u,e.nodeIndex).template;break;case rg:return Bh(vg(u,e,n));case ig:case sg:return Uh(u,e);default:const t=(n?e.element.allProviders:e.element.publicProviders)[s];if(t){let e=qf(u,t.nodeIndex);return e||(e={instance:pg(u,t)},u.nodes[t.nodeIndex]=e),e.instance}}n=ah(u),e=eh(u),u=u.parent,4&a.flags&&(u=null)}const o=i.root.injector.get(a.token,mg);return o!==mg||r===mg?o:i.root.ngModule.injector.get(a.token,r)}function vg(t,e,n){let a;if(n)a=Mf(t,e.nodeIndex).componentView;else for(a=t;a.parent&&!ah(a);)a=a.parent;return a}function xg(t,e,n,a,r,i){if(32768&n.flags){const e=Mf(t,n.parent.nodeIndex).componentView;2&e.def.flags&&(e.state|=8)}if(e.instance[n.bindings[a].name]=r,524288&n.flags){i=i||{};const e=Mo.unwrap(t.oldValues[n.bindingIndex+a]);i[n.bindings[a].nonMinifiedName]=new Tc(e,r,0!=(2&t.state))}return t.oldValues[n.bindingIndex+a]=r,i}function _g(t,e){if(!(t.def.nodeFlags&e))return;const n=t.def.nodes;let a=0;for(let r=0;r<n.length;r++){const i=n[r];let s=i.parent;for(!s&&i.flags&e&&wg(t,r,i.flags&e,a++),0==(i.childFlags&e)&&(r+=i.childCount);s&&1&s.flags&&r===s.nodeIndex+s.childCount;)s.directChildFlags&e&&(a=Tg(t,s,e,a)),s=s.parent}}function Tg(t,e,n,a){for(let r=e.nodeIndex+1;r<=e.nodeIndex+e.childCount;r++){const e=t.def.nodes[r];e.flags&n&&wg(t,r,e.flags&n,a++),r+=e.childCount}return a}function wg(t,e,n,a){const r=qf(t,e);if(!r)return;const i=r.instance;i&&(Gf.setCurrentNode(t,e),1048576&n&&Df(t,512,a)&&i.ngAfterContentInit(),2097152&n&&i.ngAfterContentChecked(),4194304&n&&Df(t,768,a)&&i.ngAfterViewInit(),8388608&n&&i.ngAfterViewChecked(),131072&n&&i.ngOnDestroy())}function Og(t){const e=[];for(let n in t)t.hasOwnProperty(n)&&e.push({propName:t[n],templateName:n});return e}const Sg=new K("SCHEDULER_TOKEN",{providedIn:"root",factory:()=>_n});class Ig extends Vc{constructor(t,e){super(),this.componentDef=t,this.ngModule=e,this.componentType=t.type,this.selector=t.selectors[0][0]||"div",this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!e}get inputs(){return Og(this.componentDef.inputs)}get outputs(){return Og(this.componentDef.outputs)}create(t,e,n,a){const r=(a=a||this.ngModule)?function(t,e){return{get:(n,a,r)=>{const i=t.get(n,mg,r);return i!==mg||a===mg?i:e.get(n,a,r)}}}(t,a.injector):t,i=r.get(ef,ea),s=r.get(vr,null);pn();const u=n?Vi(i,n):Ci(this.selector,i.createRenderer(null,this.componentDef)),o=this.componentDef.onPush?576:528,l="string"==typeof n&&/^#root-ng-internal-isolated-\d+/.test(n),d=vc(),c=i.createRenderer(u,this.componentDef);n&&u&&(ta(c)?c.setAttribute(u,"ng-version",of.full):u.setAttribute("ng-version",of.full));const f=Ri(null,Fi(-1,null,1,0,null,null,null,null),d,o,null,null,i,c,s,r),h=an(f,null);let g,p,b=!1;try{const t=mc(u,this.componentDef,f,i,c);p=ye(0,f),e&&(p.projection=e.map(t=>Array.from(t))),g=yc(t,this.componentDef,f,d,[xc]),rs(f,t),Ii(f),b=!0}finally{sn(h,b)}const m=new Ng(this.componentType,g,$s(Kc,p,f),f,p);return n&&!l||(m.hostView._tViewNode.child=p),m}}class Ng extends Fc{constructor(t,e,n,a,r){super(),this.location=n,this._rootLView=a,this._tNode=r,this.destroyCbs=[],this.instance=e,this.hostView=this.changeDetectorRef=new Hs(a),this.hostView._tViewNode=ki(a[1],null,-1,a),this.componentType=t}get injector(){return new Ca(this._tNode,this._rootLView)}destroy(){this.destroyCbs&&(this.destroyCbs.forEach(t=>t()),this.destroyCbs=null,!this.hostView.destroyed&&this.hostView.destroy())}onDestroy(t){this.destroyCbs&&this.destroyCbs.push(t)}}const Cg={},Rg=function(){var t={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencySymbol:15,CurrencyName:16,Currencies:17,PluralCase:18,ExtraData:19};return t[t.LocaleId]="LocaleId",t[t.DayPeriodsFormat]="DayPeriodsFormat",t[t.DayPeriodsStandalone]="DayPeriodsStandalone",t[t.DaysFormat]="DaysFormat",t[t.DaysStandalone]="DaysStandalone",t[t.MonthsFormat]="MonthsFormat",t[t.MonthsStandalone]="MonthsStandalone",t[t.Eras]="Eras",t[t.FirstDayOfWeek]="FirstDayOfWeek",t[t.WeekendRange]="WeekendRange",t[t.DateFormat]="DateFormat",t[t.TimeFormat]="TimeFormat",t[t.DateTimeFormat]="DateTimeFormat",t[t.NumberSymbols]="NumberSymbols",t[t.NumberFormats]="NumberFormats",t[t.CurrencySymbol]="CurrencySymbol",t[t.CurrencyName]="CurrencyName",t[t.Currencies]="Currencies",t[t.PluralCase]="PluralCase",t[t.ExtraData]="ExtraData",t}(),Ag=void 0;var kg=["en",[["a","p"],["AM","PM"],Ag],[["AM","PM"],Ag,Ag],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Ag,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Ag,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Ag,"{1} 'at' {0}",Ag],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"$","US Dollar",{},function(t){let e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}];function Eg(t){return Lg(t)[Rg.PluralCase]}function Lg(t){const e=t.toLowerCase().replace(/_/g,"-");let n=Cg[e];if(n)return n;const a=e.split("-")[0];if(n=Cg[a],n)return n;if("en"===a)return kg;throw new Error(`Missing locale data for the locale "${t}".`)}const Dg="en-US",Pg=/^\s*(�\d+:?\d*�)\s*,\s*(select|plural)\s*,/,Mg=/�\/?\*(\d+:\d+)�/gi,qg=/�(\/?[#*!]\d+):?\d*�/gi,jg=/�(\d+):?\d*�/gi,Fg=/({\s*�\d+:?\d*�\s*,\s*\S{6}\s*,[\s\S]*})/gi,Vg=/\[(�.+?�?)\]/,Gg=/\[(�.+?�?)\]|(�\/?\*\d+:\d+�)/g,Bg=/({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g,zg=/{([A-Z0-9_]+)}/g,Yg=/�I18N_EXP_(ICU(_\d+)?)�/g,Hg=/\/\*/,Ug=/\d+\:(\d+)/;function Wg(t){if(!t)return[];let e=0;const n=[],a=[],r=/[{}]/g;let i;for(r.lastIndex=0;i=r.exec(t);){const r=i.index;if("}"==i[0]){if(n.pop(),0==n.length){const n=t.substring(e,r);Pg.test(n)?a.push(Kg(n)):a.push(n),e=r+1}}else{if(0==n.length){const n=t.substring(e,r);a.push(n),e=r+1}n.push("{")}}const s=t.substring(e);return a.push(s),a}function Kg(t){const e=[],n=[];let a=1,r=0;const i=Wg(t=t.replace(Pg,(function(t,e,n){return a="select"===n?0:1,r=parseInt(e.substr(1),10),""})));for(let s=0;s<i.length;){let t=i[s++].trim();1===a&&(t=t.replace(/\s*(?:=)?(\w+)\s*/,"$1")),t.length&&e.push(t);const r=Wg(i[s++]);e.length>n.length&&n.push(r)}return'Missing key "other" in ICU statement.',e.indexOf("other")<=-1&&vt('Missing key "other" in ICU statement.'),{type:a,mainBinding:r,cases:e,values:n}}function $g(t){let e,n,a="",r=0,i=!1;for(;null!==(e=Mg.exec(t));)i?e[0]===`�/*${n}�`&&(r=e.index,i=!1):(a+=t.substring(r,e.index+e[0].length),n=e[1],i=!0);return a+=t.substr(r),a}function Jg(t,e,n,a=null){const r=[null,null],i=t.split(jg);let s=0;for(let u=0;u<i.length;u++){const t=i[u];if(1&u){const e=parseInt(t,10);r.push(-1-e),s|=tp(e)}else""!==t&&r.push(t)}return r.push(e<<2|(n?1:0)),n&&r.push(n,a),r[0]=s,r[1]=r.length-2,r}function Zg(t,e=0){let n;e|=tp(t.mainBinding);for(let a=0;a<t.values.length;a++){const r=t.values[a];for(let t=0;t<r.length;t++){const a=r[t];if("string"==typeof a)for(;n=jg.exec(a);)e|=tp(parseInt(n[1],10));else e=Zg(a,e)}}return e}const Qg=[];let Xg=-1;function tp(t){return 1<<Math.min(t,31)}const ep=[];function np(t,e,n){const a=Ae()[1];Qg[++Xg]=t,cd(!0),a.firstTemplatePass&&null===a.data[t+19]&&function(t,e,n,a){const r=Ae(),i=t.blueprint.length-19;ap=0;const s=Ge(),u=Ye()?Ge():s&&s.parent;let o=u&&u!==r[6]?u.index-19:e,l=0;ep[l]=o;const d=[];e>0&&s!==u&&d.push(s.index<<3|0);const c=[],f=[],h=(g=function(t,e){if("number"!=typeof e)return $g(t);{const n=t.indexOf(`:${e}�`)+2+e.toString().length,a=t.search(new RegExp(`�\\/\\*\\d+:${e}�`));return $g(t.substring(n,a))}}(n,a),g.replace(xp," ")).split(qg);var g;for(let p=0;p<h.length;p++){let t=h[p];if(1&p)if("/"===t.charAt(0)){if("#"===t.charAt(1)){const e=parseInt(t.substr(2),10);o=ep[--l],d.push(e<<3|5)}}else{const e=parseInt(t.substr(1),10);d.push(e<<3|0,o<<17|1),"#"===t.charAt(0)&&(ep[++l]=o=e)}else{const e=Wg(t);for(let t=0;t<e.length;t++)if(1&t){const n=i+ap++;d.push(hi,"",n,o<<17|1);const a=e[t],r=Zg(a);mp(f,a,n,n);const s=f.length-1;c.push(tp(a.mainBinding),3,-1-a.mainBinding,n<<2|2,s,r,2,n<<2|3,s)}else if(""!==e[t]){const n=e[t],a=n.match(jg),r=i+ap++;d.push(a?"":n,r,o<<17|1),a&&gt(Jg(n,r),c)}}}ap>0&&function(t,e){if(e>0){const n=t[1];if(n.firstTemplatePass){for(let a=0;a<e;a++)n.blueprint.push(null),n.data.push(null),t.push(null);n.expandoInstructions?n.expandoInstructions.push(e):n.expandoStartIndex+=e}}}(r,ap),t.data[e+19]={vars:ap,create:d,update:c,icus:f.length?f:null}}(a,t,e,n)}let ap;function rp(t,e,n,a){const r=t.next;n||(n=e),n===e&&t!==e.child?(t.next=e.child,e.child=t):n!==e&&t!==n.next?(t.next=n.next,n.next=t):t.next=null,e!==a[6]&&(t.parent=e);let i=t.next;for(;i;)i.next===t&&(i.next=r),i=i.next;if(1===t.type)return Fs(a,t,t.projection,da(a)),t;Ms(be(t,a),t,a);const s=a[t.index];return 0!==t.type&&Zt(s)&&Ms(s[7],t,a),t}function ip(t,e={}){let n=t;if(Vg.test(t)){const t={},e=[0];n=n.replace(Gg,(n,a,r)=>{const i=a||r,s=t[i]||[];if(s.length||(i.split("|").forEach(t=>{const e=t.match(Ug),n=e?parseInt(e[1],10):0,a=Hg.test(t);s.push([n,a,t])}),t[i]=s),!s.length)throw new Error("i18n postprocess: unmatched placeholder - "+i);const u=e[e.length-1];let o=0;for(let t=0;t<s.length;t++)if(s[t][0]===u){o=t;break}const[l,d,c]=s[o];return d?e.pop():u!==l&&e.push(l),s.splice(o,1),c})}return Object.keys(e).length?(n=n.replace(Bg,(t,n,a,r,i,s)=>e.hasOwnProperty(a)?`${n}${e[a]}${s}`:t),n=n.replace(zg,(t,n)=>e.hasOwnProperty(n)?e[n]:t),n=n.replace(Yg,(t,n)=>{if(e.hasOwnProperty(n)){const a=e[n];if(!a.length)throw new Error(`i18n postprocess: unmatched ICU - ${t} with key: ${n}`);return a.shift()}return t}),n):n}function sp(){!function(t){const e=Ae(),n=Qg[Xg--],a=t.data[n+19];let r=Ge();const i=op(n,a.create,0,e);for(let s=n+1;s<=r.index-19;s++)-1===i.indexOf(s)&&lp(s,e)}(Ae()[1]),cd(!1)}function up(t,e,n,a,r){const i=Ge();t[e+19]=a;const s=Ai(t[1],t[6],e,n,r,null);return i.next===s&&(i.next=null),s}function op(t,e,n,a){const r=Ae()[12];let i=null,s=null;const u=[];for(let o=0;o<e.length;o++){const n=e[o];if("string"==typeof n){const t=Os(n,r),l=e[++o];s=i,i=up(a,l,3,t,null),u.push(l),He()}else if("number"==typeof n)switch(7&n){case 1:const r=n>>>17;let l;l=r===t?a[6]:ye(r,a),s=rp(i,l,s,a);break;case 0:const d=n>>>3;u.push(d),s=i,i=ye(d,a),i&&Be(i,3===i.type);break;case 5:s=i=ye(n>>>3,a),Be(i,!1);break;case 4:es(n>>>3,e[++o],e[++o],a);break;default:throw new Error(`Unable to determine the type of mutate operation for "${n}"`)}else switch(n){case hi:const t=e[++o],l=e[++o],d=r.createComment(t);s=i,i=up(a,l,5,d,null),u.push(l),qr(d,a),i.activeCaseIndex=null,He();break;case fi:const c=e[++o],f=e[++o];s=i,i=up(a,f,3,r.createElement(c),c),u.push(f);break;default:throw new Error(`Unable to determine the type of mutate operation for "${n}"`)}}return He(),u}function lp(t,e){const n=ye(t,e),a=pe(t,e);a&&js(e[12],a);const r=_l(t);if(Zt(r)){const t=r;0!==n.type&&js(e[12],t[7])}n.flags|=32}function dp(t,e,n){np(t,e,n),sp()}function cp(t,e){!function(t,e,n){const a=Ge().index-19,r=[];for(let i=0;i<n.length;i+=2){const s=n[i],u=n[i+1].split(Fg);for(let n=0;n<u.length;n++){const i=u[n];if(1&n)throw new Error("ICU expressions are not yet supported in attributes");if(""!==i)if(i.match(jg))t.firstTemplatePass&&null===t.data[e+19]&&gt(Jg(i,a,s),r);else{const t=Ae();es(a,s,i,t);const e=ye(a,t),n=e.inputs&&e.inputs[s];n&&ys(t,n,i)}}}t.firstTemplatePass&&null===t.data[e+19]&&(t.data[e+19]=r)}(Ae()[1],t,e)}let fp=0,hp=0;function gp(t){return Uo(Ae(),t)!==ci&&(fp|=1<<hp),hp++,gp}function pp(t){if(hp){const e=Ae(),n=e[1].data[t+19];let a,r=null;Array.isArray(n)?a=n:(a=n.update,r=n.icus),function t(e,n,a,r,i,s=!1){let u=!1;for(let o=0;o<e.length;o++){const l=e[o],d=e[++o];if(s||l&r){let s="";for(let l=o+1;l<=o+d;l++){const o=e[l];if("string"==typeof o)s+=o;else if("number"==typeof o)if(o<0)s+=vn(i[a-o]);else{const d=o>>>2;let c,f,h;switch(3&o){case 1:Yi(d,e[++l],s,e[++l]);break;case 0:vs(i,d,s);break;case 2:if(c=e[++l],f=n[c],h=ye(d,i),null!==h.activeCaseIndex){const t=f.remove[h.activeCaseIndex];for(let e=0;e<t.length;e++){const a=t[e];switch(7&a){case 3:lp(a>>>3,i);break;case 6:const r=ye(t[e+1]>>>3,i).activeCaseIndex;null!==r&&gt(n[a>>>3].remove[r],t)}}}const o=bp(f,s);h.activeCaseIndex=-1!==o?o:null,op(-1,f.create[o],0,i),u=!0;break;case 3:c=e[++l],f=n[c],h=ye(d,i),t(f.update[h.activeCaseIndex],n,a,r,i,u)}}}}o+=d}}(a,r,e[7]-hp-1,fp,e),fp=0,hp=0}}function bp(t,e){let n=t.cases.indexOf(e);if(-1===n)switch(t.type){case 1:{const a=function(t,e){switch(Eg(e)(t)){case 0:return"zero";case 1:return"one";case 2:return"two";case 3:return"few";case 4:return"many";default:return"other"}}(e,Sp);n=t.cases.indexOf(a),-1===n&&"other"!==a&&(n=t.cases.indexOf("other"));break}case 0:n=t.cases.indexOf("other")}return n}function mp(t,e,n,a){const r=[],i=[],s=[],u=[],o=[];for(let l=0;l<e.values.length;l++){const d=e.values[l],c=[];for(let t=0;t<d.length;t++){const e=d[t];if("string"!=typeof e){const n=c.push(e)-1;d[t]=`\x3c!--�${n}�--\x3e`}}const f=yp(d.join(""),n,c,t,a);r.push(f.create),i.push(f.remove),s.push(f.update),u.push(f.vars),o.push(f.childIcus)}t.push({type:e.type,vars:u,childIcus:o,cases:e.cases,create:r,remove:i,update:s}),ap+=Math.max(...u)}function yp(t,e,n,a,r){const i=new $a(document).getInertBodyElement(t);if(!i)throw new Error("Unable to generate inert body element");const s={vars:0,childIcus:[],create:[],remove:[],update:[]};return function t(e,n,a,r,i,s){if(e){const u=[];for(;e;){const o=e.nextSibling,l=s+ ++n.vars;switch(e.nodeType){case Node.ELEMENT_NODE:const o=e,d=o.tagName.toLowerCase();if(sr.hasOwnProperty(d)){n.create.push(fi,d,l,a<<17|1);const u=o.attributes;for(let t=0;t<u.length;t++){const e=u.item(t),a=e.name.toLowerCase();e.value.match(jg)?lr.hasOwnProperty(a)&&gt(ur[a]?Jg(e.value,l,e.name,Qa):or[a]?Jg(e.value,l,e.name,Xa):Jg(e.value,l,e.name),n.update):n.create.push(l<<3|4,e.name,e.value)}t(e.firstChild,n,l,r,i,s),n.remove.push(l<<3|3)}else n.vars--;break;case Node.TEXT_NODE:const c=e.textContent||"",f=c.match(jg);n.create.push(f?"":c,l,a<<17|1),n.remove.push(l<<3|3),f&&gt(Jg(c,l),n.update);break;case Node.COMMENT_NODE:const h=vp.exec(e.textContent||"");if(h){const t=parseInt(h[1],10);n.create.push(hi,"",l,a<<17|1),u.push([r[t],l])}else n.vars--;break;default:n.vars--}e=o}for(let t=0;t<u.length;t++){const e=u[t][0],a=u[t][1];mp(i,e,a,s+n.vars);const r=i.length-1;n.vars+=Math.max(...i[r].vars),n.childIcus.push(r);const o=Zg(e);n.update.push(tp(e.mainBinding),3,-1-e.mainBinding,a<<2|2,r,o,2,a<<2|3,r),n.remove.push(r<<3|6,a<<3|3)}}}((mr(i)||i).firstChild,s,e,n,a,r),s}const vp=/�(\d+)�/,xp=/\uE500/g;let _p={};function Tp(t={translations:{}}){_p=t.translations}const wp=/\{\$(.*?)\}/g;function Op(t,e){return void 0!==_p[t]&&(t=_p[t]),void 0!==e&&Object.keys(e).length?t.replace(wp,(t,n)=>e[n]||""):t}let Sp=Dg;function Ip(t){null==t&&vt("Expected localeId to be defined"),"string"==typeof t&&(Sp=t.toLowerCase().replace(/_/g,"-"))}const Np=new Map;function Cp(t,e){const n=Np.get(t);Rp(t,n&&n.moduleType,e.moduleType),Np.set(t,e)}function Rp(t,e,n){if(e&&e!==n)throw new Error(`Duplicate module registered for ${t} - ${j(e)} vs ${j(e.name)}`)}function Ap(t){if(null!==t.ngModuleDef.id){const e=t.ngModuleDef.id;Rp(e,Np.get(e),t),Np.set(e,t)}let e=t.ngModuleDef.imports;e instanceof Function&&(e=e()),e&&e.forEach(t=>Ap(t))}function kp(t){return Np.get(t)}const Ep={provide:Yc,useClass:class extends Yc{constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){const e=Ht(t);return new Ig(e,this.ngModule)}},deps:[ft]};class Lp extends ft{constructor(t,e){super(),this._parent=e,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[];const n=$t(t),a=t[kt]||null;a&&Ip(a),this._bootstrapComponents=In(n.bootstrap),this._r3Injector=Lu(t,e,[{provide:ft,useValue:this},Ep],j(t)),this.instance=this.get(t)}get(t,e=Bu.THROW_IF_NOT_FOUND,n=C.Default){return t===Bu||t===ft||t===$?this:this._r3Injector.get(t,e,n)}get componentFactoryResolver(){return this.get(Yc)}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class Dp extends ht{constructor(t){super(),this.moduleType=t,null!==$t(t)&&Ap(t)}create(t){return new Lp(this.moduleType,t)}}function Pp(t,e,n,a){return Ot(()=>{const r=t,i=r.prototype?Object.getPrototypeOf(r.prototype):null,s=i&&i.constructor;null!==e&&(void 0===r.decorators||s&&s.decorators===r.decorators?r.decorators=e:r.decorators.push(...e)),null!==n&&(r.ctorParameters=n),null!==a&&(r.propDecorators=void 0===r.propDecorators||s&&s.propDecorators===r.propDecorators?a:Object.assign({},r.propDecorators,a))})}function Mp(t,e,n){const a=Qe()+t,r=Ae();return Ue()?Fo(r,a,n?e.call(n):e()):Vo(r,a)}function qp(t,e,n,a){const r=Ae(),i=Qe()+t;return Go(r,i,n)?Fo(r,i+1,a?e.call(a,n):e(n)):Vo(r,i+1)}function jp(t,e,n,a,r){const i=Qe()+t,s=Ae();return Bo(s,i,n,a)?Fo(s,i+2,r?e.call(r,n,a):e(n,a)):Vo(s,i+2)}function Fp(t,e,n,a,r,i){const s=Qe()+t,u=Ae();return zo(u,s,n,a,r)?Fo(u,s+3,i?e.call(i,n,a,r):e(n,a,r)):Vo(u,s+3)}function Vp(t,e,n,a,r,i,s){const u=Qe()+t,o=Ae();return Yo(o,u,n,a,r,i)?Fo(o,u+4,s?e.call(s,n,a,r,i):e(n,a,r,i)):Vo(o,u+4)}function Gp(t,e,n,a,r,i,s,u){const o=Qe()+t,l=Ae(),d=Yo(l,o,n,a,r,i);return Go(l,o+4,s)||d?Fo(l,o+5,u?e.call(u,n,a,r,i,s):e(n,a,r,i,s)):Vo(l,o+5)}function Bp(t,e,n,a,r,i,s,u,o){const l=Qe()+t,d=Ae(),c=Yo(d,l,n,a,r,i);return Bo(d,l+4,s,u)||c?Fo(d,l+6,o?e.call(o,n,a,r,i,s,u):e(n,a,r,i,s,u)):Vo(d,l+6)}function zp(t,e,n,a,r,i,s,u,o,l){const d=Qe()+t,c=Ae();let f=Yo(c,d,n,a,r,i);return zo(c,d+4,s,u,o)||f?Fo(c,d+7,l?e.call(l,n,a,r,i,s,u,o):e(n,a,r,i,s,u,o)):Vo(c,d+7)}function Yp(t,e,n,a,r,i,s,u,o,l,d){const c=Qe()+t,f=Ae(),h=Yo(f,c,n,a,r,i);return Yo(f,c+4,s,u,o,l)||h?Fo(f,c+8,d?e.call(d,n,a,r,i,s,u,o,l):e(n,a,r,i,s,u,o,l)):Vo(f,c+8)}function Hp(t,e,n,a){let r=Qe()+t,i=!1;const s=Ae();for(let u=0;u<n.length;u++)Go(s,r++,n[u])&&(i=!0);return i?Fo(s,r,e.apply(a,n)):Vo(s,r)}function Up(t,e){const n=Ae()[1];let a;const r=t+19;n.firstTemplatePass?(a=function(t,e){if(e)for(let n=e.length-1;n>=0;n--){const a=e[n];if(t===a.name)return a}throw new Error(`The pipe '${t}' could not be found!`)}(e,n.pipeRegistry),n.data[r]=a,a.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(r,a.onDestroy)):a=n.data[r];const i=a.factory();return vl(t,i),i}function Wp(t,e,n){const a=_l(t);return Xp(Qp(t)?qp(e,a.transform,n,a):a.transform(n))}function Kp(t,e,n,a){const r=_l(t);return Xp(Qp(t)?jp(e,r.transform,n,a,r):r.transform(n,a))}function $p(t,e,n,a,r){const i=_l(t);return Xp(Qp(t)?Fp(e,i.transform,n,a,r,i):i.transform(n,a,r))}function Jp(t,e,n,a,r,i){const s=_l(t);return Xp(Qp(t)?Vp(e,s.transform,n,a,r,i,s):s.transform(n,a,r,i))}function Zp(t,e,n){const a=_l(t);return Xp(Qp(t)?Hp(e,a.transform,n,a):a.transform.apply(a,n))}function Qp(t){return Ae()[1].data[t+19].pure}function Xp(t){if(Mo.isWrapped(t)){t=Mo.unwrap(t);const e=Ae();e[e[7]]=ci}return t}class tb extends a.a{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,e,n){let a,i=t=>null,s=()=>null;t&&"object"==typeof t?(a=this.__isAsync?e=>{setTimeout(()=>t.next(e))}:e=>{t.next(e)},t.error&&(i=this.__isAsync?e=>{setTimeout(()=>t.error(e))}:e=>{t.error(e)}),t.complete&&(s=this.__isAsync?()=>{setTimeout(()=>t.complete())}:()=>{t.complete()})):(a=this.__isAsync?e=>{setTimeout(()=>t(e))}:e=>{t(e)},e&&(i=this.__isAsync?t=>{setTimeout(()=>e(t))}:t=>{e(t)}),n&&(s=this.__isAsync?()=>{setTimeout(()=>n())}:()=>{n()}));const u=super.subscribe(a,i,s);return t instanceof r.a&&t.add(u),u}}function eb(){return this._results[Lo()]()}class nb{constructor(){this.dirty=!0,this._results=[],this.changes=new tb,this.length=0;const t=Lo(),e=nb.prototype;e[t]||(e[t]=eb)}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,e){return this._results.reduce(t,e)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t){this._results=pt(t),this.dirty=!1,this.length=this._results.length,this.last=this._results[this.length-1],this.first=this._results[0]}notifyOnChanges(){this.changes.emit(this)}setDirty(){this.dirty=!0}destroy(){this.changes.complete(),this.changes.unsubscribe()}}class ab{constructor(t){this.queryList=t,this.matches=null}clone(){return new ab(this.queryList)}setDirty(){this.queryList.setDirty()}}class rb{constructor(t=[]){this.queries=t}createEmbeddedView(t){const e=t.queries;if(null!==e){const n=null!==t.contentQueries?t.contentQueries[0]:e.length,a=new Array(n);for(let t=0;t<n;t++){const n=e.getByIndex(t);a[t]=this.queries[n.indexInDeclarationView].clone()}return new rb(a)}return null}insertView(t){this.dirtyQueriesWithMatches(t)}detachView(t){this.dirtyQueriesWithMatches(t)}dirtyQueriesWithMatches(t){for(let e=0;e<this.queries.length;e++)null!==wb(t,e).matches&&this.queries[e].setDirty()}}class ib{constructor(t,e,n,a=null){this.predicate=t,this.descendants=e,this.isStatic=n,this.read=a}}class sb{constructor(t=[]){this.queries=t}elementStart(t,e){for(let n of this.queries)n.elementStart(t,e)}elementEnd(t){for(let e of this.queries)e.elementEnd(t)}embeddedTView(t){let e=null;for(let n=0;n<this.length;n++){const a=null!==e?e.length:0,r=this.getByIndex(n).embeddedTView(t,a);r&&(r.indexInDeclarationView=n,null!==e?e.push(r):e=[r])}return null!==e?new sb(e):null}template(t,e){for(let n of this.queries)n.template(t,e)}getByIndex(t){return this.queries[t]}get length(){return this.queries.length}track(t){this.queries.push(t)}}class ub{constructor(t,e=-1){this.metadata=t,this.matches=null,this.indexInDeclarationView=-1,this.crossesNgTemplate=!1,this._appliesToNextNode=!0,this._declarationNodeIndex=e}elementStart(t,e){this.isApplyingToNode(e)&&this.matchTNode(t,e)}elementEnd(t){this._declarationNodeIndex===t.index&&(this._appliesToNextNode=!1)}template(t,e){this.elementStart(t,e)}embeddedTView(t,e){return this.isApplyingToNode(t)?(this.crossesNgTemplate=!0,this.addMatch(-t.index,e),new ub(this.metadata)):null}isApplyingToNode(t){return this._appliesToNextNode&&!1===this.metadata.descendants?this._declarationNodeIndex===(t.parent?t.parent.index:-1):this._appliesToNextNode}matchTNode(t,e){if(Array.isArray(this.metadata.predicate)){const n=this.metadata.predicate;for(let a=0;a<n.length;a++)this.matchTNodeWithReadOption(t,e,ob(e,n[a]))}else{const n=this.metadata.predicate;n===Of?0===e.type&&this.matchTNodeWithReadOption(t,e,-1):this.matchTNodeWithReadOption(t,e,Oa(e,t,n,!1,!1))}}matchTNodeWithReadOption(t,e,n){if(null!==n){const a=this.metadata.read;if(null!==a)if(a===Kc||a===Nf||a===Of&&0===e.type)this.addMatch(e.index,-2);else{const n=Oa(e,t,a,!1,!1);null!==n&&this.addMatch(e.index,n)}else this.addMatch(e.index,n)}}addMatch(t,e){null===this.matches?this.matches=[t,e]:this.matches.push(t,e)}}function ob(t,e){const n=t.localNames;if(null!==n)for(let a=0;a<n.length;a+=2)if(n[a]===e)return n[a+1];return null}function lb(t,e,n,a){return-1===n?function(t,e){return 3===t.type||4===t.type?$s(Kc,t,e):0===t.type?Js(Of,Kc,t,e):null}(e,t):-2===n?function(t,e,n){return n===Kc?$s(Kc,e,t):n===Of?Js(Of,Kc,e,t):n===Nf?Zs(Nf,Kc,e,t):void 0}(t,e,a):Sa(t[1].data,t,n,e)}function db(t,e,n){const a=t[5].queries[n];if(null===a.matches){const n=t[1].data,r=e.matches,i=new Array(r.length/2);for(let a=0;a<r.length;a+=2){const s=r[a];i[a/2]=s<0?null:lb(t,n[s],r[a+1],e.metadata.read)}a.matches=i}return a.matches}function cb(t){const e=Ae(),n=en();nn(n+1);const a=wb(e[1],n);if(t.dirty&&Ue()===a.metadata.isStatic){if(null===a.matches)t.reset([]);else{const r=a.crossesNgTemplate?function t(e,n,a){const r=e[1].queries.getByIndex(n),i=r.matches;if(null!==i){const s=db(e,r,n);for(let n=0;n<i.length;n+=2){const r=i[n];if(r>0)a.push(s[n/2]);else{const s=i[n+1],u=e[-r];for(let e=9;e<u.length;e++){const n=u[e];n[17]===n[3]&&t(n,s,a)}if(null!==u[5])for(let e of u[5])t(e,s,a)}}}return a}(e,n,[]):db(e,a,n);t.reset(r),t.notifyOnChanges()}return!0}return!1}function fb(t,e,n){gb(Ae(),t,e,n,!0)}function hb(t,e,n){gb(Ae(),t,e,n,!1)}function gb(t,e,n,a,r){const i=t[1];i.firstTemplatePass&&(Tb(i,new ib(e,n,r,a),-1),r&&(i.staticViewQueries=!0)),_b(t)}function pb(){return xb(Ae(),en())}function bb(t,e,n,a){yb(Ae(),e,n,a,!1,Ge(),t)}function mb(t,e,n,a){yb(Ae(),e,n,a,!0,Ge(),t)}function yb(t,e,n,a,r,i,s){const u=t[1];u.firstTemplatePass&&(Tb(u,new ib(e,n,r,a),i.index),function(t,e){const n=t.contentQueries||(t.contentQueries=[]);e!==(t.contentQueries.length?n[n.length-1]:-1)&&n.push(t.queries.length-1,e)}(u,s),r&&(u.staticContentQueries=!0)),_b(t)}function vb(){return xb(Ae(),en())}function xb(t,e){return t[5].queries[e].queryList}function _b(t){const e=new nb;!function(t,e,n){const a=gs(t);a.push(e),t[1].firstTemplatePass&&ps(t).push(n,a.length-1)}(t,e,e.destroy),null===t[5]&&(t[5]=new rb),t[5].queries.push(new ab(e))}function Tb(t,e,n){null===t.queries&&(t.queries=new sb),t.queries.track(new ub(e,n))}function wb(t,e){return t.queries.getByIndex(e)}function Ob(t,e){return Js(Of,Kc,t,e)}function Sb(t=C.Default){const e=Qs(!0);if(null!=e||t&C.Optional)return e;throw new Error("No provider for ChangeDetectorRef!")}const Ib=(()=>({"ɵɵattribute":Wo,"ɵɵattributeInterpolate1":al,"ɵɵattributeInterpolate2":rl,"ɵɵattributeInterpolate3":il,"ɵɵattributeInterpolate4":sl,"ɵɵattributeInterpolate5":ul,"ɵɵattributeInterpolate6":ol,"ɵɵattributeInterpolate7":ll,"ɵɵattributeInterpolate8":dl,"ɵɵattributeInterpolateV":cl,"ɵɵdefineBase":Bt,"ɵɵdefineComponent":Pt,"ɵɵdefineDirective":zt,"ɵɵdefineInjectable":k,"ɵɵdefineInjector":L,"ɵɵdefineNgModule":Ft,"ɵɵdefinePipe":Yt,"ɵɵdirectiveInject":Tl,"ɵɵgetFactoryOf":Ra,"ɵɵgetInheritedFactory":Aa,"ɵɵinject":rt,"ɵɵinjectAttribute":wl,"ɵɵinjectPipeChangeDetectorRef":Sb,"ɵɵtemplateRefExtractor":Ob,"ɵɵNgOnChangesFeature":wc,"ɵɵProvidersFeature":jc,"ɵɵInheritDefinitionFeature":Nc,"ɵɵcontainer":gl,"ɵɵnextContext":ud,"ɵɵcontainerRefreshStart":bl,"ɵɵcontainerRefreshEnd":ml,"ɵɵnamespaceHTML":gn,"ɵɵnamespaceMathML":hn,"ɵɵnamespaceSVG":fn,"ɵɵenableBindings":Ce,"ɵɵdisableBindings":Re,"ɵɵallocHostVars":ko,"ɵɵelementStart":zl,"ɵɵelementEnd":Yl,"ɵɵelement":Hl,"ɵɵelementContainerStart":Kl,"ɵɵelementContainerEnd":$l,"ɵɵelementContainer":Jl,"ɵɵpureFunction0":Mp,"ɵɵpureFunction1":qp,"ɵɵpureFunction2":jp,"ɵɵpureFunction3":Fp,"ɵɵpureFunction4":Vp,"ɵɵpureFunction5":Gp,"ɵɵpureFunction6":Bp,"ɵɵpureFunction7":zp,"ɵɵpureFunction8":Yp,"ɵɵpureFunctionV":Hp,"ɵɵgetCurrentView":Xl,"ɵɵrestoreView":Ve,"ɵɵlistener":nd,"ɵɵload":_l,"ɵɵprojection":fd,"ɵɵupdateSyntheticHostBinding":tc,"ɵɵcomponentHostSyntheticListener":ad,"ɵɵpipeBind1":Wp,"ɵɵpipeBind2":Kp,"ɵɵpipeBind3":$p,"ɵɵpipeBind4":Jp,"ɵɵpipeBindV":Zp,"ɵɵprojectionDef":ld,"ɵɵhostProperty":Xd,"ɵɵproperty":Ho,"ɵɵpropertyInterpolate":hd,"ɵɵpropertyInterpolate1":gd,"ɵɵpropertyInterpolate2":pd,"ɵɵpropertyInterpolate3":bd,"ɵɵpropertyInterpolate4":md,"ɵɵpropertyInterpolate5":yd,"ɵɵpropertyInterpolate6":vd,"ɵɵpropertyInterpolate7":xd,"ɵɵpropertyInterpolate8":_d,"ɵɵpropertyInterpolateV":Td,"ɵɵpipe":Up,"ɵɵqueryRefresh":cb,"ɵɵviewQuery":hb,"ɵɵstaticViewQuery":fb,"ɵɵstaticContentQuery":mb,"ɵɵloadViewQuery":pb,"ɵɵcontentQuery":bb,"ɵɵloadContentQuery":vb,"ɵɵreference":xl,"ɵɵelementHostAttrs":Ul,"ɵɵclassMap":kl,"ɵɵclassMapInterpolate1":Pd,"ɵɵclassMapInterpolate2":Md,"ɵɵclassMapInterpolate3":qd,"ɵɵclassMapInterpolate4":jd,"ɵɵclassMapInterpolate5":Fd,"ɵɵclassMapInterpolate6":Vd,"ɵɵclassMapInterpolate7":Gd,"ɵɵclassMapInterpolate8":Bd,"ɵɵclassMapInterpolateV":zd,"ɵɵstyling":Ol,"ɵɵstyleMap":Al,"ɵɵstyleProp":Il,"ɵɵstylePropInterpolate1":Yd,"ɵɵstylePropInterpolate2":Hd,"ɵɵstylePropInterpolate3":Ud,"ɵɵstylePropInterpolate4":Wd,"ɵɵstylePropInterpolate5":Kd,"ɵɵstylePropInterpolate6":$d,"ɵɵstylePropInterpolate7":Jd,"ɵɵstylePropInterpolate8":Zd,"ɵɵstylePropInterpolateV":Qd,"ɵɵstyleSanitizer":Sl,"ɵɵstylingApply":Pl,"ɵɵclassProp":Cl,"ɵɵselect":wi,"ɵɵtemplate":pl,"ɵɵtext":wd,"ɵɵtextBinding":Od,"ɵɵtextInterpolate":Sd,"ɵɵtextInterpolate1":Id,"ɵɵtextInterpolate2":Nd,"ɵɵtextInterpolate3":Cd,"ɵɵtextInterpolate4":Rd,"ɵɵtextInterpolate5":Ad,"ɵɵtextInterpolate6":kd,"ɵɵtextInterpolate7":Ed,"ɵɵtextInterpolate8":Ld,"ɵɵtextInterpolateV":Dd,"ɵɵembeddedViewStart":Zl,"ɵɵembeddedViewEnd":Ql,"ɵɵi18n":dp,"ɵɵi18nAttributes":cp,"ɵɵi18nExp":gp,"ɵɵi18nStart":np,"ɵɵi18nEnd":sp,"ɵɵi18nApply":pp,"ɵɵi18nPostprocess":ip,"ɵɵi18nLocalize":Op,"ɵɵresolveWindow":Tn,"ɵɵresolveDocument":wn,"ɵɵresolveBody":On,"ɵɵsetComponentScope":Mt,"ɵɵsetNgModuleScope":Vt,"ɵɵsanitizeHtml":wr,"ɵɵsanitizeStyle":Or,"ɵɵdefaultStyleSanitizer":Ar,"ɵɵsanitizeResourceUrl":Ir,"ɵɵsanitizeScript":Nr,"ɵɵsanitizeUrl":Sr,"ɵɵsanitizeUrlOrResourceUrl":Rr}))(),Nb=[],Cb=[];let Rb=!1;function Ab(){if(!Rb){Rb=!0;try{for(let t=Cb.length-1;t>=0;t--){const{moduleType:e,ngModule:n}=Cb[t];n.declarations&&n.declarations.every(kb)&&(Cb.splice(t,1),qb(e,n))}}finally{Rb=!1}}}function kb(t){return Array.isArray(t)?t.every(kb):!!G(t)}function Eb(t,e={}){Lb(t,e),function(t,e){Cb.push({moduleType:t,ngModule:e})}(t,e)}function Lb(t,e,n=!1){const a=pt(e.declarations||Nb);let r=null;Object.defineProperty(t,At,{configurable:!0,get:()=>(null===r&&(r=W().compileNgModule(Ib,`ng:///${t.name}/ngModuleDef.js`,{type:t,bootstrap:pt(e.bootstrap||Nb).map(G),declarations:a.map(G),imports:pt(e.imports||Nb).map(G).map(Vb),exports:pt(e.exports||Nb).map(G).map(Vb),emitInline:!0,schemas:e.schemas?pt(e.schemas):null,id:e.id||null})),r)});let i=null;Object.defineProperty(t,q,{get:()=>{if(null===i){const n={name:t.name,type:t,deps:hu(t),providers:e.providers||Nb,imports:[(e.imports||Nb).map(G),(e.exports||Nb).map(G)]};i=W().compileInjector(Ib,`ng:///${t.name}/ngInjectorDef.js`,n)}return i},configurable:!1})}let Db=new Map,Pb=new Map;function Mb(){Db=new Map,Pb=new Map,Cb.length=0}function qb(t,e){const n=pt(e.declarations||Nb),a=Fb(t);n.forEach(e=>{e.hasOwnProperty(Nt)?jb(Ht(e),a):e.hasOwnProperty(Ct)||e.hasOwnProperty(Rt)||(e.ngSelectorScope=t)})}function jb(t,e){t.directiveDefs=()=>Array.from(e.compilation.directives).map(t=>t.hasOwnProperty(Nt)?Ht(t):Ut(t)).filter(t=>!!t),t.pipeDefs=()=>Array.from(e.compilation.pipes).map(t=>Wt(t)),t.schemas=e.schemas,t.tView=null}function Fb(t,e){if(!Gb(t))throw new Error(t.name+" does not have an ngModuleDef");const n=$t(t);if(null!==n.transitiveCompileScopes)return n.transitiveCompileScopes;const a={schemas:n.schemas||null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set}};return In(n.declarations).forEach(t=>{Wt(t)?a.compilation.pipes.add(t):a.compilation.directives.add(t)}),In(n.imports).forEach(t=>{const n=t;if(!Gb(n))throw new Error(`Importing ${n.name} which does not have an ngModuleDef`);e&&e(n);const r=Fb(n,e);r.exported.directives.forEach(t=>a.compilation.directives.add(t)),r.exported.pipes.forEach(t=>a.compilation.pipes.add(t))}),In(n.exports).forEach(t=>{const n=t;if(Gb(n)){const t=Fb(n,e);t.exported.directives.forEach(t=>{a.compilation.directives.add(t),a.exported.directives.add(t)}),t.exported.pipes.forEach(t=>{a.compilation.pipes.add(t),a.exported.pipes.add(t)})}else Wt(n)?a.exported.pipes.add(n):a.exported.directives.add(n)}),n.transitiveCompileScopes=a,a}function Vb(t){return function(t){return void 0!==t.ngModule}(t)?t.ngModule:t}function Gb(t){return!!$t(t)}function Bb(t,e){let n=null;!function(t,e){Co(e)&&(Io.set(t,e),No.add(t))}(t,e),Object.defineProperty(t,Nt,{get:()=>{const a=W();if(null===n){if(Co(e)){const n=[`Component '${t.name}' is not resolved:`];throw e.templateUrl&&n.push(" - templateUrl: "+e.templateUrl),e.styleUrls&&e.styleUrls.length&&n.push(" - styleUrls: "+JSON.stringify(e.styleUrls)),n.push("Did you run and wait for 'resolveComponentResources()'?"),new Error(n.join("\n"))}const r=e.templateUrl||`ng:///${t.name}/template.html`,i=Object.assign({},Hb(t,e),{typeSourceSpan:a.createParseSourceSpan("Component",t.name,r),template:e.template||"",preserveWhitespaces:e.preserveWhitespaces||!1,styles:e.styles||It,animations:e.animations,directives:[],changeDetection:e.changeDetection,pipes:new Map,encapsulation:e.encapsulation||wt.Emulated,interpolation:e.interpolation,viewProviders:e.viewProviders||null});if(i.usesInheritance&&Ub(t),n=a.compileComponent(Ib,r,i),Ab(),void 0!==t.ngSelectorScope){const e=Fb(t.ngSelectorScope);jb(n,e)}}return n},configurable:!1}),pu(t)}function zb(t,e){let n=null;Object.defineProperty(t,Ct,{get:()=>{if(null===n){const a=t&&t.name,r=`ng:///${a}/ngDirectiveDef.js`,i=W(),s=Hb(t,e);s.typeSourceSpan=i.createParseSourceSpan("Directive",a,r),s.usesInheritance&&Ub(t),n=i.compileDirective(Ib,r,s)}return n},configurable:!1}),pu(t)}function Yb(t){return Object.getPrototypeOf(t.prototype)===Object.prototype}function Hb(t,e){const n=fu().ownPropMetadata(t);return{name:t.name,type:t,typeArgumentCount:0,selector:e.selector,deps:hu(t),host:e.host||St,propMetadata:n,inputs:e.inputs||It,outputs:e.outputs||It,queries:Jb(t,n,Zb),lifecycle:{usesOnChanges:t.prototype.hasOwnProperty("ngOnChanges")},typeSourceSpan:null,usesInheritance:!Yb(t),exportAs:(a=e.exportAs,void 0===a?null:a.split(",").map(t=>t.trim())),providers:e.providers||null,viewQueries:Jb(t,n,Qb)};var a}function Ub(t){const e=Object.prototype;let n=Object.getPrototypeOf(t);for(;n&&n!==e;){if(!Ut(n)&&!Ht(n)&&!Kt(n)){const t=Kb(n);t&&Wb(n,t)}n=Object.getPrototypeOf(n)}}function Wb(t,e){let n=null;Object.defineProperty(t,Et,{get:()=>{if(null===n){const a=`ng://${t&&t.name}/ngBaseDef.js`,r=W();n=r.compileBase(Ib,a,e)}return n},configurable:!1})}function Kb(t){const e=fu().ownPropMetadata(t),n=Jb(t,e,Qb),a=Jb(t,e,Zb);let r,i,s=!1;for(const u in e)e[u].forEach(t=>{const e=t.ngMetadataName;"Input"===e?(r=r||{},r[u]=t.bindingPropertyName?[t.bindingPropertyName,u]:u):"Output"===e?(i=i||{},i[u]=t.bindingPropertyName||u):"HostBinding"!==e&&"HostListener"!==e||(s=!0)});return r||i||n.length||a.length||s?{name:t.name,type:t,inputs:r,outputs:i,viewQueries:n,queries:a,propMetadata:e}:null}function $b(t,e){return{propertyName:t,predicate:(n=e.selector,"string"==typeof n?n.split(",").map(t=>t.trim()):G(n)),descendants:e.descendants,first:e.first,read:e.read?e.read:null,static:!!e.static};var n}function Jb(t,e,n){const a=[];for(const r in e)if(e.hasOwnProperty(r)){const i=e[r];i.forEach(e=>{if(n(e)){if(!e.selector)throw new Error(`Can't construct a query for the property "${r}" of "${xn(t)}" since the query selector wasn't defined.`);if(i.some(Xb))throw new Error("Cannot combine @Input decorators with query decorators");a.push($b(r,e))}})}return a}function Zb(t){const e=t.ngMetadataName;return"ContentChild"===e||"ContentChildren"===e}function Qb(t){const e=t.ngMetadataName;return"ViewChild"===e||"ViewChildren"===e}function Xb(t){return"Input"===t.ngMetadataName}function tm(t,e){let n=null;Object.defineProperty(t,Rt,{get:()=>{if(null===n){const a=t.name;n=W().compilePipe(Ib,`ng:///${a}/ngPipeDef.js`,{type:t,typeArgumentCount:0,name:a,deps:hu(t),pipeName:e.name,pure:void 0===e.pure||e.pure})}return n},configurable:!1})}const em=y("Directive",(t={})=>t,void 0,void 0,(t,e)=>fm(t,e)),nm=y("Component",(t={})=>Object.assign({changeDetection:xt.Default},t),em,void 0,(t,e)=>cm(t,e)),am=y("Pipe",t=>Object.assign({pure:!0},t),void 0,void 0,(t,e)=>hm(t,e)),rm=_("Input",t=>({bindingPropertyName:t})),im=_("Output",t=>({bindingPropertyName:t})),sm=_("HostBinding",t=>({hostPropertyName:t})),um=_("HostListener",(t,e)=>({eventName:t,args:e})),om=Bb,lm=zb,dm=tm,cm=Wc,fm=Wc,hm=Wc,gm=y("NgModule",t=>t,void 0,void 0,(t,e)=>bm(t,e)),pm=Eb,bm=function(t,e){let n=e&&e.imports||[];e&&e.exports&&(n=[...n,e.exports]),t.ngInjectorDef=L({factory:wu(t,{useClass:t}),providers:e&&e.providers,imports:n})},mm=new K("Application Initializer");class ym{constructor(t){this.appInits=t,this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}runInitializers(){if(this.initialized)return;const t=[],e=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let n=0;n<this.appInits.length;n++){const e=this.appInits[n]();td(e)&&t.push(e)}Promise.all(t).then(()=>{e()}).catch(t=>{this.reject(t)}),0===t.length&&e(),this.initialized=!0}}const vm=new K("AppId");function xm(){return`${Tm()}${Tm()}${Tm()}`}const _m={provide:vm,useFactory:xm,deps:[]};function Tm(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const wm=new K("Platform Initializer"),Om=new K("Platform ID"),Sm=new K("appBootstrapListener"),Im=new K("Application Packages Root URL");class Nm{log(t){console.log(t)}warn(t){console.warn(t)}}const Cm=new K("LocaleId"),Rm=new K("Translations"),Am=new K("TranslationsFormat"),km=function(){var t={Error:0,Warning:1,Ignore:2};return t[t.Error]="Error",t[t.Warning]="Warning",t[t.Ignore]="Ignore",t}(),Em=!0,Lm=!1;class Dm{constructor(t,e){this.ngModuleFactory=t,this.componentFactories=e}}function Pm(){throw new Error("Runtime compiler is not loaded")}const Mm=function(t){return new Dp(t)},qm=Pm,jm=function(t){return Promise.resolve(Mm(t))},Fm=Pm,Vm=function(t){const e=Mm(t),n=In($t(t).declarations).reduce((t,e)=>{const n=Ht(e);return n&&t.push(new Ig(n)),t},[]);return new Dm(e,n)},Gm=Pm,Bm=function(t){return Promise.resolve(Vm(t))},zm=Pm;class Ym{constructor(){this.compileModuleSync=qm,this.compileModuleAsync=Fm,this.compileModuleAndAllComponentsSync=Gm,this.compileModuleAndAllComponentsAsync=zm}clearCache(){}clearCacheFor(t){}getModuleId(t){}}const Hm=new K("compilerOptions");class Um{}let Wm,Km;function $m(){const t=U.wtf;return!(!t||(Wm=t.trace,!Wm)||(Km=Wm.events,0))}function Jm(t,e=null){return Km.createScope(t,e)}function Zm(t,e){return Wm.leaveScope(t,e),e}function Qm(t,e){return Wm.beginTimeRange(t,e)}function Xm(t){Wm.endTimeRange(t)}const ty=$m();function ey(t,e){return null}const ny=ty?Jm:(t,e)=>ey,ay=ty?Zm:(t,e)=>e,ry=ty?Qm:(t,e)=>null,iy=ty?Xm:t=>null,sy=(()=>Promise.resolve(0))();function uy(t){"undefined"==typeof Zone?sy.then(()=>{t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}class oy{constructor({enableLongStackTrace:t=!1}){if(this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new tb(!1),this.onMicrotaskEmpty=new tb(!1),this.onStable=new tb(!1),this.onError=new tb(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");var e;Zone.assertZonePatched(),this._nesting=0,this._outer=this._inner=Zone.current,Zone.wtfZoneSpec&&(this._inner=this._inner.fork(Zone.wtfZoneSpec)),Zone.TaskTrackingZoneSpec&&(this._inner=this._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(this._inner=this._inner.fork(Zone.longStackTraceZoneSpec)),(e=this)._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(t,n,a,r,i,s)=>{try{return fy(e),t.invokeTask(a,r,i,s)}finally{hy(e)}},onInvoke:(t,n,a,r,i,s,u)=>{try{return fy(e),t.invoke(a,r,i,s,u)}finally{hy(e)}},onHasTask:(t,n,a,r)=>{t.hasTask(a,r),n===a&&("microTask"==r.change?(e.hasPendingMicrotasks=r.microTask,cy(e)):"macroTask"==r.change&&(e.hasPendingMacrotasks=r.macroTask))},onHandleError:(t,n,a,r)=>(t.handleError(a,r),e.runOutsideAngular(()=>e.onError.emit(r)),!1)})}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!oy.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(oy.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(t,e,n){return this._inner.run(t,e,n)}runTask(t,e,n,a){const r=this._inner,i=r.scheduleEventTask("NgZoneEvent: "+a,t,dy,ly,ly);try{return r.runTask(i,e,n)}finally{r.cancelTask(i)}}runGuarded(t,e,n){return this._inner.runGuarded(t,e,n)}runOutsideAngular(t){return this._outer.run(t)}}function ly(){}const dy={};function cy(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function fy(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function hy(t){t._nesting--,cy(t)}class gy{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new tb,this.onMicrotaskEmpty=new tb,this.onStable=new tb,this.onError=new tb}run(t){return t()}runGuarded(t){return t()}runOutsideAngular(t){return t()}runTask(t){return t()}}class py{constructor(t){this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{oy.assertNotInAngularZone(),uy(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())uy(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb(this._didWork)}this._didWork=!1});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(e=>!e.updateCb||!e.updateCb(t)||(clearTimeout(e.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,e,n){let a=-1;e&&e>0&&(a=setTimeout(()=>{this._callbacks=this._callbacks.filter(t=>t.timeoutId!==a),t(this._didWork,this.getPendingTasks())},e)),this._callbacks.push({doneCb:t,timeoutId:a,updateCb:n})}whenStable(t,e,n){if(n&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');this.addCallback(t,e,n),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(t,e,n){return[]}}class by{constructor(){this._applications=new Map,xy.addToWindow(this)}registerApplication(t,e){this._applications.set(t,e)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,e=!0){return xy.findTestabilityInTree(this,t,e)}}class my{addToWindow(t){}findTestabilityInTree(t,e,n){return null}}function yy(t){xy=t}let vy,xy=new my;function _y(t,e,n){const a=new Dp(n);if(0===Io.size)return Promise.resolve(a);const r=function(t){const e=[];return t.forEach(t=>t&&e.push(...t)),e}(t.get(Hm,[]).concat(e).map(t=>t.providers));if(0===r.length)return Promise.resolve(a);const i=W(),s=Bu.create({providers:r}).get(i.ResourceLoader);return So(t=>Promise.resolve(s.get(t))).then(()=>a)}function Ty(t){return t.isBoundToModule}const wy=new K("AllowMultipleToken");class Oy{constructor(t,e){this.name=t,this.token=e}}function Sy(t){if(vy&&!vy.destroyed&&!vy.injector.get(wy,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");vy=t.get(Ay);const e=t.get(wm,null);return e&&e.forEach(t=>t()),vy}function Iy(t,e,n=[]){const a="Platform: "+e,r=new K(a);return(e=[])=>{let i=Ry();if(!i||i.injector.get(wy,!1))if(t)t(n.concat(e).concat({provide:r,useValue:!0}));else{const t=n.concat(e).concat({provide:r,useValue:!0});Sy(Bu.create({providers:t,name:a}))}return Ny(r)}}function Ny(t){const e=Ry();if(!e)throw new Error("No platform exists!");if(!e.injector.get(t,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return e}function Cy(){vy&&!vy.destroyed&&vy.destroy()}function Ry(){return vy&&!vy.destroyed?vy:null}class Ay{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,e){const n=function(t){let e;return e="noop"===t?new gy:("zone.js"===t?void 0:t)||new oy({enableLongStackTrace:Wa()}),e}(e?e.ngZone:void 0),a=[{provide:oy,useValue:n}];return n.run(()=>{const e=Bu.create({providers:a,parent:this.injector,name:t.moduleType.name}),r=t.create(e),i=r.injector.get(Da,null);if(!i)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return Lm&&Ip(r.injector.get(Cm,Dg)||Dg),r.onDestroy(()=>Ly(this._modules,r)),n.runOutsideAngular(()=>n.onError.subscribe({next:t=>{i.handleError(t)}})),function(t,e,n){try{const a=n();return td(a)?a.catch(n=>{throw e.runOutsideAngular(()=>t.handleError(n)),n}):a}catch(a){throw e.runOutsideAngular(()=>t.handleError(a)),a}}(i,n,()=>{const t=r.injector.get(ym);return t.runInitializers(),t.donePromise.then(()=>(this._moduleDoBootstrap(r),r))})})}bootstrapModule(t,e=[]){const n=ky({},e);return function(t,e,n){return t.get(Um).createCompiler([e]).compileModuleAsync(n)}(this.injector,n,t).then(t=>this.bootstrapModuleFactory(t,n))}_moduleDoBootstrap(t){const e=t.injector.get(Ey);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(t=>e.bootstrap(t));else{if(!t.instance.ngDoBootstrap)throw new Error(`The module ${j(t.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`);t.instance.ngDoBootstrap(e)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(t=>t.destroy()),this._destroyListeners.forEach(t=>t()),this._destroyed=!0}get destroyed(){return this._destroyed}}function ky(t,e){return Array.isArray(e)?e.reduce(ky,t):Object.assign({},t,e)}let Ey=(()=>{class t{constructor(t,e,n,a,r,u){this._zone=t,this._console=e,this._injector=n,this._exceptionHandler=a,this._componentFactoryResolver=r,this._initStatus=u,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=Wa(),this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const l=new i.a(t=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{t.next(this._stable),t.complete()})}),d=new i.a(t=>{let e;this._zone.runOutsideAngular(()=>{e=this._zone.onStable.subscribe(()=>{oy.assertNotInAngularZone(),uy(()=>{this._stable||this._zone.hasPendingMacrotasks||this._zone.hasPendingMicrotasks||(this._stable=!0,t.next(!0))})})});const n=this._zone.onUnstable.subscribe(()=>{oy.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{t.next(!1)}))});return()=>{e.unsubscribe(),n.unsubscribe()}});this.isStable=Object(s.a)(l,d.pipe(t=>{return o()((e=g,function(t){let n;n="function"==typeof e?e:function(){return e};const a=Object.create(t,f);return a.source=t,a.subjectFactory=n,a})(t));var e}))}bootstrap(t,e){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let n;n=t instanceof Vc?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);const a=n instanceof Uc?null:this._injector.get(ft),r=n.create(Bu.NULL,[],e||n.selector,a);r.onDestroy(()=>{this._unloadComponent(r)});const i=r.injector.get(py,null);return i&&r.injector.get(by).registerApplication(r.location.nativeElement,i),this._loadComponent(r),Wa()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),r}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");const e=t._tickScope();try{this._runningTick=!0;for(let t of this._views)t.detectChanges();if(this._enforceNoNewChanges)for(let t of this._views)t.checkNoChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1,ay(e)}}attachView(t){const e=t;this._views.push(e),e.attachToAppRef(this)}detachView(t){const e=t;Ly(this._views,e),e.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(Sm,[]).concat(this._bootstrapListeners).forEach(e=>e(t))}_unloadComponent(t){this.detachView(t.hostView),Ly(this.components,t)}ngOnDestroy(){this._views.slice().forEach(t=>t.destroy())}get viewCount(){return this._views.length}}return t._tickScope=ny("ApplicationRef#tick()"),t})();function Ly(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}class Dy{}function Py(t){const e=kp(t);if(!e)throw jy(t);return e}function My(t){const e=kp(t);if(!e)throw jy(t);return new Dp(e)}const qy=Py;function jy(t){return new Error(`No module with ID ${t} loaded`)}class Fy{}const Vy={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"};class Gy{constructor(t,e){this._compiler=t,this._config=e||Vy}load(t){return!Lm&&this._compiler instanceof Ym?this.loadFactory(t):this.loadAndCompile(t)}loadAndCompile(t){let[e,a]=t.split("#");return void 0===a&&(a="default"),n("crnd")(e).then(t=>t[a]).then(t=>By(t,e,a)).then(t=>this._compiler.compileModuleAsync(t))}loadFactory(t){let[e,a]=t.split("#"),r="NgFactory";return void 0===a&&(a="default",r=""),n("crnd")(this._config.factoryPathPrefix+e+this._config.factoryPathSuffix).then(t=>t[a+r]).then(t=>By(t,e,a))}}function By(t,e,n){if(!t)throw new Error(`Cannot find '${n}' in '${e}'`);return t}class zy extends Xs{}class Yy extends zy{}class Hy{constructor(t,e){this.name=t,this.callback=e}}class Uy{constructor(t,e,n){this.listeners=[],this.parent=null,this._debugContext=n,this.nativeNode=t,e&&e instanceof Wy&&e.addChild(this)}get injector(){return this._debugContext.injector}get componentInstance(){return this._debugContext.component}get context(){return this._debugContext.context}get references(){return this._debugContext.references}get providerTokens(){return this._debugContext.providerTokens}}class Wy extends Uy{constructor(t,e,n){super(t,e,n),this.properties={},this.attributes={},this.classes={},this.styles={},this.childNodes=[],this.nativeElement=t}addChild(t){t&&(this.childNodes.push(t),t.parent=this)}removeChild(t){const e=this.childNodes.indexOf(t);-1!==e&&(t.parent=null,this.childNodes.splice(e,1))}insertChildrenAfter(t,e){const n=this.childNodes.indexOf(t);-1!==n&&(this.childNodes.splice(n+1,0,...e),e.forEach(e=>{e.parent&&e.parent.removeChild(e),t.parent=this}))}insertBefore(t,e){const n=this.childNodes.indexOf(t);-1===n?this.addChild(e):(e.parent&&e.parent.removeChild(e),e.parent=this,this.childNodes.splice(n,0,e))}query(t){return this.queryAll(t)[0]||null}queryAll(t){const e=[];return function t(e,n,a){e.childNodes.forEach(e=>{e instanceof Wy&&(n(e)&&a.push(e),t(e,n,a))})}(this,t,e),e}queryAllNodes(t){const e=[];return function t(e,n,a){e instanceof Wy&&e.childNodes.forEach(e=>{n(e)&&a.push(e),e instanceof Wy&&t(e,n,a)})}(this,t,e),e}get children(){return this.childNodes.filter(t=>t instanceof Wy)}triggerEventHandler(t,e){this.listeners.forEach(n=>{n.name==t&&n.callback(e)})}}function Ky(t){return t.map(t=>t.nativeElement)}class $y{constructor(t){this.nativeNode=t}get parent(){const t=this.nativeNode.parentNode;return t?new Jy(t):null}get injector(){return ic(this.nativeNode)}get componentInstance(){const t=this.nativeNode;return t&&(ec(t)||ac(t))}get context(){return ec(this.nativeNode)||nc(this.nativeNode)}get listeners(){return cc(this.nativeNode).filter(dc)}get references(){return function(t){const e=uc(t);return void 0===e.localRefs&&(e.localRefs=function(t,e){const n=t[1].data[e];if(n&&n.localNames){const e={};let a=n.index+1;for(let r=0;r<n.localNames.length;r+=2)e[n.localNames[r]]=t[a],a++;return e}return null}(e.lView,e.nodeIndex)),e.localRefs||{}}(this.nativeNode)}get providerTokens(){return function(t){const e=uc(t,!1);if(!e)return[];const n=e.lView[1],a=n.data[e.nodeIndex],r=[],i=a.directiveEnd;for(let u=65535&a.providerIndexes;u<i;u++){let t=n.data[u];void 0!==(s=t).type&&void 0!==s.template&&void 0!==s.declaredInputs&&(t=t.type),r.push(t)}var s;return r}(this.nativeNode)}}class Jy extends $y{constructor(t){super(t)}get nativeElement(){return this.nativeNode.nodeType==Node.ELEMENT_NODE?this.nativeNode:null}get name(){return this.nativeElement.nodeName}get properties(){const t=uc(this.nativeNode),e=t.lView,n=e[1].data,a=n[t.nodeIndex],r=function(t,e,n){const a={};let r=function(t,e){let n=t-1,a=e[n];for(;"string"==typeof a&&!Sn(a);)a=e[--n];return n+1}(t.propertyMetadataStartIndex,n);for(;r<t.propertyMetadataEndIndex;){let t,i=n[r];for(;!Sn(i);)t=(t||"")+vn(e[r])+n[r],i=n[++r];t=void 0===t?e[r]:t+=e[r];const s=i.split("�"),u=s[0];u&&(a[u]=s[1]&&s[2]?s[1]+t+s[2]:t),r++}return a}(a,e,n),i=function(t,e,n){const a={};let r=t.directiveEnd,i=n[r];for(;"string"==typeof i;)a[i.split("�")[0]]=e[r],i=n[++r];return a}(a,e,n),s=function(t){const e=t.classes;let n="";for(const a of Object.keys(e))e[a]&&(n=n?n+" "+a:a);return n}(this),u=Object.assign({},r,i);return s&&(u.className=u.className?u.className+" "+s:s),u}get attributes(){const t={},e=this.nativeElement;if(!e)return t;const n=uc(e),a=n.lView[1].data[n.nodeIndex].attrs,r=[];if(a){let e=0;for(;e<a.length;){const n=a[e];if("string"!=typeof n)break;t[n]=a[e+1],r.push(n.toLowerCase()),e+=2}}const i=e.attributes;for(let s=0;s<i.length;s++){const e=i[s];-1===r.indexOf(e.name)&&(t[e.name]=e.value)}return t}get styles(){return Zy(this.nativeElement,!1)}get classes(){return Zy(this.nativeElement,!0)}get childNodes(){const t=this.nativeNode.childNodes,e=[];for(let n=0;n<t.length;n++)e.push(av(t[n]));return e}get children(){const t=this.nativeElement;if(!t)return[];const e=t.children,n=[];for(let a=0;a<e.length;a++)n.push(av(e[a]));return n}query(t){return this.queryAll(t)[0]||null}queryAll(t){const e=[];return Qy(this,t,e,!0),e}queryAllNodes(t){const e=[];return Qy(this,t,e,!1),e}triggerEventHandler(t,e){this.listeners.forEach(n=>{n.name===t&&n.callback(e)})}}function Zy(t,e){if(t){const n=lc(t),a=n.lView,r=a[1].data[n.nodeIndex];return e?Un(r.classes)?new Ti(r.classes,a,!0).values:_i(r.classes):Un(r.styles)?new Ti(r.styles,a,!1).values:_i(r.styles)}return{}}function Qy(t,e,n,a){const r=uc(t.nativeNode);Xy(r.lView[1].data[r.nodeIndex],r.lView,e,n,a,t.nativeNode)}function Xy(t,e,n,a,r,i){const s=me(t,e);if(3===t.type||4===t.type){if(ev(s,n,a,r,i),Xt(t)){const s=xe(t.index,e);s&&s[1].firstChild&&Xy(s[1].firstChild,s,n,a,r,i)}else t.child&&Xy(t.child,e,n,a,r,i),s&&function t(e,n,a,r){const i=e.childNodes,s=i.length;for(let u=0;u<s;u++){const e=i[u],s=rv(e);s&&((r&&s instanceof Jy&&n(s)&&-1===a.indexOf(s)||!r&&n(s)&&-1===a.indexOf(s))&&a.push(s),t(e,n,a,r))}}(s,n,a,r);const u=e[t.index];Zt(u)&&tv(u,n,a,r,i)}else if(0===t.type){const s=e[t.index];ev(s[7],n,a,r,i),tv(s,n,a,r,i)}else if(1===t.type){const s=da(e),u=s[6].projection[t.projection];if(Array.isArray(u))for(let t of u)ev(t,n,a,r,i);else if(u){const t=s[3];Xy(t[1].data[u.index],t,n,a,r,i)}}else t.child&&Xy(t.child,e,n,a,r,i);if(i!==s){const s=2&t.flags?t.projectionNext:t.next;s&&Xy(s,e,n,a,r,i)}}function tv(t,e,n,a,r){for(let i=9;i<t.length;i++){const s=t[i];Xy(s[1].node,s,e,n,a,r)}}function ev(t,e,n,a,r){if(r!==t){const r=rv(t);if(!r)return;(a&&r instanceof Jy&&e(r)&&-1===n.indexOf(r)||!a&&e(r)&&-1===n.indexOf(r))&&n.push(r)}}const nv=new Map;function av(t){return t instanceof Node?(t.hasOwnProperty("__ng_debug__")||(t.__ng_debug__=t.nodeType==Node.ELEMENT_NODE?new Jy(t):new $y(t)),t.__ng_debug__):null}const rv=function(t){return nv.get(t)||null};function iv(t){nv.set(t.nativeNode,t)}const sv=Uy,uv=Wy,ov=Iy(null,"core",[{provide:Om,useValue:"unknown"},{provide:Ay,deps:[Bu]},{provide:by,deps:[]},{provide:Nm,deps:[]}]);function lv(){return Tf}function dv(){return wf}function cv(t){return t?(Lm&&Ip(t),t):Dg}const fv=[{provide:Ey,useClass:Ey,deps:[oy,Nm,Bu,Da,Yc,ym]},{provide:Sg,deps:[oy],useFactory:hv},{provide:ym,useClass:ym,deps:[[new w,mm]]},{provide:Ym,useClass:Ym,deps:[]},_m,{provide:vf,useFactory:lv,deps:[]},{provide:xf,useFactory:dv,deps:[]},{provide:Cm,useFactory:cv,deps:[[new T(Cm),new w,new S]]}];function hv(t){let e=[];return t.onStable.subscribe(()=>{for(;e.length;)e.pop()()}),function(t){e.push(t)}}class gv{constructor(t){}}function pv(t,e,n,a,r,i){t|=1;const{matchedQueries:s,references:u,matchedQueryIds:o}=sh(e);return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,flags:t,checkIndex:-1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:s,matchedQueryIds:o,references:u,ngContentIndex:n,childCount:a,bindings:[],bindingFlags:0,outputs:[],element:{ns:null,name:null,attrs:null,template:i?dh(i):null,componentProvider:null,componentView:null,componentRendererType:null,publicProviders:null,allProviders:null,handleEvent:r||Bf},provider:null,text:null,query:null,ngContent:null}}function bv(t,e,n,a,r,i,s=[],u,o,l,d,c){l||(l=Bf);const{matchedQueries:f,references:h,matchedQueryIds:g}=sh(n);let p=null,b=null;i&&([p,b]=mh(i)),u=u||[];const m=new Array(u.length);for(let x=0;x<u.length;x++){const[t,e,n]=u[x],[a,r]=mh(e);let i=void 0,s=void 0;switch(15&t){case 4:s=n;break;case 1:case 8:i=n}m[x]={flags:t,ns:a,name:r,nonMinifiedName:r,securityContext:i,suffix:s}}o=o||[];const y=new Array(o.length);for(let x=0;x<o.length;x++){const[t,e]=o[x];y[x]={type:0,target:t,eventName:e,propName:null}}const v=(s=s||[]).map(([t,e])=>{const[n,a]=mh(t);return[n,a,e]});return c=function(t){if(t&&"$$undefined"===t.id){const e=null!=t.encapsulation&&t.encapsulation!==wt.None||t.styles.length||Object.keys(t.data).length;t.id=e?"c"+Wf++:"$$empty"}return t&&"$$empty"===t.id&&(t=null),t||null}(c),d&&(e|=33554432),{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e|=1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:f,matchedQueryIds:g,references:h,ngContentIndex:a,childCount:r,bindings:m,bindingFlags:yh(m),outputs:y,element:{ns:p,name:b,attrs:v,template:null,componentProvider:null,componentView:d||null,componentRendererType:c,publicProviders:null,allProviders:null,handleEvent:l||Bf},provider:null,text:null,query:null,ngContent:null}}function mv(t,e,n){const a=n.element,r=t.root.selectorOrNode,i=t.renderer;let s;if(t.parent||!r){s=a.name?i.createElement(a.name,a.ns):i.createComment("");const r=oh(t,e,n);r&&i.appendChild(r,s)}else s=i.selectRootElement(r,!!a.componentRendererType&&a.componentRendererType.encapsulation===wt.ShadowDom);if(a.attrs)for(let u=0;u<a.attrs.length;u++){const[t,e,n]=a.attrs[u];i.setAttribute(s,e,n,t)}return s}function yv(t,e,n,a){for(let s=0;s<n.outputs.length;s++){const u=n.outputs[s],o=vv(t,n.nodeIndex,(i=u.eventName,(r=u.target)?`${r}:${i}`:i));let l=u.target,d=t;"component"===u.target&&(l=null,d=e);const c=d.renderer.listen(l||a,u.eventName,o);t.disposables[n.outputIndex+s]=c}var r,i}function vv(t,e,n){return a=>Xf(t,e,n,a)}function xv(t,e,n,a){if(!$f(t,e,n,a))return!1;const r=e.bindings[n],i=Mf(t,e.nodeIndex),s=i.renderElement,u=r.name;switch(15&r.flags){case 1:!function(t,e,n,a,r,i){const s=e.securityContext;let u=s?t.root.sanitizer.sanitize(s,i):i;u=null!=u?u.toString():null;const o=t.renderer;null!=i?o.setAttribute(n,r,u,a):o.removeAttribute(n,r,a)}(t,r,s,r.ns,u,a);break;case 2:!function(t,e,n,a){const r=t.renderer;a?r.addClass(e,n):r.removeClass(e,n)}(t,s,u,a);break;case 4:!function(t,e,n,a,r){let i=t.root.sanitizer.sanitize(yr.STYLE,r);if(null!=i){i=i.toString();const t=e.suffix;null!=t&&(i+=t)}else i=null;const s=t.renderer;null!=i?s.setStyle(n,a,i):s.removeStyle(n,a)}(t,r,s,u,a);break;case 8:!function(t,e,n,a,r){const i=e.securityContext;let s=i?t.root.sanitizer.sanitize(i,r):r;t.renderer.setProperty(n,a,s)}(33554432&e.flags&&32&r.flags?i.componentView:t,r,s,u,a)}return!0}function _v(t,e,n){let a=[];for(let r in n)a.push({propName:r,bindingType:n[r]});return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:-1,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,ngContentIndex:-1,matchedQueries:{},matchedQueryIds:0,references:{},childCount:0,bindings:[],bindingFlags:0,outputs:[],element:null,provider:null,text:null,query:{id:e,filterId:ih(e),bindings:a},ngContent:null}}function Tv(t){const e=t.def.nodeMatchedQueries;for(;t.parent&&rh(t);){let n=t.parentNodeDef;t=t.parent;const a=n.nodeIndex+n.childCount;for(let r=0;r<=a;r++){const a=t.def.nodes[r];67108864&a.flags&&536870912&a.flags&&(a.query.filterId&e)===a.query.filterId&&Ff(t,r).setDirty(),!(1&a.flags&&r+a.childCount<n.nodeIndex)&&67108864&a.childFlags&&536870912&a.childFlags||(r+=a.childCount)}}if(134217728&t.def.nodeFlags)for(let n=0;n<t.def.nodes.length;n++){const e=t.def.nodes[n];134217728&e.flags&&536870912&e.flags&&Ff(t,n).setDirty(),n+=e.childCount}}function wv(t,e){const n=Ff(t,e.nodeIndex);if(!n.dirty)return;let a,r=void 0;if(67108864&e.flags){const n=e.parent.parent;r=Ov(t,n.nodeIndex,n.nodeIndex+n.childCount,e.query,[]),a=qf(t,e.parent.nodeIndex).instance}else 134217728&e.flags&&(r=Ov(t,0,t.def.nodes.length-1,e.query,[]),a=t.component);n.reset(r);const i=e.query.bindings;let s=!1;for(let u=0;u<i.length;u++){const t=i[u];let e;switch(t.bindingType){case 0:e=n.first;break;case 1:e=n,s=!0}a[t.propName]=e}s&&n.notifyOnChanges()}function Ov(t,e,n,a,r){for(let i=e;i<=n;i++){const e=t.def.nodes[i],n=e.matchedQueries[a.id];if(null!=n&&r.push(Sv(t,e,n)),1&e.flags&&e.element.template&&(e.element.template.nodeMatchedQueries&a.filterId)===a.filterId){const n=Mf(t,i);if((e.childMatchedQueries&a.filterId)===a.filterId&&(Ov(t,i+1,i+e.childCount,a,r),i+=e.childCount),16777216&e.flags){const t=n.viewContainer._embeddedViews;for(let e=0;e<t.length;e++){const i=t[e],s=th(i);s&&s===n&&Ov(i,0,i.def.nodes.length-1,a,r)}}const s=n.template._projectedViews;if(s)for(let t=0;t<s.length;t++){const e=s[t];Ov(e,0,e.def.nodes.length-1,a,r)}}(e.childMatchedQueries&a.filterId)!==a.filterId&&(i+=e.childCount)}return r}function Sv(t,e,n){if(null!=n)switch(n){case 1:return Mf(t,e.nodeIndex).renderElement;case 0:return new Kc(Mf(t,e.nodeIndex).renderElement);case 2:return Mf(t,e.nodeIndex).template;case 3:return Mf(t,e.nodeIndex).viewContainer;case 4:return qf(t,e.nodeIndex).instance}}function Iv(t,e){return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:-1,flags:8,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:t,childCount:0,bindings:[],bindingFlags:0,outputs:[],element:null,provider:null,text:null,query:null,ngContent:{index:e}}}function Nv(t,e,n){const a=oh(t,e,n);a&&hh(t,n.ngContent.index,1,a,null,void 0)}function Cv(t,e){return kv(128,t,new Array(e+1))}function Rv(t,e){return kv(32,t,new Array(e))}function Av(t,e){const n=Object.keys(e),a=n.length,r=new Array(a);for(let i=0;i<a;i++){const t=n[i];r[e[t]]=t}return kv(64,t,r)}function kv(t,e,n){const a=new Array(n.length);for(let r=0;r<n.length;r++){const t=n[r];a[r]={flags:8,name:t,ns:null,nonMinifiedName:t,securityContext:null,suffix:null}}return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:e,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:-1,childCount:0,bindings:a,bindingFlags:yh(a),outputs:[],element:null,provider:null,text:null,query:null,ngContent:null}}function Ev(t,e,n){const a=new Array(n.length-1);for(let r=1;r<n.length;r++)a[r-1]={flags:8,name:null,ns:null,nonMinifiedName:null,securityContext:null,suffix:n[r]};return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:2,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:e,childCount:0,bindings:a,bindingFlags:8,outputs:[],element:null,provider:null,text:{prefix:n[0]},query:null,ngContent:null}}function Lv(t,e,n){let a;const r=t.renderer;a=r.createText(n.text.prefix);const i=oh(t,e,n);return i&&r.appendChild(i,a),{renderText:a}}function Dv(t,e){return(null!=t?t.toString():"")+e.suffix}function Pv(t,e,n,a){let r=0,i=0,s=0,u=0,o=0,l=null,d=null,c=!1,f=!1,h=null;for(let g=0;g<e.length;g++){const t=e[g];if(t.nodeIndex=g,t.parent=l,t.bindingIndex=r,t.outputIndex=i,t.renderParent=d,s|=t.flags,o|=t.matchedQueryIds,t.element){const e=t.element;e.publicProviders=l?l.element.publicProviders:Object.create(null),e.allProviders=e.publicProviders,c=!1,f=!1,t.element.template&&(o|=t.element.template.nodeMatchedQueries)}if(qv(l,t,e.length),r+=t.bindings.length,i+=t.outputs.length,!d&&3&t.flags&&(h=t),20224&t.flags){c||(c=!0,l.element.publicProviders=Object.create(l.element.publicProviders),l.element.allProviders=l.element.publicProviders);const e=0!=(32768&t.flags);0==(8192&t.flags)||e?l.element.publicProviders[Yf(t.provider.token)]=t:(f||(f=!0,l.element.allProviders=Object.create(l.element.publicProviders)),l.element.allProviders[Yf(t.provider.token)]=t),e&&(l.element.componentProvider=t)}if(l?(l.childFlags|=t.flags,l.directChildFlags|=t.flags,l.childMatchedQueries|=t.matchedQueryIds,t.element&&t.element.template&&(l.childMatchedQueries|=t.element.template.nodeMatchedQueries)):u|=t.flags,t.childCount>0)l=t,Mv(t)||(d=t);else for(;l&&g===l.nodeIndex+l.childCount;){const t=l.parent;t&&(t.childFlags|=l.childFlags,t.childMatchedQueries|=l.childMatchedQueries),l=t,d=l&&Mv(l)?l.renderParent:l}}return{factory:null,nodeFlags:s,rootNodeFlags:u,nodeMatchedQueries:o,flags:t,nodes:e,updateDirectives:n||Bf,updateRenderer:a||Bf,handleEvent:(t,n,a,r)=>e[n].element.handleEvent(t,a,r),bindingCount:r,outputCount:i,lastRenderRootNode:h}}function Mv(t){return 0!=(1&t.flags)&&null===t.element.name}function qv(t,e,n){const a=e.element&&e.element.template;if(a){if(!a.lastRenderRootNode)throw new Error("Illegal State: Embedded templates without nodes are not allowed!");if(a.lastRenderRootNode&&16777216&a.lastRenderRootNode.flags)throw new Error(`Illegal State: Last root node of a template can't have embedded views, at index ${e.nodeIndex}!`)}if(20224&e.flags&&0==(1&(t?t.flags:0)))throw new Error(`Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index ${e.nodeIndex}!`);if(e.query){if(67108864&e.flags&&(!t||0==(16384&t.flags)))throw new Error(`Illegal State: Content Query nodes need to be children of directives, at index ${e.nodeIndex}!`);if(134217728&e.flags&&t)throw new Error(`Illegal State: View Query nodes have to be top level nodes, at index ${e.nodeIndex}!`)}if(e.childCount){const a=t?t.nodeIndex+t.childCount:n-1;if(e.nodeIndex<=a&&e.nodeIndex+e.childCount>a)throw new Error(`Illegal State: childCount of node leads outside of parent, at index ${e.nodeIndex}!`)}}function jv(t,e,n,a){const r=Gv(t.root,t.renderer,t,e,n);return Bv(r,t.component,a),zv(r),r}function Fv(t,e,n){const a=Gv(t,t.renderer,null,null,e);return Bv(a,n,n),zv(a),a}function Vv(t,e,n,a){const r=e.element.componentRendererType;let i;return i=r?t.root.rendererFactory.createRenderer(a,r):t.root.renderer,Gv(t.root,i,t,e.element.componentProvider,n)}function Gv(t,e,n,a,r){const i=new Array(r.nodes.length),s=r.outputCount?new Array(r.outputCount):null;return{def:r,parent:n,viewContainerParent:null,parentNodeDef:a,context:null,component:null,nodes:i,state:13,root:t,renderer:e,oldValues:new Array(r.bindingCount),disposables:s,initIndex:-1}}function Bv(t,e,n){t.component=e,t.context=n}function zv(t){let e;ah(t)&&(e=Mf(t.parent,t.parentNodeDef.parent.nodeIndex).renderElement);const n=t.def,a=t.nodes;for(let r=0;r<n.nodes.length;r++){const i=n.nodes[r];let s;switch(Gf.setCurrentNode(t,r),201347067&i.flags){case 1:const n=mv(t,e,i);let u=void 0;if(33554432&i.flags){const e=dh(i.element.componentView);u=Gf.createComponentView(t,i,e,n)}yv(t,u,i,n),s={renderElement:n,componentView:u,viewContainer:null,template:i.element.template?Yh(t,i):void 0},16777216&i.flags&&(s.viewContainer=Vh(t,i,s));break;case 2:s=Lv(t,e,i);break;case 512:case 1024:case 2048:case 256:s=a[r],s||4096&i.flags||(s={instance:cg(t,i)});break;case 16:s={instance:fg(t,i)};break;case 16384:s=a[r],s||(s={instance:hg(t,i)}),32768&i.flags&&Bv(Mf(t,i.parent.nodeIndex).componentView,s.instance,s.instance);break;case 32:case 64:case 128:s={value:void 0};break;case 67108864:case 134217728:s=new nb;break;case 8:Nv(t,e,i),s=void 0}a[r]=s}Qv(t,Zv.CreateViewNodes),nx(t,201326592,268435456,0)}function Yv(t){Wv(t),Gf.updateDirectives(t,1),Xv(t,Zv.CheckNoChanges),Gf.updateRenderer(t,1),Qv(t,Zv.CheckNoChanges),t.state&=-97}function Hv(t){1&t.state?(t.state&=-2,t.state|=2):t.state&=-3,Lf(t,0,256),Wv(t),Gf.updateDirectives(t,0),Xv(t,Zv.CheckAndUpdate),nx(t,67108864,536870912,0);let e=Lf(t,256,512);_g(t,2097152|(e?1048576:0)),Gf.updateRenderer(t,0),Qv(t,Zv.CheckAndUpdate),nx(t,134217728,536870912,0),e=Lf(t,512,768),_g(t,8388608|(e?4194304:0)),2&t.def.flags&&(t.state&=-9),t.state&=-97,Lf(t,768,1024)}function Uv(t,e,n,a,r,i,s,u,o,l,d,c,f){return 0===n?function(t,e,n,a,r,i,s,u,o,l,d,c){switch(201347067&e.flags){case 1:return function(t,e,n,a,r,i,s,u,o,l,d,c){const f=e.bindings.length;let h=!1;return f>0&&xv(t,e,0,n)&&(h=!0),f>1&&xv(t,e,1,a)&&(h=!0),f>2&&xv(t,e,2,r)&&(h=!0),f>3&&xv(t,e,3,i)&&(h=!0),f>4&&xv(t,e,4,s)&&(h=!0),f>5&&xv(t,e,5,u)&&(h=!0),f>6&&xv(t,e,6,o)&&(h=!0),f>7&&xv(t,e,7,l)&&(h=!0),f>8&&xv(t,e,8,d)&&(h=!0),f>9&&xv(t,e,9,c)&&(h=!0),h}(t,e,n,a,r,i,s,u,o,l,d,c);case 2:return function(t,e,n,a,r,i,s,u,o,l,d,c){let f=!1;const h=e.bindings,g=h.length;if(g>0&&$f(t,e,0,n)&&(f=!0),g>1&&$f(t,e,1,a)&&(f=!0),g>2&&$f(t,e,2,r)&&(f=!0),g>3&&$f(t,e,3,i)&&(f=!0),g>4&&$f(t,e,4,s)&&(f=!0),g>5&&$f(t,e,5,u)&&(f=!0),g>6&&$f(t,e,6,o)&&(f=!0),g>7&&$f(t,e,7,l)&&(f=!0),g>8&&$f(t,e,8,d)&&(f=!0),g>9&&$f(t,e,9,c)&&(f=!0),f){let f=e.text.prefix;g>0&&(f+=Dv(n,h[0])),g>1&&(f+=Dv(a,h[1])),g>2&&(f+=Dv(r,h[2])),g>3&&(f+=Dv(i,h[3])),g>4&&(f+=Dv(s,h[4])),g>5&&(f+=Dv(u,h[5])),g>6&&(f+=Dv(o,h[6])),g>7&&(f+=Dv(l,h[7])),g>8&&(f+=Dv(d,h[8])),g>9&&(f+=Dv(c,h[9]));const p=Pf(t,e.nodeIndex).renderText;t.renderer.setValue(p,f)}return f}(t,e,n,a,r,i,s,u,o,l,d,c);case 16384:return function(t,e,n,a,r,i,s,u,o,l,d,c){const f=qf(t,e.nodeIndex),h=f.instance;let g=!1,p=void 0;const b=e.bindings.length;return b>0&&Kf(t,e,0,n)&&(g=!0,p=xg(t,f,e,0,n,p)),b>1&&Kf(t,e,1,a)&&(g=!0,p=xg(t,f,e,1,a,p)),b>2&&Kf(t,e,2,r)&&(g=!0,p=xg(t,f,e,2,r,p)),b>3&&Kf(t,e,3,i)&&(g=!0,p=xg(t,f,e,3,i,p)),b>4&&Kf(t,e,4,s)&&(g=!0,p=xg(t,f,e,4,s,p)),b>5&&Kf(t,e,5,u)&&(g=!0,p=xg(t,f,e,5,u,p)),b>6&&Kf(t,e,6,o)&&(g=!0,p=xg(t,f,e,6,o,p)),b>7&&Kf(t,e,7,l)&&(g=!0,p=xg(t,f,e,7,l,p)),b>8&&Kf(t,e,8,d)&&(g=!0,p=xg(t,f,e,8,d,p)),b>9&&Kf(t,e,9,c)&&(g=!0,p=xg(t,f,e,9,c,p)),p&&h.ngOnChanges(p),65536&e.flags&&Df(t,256,e.nodeIndex)&&h.ngOnInit(),262144&e.flags&&h.ngDoCheck(),g}(t,e,n,a,r,i,s,u,o,l,d,c);case 32:case 64:case 128:return function(t,e,n,a,r,i,s,u,o,l,d,c){const f=e.bindings;let h=!1;const g=f.length;if(g>0&&$f(t,e,0,n)&&(h=!0),g>1&&$f(t,e,1,a)&&(h=!0),g>2&&$f(t,e,2,r)&&(h=!0),g>3&&$f(t,e,3,i)&&(h=!0),g>4&&$f(t,e,4,s)&&(h=!0),g>5&&$f(t,e,5,u)&&(h=!0),g>6&&$f(t,e,6,o)&&(h=!0),g>7&&$f(t,e,7,l)&&(h=!0),g>8&&$f(t,e,8,d)&&(h=!0),g>9&&$f(t,e,9,c)&&(h=!0),h){const h=jf(t,e.nodeIndex);let p;switch(201347067&e.flags){case 32:p=new Array(f.length),g>0&&(p[0]=n),g>1&&(p[1]=a),g>2&&(p[2]=r),g>3&&(p[3]=i),g>4&&(p[4]=s),g>5&&(p[5]=u),g>6&&(p[6]=o),g>7&&(p[7]=l),g>8&&(p[8]=d),g>9&&(p[9]=c);break;case 64:p={},g>0&&(p[f[0].name]=n),g>1&&(p[f[1].name]=a),g>2&&(p[f[2].name]=r),g>3&&(p[f[3].name]=i),g>4&&(p[f[4].name]=s),g>5&&(p[f[5].name]=u),g>6&&(p[f[6].name]=o),g>7&&(p[f[7].name]=l),g>8&&(p[f[8].name]=d),g>9&&(p[f[9].name]=c);break;case 128:const t=n;switch(g){case 1:p=t.transform(n);break;case 2:p=t.transform(a);break;case 3:p=t.transform(a,r);break;case 4:p=t.transform(a,r,i);break;case 5:p=t.transform(a,r,i,s);break;case 6:p=t.transform(a,r,i,s,u);break;case 7:p=t.transform(a,r,i,s,u,o);break;case 8:p=t.transform(a,r,i,s,u,o,l);break;case 9:p=t.transform(a,r,i,s,u,o,l,d);break;case 10:p=t.transform(a,r,i,s,u,o,l,d,c)}}h.value=p}return h}(t,e,n,a,r,i,s,u,o,l,d,c);default:throw"unreachable"}}(t,e,a,r,i,s,u,o,l,d,c,f):function(t,e,n){switch(201347067&e.flags){case 1:return function(t,e,n){let a=!1;for(let r=0;r<n.length;r++)xv(t,e,r,n[r])&&(a=!0);return a}(t,e,n);case 2:return function(t,e,n){const a=e.bindings;let r=!1;for(let i=0;i<n.length;i++)$f(t,e,i,n[i])&&(r=!0);if(r){let r="";for(let t=0;t<n.length;t++)r+=Dv(n[t],a[t]);r=e.text.prefix+r;const i=Pf(t,e.nodeIndex).renderText;t.renderer.setValue(i,r)}return r}(t,e,n);case 16384:return function(t,e,n){const a=qf(t,e.nodeIndex),r=a.instance;let i=!1,s=void 0;for(let u=0;u<n.length;u++)Kf(t,e,u,n[u])&&(i=!0,s=xg(t,a,e,u,n[u],s));return s&&r.ngOnChanges(s),65536&e.flags&&Df(t,256,e.nodeIndex)&&r.ngOnInit(),262144&e.flags&&r.ngDoCheck(),i}(t,e,n);case 32:case 64:case 128:return function(t,e,n){const a=e.bindings;let r=!1;for(let i=0;i<n.length;i++)$f(t,e,i,n[i])&&(r=!0);if(r){const r=jf(t,e.nodeIndex);let i;switch(201347067&e.flags){case 32:i=n;break;case 64:i={};for(let r=0;r<n.length;r++)i[a[r].name]=n[r];break;case 128:const t=n[0],e=n.slice(1);i=t.transform(...e)}r.value=i}return r}(t,e,n);default:throw"unreachable"}}(t,e,a)}function Wv(t){const e=t.def;if(4&e.nodeFlags)for(let n=0;n<e.nodes.length;n++){const a=e.nodes[n];if(4&a.flags){const e=Mf(t,n).template._projectedViews;if(e)for(let n=0;n<e.length;n++){const a=e[n];a.state|=32,Qf(a,t)}}else 0==(4&a.childFlags)&&(n+=a.childCount)}}function Kv(t,e,n,a,r,i,s,u,o,l,d,c,f){return 0===n?function(t,e,n,a,r,i,s,u,o,l,d,c){const f=e.bindings.length;f>0&&Jf(t,e,0,n),f>1&&Jf(t,e,1,a),f>2&&Jf(t,e,2,r),f>3&&Jf(t,e,3,i),f>4&&Jf(t,e,4,s),f>5&&Jf(t,e,5,u),f>6&&Jf(t,e,6,o),f>7&&Jf(t,e,7,l),f>8&&Jf(t,e,8,d),f>9&&Jf(t,e,9,c)}(t,e,a,r,i,s,u,o,l,d,c,f):function(t,e,n){for(let a=0;a<n.length;a++)Jf(t,e,a,n[a])}(t,e,a),!1}function $v(t,e){if(Ff(t,e.nodeIndex).dirty)throw Af(Gf.createDebugContext(t,e.nodeIndex),`Query ${e.query.id} not dirty`,`Query ${e.query.id} dirty`,0!=(1&t.state))}function Jv(t){if(!(128&t.state)){if(Xv(t,Zv.Destroy),Qv(t,Zv.Destroy),_g(t,131072),t.disposables)for(let e=0;e<t.disposables.length;e++)t.disposables[e]();!function(t){if(!(16&t.state))return;const e=th(t);if(e){const n=e.template._projectedViews;n&&(yt(n,n.indexOf(t)),Gf.dirtyParentQueries(t))}}(t),t.renderer.destroyNode&&function(t){const e=t.def.nodes.length;for(let n=0;n<e;n++){const e=t.def.nodes[n];1&e.flags?t.renderer.destroyNode(Mf(t,n).renderElement):2&e.flags?t.renderer.destroyNode(Pf(t,n).renderText):(67108864&e.flags||134217728&e.flags)&&Ff(t,n).destroy()}}(t),ah(t)&&t.renderer.destroy(),t.state|=128}}const Zv=function(){var t={CreateViewNodes:0,CheckNoChanges:1,CheckNoChangesProjectedViews:2,CheckAndUpdate:3,CheckAndUpdateProjectedViews:4,Destroy:5};return t[t.CreateViewNodes]="CreateViewNodes",t[t.CheckNoChanges]="CheckNoChanges",t[t.CheckNoChangesProjectedViews]="CheckNoChangesProjectedViews",t[t.CheckAndUpdate]="CheckAndUpdate",t[t.CheckAndUpdateProjectedViews]="CheckAndUpdateProjectedViews",t[t.Destroy]="Destroy",t}();function Qv(t,e){const n=t.def;if(33554432&n.nodeFlags)for(let a=0;a<n.nodes.length;a++){const r=n.nodes[a];33554432&r.flags?tx(Mf(t,a).componentView,e):0==(33554432&r.childFlags)&&(a+=r.childCount)}}function Xv(t,e){const n=t.def;if(16777216&n.nodeFlags)for(let a=0;a<n.nodes.length;a++){const r=n.nodes[a];if(16777216&r.flags){const n=Mf(t,a).viewContainer._embeddedViews;for(let t=0;t<n.length;t++)tx(n[t],e)}else 0==(16777216&r.childFlags)&&(a+=r.childCount)}}function tx(t,e){const n=t.state;switch(e){case Zv.CheckNoChanges:0==(128&n)&&(12==(12&n)?Yv(t):64&n&&ex(t,Zv.CheckNoChangesProjectedViews));break;case Zv.CheckNoChangesProjectedViews:0==(128&n)&&(32&n?Yv(t):64&n&&ex(t,e));break;case Zv.CheckAndUpdate:0==(128&n)&&(12==(12&n)?Hv(t):64&n&&ex(t,Zv.CheckAndUpdateProjectedViews));break;case Zv.CheckAndUpdateProjectedViews:0==(128&n)&&(32&n?Hv(t):64&n&&ex(t,e));break;case Zv.Destroy:Jv(t);break;case Zv.CreateViewNodes:zv(t)}}function ex(t,e){Xv(t,e),Qv(t,e)}function nx(t,e,n,a){if(!(t.def.nodeFlags&e&&t.def.nodeFlags&n))return;const r=t.def.nodes.length;for(let i=0;i<r;i++){const r=t.def.nodes[i];if(r.flags&e&&r.flags&n)switch(Gf.setCurrentNode(t,r.nodeIndex),a){case 0:wv(t,r);break;case 1:$v(t,r)}r.childFlags&e&&r.childFlags&n||(i+=r.childCount)}}let ax=!1;function rx(){if(ax)return;ax=!0;const t=Wa()?{setCurrentNode:Nx,createRootView:sx,createEmbeddedView:ox,createComponentView:lx,createNgModuleRef:dx,overrideProvider:gx,overrideComponentView:px,clearOverrides:bx,checkAndUpdateView:xx,checkNoChangesView:_x,destroyView:Tx,createDebugContext:(t,e)=>new Px(t,e),handleEvent:Cx,updateDirectives:Rx,updateRenderer:Ax}:{setCurrentNode:()=>{},createRootView:ix,createEmbeddedView:jv,createComponentView:Vv,createNgModuleRef:Zh,overrideProvider:Bf,overrideComponentView:Bf,clearOverrides:Bf,checkAndUpdateView:Hv,checkNoChangesView:Yv,destroyView:Jv,createDebugContext:(t,e)=>new Px(t,e),handleEvent:(t,e,n,a)=>t.def.handleEvent(t,e,n,a),updateDirectives:(t,e)=>t.def.updateDirectives(0===e?yx:vx,t),updateRenderer:(t,e)=>t.def.updateRenderer(0===e?yx:vx,t)};Gf.setCurrentNode=t.setCurrentNode,Gf.createRootView=t.createRootView,Gf.createEmbeddedView=t.createEmbeddedView,Gf.createComponentView=t.createComponentView,Gf.createNgModuleRef=t.createNgModuleRef,Gf.overrideProvider=t.overrideProvider,Gf.overrideComponentView=t.overrideComponentView,Gf.clearOverrides=t.clearOverrides,Gf.checkAndUpdateView=t.checkAndUpdateView,Gf.checkNoChangesView=t.checkNoChangesView,Gf.destroyView=t.destroyView,Gf.resolveDep=yg,Gf.createDebugContext=t.createDebugContext,Gf.handleEvent=t.handleEvent,Gf.updateDirectives=t.updateDirectives,Gf.updateRenderer=t.updateRenderer,Gf.dirtyParentQueries=Tv}function ix(t,e,n,a,r,i){const s=r.injector.get(ef);return Fv(ux(t,r,s,e,n),a,i)}function sx(t,e,n,a,r,i){const s=r.injector.get(ef),u=ux(t,r,new Fx(s),e,n),o=mx(a);return qx(wx.create,Fv,null,[u,o,i])}function ux(t,e,n,a,r){const i=e.injector.get(vr),s=e.injector.get(Da),u=n.createRenderer(null,null);return{ngModule:e,injector:t,projectableNodes:a,selectorOrNode:r,sanitizer:i,rendererFactory:n,renderer:u,errorHandler:s}}function ox(t,e,n,a){const r=mx(n);return qx(wx.create,jv,null,[t,e,r,a])}function lx(t,e,n,a){return n=hx.get(e.element.componentProvider.provider.token)||mx(n),qx(wx.create,Vv,null,[t,e,n,a])}function dx(t,e,n,a){return Zh(t,e,n,function(t){const{hasOverrides:e,hasDeprecatedOverrides:n}=function(t){let e=!1,n=!1;return 0===cx.size||(t.providers.forEach(t=>{const a=cx.get(t.token);3840&t.flags&&a&&(e=!0,n=n||a.deprecatedBehavior)}),t.modules.forEach(t=>{fx.forEach((a,r)=>{D(r).providedIn===t&&(e=!0,n=n||a.deprecatedBehavior)})})),{hasOverrides:e,hasDeprecatedOverrides:n}}(t);return e?(function(t){for(let e=0;e<t.providers.length;e++){const a=t.providers[e];n&&(a.flags|=4096);const r=cx.get(a.token);r&&(a.flags=-3841&a.flags|r.flags,a.deps=uh(r.deps),a.value=r.value)}if(fx.size>0){let e=new Set(t.modules);fx.forEach((a,r)=>{if(e.has(D(r).providedIn)){let e={token:r,flags:a.flags|(n?4096:0),deps:uh(a.deps),value:a.value,index:t.providers.length};t.providers.push(e),t.providersByKey[Yf(r)]=e}})}}(t=t.factory(()=>Bf)),t):t}(a))}const cx=new Map,fx=new Map,hx=new Map;function gx(t){let e;cx.set(t.token,t),"function"==typeof t.token&&(e=D(t.token))&&"function"==typeof e.providedIn&&fx.set(t.token,t)}function px(t,e){const n=dh(qh(e)),a=dh(n.nodes[0].element.componentView);hx.set(t,a)}function bx(){cx.clear(),fx.clear(),hx.clear()}function mx(t){if(0===cx.size)return t;const e=function(t){const e=[];let n=null;for(let a=0;a<t.nodes.length;a++){const r=t.nodes[a];1&r.flags&&(n=r),n&&3840&r.flags&&cx.has(r.provider.token)&&(e.push(n.nodeIndex),n=null)}return e}(t);if(0===e.length)return t;t=t.factory(()=>Bf);for(let a=0;a<e.length;a++)n(t,e[a]);return t;function n(t,e){for(let n=e+1;n<t.nodes.length;n++){const e=t.nodes[n];if(1&e.flags)return;if(3840&e.flags){const t=e.provider,n=cx.get(t.token);n&&(e.flags=-3841&e.flags|n.flags,t.deps=uh(n.deps),t.value=n.value)}}}}function yx(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=t.def.nodes[e];return Uv(t,h,n,a,r,i,s,u,o,l,d,c,f),224&h.flags?jf(t,e).value:void 0}function vx(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=t.def.nodes[e];return Kv(t,h,n,a,r,i,s,u,o,l,d,c,f),224&h.flags?jf(t,e).value:void 0}function xx(t){return qx(wx.detectChanges,Hv,null,[t])}function _x(t){return qx(wx.checkNoChanges,Yv,null,[t])}function Tx(t){return qx(wx.destroy,Jv,null,[t])}const wx=function(){var t={create:0,detectChanges:1,checkNoChanges:2,destroy:3,handleEvent:4};return t[t.create]="create",t[t.detectChanges]="detectChanges",t[t.checkNoChanges]="checkNoChanges",t[t.destroy]="destroy",t[t.handleEvent]="handleEvent",t}();let Ox,Sx,Ix;function Nx(t,e){Sx=t,Ix=e}function Cx(t,e,n,a){return Nx(t,e),qx(wx.handleEvent,t.def.handleEvent,null,[t,e,n,a])}function Rx(t,e){if(128&t.state)throw Ef(wx[Ox]);return Nx(t,Lx(t,0)),t.def.updateDirectives((function(t,n,a,...r){const i=t.def.nodes[n];return 0===e?kx(t,i,a,r):Ex(t,i,a,r),16384&i.flags&&Nx(t,Lx(t,n)),224&i.flags?jf(t,i.nodeIndex).value:void 0}),t)}function Ax(t,e){if(128&t.state)throw Ef(wx[Ox]);return Nx(t,Dx(t,0)),t.def.updateRenderer((function(t,n,a,...r){const i=t.def.nodes[n];return 0===e?kx(t,i,a,r):Ex(t,i,a,r),3&i.flags&&Nx(t,Dx(t,n)),224&i.flags?jf(t,i.nodeIndex).value:void 0}),t)}function kx(t,e,n,a){if(Uv(t,e,n,...a)){const i=1===n?a[0]:a;if(16384&e.flags){const n={};for(let t=0;t<e.bindings.length;t++){const a=e.bindings[t],s=i[t];8&a.flags&&(n[(r=a.nonMinifiedName,"ng-reflect-"+r.replace(/[$@]/g,"_").replace(Er,(...t)=>"-"+t[1].toLowerCase()))]=Lr(s))}const a=e.parent,s=Mf(t,a.nodeIndex).renderElement;if(a.element.name)for(let e in n){const a=n[e];null!=a?t.renderer.setAttribute(s,e,a):t.renderer.removeAttribute(s,e)}else t.renderer.setValue(s,"bindings="+JSON.stringify(n,null,2))}}var r}function Ex(t,e,n,a){Kv(t,e,n,...a)}function Lx(t,e){for(let n=e;n<t.def.nodes.length;n++){const e=t.def.nodes[n];if(16384&e.flags&&e.bindings&&e.bindings.length)return n}return null}function Dx(t,e){for(let n=e;n<t.def.nodes.length;n++){const e=t.def.nodes[n];if(3&e.flags&&e.bindings&&e.bindings.length)return n}return null}class Px{constructor(t,e){this.view=t,this.nodeIndex=e,null==e&&(this.nodeIndex=e=0),this.nodeDef=t.def.nodes[e];let n=this.nodeDef,a=t;for(;n&&0==(1&n.flags);)n=n.parent;if(!n)for(;!n&&a;)n=eh(a),a=a.parent;this.elDef=n,this.elView=a}get elOrCompView(){return Mf(this.elView,this.elDef.nodeIndex).componentView||this.view}get injector(){return Uh(this.elView,this.elDef)}get component(){return this.elOrCompView.component}get context(){return this.elOrCompView.context}get providerTokens(){const t=[];if(this.elDef)for(let e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){const n=this.elView.def.nodes[e];20224&n.flags&&t.push(n.provider.token),e+=n.childCount}return t}get references(){const t={};if(this.elDef){Mx(this.elView,this.elDef,t);for(let e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){const n=this.elView.def.nodes[e];20224&n.flags&&Mx(this.elView,n,t),e+=n.childCount}}return t}get componentRenderElement(){const t=function(t){for(;t&&!ah(t);)t=t.parent;return t.parent?Mf(t.parent,eh(t).nodeIndex):null}(this.elOrCompView);return t?t.renderElement:void 0}get renderNode(){return 2&this.nodeDef.flags?nh(this.view,this.nodeDef):nh(this.elView,this.elDef)}logError(t,...e){let n,a;2&this.nodeDef.flags?(n=this.view.def,a=this.nodeDef.nodeIndex):(n=this.elView.def,a=this.elDef.nodeIndex);const r=function(t,e){let n=-1;for(let a=0;a<=e;a++)3&t.nodes[a].flags&&n++;return n}(n,a);let i=-1;n.factory(()=>(i++,i===r?t.error.bind(t,...e):Bf)),i<r&&(t.error("Illegal state: the ViewDefinitionFactory did not call the logger!"),t.error(...e))}}function Mx(t,e,n){for(let a in e.references)n[a]=Sv(t,e,e.references[a])}function qx(t,e,n,a){const r=Ox,i=Sx,s=Ix;try{Ox=t;const u=e.apply(n,a);return Sx=i,Ix=s,Ox=r,u}catch(u){if(ka(u)||!Sx)throw u;throw function(t,e){return t instanceof Error||(t=new Error(t.toString())),kf(t,e),t}(u,jx())}}function jx(){return Sx?new Px(Sx,Ix):null}class Fx{constructor(t){this.delegate=t}createRenderer(t,e){return new Vx(this.delegate.createRenderer(t,e))}begin(){this.delegate.begin&&this.delegate.begin()}end(){this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.delegate.whenRenderingDone?this.delegate.whenRenderingDone():Promise.resolve(null)}}class Vx{constructor(t){this.delegate=t,this.debugContextFactory=jx,this.data=this.delegate.data}createDebugContext(t){return this.debugContextFactory(t)}destroyNode(t){const e=rv(t);!function(t){nv.delete(t.nativeNode)}(e),e instanceof Uy&&(e.listeners.length=0),this.delegate.destroyNode&&this.delegate.destroyNode(t)}destroy(){this.delegate.destroy()}createElement(t,e){const n=this.delegate.createElement(t,e),a=this.createDebugContext(n);if(a){const e=new Wy(n,null,a);e.name=t,iv(e)}return n}createComment(t){const e=this.delegate.createComment(t),n=this.createDebugContext(e);return n&&iv(new Uy(e,null,n)),e}createText(t){const e=this.delegate.createText(t),n=this.createDebugContext(e);return n&&iv(new Uy(e,null,n)),e}appendChild(t,e){const n=rv(t),a=rv(e);n&&a&&n instanceof Wy&&n.addChild(a),this.delegate.appendChild(t,e)}insertBefore(t,e,n){const a=rv(t),r=rv(e),i=rv(n);a&&r&&a instanceof Wy&&a.insertBefore(i,r),this.delegate.insertBefore(t,e,n)}removeChild(t,e){const n=rv(t),a=rv(e);n&&a&&n instanceof Wy&&n.removeChild(a),this.delegate.removeChild(t,e)}selectRootElement(t,e){const n=this.delegate.selectRootElement(t,e),a=jx();return a&&iv(new Wy(n,null,a)),n}setAttribute(t,e,n,a){const r=rv(t);r&&r instanceof Wy&&(r.attributes[a?a+":"+e:e]=n),this.delegate.setAttribute(t,e,n,a)}removeAttribute(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.attributes[n?n+":"+e:e]=null),this.delegate.removeAttribute(t,e,n)}addClass(t,e){const n=rv(t);n&&n instanceof Wy&&(n.classes[e]=!0),this.delegate.addClass(t,e)}removeClass(t,e){const n=rv(t);n&&n instanceof Wy&&(n.classes[e]=!1),this.delegate.removeClass(t,e)}setStyle(t,e,n,a){const r=rv(t);r&&r instanceof Wy&&(r.styles[e]=n),this.delegate.setStyle(t,e,n,a)}removeStyle(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.styles[e]=null),this.delegate.removeStyle(t,e,n)}setProperty(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.properties[e]=n),this.delegate.setProperty(t,e,n)}listen(t,e,n){if("string"!=typeof t){const a=rv(t);a&&a.listeners.push(new Hy(e,n))}return this.delegate.listen(t,e,n)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setValue(t,e){return this.delegate.setValue(t,e)}}function Gx(t){return rx(),Gf.overrideProvider(t)}function Bx(t,e){return rx(),Gf.overrideComponentView(t,e)}function zx(){return rx(),Gf.clearOverrides()}function Yx(t,e,n){return new Hx(t,e,n)}class Hx extends ht{constructor(t,e,n){super(),this.moduleType=t,this._bootstrapComponents=e,this._ngModuleDefFactory=n}create(t){rx();const e=function(t){const e=Array.from(t.providers),n=Array.from(t.modules),a={};for(const r in t.providersByKey)a[r]=t.providersByKey[r];return{factory:t.factory,isRoot:t.isRoot,providers:e,modules:n,providersByKey:a}}(dh(this._ngModuleDefFactory));return Gf.createNgModuleRef(this.moduleType,t||Bu.NULL,this._bootstrapComponents,e)}}},"8YOa":function(t,e,n){var a=n("I+eb"),r=n("4zBA"),i=n("0BK2"),s=n("hh1v"),u=n("Gi26"),o=n("m/L8").f,l=n("JBy8"),d=n("BX/b"),c=n("T63f"),f=n("kOOl"),h=n("uy83"),g=!1,p=f("meta"),b=0,m=function(t){o(t,p,{value:{objectID:"O"+b++,weakData:{}}})},y=t.exports={enable:function(){y.enable=function(){},g=!0;var t=l.f,e=r([].splice),n={};n[p]=1,t(n).length&&(l.f=function(n){for(var a=t(n),r=0,i=a.length;r<i;r++)if(a[r]===p){e(a,r,1);break}return a},a({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:d.f}))},fastKey:function(t,e){if(!s(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!u(t,p)){if(!c(t))return"F";if(!e)return"E";m(t)}return t[p].objectID},getWeakData:function(t,e){if(!u(t,p)){if(!c(t))return!0;if(!e)return!1;m(t)}return t[p].weakData},onFreeze:function(t){return h&&g&&c(t)&&!u(t,p)&&m(t),t}};i[p]=!0},"8a/S":function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},"8j5A":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="it-IT">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Attiva/Disattiva barra di navigazione</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dashboard</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servizi</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configurazione</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mappa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Moduli Manager</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Log</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blocco</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Immagini</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Esecuzione della copia speculare</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI </target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>File system</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Utenti</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartimenti</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Selezionare una lingua</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Caricamento pannello dati in corso...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Selezione ora di Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Impostazioni di ripristino</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Indietro</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Non è stato possibile caricare i dati.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>selezionato</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>trovato</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>totale</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descrizione</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descrizione lunga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Default</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Default del daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valori</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Salva</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visualizzatore mappa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Caricamento in corso...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Questo campo è obbligatorio.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sì.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annulla</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Chiudi</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Elenco degli host</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Prestazioni complessive</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nessuna voce trovata</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Log dei cluster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Log delle revisioni</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Caricamento della configurazione in corso...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Impossibile caricare la configurazione.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Modifica modulo Manager</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Il valore immesso non è un UUID valido, ad es.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Il valore immesso deve essere un indirizzo IP valido.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Il valore immesso deve essere un numero.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Il valore immesso deve essere un numero o un decimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aggiorna</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID cluster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>mappa mon modificata</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>epoca mappa mon</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con richiesta</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon richiesto</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Nel quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Non nel quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Aggiungi</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funzioni</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD in tutto il cluster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Invia</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzate...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorità di recupero OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorità</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizza valori di priorità</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Questo campo è obbligatorio.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Il valore deve essere compreso tra 0 e 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ripesa</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Elenco degli OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valore</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifica</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Elimina</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiche</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Client</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Può accedere qualsiasi client</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Indirizzi</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obbligatorio</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Deve contenere uno o più valori delimitati da virgole</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Ad esempio:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo di accesso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Esegui squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Aggiungi client</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Nessun cluster disponibile --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Selezionare il cluster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Aggiungi daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend di storage</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Nessun pool di dati disponibile --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Selezionare il backend di storage --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Utente Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Nessun utente disponibile --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selezionare l\'utente Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID utente CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Nessun client disponibile --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Selezionare il client Cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nome CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etichetta di sicurezza</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Abilita etichetta di sicurezza</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Percorso CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Il percorso deve iniziare con una barra \'/\' e può essere seguito da una parola</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Viene creata la nuova directory</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Percorso</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Il percorso può essere solo una singola barra \'/\' o parola</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Viene creato il nuovo compartimento</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocollo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>I client non possono montare le sottodirectory (ad es. se Tag = foo, il client non può montare foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Utilizzando diverse opzioni Tag, è possibile esportare più volte lo stesso percorso.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Utilizzando diverse opzioni Pseudo, è possibile esportare più volte lo stesso percorso.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Nessun tipo di accesso disponibile --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Selezionare il tipo di accesso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Nessuno squash disponibile --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>--Selezionare il tipo di squash dell\'ID utente da eseguire --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocollo di trasporto</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Benvenuto in Ceph.</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nome utente necessario</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Password richiesta</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Login</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Spiacenti, l\'utente non esiste in Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Non consentito</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Spiacenti, non è consentito visualizzare ciò che si stava cercando.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configurazione RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Rimuovere il valore della configurazione locale. Al suo posto verrà ereditato e utilizzato il valore della configurazione superiore.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Il valore minimo è 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Elenco dei pool</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Il nome può contenere solo caratteri alfanumerici, trattini e caratteri di sottolineatura.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Il nome del profilo del codice di cancellazione selezionato è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Porzioni di dati (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Deve essere uguale o maggiore di 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Porzioni di codice (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Deve essere uguale o maggiore di 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Stima durata (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Località (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dominio di errore Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Località Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nessuno</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Tecnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Dimensione del pacchetto</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Radice Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe dispositivo Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>qualsiasi</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Directory</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nome...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Il nome del pool Ceph scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo di pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Selezionare un tipo di pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Gruppi di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>È necessario almeno un gruppo di posizionamento.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Il cluster non può gestire questo numero eccessivo di gruppi di posizionamento. Ricalcolare il numero di gruppi di posizionamento necessari.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Guida per il calcolo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Dimensioni replicate</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flag</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sovrascritture EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Applicazioni</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profilo del codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Nessun profilo del codice di cancellazione disponibile --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Selezionare un profilo del codice di cancellazione --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Set di regole Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selezionare una regola Crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regola Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Passaggi Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compressione</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modalità</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Nessun algoritmo di compressione della cancellazione disponibile --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Dimensioni minime del blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>ad es. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Il valore deve essere maggiore di 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Dimensioni massime del blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>ad es. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Il valore deve essere maggiore delle dimensioni minime del blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rapporto</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rapporto di compressione</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Il valore deve essere compreso tra 0,0 e 1,0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ad es. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Dettagli</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Dettagli sulle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Dettagli livelli cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Sposta un\'immagine nel cestino</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protezione scade alle</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NON PROTETTO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato data errato. Utilizzare "AAAA-MM-GG HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protezione è già scaduta. Selezionare una data futura o lasciarla vuota.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Sposta immagine</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Panoramica</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinazioni</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticazione rilevazione</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utente</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e\n              possono contenere solo lettere, \'.\', \'@\', \'-\', \'_\' o \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Password</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Utente reciproco</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Password reciproca</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informazioni disponibili:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinazioni iSCSI non disponibili</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool di dati</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Creato</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Dimensioni</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Oggetti</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Dimensioni oggetto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Soggetto al provisioning</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/D</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Totale soggetto al provisioning</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unità di striping</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Conteggio di striping</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Superiore</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefisso nome blocco</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Ordine</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshot</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Immagine</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Questa impostazione sostituisce il valore globale</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globale</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Questo è il valore globale. Nessun valore di opzione è stato impostato per questa immagine.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' non sono consentiti.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Nessun pool rbd disponibile --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Selezionare un pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utilizza un pool di dati dedicato</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool di dati</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool dedicato che archivia i dati oggetto dell\'RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>È necessario aumentare le dimensioni.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanzate</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Striping</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unità di striping</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selezionare l\'unità di striping --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Questo campo è obbligatorio perché è specificato il numero di striping.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>L\'unità di striping è maggiore delle dimensioni dell\'oggetto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Numero di striping</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Questo campo è obbligatorio perché è specificata l\'unità di striping.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Il numero di striping deve essere maggiore di 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Si sta per eseguire il rollback</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Elimina definitivamente contenuto del cestino</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tutto</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nome pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Ripristina immagine</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Per ripristinare,</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>digitare il nuovo nome dell\'immagine e fare clic su</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nuovo nome</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Scaduto alle</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protetto fino alle</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Di solito non è necessario modificare questi parametri rispetto ai valori di default.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Impostazioni</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Conferma</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Impostazioni avanzate</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN di destinazione</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN contiene un modello errato.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Ad esempio: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Ulteriori informazioni</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Questa destinazione contiene impostazioni avanzate modificate.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portali</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Aggiungi portale</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Questa immagine contiene impostazioni modificate.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Aggiungi immagine</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticazione ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniziatori</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniziatore</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN client</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>L\'IQN dell\'iniziatore deve essere univoco.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e\n                        possono contenere solo lettere, \'.\', \'@\', \'-\', \'_\' o \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'iniziatore appartiene a un gruppo. Le immagini verranno configurate nel gruppo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nessun elemento aggiunto.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Aggiungi iniziatore</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Gruppi</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Gruppo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Aggiungi gruppo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Cestino</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemi</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizzazione in corso</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Pronto</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Modifica modalità speculare per il pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>È necessario rimuovere i cluster peer prima di disabilitare la copia speculare.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nome cluster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Il nome del cluster non è valido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>L\'ID CephX non è valido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Indirizzi dei monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Indirizzi con valori delimitati da virgole...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>L\'indirizzo del monitor non è valido.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Chiave CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Chiave con codifica Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La chiave CephX deve essere con codifica Base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contatori delle prestazioni non disponibili</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Elenco dei daemon</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contatori delle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Caricamento dati compartimento in corso...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Il valore non è valido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Il nome scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Proprietario</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selezionare un utente --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Abilitato</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo di indice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regola di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Contrassegno</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Contrassegno massimo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versione</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versione master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Ora di modifica</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Gruppo di zone</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota compartimenti</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Dimensioni massime</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Illimitato</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Numero massimo di oggetti</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome utente</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selezionare un nome utente --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Generazione automatica chiave</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Chiave di accesso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Chiave segreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nome completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Indirizzo e-mail</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Sospeso</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Numero massimo di compartimenti</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Sottoutenti</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacità</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Quota utenti</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostra</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chiavi</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Selezionare un tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Autorizzazione</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selezionare un\'autorizzazione --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Sottoutente</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>L\'ID del sottoutente scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lettura, scrittura</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pieno</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Chiave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Generazione automatica segreto</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Caricamento dati utente in corso...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Impossibile caricare i dati utente.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>L\'ID utente scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Non è un indirizzo e-mail valido.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>L\'indirizzo e-mail scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Numero max. di compartimenti</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Disabilitato</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizzato</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chiave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Non esistono sottoutenti.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Non esistono chiavi.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Non esistono capacità.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Dimensioni illimitate</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Dimensione max.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Oggetti illimitati</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Numero max. di oggetti</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Il valore immesso deve essere &gt;= a 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descrizione...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Autorizzazioni</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Ruoli</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Conferma password</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>La password di conferma non corrisponde alla password.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>E-mail non valida.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Si stanno per rimuovere le autorizzazioni di "lettura/aggiornamento utente" dal proprio utente.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Se si continua, non è più possibile aggiungere o rimuovere ruoli da qualsiasi utente.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Continuare?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Guida</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentazione</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Informazioni su</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Impostazioni del dashboard</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestione utenti</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Utente connesso</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Disconnetti</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attributi (mappa OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadati non disponibili</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadati</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contatore delle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Scritture</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Letture</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Istogramma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valori attuali</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origine</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Livello</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Può essere aggiornato al runtime (modificabile)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tag</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valori di enumerazione</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Vedere anche</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Stato del cluster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manager Daemon</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Server di metadati</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI Gateway</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS client</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Velocità effettiva client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lettura/scrittura client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Velocità effettiva di recupero</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Pulitura</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Prestazioni</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacità di base</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Gruppi di posizionamento per OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stato gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacità</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Classificazioni</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Attuale</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticazione rilevazione aggiornata</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Non sono disponibili pool.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Non sono disponibili immagini.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Non sono disponibili immagini. Assicurarsi di aggiungere un\'immagine alla destinazione.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Non sono disponibili iniziatori. Assicurarsi di aggiungere un iniziatore alla destinazione.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destinazione</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Byte letti</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operazioni di lettura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operazioni di scrittura</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O da</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Istanza</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Avanzamento</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modalità di modifica</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Aggiungi peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Modifica peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Elimina peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Sequenza iniziale</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Locale</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Remoto</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>peer copia speculare</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Chiave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Appiattimento profondo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Su strati</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Blocco esclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mappa oggetti (richiede il blocco escluso)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journaling (richiede il blocco esclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROTETTO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Esegui rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Eliminato alle</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stato</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versione</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>root</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon in standby</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Classificazione</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Task</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentry</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Utilizzo</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aggiornato</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>È possibile aggiornare il valore al runtime.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>I daemon/client non estraggono questo valore dal\n      database della configurazione di monitoraggio. Non è consentito impostare questa opzione tramite \'ceph config\n      set ...\'. È necessario configurare questa opzione tramite ceph.conf o dalla\n      riga di comando.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>L\'opzione diventa attiva solo all\'avvio del daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>L\'opzione interessa solo la creazione del cluster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>L\'opzione interessa solo la creazione del daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servizio</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valore attuale</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Modificabile</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Abilita</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Disabilita</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Riconnessione in corso. Attendere.</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Indirizzo pubblico</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessioni aperte</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Nessuno in entrata</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Gli OSD che sono stati contrassegnati come disattivi in precedenza non verranno contrassegnati nuovamente come attivi all\'avvio</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Nessuno in uscita</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Gli OSD non verranno disattivati automaticamente dopo l\'intervallo configurato</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nessuno attivo</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Non è consentito l\'avvio degli OSD</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nessuno disattivo</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>I rapporti di errore degli OSD vengono ignorati in modo che i monitor non disattivino gli OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Sospendi</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Sospende le operazioni di lettura e scrittura</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nessuna pulitura</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Pulitura disabilitata</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nessun pulitura approfondita</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Pulitura approfondita disabilitata</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Nessuna operazione di recupero</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Recupero dei gruppi di posizionamento sospeso</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nessun recupero</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recupero dei gruppi di posizionamento sospeso</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Ordinamento bitwise</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usa ordinamento bitwise</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdir eliminate definitivamente</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Gli OSD contengono set di snap convertiti</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Eliminazioni recuperi</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Eliminazioni eseguite durante il recupero invece del peering</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite rigido log gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Inserisce un limite rigido alla lunghezza del log del gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flag OSD aggiornati</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>esterno</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>interno</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>in basso</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Contrassegna</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perso</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>contrassegnato come perso</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>elimina</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Gruppi di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Byte letti</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operazioni di lettura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operazioni di scrittura</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Numero max di recuperi informazioni</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Numero max di recuperi attivi</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Avvio singolo numero max di recuperi</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Sospensione recupero</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Lavoro</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravità</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Avviato</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilizzato</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispon.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Pulisci</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>In funzione</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Avviso</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Sconosciuto</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>su</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>nessun file system</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>attivo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/d</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon attivo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target> quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Il servizio NFS Ganesha non è configurato.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Trasporto</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Utente CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>File system CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(ereditato dalla configurazione globale)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>importato dalla configurazione globale</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Selezionare il tipo di squash dell\'ID utente che viene eseguito --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Non vi sono daemon disponibili.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modalità cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Numero minimo di giorni per la rimozione</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Numero minimo di giorni per la cancellazione</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Numero max di byte di destinazione</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Numero max di oggetti di destinazione</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Non sono state aggiunte applicazioni.</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Raggiunto il limite di applicazioni</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Un pool può contenere solo fino a quattro definizioni delle applicazioni.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caratteri consentiti \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La lunghezza massima è di 128 caratteri</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtra o aggiungi applicazioni</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Aggiungi applicazione</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profilo del codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Dimensioni della replica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Ultima modifica</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profilo con codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Set di regole Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartimento</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimenti</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>utente</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utenti</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Ambito</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lettura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crea</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Ruolo di sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aggiorna utente</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continua</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Si è stati automaticamente disconnessi perché i ruoli sono stati modificati.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Ogni oggetto è suddiviso in porzioni di dati, ciascuna delle quali è memorizzata su un diverso OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcola le porzioni di codice relative a ciascun oggetto e le memorizza su diversi OSD.\n      Il numero di porzioni di codice è anche il numero degli OSD che è possibile disattivare senza perdere i dati.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Il plugin jerasure è il plugin più generico e flessibile,\n          ed è anche il plugin di default dei pool con codice di cancellazione di Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La tecnica più flessibile è reed_sol_van: è sufficiente impostare k\n          ed m. La tecnica cauchy_good può essere più rapida ma occorre selezionare attentamente la dimensione del\n          pacchetto. reed_sol_r6_op, liberation, blaum_roth, liber8tion sono tutti equivalenti a RAID6,\n          nel senso che è possibile configurarli solo con m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>La codifica viene eseguita su pacchetti di dimensioni in byte, uno alla volta.\n          È difficile scegliere la dimensione del pacchetto corretta.\n          La documentazione su jerasure fornisce informazioni esaustive su questo argomento.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Con il plugin di jerasure, quando un oggetto con codice di cancellazione viene memorizzato su\n          più OSD, il recupero della perdita di un OSD richiede la lettura di tutti gli altri.\n          Ad esempio, se jerasure è configurato con k=8 e m=4, la perdita di un OSD richiede la lettura\n          degli altri undici per il ripristino.\n\n          Il plugin del codice di cancellazione lrc crea porzioni di parità locali che è possibile recuperare utilizzando un\n          minor numero di OSD. Ad esempio, se lrc è configurato con k=8, m=4 e l=4, crea\n          una porzione di parità aggiuntiva ogni quattro OSD. Quando si perde un singolo OSD, è possibile\n          recuperarlo solo con quattro OSD invece che con undici.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Raggruppa le porzioni di codice e dati in set di località dimensione. Ad esempio,\n          per k=4 e m=2, se località=3 vengono creati due gruppi su tre. È possibile recuperare ciascun set\n          senza leggere le porzioni di un altro set.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Il tipo di compartimento Crush in cui viene memorizzato ciascun set di porzioni definito\n          dall\'utente. Ad esempio, se è impostato su rack, ciascun gruppo di porzioni viene\n          posizionato in un diverso rack. Viene utilizzato per creare un passaggio della regola CRUSH come il passaggio choose\n          rack. Se non è impostato, il raggruppamento non viene eseguito.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Il plugin ISA incapsula la libreria ISA. Viene eseguito solo su processori Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Il plugin ISA è disponibile in due formati Reed Solomon.\n          Se è impostato reed_sol_van, il formato è Vandermonde, se è impostato cauchy, il formato è Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Il plugin shec incapsula la libreria SHEC multipla.\n          Consente a Ceph di recuperare i dati in modo più efficiente rispetto ai codici Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Il numero di compartimenti di parità, ciascuno dei quali include i singoli compartimenti di dati\n          nell\'intervallo di calcolo. Il numero viene utilizzato come strumento di stima della durabilità. Ad esempio, se c=2,\n          è possibile disattivare 2 OSD senza perdere i dati.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Il nome del compartimento Crush utilizzato per il primo passaggio della regola CRUSH.\n      Ad esempio il passaggio take default.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Assicurarsi che non esistano due porzioni in un compartimento con lo stesso dominio\n      di errore. Ad esempio, se il dominio di errore è l\'host, non verranno memorizzate due porzioni sullo stesso\n      host. Viene utilizzato per creare un passaggio della regola CRUSH come passaggio chooseleaf host.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Limitare il posizionamento ai dispositivi di una classe specifica\n      (ad es. ssd o hdd) usando i nomi delle classi di dispositivi Crush nella mappa CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Impostare il nome della directory da cui viene caricato il plugin del codice di cancellazione.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Consente tutte le operazioni</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Consente solo le operazioni che non modificano il server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Non consente operazioni di lettura o scrittura, ma consente qualsiasi altra operazione</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Non consente operazioni di lettura o scrittura o qualsiasi operazione che modifichi gli attributi dei file o il contenuto della directory</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Non consente alcun accesso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Selezionare la priorità --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Bassa</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informazioni</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Ultimi 5 minuti</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Ultimi 15 minuti</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Ultimi 30 minuti</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Ultima ora (Default)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Ultime 3 ore</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Ultime 6 ore</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Ultime 12 ore</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Ultime 24 ore</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ieri</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Oggi</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Fino a oggi</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Giorno prima di ieri</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Ultimi 2 giorni</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Questo giorno della scorsa settimana</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Settimana precedente</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Questa settimana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Fino a questa settimana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Ultimi 7 giorni</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Mese precedente</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Questo mese</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Fino a questo mese</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Ultimi 30 giorni</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Ultimi 90 giorni</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Ultimi 6 mesi</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Ultimo anno</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Anno precedente</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Quest\'anno</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Fino a quest\'anno</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Ultimi 2 anni</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Ultimi 5 anni</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nessun elemento selezionato.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Deselezionare l\'elemento per selezionare di nuovo</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target> Raggiunto il limite per la selezione</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtra tag</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Aggiungi badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Non vi sono elementi disponibili.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clona</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copia</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Pulitura approfondita</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Eliminazione definitiva</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Appiattisci</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Declassa</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Attiva</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Contrassegna come perso</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Disattiva</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteggi</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Rinomina</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Ripristina</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Sposta nel cestino</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Rimuovi protezione</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Eliminato</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonato</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiato</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Appiattito</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Ripristinato</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback eseguito</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sì</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>No</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualità di servizio</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite di BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Il limite desiderato di byte I/O al secondo.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite di IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Il limite desiderato di operazioni I/O al secondo.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite BPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Il limite desiderato dei byte letti al secondo.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite di IOPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Il limite desiderato di operazioni di lettura al secondo.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite di BPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Il limite desiderato di byte scritti al secondo.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite di IOPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Il limite desiderato di operazioni di scrittura al secondo.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Burst BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Il limite di burst desiderato dei byte di I/O.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Burst IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di I/O.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Burst BPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Il limite di burst desiderato dei byte letti.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Burst IOPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di lettura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Burst BPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Il limite di burst desiderato dei byte scritti.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Burst di IOPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di scrittura.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>In esecuzione</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>esegui</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Eseguito</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>task sconosciuto</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Creazione in corso</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>crea</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aggiornamento in corso</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aggiorna</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Eliminazione in corso</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonazione in corso</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clona</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copia in corso</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copia</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Appiattimento</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>appiattisci</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback in corso</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Spostamento in corso</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>sposta</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Spostato</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Impossibile trovare l\'immagine.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Ripristino in corso</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>ripristina</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Eliminazione in corso</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>tutti i pool</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossibile disabilitare l\'esecuzione della copia speculare perché contiene un peer.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"8mBD":function(t,e,n){!function(t){"use strict";t.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},"8rQ2":function(t,e,n){var a=n("6MU2"),r=n("/Gx3"),i=n("Uqmq"),s=n("qjUL"),u=r((function(t){return t.push(void 0,i),a(s,void 0,t)}));t.exports=u},"8xTl":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t){return a.upperFirst(t)}}},"9/5/":function(t,e){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,i=/^0o[0-7]+$/i,s=parseInt,u="object"==typeof global&&global&&global.Object===Object&&global,o="object"==typeof self&&self&&self.Object===Object&&self,l=u||o||Function("return this")(),d=Object.prototype.toString,c=Math.max,f=Math.min,h=function(){return l.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function p(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==d.call(t)}(t))return NaN;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(n,"");var u=r.test(t);return u||i.test(t)?s(t.slice(2),u?2:8):a.test(t)?NaN:+t}t.exports=function(t,e,n){var a,r,i,s,u,o,l=0,d=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=a,i=r;return a=r=void 0,l=e,s=t.apply(i,n)}function v(t){return l=t,u=setTimeout(_,e),d?y(t):s}function x(t){var n=t-o;return void 0===o||n>=e||n<0||b&&t-l>=i}function _(){var t=h();if(x(t))return T(t);u=setTimeout(_,function(t){var n=e-(t-o);return b?f(n,i-(t-l)):n}(t))}function T(t){return u=void 0,m&&a?y(t):(a=r=void 0,s)}function w(){var t=h(),n=x(t);if(a=arguments,r=this,o=t,n){if(void 0===u)return v(o);if(b)return u=setTimeout(_,e),y(o)}return void 0===u&&(u=setTimeout(_,e)),s}return e=p(e)||0,g(n)&&(d=!!n.leading,i=(b="maxWait"in n)?c(p(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),w.cancel=function(){void 0!==u&&clearTimeout(u),l=0,a=o=r=u=void 0},w.flush=function(){return void 0===u?s:T(h())},w}},"93I0":function(t,e,n){var a=n("VpIT"),r=n("kOOl"),i=a("keys");t.exports=function(t){return i[t]||(i[t]=r(t))}},"978R":function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return h}));var a=n("8Y7J"),r=n("hpHm"),i=n("mrSG"),s=n("z/SZ"),u=n("2uy1"),o=n("PqYM");class l{constructor(){this.adaptivePosition=!0,this.placement="top",this.triggers="hover focus",this.delay=0}}class d{constructor(t){Object.assign(this,t)}get isBs3(){return Object(r.d)()}ngAfterViewInit(){this.classMap={in:!1,fade:!1},this.classMap[this.placement]=!0,this.classMap["tooltip-"+this.placement]=!0,this.classMap.in=!0,this.animation&&(this.classMap.fade=!0),this.containerClass&&(this.classMap[this.containerClass]=!0)}}let c=0,f=(()=>{class t{constructor(t,e,n,r,i,s){this._elementRef=r,this._renderer=i,this._positionService=s,this.tooltipId=c++,this.tooltipChange=new a.EventEmitter,this.containerClass="",this.tooltipAnimation=!0,this.tooltipFadeDuration=150,this.tooltipStateChanged=new a.EventEmitter,this._tooltip=e.createLoader(this._elementRef,t,this._renderer).provide({provide:l,useValue:n}),Object.assign(this,n),this.onShown=this._tooltip.onShown,this.onHidden=this._tooltip.onHidden}get isOpen(){return this._tooltip.isShown}set isOpen(t){t?this.show():this.hide()}set htmlContent(t){Object(r.i)("tooltipHtml was deprecated, please use `tooltip` instead"),this.tooltip=t}set _placement(t){Object(r.i)("tooltipPlacement was deprecated, please use `placement` instead"),this.placement=t}set _isOpen(t){Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen=t}get _isOpen(){return Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen}set _enable(t){Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled=!t}get _enable(){return Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled}set _appendToBody(t){Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),this.container=t?"body":this.container}get _appendToBody(){return Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),"body"===this.container}set _popupClass(t){Object(r.i)("tooltipClass deprecated")}set _tooltipContext(t){Object(r.i)("tooltipContext deprecated")}set _tooltipPopupDelay(t){Object(r.i)("tooltipPopupDelay is deprecated, use `delay` instead"),this.delay=t}get _tooltipTrigger(){return Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers}set _tooltipTrigger(t){Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers=(t||"").toString()}ngOnInit(){this._tooltip.listen({triggers:this.triggers,show:()=>this.show()}),this.tooltipChange.subscribe(t=>{t||this._tooltip.hide()}),this.onShown.subscribe(()=>{this.setAriaDescribedBy()}),this.onHidden.subscribe(()=>{this.setAriaDescribedBy()})}setAriaDescribedBy(){this._ariaDescribedby=this.isOpen?"tooltip-"+this.tooltipId:null,this._ariaDescribedby?this._renderer.setAttribute(this._elementRef.nativeElement,"aria-describedby",this._ariaDescribedby):this._renderer.removeAttribute(this._elementRef.nativeElement,"aria-describedby")}toggle(){if(this.isOpen)return this.hide();this.show()}show(){if(this._positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition},preventOverflow:{enabled:this.adaptivePosition}}}),this.isOpen||this.isDisabled||this._delayTimeoutId||!this.tooltip)return;const t=()=>{this._delayTimeoutId&&(this._delayTimeoutId=void 0),this._tooltip.attach(d).to(this.container).position({attachment:this.placement}).show({content:this.tooltip,placement:this.placement,containerClass:this.containerClass,id:"tooltip-"+this.tooltipId})},e=()=>{this._tooltipCancelShowFn&&this._tooltipCancelShowFn()};if(this.delay){const n=Object(o.a)(this.delay).subscribe(()=>{t(),e()});this.triggers&&Object(r.f)(this.triggers).forEach(t=>{this._tooltipCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,t.close,()=>{n.unsubscribe(),e()})})}else t()}hide(){this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this._tooltip.isShown&&(this._tooltip.instance.classMap.in=!1,setTimeout(()=>{this._tooltip.hide()},this.tooltipFadeDuration))}ngOnDestroy(){this._tooltip.dispose(),this.tooltipChange.unsubscribe(),this.onShown.unsubscribe(),this.onHidden.unsubscribe()}}return Object(i.__decorate)([Object(r.a)(),Object(i.__metadata)("design:type",Object)],t.prototype,"tooltip",void 0),t})();class h{static forRoot(){return{ngModule:h,providers:[l,s.a,u.a]}}}},"9Xeq":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},"9d/t":function(t,e,n){var a=n("2oRo"),r=n("AO7/"),i=n("Fib7"),s=n("xrYK"),u=n("tiKp")("toStringTag"),o=a.Object,l="Arguments"==s(function(){return arguments}());t.exports=r?s:function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(n){}}(e=o(t),u))?n:l?s(e):"Object"==(a=s(e))&&i(e.callee)?"Arguments":a}},"9nlD":function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("LvDl"),r=n("2Vo4"),i=n("XNiG"),s=n("mtw6"),u=n("G1I9"),o=n("a0VL"),l=n("ufoC"),d=n("8Y7J"),c=n("EApP");let f=(()=>{class t{constructor(t,e,n){this.toastr=t,this.taskMessageService=e,this.cdDatePipe=n,this.hideToasties=!1,this.dataSource=new r.a([]),this.data$=this.dataSource.asObservable(),this.sidebarSubject=new i.a,this.queued=[],this.KEY="cdNotifications";const s=localStorage.getItem(this.KEY);let o=[];a.isString(s)&&(o=JSON.parse(s,(t,e)=>a.isPlainObject(e)?a.assign(new u.a,e):e)),this.dataSource.next(o)}removeAll(){localStorage.removeItem(this.KEY),this.dataSource.next([])}remove(t){const e=this.dataSource.getValue();e.splice(t,1),this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))}save(t){const e=this.dataSource.getValue();for(e.push(t),e.sort((t,e)=>t.timestamp>e.timestamp?-1:1);e.length>10;)e.pop();this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))}show(t,e,n,r,i){return window.setTimeout(()=>{let s;s=a.isFunction(t)?t():a.isObject(t)?t:new u.b(t,e,n,r,i),this.queueToShow(s)},10)}queueToShow(t){this.cancel(this.queuedTimeoutId),this.queued.find(e=>a.isEqual(e,t))||this.queued.push(t),this.queuedTimeoutId=window.setTimeout(()=>{this.showQueued()},500)}showQueued(){this.getUnifiedTitleQueue().forEach(t=>{const e=new u.a(t);e.isFinishedTask||this.save(e),this.showToasty(e)})}getUnifiedTitleQueue(){return Object.values(this.queueShiftByTitle()).map(t=>{const e=t[0];return t.length>1&&(e.message="<ul>"+t.map(t=>`<li>${t.message}</li>`).join("")+"</ul>"),e})}queueShiftByTitle(){const t={};let e;for(;e=this.queued.shift();)t[e.title]||(t[e.title]=[]),t[e.title].push(e);return t}showToasty(t){this.hideToasties||this.toastr[["error","info","success"][t.type]]((t.message?t.message+"<br>":"")+this.renderTimeAndApplicationHtml(t),t.title,t.options)}renderTimeAndApplicationHtml(t){return`<small class="date">${this.cdDatePipe.transform(t.timestamp)}</small><i class="float-right custom-icon ${t.applicationClass}" title="${t.application}"></i>`}notifyTask(t,e=!0){const n=this.finishedTaskToNotification(t,e);return n.isFinishedTask=!0,this.show(n)}finishedTaskToNotification(t,e=!0){let n;return n=t.success&&e?new u.b(s.a.success,this.taskMessageService.getSuccessTitle(t)):new u.b(s.a.error,this.taskMessageService.getErrorTitle(t),this.taskMessageService.getErrorMessage(t)),n.isFinishedTask=!0,n}cancel(t){window.clearTimeout(t)}suspendToasties(t){this.hideToasties=t}toggleSidebar(t=!1){this.sidebarSubject.next(t)}}return t.ngInjectableDef=d["ɵɵdefineInjectable"]({factory:function(){return new t(d["ɵɵinject"](c.j),d["ɵɵinject"](l.a),d["ɵɵinject"](o.a))},token:t,providedIn:"root"}),t})()},"9ppp":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return t.prototype=Object.create(Error.prototype),t})()},"9rRi":function(t,e,n){!function(t){"use strict";t.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},"A+xa":function(t,e,n){!function(t){"use strict";t.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(t){return t+(/сехет$/i.exec(t)?"рен":/ҫул$/i.exec(t)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("wd/R"))},A2ZE:function(t,e,n){var a=n("4zBA"),r=n("We1y"),i=a(a.bind);t.exports=function(t,e){return r(t),void 0===e?t:i?i(t,e):function(){return t.apply(e,arguments)}}},ANnk:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aexS"),n("f/UV");class a{constructor(t,e,n){this.formScope=t,this.authStorageService=e,this.elementRef=n}ngAfterViewInit(){this.permissions=this.authStorageService.getPermissions(),null!==this.formScope&&(this.service_name=this.formScope.cdFormScope),this.service_name&&!this.permissions[this.service_name].update&&(this.elementRef.nativeElement.disabled=!0)}}},"AO7/":function(t,e,n){var a={};a[n("tiKp")("toStringTag")]="z",t.exports="[object z]"===String(a)},AQ68:function(t,e,n){!function(t){"use strict";t.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("wd/R"))},AWcq:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("yJti");class r{constructor(){this.vcs=a.a}ngOnInit(){}}},AfCQ:function(t,e,n){"use strict";var a=n("2Vo4"),r=n("qgXg"),i=n("HDdC"),s=n("pxpQ"),u=n("Kqap"),o=n("lJxs"),l=n("7o/Q");class d{constructor(t,e){this.compare=t,this.keySelector=e}call(t,e){return e.subscribe(new c(t,this.compare,this.keySelector))}}class c extends l.a{constructor(t,e,n){super(t),this.keySelector=n,this.hasKey=!1,"function"==typeof e&&(this.compare=e)}compare(t,e){return t===e}_next(t){let e;try{const{keySelector:n}=this;e=n?n(t):t}catch(a){return this.destination.error(a)}let n=!1;if(this.hasKey)try{const{compare:t}=this;n=t(this.key,e)}catch(a){return this.destination.error(a)}else this.hasKey=!0;n||(this.key=e,this.destination.next(t))}}n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return h}));class f extends a.a{constructor(t,e,n){super(t),e.pipe(Object(s.b)(r.a)).pipe(Object(u.a)((t,e)=>e?n(t,e):t,t)).subscribe(t=>this.next(t))}}class h extends i.a{constructor(t,e,n){super(),this._dispatcher=t,this._reducer=e,this.source=n}select(t){return this.source.pipe(Object(o.a)(t)).pipe(t=>t.lift(new d(void 0,void 0)))}lift(t){const e=new h(this._dispatcher,this._reducer,this);return e.operator=t,e}dispatch(t){this._dispatcher.next(t)}next(t){this._dispatcher.next(t)}error(t){this._dispatcher.error(t)}complete(){}}},AiMb:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="zh-CN">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>切换导航</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>仪表盘</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>集群</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>主机</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>对应的服务</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>配置项</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH 索引</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager 扩展模块</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>日志</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>存储池</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>块设备</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>映像</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>镜像</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>文件系统</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>对象网关</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>守护进程</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>请选择语言</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>正在加载面板的相关数据…</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana 时间选择工具</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>重新设置</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>返回</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>无法加载数据。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>选中个数</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>命中个数</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>总数</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名称</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>解释</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>更详尽的解释</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>缺省值</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>守护进程的缺省值</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>可选值</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>保存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>检查 CRUSH 索引图</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>正在加载…</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>主机名</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>请填写此栏目!</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>是的,我确定。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>取消</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>关闭</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>主机列表</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>总体性能</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>无法找到相关条目</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>集群日志</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>审计日志</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>正在加载相关配置信息...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>配置信息无法加载。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>编辑 Manager 扩展模块</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>输入值不是有效的 UUID,如:67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>输入的应该是个有效的 IP 地址。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>输入须为数字。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>输入的应该是一个浮点数或者十进制整数。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>集群 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap 修改时间</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con </target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>仲裁成员</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非仲裁成员</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>添加</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>特性</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>集群范围的 OSD 标志</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>提交</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>高级设置…</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 恢复优先级</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>优先级</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>自定义优先级</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>这个字段是必填的!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>权重值必须在 0 和 1 之间</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>重设权重</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深度}}</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深度} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 列表</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>编辑</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>删除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>健康状况</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>统计数据</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>客户端</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任何客户端均可访问</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>地址</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必填项</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>必须包含一个或多个逗号分隔值</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例如:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>访问类型</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>添加客户端</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 无可用集群 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 请选择一个集群 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>添加守护进程</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>存储后端</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 没有可用的数据存储池 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 请选择存储后端 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>对象网关用户</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 无可选用户 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 请选择对象网关用户 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 用户 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 无可用客户端 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- 请选择 cephx 客户端 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 名称</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>安全标签</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>启用安全标签</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 路径</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>路径需以“/”开头,后面可跟单词</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>将创建新文件夹</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>路径</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>路径只能是单个“/”或单词</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>将创建新的桶</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 协议</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 标签</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>客户端不能装入子目录(即如果标记为 foo,则客户端无法装入 foo/baz)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>通过使用不同标记选项,可将同一路径导出多次。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>伪</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>通过使用不同伪选项,可将同一路径导出多次。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 没有可用的访问类型 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 选择访问类型 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 没有可用的 squash --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 选择执行哪种类型的用户 ID 匿名访问 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>传输协议</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>欢迎使用 Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>请输入用户名</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>请输入密码</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>登录</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>抱歉,此用户不存在。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>禁止访问</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>抱歉,您无权访问这个页面。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 配置</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>删除本地的配置项,改用更高作用域的配置值。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小值为 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>存储池列表</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名称只能由字母、数字、短划线和下划线组成。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>此纠删码配置名称已被使用。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>纠删码算法</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>数据块 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>必须大于等于 2</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>校验块 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>必须大于等于 1</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>持久因子 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>局部性因子 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH 故障域</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH 局部性</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>无</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>算法</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>packetsize</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH 根</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH 设备类型</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任意</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>目录</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名称…</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>此 Ceph 存储池名称已被使用。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>存储池类型</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 请选择存储池的类型 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>归置组 (PG)</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>至少需要一个归置组!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>您的集群没法支持这么多的 PG。请重新计算需要的 PG 个数。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>在线 PG 计算器</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>副本个数</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>标志</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 重写 (overwrite)</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>应用类型</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 无纠删码配置可选 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 请选择一个纠删码配置 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH 算法规则组</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 选择 CRUSH 规则 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH 规则</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH 步骤</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>压缩</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>模式</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>算法</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 无可用的纠删码压缩算法 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>blob 大小下限</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>比如 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>取值必须大于 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>blob 大小上限</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>如 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>取值必须大于 blob 大小下限</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>比例</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>压缩率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>取值必须在 0.0 和 1.0 之间</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>如 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>详情</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>性能详情</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>缓存层详细信息</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>将映像移至回收站</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保护期一直到</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>无保护</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日期格式有问题。请使用“YYYY-MM-DD HH:mm:ss”。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保护期限已经过了。请设置一个将来的日期,或者清空不填。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>移动映像</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>概览</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>目标</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>发现身份验证</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>用户名长度必须在 8 到 64 个字符之间,且只能包含\n以下字符:英文字母、“.”、“@”、“-”、“_”或“:”。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>密码</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>互认证用户</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>互认证密码</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>可用信息:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>无可用 iSCSI 目标</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>存储池</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>数据存储池</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>创建</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>对象数</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>对象大小</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>供给容量</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>总供给容量</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>条带单元</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>条带个数</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>父节点</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>块存储名字前缀</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>order</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>快照</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>映像</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>此设置会覆盖全局值</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>全局</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>该值为全局值。没有为此映像设置此选项的值。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>不允许使用“/”和“@”。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 没有可用的 RBD 存储池 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 请选择存储池 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>使用一个专用的数据池</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>数据池</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>为保存 RBD 的对象数据单独分配的存储池。</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>您需要设置大一些的容量。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>高级设置</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>条带</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>条带单元大小</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 选择条带单元大小 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>因为设置了条带个数,所以这个字段是必选的!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>条带单元大小超过了对象大小。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>条带个数</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>因为设置了条带单元大小,所以这个字段是必选的!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>条带的个数必须大于 0。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>您即将进行回滚操作</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>清空回收站</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>全选</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>存储池:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>存储池名称…</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>恢复映像</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>要恢复</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>输入映像的新名称,并点击</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新名称</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>过期时间</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保护期限</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 结构图</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常无须改变这些默认参数值。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>设置</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>后备存储</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>确认</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>高级设置</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>目标限定名</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN 格式错误。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例如:iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>更多信息</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>此目标的高级设置项存在修改。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>端口</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>添加端口</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>此映像的设置项存在修改。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>添加映像</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 身份验证</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>授权人</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>授权人</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>客户端 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>授权人 IQN 必须唯一。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>用户名长度必须在 8 到 64 个字符之间,且只能包含\n以下字符:英文字母、“.”、“@”、“-”、“_”或“:”。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>授权人属于群组。映像须在群组中进行设置。</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>无项目添加。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>添加授权人</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>群组</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>群组</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>添加群组</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>回收站</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>问题</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>正在同步</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>已就绪</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>编辑存储池镜像模式</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>在禁用镜像功能前必须先移除同伴集群。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {编辑} other {添加} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>集群名称</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>集群名称无效。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID 无效。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Monitor 地址</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>逗号分割的地址...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Monitor 地址无效。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 密钥</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 编码的密钥...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 密钥必须是 base64 编码的。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>无法读取性能计数器</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>守护进程列表</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>性能计数器</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>正在加载存储桶数据…</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>输入值无效。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>所选名称已经被使用。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>所有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 请选择一个用户 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>开启</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>索引类型</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>归置规则</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>标识</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>max marker</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>主版本</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>修改时间</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>zonegroup</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>存储桶配额</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大数目</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>无限制</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大对象数目</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>用户名</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 请选择用户名 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>自动生成密钥</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>访问密钥</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>秘密密钥</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>全名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>邮箱</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>冻结</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>系统</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大存储桶数目</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>子用户</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>用户权限</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>用户配额</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>显示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>密钥</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>类型</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 请选择一个类型 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>权限</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 请选择权限类型 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>子用户</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>所选的子用户 ID 已被使用。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>读、写</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>全部</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift 密钥</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>自动生成密钥</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>正在加载用户数据…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>用户数据无法加载。 </target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>所选的用户 ID 已被使用。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>无效的邮箱地址。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>此邮箱地址已被使用。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>存储桶个数的上限</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>禁用</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>自定义</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 密钥</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>没有子用户。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>没有任何密钥。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>权限为空。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>空间无限制</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>空间上限</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>对象个数无限制</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>对象个数上限</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>设置的值必须 &gt;= 0。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>描述…</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>权限</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>角色</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>确认密码</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>密码和之前的输入不匹配。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>邮箱</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>邮箱地址无效。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>您即将取消您自己用户的 "user read / update" 权限。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>如果您继续的话,您以后就没办法为其他用户添加或者删除角色了。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>您确实要继续吗?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>帮助</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>文档</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>关于</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>仪表盘设置</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>用户管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>登录的用户</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>登出</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>OSD map</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>元数据不可用</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>相关元数据</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>性能计数器</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>写入请求</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>读取请求</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>直方图</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>当前值</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>下限</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>上限</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>来源</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>级别</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>可在运行时更新(可编辑)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>标记</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>可选项</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>参见</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>集群状态</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>manager 守护进程</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>对象网关</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>metadata 服务器</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 网关</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>客户端 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>客户端吞吐量</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>客户端读/写</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>恢复吞吐量</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>洗刷</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>性能</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>基本容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>每个 OSD 的 PG 数</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 状态</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>排位</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>当前</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>已更新发现身份验证</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>无可用端口。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>无可用映像。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>无可用映像。请确保为目标添加一个映像。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>无可用授权人。请确保为目标添加一个授权人。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>目标</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>读字节数</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>写字节数</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>读请求数</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>写请求数</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>活动/优化自</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>实例</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>问题</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>进度</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>编辑模式</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>添加 peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>编辑 peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>删除 peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># 本地</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># 远程</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>镜像 peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>密钥</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>完全展开</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>分层</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>互斥锁</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>object map(要求互斥锁支持)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>日志(要求互斥锁支持)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>无保护的</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 快照回滚</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>回滚</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 快照</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>定点删除</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>类型</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>主机</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>根</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>备用服务</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>排位</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>守护进程</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>活跃度</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用率</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>更新完成</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>该值可在运行时更新。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>服务器或客户端不会主动从 monitor 的配置数据库读取这个配置。\n 所以不能用“ceph config set ...”设置它。但是可以通过\n ceph.conf 或者用命令行进行配置。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>该配置只有在服务启动的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>该配置只在创建集群的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>该配置只在服务创建的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>服务</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>当前值</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>可编辑</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>启用</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>禁用</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>正在重新连接,请稍候…</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>外部地址</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>活动会话</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>禁止加入</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>之前被除名的 OSD 在启动之后,不会被加入集群</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>禁止除名</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>在发现 OSD 没有响应之后一段时间,该 OSD 会被踢出集群。该标志会禁止这个功能。</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>禁止启用</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>不允许 OSD 启动</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>禁止停用</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>当前不受理对 OSD 的失效报告,因而 monitor 不会停用 OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>暂停</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>暂停读写</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>禁止洗刷</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>洗刷已禁止</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>禁止深层洗刷</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>深层洗刷已禁止</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>禁止回填</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG 回填已推迟</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>禁止恢复</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG 恢复已推迟</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>逐位排序</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>使用逐位排序</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>老版本的快照已全部升级</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD 上的快照已全部转换完毕</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>在恢复时进行删除操作</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>在恢复时,而非对齐阶段进行删除</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 日志硬限制</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>为 pg 日志长度添加硬限制</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>已更新 OSD 标志</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>除名</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>加入</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>停用</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>标记</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 丢失</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>已标记丢失</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>销毁</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>已销毁</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>删除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>读字节数</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>写字节数</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>读请求数</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>写请求数</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大回填量</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>最大活跃恢复请求数</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>最大单次恢复操作数</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>恢复/回填操作间隔睡眠时间</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>任务</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>严重程度</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>已启动</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>已使用</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>空闲</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>正常</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>运行中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警报</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>未知</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>启用中</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>无文件系统</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>工作</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>待机</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>工作的守护进程</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganesha 服务的配置还没有完成。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>传输</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 用户</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 文件系统</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(继承自全局配置)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>继承自全局配置</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 选择执行哪种类型的用户 ID 匿名访问 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>没有可用的守护进程。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>缓存模式</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>最少延迟赶出时间</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>最少延迟刷回时间</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>目标器最大字节数</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>目标器最大对象数</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>还没有任何应用标记</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>应用标记到了上限</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>一个存储池最多能有四个应用标记。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>可用的字符为“_a-zA-Z0-9”</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>长度限制为 128 个字符</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>添加应用标记或根据其进行筛选</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>添加应用标记</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>副本个数</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>最后修改时间</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH 规则集</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>作用范围</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>读权限</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>新建</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>系统角色</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>更新用户</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>继续</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>您被自动登出,因为您的角色有了变动。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target> 各对象都被分割为数据块,分别存储于不同 OSD 。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>计算各对象的编码块、并存储于不同 OSD 。\n编码块的数量等同于在不丢数据的前提下允许同时失效的 OSD 数量。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>jerasure 插件是最通用、最灵活的插件,\n也是 Ceph 纠删码存储池的默认插件。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>reed_sol_van 技术更灵活:它足以设置 k 和 m 值。 \ncauchy_good 技术更快,但你得谨慎地选择 packetsize 值。\nreed_sol_r6_op 、 liberation 、 blaum_roth 、 liber8tion 都是与 RAID6 等价的技术,\n它们只能配置为 m=2 。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target> 以 bytes 大小的包为单位进行编码。\n确定合适的包尺寸很难, \njerasure 文档对此有很详细的描述。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>用 jerasure 插件时,纠删码编码的对象存储在多个 OSD 上,\n丢失一个 OSD 的恢复过程需读取所有其他的 OSD 。\n比如 jerasure 的配置为 k=8 且 m=4 ,丢失一个 OSD 后需读取其他 11 个 OSD 才能恢复。\n\nlrc 纠删码插件创建的是局部校验块,这样只需较少的 OSD 即可恢复。\n比如 lrc 的配置为 k=8 、 m=4 且 l=4 ,它将为每四个 OSD 创建额外的校验块,\n当一个 OSD 丢失时,它只需四个 OSD 即可恢复,而不需要十一个。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>把编码块和数据块分组为大小为 locality 的集合。\n比如, k=4 且 m=2 时,若设置 locality=3 ,将会分组为大小为三的两组,\n这样各组都能自行恢复,无需从另一组读数据块。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>由 l 定义的块集合将按哪种 crush 桶类型存储。\n比如,若设置为 rack ,大小为 l 块的各组将被存入不同的机架,\n此值会被用于创建类似 step choose rack 的规则集。\n如果没设置,就不会这样分组。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 插件封装了 ISA 库。它只能运行在 Intel 处理器上。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 插件包含两种 Reed Solomon 编码形式。\n设置为 reed_sol_van 表示用 Vandermonde 算法,设置为 cauchy 表示用 Cauchy 算法。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec 插件封装了 multiple SHEC 库。\n与 Reed Solomon 编码相比,它能使 Ceph 更高效地恢复数据。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target> 奇偶校验块数量,它们在各自的计算范围内包含了各数据块。\n此数值被用作持久性估值。\n例如,假设 c=2 ,就是说不丟数据的情况下可损失 2 个 OSD 。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>规则集第一步所指向的 CRUSH 桶之名,\n如 step take default 。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>确保两个编码块不会存在于同一故障域的桶里面。\n比如,假设故障域是 host ,就不会有两个编码块存储到同一主机;\n此值用于在规则集中创建类似 step chooseleaf host 的步骤。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>使用 CRUSH 索引中的 crush 设备类名,\n将归置限制于特定类的设备(例如,ssd 或 hdd)。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>设置纠删码插件所在目录。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>允许所有操作</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>只允许不修改服务器端数据的操作</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>禁止读写,但是允许其他的操作</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>禁止读、写以及任何可能修改文件内容的操作</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>完全禁止访问</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 选择优先级 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>信息</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>过去 5 分钟</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>过去 15 分钟</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>过去 30 分钟</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>过去 1 小时(默认)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>过去 3 小时</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>过去 6 小时</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>过去 12 小时</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>过去 24 小时</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨天</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>今天</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>今天到现在为止</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>前天</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>过去 2 天</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>上周的今天</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>上个星期</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>本周</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>本周以来</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>过去 7 天</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>上个月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>当月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>本月以来</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>过去 30 天</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>过去 90 天</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>过去 6 个月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>过去 1 年</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>去年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年以来</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>过去 2 年</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>过去 5 年</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>无选中项目。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>取消选择</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>达到选择项数上限。</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>过滤标签</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>添加 badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>无可选项目。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>复制</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>深层洗刷</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>销毁</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>展开</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>标记为停用</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>标记为加入</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>标记为丢失</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>标记为已除名</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保护</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>重命名</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>恢复</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>移至回收站</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>解除保护</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>删除完成</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>克隆完成</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>复制完成</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>展开完成</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>已经把</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>回滚完成</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>是</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>否</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>服务质量 (QoS)</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>指定的每秒 IO 字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>指定的每秒 IO 操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>读 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>指定的每秒内读取的字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>读 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>指定的每秒读操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>写 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>指定的每秒内写入的字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>写 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>指定的每秒写操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>指定的 IO 字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>指定的 IO 操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>读 BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>指定的读取的字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>读 IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>指定的读操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>写 BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>指定的写入的字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>写 IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>指定的写操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>正在执行</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>执行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>执行完毕</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>未知任务</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>正在创建</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>创建</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>正在更新</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>正在删除</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>正在克隆</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>正在复制</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>复制</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>正在展开</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>展开</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>正在回滚</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>回滚</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>正在把</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>把</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>已经把</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>无法找到映像。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>正在把</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>把</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>正在清除</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>所有存储池</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>因为包含同伴集群,无法禁用镜像功能</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},Avrn:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("aexS"),r=n("8Y7J"),i=n("iInd");let s=(()=>{class t{constructor(t,e){this.router=t,this.authStorageService=e}canActivate(t,e){return!!this.authStorageService.isLoggedIn()||(this.router.navigate(["/login"],{queryParams:{returnUrl:e.url}}),!1)}canActivateChild(t,e){return this.canActivate(t,e)}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.m),r["ɵɵinject"](a.a))},token:t,providedIn:"root"}),t})()},AvvY:function(t,e,n){!function(t){"use strict";t.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(t,e){return 12===t&&(t=0),"രാത്രി"===e&&t>=4||"ഉച്ച കഴിഞ്ഞ്"===e||"വൈകുന്നേരം"===e?t+12:t},meridiem:function(t,e,n){return t<4?"രാത്രി":t<12?"രാവിലെ":t<17?"ഉച്ച കഴിഞ്ഞ്":t<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("wd/R"))},AxL3:function(t,e){var n=!("undefined"==typeof window||!window.document||!window.document.createElement);t.exports=n},"B/qT":function(t,e,n){var a=n("UMSQ");t.exports=function(t){return a(t.length)}},B55N:function(t,e,n){!function(t){"use strict";t.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(t){return"午後"===t},meridiem:function(t,e,n){return t<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(t){return t.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(t){return this.week()<t.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("wd/R"))},BFxc:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("4I5i"),i=n("EY2u");function s(t){return function(e){return 0===t?Object(i.b)():e.lift(new u(t))}}class u{constructor(t){if(this.total=t,this.total<0)throw new r.a}call(t,e){return e.subscribe(new o(t,this.total))}}class o extends a.a{constructor(t,e){super(t),this.total=e,this.ring=new Array,this.count=0}_next(t){const e=this.ring,n=this.total,a=this.count++;e.length<n?e.push(t):e[a%n]=t}_complete(){const t=this.destination;let e=this.count;if(e>0){const n=this.count>=this.total?this.total:this.count,a=this.ring;for(let r=0;r<n;r++){const r=e++%n;t.next(a[r])}}t.complete()}}},BJMh:function(t,e,n){var a=n("KFwg")(n("Wa4q"),"Promise");t.exports=a},BQkM:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return t+" IOPS"}}},BVg3:function(t,e,n){!function(t){"use strict";function e(t){return t%100==11||t%10!=1}function n(t,n,a,r){var i=t+" ";switch(a){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return e(t)?i+(n||r?"sekúndur":"sekúndum"):i+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return e(t)?i+(n||r?"mínútur":"mínútum"):n?i+"mínúta":i+"mínútu";case"hh":return e(t)?i+(n||r?"klukkustundir":"klukkustundum"):i+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return e(t)?n?i+"dagar":i+(r?"daga":"dögum"):n?i+"dagur":i+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return e(t)?n?i+"mánuðir":i+(r?"mánuði":"mánuðum"):n?i+"mánuður":i+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return e(t)?i+(n||r?"ár":"árum"):i+(n||r?"ár":"ári")}}t.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},BVkS:function(t,e,n){var a=n("2zzJ"),r=n("Eey9");t.exports=function(t,e){return e.length<2?t:a(t,r(e,0,-1))}},"BX/b":function(t,e,n){var a=n("xrYK"),r=n("/GqU"),i=n("JBy8").f,s=n("Ta7t"),u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"Window"==a(t)?function(t){try{return i(t)}catch(e){return s(u)}}(t):i(r(t))}},BkBO:function(t,e,n){var a=n("43VP");t.exports=function(t,e){var n=!0;return a(t,(function(t,a,r){return n=!!e(t,a,r)})),n}},Bs8V:function(t,e,n){var a=n("g6v/"),r=n("xluM"),i=n("0eef"),s=n("XGwC"),u=n("/GqU"),o=n("oEtG"),l=n("Gi26"),d=n("DPsx"),c=Object.getOwnPropertyDescriptor;e.f=a?c:function(t,e){if(t=u(t),e=o(e),d)try{return c(t,e)}catch(n){}if(l(t,e))return s(!r(i.f,t,e),t[e])}},ByF4:function(t,e,n){!function(t){"use strict";t.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},C0Ia:function(t,e,n){var a=n("2oRo"),r=n("6LWA"),i=n("aO6C"),s=n("hh1v"),u=n("tiKp")("species"),o=a.Array;t.exports=function(t){var e;return r(t)&&(i(e=t.constructor)&&(e===o||r(e.prototype))||s(e)&&null===(e=e[u]))&&(e=void 0),void 0===e?o:e}},C523:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("gk6K"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(t,e,n,a){this.el=t,this.renderer=e,this.treeDraggedElement=n,this.ngZone=a,this.dragEventHandler=this.onDrag.bind(this)}return t.prototype.ngAfterViewInit=function(){var t=this,e=this.el.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("drag",t.dragEventHandler)}))},t.prototype.ngDoCheck=function(){this.renderer.setAttribute(this.el.nativeElement,"draggable",this.treeDragEnabled?"true":"false")},t.prototype.ngOnDestroy=function(){this.el.nativeElement.removeEventListener("drag",this.dragEventHandler)},t.prototype.onDragStart=function(t){t.dataTransfer.setData("text",t.target.id),this.treeDraggedElement.set(this.draggedElement),this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragStart",t)},t.prototype.onDrag=function(t){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("drag",t)},t.prototype.onDragEnd=function(){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragEnd"),this.treeDraggedElement.set(null)},i([Object(a.Input)("treeDrag"),s("design:type",Object)],t.prototype,"draggedElement",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"treeDragEnabled",void 0),i([Object(a.HostListener)("dragstart",["$event"]),s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",void 0)],t.prototype,"onDragStart",null),i([Object(a.HostListener)("dragend"),s("design:type",Function),s("design:paramtypes",[]),s("design:returntype",void 0)],t.prototype,"onDragEnd",null),i([Object(a.Directive)({selector:"[treeDrag]"}),s("design:paramtypes",[a.ElementRef,a.Renderer2,r.a,a.NgZone])],t)}()},C6Ij:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("DqMs"),i=n("/NlG"),s=n("GiVz"),u=n("SVse");n("AWcq"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return p}));var o=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","info"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Retrieving data"])),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[". Please wait..."]))],(function(t,e){var n=e.component;t(e,1,0,"info"),t(e,5,0,n.statusFor)}),null)}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","warning"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Displaying previously cached data"])),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,["."]))],(function(t,e){var n=e.component;t(e,1,0,"warning"),t(e,5,0,n.statusFor)}),null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","error"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Could not load data"])),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[". Please check the cluster health."]))],(function(t,e){var n=e.component;t(e,1,0,"error"),t(e,5,0,n.statusFor)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](1,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.status===n.vcs.ValueNone),t(e,3,0,n.status===n.vcs.ValueStale),t(e,5,0,n.status===n.vcs.ValueException)}),null)}},CFvb:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a={LEFT:37,UP:38,RIGHT:39,DOWN:40,ENTER:13,SPACE:32,CONTEXT_MENU:32}},CNMR:function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return o}));var a=n("mrSG"),r=n("8Y7J"),i=n("hpHm");class s{constructor(){this.type="warning",this.dismissible=!1,this.dismissOnTimeout=void 0}}let u=(()=>{class t{constructor(t,e){this.changeDetection=e,this.type="warning",this.dismissible=!1,this.isOpen=!0,this.onClose=new r.EventEmitter,this.onClosed=new r.EventEmitter,this.classes="",this.dismissibleChange=new r.EventEmitter,Object.assign(this,t),this.dismissibleChange.subscribe(t=>{this.classes=this.dismissible?"alert-dismissible":"",this.changeDetection.markForCheck()})}ngOnInit(){this.dismissOnTimeout&&setTimeout(()=>this.close(),parseInt(this.dismissOnTimeout,10))}close(){this.isOpen&&(this.onClose.emit(this),this.isOpen=!1,this.changeDetection.markForCheck(),this.onClosed.emit(this))}}return Object(a.__decorate)([Object(i.a)(),Object(a.__metadata)("design:type",Object)],t.prototype,"dismissible",void 0),t})();class o{static forRoot(){return{ngModule:o,providers:[s]}}}},CNUl:function(t,e,n){var a=n("XhiP");t.exports=function(t){var e=new t.constructor(t.byteLength);return new a(e).set(new a(t)),e}},CUJ1:function(t,e,n){var a=n("xAZD"),r=n("J9xi"),i=n("kna9"),s=n("MOZO"),u=n("77kF"),o=n("tpUd"),l=n("LJNh"),d=n("mOnh"),c=l((function(t,e){var n={};if(null==t)return n;var l=!1;e=a(e,(function(e){return e=s(e,t),l||(l=e.length>1),e})),u(t,d(t),n),l&&(n=r(n,7,o));for(var c=e.length;c--;)i(n,e[c]);return n}));t.exports=c},Cfvw:function(t,e,n){"use strict";var a=n("HDdC"),r=n("SeVD"),i=n("quSY"),s=n("kJWO"),u=n("jZKg"),o=n("Lhse"),l=n("c2HN"),d=n("I55L");function c(t,e){return e?function(t,e){if(null!=t){if(function(t){return t&&"function"==typeof t[s.a]}(t))return function(t,e){return new a.a(n=>{const a=new i.a;return a.add(e.schedule(()=>{const r=t[s.a]();a.add(r.subscribe({next(t){a.add(e.schedule(()=>n.next(t)))},error(t){a.add(e.schedule(()=>n.error(t)))},complete(){a.add(e.schedule(()=>n.complete()))}}))})),a})}(t,e);if(Object(l.a)(t))return function(t,e){return new a.a(n=>{const a=new i.a;return a.add(e.schedule(()=>t.then(t=>{a.add(e.schedule(()=>{n.next(t),a.add(e.schedule(()=>n.complete()))}))},t=>{a.add(e.schedule(()=>n.error(t)))}))),a})}(t,e);if(Object(d.a)(t))return Object(u.a)(t,e);if(function(t){return t&&"function"==typeof t[o.a]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new a.a(n=>{const a=new i.a;let r;return a.add(()=>{r&&"function"==typeof r.return&&r.return()}),a.add(e.schedule(()=>{r=t[o.a](),a.add(e.schedule((function(){if(n.closed)return;let t,e;try{const n=r.next();t=n.value,e=n.done}catch(a){return void n.error(a)}e?n.complete():(n.next(t),this.schedule())})))})),a})}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}(t,e):t instanceof a.a?t:new a.a(Object(r.a)(t))}n.d(e,"a",(function(){return c}))},ChqD:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},CjzT:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},CoRJ:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n("wd/R"))},CoVI:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("2vnA"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(t,e){this.templateRef=t,this.viewContainer=e,this.templateBindings={}}return t.prototype.ngOnInit=function(){this.view=this.viewContainer.createEmbeddedView(this.templateRef),this.dispose&&this.dispose(),this.shouldDetach()&&this.view.detach(),this.autoDetect(this.view)},t.prototype.shouldDetach=function(){return this.treeMobxAutorun&&this.treeMobxAutorun.detach},t.prototype.autoDetect=function(t){this.dispose=Object(r.b)((function(){return t.detectChanges()}))},t.prototype.ngOnDestroy=function(){this.dispose&&this.dispose()},i([Object(a.Input)(),s("design:type",Object)],t.prototype,"treeMobxAutorun",void 0),i([Object(a.Directive)({selector:"[treeMobxAutorun]"}),s("design:paramtypes",[a.TemplateRef,a.ViewContainerRef])],t)}()},CqXF:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t){return e=>e.lift(new i(t))}class i{constructor(t){this.value=t}call(t,e){return e.subscribe(new s(t,this.value))}}class s extends a.a{constructor(t,e){super(t),this.value=e}_next(t){this.destination.next(this.value)}}},CslI:function(t,e,n){var a=n("LaC8"),r=n("+FhV"),i=n("x3F9"),s=Function.prototype.toString,u=Object.prototype.hasOwnProperty,o=s.call(Object);t.exports=function(t){if(!i(t)||"[object Object]"!=a(t))return!1;var e=r(t);if(null===e)return!0;var n=u.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==o}},CwBR:function(t,e,n){var a=n("pMcL"),r=n("PHub"),i=n("0GLT"),s=a?a.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||r(t)||!!(s&&t&&t[s])}},"D/JM":function(t,e,n){!function(t){"use strict";t.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},D0XW:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("3N8a");const r=new(n("IjjT").a)(a.a)},D4zM:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e){this.elementRef=t,this.renderer=e}ngOnInit(){this.renderer.setAttribute(this.elementRef.nativeElement,"tabindex","-1"),this.iElement=this.renderer.createElement("i"),this.renderer.addClass(this.iElement,"fa"),this.renderer.appendChild(this.elementRef.nativeElement,this.iElement),this.update()}getInputElement(){return document.getElementById(this.cdPasswordButton)}update(){const t=this.getInputElement();t&&"text"===t.type?(this.renderer.removeClass(this.iElement,"fa-eye"),this.renderer.addClass(this.iElement,"fa-eye-slash")):(this.renderer.removeClass(this.iElement,"fa-eye-slash"),this.renderer.addClass(this.iElement,"fa-eye"))}onClick(){const t=this.getInputElement();t.type="password"===t.type?"text":"password",this.update()}}},DH7j:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>Array.isArray||(t=>t&&"number"==typeof t.length))()},"DKr+":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["thodde secondanim","thodde second"],ss:[t+" secondanim",t+" second"],m:["eka mintan","ek minute"],mm:[t+" mintanim",t+" mintam"],h:["eka voran","ek vor"],hh:[t+" voranim",t+" voram"],d:["eka disan","ek dis"],dd:[t+" disanim",t+" dis"],M:["eka mhoinean","ek mhoino"],MM:[t+" mhoineanim",t+" mhoine"],y:["eka vorsan","ek voros"],yy:[t+" vorsanim",t+" vorsam"]};return e?r[n][0]:r[n][1]}t.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(t,e){switch(e){case"D":return t+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return t}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(t,e){return 12===t&&(t=0),"rati"===e?t<4?t:t+12:"sokalli"===e?t:"donparam"===e?t>12?t:t+12:"sanje"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"rati":t<12?"sokalli":t<16?"donparam":t<20?"sanje":"rati"}})}(n("wd/R"))},DLK6:function(t,e,n){var a=n("4zBA"),r=n("ewvW"),i=Math.floor,s=a("".charAt),u=a("".replace),o=a("".slice),l=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,d=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,a,c,f){var h=n+t.length,g=a.length,p=d;return void 0!==c&&(c=r(c),p=l),u(f,p,(function(r,u){var l;switch(s(u,0)){case"$":return"$";case"&":return t;case"`":return o(e,0,n);case"'":return o(e,h);case"<":l=c[o(u,1,-1)];break;default:var d=+u;if(0===d)return r;if(d>g){var f=i(d/10);return 0===f?r:f<=g?void 0===a[f-1]?s(u,1):a[f-1]+s(u,1):r}l=a[d-1]}return void 0===l?"":l}))}},DNAf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{constructor(t,e){this.customValidations={},this.i18n=e,this.empty=this.i18n("No items selected."),this.selectionLimit={tooltip:this.i18n("Deselect item to select again"),text:this.i18n("Selection limit reached")},this.filter=this.i18n("Filter tags"),this.add=this.i18n("Add badge"),this.noOptions=this.i18n("There are no items available."),a.merge(this,t)}}},DPsx:function(t,e,n){var a=n("g6v/"),r=n("0Dky"),i=n("zBJ4");t.exports=!a&&!r((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},DSvg:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("vkgz"),r=n("aexS"),i=n("8Y7J"),s=n("IheW"),u=n("iInd"),o=n("pL04");let l=(()=>{class t{constructor(t,e,n){this.authStorageService=t,this.http=e,this.router=n}check(t){return this.http.post("api/auth/check",{token:t})}login(t){return this.http.post("api/auth",t).pipe(Object(a.a)(t=>{this.authStorageService.set(t.username,t.permissions,t.sso,t.pwdExpirationDate,t.pwdUpdateRequired)}))}logout(t=null){return this.http.post("api/auth/logout",null).subscribe(e=>{this.authStorageService.remove(),this.router.navigate(["/login"],{skipLocationChange:!0}),t&&t(),window.location.replace(e.redirect_url)})}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](r.a),i["ɵɵinject"](s.c),i["ɵɵinject"](u.m))},token:t,providedIn:o.a}),t})()},DVFp:function(t,e,n){var a=n("2oRo").String;t.exports=function(t){try{return a(t)}catch(e){return"Object"}}},Dd78:function(t,e,n){var a=n("qG07"),r=n("aT2Y"),i=n("Gf4A");t.exports=function(){this.size=0,this.__data__={hash:new a,map:new(i||r),string:new a}}},Dkky:function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},Dmvi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},DoHr:function(t,e,n){!function(t){"use strict";var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};t.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'ıncı";var a=t%10;return t+(e[a]||e[t%100-a]||e[t>=100?100:null])}},week:{dow:1,doy:7}})}(n("wd/R"))},DqMs:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("IZUe"),s=n("MdoF"),u=n("CNMR");n("/NlG"),n("GiVz"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return v}));var o=a["ɵcrt"]({encapsulation:0,styles:[[".alert-panel-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:.5em}.alert-panel-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"td",[["class","alert-panel-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpad"](4,1)],(function(t,e){var n=e.component,r=a["ɵinlineInterpolate"](2,"alert-",n.bootstrapClass," ",n.typeIcon,""),i=t(e,4,0,n.icons.large3x);t(e,3,0,r,i)}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-title"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,2,"td",[["class","alert-panel-text"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](9,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.showIcon),t(e,5,0,n.showTitle),t(e,9,0,a["ɵnov"](e.parent,6))}),null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-icon"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"i",[["aria-hidden","true"]],[[8,"className",0]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](2,"alert-",n.bootstrapClass," ",n.typeIcon,""))}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-title"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](5,0,null,null,2,"td",[["class","alert-panel-text"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.showIcon),t(e,4,0,n.showTitle),t(e,7,0,a["ɵnov"](e.parent,6))}),null)}function m(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"button",[["autofocus",""],["class","btn btn-light tc_backButton"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.backAction.emit()&&a),a}),null,null)),a["ɵdid"](2,4210688,null,0,i.a,[a.ElementRef],{autofocus:[0,"autofocus"]},null),(t()(),a["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,2,0,"")}),null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"alert",[],null,[[null,"onClose"]],(function(t,e,n){var a=!0;return"onClose"===e&&(a=!1!==t.component.onClose()&&a),a}),s.c,s.b)),a["ɵdid"](1,114688,null,0,u.a,[u.b,a.ChangeDetectorRef],{type:[0,"type"],dismissible:[1,"dismissible"]},{onClose:"onClose"}),(t()(),a["ɵeld"](2,0,null,0,3,"table",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["slim",2]],null,0,null,b)),(t()(),a["ɵand"](0,[["content",2]],null,0,null,m)),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](8,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](1,"",n.bootstrapClass,""),n.dismissible),t(e,4,0,"normal"===n.size,a["ɵnov"](e,5)),t(e,8,0,n.backAction.observers.length>0)}),null)}},Dwqy:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("wd/R");class r{constructor(){}transform(t){return t?a(1e3*t).fromNow():"unknown"}}},DxQv:function(t,e,n){!function(t){"use strict";t.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},Dzi0:function(t,e,n){!function(t){"use strict";t.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},"E+lV":function(t,e,n){!function(t){"use strict";var e={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},E2fk:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return"[INF]"===t?"info":"[WRN]"===t?"warn":"[ERR]"===t?"err":""}}},E9XD:function(t,e,n){"use strict";var a=n("I+eb"),r=n("1Y/n").left,i=n("pkCn"),s=n("LQDL"),u=n("YF1G");a({target:"Array",proto:!0,forced:!i("reduce")||!u&&s>79&&s<83},{reduce:function(t){var e=arguments.length;return r(this,t,e,e>1?arguments[1]:void 0)}})},EApP:function(t,e,n){"use strict";n.d(e,"a",(function(){return _})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return v})),n.d(e,"d",(function(){return u})),n.d(e,"e",(function(){return S})),n.d(e,"f",(function(){return N})),n.d(e,"g",(function(){return o})),n.d(e,"h",(function(){return w})),n.d(e,"i",(function(){return T})),n.d(e,"j",(function(){return y}));var a=n("8Y7J"),r=n("XNiG"),i=n("cUpR"),s=n("SVse");let u=class{};class o{constructor(t,e,n,a,i,s){this.toastId=t,this.config=e,this.message=n,this.title=a,this.toastType=i,this.toastRef=s,this._onTap=new r.a,this._onAction=new r.a,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(t){this._onAction.next(t)}onAction(){return this._onAction.asObservable()}}const l={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing"},d=new a.InjectionToken("ToastConfig");class c{constructor(t,e){this.component=t,this.injector=e}attach(t,e){return this._attachedHost=t,t.attach(this,e)}detach(){const t=this._attachedHost;if(t)return this._attachedHost=void 0,t.detach()}get isAttached(){return null!=this._attachedHost}setAttachedHost(t){this._attachedHost=t}}class f extends class{attach(t,e){return this._attachedPortal=t,this.attachComponentPortal(t,e)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(t){this._disposeFn=t}}{constructor(t,e,n){super(),this._hostDomElement=t,this._componentFactoryResolver=e,this._appRef=n}attachComponentPortal(t,e){const n=this._componentFactoryResolver.resolveComponentFactory(t.component);let a;return a=n.create(t.injector),this._appRef.attachView(a.hostView),this.setDisposeFn(()=>{this._appRef.detachView(a.hostView),a.destroy()}),e?this._hostDomElement.insertBefore(this._getComponentRootNode(a),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(a)),a}_getComponentRootNode(t){return t.hostView.rootNodes[0]}}let h=(()=>{let t=class{constructor(t){this._document=t}ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const t=this._document.createElement("div");t.classList.add("overlay-container"),this._document.body.appendChild(t),this._containerElement=t}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(s.DOCUMENT))},token:t,providedIn:"root"}),t})();class g{constructor(t){this._portalHost=t}attach(t,e=!0){return this._portalHost.attach(t,e)}detach(){return this._portalHost.detach()}}let p=(()=>{let t=class{constructor(t,e,n,a){this._overlayContainer=t,this._componentFactoryResolver=e,this._appRef=n,this._document=a,this._paneElements=new Map}create(t,e){return this._createOverlayRef(this.getPaneElement(t,e))}getPaneElement(t="",e){return this._paneElements.get(e)||this._paneElements.set(e,{}),this._paneElements.get(e)[t]||(this._paneElements.get(e)[t]=this._createPaneElement(t,e)),this._paneElements.get(e)[t]}_createPaneElement(t,e){const n=this._document.createElement("div");return n.id="toast-container",n.classList.add(t),n.classList.add("toast-container"),e?e.getContainerElement().appendChild(n):this._overlayContainer.getContainerElement().appendChild(n),n}_createPortalHost(t){return new f(t,this._componentFactoryResolver,this._appRef)}_createOverlayRef(t){return new g(this._createPortalHost(t))}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(h),Object(a["ɵɵinject"])(a.ComponentFactoryResolver),Object(a["ɵɵinject"])(a.ApplicationRef),Object(a["ɵɵinject"])(s.DOCUMENT))},token:t,providedIn:"root"}),t})();class b{constructor(t){this._overlayRef=t,this.duplicatesCount=0,this._afterClosed=new r.a,this._activate=new r.a,this._manualClose=new r.a,this._resetTimeout=new r.a,this._countDuplicate=new r.a}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(t,e){t&&this._resetTimeout.next(),e&&this._countDuplicate.next(++this.duplicatesCount)}}class m{constructor(t,e){this._toastPackage=t,this._parentInjector=e}get(t,e,n){return t===o?this._toastPackage:this._parentInjector.get(t,e,n)}}let y=(()=>{let t=class{constructor(t,e,n,a,r){this.overlay=e,this._injector=n,this.sanitizer=a,this.ngZone=r,this.currentlyActive=0,this.toasts=[],this.index=0,this.toastrConfig=Object.assign({},t.default,t.config),t.config.iconClasses&&(this.toastrConfig.iconClasses=Object.assign({},t.default.iconClasses,t.config.iconClasses))}show(t,e,n={},a=""){return this._preBuildNotification(a,t,e,this.applyConfig(n))}success(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.success||"",t,e,this.applyConfig(n))}error(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.error||"",t,e,this.applyConfig(n))}info(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.info||"",t,e,this.applyConfig(n))}warning(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.warning||"",t,e,this.applyConfig(n))}clear(t){for(const e of this.toasts)if(void 0!==t){if(e.toastId===t)return void e.toastRef.manualClose()}else e.toastRef.manualClose()}remove(t){const e=this._findToast(t);if(!e)return!1;if(e.activeToast.toastRef.close(),this.toasts.splice(e.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length)return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){const t=this.toasts[this.currentlyActive].toastRef;t.isInactive()||(this.currentlyActive=this.currentlyActive+1,t.activate())}return!0}findDuplicate(t,e,n){for(const a of this.toasts)if(a.message===t)return a.toastRef.onDuplicate(e,n),a;return null}applyConfig(t={}){return Object.assign({},this.toastrConfig,t)}_findToast(t){for(let e=0;e<this.toasts.length;e++)if(this.toasts[e].toastId===t)return{index:e,activeToast:this.toasts[e]};return null}_preBuildNotification(t,e,n,a){return a.onActivateTick?this.ngZone.run(()=>this._buildNotification(t,e,n,a)):this._buildNotification(t,e,n,a)}_buildNotification(t,e,n,r){if(!r.toastComponent)throw new Error("toastComponent required");const i=this.findDuplicate(e,this.toastrConfig.resetTimeoutOnDuplicate&&r.timeOut>0,this.toastrConfig.countDuplicates);if(e&&this.toastrConfig.preventDuplicates&&null!==i)return i;this.previousToastMessage=e;let s=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(s=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));const u=this.overlay.create(r.positionClass,this.overlayContainer);this.index=this.index+1;let l=e;e&&r.enableHtml&&(l=this.sanitizer.sanitize(a.SecurityContext.HTML,e));const d=new b(u),f=new o(this.index,r,l,n,t,d),h=new m(f,this._injector),g=new c(r.toastComponent,h),p=u.attach(g,this.toastrConfig.newestOnTop);d.componentInstance=p._component;const y={toastId:this.index,message:e||"",toastRef:d,onShown:d.afterActivate(),onHidden:d.afterClosed(),onTap:f.onTap(),onAction:f.onAction(),portal:p};return s||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{y.toastRef.activate()})),this.toasts.push(y),y}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(d),Object(a["ɵɵinject"])(p),Object(a["ɵɵinject"])(a.INJECTOR),Object(a["ɵɵinject"])(i.b),Object(a["ɵɵinject"])(a.NgZone))},token:t,providedIn:"root"}),t})(),v=class{constructor(t,e,n){this.toastrService=t,this.toastPackage=e,this.ngZone=n,this.width=-1,this.toastClasses="",this.state={value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}},this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(t=>{this.duplicatesCount=t})}get displayStyle(){if("inactive"===this.state.value)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state=Object.assign({},this.state,{value:"active"}),!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const t=(new Date).getTime();this.width=(this.hideTime-t)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state=Object.assign({},this.state,{value:"active"}),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.state=Object.assign({},this.state,{value:"removed"}),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){"removed"!==this.state.value&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0!==this.options.disableTimeOut&&"extendedTimeOut"!==this.options.disableTimeOut&&0!==this.options.extendedTimeOut&&"removed"!==this.state.value&&(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(t,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(t),e)):this.timeout=setTimeout(()=>t(),e)}outsideInterval(t,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(t),e)):this.intervalId=setInterval(()=>t(),e)}runInsideAngular(t){this.ngZone?this.ngZone.run(()=>t()):t()}};var x;const _=Object.assign({},l,{toastComponent:v});let T=x=class{static forRoot(t={}){return{ngModule:x,providers:[{provide:d,useValue:{default:_,config:t}}]}}},w=class{static forRoot(t={}){return{ngModule:T,providers:[{provide:d,useValue:{default:l,config:t}}]}}};var O;let S=class{constructor(t,e,n){this.toastrService=t,this.toastPackage=e,this.appRef=n,this.width=-1,this.toastClasses="",this.state="inactive",this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(t=>{this.duplicatesCount=t})}get displayStyle(){if("inactive"===this.state)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state="active",!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const t=(new Date).getTime();this.width=(this.hideTime-t)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state="active",this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=(new Date).getTime()+(this.originalTimeout||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){"removed"!==this.state&&(clearTimeout(this.timeout),this.state="removed",this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){"removed"!==this.state&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0!==this.options.disableTimeOut&&"extendedTimeOut"!==this.options.disableTimeOut&&0!==this.options.extendedTimeOut&&"removed"!==this.state&&(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}};const I=Object.assign({},l,{toastComponent:S});let N=O=class{static forRoot(t={}){return{ngModule:O,providers:[{provide:d,useValue:{default:I,config:t}}]}}}},EEJc:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("ajRT");n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return s})),n.d(e,"a",(function(){return o}));var i=a["ɵcrt"]({encapsulation:0,styles:[[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #d1d1d1;background-color:#f5f5f5;border-radius:5px 5px 0 0}  .modal-footer{border-bottom:1px solid #d1d1d1;background-color:#f5f5f5;border-radius:0 0 5px 5px}  .modal-body{max-height:70vh;overflow-y:auto;overflow-x:hidden}"]],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"h4",[["class","modal-title float-left"]],null,null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵeld"](3,0,null,null,2,"button",[["aria-label","Close"],["class","close float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.close()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["×"])),a["ɵncd"](null,1)],null,null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-modal",[],null,null,null,s,i)),a["ɵdid"](1,49152,null,0,r.a,[],null,null)],null,null)}var o=a["ɵccf"]("cd-modal",r.a,u,{modalRef:"modalRef"},{hide:"hide"},[".modal-title",".modal-content"])},EHx7:function(t,e,n){var a=n("0Dky"),r=n("2oRo").RegExp;t.exports=a((function(){var t=r("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")}))},ENF9:function(t,e,n){"use strict";var a,r=n("2oRo"),i=n("4zBA"),s=n("4syw"),u=n("8YOa"),o=n("bWFh"),l=n("rKzb"),d=n("hh1v"),c=n("T63f"),f=n("afO8").enforce,h=n("f5p1"),g=!r.ActiveXObject&&"ActiveXObject"in r,p=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},b=o("WeakMap",p,l);if(h&&g){a=l.getConstructor(p,"WeakMap",!0),u.enable();var m=b.prototype,y=i(m.delete),v=i(m.has),x=i(m.get),_=i(m.set);s(m,{delete:function(t){if(d(t)&&!c(t)){var e=f(this);return e.frozen||(e.frozen=new a),y(this,t)||e.frozen.delete(t)}return y(this,t)},has:function(t){if(d(t)&&!c(t)){var e=f(this);return e.frozen||(e.frozen=new a),v(this,t)||e.frozen.has(t)}return v(this,t)},get:function(t){if(d(t)&&!c(t)){var e=f(this);return e.frozen||(e.frozen=new a),v(this,t)?x(this,t):e.frozen.get(t)}return x(this,t)},set:function(t,e){if(d(t)&&!c(t)){var n=f(this);n.frozen||(n.frozen=new a),v(this,t)?_(this,t,e):n.frozen.set(t,e)}else _(this,t,e);return this}})}},EOgW:function(t,e,n){!function(t){"use strict";t.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(t){return"หลังเที่ยง"===t},meridiem:function(t,e,n){return t<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("wd/R"))},ES0t:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("KOzp"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:[".bs3.popover-top[_nghost-%COMP%] {\n      margin-bottom: 10px;\n    }\n    .bs3.popover.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -2px;\n    }\n    .bs3.popover.top[_nghost-%COMP%] {\n      margin-bottom: 10px;\n    }\n    .popover.bottom[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -4px;\n    }\n    .bs3.bs-popover-left[_nghost-%COMP%] {\n      margin-right: .5rem;\n    }\n    .bs3.bs-popover-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs3.bs-popover-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%]{\n      margin: .3rem 0;\n    }"],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"h3",[["class","popover-title popover-header"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function o(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","popover-arrow arrow"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"div",[["class","popover-content popover-body"]],null,null,null,null,null)),a["ɵncd"](null,0)],(function(t,e){t(e,2,0,e.component.title)}),null)}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"popover-container",[["role","tooltip"],["style","display:block;"]],[[8,"className",0],[2,"show",null],[2,"bs3",null]],null,null,o,s)),a["ɵdid"](1,49152,null,0,r.b,[r.a],null,null)],null,(function(t,e){t(e,0,0,"popover in popover-"+a["ɵnov"](e,1).placement+" bs-popover-"+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).containerClass,!a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).isBs3)}))}var d=a["ɵccf"]("popover-container",r.b,l,{placement:"placement",title:"title"},{},["*"])},EWmY:function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},EY2u:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("HDdC");const r=new a.a(t=>t.complete());function i(t){return t?function(t){return new a.a(e=>t.schedule(()=>e.complete()))}(t):r}},Eey9:function(t,e){t.exports=function(t,e,n){var a=-1,r=t.length;e<0&&(e=-e>r?0:r+e),(n=n>r?r:n)<0&&(n+=r),r=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(r);++a<r;)i[a]=t[a+e];return i}},EgGo:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("SVse"),r=n("sne2");class i{constructor(t){this.base=t}static concatURLSegments(t){return t.reduce(a.Location.joinWithSlash)}static buildURL(t,...e){return i.concatURLSegments([...t?["/"]:[],...e])}getURL(t,e=!0,...n){return i.buildURL(e,this.base,t,...n)}getCreate(t=!0){return this.getURL(r.e.CREATE,t)}getCreateFrom(t,e=!0){return this.getURL(r.e.CREATE,e,t)}getDelete(t=!0){return this.getURL(r.e.DELETE,t)}getEdit(t,e=!0){return this.getURL(r.e.EDIT,e,t)}getUpdate(t,e=!0){return this.getURL(r.e.UPDATE,e,t)}getAdd(t=!0){return this.getURL(r.e.ADD,t)}getRemove(t=!0){return this.getURL(r.e.REMOVE,t)}getRecreate(t,e=!0){return this.getURL(r.e.RECREATE,e,t)}}},EiPl:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="de-DE">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Navigation umschalten</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dashboard</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Verzeichnis</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitore</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfiguration</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH-Zuordnung</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager-Module</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Protokolle</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Überwachung</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pools</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Block</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Images</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Spiegelung</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Dateisysteme</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektgateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Buckets</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Daten \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> für\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>werden abgerufen. Bitte warten...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Zuvor zwischengespeicherte Daten\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  für \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> werden angezeigt.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Daten\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> für\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> konnten nicht geladen werden.\n  Prüfen Sie die Clusterintegrität.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Benachrichtigungen löschen</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Benachrichtigungen entfernen</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Dauer:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>Es sind keine Benachrichtigungen verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Aufträge und Benachrichtigungen</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sprache auswählen</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Bereichsdaten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Lesen Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Überwachungsfunktion.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Das Grafana-Dashboard ist nicht vorhanden. In der\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> wird beschrieben,\n  wie Grafana Dashboards hinzugefügt werden.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana-Zeitauswahl</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Einstellungen für Zurücksetzungen</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Entfernen Sie den aktuellen Konfigurationswert. Stattdessen wird der Standard-Konfigurationswert übernommen und verwendet.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zurück</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Das Passwort läuft in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>weniger als 1 \n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>Tag ab. Klicken Sie \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> hier \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, um es jetzt zu ändern.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Das Passwort läuft in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>Tag(en) ab. Klicken Sie \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> hier \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, um es jetzt zu ändern.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Das Modul "Orchestrator" ist nicht verfügbar. Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>zum Konfigurieren und Aktivieren dieses Moduls.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Daten konnten nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Filter löschen</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>ausgewählt</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>gefunden</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>insgesamt</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Name</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Beschreibung</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Detaillierte Beschreibung</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Standard</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon-Standard</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Werte</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Standard --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>wahr</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>falsch</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Speichern</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH-Betrachter</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Laden...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Hostname</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Dies ist ein Pflichtfeld.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>Der ausgewählte Hostname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Sind Sie sicher dass Sie die ausgewählten Einträge \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> möchten?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Sind Sie sicher dass Sie die ausgewählten \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> möchten?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ja, ich bin sicher.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Abbrechen</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Schließen</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste mit Hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Gesamtleistung</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Laufwerke</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Keine Einträge gefunden</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Clusterprotokolle</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Revisionsprotokoll</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priorität:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Schlüsselwort:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Datum:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datumsauswahl</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Zeitraum:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Konfiguration wird geladen...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Die Konfiguration konnte nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Manager-Modul bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Der eingegebene Wert ist kein gültiger UUID, z. B.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Der eingegebene Wert muss eine gültige IP-Adresse sein.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er muss kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/> sein oder diesem Wert entsprechen.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er muss größer als \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/> sein oder diesem Wert entsprechen.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Der eingegebene Wert muss eine Zahl sein.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Der eingegebene Wert muss eine Zahl oder Dezimalzahl sein.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aktualisiere</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Cluster-ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Monmap geändert</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>Monmap-Epoche</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>erforderliche Verbindung</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>erforderliche Überwachung</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>In Quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nicht in Quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>Vorschau der OSD-Erstellung</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> Laufwerke\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Löschen</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Geteilte Laufwerke</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL Slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>Wie viele OSDs pro WAL-Laufwerk.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Geben Sie 0 an, um das Orchestrator-Backend entscheiden zu lassen.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Der Wert sollte größer als oder gleich 0 sein</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB Slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>Wie viele OSDs pro DB-Laufwerk.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funktionen</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Vorschau</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Clusterweite OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Absenden</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Erweitert...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Erweiterte Konfigurationsoptionen</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD-Wiederherstellungspriorität</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorität</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Prioritätswerte anpassen</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Dies ist ein Pflichtfeld!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Der Wert muss zwischen 0 und 1 liegen.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Neu gewichten</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Tief } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {tief } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD-Liste</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Aktive Warnungen</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>Alle Warnungen</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Wählen Sie das zu vergleichende Attribut --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Wert</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Regulären Ausdruck verwenden</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Löschen</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Das Bearbeiten einer Stummschaltung löscht die Vorherige und legt eine neue Stummschaltung an.</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Ersteller</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Kommentar</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Startzeit</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>Wenn die Startzeit in der Vergangenheit liegt, wird die Erstellungszeit verwendet</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Dauer</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>Ende</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Integrität</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiken</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für NFS Ganesha.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clients</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Jeder Client hat Zugriff</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adressen</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Pflichtfeld</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Muss mindestens einen kommagetrennten Wert enthalten</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Beispielsweise:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Zugriffstyp</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Clients hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Kein Cluster verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Cluster auswählen --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Daemon hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Speicher-Back-End</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Keine Datenpools verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Speicher-Back-End auswählen --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Objektgatewaybenutzer</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Keine Benutzer verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Objektgatewaybenutzer auswählen --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS-Benutzer-ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- keine Clients verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx-Client auswählen --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS-Name</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- Kein CephFS Dateisystem verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- CephFS Dateisystem auswählen --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Sicherheitsbezeichnung</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Sicherheitsbezeichnung aktivieren</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS-Pfad</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Pfad muss mit einem \'/\' beginnen und kann von einem Wort gefolgt werden</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Neues Verzeichnis wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Pfad</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Pfad darf nur ein einzelner \'/\' oder ein Wort sein</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Neuer Bucket wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS-Protokoll</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS-Tag</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternativer Zugriff für \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>-Mountpunkte (dürfen keinen führenden / enthalten)\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Clients können Unterverzeichnisse möglicherweise nicht mounten (d. h. wenn der Pfad = foo ist, kann der Client foo/baz möglicherweise nicht mounten).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Wenn unterschiedliche Tag-Optionen verwendet werden, wird derselbe Pfad möglicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>Die Position dieses \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>-Exports\n                auf dem \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo-Dateisystem\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (muss eindeutig sein).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Wenn unterschiedliche Pseudo-Optionen verwendet werden, wird derselbe Pfad möglicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Kein Zugriffstyp verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Zugriffstyp auswählen --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>Das NFS-Backend für das Objektgateway besitzt eine Reihe von\n Einschränkungen, die Schreibvorgänge von Anwendungen auf diese\n Freigaben ernsthaft beeinträchtigen. Bitte konsultieren Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> Dokumentation \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> für weitere Informationen, bevor Sie den Schreibzugriff aktivieren.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Kein Squash verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Durchzuführende Benutzer-ID-Squashing-Art auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportprotokoll</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Altes Passwort</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>Das alte und neue Passwort müssen unterschiedlich sein.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>Neues Passwort</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Neues Passwort bestätigen</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Passwortbestätigung stimmt nicht mit dem neuen Passwort überein.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Bitte legen Sie ein neues Passwort fest.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>Sie werden anschließend auf die Login-Seite weitergeleitet.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Willkommen bei Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Benutzername ist erforderlich</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Passwort ist erforderlich</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Anmeldung</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Der Benutzer ist in Ceph leider nicht enthalten.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Kehren Sie zur \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Anmeldeseite\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zurück. Sie werden vom Identitätsanbieter abgemeldet, wenn Sie versuchen, sich erneut anzumelden.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Verboten</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Leider sind Sie nicht berechtigt, den gewünschten Inhalt anzuzeigen.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Leider konnte der gewünschte Inhalt nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Weder Hostname noch OSD ID angegeben</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>bestanden</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>fehlgeschlagen</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Laufwerksinformationen</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>Keine SMART-Daten für dieses Laufwerk verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART-Daten werden geladen.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD-Konfiguration</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Entfernen Sie den lokalen Konfigurationswert. Stattdessen wird der übergeordnete Konfigurationswert übernommen und verwendet.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Der Mindestwert lautet 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Pool-Liste</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Der Name darf nur alphanumerische Zeichen, Bindestriche und Unterstriche enthalten.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Der ausgewählte Erasure-Coding-Profilname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Laufwerksklasse</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Datenblöcke (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Muss größer oder gleich 2 sein.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Datenblöcke für die Codierung (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Muss größer oder gleich 1 sein.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Dauerhaftigkeitsschätzung (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Standort (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush-Ausfalldomäne</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush-Standort</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Keine</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technik</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Paketgröße</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush-Stamm</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crush-Geräteklasse</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>beliebig</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Verzeichnis</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Name...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Der ausgewählte Poolname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Pooltyp</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Pooltyp auswählen --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoskalierung</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Platzierungsgruppen</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Es wird mindestens eine Platzierungsgruppe benötigt.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Ihr Cluster kann nicht so viele Platzierungsgruppen verarbeiten. Berechnen Sie die benötigte Anzahl an Platzierungsgruppen.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Hilfe zur Berechnung</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>Die aktuellen Einstellungen für die Platzierungsgruppen wurden für Sie berechnet.\n                    Stellen Sie vor dem Senden sicher, dass die Werte Ihren Anforderungen entsprechen.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Reproduzierte Größe</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>Die angegebene Größe liegt außerhalb des Bereichs. Gültige Werte liegen zwischen\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> und \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flags</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC-Überschreibungen</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Anwendungen</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Kein Erasure-Coding-Profil verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Erasure-Coding-Profil auswählen --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crush-Regelsatz</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>Ein neuer CRUSH Regelsatz wird implizit erstellt.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>Keine Regeln vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crush-Regel auswählen --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush-Regel</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush-Schritte</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Komprimierung</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modus</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorithmus</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Kein Komprimierungsalgorithmus für Erasure-Coding verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimale Blobgröße</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>z. B. 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Wert sollte größer als 0 sein</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Wert sollte niedriger als die maximale Blobgröße sein</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maximale Blobgröße</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>z. B. 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Wert sollte größer als die minimale Blobgröße sein</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Verhältnis</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Komprimierungsverhältnis</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Wert sollte zwischen 0,0 und 1,0 liegen</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Kontingente</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max. Bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Lassen Sie das Feld leer oder geben Sie 0 an, um dieses Quota zu deaktivieren.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>Ein gültiges Kontingent sollte größer als 0 sein.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>z. B. 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max. Objekte</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>Der Wert sollte größer als oder gleich 0 sein</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Details</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Leistungsdetails</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Details zu den Cache-Ebenen</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Bootstrap-Token erstellen</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site-Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>Mindestens ein Pool ist erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Erzeugen</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Erzeugtes Token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Bootstrap-Token importieren</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Richtung</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>Der Token ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Site-Namen bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site-Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Image in Papierkorb verschieben</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Schutz läuft ab am</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NICHT GESCHÜTZT</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Falsches Datumsformat. Verwenden Sie "TT.MM.JJJJ HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Schutz ist bereits abgelaufen. Wählen Sie ein künftiges Datum aus oder lassen Sie es leer.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Image verschieben</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Muss grösser oder gleich \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Muss kleiner oder gleich \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Übersicht</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Ziele</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ermittlungsauthentifizierung</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Benutzernamen müssen zwischen 8 und 64 Zeichen lang sein und\n              dürfen nur Buchstaben, \'.\', \'@\', \'-\', \'_\' oder \':\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Passwort</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Gemeinsamer Benutzer</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Gemeinsames Passwort</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Lesen Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für iSCSI-Ziele.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Verfügbare Informationen:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI-Ziele nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Ermittlungsauthentifizierung</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Nur für RBD-Images verfügbar, bei denen \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> aktiviert ist\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datenpool</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Erstellt</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Größe</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objekte</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Objektgröße</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Bereitgestellt</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>n. v.</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Bereitgestellt gesamt</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Striping-Einheit</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Striping-Anzahl</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Übergeordnet</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Präfix für Blockname</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Reihenfolge</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshots</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Diese Einstellung überschreibt den globalen Wert</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Dies ist der globale Wert. Kein Wert für diese Option wurde für dieses Image festgelegt.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' und \'@\' sind nicht zulässig.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Keine rbd-Pools verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pool auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- Keine Namensräume verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Namensraum auswählen --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Dedizierten Datenpool verwenden</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datenpool</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Dedizierter Pool zur Speicherung von RBD-Objektdaten.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Sie müssen die Größe erhöhen.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Erweitert</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Striping</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Stripe-Einheit</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Stripe-Einheit auswählen --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Dies ist ein Pflichtfeld, da eine Stripe-Anzahl definiert wurde!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Die Stripe-Einheit ist größer als die Objektgröße.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Stripe-Anzahl</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Dies ist ein Pflichtfeld, da eine Stripe-Einheit definiert wurde!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Die Stripe-Anzahl muss größer als 0 sein.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Namensraum anlegen</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namensraum existiert bereits.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Sie sind dabei, ein Rollback durchzuführen</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Papierkorb bereinigen</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Alle</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Poolname...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Image wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Zum Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>Neuen Namen des Images eingeben und klicken</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Neuer Name</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Abgelaufen am</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Geschützt bis</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>Dieses Image ist geschützt bis \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI-Topologie</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Konfigurieren</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Eine Änderung dieser Parameter von ihren Standardwerten ist in der Regel nicht erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Bezeichner</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Bestätigen</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Erweiterte Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Ziel-IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN hat ein fehlerhaftes Muster.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Eine IQN hat die folgende Notation \n\'iqn.$jahr-$monat.$umkehradresse:$definierterName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Zum Beispiel: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Weitere Informationen</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Erweiterte Einstellungen bei diesem Ziel wurden geändert.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portale</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Portal hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Es sind mindestens \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> Gateways erforderlich.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Einstellungen bei diesem Image wurden geändert.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Image hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL-Authentifizierung</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Initiatoren</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Initiator</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Client-IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Initiator-IQN muss eindeutig sein.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Benutzernamen müssen zwischen 8 und 64 Zeichen lang sein und\n                        dürfen nur Buchstaben, \'.\', \'@\', \'-\', \'_\' oder \':\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Der Initiator gehört zu einer Gruppe. Images werden in der Gruppe konfiguriert.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Keine Elemente hinzugefügt.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Initiator hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Gruppen</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Gruppe</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Gruppe hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namensräume</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Papierkorb</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Probleme</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Wird synchronisiert</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Fertig</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Spiegelungsmodus für Pool bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Wählen Sie zum Bearbeiten des Spiegelungsmodus für den Pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> einen neuen Modus aus der Liste aus und klicken Sie auf \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aktualisieren\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Vor dem Deaktivieren der Spiegelung müssen Peer-Cluster entfernt werden.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  Peer für Poolspiegelung\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Bearbeiten} other {Hinzufügen} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Clustername</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Der Clustername ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX-ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX-ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>Die CephX ID ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adressen der Monitore</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Kommagetrennte Adressen...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Die Anrede ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-codierter Schlüssel...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX-Schlüssel muss base64-codiert sein.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Leistungsindikatoren nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für das Objektgateway.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Liste der Daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Leistungsindikatoren</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Bucket-Daten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Der Wert ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Der ausgewählte Name wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Inhaber</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Benutzer auswählen --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Aktiviert</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Indextyp</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Platzierungsregel</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marker</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Maximum für Marker</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Masterversion</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Änderungszeit</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Zonengruppe</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Bucket-Quote</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maximale Größe</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Unbegrenzt</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Maximale Objekte</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Benutzername</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Benutzername auswählen --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Schlüssel automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Zugriffsschlüssel</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Geheimer Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Vollständiger Name</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-Mail-Adresse</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Angehalten</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Maximale Buckets</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Befähigungen</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Benutzerquote</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Anzeigen</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Typ auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Berechtigung</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Berechtigung auswählen --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Die ausgewählte Unterbenutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lesen, schreiben</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>voll</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Geheimnis automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Benutzerdaten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Die Benutzerdaten konnten nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Die ausgewählte Benutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Dies ist keine gültige E-Mail-Adresse.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Die ausgewählte E-Mail-Adresse wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Max. Buckets</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Benutzerdefiniert</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Keine Unterbenutzer vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Keine Schlüssel vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Keine Befähigungen vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Unbegrenzte Größe</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. Größe</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Unbegrenzte Objekte</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Max. Objekte</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Der eingegebene Wert muss &gt;=0 sein.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Beschreibung...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Berechtigungen</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Rollen</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Passwort bestätigen</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Passwortbestätigung stimmt nicht mit dem Passwort überein.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Ablaufdatum des Passworts</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Ablaufdatum des Passworts...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-Mail-Adresse</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Ungültige E-Mail-Adresse.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>Benutzer muss das Passwort bei der nächsten Anmeldung ändern</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Sie sind dabei, die Lese-/Aktualisierungsberechtigungen für Benutzer von Ihrem eigenen Benutzer zu entfernen.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Wenn Sie den Vorgang fortsetzen, können Sie Benutzerrollen nicht mehr hinzufügen oder entfernen.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Möchten Sie den Vorgang wirklich fortsetzen?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Hilfe</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentation</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Über</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Dashboard-Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Benutzerverwaltung</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Angemeldeter Benutzer</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Angemeldet als\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Passwort ändern</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Abmelden</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attribute (OSD-Zuordnung)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadaten nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadaten</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Laufwerkszustand</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Leistungsindikator</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogramm nicht verfügbar: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Schreiben</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lesen</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogramm</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>Hostname nicht gefunden.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Aktuelle Werte</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Quelle</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Ebene</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Kann zur Laufzeit aktualisiert werden (bearbeitbar)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tags</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Auflistungswerte</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Siehe auch</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Clusterstatus</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manager-Daemons</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektgateways</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Metadatenserver</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI-Gateways</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>Client-IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Clientdurchsatz</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Client-Lese-/Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Wiederherstellungsdurchsatz</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Scrub</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Leistung</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Rohkapazität</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Platzierungsgruppen pro OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Platzierungsgruppenstatus</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapazität</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> Weitere Details finden Sie in den \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Protokollen\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Ränge</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS Leistungsindikatoren</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Verzeichnisse</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Aktuell</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target> Ermittlungsauthentifizierung aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Keine Portale verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Keine Images verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Keine Images verfügbar. Fügen Sie dem Ziel ein Image hinzu.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Keine Initiatoren verfügen. Fügen Sie dem Ziel einen Initiator hinzu.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Ziel</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Zustand</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes für Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes für Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O seit</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instanz</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problem</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Fortschritt</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Bearbeitungsmodus</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Peer hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Peer bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Peer löschen</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># lokal</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># remote</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>Peer spiegeln</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Umfassende Vereinfachung</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Schichtung</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Exklusive Sperre</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Objektzuordnung (erfordert exklusive Sperre)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journaling (erfordert exklusive Sperre)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namensraum</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Images insgesamt</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namensraum enthält Images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NICHT GESCHÜTZT</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback für RBD-Snapshot</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD-Snapshot</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Gelöscht am</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>Zustand</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>Stamm</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Standby-Daemons</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Rang</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivität</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Nutzung</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Der Wert kann zur Laufzeit aktualisiert werden.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemons/Clients rufen diesen Wert nicht aus der\n      Datenbank \'monitor config\' ab. Es ist nicht zulässig, diese Option über \'ceph config\n      set ...\' festzulegen. Diese Option sollte über \'ceph.conf\' oder an der\n      Befehlszeile konfiguriert werden.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Die Option wird nur während des Daemon-Starts wirksam.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Die Option wirkt sich nur auf die Cluster-Erstellung aus.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Die Option wirkt sich nur auf die Daemon-Erstellung aus.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Aktualisierte Konfigurationsoption \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Service</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Aktueller Wert</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Bearbeitbar</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Laufwerkspfad</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identifiziere Laufwerk \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifikation von \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' auf Host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\' gestartet\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Aktivieren</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Deaktivieren</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Verbindung wird erneut hergestellt, bitte warten...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Öffentliche Adresse</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Offene Sitzungen</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Kein In-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSDs, die zuvor als \'out\' markiert wurden, werden beim Start nicht wieder markiert</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Kein Out-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSDs werden nach dem konfigurierten Intervall nicht automatisch als \'out\' markiert</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Kein Up-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSDs dürfen nicht gestartet werden</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Kein Down-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>OSD-Fehlerberichte werden ignoriert, sodass die Monitore die OSDs nicht als ausgefallen markieren</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pause</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Hält Lese- und Schreibvorgänge an</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Kein Scrub</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Scrubbing ist deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Kein umfassender Scrub</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Umfassendes Scrubbing ist deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Kein Abgleich</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Abgleich der Platzierungsgruppen ist ausgesetzt</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Keine Wiederherstellung</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Wiederherstellung der Platzierungsgruppen ist ausgesetzt</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitweise Sortierung</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Bitweise Sortierung verwenden</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Bereinigte Snapdirs</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDs besitzen konvertierte Snapsets</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Löschvorgänge bei Wiederherstellungen</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Bei der Wiederherstellung anstelle des Peerings durchgeführte Löschvorgänge</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Hardlimit für Platzierungsgruppen-Protokoll</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Legt ein Hardlimit für die Platzierungsgruppen-Protokolllänge fest</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualisierte OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>aus</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>ein</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ausgefallen</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Markieren</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD verloren</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>markierter Verlust</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Bereinigen</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>bereinigt</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>vernichten</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>vernichtet</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>löschen</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Wiederherstellungspriorität</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG Scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Platzierungsgruppen</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes für Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes für Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/> markieren\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/> markieren\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG Scrub-Optionen</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Aktualisierte PG Scrub-Optionen</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max. Abgleiche</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Wiederherstellung, max. aktiv</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Wiederherstellung, max. - einzelner Start</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Wiederherstellung - Inaktivität</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Auftrag</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Schweregrad</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Gestartet</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attributname</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regulärer Ausdruck</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Bitte fügen Sie Ihren Prometheus-Host zur Dashboard-Konfiguration hinzu und aktualisieren die Seite</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Erstellt von</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Endet</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Verwendet</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Verf.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Bereinigen</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>In Bearbeitung</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Warnung</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Unbekannt</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktiv</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>keine Dateisysteme</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktiv</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>Standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n. v.</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktiver Daemon</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>Quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Der NFS Ganesha-Dienst ist nicht konfiguriert.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS-Benutzer</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS-Dateisystem</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(aus globaler Konfiguration übernommen)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>aus globaler Konfiguration übernommen</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Durchzuführende Benutzer-ID-Squashing-Art auswählen --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Keine Daemons verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS-Export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC-Profil</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Cache-Modus</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min. Alter für Vertreibung</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min. Alter für Leerung</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max. Bytes für Ziel</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max. Objekte für Ziel</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Keine Anwendungen hinzugefügt</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Anwendungslimit erreicht</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Ein Pool kann nur bis zu vier Anwendungsdefinitionen aufweisen.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Zulässige Zeichen \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Maximale Länge beträgt 128 Zeichen</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Anwendungen filtern oder hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Anwendung hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Größe des Replikats</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Letzte Änderung</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crush-Regelsatz</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Das Löschen des Pools ist durch die Konfigurationsoption mon_allow_pool_delete deaktiviert.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>Bucket</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Buckets</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Laufwerks-ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Laufwerksname</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Bereich</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lesen</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Erstelle</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>Rolle</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' erstellt\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' aktualisiert\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Systemrolle</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' gelöscht\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Benutzer aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Fortfahren</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Sie wurden automatisch abgemeldet, da Ihre Rollen geändert wurden.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>Passwort</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Benutzerpasswort aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Jedes Objekt wird in Datenblöcke aufgeteilt und jeweils auf einem anderen OSD gespeichert.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Berechnen Sie Codierungsdatenblöcke für jedes Objekt und speichern Sie sie auf unterschiedlichen OSDs.\n      Die Anzahl der Codierungsdatenblöcke entspricht auch der Anzahl der OSDs, die ausfallen können, ohne dass Daten verloren gehen.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Das jerasure-Modul ist das allgemeinste und flexibelste Modul\n          und fungiert auch als der Standard für Ceph-Pools mit Löschcodierung.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Die flexiblere Technik ist \'reed_sol_van :\', wobei es ausreicht, k\n          und m festzulegen. Die Technik \'cauchy_good\' kann schneller sein. Sie müssen jedoch die Paketgröße sorgfältig\n          auswählen. Sämtliche \'reed_sol_r6_op\'-, \'liberation\'-, \'blaum_roth\'- und \'liber8tion\'-Vorgänge sind dahingehend RAID6-Entsprechungen,\n          dass sie nur mit \'m=2\' konfiguriert werden können.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Die Codierung wird jeweils für Pakete auf Bytes-Größe vorgenommen.\n          Die Auswahl der richtigen Paketgröße ist schwierig.\n          In der Jerasure-Dokumentation sind ausführliche Informationen zu diesem Thema enthalten.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Bei Verwendung des Jerasure-Moduls, wenn ein Objekt mit Löschcodierung auf mehreren OSDs gespeichert ist,\n          müssen alle anderen OSDs gelesen werden, um die verloren gegangenen Daten eines OSDs wiederherzustellen.\n          Wenn jerasure beispielsweise mit \'k=8\' und \'m=4\' konfiguriert ist,\n          müssen bei Verlust eines OSDs zum Reparieren die elf anderen gelesen werden.\n\n          Das lrc-Löschcode-Modul erstellt lokale Paritätsdatenblöcke, um die Wiederherstellung mit weniger OSDs auszuführen.\n          Wenn lrc beispielsweise mit \'k=8\', \'m=4\' und \'l=4\' konfiguriert ist, wird ein zusätzlicher Paritätsdatenblock für jeweils vier OSDs erstellt.\n          Geht ein einzelnes OSD verloren, kann es mit nur vier OSDs anstelle\n          von elf wiederhergestellt werden.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Gruppieren Sie die Codierungs- und Datenblöcke in Sätze entsprechend dem Speicherort.\n          Beispielsweise werden für \'k=4\' und \'m=2\', wenn der Speicherort \'3\' entspricht, zwei Dreiergruppen erstellt.\n          Jeder Satz kann wiederhergestellt werden, ohne dass Datenblöcke aus einem anderen Satz gelesen werden.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Der Typ des Crush-Buckets, in dem jeder durch l definierte Satz von Datenblöcken gespeichert wird.\n          Wenn er beispielsweise auf \'rack\' festgelegt ist, wird jede Gruppe an l-Datenblöcken in einem anderen Rack platziert.\n          Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise für einen Schritt zum Auswählen des Racks.\n          Wenn er nicht festgelegt ist, wird keine solche Gruppierung vorgenommen.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Das isa-Modul kapselt die ISA-Bibliothek und wird nur auf Intel-Prozessoren ausgeführt.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Das ISA-Modul wird in zwei Reed Solomon-Formularen bereitgestellt.\n          Wenn \'reed_sol_van\' festgelegt ist, entspricht dies Vandermonde. Ist \'cauchy\' festgelegt, entspricht dies \'Cauchy\'.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Das shec-Modul kapselt die SHEC-Mehrfachbibliothek.\n          Dadurch kann ceph Daten effizienter wiederherstellen als Reed Solomon-Codes.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Die Anzahl der Paritätsdatenblöcke, von denen jeder jeden Datenblock in seinem Berechnungsbereich enthält.\n          Die Anzahl wird als eine Dauerhaftigkeitsschätzung verwendet. Wenn beispielsweise \'c=2\' vorliegt,\n          können 2 OSDs ausfallen, ohne dass Daten verloren gehen.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Der Name des für den ersten Schritt der CRUSH-Regel verwendeten Crush-Buckets.\n      Beispielsweise \'step take default\'.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Stellen Sie sicher, dass sich keine zwei Datenblöcke in einem Bucket mit derselben Ausfalldomäne befinden.\n      Wenn die Ausfalldomäne beispielsweise als Host fungiert, werden keine zwei Datenblöcke auf demselben Host gespeichert.\n      Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise \'step chooseleaf host\'.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Schränken Sie mithilfe der Klassennamen für Crush-Geräte in der CRUSH-Zuordnung die Platzierung\n      auf Geräte einer bestimmten Klasse (z. B. SSD oder HDD) ein.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Legen Sie den Verzeichnisnamen fest, über den das Löschcode-Modul geladen wird.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Lässt alle Vorgänge zu</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Lässt nur Vorgänge zu, die den Server nicht ändern</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Lässt weder Lese- noch Schreibvorgänge zu, jedoch alle anderen Vorgänge</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Lässt Lese-/Schreibvorgänge und andere Vorgänge nicht zu, die Dateiattribute oder Verzeichnisinhalte ändern</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Lässt überhaupt keinen Zugriff zu</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Priorität auswählen --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Niedrig</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Hoch</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informationen</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Letzte 5 Minuten</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Letzte 15 Minuten</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Letzte 30 Minuten</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Letzte Stunde (Standard)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Letzte 3 Stunden</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Letzte 6 Stunden</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Letzte 12 Stunden</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Letzte 24 Stunden</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Gestern</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Heute</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Heute bisher</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Vorgestern</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Letzte 2 Tage</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Dieser Tag letzte Woche</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Vorwoche</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Diese Woche</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Diese Woche bisher</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Letzte 7 Tage</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Vormonat</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Dieser Monat</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Dieser Monat bisher</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Letzte 30 Tage</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Letzte 90 Tage</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Letzte 6 Monate</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Letztes Jahr</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Vorjahr</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Dieses Jahr</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Dieses Jahr bisher</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Letzte 2 Jahre</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Letzte 5 Jahre</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Keine Elemente ausgewählt.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Elementauswahl zum erneuten Auswählen aufheben</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Auswahllimit erreicht</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tags filtern</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Badge hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Keine Elemente verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Entfernen</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonen</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopieren</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Umfassender Scrub</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Vernichten</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Vereinfachen</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Als ausgefallen markieren</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Mit Befehl \'In\' markieren</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Als verloren markieren</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Mit Befehl \'Out\' markieren</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Schützen</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Umbenennen</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>In Papierkorb verschieben</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Schutz aufheben</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Ändern</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Gelöscht</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Hinzugefügt</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Entfernt</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Bearbeitet</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Abgebrochen</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Geklont</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Kopiert</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Vereinfacht</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Geschützt</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Bereinigt</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Umbenannt</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Wiederhergestellt</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback wurde ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>In den Papierkorb verschoben</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Schutz aufgehoben</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Abgelaufen</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ja</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Nein</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Erforderliche Regeln für Passwörter:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>keine aktiven Warnungen</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 aktive Warnung</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> aktive Warnungen\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> mit \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Quality of Service</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS-Limit</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Das gewünschte Limit der E/A-Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS-Limit</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Das gewünschte Limit der E/A-Vorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>BPS-Limit für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Das gewünschte Limit der gelesenen Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>IOPS-Limit für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Das gewünschte Limit für Lesevorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>BPS-Limit für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Das gewünschte Limit der geschriebenen Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>IOPS-Limit für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Das gewünschte Limit für Schreibvorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS-Block</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Das gewünschte Blocklimit der E/A-Bytes.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS-Block</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Das gewünschte Blocklimit der E/A-Vorgänge.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>BPS-Block für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Das gewünschte Blocklimit der gelesenen Bytes.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>IOPS-Block für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Das gewünschte Blocklimit der Lesevorgänge.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>BPS-Block für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Das gewünschte Blocklimit der geschriebenen Bytes.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>IOPS-Block für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Das gewünschte Blocklimit der Schreibvorgänge.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Wird ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ausführen</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>Unbekannte Aufgabe</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>erstellen</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Wird aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Wird gelöscht</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD-Snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Spiegelungsmodus für Pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>Alle Dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> enthält Snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Wird geklont</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klonen</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot von \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> muss geschützt sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Wird kopiert</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>kopieren</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Wird vereinfacht</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>vereinfachen</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Der Schutz von \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> kann aufgrund untergeordneter Images nicht aufgehoben werden.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> kann nicht gelöscht werden, da es geschützt ist.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback wird ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>Rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Wird verschoben</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>verschieben</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Verschoben</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in Papierkorb verschieben\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Image konnte nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Wird wiederhergestellt</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\' verschieben\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image-Name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' wird bereits verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Wird bereinigt</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>bereinigen</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>alle Pools</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>Images von \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Spiegelung kann nicht deaktiviert werden, da sie einen Peer enthält.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>Pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>Erasure-Coding-Profil \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>Ziel \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},Ekvf:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("mrSG"),r=n("IheW"),i=n("lJxs"),s=n("xTzq"),u=n("o8EM"),o=n("8Y7J"),l=n("pL04");let d=(()=>{let t=class{constructor(t,e){this.http=t,this.rbdConfigurationService=e,this.apiPath="api/pool"}create(t){return this.http.post(this.apiPath,t,{observe:"response"})}update(t){let e;return t.hasOwnProperty("srcpool")?(e=t.srcpool,delete t.srcpool):(e=t.pool,delete t.pool),this.http.put(`${this.apiPath}/${encodeURIComponent(e)}`,t,{observe:"response"})}delete(t){return this.http.delete(`${this.apiPath}/${t}`,{observe:"response"})}get(t){return this.http.get(`${this.apiPath}/${t}`)}getList(){return this.http.get(this.apiPath+"?stats=true")}getConfiguration(t){return this.http.get(`${this.apiPath}/${t}/configuration`).pipe(Object(i.a)(t=>t.map(t=>Object.assign(t,this.rbdConfigurationService.getOptionByName(t.name)))))}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}list(t=[]){const e=t.join(",");return this.http.get(`${this.apiPath}?attrs=${e}`).toPromise().then(t=>t)}};return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](r.c),o["ɵɵinject"](u.a))},token:t,providedIn:l.a}),t=a.__decorate([s.a,a.__metadata("design:paramtypes",[r.c,u.a])],t),t})()},EmSq:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("8Y7J"),r=n("LvDl");n("Fgil"),n("aXbf");class i{constructor(t,e,n,r){this.elementRef=t,this.control=e,this.dimlessBinaryPipe=n,this.formatter=r,this.ngModelChange=new a.EventEmitter,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value)}setValue(t){/^[\d.]+$/.test(t)&&(t+=this.defaultUnit||"m");const e=this.formatter.toBytes(t),n=this.round(e);this.el.value=this.dimlessBinaryPipe.transform(n),null!==e?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(t){if(null!==t&&0!==t){if(!r.isUndefined(this.minBytes)&&t<this.minBytes)return this.minBytes;if(!r.isUndefined(this.maxBytes)&&t>this.maxBytes)return this.maxBytes;if(!r.isUndefined(this.roundPower)){const e=Math.round(Math.log(t)/Math.log(this.roundPower));return Math.pow(this.roundPower,e)}}return t}onBlur(t){this.setValue(t)}}},"F+uO":function(t,e,n){var a={"./messages.cs.xlf":"ViD7","./messages.de-DE.xlf":"EiPl","./messages.es-ES.xlf":"yt+r","./messages.fr-FR.xlf":"V5SL","./messages.id-ID.xlf":"jqst","./messages.it-IT.xlf":"8j5A","./messages.ja-JP.xlf":"bN42","./messages.ko-KR.xlf":"3+CB","./messages.pl-PL.xlf":"SPu7","./messages.pt-BR.xlf":"+Wg/","./messages.zh-CN.xlf":"AiMb","./messages.zh-TW.xlf":"HjS5"};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="F+uO"},F8JR:function(t,e,n){"use strict";var a=n("tycR").forEach,r=n("pkCn")("forEach");t.exports=r?[].forEach:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}},FE24:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return h})),n.d(e,"d",(function(){return g})),n.d(e,"e",(function(){return b})),n.d(e,"f",(function(){return d})),n.d(e,"g",(function(){return p}));var a=n("8Y7J"),r=n("pLZG"),i=n("z/SZ"),s=n("hpHm"),u=n("GS7A"),o=n("2uy1");class l{constructor(){this.autoClose=!0,this.insideClick=!1,this.isAnimated=!1}}class d{constructor(){this.direction="down",this.isOpenChange=new a.EventEmitter,this.isDisabledChange=new a.EventEmitter,this.toggleClick=new a.EventEmitter,this.dropdownMenu=new Promise(t=>{this.resolveDropdownMenu=t})}}const c=[Object(u.h)({height:0,overflow:"hidden"}),Object(u.e)("220ms cubic-bezier(0, 0, 0.2, 1)",Object(u.h)({height:"*",overflow:"hidden"}))];class f{constructor(t,e,n,a,r){this._state=t,this.cd=e,this._renderer=n,this._element=a,this.isOpen=!1,this._factoryDropDownAnimation=r.build(c),this._subscription=t.isOpenChange.subscribe(t=>{this.isOpen=t;const e=this._element.nativeElement.querySelector(".dropdown-menu");this._renderer.addClass(this._element.nativeElement.querySelector("div"),"open"),e&&!Object(s.d)()&&(this._renderer.addClass(e,"show"),e.classList.contains("dropdown-menu-right")&&(this._renderer.setStyle(e,"left","auto"),this._renderer.setStyle(e,"right","0")),"up"===this.direction&&(this._renderer.setStyle(e,"top","auto"),this._renderer.setStyle(e,"transform","translateY(-101%)"))),e&&this._state.isAnimated&&this._factoryDropDownAnimation.create(e).play(),this.cd.markForCheck(),this.cd.detectChanges()})}get direction(){return this._state.direction}_contains(t){return this._element.nativeElement.contains(t)}ngOnDestroy(){this._subscription.unsubscribe()}}class h{constructor(t,e,n,a,r,i,s){this._elementRef=t,this._renderer=e,this._viewContainerRef=n,this._cis=a,this._state=r,this._config=i,this._isInlineOpen=!1,this._subscriptions=[],this._isInited=!1,this._state.autoClose=this._config.autoClose,this._state.insideClick=this._config.insideClick,this._state.isAnimated=this._config.isAnimated,this._factoryDropDownAnimation=s.build(c),this._dropdown=this._cis.createLoader(this._elementRef,this._viewContainerRef,this._renderer).provide({provide:d,useValue:this._state}),this.onShown=this._dropdown.onShown,this.onHidden=this._dropdown.onHidden,this.isOpenChange=this._state.isOpenChange}set autoClose(t){this._state.autoClose=t}get autoClose(){return this._state.autoClose}set isAnimated(t){this._state.isAnimated=t}get isAnimated(){return this._state.isAnimated}set insideClick(t){this._state.insideClick=t}get insideClick(){return this._state.insideClick}set isDisabled(t){this._isDisabled=t,this._state.isDisabledChange.emit(t),t&&this.hide()}get isDisabled(){return this._isDisabled}get isOpen(){return this._showInline?this._isInlineOpen:this._dropdown.isShown}set isOpen(t){t?this.show():this.hide()}get isBs4(){return!Object(s.d)()}get _showInline(){return!this.container}ngOnInit(){this._isInited||(this._isInited=!0,this._dropdown.listen({outsideClick:!1,triggers:this.triggers,show:()=>this.show()}),this._subscriptions.push(this._state.toggleClick.subscribe(t=>this.toggle(t))),this._subscriptions.push(this._state.isDisabledChange.pipe(Object(r.a)(t=>t)).subscribe(t=>this.hide())))}show(){if(!this.isOpen&&!this.isDisabled)return this._showInline?(this._inlinedMenu||this._state.dropdownMenu.then(t=>{this._dropdown.attachInline(t.viewContainer,t.templateRef),this._inlinedMenu=this._dropdown._inlineViewRef,this.addBs4Polyfills(),this._renderer.addClass(this._inlinedMenu.rootNodes[0].parentNode,"open"),this.playAnimation()}).catch(),this.addBs4Polyfills(),this._isInlineOpen=!0,this.onShown.emit(!0),this._state.isOpenChange.emit(!0),void this.playAnimation()):void this._state.dropdownMenu.then(t=>{const e=this.dropup||void 0!==this.dropup&&this.dropup;this._state.direction=e?"up":"down";const n=this.placement||(e?"top start":"bottom start");this._dropdown.attach(f).to(this.container).position({attachment:n}).show({content:t.templateRef,placement:n}),this._state.isOpenChange.emit(!0)}).catch()}hide(){this.isOpen&&(this._showInline?(this.removeShowClass(),this.removeDropupStyles(),this._isInlineOpen=!1,this.onHidden.emit(!0)):this._dropdown.hide(),this._state.isOpenChange.emit(!1))}toggle(t){return this.isOpen||!t?this.hide():this.show()}_contains(t){return this._elementRef.nativeElement.contains(t.target)||this._dropdown.instance&&this._dropdown.instance._contains(t.target)}ngOnDestroy(){for(const t of this._subscriptions)t.unsubscribe();this._dropdown.dispose()}addBs4Polyfills(){Object(s.d)()||(this.addShowClass(),this.checkRightAlignment(),this.addDropupStyles())}playAnimation(){this._state.isAnimated&&this._inlinedMenu&&this._factoryDropDownAnimation.create(this._inlinedMenu.rootNodes[0]).play()}addShowClass(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.addClass(this._inlinedMenu.rootNodes[0],"show")}removeShowClass(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.removeClass(this._inlinedMenu.rootNodes[0],"show")}checkRightAlignment(){if(this._inlinedMenu&&this._inlinedMenu.rootNodes[0]){const t=this._inlinedMenu.rootNodes[0].classList.contains("dropdown-menu-right");this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"left",t?"auto":"0"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"right",t?"0":"auto")}}addDropupStyles(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&(this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"top",this.dropup?"auto":"100%"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"transform",this.dropup?"translateY(-101%)":"translateY(0)"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"bottom","auto"))}removeDropupStyles(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&(this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"top"),this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"transform"),this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"bottom"))}}class g{constructor(t,e,n){t.resolveDropdownMenu({templateRef:n,viewContainer:e})}}class p{constructor(t,e,n,a,r){this._changeDetectorRef=t,this._dropdown=e,this._element=n,this._renderer=a,this._state=r,this.isDisabled=null,this._subscriptions=[],this._subscriptions.push(this._state.isOpenChange.subscribe(t=>{this.isOpen=t,t?(this._documentClickListener=this._renderer.listen("document","click",t=>{!this._state.autoClose||2===t.button||this._element.nativeElement.contains(t.target)||this._state.insideClick&&this._dropdown._contains(t)||(this._state.toggleClick.emit(!1),this._changeDetectorRef.detectChanges())}),this._escKeyUpListener=this._renderer.listen(this._element.nativeElement,"keyup.esc",()=>{this._state.autoClose&&(this._state.toggleClick.emit(!1),this._changeDetectorRef.detectChanges())})):(this._documentClickListener(),this._escKeyUpListener())})),this._subscriptions.push(this._state.isDisabledChange.subscribe(t=>this.isDisabled=t||null))}onClick(){this.isDisabled||this._state.toggleClick.emit(!0)}ngOnDestroy(){this._documentClickListener&&this._documentClickListener(),this._escKeyUpListener&&this._escKeyUpListener();for(const t of this._subscriptions)t.unsubscribe()}}class b{static forRoot(t){return{ngModule:b,providers:[i.a,o.a,d,{provide:l,useValue:t||{autoClose:!0,insideClick:!1}}]}}}},FFMq:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return t.join(", ")}}},FGWQ:function(t,e,n){var a=n("pmjB"),r=n("p33Q"),i=n("im1V");t.exports=function(t){return i(t)?a(t):r(t)}},FMNM:function(t,e,n){var a=n("2oRo"),r=n("xluM"),i=n("glrk"),s=n("Fib7"),u=n("xrYK"),o=n("kmMV"),l=a.TypeError;t.exports=function(t,e){var n=t.exec;if(s(n)){var a=r(n,t,e);return null!==a&&i(a),a}if("RegExp"===u(t))return r(o,t,e);throw l("RegExp#exec called on incompatible receiver")}},FSuO:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("LvDl"),i=n("x38r");n("a0VL"),n("uIqm");class s{constructor(t){this.datePipe=t,this.autoReload=5e3,this.renderObjects=!1,this.appendParentKey=!0,this.hideEmpty=!1,this.hideKeys=[],this.columns=[],this.fetchData=new a.EventEmitter}ngOnInit(){this.columns=[{prop:"key",flexGrow:1,cellTransformation:i.a.bold},{prop:"value",flexGrow:3}],this.customCss&&(this.columns[1].cellTransformation=i.a.classAdding),this.fetchData.observers.length>0&&this.table.fetchData.subscribe(()=>{this.fetchData.emit()}),this.useData()}ngOnChanges(){this.useData()}useData(){if(!this.data)return;let t=this.makePairs(this.data);this.hideKeys&&(t=t.filter(t=>!this.hideKeys.includes(t.key))),this.tableData=t}makePairs(t){let e=[];if(t){if(r.isArray(t))e=this.makePairsFromArray(t);else{if(!r.isObject(t))throw new Error("Wrong data format");e=this.makePairsFromObject(t)}return e=e.map(t=>(t.value=this.convertValue(t.value),t)).filter(t=>null!==t.value),r.sortBy(this.renderObjects?this.insertFlattenObjects(e):e,"key")}}makePairsFromArray(t){let e=[];const n=t[0];if(r.isArray(n)){if(2!==n.length)throw new Error(`Array contains too many elements (${n.length}). Needs to be of type [string, any][]`);e=t.map(t=>({key:t[0],value:t[1]}))}else r.isObject(n)&&(e=r.has(n,"key")&&r.has(n,"value")?[...t]:t.reduce((t,e)=>t.concat(this.makePairsFromObject(e)),e));return e}makePairsFromObject(t){return Object.keys(t).map(e=>({key:e,value:t[e]}))}insertFlattenObjects(t){return r.flattenDeep(t.map(t=>{const e=t.value,n=r.isObject(e);return!n||r.isEmpty(e)?(n&&(t.value=""),t):this.splitItemIntoItems(t)}))}splitItemIntoItems(t){return this.makePairs(t.value).map(e=>(this.appendParentKey&&(e.key=t.key+" "+e.key),e))}convertValue(t){if(r.isArray(t)){if(r.isEmpty(t)&&this.hideEmpty)return null;t=t.map(t=>r.isObject(t)?JSON.stringify(t):t).join(", ")}else if(r.isObject(t)){if(this.hideEmpty&&r.isEmpty(t)||!this.renderObjects)return null}else if(r.isString(t)){if(""===t&&this.hideEmpty)return null;this.isDate(t)&&(t=this.datePipe.transform(t)||t)}return t}isDate(t){const e="\\d{2}[ -:.TZ]";return t.match(new RegExp("^\\d{4}[ -:.TZ]"+e+e+e+e+e+"\\d*Z?$"))}}},FZtP:function(t,e,n){var a=n("2oRo"),r=n("/byt"),i=n("eFrH"),s=n("F8JR"),u=n("kRJp"),o=function(t){if(t&&t.forEach!==s)try{u(t,"forEach",s)}catch(e){t.forEach=s}};for(var l in r)r[l]&&o(a[l]&&a[l].prototype);o(i)},Fgil:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1024,["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"])}}},Fib7:function(t,e){t.exports=function(t){return"function"==typeof t}},Fwy9:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("gk6K"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(t,e,n,r){this.el=t,this.renderer=e,this.treeDraggedElement=n,this.ngZone=r,this.allowDragoverStyling=!0,this.onDropCallback=new a.EventEmitter,this.onDragOverCallback=new a.EventEmitter,this.onDragLeaveCallback=new a.EventEmitter,this.onDragEnterCallback=new a.EventEmitter,this._allowDrop=function(t,e){return!0},this.dragOverEventHandler=this.onDragOver.bind(this),this.dragEnterEventHandler=this.onDragEnter.bind(this),this.dragLeaveEventHandler=this.onDragLeave.bind(this)}return Object.defineProperty(t.prototype,"treeAllowDrop",{set:function(t){this._allowDrop=t instanceof Function?t:function(e,n){return t}},enumerable:!0,configurable:!0}),t.prototype.allowDrop=function(t){return this._allowDrop(this.treeDraggedElement.get(),t)},t.prototype.ngAfterViewInit=function(){var t=this,e=this.el.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("dragover",t.dragOverEventHandler),e.addEventListener("dragenter",t.dragEnterEventHandler),e.addEventListener("dragleave",t.dragLeaveEventHandler)}))},t.prototype.ngOnDestroy=function(){var t=this.el.nativeElement;t.removeEventListener("dragover",this.dragOverEventHandler),t.removeEventListener("dragenter",this.dragEnterEventHandler),t.removeEventListener("dragleave",this.dragLeaveEventHandler)},t.prototype.onDragOver=function(t){if(!this.allowDrop(t))return this.allowDragoverStyling?this.addDisabledClass():void 0;this.onDragOverCallback.emit({event:t,element:this.treeDraggedElement.get()}),t.preventDefault(),this.allowDragoverStyling&&this.addClass()},t.prototype.onDragEnter=function(t){this.allowDrop(t)&&(t.preventDefault(),this.onDragEnterCallback.emit({event:t,element:this.treeDraggedElement.get()}))},t.prototype.onDragLeave=function(t){if(!this.allowDrop(t))return this.allowDragoverStyling?this.removeDisabledClass():void 0;this.onDragLeaveCallback.emit({event:t,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass()},t.prototype.onDrop=function(t){this.allowDrop(t)&&(t.preventDefault(),this.onDropCallback.emit({event:t,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass(),this.treeDraggedElement.set(null))},t.prototype.addClass=function(){this.renderer.addClass(this.el.nativeElement,"is-dragging-over")},t.prototype.removeClass=function(){this.renderer.removeClass(this.el.nativeElement,"is-dragging-over")},t.prototype.addDisabledClass=function(){this.renderer.addClass(this.el.nativeElement,"is-dragging-over-disabled")},t.prototype.removeDisabledClass=function(){this.renderer.removeClass(this.el.nativeElement,"is-dragging-over-disabled")},i([Object(a.Input)(),s("design:type",Object)],t.prototype,"allowDragoverStyling",void 0),i([Object(a.Output)("treeDrop"),s("design:type",Object)],t.prototype,"onDropCallback",void 0),i([Object(a.Output)("treeDropDragOver"),s("design:type",Object)],t.prototype,"onDragOverCallback",void 0),i([Object(a.Output)("treeDropDragLeave"),s("design:type",Object)],t.prototype,"onDragLeaveCallback",void 0),i([Object(a.Output)("treeDropDragEnter"),s("design:type",Object)],t.prototype,"onDragEnterCallback",void 0),i([Object(a.Input)(),s("design:type",Object),s("design:paramtypes",[Object])],t.prototype,"treeAllowDrop",null),i([Object(a.HostListener)("drop",["$event"]),s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",void 0)],t.prototype,"onDrop",null),i([Object(a.Directive)({selector:"[treeDrop]"}),s("design:paramtypes",[a.ElementRef,a.Renderer2,r.a,a.NgZone])],t)}()},"G+Rx":function(t,e,n){var a=n("0GbY");t.exports=a("document","documentElement")},G0Uy:function(t,e,n){!function(t){"use strict";t.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},"G1/K":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.i18n=t}transform(t){return""===t?this.i18n("n/a"):t}}},G1I9:function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return s}));var a=n("oxzT"),r=n("mtw6");class i{constructor(t=r.a.info,e,n,a,i="Ceph"){this.type=t,this.title=e,this.message=n,this.options=a,this.application=i,this.isFinishedTask=!1,this.classes={Ceph:"ceph-icon",Prometheus:"prometheus-icon"},this.applicationClass=this.classes[this.application]}}class s extends i{constructor(t=new i){super(t.type,t.title,t.message,t.options,t.application),this.config=t,this.textClasses=["text-danger","text-info","text-success"],this.iconClasses=[a.a.warning,a.a.info,a.a.check],delete this.config,this.timestamp=(new Date).toJSON(),this.iconClass=this.iconClasses[this.type],this.textClass=this.textClasses[this.type],this.isFinishedTask=t.isFinishedTask}}},G3dZ:function(t,e,n){var a=n("77kF"),r=n("Z2DA");t.exports=function(t,e){return a(t,r(t),e)}},G3uG:function(t,e){var n=Date.now;t.exports=function(t){var e=0,a=0;return function(){var r=n(),i=16-(r-a);if(a=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},"G6Q+":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},GS7A:function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"c",(function(){return r})),n.d(e,"a",(function(){return i})),n.d(e,"e",(function(){return u})),n.d(e,"f",(function(){return o})),n.d(e,"g",(function(){return d})),n.d(e,"h",(function(){return l})),n.d(e,"i",(function(){return c})),n.d(e,"j",(function(){return s})),n.d(e,"d",(function(){return h})),n.d(e,"k",(function(){return g})),n.d(e,"l",(function(){return p}));class a{}class r{}const i="*";function s(t,e){return{type:7,name:t,definitions:e,options:{}}}function u(t,e=null){return{type:4,styles:e,timings:t}}function o(t,e=null){return{type:2,steps:t,options:e}}function l(t){return{type:6,styles:t,offset:null}}function d(t,e,n){return{type:0,name:t,styles:e,options:n}}function c(t,e,n=null){return{type:1,expr:t,animation:e,options:n}}function f(t){Promise.resolve(null).then(t)}class h{constructor(t=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this.parentPlayer=null,this.totalTime=t+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){f(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){}setPosition(t){}getPosition(){return 0}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}class g{constructor(t){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;let e=0,n=0,a=0;const r=this.players.length;0==r?f(()=>this._onFinish()):this.players.forEach(t=>{t.onDone(()=>{++e==r&&this._onFinish()}),t.onDestroy(()=>{++n==r&&this._onDestroy()}),t.onStart(()=>{++a==r&&this._onStart()})}),this.totalTime=this.players.reduce((t,e)=>Math.max(t,e.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this.players.forEach(t=>t.init())}onStart(t){this._onStartFns.push(t)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(t=>t()),this._onStartFns=[])}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(t=>t.play())}pause(){this.players.forEach(t=>t.pause())}restart(){this.players.forEach(t=>t.restart())}finish(){this._onFinish(),this.players.forEach(t=>t.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(t=>t.destroy()),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this.players.forEach(t=>t.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(t){const e=t*this.totalTime;this.players.forEach(t=>{const n=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(n)})}getPosition(){let t=0;return this.players.forEach(e=>{const n=e.getPosition();t=Math.min(n,t)}),t}beforeDestroy(){this.players.forEach(t=>{t.beforeDestroy&&t.beforeDestroy()})}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}const p="!"},GarU:function(t,e,n){var a=n("2oRo"),r=n("OpvP"),i=a.TypeError;t.exports=function(t,e){if(r(e,t))return t;throw i("Incorrect invocation")}},Gf4A:function(t,e,n){var a=n("KFwg")(n("Wa4q"),"Map");t.exports=a},GgAd:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(){this.isBinary=!0,this.decimals=0}ngOnChanges(){this.usedPercentage=this.total>0?this.used/this.total*100:0,this.freePercentage=100-this.usedPercentage}}},Gi26:function(t,e,n){var a=n("4zBA"),r=n("ewvW"),i=a({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(r(t),e)}},GiVz:function(t,e,n){"use strict";n.d(e,"a",(function(){return We})),n.d(e,"b",(function(){return Ue}));var a=n("SVse"),r=n("8Y7J");class i{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitText(this,e)}}class s{constructor(t,e,n,a,r){this.switchValue=t,this.type=e,this.cases=n,this.sourceSpan=a,this.switchValueSourceSpan=r}visit(t,e){return t.visitExpansion(this,e)}}class u{constructor(t,e,n,a,r){this.value=t,this.expression=e,this.sourceSpan=n,this.valueSourceSpan=a,this.expSourceSpan=r}visit(t,e){return t.visitExpansionCase(this,e)}}class o{constructor(t,e,n,a){this.name=t,this.value=e,this.sourceSpan=n,this.valueSpan=a}visit(t,e){return t.visitAttribute(this,e)}}class l{constructor(t,e,n,a,r=null,i=null){this.name=t,this.attrs=e,this.children=n,this.sourceSpan=a,this.startSourceSpan=r,this.endSourceSpan=i}visit(t,e){return t.visitElement(this,e)}}class d{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitComment(this,e)}}function c(t,e,n=null){const a=[],r=t.visit?e=>t.visit(e,n)||e.visit(t,n):e=>e.visit(t,n);return e.forEach(t=>{const e=r(t);e&&a.push(e)}),a}class f{constructor(t,e,n,a,r,i){this.nodes=t,this.placeholders=e,this.placeholderToMessage=n,this.meaning=a,this.description=r,this.id=i,this.sources=t.length?[{filePath:t[0].sourceSpan.start.file.url,startLine:t[0].sourceSpan.start.line+1,startCol:t[0].sourceSpan.start.col+1,endLine:t[t.length-1].sourceSpan.end.line+1,endCol:t[0].sourceSpan.start.col+1}]:[]}}class h{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitText(this,e)}}class g{constructor(t,e){this.children=t,this.sourceSpan=e}visit(t,e){return t.visitContainer(this,e)}}class p{constructor(t,e,n,a){this.expression=t,this.type=e,this.cases=n,this.sourceSpan=a}visit(t,e){return t.visitIcu(this,e)}}class b{constructor(t,e,n,a,r,i,s){this.tag=t,this.attrs=e,this.startName=n,this.closeName=a,this.children=r,this.isVoid=i,this.sourceSpan=s}visit(t,e){return t.visitTagPlaceholder(this,e)}}class m{constructor(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}visit(t,e){return t.visitPlaceholder(this,e)}}class y{constructor(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}visit(t,e){return t.visitIcuPlaceholder(this,e)}}class v{constructor(t,e,n,a){this.file=t,this.offset=e,this.line=n,this.col=a}toString(){return null!=this.offset?`${this.line}:${this.col}`:""}getContext(t,e){const n=this.file.content;let a=this.offset;if(null!=a){a>n.length-1&&(a=n.length-1);let r=a,i=0,s=0;for(;i<t&&a>0&&(a--,i++,"\n"!==n[a]||++s!==e););for(i=0,s=0;i<t&&r<n.length-1&&(r++,i++,"\n"!==n[r]||++s!==e););return{before:n.substring(a,this.offset),after:n.substring(this.offset,r+1)}}return null}}class x{constructor(t,e=""){this.content=t,this.url=e}}class _{constructor(t,e,n=null){this.start=t,this.end=e,this.details=n}toString(){return this.start.file.content.substring(this.start.offset,this.end.offset)}}const T=function(){var t={WARNING:0,ERROR:1};return t[t.WARNING]="WARNING",t[t.ERROR]="ERROR",t}();class w{constructor(t,e,n=T.ERROR){this.span=t,this.msg=e,this.level=n}contextualMessage(){const t=this.span.start.getContext(100,3);return t?` ("${t.before}[${T[this.level]} ->]${t.after}")`:""}toString(){const t=this.span.details?", "+this.span.details:"";return`${this.msg}${this.contextualMessage()}: ${this.span.start}${t}`}}class O extends w{constructor(t,e){super(t,e)}}function S(t){return t.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}class I{constructor(t,e){this.start=t,this.end=e}}const N=new I("{{","}}");function C(t){return t>=9&&t<=32||160===t}function R(t){return 48<=t&&t<=57}function A(t){return t>=97&&t<=122||t>=65&&t<=90}const k=function(){var t={RAW_TEXT:0,ESCAPABLE_RAW_TEXT:1,PARSABLE_DATA:2};return t[t.RAW_TEXT]="RAW_TEXT",t[t.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",t[t.PARSABLE_DATA]="PARSABLE_DATA",t}();function E(t){if(":"!==t[0])return[null,t];const e=t.indexOf(":",1);if(-1===e)throw new Error(`Unsupported format "${t}" expecting ":namespace:name"`);return[t.slice(1,e),t.slice(e+1)]}function L(t){return null===t?null:E(t)[0]}function D(t,e){return t?`:${t}:${e}`:e}const P={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",alefsym:"ℵ",Alpha:"Α",alpha:"α",amp:"&",and:"∧",ang:"∠",apos:"'",Aring:"Å",aring:"å",asymp:"≈",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",bdquo:"„",Beta:"Β",beta:"β",brvbar:"¦",bull:"•",cap:"∩",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",Chi:"Χ",chi:"χ",circ:"ˆ",clubs:"♣",cong:"≅",copy:"©",crarr:"↵",cup:"∪",curren:"¤",dagger:"†",Dagger:"‡",darr:"↓",dArr:"⇓",deg:"°",Delta:"Δ",delta:"δ",diams:"♦",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",empty:"∅",emsp:" ",ensp:" ",Epsilon:"Ε",epsilon:"ε",equiv:"≡",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",exist:"∃",fnof:"ƒ",forall:"∀",frac12:"½",frac14:"¼",frac34:"¾",frasl:"⁄",Gamma:"Γ",gamma:"γ",ge:"≥",gt:">",harr:"↔",hArr:"⇔",hearts:"♥",hellip:"…",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",image:"ℑ",infin:"∞",int:"∫",Iota:"Ι",iota:"ι",iquest:"¿",isin:"∈",Iuml:"Ï",iuml:"ï",Kappa:"Κ",kappa:"κ",Lambda:"Λ",lambda:"λ",lang:"⟨",laquo:"«",larr:"←",lArr:"⇐",lceil:"⌈",ldquo:"“",le:"≤",lfloor:"⌊",lowast:"∗",loz:"◊",lrm:"‎",lsaquo:"‹",lsquo:"‘",lt:"<",macr:"¯",mdash:"—",micro:"µ",middot:"·",minus:"−",Mu:"Μ",mu:"μ",nabla:"∇",nbsp:" ",ndash:"–",ne:"≠",ni:"∋",not:"¬",notin:"∉",nsub:"⊄",Ntilde:"Ñ",ntilde:"ñ",Nu:"Ν",nu:"ν",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",OElig:"Œ",oelig:"œ",Ograve:"Ò",ograve:"ò",oline:"‾",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",oplus:"⊕",or:"∨",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",otimes:"⊗",Ouml:"Ö",ouml:"ö",para:"¶",permil:"‰",perp:"⊥",Phi:"Φ",phi:"φ",Pi:"Π",pi:"π",piv:"ϖ",plusmn:"±",pound:"£",prime:"′",Prime:"″",prod:"∏",prop:"∝",Psi:"Ψ",psi:"ψ",quot:'"',radic:"√",rang:"⟩",raquo:"»",rarr:"→",rArr:"⇒",rceil:"⌉",rdquo:"”",real:"ℜ",reg:"®",rfloor:"⌋",Rho:"Ρ",rho:"ρ",rlm:"‏",rsaquo:"›",rsquo:"’",sbquo:"‚",Scaron:"Š",scaron:"š",sdot:"⋅",sect:"§",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sim:"∼",spades:"♠",sub:"⊂",sube:"⊆",sum:"∑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supe:"⊇",szlig:"ß",Tau:"Τ",tau:"τ",there4:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thinsp:" ",THORN:"Þ",thorn:"þ",tilde:"˜",times:"×",trade:"™",Uacute:"Ú",uacute:"ú",uarr:"↑",uArr:"⇑",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",Uuml:"Ü",uuml:"ü",weierp:"℘",Xi:"Ξ",xi:"ξ",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ",Yuml:"Ÿ",Zeta:"Ζ",zeta:"ζ",zwj:"‍",zwnj:"‌",ngsp:""},M=function(){var t={TAG_OPEN_START:0,TAG_OPEN_END:1,TAG_OPEN_END_VOID:2,TAG_CLOSE:3,TEXT:4,ESCAPABLE_RAW_TEXT:5,RAW_TEXT:6,COMMENT_START:7,COMMENT_END:8,CDATA_START:9,CDATA_END:10,ATTR_NAME:11,ATTR_VALUE:12,DOC_TYPE:13,EXPANSION_FORM_START:14,EXPANSION_CASE_VALUE:15,EXPANSION_CASE_EXP_START:16,EXPANSION_CASE_EXP_END:17,EXPANSION_FORM_END:18,EOF:19};return t[t.TAG_OPEN_START]="TAG_OPEN_START",t[t.TAG_OPEN_END]="TAG_OPEN_END",t[t.TAG_OPEN_END_VOID]="TAG_OPEN_END_VOID",t[t.TAG_CLOSE]="TAG_CLOSE",t[t.TEXT]="TEXT",t[t.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",t[t.RAW_TEXT]="RAW_TEXT",t[t.COMMENT_START]="COMMENT_START",t[t.COMMENT_END]="COMMENT_END",t[t.CDATA_START]="CDATA_START",t[t.CDATA_END]="CDATA_END",t[t.ATTR_NAME]="ATTR_NAME",t[t.ATTR_VALUE]="ATTR_VALUE",t[t.DOC_TYPE]="DOC_TYPE",t[t.EXPANSION_FORM_START]="EXPANSION_FORM_START",t[t.EXPANSION_CASE_VALUE]="EXPANSION_CASE_VALUE",t[t.EXPANSION_CASE_EXP_START]="EXPANSION_CASE_EXP_START",t[t.EXPANSION_CASE_EXP_END]="EXPANSION_CASE_EXP_END",t[t.EXPANSION_FORM_END]="EXPANSION_FORM_END",t[t.EOF]="EOF",t}();class q{constructor(t,e,n){this.type=t,this.parts=e,this.sourceSpan=n}}class j extends w{constructor(t,e,n){super(n,t),this.tokenType=e}}class F{constructor(t,e){this.tokens=t,this.errors=e}}const V=/\r\n?/g;function G(t){return`Unexpected character "${0===t?"EOF":String.fromCharCode(t)}"`}function B(t){return`Unknown entity "${t}" - use the "&#<decimal>;" or  "&#x<hex>;" syntax`}class z{constructor(t){this.error=t}}class Y{constructor(t,e,n,a=N){this._file=t,this._getTagDefinition=e,this._tokenizeIcu=n,this._interpolationConfig=a,this._peek=-1,this._nextPeek=-1,this._index=-1,this._line=0,this._column=-1,this._expansionCaseStack=[],this._inInterpolation=!1,this.tokens=[],this.errors=[],this._input=t.content,this._length=t.content.length,this._advance()}_processCarriageReturns(t){return t.replace(V,"\n")}tokenize(){for(;0!==this._peek;){const e=this._getLocation();try{this._attemptCharCode(60)?this._attemptCharCode(33)?this._attemptCharCode(91)?this._consumeCdata(e):this._attemptCharCode(45)?this._consumeComment(e):this._consumeDocType(e):this._attemptCharCode(47)?this._consumeTagClose(e):this._consumeTagOpen(e):this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(t){if(!(t instanceof z))throw t;this.errors.push(t.error)}}return this._beginToken(M.EOF),this._endToken([]),new F(function(t){const e=[];let n=void 0;for(let a=0;a<t.length;a++){const r=t[a];n&&n.type===M.TEXT&&r.type===M.TEXT?(n.parts[0]+=r.parts[0],n.sourceSpan.end=r.sourceSpan.end):(n=r,e.push(n))}return e}(this.tokens),this.errors)}_tokenizeExpansionForm(){if($(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if((61===(t=this._peek)||A(t)||R(t))&&this._isInExpansionForm())return this._consumeExpansionCaseStart(),!0;var t;if(125===this._peek){if(this._isInExpansionCase())return this._consumeExpansionCaseEnd(),!0;if(this._isInExpansionForm())return this._consumeExpansionFormEnd(),!0}return!1}_getLocation(){return new v(this._file,this._index,this._line,this._column)}_getSpan(t=this._getLocation(),e=this._getLocation()){return new _(t,e)}_beginToken(t,e=this._getLocation()){this._currentTokenStart=e,this._currentTokenType=t}_endToken(t,e=this._getLocation()){const n=new q(this._currentTokenType,t,new _(this._currentTokenStart,e));return this.tokens.push(n),this._currentTokenStart=null,this._currentTokenType=null,n}_createError(t,e){this._isInExpansionForm()&&(t+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');const n=new j(t,this._currentTokenType,e);return this._currentTokenStart=null,this._currentTokenType=null,new z(n)}_advance(){if(this._index>=this._length)throw this._createError(G(0),this._getSpan());10===this._peek?(this._line++,this._column=0):10!==this._peek&&13!==this._peek&&this._column++,this._index++,this._peek=this._index>=this._length?0:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?0:this._input.charCodeAt(this._index+1)}_attemptCharCode(t){return this._peek===t&&(this._advance(),!0)}_attemptCharCodeCaseInsensitive(t){return e=t,J(this._peek)===J(e)&&(this._advance(),!0);var e}_requireCharCode(t){const e=this._getLocation();if(!this._attemptCharCode(t))throw this._createError(G(this._peek),this._getSpan(e,e))}_attemptStr(t){const e=t.length;if(this._index+e>this._length)return!1;const n=this._savePosition();for(let a=0;a<e;a++)if(!this._attemptCharCode(t.charCodeAt(a)))return this._restorePosition(n),!1;return!0}_attemptStrCaseInsensitive(t){for(let e=0;e<t.length;e++)if(!this._attemptCharCodeCaseInsensitive(t.charCodeAt(e)))return!1;return!0}_requireStr(t){const e=this._getLocation();if(!this._attemptStr(t))throw this._createError(G(this._peek),this._getSpan(e))}_attemptCharCodeUntilFn(t){for(;!t(this._peek);)this._advance()}_requireCharCodeUntilFn(t,e){const n=this._getLocation();if(this._attemptCharCodeUntilFn(t),this._index-n.offset<e)throw this._createError(G(this._peek),this._getSpan(n,n))}_attemptUntilChar(t){for(;this._peek!==t;)this._advance()}_readChar(t){if(t&&38===this._peek)return this._decodeEntity();{const t=this._index;return this._advance(),this._input[t]}}_decodeEntity(){const t=this._getLocation();if(this._advance(),!this._attemptCharCode(35)){const e=this._savePosition();if(this._attemptCharCodeUntilFn(K),59!==this._peek)return this._restorePosition(e),"&";this._advance();const n=this._input.substring(t.offset+1,this._index-1),a=P[n];if(!a)throw this._createError(B(n),this._getSpan(t));return a}{const n=this._attemptCharCode(120)||this._attemptCharCode(88),a=this._getLocation().offset;if(this._attemptCharCodeUntilFn(W),59!==this._peek)throw this._createError(G(this._peek),this._getSpan());this._advance();const r=this._input.substring(a,this._index-1);try{const t=parseInt(r,n?16:10);return String.fromCharCode(t)}catch(e){const n=this._input.substring(t.offset+1,this._index-1);throw this._createError(B(n),this._getSpan(t))}}}_consumeRawText(t,e,n){let a;const r=this._getLocation();this._beginToken(t?M.ESCAPABLE_RAW_TEXT:M.RAW_TEXT,r);const i=[];for(;a=this._getLocation(),!this._attemptCharCode(e)||!n();)for(this._index>a.offset&&i.push(this._input.substring(a.offset,this._index));this._peek!==e;)i.push(this._readChar(t));return this._endToken([this._processCarriageReturns(i.join(""))],a)}_consumeComment(t){this._beginToken(M.COMMENT_START,t),this._requireCharCode(45),this._endToken([]);const e=this._consumeRawText(!1,45,()=>this._attemptStr("->"));this._beginToken(M.COMMENT_END,e.sourceSpan.end),this._endToken([])}_consumeCdata(t){this._beginToken(M.CDATA_START,t),this._requireStr("CDATA["),this._endToken([]);const e=this._consumeRawText(!1,93,()=>this._attemptStr("]>"));this._beginToken(M.CDATA_END,e.sourceSpan.end),this._endToken([])}_consumeDocType(t){this._beginToken(M.DOC_TYPE,t),this._attemptUntilChar(62),this._advance(),this._endToken([this._input.substring(t.offset+2,this._index-1)])}_consumePrefixAndName(){const t=this._index;let e=null;for(;58!==this._peek&&!(((n=this._peek)<97||122<n)&&(n<65||90<n)&&(n<48||n>57));)this._advance();var n;let a;return 58===this._peek?(this._advance(),e=this._input.substring(t,this._index-1),a=this._index):a=t,this._requireCharCodeUntilFn(U,this._index===a?1:0),[e,this._input.substring(a,this._index)]}_consumeTagOpen(t){const e=this._savePosition();let n,a;try{if(!A(this._peek))throw this._createError(G(this._peek),this._getSpan());const e=this._index;for(this._consumeTagOpenStart(t),n=this._input.substring(e,this._index),a=n.toLowerCase(),this._attemptCharCodeUntilFn(H);47!==this._peek&&62!==this._peek;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(H),this._attemptCharCode(61)&&(this._attemptCharCodeUntilFn(H),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(H);this._consumeTagOpenEnd()}catch(i){if(i instanceof z)return this._restorePosition(e),this._beginToken(M.TEXT,t),void this._endToken(["<"]);throw i}const r=this._getTagDefinition(n).contentType;r===k.RAW_TEXT?this._consumeRawTextWithTagClose(a,!1):r===k.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(a,!0)}_consumeRawTextWithTagClose(t,e){const n=this._consumeRawText(e,60,()=>!!this._attemptCharCode(47)&&(this._attemptCharCodeUntilFn(H),!!this._attemptStrCaseInsensitive(t)&&(this._attemptCharCodeUntilFn(H),this._attemptCharCode(62))));this._beginToken(M.TAG_CLOSE,n.sourceSpan.end),this._endToken([null,t])}_consumeTagOpenStart(t){this._beginToken(M.TAG_OPEN_START,t);const e=this._consumePrefixAndName();this._endToken(e)}_consumeAttributeName(){this._beginToken(M.ATTR_NAME);const t=this._consumePrefixAndName();this._endToken(t)}_consumeAttributeValue(){let t;if(this._beginToken(M.ATTR_VALUE),39===this._peek||34===this._peek){const e=this._peek;this._advance();const n=[];for(;this._peek!==e;)n.push(this._readChar(!0));t=n.join(""),this._advance()}else{const e=this._index;this._requireCharCodeUntilFn(U,1),t=this._input.substring(e,this._index)}this._endToken([this._processCarriageReturns(t)])}_consumeTagOpenEnd(){const t=this._attemptCharCode(47)?M.TAG_OPEN_END_VOID:M.TAG_OPEN_END;this._beginToken(t),this._requireCharCode(62),this._endToken([])}_consumeTagClose(t){this._beginToken(M.TAG_CLOSE,t),this._attemptCharCodeUntilFn(H);const e=this._consumePrefixAndName();this._attemptCharCodeUntilFn(H),this._requireCharCode(62),this._endToken(e)}_consumeExpansionFormStart(){this._beginToken(M.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(123),this._endToken([]),this._expansionCaseStack.push(M.EXPANSION_FORM_START),this._beginToken(M.RAW_TEXT,this._getLocation());const t=this._readUntil(44);this._endToken([t],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(H),this._beginToken(M.RAW_TEXT,this._getLocation());const e=this._readUntil(44);this._endToken([e],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(H)}_consumeExpansionCaseStart(){this._beginToken(M.EXPANSION_CASE_VALUE,this._getLocation());const t=this._readUntil(123).trim();this._endToken([t],this._getLocation()),this._attemptCharCodeUntilFn(H),this._beginToken(M.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(123),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(H),this._expansionCaseStack.push(M.EXPANSION_CASE_EXP_START)}_consumeExpansionCaseEnd(){this._beginToken(M.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(125),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(H),this._expansionCaseStack.pop()}_consumeExpansionFormEnd(){this._beginToken(M.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(125),this._endToken([]),this._expansionCaseStack.pop()}_consumeText(){const t=this._getLocation();this._beginToken(M.TEXT,t);const e=[];do{this._interpolationConfig&&this._attemptStr(this._interpolationConfig.start)?(e.push(this._interpolationConfig.start),this._inInterpolation=!0):this._interpolationConfig&&this._inInterpolation&&this._attemptStr(this._interpolationConfig.end)?(e.push(this._interpolationConfig.end),this._inInterpolation=!1):e.push(this._readChar(!0))}while(!this._isTextEnd());this._endToken([this._processCarriageReturns(e.join(""))])}_isTextEnd(){if(60===this._peek||0===this._peek)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if($(this._input,this._index,this._interpolationConfig))return!0;if(125===this._peek&&this._isInExpansionCase())return!0}return!1}_savePosition(){return[this._peek,this._index,this._column,this._line,this.tokens.length]}_readUntil(t){const e=this._index;return this._attemptUntilChar(t),this._input.substring(e,this._index)}_restorePosition(t){this._peek=t[0],this._index=t[1],this._column=t[2],this._line=t[3];const e=t[4];e<this.tokens.length&&(this.tokens=this.tokens.slice(0,e))}_isInExpansionCase(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===M.EXPANSION_CASE_EXP_START}_isInExpansionForm(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===M.EXPANSION_FORM_START}}function H(t){return!C(t)||0===t}function U(t){return C(t)||62===t||47===t||39===t||34===t||61===t}function W(t){return 59===t||0===t||!function(t){return t>=97&&t<=102||t>=65&&t<=70||R(t)}(t)}function K(t){return 59===t||0===t||!A(t)}function $(t,e,n){const a=!!n&&t.indexOf(n.start,e)===e;return 123===t.charCodeAt(e)&&!a}function J(t){return t>=97&&t<=122?t-97+65:t}class Z extends w{constructor(t,e,n){super(e,n),this.elementName=t}static create(t,e,n){return new Z(t,e,n)}}class Q{constructor(t,e){this.rootNodes=t,this.errors=e}}class X{constructor(t){this.getTagDefinition=t}parse(t,e,n=!1,a=N){const r=function(t,e,n,a=!1,r=N){return new Y(new x(t,e),n,a,r).tokenize()}(t,e,this.getTagDefinition,n,a),i=new tt(r.tokens,this.getTagDefinition).build();return new Q(i.rootNodes,r.errors.concat(i.errors))}}class tt{constructor(t,e){this.tokens=t,this.getTagDefinition=e,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}build(){for(;this._peek.type!==M.EOF;)this._peek.type===M.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===M.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===M.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===M.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===M.TEXT||this._peek.type===M.RAW_TEXT||this._peek.type===M.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===M.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._advance();return new Q(this._rootNodes,this._errors)}_advance(){const t=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],t}_advanceIf(t){return this._peek.type===t?this._advance():null}_consumeCdata(t){this._consumeText(this._advance()),this._advanceIf(M.CDATA_END)}_consumeComment(t){const e=this._advanceIf(M.RAW_TEXT);this._advanceIf(M.COMMENT_END);const n=null!==e?e.parts[0].trim():null;this._addToParent(new d(n,t.sourceSpan))}_consumeExpansion(t){const e=this._advance(),n=this._advance(),a=[];for(;this._peek.type===M.EXPANSION_CASE_VALUE;){const t=this._parseExpansionCase();if(!t)return;a.push(t)}if(this._peek.type!==M.EXPANSION_FORM_END)return void this._errors.push(Z.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."));const r=new _(t.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new s(e.parts[0],n.parts[0],a,r,e.sourceSpan)),this._advance()}_parseExpansionCase(){const t=this._advance();if(this._peek.type!==M.EXPANSION_CASE_EXP_START)return this._errors.push(Z.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;const e=this._advance(),n=this._collectExpansionExpTokens(e);if(!n)return null;const a=this._advance();n.push(new q(M.EOF,[],a.sourceSpan));const r=new tt(n,this.getTagDefinition).build();if(r.errors.length>0)return this._errors=this._errors.concat(r.errors),null;const i=new _(t.sourceSpan.start,a.sourceSpan.end),s=new _(e.sourceSpan.start,a.sourceSpan.end);return new u(t.parts[0],r.rootNodes,i,t.sourceSpan,s)}_collectExpansionExpTokens(t){const e=[],n=[M.EXPANSION_CASE_EXP_START];for(;;){if(this._peek.type!==M.EXPANSION_FORM_START&&this._peek.type!==M.EXPANSION_CASE_EXP_START||n.push(this._peek.type),this._peek.type===M.EXPANSION_CASE_EXP_END){if(!et(n,M.EXPANSION_CASE_EXP_START))return this._errors.push(Z.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(n.pop(),0===n.length)return e}if(this._peek.type===M.EXPANSION_FORM_END){if(!et(n,M.EXPANSION_FORM_START))return this._errors.push(Z.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;n.pop()}if(this._peek.type===M.EOF)return this._errors.push(Z.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;e.push(this._advance())}}_consumeText(t){let e=t.parts[0];if(e.length>0&&"\n"===e[0]){const t=this._getParentElement();null!==t&&0===t.children.length&&this.getTagDefinition(t.name).ignoreFirstLf&&(e=e.substring(1))}e.length>0&&this._addToParent(new i(e,t.sourceSpan))}_closeVoidElement(){const t=this._getParentElement();t&&this.getTagDefinition(t.name).isVoid&&this._elementStack.pop()}_consumeStartTag(t){const e=t.parts[0],n=t.parts[1],a=[];for(;this._peek.type===M.ATTR_NAME;)a.push(this._consumeAttr(this._advance()));const r=this._getElementFullName(e,n,this._getParentElement());let i=!1;if(this._peek.type===M.TAG_OPEN_END_VOID){this._advance(),i=!0;const e=this.getTagDefinition(r);e.canSelfClose||null!==L(r)||e.isVoid||this._errors.push(Z.create(r,t.sourceSpan,`Only void and foreign elements can be self closed "${t.parts[1]}"`))}else this._peek.type===M.TAG_OPEN_END&&(this._advance(),i=!1);const s=new _(t.sourceSpan.start,this._peek.sourceSpan.start),u=new l(r,a,[],s,s,void 0);this._pushElement(u),i&&(this._popElement(r),u.endSourceSpan=s)}_pushElement(t){const e=this._getParentElement();e&&this.getTagDefinition(e.name).isClosedByChild(t.name)&&this._elementStack.pop();const n=this.getTagDefinition(t.name),{parent:a,container:r}=this._getParentElementSkippingContainers();if(a&&n.requireExtraParent(a.name)){const e=new l(n.parentToAdd,[],[],t.sourceSpan,t.startSourceSpan,t.endSourceSpan);this._insertBeforeContainer(a,r,e)}this._addToParent(t),this._elementStack.push(t)}_consumeEndTag(t){const e=this._getElementFullName(t.parts[0],t.parts[1],this._getParentElement());this._getParentElement()&&(this._getParentElement().endSourceSpan=t.sourceSpan),this.getTagDefinition(e).isVoid?this._errors.push(Z.create(e,t.sourceSpan,`Void elements do not have end tags "${t.parts[1]}"`)):this._popElement(e)||this._errors.push(Z.create(e,t.sourceSpan,`Unexpected closing tag "${e}". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`))}_popElement(t){for(let e=this._elementStack.length-1;e>=0;e--){const n=this._elementStack[e];if(n.name===t)return this._elementStack.splice(e,this._elementStack.length-e),!0;if(!this.getTagDefinition(n.name).closedByParent)return!1}return!1}_consumeAttr(t){const e=D(t.parts[0],t.parts[1]);let n=t.sourceSpan.end,a="",r=void 0;if(this._peek.type===M.ATTR_VALUE){const t=this._advance();a=t.parts[0],n=t.sourceSpan.end,r=t.sourceSpan}return new o(e,a,new _(t.sourceSpan.start,n),r)}_getParentElement(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null}_getParentElementSkippingContainers(){let t=null;for(let e=this._elementStack.length-1;e>=0;e--){if("ng-container"!==E(this._elementStack[e].name)[1])return{parent:this._elementStack[e],container:t};t=this._elementStack[e]}return{parent:null,container:t}}_addToParent(t){const e=this._getParentElement();null!==e?e.children.push(t):this._rootNodes.push(t)}_insertBeforeContainer(t,e,n){if(e){if(t){const a=t.children.indexOf(e);t.children[a]=n}else this._rootNodes.push(n);n.children.push(e),this._elementStack.splice(this._elementStack.indexOf(e),0,n)}else this._addToParent(n),this._elementStack.push(n)}_getElementFullName(t,e,n){return null===t&&null===(t=this.getTagDefinition(e).implicitNamespacePrefix)&&null!==n&&(t=L(n.name)),D(t,e)}}function et(t,e){return t.length>0&&t[t.length-1]===e}class nt{constructor(){this.closedByParent=!1,this.contentType=k.PARSABLE_DATA,this.isVoid=!1,this.ignoreFirstLf=!1,this.canSelfClose=!0}requireExtraParent(t){return!1}isClosedByChild(t){return!1}}const at=new nt;function rt(t){return at}class it{constructor({closedByChildren:t,requiredParents:e,implicitNamespacePrefix:n,contentType:a=k.PARSABLE_DATA,closedByParent:r=!1,isVoid:i=!1,ignoreFirstLf:s=!1}={}){this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,t&&t.length>0&&t.forEach(t=>this.closedByChildren[t]=!0),this.isVoid=i,this.closedByParent=r||i,e&&e.length>0&&(this.requiredParents={},this.parentToAdd=e[0],e.forEach(t=>this.requiredParents[t]=!0)),this.implicitNamespacePrefix=n||null,this.contentType=a,this.ignoreFirstLf=s}requireExtraParent(t){if(!this.requiredParents)return!1;if(!t)return!0;const e=t.toLowerCase();return!("template"===e||"ng-template"===t)&&!0!==this.requiredParents[e]}isClosedByChild(t){return this.isVoid||t.toLowerCase()in this.closedByChildren}}const st={base:new it({isVoid:!0}),meta:new it({isVoid:!0}),area:new it({isVoid:!0}),embed:new it({isVoid:!0}),link:new it({isVoid:!0}),img:new it({isVoid:!0}),input:new it({isVoid:!0}),param:new it({isVoid:!0}),hr:new it({isVoid:!0}),br:new it({isVoid:!0}),source:new it({isVoid:!0}),track:new it({isVoid:!0}),wbr:new it({isVoid:!0}),p:new it({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new it({closedByChildren:["tbody","tfoot"]}),tbody:new it({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new it({closedByChildren:["tbody"],closedByParent:!0}),tr:new it({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new it({closedByChildren:["td","th"],closedByParent:!0}),th:new it({closedByChildren:["td","th"],closedByParent:!0}),col:new it({requiredParents:["colgroup"],isVoid:!0}),svg:new it({implicitNamespacePrefix:"svg"}),math:new it({implicitNamespacePrefix:"math"}),li:new it({closedByChildren:["li"],closedByParent:!0}),dt:new it({closedByChildren:["dt","dd"]}),dd:new it({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new it({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new it({closedByChildren:["optgroup"],closedByParent:!0}),option:new it({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new it({ignoreFirstLf:!0}),listing:new it({ignoreFirstLf:!0}),style:new it({contentType:k.RAW_TEXT}),script:new it({contentType:k.RAW_TEXT}),title:new it({contentType:k.ESCAPABLE_RAW_TEXT}),textarea:new it({contentType:k.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})},ut=new it;function ot(t){return st[t.toLowerCase()]||ut}class lt extends class{visitText(t,e){}visitContainer(t,e){t.children.forEach(t=>t.visit(this))}visitIcu(t,e){Object.keys(t.cases).forEach(e=>{t.cases[e].visit(this)})}visitTagPlaceholder(t,e){t.children.forEach(t=>t.visit(this))}visitPlaceholder(t,e){}visitIcuPlaceholder(t,e){}}{constructor(t,e){super(),this.mapName=e,this.internalToPublic={},this.publicToNextId={},this.publicToInternal={},t.nodes.forEach(t=>t.visit(this))}toPublicName(t){return this.internalToPublic.hasOwnProperty(t)?this.internalToPublic[t]:null}toInternalName(t){return this.publicToInternal.hasOwnProperty(t)?this.publicToInternal[t]:null}visitText(t,e){return null}visitTagPlaceholder(t,e){this.visitPlaceholderName(t.startName),super.visitTagPlaceholder(t,e),this.visitPlaceholderName(t.closeName)}visitPlaceholder(t,e){this.visitPlaceholderName(t.name)}visitIcuPlaceholder(t,e){this.visitPlaceholderName(t.name)}visitPlaceholderName(t){if(!t||this.internalToPublic.hasOwnProperty(t))return;let e=this.mapName(t);if(this.publicToInternal.hasOwnProperty(e)){const t=this.publicToNextId[e];this.publicToNextId[e]=t+1,e=`${e}_${t}`}else this.publicToNextId[e]=1;this.internalToPublic[t]=e,this.publicToInternal[e]=t}}const dt=new a.I18nSelectPipe;class ct{constructor(t,e){this.params=e,this.i18nPluralPipe=new a.I18nPluralPipe(new a.NgLocaleLocalization(t))}visitElement(t,e){return ot(t.name).isVoid?`<${t.name}${this.serializeNodes(t.attrs," ")}/>`:`<${t.name}${this.serializeNodes(t.attrs," ")}>${this.serializeNodes(t.children)}</${t.name}>`}visitAttribute(t,e){return`${t.name}="${t.value}"`}visitText(t,e){return t.value}visitComment(t,e){return`\x3c!--${t.value}--\x3e`}visitExpansion(t,e){const n={};switch(t.cases.forEach(t=>n[t.value]=this.serializeNodes(t.expression)),t.type){case"select":return dt.transform(this.params[t.switchValue]||"",n);case"plural":return this.i18nPluralPipe.transform(this.params[t.switchValue],n)}throw new Error(`Unknown expansion type "${t.type}"`)}visitExpansionCase(t,e){return` ${t.value} {${this.serializeNodes(t.expression)}}`}serializeNodes(t,e=""){return 0===t.length?"":e+t.map(t=>t.visit(this,null)).join(e)}}function ft(t){return t.id||function(t){const e=At(t),n=function(t,e){const n=Array(t.length+3>>>2);for(let a=0;a<n.length;a++)n[a]=It(t,4*a,e);return n}(e,xt.Big),a=8*e.length,r=new Array(80);let[i,s,u,o,l]=[1732584193,4023233417,2562383102,271733878,3285377520];n[a>>5]|=128<<24-a%32,n[15+(a+64>>9<<4)]=a;for(let d=0;d<n.length;d+=16){const[t,e,a,c,f]=[i,s,u,o,l];for(let h=0;h<80;h++){r[h]=h<16?n[d+h]:Ot(r[h-3]^r[h-8]^r[h-14]^r[h-16],1);const[t,e]=bt(h,s,u,o),a=[Ot(i,5),t,l,e,r[h]].reduce(_t);[l,o,u,s,i]=[o,u,Ot(s,30),i,a]}[i,s,u,o,l]=[_t(i,t),_t(s,e),_t(u,a),_t(o,c),_t(l,f)]}return function(t){let e="";for(let n=0;n<t.length;n++){const a=St(t,n);e+=(a>>>4).toString(16)+(15&a).toString(16)}return e.toLowerCase()}(Nt([i,s,u,o,l]))}((e=t.nodes,e.map(t=>t.visit(gt,null))).join("")+`[${t.meaning}]`);var e}class ht{visitText(t,e){return t.value}visitContainer(t,e){return`[${t.children.map(t=>t.visit(this)).join(", ")}]`}visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${t.expression}, ${t.type}, ${n.join(", ")}}`}visitTagPlaceholder(t,e){return t.isVoid?`<ph tag name="${t.startName}"/>`:`<ph tag name="${t.startName}">${t.children.map(t=>t.visit(this)).join(", ")}</ph name="${t.closeName}">`}visitPlaceholder(t,e){return t.value?`<ph name="${t.name}">${t.value}</ph>`:`<ph name="${t.name}"/>`}visitIcuPlaceholder(t,e){return`<ph icu name="${t.name}">${t.value.visit(this)}</ph>`}}const gt=new ht;class pt extends ht{visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${t.type}, ${n.join(", ")}}`}}function bt(t,e,n,a){return t<20?[e&n|~e&a,1518500249]:t<40?[e^n^a,1859775393]:t<60?[e&n|e&a|n&a,2400959708]:[e^n^a,3395469782]}function mt(t){const e=At(t);let[n,a]=[yt(e,0),yt(e,102072)];return 0!==n||0!==a&&1!==a||(n^=319790063,a^=-1801410264),[n,a]}function yt(t,e){let n,[a,r]=[2654435769,2654435769];const i=t.length;for(n=0;n+12<=i;n+=12)a=_t(a,It(t,n,xt.Little)),r=_t(r,It(t,n+4,xt.Little)),e=_t(e,It(t,n+8,xt.Little)),[a,r,e]=vt([a,r,e]);return a=_t(a,It(t,n,xt.Little)),r=_t(r,It(t,n+4,xt.Little)),e=_t(e,i),vt([a,r,e=_t(e,It(t,n+8,xt.Little)<<8)])[2]}function vt([t,e,n]){return t=wt(t,e),t=wt(t,n),t^=n>>>13,e=wt(e,n),e=wt(e,t),e^=t<<8,n=wt(n,t),n=wt(n,e),n^=e>>>13,t=wt(t,e),t=wt(t,n),t^=n>>>12,e=wt(e,n),e=wt(e,t),e^=t<<16,n=wt(n,t),n=wt(n,e),n^=e>>>5,t=wt(t,e),t=wt(t,n),t^=n>>>3,e=wt(e,n),e=wt(e,t),e^=t<<10,n=wt(n,t),n=wt(n,e),[t,e,n^=e>>>15]}const xt=function(){var t={Little:0,Big:1};return t[t.Little]="Little",t[t.Big]="Big",t}();function _t(t,e){return Tt(t,e)[1]}function Tt(t,e){const n=(65535&t)+(65535&e),a=(t>>>16)+(e>>>16)+(n>>>16);return[a>>>16,a<<16|65535&n]}function wt(t,e){const n=(65535&t)-(65535&e);return(t>>16)-(e>>16)+(n>>16)<<16|65535&n}function Ot(t,e){return t<<e|t>>>32-e}function St(t,e){return e>=t.length?0:255&t.charCodeAt(e)}function It(t,e,n){let a=0;if(n===xt.Big)for(let r=0;r<4;r++)a+=St(t,e+r)<<24-8*r;else for(let r=0;r<4;r++)a+=St(t,e+r)<<8*r;return a}function Nt(t){return t.reduce((t,e)=>t+function(t){let e="";for(let n=0;n<4;n++)e+=String.fromCharCode(t>>>8*(3-n)&255);return e}(e),"")}function Ct(t,e){let n="";const a=Math.max(t.length,e.length);for(let r=0,i=0;r<a||i;r++){const a=i+ +(t[r]||0)+ +(e[r]||0);a>=10?(i=1,n+=a-10):(i=0,n+=a)}return n}function Rt(t,e){let n="",a=e;for(;0!==t;t>>>=1)1&t&&(n=Ct(n,a)),a=Ct(a,a);return n}function At(t){let e="";for(let n=0;n<t.length;n++){let a=t.charCodeAt(n);if(a>=55296&&a<=56319&&t.length>n+1){const e=t.charCodeAt(n+1);e>=56320&&e<=57343&&(n++,a=(a-55296<<10)+e-56320+65536)}a<=127?e+=String.fromCharCode(a):a<=2047?e+=String.fromCharCode(a>>6&31|192,63&a|128):a<=65535?e+=String.fromCharCode(a>>12|224,a>>6&63|128,63&a|128):a<=2097151&&(e+=String.fromCharCode(a>>18&7|240,a>>12&63|128,a>>6&63|128,63&a|128))}return e}function kt(t){const e=new Lt,{msgIdToHtml:n,errors:a}=e.parse(t),r={},i=new Dt;if(Object.keys(n).forEach(t=>{const{i18nNodes:e,errors:s}=i.convert(n[t]);a.push(...s),r[t]=e}),a.length)throw new Error("xliff parse errors:\n"+a.join("\n"));return r}const Et=ft;class Lt{parse(t){this._unitMlString=null,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"trans-unit":this._unitMlString=null;const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;this._msgIdToHtml.hasOwnProperty(n)?this._addError(t,"Duplicated translations for msg "+n):(c(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[n]=this._unitMlString:this._addError(t,`Message ${n} misses a translation`))}else this._addError(t,'<trans-unit> misses the "id" attribute');break;case"source":break;case"target":const n=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=n;break;case"file":c(this,t.children,null);break;default:c(this,t.children,null)}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}class Dt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:c(this,e.rootNodes),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitElement(t,e){if("x"===t.name){const e=t.attrs.find(t=>"id"===t.name);if(e)return new m("",e.value,t.sourceSpan);this._addError(t,'<x> misses the "id" attribute')}else this._addError(t,"Unexpected tag");return null}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:c(this,t.expression)}}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}function Pt(t){const e=new qt,{msgIdToHtml:n,errors:a}=e.parse(t),r={},i=new jt;if(Object.keys(n).forEach(t=>{const{i18nNodes:e,errors:s}=i.convert(n[t]);a.push(...s),r[t]=e}),a.length)throw new Error("xliff2 parse errors:\n"+a.join("\n"));return r}const Mt=function(t){if(t.id)return t.id;const e=new pt;return function(t,e){let[n,a]=mt(t);if(e){const[t,r]=mt(e);[n,a]=function([t,e],[n,a]){const[r,i]=Tt(e,a);return[_t(_t(t,n),r),i]}(function([t,e],n){return[t<<n|e>>>32-n,e<<n|t>>>32-n]}([n,a],1),[t,r])}return function(t){let e="",n="1";for(let a=t.length-1;a>=0;a--)e=Ct(e,Rt(St(t,a),n)),n=Rt(256,n);return e.split("").reverse().join("")}(Nt([2147483647&n,a]))}(t.nodes.map(t=>t.visit(e,null)).join(""),t.meaning)};class qt{parse(t){this._unitMlString=null,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"unit":this._unitMlString=null;const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;this._msgIdToHtml.hasOwnProperty(n)?this._addError(t,"Duplicated translations for msg "+n):(c(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[n]=this._unitMlString:this._addError(t,`Message ${n} misses a translation`))}else this._addError(t,'<unit> misses the "id" attribute');break;case"source":break;case"target":const n=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=n;break;case"xliff":const a=t.attrs.find(t=>"version"===t.name);if(a){const e=a.value;"2.0"!==e?this._addError(t,`The XLIFF file version ${e} is not compatible with XLIFF 2.0 serializer`):c(this,t.children,null)}break;default:c(this,t.children,null)}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}class jt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:[].concat(...c(this,e.rootNodes)),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitElement(t,e){switch(t.name){case"ph":const e=t.attrs.find(t=>"equiv"===t.name);if(e)return[new m("",e.value,t.sourceSpan)];this._addError(t,'<ph> misses the "equiv" attribute');break;case"pc":const n=t.attrs.find(t=>"equivStart"===t.name),a=t.attrs.find(t=>"equivEnd"===t.name);if(n){if(a){const e=a.value;return[].concat(new m("",n.value,t.sourceSpan),...t.children.map(t=>t.visit(this,null)),new m("",e,t.sourceSpan))}this._addError(t,'<ph> misses the "equivEnd" attribute')}else this._addError(t,'<ph> misses the "equivStart" attribute');break;default:this._addError(t,"Unexpected tag")}return null}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:[].concat(...c(this,t.expression))}}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}function Ft(t){return t.toUpperCase().replace(/[^A-Z0-9_]/g,"_")}function Vt(t){const e=new zt,{msgIdToHtml:n,errors:a}=e.parse(t);if(a.length)throw new Error("xtb parse errors:\n"+a.join("\n"));const r={},i=new Yt;return Object.keys(n).forEach(t=>{var e,a;e=r,a=t,Object.defineProperty(e,a,{configurable:!0,enumerable:!0,get:()=>{const r=(()=>{const{i18nNodes:e,errors:a}=i.convert(n[t]);if(a.length)throw new Error("xtb parse errors:\n"+a.join("\n"));return e})();return Object.defineProperty(e,a,{enumerable:!0,value:r}),r},set:t=>{throw new Error("Could not overwrite an XTB translation")}})}),r}const Gt=ft,Bt=function(t){return new lt(t,Ft)};class zt{parse(t){this._bundleDepth=0,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"translationbundle":this._bundleDepth++,this._bundleDepth>1&&this._addError(t,"<translationbundle> elements can not be nested"),c(this,t.children,null),this._bundleDepth--;break;case"translation":const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;if(this._msgIdToHtml.hasOwnProperty(n))this._addError(t,"Duplicated translations for msg "+n);else{const e=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._msgIdToHtml[n]=e}}else this._addError(t,'<translation> misses the "id" attribute');break;default:this._addError(t,"Unexpected tag")}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}class Yt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:c(this,e.rootNodes),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:c(this,t.expression)}}visitElement(t,e){if("ph"===t.name){const e=t.attrs.find(t=>"name"===t.name);if(e)return new m("",e.value,t.sourceSpan);this._addError(t,'<ph> misses the "name" attribute')}else this._addError(t,"Unexpected tag");return null}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}class Ht{constructor(t,e,n,a){this.input=e,this.errLocation=n,this.ctxLocation=a,this.message=`Parser Error: ${t} ${n} [${e}] in ${a}`}}class Ut{constructor(t,e){this.start=t,this.end=e}}class Wt{constructor(t){this.span=t}visit(t,e=null){return null}toString(){return"AST"}}class Kt extends Wt{constructor(t,e,n,a){super(t),this.prefix=e,this.uninterpretedExpression=n,this.location=a}visit(t,e=null){return t.visitQuote(this,e)}toString(){return"Quote"}}class $t extends Wt{visit(t,e=null){}}class Jt extends Wt{visit(t,e=null){return t.visitImplicitReceiver(this,e)}}class Zt extends Wt{constructor(t,e){super(t),this.expressions=e}visit(t,e=null){return t.visitChain(this,e)}}class Qt extends Wt{constructor(t,e,n,a){super(t),this.condition=e,this.trueExp=n,this.falseExp=a}visit(t,e=null){return t.visitConditional(this,e)}}class Xt extends Wt{constructor(t,e,n){super(t),this.receiver=e,this.name=n}visit(t,e=null){return t.visitPropertyRead(this,e)}}class te extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.value=a}visit(t,e=null){return t.visitPropertyWrite(this,e)}}class ee extends Wt{constructor(t,e,n){super(t),this.receiver=e,this.name=n}visit(t,e=null){return t.visitSafePropertyRead(this,e)}}class ne extends Wt{constructor(t,e,n){super(t),this.obj=e,this.key=n}visit(t,e=null){return t.visitKeyedRead(this,e)}}class ae extends Wt{constructor(t,e,n,a){super(t),this.obj=e,this.key=n,this.value=a}visit(t,e=null){return t.visitKeyedWrite(this,e)}}class re extends Wt{constructor(t,e,n,a){super(t),this.exp=e,this.name=n,this.args=a}visit(t,e=null){return t.visitPipe(this,e)}}class ie extends Wt{constructor(t,e){super(t),this.value=e}visit(t,e=null){return t.visitLiteralPrimitive(this,e)}}class se extends Wt{constructor(t,e){super(t),this.expressions=e}visit(t,e=null){return t.visitLiteralArray(this,e)}}class ue extends Wt{constructor(t,e,n){super(t),this.keys=e,this.values=n}visit(t,e=null){return t.visitLiteralMap(this,e)}}class oe extends Wt{constructor(t,e,n){super(t),this.strings=e,this.expressions=n}visit(t,e=null){return t.visitInterpolation(this,e)}}class le extends Wt{constructor(t,e,n,a){super(t),this.operation=e,this.left=n,this.right=a}visit(t,e=null){return t.visitBinary(this,e)}}class de extends Wt{constructor(t,e){super(t),this.expression=e}visit(t,e=null){return t.visitPrefixNot(this,e)}}class ce extends Wt{constructor(t,e){super(t),this.expression=e}visit(t,e=null){return t.visitNonNullAssert(this,e)}}class fe extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.args=a}visit(t,e=null){return t.visitMethodCall(this,e)}}class he extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.args=a}visit(t,e=null){return t.visitSafeMethodCall(this,e)}}class ge extends Wt{constructor(t,e,n){super(t),this.target=e,this.args=n}visit(t,e=null){return t.visitFunctionCall(this,e)}}class pe extends Wt{constructor(t,e,n,a){super(new Ut(0,null==e?0:e.length)),this.ast=t,this.source=e,this.location=n,this.errors=a}visit(t,e=null){return this.ast.visit(t,e)}toString(){return`${this.source} in ${this.location}`}}class be{constructor(t,e,n,a,r){this.span=t,this.key=e,this.keyIsVar=n,this.name=a,this.expression=r}}const me=function(){var t={Character:0,Identifier:1,Keyword:2,String:3,Operator:4,Number:5,Error:6};return t[t.Character]="Character",t[t.Identifier]="Identifier",t[t.Keyword]="Keyword",t[t.String]="String",t[t.Operator]="Operator",t[t.Number]="Number",t[t.Error]="Error",t}(),ye=["var","let","as","null","undefined","true","false","if","else","this"];class ve{tokenize(t){const e=new Oe(t),n=[];let a=e.scanToken();for(;null!=a;)n.push(a),a=e.scanToken();return n}}class xe{constructor(t,e,n,a){this.index=t,this.type=e,this.numValue=n,this.strValue=a}isCharacter(t){return this.type===me.Character&&this.numValue===t}isNumber(){return this.type===me.Number}isString(){return this.type===me.String}isOperator(t){return this.type===me.Operator&&this.strValue===t}isIdentifier(){return this.type===me.Identifier}isKeyword(){return this.type===me.Keyword}isKeywordLet(){return this.type===me.Keyword&&"let"===this.strValue}isKeywordAs(){return this.type===me.Keyword&&"as"===this.strValue}isKeywordNull(){return this.type===me.Keyword&&"null"===this.strValue}isKeywordUndefined(){return this.type===me.Keyword&&"undefined"===this.strValue}isKeywordTrue(){return this.type===me.Keyword&&"true"===this.strValue}isKeywordFalse(){return this.type===me.Keyword&&"false"===this.strValue}isKeywordThis(){return this.type===me.Keyword&&"this"===this.strValue}isError(){return this.type===me.Error}toNumber(){return this.type===me.Number?this.numValue:-1}toString(){switch(this.type){case me.Character:case me.Identifier:case me.Keyword:case me.Operator:case me.String:case me.Error:return this.strValue;case me.Number:return this.numValue.toString();default:return null}}}function _e(t,e){return new xe(t,me.Character,e,String.fromCharCode(e))}function Te(t,e){return new xe(t,me.Operator,0,e)}const we=new xe(-1,me.Character,0,"");class Oe{constructor(t){this.input=t,this.peek=0,this.index=-1,this.length=t.length,this.advance()}advance(){this.peek=++this.index>=this.length?0:this.input.charCodeAt(this.index)}scanToken(){const t=this.input,e=this.length;let n=this.peek,a=this.index;for(;n<=32;){if(++a>=e){n=0;break}n=t.charCodeAt(a)}if(this.peek=n,this.index=a,a>=e)return null;if(Se(n))return this.scanIdentifier();if(R(n))return this.scanNumber(a);const r=a;switch(n){case 46:return this.advance(),R(this.peek)?this.scanNumber(r):_e(r,46);case 40:case 41:case 123:case 125:case 91:case 93:case 44:case 58:case 59:return this.scanCharacter(r,n);case 39:case 34:return this.scanString();case 35:case 43:case 45:case 42:case 47:case 37:case 94:return this.scanOperator(r,String.fromCharCode(n));case 63:return this.scanComplexOperator(r,"?",46,".");case 60:case 62:return this.scanComplexOperator(r,String.fromCharCode(n),61,"=");case 33:case 61:return this.scanComplexOperator(r,String.fromCharCode(n),61,"=",61,"=");case 38:return this.scanComplexOperator(r,"&",38,"&");case 124:return this.scanComplexOperator(r,"|",124,"|");case 160:for(;C(this.peek);)this.advance();return this.scanToken()}return this.advance(),this.error(`Unexpected character [${String.fromCharCode(n)}]`,0)}scanCharacter(t,e){return this.advance(),_e(t,e)}scanOperator(t,e){return this.advance(),Te(t,e)}scanComplexOperator(t,e,n,a,r,i){this.advance();let s=e;return this.peek===n&&(this.advance(),s+=a),null!=r&&this.peek===r&&(this.advance(),s+=i),Te(t,s)}scanIdentifier(){const t=this.index;for(this.advance();Ie(this.peek);)this.advance();const e=this.input.substring(t,this.index);return ye.indexOf(e)>-1?new xe(t,me.Keyword,0,e):function(t,e){return new xe(t,me.Identifier,0,e)}(t,e)}scanNumber(t){let e=this.index===t;for(this.advance();;){if(R(this.peek));else if(46===this.peek)e=!1;else{if(101!==(n=this.peek)&&69!==n)break;if(this.advance(),Ne(this.peek)&&this.advance(),!R(this.peek))return this.error("Invalid exponent",-1);e=!1}this.advance()}var n;const a=this.input.substring(t,this.index),r=e?function(t){const e=parseInt(t,10);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}(a):parseFloat(a);return new xe(t,me.Number,r,"")}scanString(){const t=this.index,e=this.peek;this.advance();let n="",a=this.index;const r=this.input;for(;this.peek!==e;)if(92===this.peek){let t;if(n+=r.substring(a,this.index),this.advance(),this.peek=this.peek,117===this.peek){const e=r.substring(this.index+1,this.index+5);if(!/^[0-9a-f]+$/i.test(e))return this.error(`Invalid unicode escape [\\u${e}]`,0);t=parseInt(e,16);for(let t=0;t<5;t++)this.advance()}else t=Ce(this.peek),this.advance();n+=String.fromCharCode(t),a=this.index}else{if(0===this.peek)return this.error("Unterminated quote",0);this.advance()}const i=r.substring(a,this.index);return this.advance(),new xe(t,me.String,0,n+i)}error(t,e){const n=this.index+e;return function(t,e){return new xe(t,me.Error,0,e)}(n,`Lexer Error: ${t} at column ${n} in expression [${this.input}]`)}}function Se(t){return 97<=t&&t<=122||65<=t&&t<=90||95===t||36===t}function Ie(t){return A(t)||R(t)||95===t||36===t}function Ne(t){return 45===t||43===t}function Ce(t){switch(t){case 110:return 10;case 102:return 12;case 114:return 13;case 116:return 9;case 118:return 11;default:return t}}class Re{constructor(t,e,n){this.strings=t,this.expressions=e,this.offsets=n}}class Ae{constructor(t,e,n){this.templateBindings=t,this.warnings=e,this.errors=n}}function ke(t){const e=S(t.start)+"([\\s\\S]*?)"+S(t.end);return new RegExp(e,"g")}class Ee{constructor(t){this._lexer=t,this.errors=[]}parseAction(t,e,n=N){this._checkNoInterpolation(t,e,n);const a=this._stripComments(t),r=this._lexer.tokenize(this._stripComments(t)),i=new Le(t,e,r,a.length,!0,this.errors,t.length-a.length).parseChain();return new pe(i,t,e,this.errors)}parseBinding(t,e,n=N){const a=this._parseBindingAst(t,e,n);return new pe(a,t,e,this.errors)}parseSimpleBinding(t,e,n=N){const a=this._parseBindingAst(t,e,n),r=De.check(a);return r.length>0&&this._reportError("Host binding expression cannot contain "+r.join(" "),t,e),new pe(a,t,e,this.errors)}_reportError(t,e,n,a){this.errors.push(new Ht(t,e,n,a))}_parseBindingAst(t,e,n){const a=this._parseQuote(t,e);if(null!=a)return a;this._checkNoInterpolation(t,e,n);const r=this._stripComments(t),i=this._lexer.tokenize(r);return new Le(t,e,i,r.length,!1,this.errors,t.length-r.length).parseChain()}_parseQuote(t,e){if(null===t)return null;const n=t.indexOf(":");if(-1===n)return null;const a=t.substring(0,n).trim();if(!function(t){if(0===t.length)return!1;const e=new Oe(t);if(!Se(e.peek))return!1;for(e.advance();0!==e.peek;){if(!Ie(e.peek))return!1;e.advance()}return!0}(a))return null;const r=t.substring(n+1);return new Kt(new Ut(0,t.length),a,r,e)}parseTemplateBindings(t,e,n){const a=this._lexer.tokenize(e);if(t){const e=this._lexer.tokenize(t).map(t=>(t.index=0,t));a.unshift(...e)}return new Le(e,n,a,e.length,!1,this.errors,0).parseTemplateBindings()}parseInterpolation(t,e,n=N){const a=this.splitInterpolation(t,e,n);if(null===a)return null;const r=[];for(let i=0;i<a.expressions.length;++i){const n=a.expressions[i],s=this._stripComments(n),u=this._lexer.tokenize(s),o=new Le(t,e,u,s.length,!1,this.errors,a.offsets[i]+(n.length-s.length)).parseChain();r.push(o)}return new pe(new oe(new Ut(0,null===t?0:t.length),a.strings,r),t,e,this.errors)}splitInterpolation(t,e,n=N){const a=ke(n),r=t.split(a);if(r.length<=1)return null;const i=[],s=[],u=[];let o=0;for(let l=0;l<r.length;l++){const a=r[l];l%2==0?(i.push(a),o+=a.length):a.trim().length>0?(o+=n.start.length,s.push(a),u.push(o),o+=a.length+n.end.length):(this._reportError("Blank expressions are not allowed in interpolated strings",t,`at column ${this._findInterpolationErrorColumn(r,l,n)} in`,e),s.push("$implict"),u.push(o))}return new Re(i,s,u)}wrapLiteralPrimitive(t,e){return new pe(new ie(new Ut(0,null===t?0:t.length),t),t,e,this.errors)}_stripComments(t){const e=this._commentStart(t);return null!=e?t.substring(0,e).trim():t}_commentStart(t){let e=null;for(let a=0;a<t.length-1;a++){const r=t.charCodeAt(a),i=t.charCodeAt(a+1);if(47===r&&47===i&&null===e)return a;e===r?e=null:null===e&&(39===(n=r)||34===n||96===n)&&(e=r)}var n;return null}_checkNoInterpolation(t,e,n){const a=ke(n),r=t.split(a);r.length>1&&this._reportError(`Got interpolation (${n.start}${n.end}) where expression was expected`,t,`at column ${this._findInterpolationErrorColumn(r,1,n)} in`,e)}_findInterpolationErrorColumn(t,e,n){let a="";for(let r=0;r<e;r++)a+=r%2==0?t[r]:`${n.start}${t[r]}${n.end}`;return a.length}}class Le{constructor(t,e,n,a,r,i,s){this.input=t,this.location=e,this.tokens=n,this.inputLength=a,this.parseAction=r,this.errors=i,this.offset=s,this.rparensExpected=0,this.rbracketsExpected=0,this.rbracesExpected=0,this.index=0}peek(t){const e=this.index+t;return e<this.tokens.length?this.tokens[e]:we}get next(){return this.peek(0)}get inputIndex(){return this.index<this.tokens.length?this.next.index+this.offset:this.inputLength+this.offset}span(t){return new Ut(t,this.inputIndex)}advance(){this.index++}optionalCharacter(t){return!!this.next.isCharacter(t)&&(this.advance(),!0)}peekKeywordLet(){return this.next.isKeywordLet()}peekKeywordAs(){return this.next.isKeywordAs()}expectCharacter(t){this.optionalCharacter(t)||this.error("Missing expected "+String.fromCharCode(t))}optionalOperator(t){return!!this.next.isOperator(t)&&(this.advance(),!0)}expectOperator(t){this.optionalOperator(t)||this.error("Missing expected operator "+t)}expectIdentifierOrKeyword(){const t=this.next;return t.isIdentifier()||t.isKeyword()?(this.advance(),t.toString()):(this.error(`Unexpected token ${t}, expected identifier or keyword`),"")}expectIdentifierOrKeywordOrString(){const t=this.next;return t.isIdentifier()||t.isKeyword()||t.isString()?(this.advance(),t.toString()):(this.error(`Unexpected token ${t}, expected identifier, keyword, or string`),"")}parseChain(){const t=[],e=this.inputIndex;for(;this.index<this.tokens.length;){const e=this.parsePipe();if(t.push(e),this.optionalCharacter(59))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(59););else this.index<this.tokens.length&&this.error(`Unexpected token '${this.next}'`)}return 0===t.length?new $t(this.span(e)):1===t.length?t[0]:new Zt(this.span(e),t)}parsePipe(){let t=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{const e=this.expectIdentifierOrKeyword(),n=[];for(;this.optionalCharacter(58);)n.push(this.parseExpression());t=new re(this.span(t.span.start),t,e,n)}while(this.optionalOperator("|"))}return t}parseExpression(){return this.parseConditional()}parseConditional(){const t=this.inputIndex,e=this.parseLogicalOr();if(this.optionalOperator("?")){const n=this.parsePipe();let a;if(this.optionalCharacter(58))a=this.parsePipe();else{const e=this.input.substring(t,this.inputIndex);this.error(`Conditional expression ${e} requires all 3 expressions`),a=new $t(this.span(t))}return new Qt(this.span(t),e,n,a)}return e}parseLogicalOr(){let t=this.parseLogicalAnd();for(;this.optionalOperator("||");){const e=this.parseLogicalAnd();t=new le(this.span(t.span.start),"||",t,e)}return t}parseLogicalAnd(){let t=this.parseEquality();for(;this.optionalOperator("&&");){const e=this.parseEquality();t=new le(this.span(t.span.start),"&&",t,e)}return t}parseEquality(){let t=this.parseRelational();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"==":case"===":case"!=":case"!==":this.advance();const n=this.parseRelational();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseRelational(){let t=this.parseAdditive();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"<":case">":case"<=":case">=":this.advance();const n=this.parseAdditive();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseAdditive(){let t=this.parseMultiplicative();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"+":case"-":this.advance();const n=this.parseMultiplicative();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseMultiplicative(){let t=this.parsePrefix();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"*":case"%":case"/":this.advance();const n=this.parsePrefix();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parsePrefix(){if(this.next.type===me.Operator){const t=this.inputIndex,e=this.next.strValue;let n;switch(e){case"+":return this.advance(),this.parsePrefix();case"-":return this.advance(),n=this.parsePrefix(),new le(this.span(t),e,new ie(new Ut(t,t),0),n);case"!":return this.advance(),n=this.parsePrefix(),new de(this.span(t),n)}}return this.parseCallChain()}parseCallChain(){let t=this.parsePrimary();for(;;)if(this.optionalCharacter(46))t=this.parseAccessMemberOrMethodCall(t,!1);else if(this.optionalOperator("?."))t=this.parseAccessMemberOrMethodCall(t,!0);else if(this.optionalCharacter(91)){this.rbracketsExpected++;const e=this.parsePipe();if(this.rbracketsExpected--,this.expectCharacter(93),this.optionalOperator("=")){const n=this.parseConditional();t=new ae(this.span(t.span.start),t,e,n)}else t=new ne(this.span(t.span.start),t,e)}else if(this.optionalCharacter(40)){this.rparensExpected++;const e=this.parseCallArguments();this.rparensExpected--,this.expectCharacter(41),t=new ge(this.span(t.span.start),t,e)}else{if(!this.optionalOperator("!"))return t;t=new ce(this.span(t.span.start),t)}}parsePrimary(){const t=this.inputIndex;if(this.optionalCharacter(40)){this.rparensExpected++;const t=this.parsePipe();return this.rparensExpected--,this.expectCharacter(41),t}if(this.next.isKeywordNull())return this.advance(),new ie(this.span(t),null);if(this.next.isKeywordUndefined())return this.advance(),new ie(this.span(t),void 0);if(this.next.isKeywordTrue())return this.advance(),new ie(this.span(t),!0);if(this.next.isKeywordFalse())return this.advance(),new ie(this.span(t),!1);if(this.next.isKeywordThis())return this.advance(),new Jt(this.span(t));if(this.optionalCharacter(91)){this.rbracketsExpected++;const e=this.parseExpressionList(93);return this.rbracketsExpected--,this.expectCharacter(93),new se(this.span(t),e)}if(this.next.isCharacter(123))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(new Jt(this.span(t)),!1);if(this.next.isNumber()){const e=this.next.toNumber();return this.advance(),new ie(this.span(t),e)}if(this.next.isString()){const e=this.next.toString();return this.advance(),new ie(this.span(t),e)}return this.index>=this.tokens.length?(this.error("Unexpected end of expression: "+this.input),new $t(this.span(t))):(this.error("Unexpected token "+this.next),new $t(this.span(t)))}parseExpressionList(t){const e=[];if(!this.next.isCharacter(t))do{e.push(this.parsePipe())}while(this.optionalCharacter(44));return e}parseLiteralMap(){const t=[],e=[],n=this.inputIndex;if(this.expectCharacter(123),!this.optionalCharacter(125)){this.rbracesExpected++;do{const n=this.next.isString(),a=this.expectIdentifierOrKeywordOrString();t.push({key:a,quoted:n}),this.expectCharacter(58),e.push(this.parsePipe())}while(this.optionalCharacter(44));this.rbracesExpected--,this.expectCharacter(125)}return new ue(this.span(n),t,e)}parseAccessMemberOrMethodCall(t,e=!1){const n=t.span.start,a=this.expectIdentifierOrKeyword();if(this.optionalCharacter(40)){this.rparensExpected++;const r=this.parseCallArguments();this.expectCharacter(41),this.rparensExpected--;const i=this.span(n);return e?new he(i,t,a,r):new fe(i,t,a,r)}if(e)return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),new $t(this.span(n))):new ee(this.span(n),t,a);if(this.optionalOperator("=")){if(!this.parseAction)return this.error("Bindings cannot contain assignments"),new $t(this.span(n));const e=this.parseConditional();return new te(this.span(n),t,a,e)}return new Xt(this.span(n),t,a)}parseCallArguments(){if(this.next.isCharacter(41))return[];const t=[];do{t.push(this.parsePipe())}while(this.optionalCharacter(44));return t}expectTemplateBindingKey(){let t="",e=!1;do{t+=this.expectIdentifierOrKeywordOrString(),e=this.optionalOperator("-"),e&&(t+="-")}while(e);return t.toString()}parseTemplateBindings(){const t=[];let e=null;for(;this.index<this.tokens.length;){const n=this.inputIndex;let a=this.peekKeywordLet();a&&this.advance();const r=this.expectTemplateBindingKey();let i=r;a||(null===e?e=i:i=e+i[0].toUpperCase()+i.substring(1)),this.optionalCharacter(58);let s=null,u=null;if(a)s=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.peekKeywordAs())this.advance(),s=r,i=this.expectTemplateBindingKey(),a=!0;else if(this.next!==we&&!this.peekKeywordLet()){const t=this.inputIndex,e=this.parsePipe(),n=this.input.substring(t-this.offset,this.inputIndex-this.offset);u=new pe(e,n,this.location,this.errors)}if(t.push(new be(this.span(n),i,a,s,u)),this.peekKeywordAs()&&!a){const e=this.inputIndex;this.advance();const n=this.expectTemplateBindingKey();t.push(new be(this.span(e),n,!0,i,null))}this.optionalCharacter(59)||this.optionalCharacter(44)}return new Ae(t,[],this.errors)}error(t,e=null){this.errors.push(new Ht(t,this.input,this.locationText(e),this.location)),this.skip()}locationText(t=null){return null===t&&(t=this.index),t<this.tokens.length?`at column ${this.tokens[t].index+1} in`:"at the end of the expression"}skip(){let t=this.next;for(;this.index<this.tokens.length&&!t.isCharacter(59)&&(this.rparensExpected<=0||!t.isCharacter(41))&&(this.rbracesExpected<=0||!t.isCharacter(125))&&(this.rbracketsExpected<=0||!t.isCharacter(93));)this.next.isError()&&this.errors.push(new Ht(this.next.toString(),this.input,this.locationText(),this.location)),this.advance(),t=this.next}}class De{constructor(){this.errors=[]}static check(t){const e=new De;return t.visit(e),e.errors}visitImplicitReceiver(t,e){}visitInterpolation(t,e){}visitLiteralPrimitive(t,e){}visitPropertyRead(t,e){}visitPropertyWrite(t,e){}visitSafePropertyRead(t,e){}visitMethodCall(t,e){}visitSafeMethodCall(t,e){}visitFunctionCall(t,e){}visitLiteralArray(t,e){this.visitAll(t.expressions)}visitLiteralMap(t,e){this.visitAll(t.values)}visitBinary(t,e){}visitPrefixNot(t,e){}visitNonNullAssert(t,e){}visitConditional(t,e){}visitPipe(t,e){this.errors.push("pipes")}visitKeyedRead(t,e){}visitKeyedWrite(t,e){}visitAll(t){return t.map(t=>t.visit(this))}visitChain(t,e){}visitQuote(t,e){}}const Pe={A:"LINK",B:"BOLD_TEXT",BR:"LINE_BREAK",EM:"EMPHASISED_TEXT",H1:"HEADING_LEVEL1",H2:"HEADING_LEVEL2",H3:"HEADING_LEVEL3",H4:"HEADING_LEVEL4",H5:"HEADING_LEVEL5",H6:"HEADING_LEVEL6",HR:"HORIZONTAL_RULE",I:"ITALIC_TEXT",LI:"LIST_ITEM",LINK:"MEDIA_LINK",OL:"ORDERED_LIST",P:"PARAGRAPH",Q:"QUOTATION",S:"STRIKETHROUGH_TEXT",SMALL:"SMALL_TEXT",SUB:"SUBSTRIPT",SUP:"SUPERSCRIPT",TBODY:"TABLE_BODY",TD:"TABLE_CELL",TFOOT:"TABLE_FOOTER",TH:"TABLE_HEADER_CELL",THEAD:"TABLE_HEADER",TR:"TABLE_ROW",TT:"MONOSPACED_TEXT",U:"UNDERLINED_TEXT",UL:"UNORDERED_LIST"};class Me{constructor(){this._placeHolderNameCounts={},this._signatureToName={}}getStartTagPlaceholderName(t,e,n){const a=this._hashTag(t,e,n);if(this._signatureToName[a])return this._signatureToName[a];const r=t.toUpperCase(),i=Pe[r]||"TAG_"+r,s=this._generateUniqueName(n?i:"START_"+i);return this._signatureToName[a]=s,s}getCloseTagPlaceholderName(t){const e=this._hashClosingTag(t);if(this._signatureToName[e])return this._signatureToName[e];const n=t.toUpperCase(),a=this._generateUniqueName("CLOSE_"+(Pe[n]||"TAG_"+n));return this._signatureToName[e]=a,a}getPlaceholderName(t,e){const n=t.toUpperCase(),a=`PH: ${n}=${e}`;if(this._signatureToName[a])return this._signatureToName[a];const r=this._generateUniqueName(n);return this._signatureToName[a]=r,r}getUniquePlaceholder(t){return this._generateUniqueName(t.toUpperCase())}_hashTag(t,e,n){return"<"+t+Object.keys(e).sort().map(t=>` ${t}=${e[t]}`).join("")+(n?"/>":`></${t}>`)}_hashClosingTag(t){return this._hashTag("/"+t,{},!1)}_generateUniqueName(t){if(!this._placeHolderNameCounts.hasOwnProperty(t))return this._placeHolderNameCounts[t]=1,t;const e=this._placeHolderNameCounts[t];return this._placeHolderNameCounts[t]=e+1,`${t}_${e}`}}const qe=new Ee(new ve);class je{constructor(t,e){this._expressionParser=t,this._interpolationConfig=e}toI18nMessage(t,e,n,a){this._isIcu=1===t.length&&t[0]instanceof s,this._icuDepth=0,this._placeholderRegistry=new Me,this._placeholderToContent={},this._placeholderToMessage={};const r=c(this,t,{});return new f(r,this._placeholderToContent,this._placeholderToMessage,e,n,a)}visitElement(t,e){const n=c(this,t.children),a={};t.attrs.forEach(t=>{a[t.name]=t.value});const r=ot(t.name).isVoid,i=this._placeholderRegistry.getStartTagPlaceholderName(t.name,a,r);this._placeholderToContent[i]=t.sourceSpan?t.sourceSpan.toString():"";let s="";return r||(s=this._placeholderRegistry.getCloseTagPlaceholderName(t.name),this._placeholderToContent[s]=`</${t.name}>`),new b(t.name,a,i,s,n,r,t.sourceSpan)}visitAttribute(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)}visitText(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)}visitComment(t,e){return null}visitExpansion(t,e){this._icuDepth++;const n={},a=new p(t.switchValue,t.type,n,t.sourceSpan);if(t.cases.forEach(t=>{n[t.value]=new g(t.expression.map(t=>t.visit(this,{})),t.expSourceSpan)}),this._icuDepth--,this._isIcu||this._icuDepth>0){const e=this._placeholderRegistry.getUniquePlaceholder("VAR_"+t.type);return a.expressionPlaceholder=e,this._placeholderToContent[e]=t.switchValue,a}const r=this._placeholderRegistry.getPlaceholderName("ICU",t.sourceSpan.toString()),i=new je(this._expressionParser,this._interpolationConfig);return this._placeholderToMessage[r]=i.toI18nMessage([t],"","",""),new y(a,r,t.sourceSpan)}visitExpansionCase(t,e){throw new Error("Unreachable code")}_visitTextWithInterpolation(t,e){const n=this._expressionParser.splitInterpolation(t,e.start.toString(),this._interpolationConfig);if(!n)return new h(t,e);const a=[],r=new g(a,e),{start:i,end:s}=this._interpolationConfig;for(let o=0;o<n.strings.length-1;o++){const t=n.expressions[o],r=t.split(Fe)[2]||"INTERPOLATION",u=this._placeholderRegistry.getPlaceholderName(r,t);n.strings[o].length&&a.push(new h(n.strings[o],e)),a.push(new m(t,u,e)),this._placeholderToContent[u]=i+t+s}const u=n.strings.length-1;return n.strings[u].length&&a.push(new h(n.strings[u],e)),r}}const Fe=/\/\/[\s\S]*i18n[\s\S]*\([\s\S]*ph[\s\S]*=[\s\S]*("|')([\s\S]*?)\1[\s\S]*\)/g;class Ve extends X{constructor(t=N){super(ot),this.interpolationConfig=t}parse(t,e,n=!1){return super.parse(t,e,n,this.interpolationConfig)}extractMessages(t){const e=new He(["wrapper"]),n=new l("wrapper",[],t,void 0,void 0,void 0);return e.extract(n,this.interpolationConfig)}mergeTranslations(t,e,n,a,r=[]){const i=new He(r),s=new l("wrapper",[],t,void 0,void 0,void 0);return i.merge(s,e,this.interpolationConfig,n,a)}}class Ge{constructor(t,e){this.messages=t,this.errors=e}}class Be{constructor(t={},e,n,a,r,i){this.i18nNodesByMsgId=t,this.digest=e,this.mapperFactory=r,this.i18nToHtml=new ze(t,e,r,a,n,i)}static load(t,e,n,a,r,i,s=N){const u=r(t,e);return new Be(u,t=>n(t),s,i,t=>a(t),console)}get(t,e){const n=this.i18nToHtml.convert(t,e);if(n.errors.length)throw new Error(n.errors.join("\n"));return n.nodes}has(t){return this.digest(t)in this.i18nNodesByMsgId}}class ze{constructor(t={},e,n,a,r,i){this._i18nNodesByMsgId=t,this._digest=e,this._mapperFactory=n,this._missingTranslationStrategy=a,this._interpolationConfig=r,this._console=i,this._contextStack=[],this._errors=[]}convert(t,e){this._contextStack.length=0,this._errors.length=0,this._params=e,this._paramKeys=Object.keys(e);const n=this.convertToText(t),a=t.nodes[0].sourceSpan.start.file.url,r=(new Ve).parse(n,a,!0);return{nodes:r.rootNodes,errors:[...this._errors,...r.errors]}}visitText(t,e){return t.value}visitContainer(t,e){return t.children.map(t=>t.visit(this)).join("")}visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${this._srcMsg.placeholders.hasOwnProperty(t.expression)?this._srcMsg.placeholders[t.expression]:t.expression}, ${t.type}, ${n.join(" ")}}`}visitPlaceholder(t,e){const n=this._mapper(t.name);return this._srcMsg.placeholders.hasOwnProperty(n)?this.convertToValue(this._srcMsg.placeholders[n]):this._srcMsg.placeholderToMessage.hasOwnProperty(n)?this.convertToText(this._srcMsg.placeholderToMessage[n]):(this._addError(t,`Unknown placeholder "${t.name}"`),"")}visitTagPlaceholder(t,e){const n=""+t.tag,a=Object.keys(t.attrs).map(e=>`${e}="${t.attrs[e]}"`).join(" ");return t.isVoid?`<${n} ${a}/>`:`<${n} ${a}>${t.children.map(t=>t.visit(this)).join("")}</${n}>`}visitIcuPlaceholder(t,e){return this.convertToText(this._srcMsg.placeholderToMessage[t.name])}convertToText(t){const e=this._digest(t),n=this._mapperFactory?this._mapperFactory(t):null;let a;this._contextStack.push({msg:this._srcMsg,mapper:this._mapper}),this._srcMsg=t,this._i18nNodesByMsgId.hasOwnProperty(e)?(a=this._i18nNodesByMsgId[e],this._mapper=t=>n?n.toInternalName(t):t):(this._missingTranslationStrategy===r.MissingTranslationStrategy.Error?this._addError(t.nodes[0],`Missing translation for message "${e}"`):this._console&&this._missingTranslationStrategy===r.MissingTranslationStrategy.Warning&&this._console.warn(`Missing translation for message "${e}"`),a=t.nodes,this._mapper=t=>t);const i=a.map(t=>t.visit(this)).join(""),s=this._contextStack.pop();return this._srcMsg=s.msg,this._mapper=s.mapper,i}convertToValue(t){const e=t.replace(this._interpolationConfig.start,"").replace(this._interpolationConfig.end,"");return-1!==this._paramKeys.indexOf(e)?this._params[e]:t}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}const Ye=function(){var t={Extract:0,Merge:1};return t[t.Extract]="Extract",t[t.Merge]="Merge",t}();class He{constructor(t=[]){this._implicitTags=t,this.blockChildren=[]}extract(t,e){return this.init(Ye.Extract,e),t.visit(this,null),this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Ge(this.messages,this.errors)}merge(t,e,n,a,r={}){this.init(Ye.Merge,n,a),this.translations=e,this.metadata=r;const i=t.visit(this,null);return this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Q(i.children,this.errors)}visitExpansionCase(t,e){const n=c(this,t.expression,e);if(this.mode===Ye.Merge)return new u(t.value,n,t.sourceSpan,t.valueSourceSpan,t.expSourceSpan)}visitExpansion(t,e){this.mayBeAddBlockChildren(t);const n=this.inIcu;this.inIcu||(this.isInTranslatableSection&&this.addMessage([t]),this.inIcu=!0);const a=c(this,t.cases,e);return this.mode===Ye.Merge&&(t=new s(t.switchValue,t.type,a,t.sourceSpan,t.switchValueSourceSpan)),this.inIcu=n,t}visitComment(t,e){}visitText(t,e){return this.isInTranslatableSection&&this.mayBeAddBlockChildren(t),t}visitElement(t,e){this.mayBeAddBlockChildren(t),this.depth++;const n=this.inI18nNode,a=this.inImplicitNode;let r=[],i=void 0;const s=t.attrs.find(t=>"i18n"===t.name)||null,u=this._implicitTags.some(e=>t.name===e)&&!this.inIcu&&!this.isInTranslatableSection,o=!a&&u;if(this.inImplicitNode=a||u,this.isInTranslatableSection||this.inIcu)(s||o)&&this._reportError(t,"Could not mark an element as translatable inside a translatable section"),this.mode===Ye.Extract&&c(this,t.children);else{if(s||o){this.inI18nNode=!0;const e=this.addMessage(t.children,this.metadata);i=this.translateMessage(t,e)}if(this.mode===Ye.Extract){const e=s||o;e&&this.openTranslatableSection(t),c(this,t.children),e&&this._closeTranslatableSection(t,t.children)}}return this.mode===Ye.Merge&&(i||t.children).forEach(t=>{const n=t.visit(this,e);n&&!this.isInTranslatableSection&&(r=r.concat(n))}),this.depth--,this.inI18nNode=n,this.inImplicitNode=a,this.mode===Ye.Merge?new l(t.name,[],r,t.sourceSpan,t.startSourceSpan,t.endSourceSpan):null}visitAttribute(t,e){throw new Error("unreachable code")}init(t,e,n={}){this.mode=t,this.inI18nBlock=!1,this.inI18nNode=!1,this.depth=0,this.inIcu=!1,this.msgCountAtSectionStart=void 0,this.errors=[],this.messages=[],this.inImplicitNode=!1,this.createI18nMessage=function(t){const e=new je(qe,t);return(t,n,a,r)=>e.toI18nMessage(t,n,a,r)}(e),this.params=n}addMessage(t,{meaning:e="",description:n="",id:a=""}={}){if(0===t.length||1===t.length&&t[0]instanceof o&&!t[0].value)return null;const r=this.createI18nMessage(t,e,n,a);return this.messages.push(r),r}translateMessage(t,e){if(e&&this.mode===Ye.Merge){const n=this.translations.get(e,this.params);if(n)return n;this._reportError(t,`Translation unavailable for message id="${this.translations.digest(e)}"`)}return[]}mayBeAddBlockChildren(t){this.inI18nBlock&&!this.inIcu&&this.depth===this.blockStartDepth&&this.blockChildren.push(t)}openTranslatableSection(t){this.isInTranslatableSection?this._reportError(t,"Unexpected section start"):this.msgCountAtSectionStart=this.messages.length}get isInTranslatableSection(){return void 0!==this.msgCountAtSectionStart}_closeTranslatableSection(t,e){if(!this.isInTranslatableSection)return void this._reportError(t,"Unexpected section end");const n=this.msgCountAtSectionStart;if(1===e.reduce((t,e)=>t+(e instanceof d?0:1),0))for(let a=this.messages.length-1;a>=n;a--){const t=this.messages[a].nodes;if(!(1===t.length&&t[0]instanceof h)){this.messages.splice(a,1);break}}this.msgCountAtSectionStart=void 0}_reportError(t,e){this.errors.push(new O(t.sourceSpan,e))}}const Ue=new r.InjectionToken("MissingTranslationStrategy");class We{constructor(t,e,n,a=r.MissingTranslationStrategy.Warning){let i,s,u=t=>null;switch(t=(t||"xlf").toLowerCase()){case"xtb":i=Vt,s=Gt,u=Bt;break;case"xliff2":case"xlf2":i=Pt,s=Mt;break;case"xliff":case"xlf":i=kt,s=Et;break;default:throw new Error("Unknown translations format "+t)}const o=new Ve,l=Be.load(e,"i18n",s,u,i,a);return(t,e={})=>{const a="string"==typeof t?t:t.value,r={};"object"==typeof t&&(r.id=t.id,r.meaning=t.meaning,r.description=t.description);const i=o.parse(a,"",!0);if(i.errors.length)throw i.errors;return function(t,e,n){return t.map(t=>t.visit(new ct(e,n),null))}(o.mergeTranslations(i.rootNodes,l,e,r,["wrapper"]).rootNodes,n,e).join("")}}}},GyhO:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LRne"),r=n("0EUg");function i(...t){return Object(r.a)()(Object(a.a)(...t))}},"H+zY":function(t,e,n){var a=n("5EpR");t.exports=function(t){var e=a(t),n=e%1;return e==e?n?e-n:e:0}},H8ED:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"хвіліна":"хвіліну":"h"===n?e?"гадзіна":"гадзіну":t+" "+(a=+t,r={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:e?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}t.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:e,mm:e,h:e,hh:e,d:"дзень",dd:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(t){return/^(дня|вечара)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночы":t<12?"раніцы":t<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t%10!=2&&t%10!=3||t%100==12||t%100==13?t+"-ы":t+"-і";case"D":return t+"-га";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},HDdC:function(t,e,n){"use strict";var a=n("7o/Q"),r=n("2QA8"),i=n("gRHU"),s=n("kJWO"),u=n("mCNh"),o=n("2fFW");n.d(e,"a",(function(){return l}));let l=(()=>{class t{constructor(t){this._isScalar=!1,t&&(this._subscribe=t)}lift(e){const n=new t;return n.source=this,n.operator=e,n}subscribe(t,e,n){const{operator:s}=this,u=function(t,e,n){if(t){if(t instanceof a.a)return t;if(t[r.a])return t[r.a]()}return t||e||n?new a.a(t,e,n):new a.a(i.a)}(t,e,n);if(u.add(s?s.call(u,this.source):this.source||o.a.useDeprecatedSynchronousErrorHandling&&!u.syncErrorThrowable?this._subscribe(u):this._trySubscribe(u)),o.a.useDeprecatedSynchronousErrorHandling&&u.syncErrorThrowable&&(u.syncErrorThrowable=!1,u.syncErrorThrown))throw u.syncErrorValue;return u}_trySubscribe(t){try{return this._subscribe(t)}catch(e){o.a.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),function(t){for(;t;){const{closed:e,destination:n,isStopped:r}=t;if(e||r)return!1;t=n&&n instanceof a.a?n:null}return!0}(t)?t.error(e):console.warn(e)}}forEach(t,e){return new(e=d(e))((e,n)=>{let a;a=this.subscribe(e=>{try{t(e)}catch(r){n(r),a&&a.unsubscribe()}},n,e)})}_subscribe(t){const{source:e}=this;return e&&e.subscribe(t)}[s.a](){return this}pipe(...t){return 0===t.length?this:Object(u.b)(t)(this)}toPromise(t){return new(t=d(t))((t,e)=>{let n;this.subscribe(t=>n=t,t=>e(t),()=>t(n))})}}return t.create=e=>new t(e),t})();function d(t){if(t||(t=o.a.Promise||Promise),!t)throw new Error("no Promise impl found");return t}},HH4o:function(t,e,n){var a=n("tiKp")("iterator"),r=!1;try{var i=0,s={next:function(){return{done:!!i++}},return:function(){r=!0}};s[a]=function(){return this},Array.from(s,(function(){throw 2}))}catch(u){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i={};i[a]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(u){}return n}},HIU9:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("dApe"),i=n("X+05"),s=n("2316"),u=n.n(s),o=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},l=function(){function t(t,e,n){var a=this;this.elementRef=t,this.ngZone=e,this.virtualScroll=n,this.setViewport=u()((function(){a.virtualScroll.setViewport(a.elementRef.nativeElement)}),17),this.scrollEventHandler=this.setViewport.bind(this)}return t.prototype.ngOnInit=function(){this.virtualScroll.init()},t.prototype.ngAfterViewInit=function(){var t=this;setTimeout((function(){t.setViewport(),t.virtualScroll.fireEvent({eventName:i.a.initialized})}));var e=this.elementRef.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("scroll",t.scrollEventHandler)}))},t.prototype.ngOnDestroy=function(){this.virtualScroll.clear(),this.elementRef.nativeElement.removeEventListener("scroll",this.scrollEventHandler)},t.prototype.getTotalHeight=function(){return this.virtualScroll.isEnabled()&&this.virtualScroll.totalHeight+"px"||"auto"},function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.Component)({selector:"tree-viewport",styles:[],providers:[r.a],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div [style.height]="getTotalHeight()">\n        <ng-content></ng-content>\n      </div>\n    </ng-container>\n  '}),o("design:paramtypes",[a.ElementRef,a.NgZone,r.a])],t)}()},HP3h:function(t,e,n){!function(t){"use strict";var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},a={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(t){return function(e,r,i,s){var u=n(e),o=a[t][n(e)];return 2===u&&(o=o[r?0:1]),o.replace(/%d/i,e)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];t.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},HYAF:function(t,e,n){var a=n("2oRo").TypeError;t.exports=function(t){if(null==t)throw a("Can't call method on "+t);return t}},Hd5f:function(t,e,n){var a=n("0Dky"),r=n("tiKp"),i=n("LQDL"),s=r("species");t.exports=function(t){return i>=51||!a((function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},HjS5:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="zh-TW">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>切換導覽</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>儀表板</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>叢集</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>主機</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>監控程式</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>服務</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>組態</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH 地圖</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>管理員模組</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>記錄</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>池</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>區塊</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>影像</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>鏡像</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>檔案系統</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>物件閘道</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>精靈</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>刪除通知</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>沒有通知。</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>任務與通知</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>選取語言</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>正在載入面板資料...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana 時間選擇器</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>重設設定</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>刷新</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>返回</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>無法載入資料。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>選取的數目</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>找到的數目</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>總計</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名稱</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>描述</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>詳細描述</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>預設值</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>精靈預設值</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>儲存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH 地圖檢視器</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>正在載入...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>主機名稱</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>此欄位為必填欄位。</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>是的,我確定。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>取消</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>關閉</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>主機清單</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>整體效能</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>找不到項目</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>叢集記錄</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>稽核記錄</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>正在載入組態...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>無法載入組態。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>編輯管理員模組</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>輸入的值不是有效的 UUID,例如 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>輸入的值必須是有效的  IP 位址。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>輸入的值必須為數字。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>輸入的值必須為數字或小數。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>叢集 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap 修改時間</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap 版本編號</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>仲裁成員</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非仲裁成員</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>新增</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>功能</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>叢集範圍的 OSD 旗標</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>提交</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>進階...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 復原優先程度</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>優先程度</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>自訂優先程度值</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>此欄位為必填欄位!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>該值必須介於 0 至 1 之間。</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>重新設定權數</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深層} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深層} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 清單</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>編輯</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>刪除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>統計資料</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>用戶端</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任何用戶端均可存取</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>位址</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必填欄位</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>必須包含一或多個逗號分隔值</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例如︰</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>存取類型</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>新增用戶端</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 沒有可用的叢集 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 選取叢集 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>新增精靈</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>儲存後端</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 沒有可用的資料池 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 選取儲存後端 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>物件閘道使用者</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 沒有可用的使用者 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 選取物件閘道使用者 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 使用者 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 沒有可用的用戶端 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- 選取 cephx 用戶端 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 名稱</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>安全標籤</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>啟用安全標籤</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 路徑</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>路徑必須以「/」開頭,後面可接單詞</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>將建立新目錄</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>路徑</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>路徑只能以單一「/」或單詞開頭</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>將建立新桶</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 通訊協定</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 標記</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>用戶端不能掛接子目錄 (即如果標記為 foo,則用戶端無法掛接 foo/baz)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>透過使用不同標記選項,可將同一路徑輸出多次。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>虛擬</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>透過使用不同虛擬選項,可將同一路徑輸出多次。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 沒有可用的存取類型 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 選取存取類型 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 沒有可用的 squash --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 選取執行哪種類型的使用者 ID 匿名存取 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>傳輸通訊協定</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>歡迎使用 Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>需要指定使用者名稱</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>需要指定密碼</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>登入</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>抱歉,該使用者不存在於 Ceph 中。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>已禁止</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>抱歉,您無權查看您要尋找的內容。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 組態</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>移除本地組態值。將繼承並使用父組態值。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小值為 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>池清單</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名稱只能由英數字元、破折號和底線組成。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>所選的糾刪碼設定檔名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>外掛程式</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>資料區塊 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>必須大於或等於 2。</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>編碼區塊 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>必須大於或等於 1。</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>持久性估值 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>本地性 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH 故障網域</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH 本地性</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>技術</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>封包大小</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH 根</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH 裝置類別</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任何</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>目錄</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名稱...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>所選的 Ceph 池名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>池類型</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 選取池類型 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>放置群組</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>至少需要一個放置群組!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>您的叢集無法處理這麼多的 PG。請重新計算所需的 PG 數量。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>計算說明</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>複製大小</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>旗標</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 覆寫</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>應用程式</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 沒有可用的糾刪碼設定檔 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 選取糾刪碼設定檔 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH 規則集</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 選取 CRUSH 規則 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH 規則</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH 步驟</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>壓縮</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>模式</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>演算法</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 沒有可用的糾刪壓縮演算法 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Blob 最小大小</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>例如 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>值應大於 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Blob 最大大小</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>例如 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>值應大於 blob 最小大小</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>比率</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>壓縮率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>值應介於 0.0 至 1.0 之間</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>例如 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>詳細資料</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>效能詳細資料</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>快取層詳細資料</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>將影像移至垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保護的過期日為</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>無保護</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日期格式錯誤。請使用「YYYY-MM-DD HH:mm:ss」。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保護已過期。請選取一個未來的日期或保留空白。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>移動影像</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>綜覽</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>目標</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>探查驗證</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>使用者名稱的長度必須介於 8 至 64 個字元之間,並且只能包含以下\n                        字元︰字母、「.」、「@」、「-」、「_」或「:」。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>密碼</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>雙向驗證使用者</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>雙向驗證密碼</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>可用資訊︰</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>無法使用 iSCSI 目標</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>池</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>資料池</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>已建立</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>大小</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>物件</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>物件大小</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>已佈建</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>總佈建數</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>分割單位</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>分割計數</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>父</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>區塊名稱字首</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>順序</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>快照</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>影像</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>此設定會覆寫全域值</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>全域</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>此值為全域值。未為此影像設定此選項的值。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>不允許使用「/」和「@」。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 沒有可用的 RBD 池 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 選取池 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>使用專屬的資料池</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>資料池</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>專用於儲存 RBD 的物件資料的池</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>您必須增加大小。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>進階</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>分割</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>分割單位</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 選取分割單位 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>由於已定義分割計數,因此必須填寫此欄位!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>分割單位大於物件大小。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>分割計數</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>由於已定義分割單位,因此必須填寫此欄位!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>分割計數必須大於 0。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>您正要復原</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>清除垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>全部</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>池︰</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>池名稱...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>回存影像</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>若要回存</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>鍵入影像的新名稱并按一下</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新名稱</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>過期日為</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保護過期日為</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 拓撲</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常不需要變更這些參數的預設值。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>支援儲存</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>確認</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>進階設定</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>目標 IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN 模式錯誤。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例如:iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>更多資訊</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>此目標的進階設定存在修改。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>入口網站</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>新增入口網站</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>此影像的設定存在修改。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>新增影像</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 驗證</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>啟動器</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>啟動器</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>用戶端 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>啟動器 IQN 必須唯一。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>使用者名稱的長度必須介於 8 至 64 個字元之間,並且只能包含以下\n                        字元︰字母、「.」、「@」、「-」、「_」或「:」。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>啟動器屬於群組。影像須在群組中進行設定。 </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>未新增項目。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>新增啟動器</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>群組</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>群組</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>新增群組</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>正在同步</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>準備就緒</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>編輯池鏡像模式</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>在停用鏡像之前,必須先移除對等叢集。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {編輯} other {新增} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>叢集名稱</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>叢集名稱無效。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID 無效。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>監控程式位址</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>逗號分隔的位址...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>監控程式位址無效。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 金鑰</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 編碼的金鑰...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 金鑰必須為 Base64 編碼的金鑰。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>沒有可用的效能計數器</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>精靈清單</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>效能計數器</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>正在載入桶資料...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>該值無效。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>所選的名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>擁有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 選取使用者 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>已啟用</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>索引類型</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>放置規則</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>標記</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>最大標記數</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>主版本</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>修改時間</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>區域群組</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>桶定額</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大大小</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>無限制</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大物件數</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>使用者名稱</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 選取使用者名稱 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>自動產生金鑰</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>存取金鑰</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>機密金鑰</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>全名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>電子郵件地址</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>已暫停</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>系統</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大桶數</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>子使用者</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>功能</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>使用者定額</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>顯示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>金鑰</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>類型</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 選取類型 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>許可權</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 選取許可權 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>子使用者</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>所選的子使用者 ID 已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>讀取、寫入</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>完整</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift 金鑰</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>自動產生機密金鑰</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>正在載入使用者資料...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>無法載入使用者資料。</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>所選的使用者 ID 已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>電子郵件地址無效。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>所選的電子郵件地址已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>最大桶數</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>已停用</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>自訂</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 金鑰</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>沒有子使用者。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>沒有金鑰。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>沒有功能。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>大小不限</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>最大大小</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>物件數不限</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>最大物件數</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>輸入的值必須大於或等於 0。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>描述...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>許可權</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>角色</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>確認密碼</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>確認的密碼與之前輸入的密碼不符。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>電子郵件</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>電子郵件無效。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>您正要為您自己的使用者移除「使用者讀取/寫入」許可權。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>若繼續,您將再也無法為任何使用者新增或移除角色。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>確定要繼續嗎?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>說明</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>文件</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>關於</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>儀表板設定</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>使用者管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>登入的使用者</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>登出</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>屬性 (OSD 地圖)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>無法使用中繼資料</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>中繼資料</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>效能計數器</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>寫入</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>讀取</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>長條圖</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>目前的值</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>最小值</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>最大值</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>來源</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>層級</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>可在執行時期更新 (可編輯)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>標記</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>列舉值</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>另請參閱</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>叢集狀態</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>管理員精靈</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>物件閘道</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>中繼資料伺服器</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 閘道</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>用戶端 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>用戶端輸送量</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>用戶端讀取/寫入</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>復原輸送量</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>整理</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>效能</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>原始容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>每個 OSD 的 PG 數</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 狀態</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>階層</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>目前</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>已更新探查驗證</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>沒有可用的入口網站。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>沒有可用的影像。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>沒有可用的影像。請確定為目標新增一個影像。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>沒有可用的啟動器。請確定為目標新增一個啟動器。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>目標</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>讀取位元組數</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>寫入位元組數</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>讀取操作數</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>寫入操作數</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>使用中/最佳化開始時間</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>例項</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>進度</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>編輯模式</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>新增對等</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>編輯對等</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>刪除對等</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>本地數量</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>遠端數量</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>鏡像對等</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>金鑰</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>深層壓平</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>分層</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>獨佔鎖定</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>物件對應 (需要獨佔鎖定)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>記錄 (需要獨佔鎖定)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>未受保護</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 快照復原</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>復原</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 快照</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>刪除位置</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>類型</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>主機</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>根</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>待命精靈</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>階層</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>精靈</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>活動</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentry</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用率</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>已更新</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>該值可在執行時期更新。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>精靈/用戶端不會從監控程式組態資料庫\n      提取此值。我們不允許透過「ceph config set ...」\n      設定此選項。應透過 ceph.conf 或使用指令行\n      進行設定。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>該選項僅在精靈啟動期間生效。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>該選項僅影響叢集建立。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>該選項僅影響精靈建立。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>服務</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>目前的值</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>可編輯</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>啟用</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>停用</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>正在重新連接,請稍候...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>公用位址</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>開啟的工作階段</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>禁止標示為 In</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>之前標示為 out 的 OSD 在啟動時將不會重新標示為 in</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>禁止標示為 Out</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD 在設定的間隔過後將不會自動標示為 out</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>禁止標示為 Up</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>不允許 OSD 啟動</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>禁止標示為 Down</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>將會忽略 OSD 故障報告,如此監控程式便不會將 OSD 標示為 down</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>暫停</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>暫停讀取和寫入</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>禁止整理</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>整理已停用</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>禁止深層整理</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>深層整理已停用</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>禁止回填</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG 回填已暫停</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>禁止復原</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG 復原已暫停</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>按位元排序</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>使用按位元排序</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>已清除 Snapdir</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD 已轉換 snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>復原刪除</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>在復原期間,而非在建立互聯時執行刪除</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 記錄硬限制</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>為 pg 記錄長度設定硬限制</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>已更新 OSD 旗標</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>out</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>in</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>down</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>標示</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 遺失</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>已標示為遺失</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>損毀</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>已損毀</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>刪除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>讀取位元組數</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>寫入位元組數</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>讀取操作數</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>寫入操作數</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大回填數</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>處於使用中狀態的最大復原操作數</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>單次啟動的最大復原操作數</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>復原操作間隔睡眠時間</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>工作</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>嚴重性</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>已啟動</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>已使用</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>可用</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>乾淨</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>工作中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警告</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>未知</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>啟用中</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>無檔案系統</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>使用中</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>待命</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>使用中的精靈</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>未設定 NFS Ganesha 服務。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>傳輸</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 使用者</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 檔案系統</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(繼承自全域組態)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>繼承自全域組態</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 選取執行哪種類型的使用者 ID 匿名存取 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>沒有可用的精靈。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>快取模式</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>逐出前至少可留存的時間</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>衝洗前至少可留存的時間</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>目標最大位元組數</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>目標最大物件數</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>未新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>已達到應用程式上限</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>一個池最多只能四個應用程式定義。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>允許的字元為「_a-zA-Z0-9」</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>最大長度為 128 個字元</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>過濾或新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>複本大小</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>上次變更時間</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH 規則集</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>範圍</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>讀取</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>建立</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>系統角色</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>更新使用者</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>繼續</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>您已被自動登出,因為您的角色發生了變更。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>各物件都被分割成資料區塊部分,分別儲存於不同的 OSD。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>運算各物件的編碼區塊并將它們儲存到不同的 OSD。\n      編碼區塊的數量等同於在不遺失資料的前提下,可停機的 OSD 數量。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Jerasure 外掛程式是最一般、最靈活的外掛程式,\n          也是 Ceph 糾刪碼池的預設外掛程式。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Reed_sol_van 方法更靈活︰它足以設定 k\n          和 m。Cauchy_good 方法更快,但您需要小心選取封包大小。\n          所有 reed_sol_r6_op、liberation、blaum_roth、liber8tion 都\n          等同於 RAID6,它們只能設定為 m=2。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>將以位元組大小的封包為單位進行編碼。\n          選取合適的封包大小很難。\n          Jerasure 文件包含有關此主題的詳細資訊。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>使用 jerasure 外掛程式時,若糾刪碼物件儲存於\n          多個 OSD 上,則復原一個遺失的 OSD 時需要讀取所有其他 OSD。\n          例如,若 jerasure 設定為 k=8 且 m=4,則遺失一個 OSD 後需讀取\n          其他十一個 OSD 才能修復。\n\n          lrc 糾刪碼外掛程式會建立本地同位區塊,因此只需較少的 OSD 即\n          可復原。例如,若 lrc 設定為 k=8、m=4 且 l=4,它將為每四個 OSD\n          建立額外的同位區塊。這樣,當一個 OSD 遺失時,它只需四個 OSD\n          即可復原,而不需要十一個。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>將編碼區塊和資料區塊分組為大小為 locality 的集合。例如,\n          k=4 且 m=2 時,若 locality=3,則會建立 2 個大小為 3 的組。這樣,各組都能\n          自行復原,而無需從另一組讀取區塊。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>由 l 定義的區塊集將按哪種 CRUSH 桶類型儲存。\n          例如,若設定為機架,則各組 l 區塊將會被放置到不同的\n          機架中。該值用於建立類似 step choose rack 的 CRUSH\n          規則步驟。若未設定,則不會進行此類分組。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 外掛程式封包了 ISA 程式庫。它只能在 Intel 處理器上執行。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 外掛程式包含兩種 Reed Solomon 格式。\n          若設定為 reed_sol_van,則為 Vandermonde。若設定為 cauchy,則為 Cauchy。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec 外掛程式封包了多個 SHEC 程式庫。\n          與 Reed Solomon 代碼相比,它能更有效地復原資料。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>同位區塊的數量,它們在各自的計算範圍內包含了\n          各資料區塊。該數值被用做持久性估值。例如,若 c=2,\n          則在不遺失資料的前提下,可有 2 個 OSD 停機。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSH 規則的第一步所指向的 CRUSH 桶名稱。\n      例如 step take default。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>確定兩個區塊不會存在於同一故障網域的桶中。\n      例如,若故障網域為主機,則不會有兩個區塊儲存於同一主機中。\n      該值用於建立類似 step chooseleaf host 的 CRUSH 規則步驟。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>使用 CRUSH 地圖中的 crush 裝置類別名稱,\n      將放置限制於特定類別的裝置 (例如 ssd 或 hdd)。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>設定糾刪碼外掛程式所在目錄。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>允許所有操作</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>僅允許不修改伺服器的操作</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>不允許讀取或寫入操作,但是允許任何其他操作</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>不允許讀取、寫入或任何可能修改檔案屬性或目錄內容的操作</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>完全禁止存取</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 選取優先程度 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>資訊</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>過去 5 分鐘</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>過去 15 分鐘</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>過去 30 分鐘</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>過去 1 小時 (預設值)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>過去 3 小時</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>過去 6 小時</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>過去 12 小時</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>過去 24 小時</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨天</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>今天</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>今天到目前為止</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>前天</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>過去 2 天</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>上週的今天</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>上週</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>本週</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>本週目前為止</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>過去 7 天</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>上個月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>本月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>本月目前為止</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>過去 30 天</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>過去 90 天</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>過去 6 個月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>過去 1 年</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>去年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年目前為止</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>過去 2 年</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>過去 5 年</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>未選取項目。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>取消選取項目以再次選取</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>已達到選取上限</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>過濾標記</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>新增徽章</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>沒有可用的項目。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>深層整理</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>損毀</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>壓平</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>標示為 Down</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>標示為 In</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>標示為遺失</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>標示為 Out</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保護</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>重新命名</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>還原</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>移至垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>取消保護</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>已刪除</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>已克隆</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>已複製</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>已壓平</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>已還原</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>已復原</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>是</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>否</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>服務品質</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>指定的每秒 IO 位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>指定的每秒 IO 操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>讀取 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>指定的每秒內讀取的位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>讀取 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>指定的每秒讀取操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>寫入 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>指定的每秒內寫入的位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>寫入 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>指定的每秒寫入操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>指定的 IO 位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>指定的 IO 操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>讀取 BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>指定的讀取的位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>讀取 IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>指定的讀取操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>寫入 BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>指定的寫入的位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>寫入 IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>指定的寫入操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>正在執行</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>執行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>已執行</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>未知任務</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>正在建立</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>建立</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>正在更新</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>正在刪除</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>正在克隆</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>正在複製</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>正在壓平</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>壓平</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>正在復原</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>復原</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>正在移動</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>移動</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>已移動</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>找不到影像。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>正在還原</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>還原</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>正在清除</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>所有池</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>無法停用鏡像,因為其包含對等。</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"I+eb":function(t,e,n){var a=n("2oRo"),r=n("Bs8V").f,i=n("kRJp"),s=n("busE"),u=n("zk60"),o=n("6JNq"),l=n("lMq5");t.exports=function(t,e){var n,d,c,f,h,g=t.target,p=t.global,b=t.stat;if(n=p?a:b?a[g]||u(g,{}):(a[g]||{}).prototype)for(d in e){if(f=e[d],c=t.noTargetGet?(h=r(n,d))&&h.value:n[d],!l(p?d:g+(b?".":"#")+d,t.forced)&&void 0!==c){if(typeof f==typeof c)continue;o(f,c)}(t.sham||c&&c.sham)&&i(f,"sham",!0),s(n,d,f,t)}}},I55L:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=t=>t&&"number"==typeof t.length&&"function"!=typeof t},I8vh:function(t,e,n){var a=n("WSbT"),r=Math.max,i=Math.min;t.exports=function(t,e){var n=a(t);return n<0?r(n+e,0):i(n,e)}},IBtZ:function(t,e,n){!function(t){"use strict";t.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(t){return/(წამი|წუთი|საათი|წელი)/.test(t)?t.replace(/ი$/,"ში"):t+"ში"},past:function(t){return/(წამი|წუთი|საათი|დღე|თვე)/.test(t)?t.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(t)?t.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(t){return 0===t?t:1===t?t+"-ლი":t<20||t<=100&&t%20==0||t%100==0?"მე-"+t:t+"-ე"},week:{dow:1,doy:7}})}(n("wd/R"))},IMTC:function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},IWUC:function(t,e,n){var a=n("qwH+"),r=n("x3F9");t.exports=function(t){return r(t)&&"[object Set]"==a(t)}},IZUe:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{constructor(t){this.elementRef=t,this.focus=!0}ngAfterViewInit(){const t=this.elementRef.nativeElement;this.focus&&a.isFunction(t.focus)&&t.focus()}set autofocus(t){a.isBoolean(t)?this.focus=t:a.isFunction(t)&&(this.focus=t())}}},Iab2:function(t,e,n){var a,r;void 0===(r="function"==typeof(a=function(){"use strict";function e(t,e,n){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){s(a.response,e,n)},a.onerror=function(){console.error("could not download file")},a.send()}function n(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return 200<=e.status&&299>=e.status}function a(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(e){var n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(n)}}var r="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,i=r.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=r.saveAs||("object"!=typeof window||window!==r?function(){}:"download"in HTMLAnchorElement.prototype&&!i?function(t,i,s){var u=r.URL||r.webkitURL,o=document.createElement("a");o.download=i=i||t.name||"download",o.rel="noopener","string"==typeof t?(o.href=t,o.origin===location.origin?a(o):n(o.href)?e(t,i,s):a(o,o.target="_blank")):(o.href=u.createObjectURL(t),setTimeout((function(){u.revokeObjectURL(o.href)}),4e4),setTimeout((function(){a(o)}),0))}:"msSaveOrOpenBlob"in navigator?function(t,r,i){if(r=r||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,i),r);else if(n(t))e(t,r,i);else{var s=document.createElement("a");s.href=t,s.target="_blank",setTimeout((function(){a(s)}))}}:function(t,n,a,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,a);var u="application/octet-stream"===t.type,o=/constructor/i.test(r.HTMLElement)||r.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||u&&o||i)&&"undefined"!=typeof FileReader){var d=new FileReader;d.onloadend=function(){var t=d.result;t=l?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=t:location=t,s=null},d.readAsDataURL(t)}else{var c=r.URL||r.webkitURL,f=c.createObjectURL(t);s?s.location=f:location.href=f,s=null,setTimeout((function(){c.revokeObjectURL(f)}),4e4)}});r.saveAs=s.saveAs=s,t.exports=s})?a.apply(e,[]):a)||(t.exports=r)},IeEY:function(t,e,n){var a=n("vJUC"),r=n("CwBR");t.exports=function t(e,n,i,s,u){var o=-1,l=e.length;for(i||(i=r),u||(u=[]);++o<l;){var d=e[o];n>0&&i(d)?n>1?t(d,n-1,i,s,u):a(u,d):s||(u[u.length]=d)}return u}},IfUl:function(t,e,n){var a=n("ZPW6"),r=n("JEWA");t.exports=function(t,e,n){(void 0!==n&&!r(t[e],n)||void 0===n&&!(e in t))&&a(t,e,n)}},IheW:function(t,e,n){"use strict";n.d(e,"m",(function(){return E})),n.d(e,"p",(function(){return q})),n.d(e,"q",(function(){return j})),n.d(e,"n",(function(){return D})),n.d(e,"o",(function(){return P})),n.d(e,"b",(function(){return c})),n.d(e,"g",(function(){return d})),n.d(e,"c",(function(){return I})),n.d(e,"a",(function(){return C})),n.d(e,"d",(function(){return G})),n.d(e,"e",(function(){return V})),n.d(e,"l",(function(){return F})),n.d(e,"h",(function(){return p})),n.d(e,"f",(function(){return O})),n.d(e,"i",(function(){return L})),n.d(e,"k",(function(){return k})),n.d(e,"j",(function(){return M}));var a=n("8Y7J"),r=n("LRne"),i=n("HDdC"),s=n("bOdf"),u=n("pLZG"),o=n("lJxs"),l=n("SVse");class d{}class c{}class f{constructor(t){this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?()=>{this.headers=new Map,t.split("\n").forEach(t=>{const e=t.indexOf(":");if(e>0){const n=t.slice(0,e),a=n.toLowerCase(),r=t.slice(e+1).trim();this.maybeSetNormalizedName(n,a),this.headers.has(a)?this.headers.get(a).push(r):this.headers.set(a,[r])}})}:()=>{this.headers=new Map,Object.keys(t).forEach(e=>{let n=t[e];const a=e.toLowerCase();"string"==typeof n&&(n=[n]),n.length>0&&(this.headers.set(a,n),this.maybeSetNormalizedName(e,a))})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();const e=this.headers.get(t.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,e){return this.clone({name:t,value:e,op:"a"})}set(t,e){return this.clone({name:t,value:e,op:"s"})}delete(t,e){return this.clone({name:t,value:e,op:"d"})}maybeSetNormalizedName(t,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,t)}init(){this.lazyInit&&(this.lazyInit instanceof f?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init(),Array.from(t.headers.keys()).forEach(e=>{this.headers.set(e,t.headers.get(e)),this.normalizedNames.set(e,t.normalizedNames.get(e))})}clone(t){const e=new f;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof f?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([t]),e}applyUpdate(t){const e=t.name.toLowerCase();switch(t.op){case"a":case"s":let n=t.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(t.name,e);const a=("a"===t.op?this.headers.get(e):void 0)||[];a.push(...n),this.headers.set(e,a);break;case"d":const r=t.value;if(r){let t=this.headers.get(e);if(!t)return;t=t.filter(t=>-1===r.indexOf(t)),0===t.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,t)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>t(this.normalizedNames.get(e),this.headers.get(e)))}}class h{encodeKey(t){return g(t)}encodeValue(t){return g(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}}function g(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/gi,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%2B/gi,"+").replace(/%3D/gi,"=").replace(/%3F/gi,"?").replace(/%2F/gi,"/")}class p{constructor(t={}){if(this.updates=null,this.cloneFrom=null,this.encoder=t.encoder||new h,t.fromString){if(t.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function(t,e){const n=new Map;return t.length>0&&t.split("&").forEach(t=>{const a=t.indexOf("="),[r,i]=-1==a?[e.decodeKey(t),""]:[e.decodeKey(t.slice(0,a)),e.decodeValue(t.slice(a+1))],s=n.get(r)||[];s.push(i),n.set(r,s)}),n}(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(e=>{const n=t.fromObject[e];this.map.set(e,Array.isArray(n)?n:[n])})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();const e=this.map.get(t);return e?e[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,e){return this.clone({param:t,value:e,op:"a"})}set(t,e){return this.clone({param:t,value:e,op:"s"})}delete(t,e){return this.clone({param:t,value:e,op:"d"})}toString(){return this.init(),this.keys().map(t=>{const e=this.encoder.encodeKey(t);return this.map.get(t).map(t=>e+"="+this.encoder.encodeValue(t)).join("&")}).join("&")}clone(t){const e=new p({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat([t]),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(t=>this.map.set(t,this.cloneFrom.map.get(t))),this.updates.forEach(t=>{switch(t.op){case"a":case"s":const e=("a"===t.op?this.map.get(t.param):void 0)||[];e.push(t.value),this.map.set(t.param,e);break;case"d":if(void 0===t.value){this.map.delete(t.param);break}{let e=this.map.get(t.param)||[];const n=e.indexOf(t.value);-1!==n&&e.splice(n,1),e.length>0?this.map.set(t.param,e):this.map.delete(t.param)}}}),this.cloneFrom=this.updates=null)}}function b(t){return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer}function m(t){return"undefined"!=typeof Blob&&t instanceof Blob}function y(t){return"undefined"!=typeof FormData&&t instanceof FormData}class v{constructor(t,e,n,a){let r;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=t.toUpperCase(),function(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||a?(this.body=void 0!==n?n:null,r=a):r=n,r&&(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.params&&(this.params=r.params)),this.headers||(this.headers=new f),this.params){const t=this.params.toString();if(0===t.length)this.urlWithParams=e;else{const n=e.indexOf("?");this.urlWithParams=e+(-1===n?"?":n<e.length-1?"&":"")+t}}else this.params=new p,this.urlWithParams=e}serializeBody(){return null===this.body?null:b(this.body)||m(this.body)||y(this.body)||"string"==typeof this.body?this.body:this.body instanceof p?this.body.toString():"object"==typeof this.body||"boolean"==typeof this.body||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return null===this.body||y(this.body)?null:m(this.body)?this.body.type||null:b(this.body)?null:"string"==typeof this.body?"text/plain":this.body instanceof p?"application/x-www-form-urlencoded;charset=UTF-8":"object"==typeof this.body||"number"==typeof this.body||Array.isArray(this.body)?"application/json":null}clone(t={}){const e=t.method||this.method,n=t.url||this.url,a=t.responseType||this.responseType,r=void 0!==t.body?t.body:this.body,i=void 0!==t.withCredentials?t.withCredentials:this.withCredentials,s=void 0!==t.reportProgress?t.reportProgress:this.reportProgress;let u=t.headers||this.headers,o=t.params||this.params;return void 0!==t.setHeaders&&(u=Object.keys(t.setHeaders).reduce((e,n)=>e.set(n,t.setHeaders[n]),u)),t.setParams&&(o=Object.keys(t.setParams).reduce((e,n)=>e.set(n,t.setParams[n]),o)),new v(e,n,r,{params:o,headers:u,reportProgress:s,responseType:a,withCredentials:i})}}const x=function(){var t={Sent:0,UploadProgress:1,ResponseHeader:2,DownloadProgress:3,Response:4,User:5};return t[t.Sent]="Sent",t[t.UploadProgress]="UploadProgress",t[t.ResponseHeader]="ResponseHeader",t[t.DownloadProgress]="DownloadProgress",t[t.Response]="Response",t[t.User]="User",t}();class _{constructor(t,e=200,n="OK"){this.headers=t.headers||new f,this.status=void 0!==t.status?t.status:e,this.statusText=t.statusText||n,this.url=t.url||null,this.ok=this.status>=200&&this.status<300}}class T extends _{constructor(t={}){super(t),this.type=x.ResponseHeader}clone(t={}){return new T({headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class w extends _{constructor(t={}){super(t),this.type=x.Response,this.body=void 0!==t.body?t.body:null}clone(t={}){return new w({body:void 0!==t.body?t.body:this.body,headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class O extends _{constructor(t){super(t,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?"Http failure during parsing for "+(t.url||"(unknown url)"):`Http failure response for ${t.url||"(unknown url)"}: ${t.status} ${t.statusText}`,this.error=t.error||null}}function S(t,e){return{body:e,headers:t.headers,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}class I{constructor(t){this.handler=t}request(t,e,n={}){let a;if(t instanceof v)a=t;else{let r=void 0;r=n.headers instanceof f?n.headers:new f(n.headers);let i=void 0;n.params&&(i=n.params instanceof p?n.params:new p({fromObject:n.params})),a=new v(t,e,void 0!==n.body?n.body:null,{headers:r,params:i,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials})}const i=Object(r.a)(a).pipe(Object(s.a)(t=>this.handler.handle(t)));if(t instanceof v||"events"===n.observe)return i;const l=i.pipe(Object(u.a)(t=>t instanceof w));switch(n.observe||"body"){case"body":switch(a.responseType){case"arraybuffer":return l.pipe(Object(o.a)(t=>{if(null!==t.body&&!(t.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return t.body}));case"blob":return l.pipe(Object(o.a)(t=>{if(null!==t.body&&!(t.body instanceof Blob))throw new Error("Response is not a Blob.");return t.body}));case"text":return l.pipe(Object(o.a)(t=>{if(null!==t.body&&"string"!=typeof t.body)throw new Error("Response is not a string.");return t.body}));case"json":default:return l.pipe(Object(o.a)(t=>t.body))}case"response":return l;default:throw new Error(`Unreachable: unhandled observe type ${n.observe}}`)}}delete(t,e={}){return this.request("DELETE",t,e)}get(t,e={}){return this.request("GET",t,e)}head(t,e={}){return this.request("HEAD",t,e)}jsonp(t,e){return this.request("JSONP",t,{params:(new p).append(e,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,e={}){return this.request("OPTIONS",t,e)}patch(t,e,n={}){return this.request("PATCH",t,S(n,e))}post(t,e,n={}){return this.request("POST",t,S(n,e))}put(t,e,n={}){return this.request("PUT",t,S(n,e))}}class N{constructor(t,e){this.next=t,this.interceptor=e}handle(t){return this.interceptor.intercept(t,this.next)}}const C=new a.InjectionToken("HTTP_INTERCEPTORS");class R{intercept(t,e){return e.handle(t)}}const A=/^\)\]\}',?\n/;class k{}class E{constructor(){}build(){return new XMLHttpRequest}}class L{constructor(t){this.xhrFactory=t}handle(t){if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without JsonpClientModule installed.");return new i.a(e=>{const n=this.xhrFactory.build();if(n.open(t.method,t.urlWithParams),t.withCredentials&&(n.withCredentials=!0),t.headers.forEach((t,e)=>n.setRequestHeader(t,e.join(","))),t.headers.has("Accept")||n.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){const e=t.detectContentTypeHeader();null!==e&&n.setRequestHeader("Content-Type",e)}if(t.responseType){const e=t.responseType.toLowerCase();n.responseType="json"!==e?e:"text"}const a=t.serializeBody();let r=null;const i=()=>{if(null!==r)return r;const e=1223===n.status?204:n.status,a=n.statusText||"OK",i=new f(n.getAllResponseHeaders()),s=function(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(n)||t.url;return r=new T({headers:i,status:e,statusText:a,url:s}),r},s=()=>{let{headers:a,status:r,statusText:s,url:u}=i(),o=null;204!==r&&(o=void 0===n.response?n.responseText:n.response),0===r&&(r=o?200:0);let l=r>=200&&r<300;if("json"===t.responseType&&"string"==typeof o){const t=o;o=o.replace(A,"");try{o=""!==o?JSON.parse(o):null}catch(d){o=t,l&&(l=!1,o={error:d,text:o})}}l?(e.next(new w({body:o,headers:a,status:r,statusText:s,url:u||void 0})),e.complete()):e.error(new O({error:o,headers:a,status:r,statusText:s,url:u||void 0}))},u=t=>{const{url:a}=i(),r=new O({error:t,status:n.status||0,statusText:n.statusText||"Unknown Error",url:a||void 0});e.error(r)};let o=!1;const l=a=>{o||(e.next(i()),o=!0);let r={type:x.DownloadProgress,loaded:a.loaded};a.lengthComputable&&(r.total=a.total),"text"===t.responseType&&n.responseText&&(r.partialText=n.responseText),e.next(r)},d=t=>{let n={type:x.UploadProgress,loaded:t.loaded};t.lengthComputable&&(n.total=t.total),e.next(n)};return n.addEventListener("load",s),n.addEventListener("error",u),t.reportProgress&&(n.addEventListener("progress",l),null!==a&&n.upload&&n.upload.addEventListener("progress",d)),n.send(a),e.next({type:x.Sent}),()=>{n.removeEventListener("error",u),n.removeEventListener("load",s),t.reportProgress&&(n.removeEventListener("progress",l),null!==a&&n.upload&&n.upload.removeEventListener("progress",d)),n.abort()}})}}const D=new a.InjectionToken("XSRF_COOKIE_NAME"),P=new a.InjectionToken("XSRF_HEADER_NAME");class M{}class q{constructor(t,e,n){this.doc=t,this.platform=e,this.cookieName=n,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=Object(l["ɵparseCookieValue"])(t,this.cookieName),this.lastCookieString=t),this.lastToken}}class j{constructor(t,e){this.tokenService=t,this.headerName=e}intercept(t,e){const n=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||n.startsWith("http://")||n.startsWith("https://"))return e.handle(t);const a=this.tokenService.getToken();return null===a||t.headers.has(this.headerName)||(t=t.clone({headers:t.headers.set(this.headerName,a)})),e.handle(t)}}class F{constructor(t,e){this.backend=t,this.injector=e,this.chain=null}handle(t){if(null===this.chain){const t=this.injector.get(C,[]);this.chain=t.reduceRight((t,e)=>new N(t,e),this.backend)}return this.chain.handle(t)}}class V{static disable(){return{ngModule:V,providers:[{provide:j,useClass:R}]}}static withOptions(t={}){return{ngModule:V,providers:[t.cookieName?{provide:D,useValue:t.cookieName}:[],t.headerName?{provide:P,useValue:t.headerName}:[]]}}}class G{}},IjjT:function(t,e,n){"use strict";let a=(()=>{class t{constructor(e,n=t.now){this.SchedulerAction=e,this.now=n}schedule(t,e=0,n){return new this.SchedulerAction(this,t).schedule(n,e)}}return t.now=()=>Date.now(),t})();n.d(e,"a",(function(){return r}));class r extends a{constructor(t,e=a.now){super(t,()=>r.delegate&&r.delegate!==this?r.delegate.now():e()),this.actions=[],this.active=!1,this.scheduled=void 0}schedule(t,e=0,n){return r.delegate&&r.delegate!==this?r.delegate.schedule(t,e,n):super.schedule(t,e,n)}flush(t){const{actions:e}=this;if(this.active)return void e.push(t);let n;this.active=!0;do{if(n=t.execute(t.state,t.delay))break}while(t=e.shift());if(this.active=!1,n){for(;t=e.shift();)t.unsubscribe();throw n}}}},ImZN:function(t,e,n){var a=n("2oRo"),r=n("A2ZE"),i=n("xluM"),s=n("glrk"),u=n("DVFp"),o=n("6VoE"),l=n("B/qT"),d=n("OpvP"),c=n("mh/w"),f=n("NaFW"),h=n("KmKo"),g=a.TypeError,p=function(t,e){this.stopped=t,this.result=e},b=p.prototype;t.exports=function(t,e,n){var a,m,y,v,x,_,T,w=!(!n||!n.AS_ENTRIES),O=!(!n||!n.IS_ITERATOR),S=!(!n||!n.INTERRUPTED),I=r(e,n&&n.that),N=function(t){return a&&h(a,"normal",t),new p(!0,t)},C=function(t){return w?(s(t),S?I(t[0],t[1],N):I(t[0],t[1])):S?I(t,N):I(t)};if(O)a=t;else{if(!(m=f(t)))throw g(u(t)+" is not iterable");if(o(m)){for(y=0,v=l(t);v>y;y++)if((x=C(t[y]))&&d(b,x))return x;return new p(!1)}a=c(t,m)}for(_=a.next;!(T=i(_,a)).done;){try{x=C(T.value)}catch(R){h(a,"throw",R)}if("object"==typeof x&&x&&d(b,x))return x}return new p(!1)}},"Ivi+":function(t,e,n){!function(t){"use strict";t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}})}(n("wd/R"))},IyEx:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}},IzCI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1024,["B/s","kB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"])}}},IzEk:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("4I5i"),i=n("EY2u");function s(t){return e=>0===t?Object(i.b)():e.lift(new u(t))}class u{constructor(t){if(this.total=t,this.total<0)throw new r.a}call(t,e){return e.subscribe(new o(t,this.total))}}class o extends a.a{constructor(t,e){super(t),this.total=e,this.count=0}_next(t){const e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))}}},J3wx:function(t,e,n){var a=n("qN6l");t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=a&&void 0===e?"__lodash_hash_undefined__":e,this}},J9xi:function(t,e,n){var a=n("rk81"),r=n("5DBd"),i=n("bQrF"),s=n("xOlK"),u=n("pYe4"),o=n("j09V"),l=n("Y3RO"),d=n("+GxX"),c=n("G3dZ"),f=n("iQ+a"),h=n("mOnh"),g=n("qwH+"),p=n("8+Q7"),b=n("hTsC"),m=n("pcUq"),y=n("0GLT"),v=n("y/5f"),x=n("8Tpr"),_=n("hmSm"),T=n("8+is"),w=n("FGWQ"),O=n("MBcj"),S={};S["[object Arguments]"]=S["[object Array]"]=S["[object ArrayBuffer]"]=S["[object DataView]"]=S["[object Boolean]"]=S["[object Date]"]=S["[object Float32Array]"]=S["[object Float64Array]"]=S["[object Int8Array]"]=S["[object Int16Array]"]=S["[object Int32Array]"]=S["[object Map]"]=S["[object Number]"]=S["[object Object]"]=S["[object RegExp]"]=S["[object Set]"]=S["[object String]"]=S["[object Symbol]"]=S["[object Uint8Array]"]=S["[object Uint8ClampedArray]"]=S["[object Uint16Array]"]=S["[object Uint32Array]"]=!0,S["[object Error]"]=S["[object Function]"]=S["[object WeakMap]"]=!1,t.exports=function t(e,n,I,N,C,R){var A,k=1&n,E=2&n,L=4&n;if(I&&(A=C?I(e,N,C,R):I(e)),void 0!==A)return A;if(!_(e))return e;var D=y(e);if(D){if(A=p(e),!k)return l(e,A)}else{var P=g(e),M="[object Function]"==P||"[object GeneratorFunction]"==P;if(v(e))return o(e,k);if("[object Object]"==P||"[object Arguments]"==P||M&&!C){if(A=E||M?{}:m(e),!k)return E?c(e,u(A,e)):d(e,s(A,e))}else{if(!S[P])return C?e:{};A=b(e,P,k)}}R||(R=new a);var q=R.get(e);if(q)return q;R.set(e,A),T(e)?e.forEach((function(a){A.add(t(a,n,I,a,e,R))})):x(e)&&e.forEach((function(a,r){A.set(r,t(a,n,I,r,e,R))}));var j=D?void 0:(L?E?h:f:E?O:w)(e);return r(j||e,(function(a,r){j&&(a=e[r=a]),i(A,r,t(a,n,I,r,e,R))})),A}},JBy8:function(t,e,n){var a=n("yoRg"),r=n("eDl+").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return a(t,r)}},"JCF/":function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(t){return/ئێواره‌/.test(t)},meridiem:function(t,e,n){return t<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},JEWA:function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},JIr8:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("l7GE"),r=n("51Dv"),i=n("ZUHj");function s(t){return function(e){const n=new u(t),a=e.lift(n);return n.caught=a}}class u{constructor(t){this.selector=t}call(t,e){return e.subscribe(new o(t,this.selector,this.caught))}}class o extends a.a{constructor(t,e,n){super(t),this.selector=e,this.caught=n}error(t){if(!this.isStopped){let n;try{n=this.selector(t,this.caught)}catch(e){return void super.error(e)}this._unsubscribeAndRecycle();const a=new r.a(this,void 0,void 0);this.add(a);const s=Object(i.a)(this,n,void 0,void 0,a);s!==a&&this.add(s)}}}},JTPl:function(t,e,n){var a,r=n("isl5"),i=(a=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";t.exports=function(t){return!!i&&i in t}},JVSJ:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return a+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return a+(1===t?"dan":"dana");case"MM":return a+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return a+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},JvlW:function(t,e,n){!function(t){"use strict";var e={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(t,e,n,a){return e?r(n)[0]:a?r(n)[1]:r(n)[2]}function a(t){return t%10==0||t>10&&t<20}function r(t){return e[t].split("_")}function i(t,e,i,s){var u=t+" ";return 1===t?u+n(0,e,i[0],s):e?u+(a(t)?r(i)[1]:r(i)[0]):s?u+r(i)[1]:u+(a(t)?r(i)[1]:r(i)[2])}t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(t,e,n,a){return e?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"},ss:i,m:n,mm:i,h:n,hh:i,d:n,dd:i,M:n,MM:i,y:n,yy:i},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}})}(n("wd/R"))},JxMD:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("hrfs");n("dgut"),n("Fgil"),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return u}));var s=a["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto;cursor:pointer;overflow:visible;position:static!important}']],data:{}});function u(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{chartCanvasRef:0}),a["ɵqud"](402653184,2,{chartTooltipRef:0}),(t()(),a["ɵeld"](2,0,null,null,6,"div",[["class","chart-container"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgStyleImpl"],r["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgStyle,[r["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵeld"](5,0,[[1,0],["sparkCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),a["ɵdid"](6,999424,null,0,i.a,[a.ElementRef,i.c],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),a["ɵeld"](7,0,[[2,0],["sparkTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),a["ɵeld"](8,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.style),t(e,6,0,n.datasets,n.labels,n.options,"line",n.colors)}),null)}},"K/tc":function(t,e,n){!function(t){"use strict";t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},K1DE:function(t,e){t.exports=function(t,e){return t.has(e)}},K3g9:function(t,e){t.exports=function(t){return t&&t.length?t[0]:void 0}},K6Rb:function(t,e){var n=Function.prototype,a=n.apply,r=n.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n.bind?r.bind(a):function(){return r.apply(a,arguments)})},KFwg:function(t,e,n){var a=n("r467"),r=n("k9+3");t.exports=function(t,e){var n=r(t,e);return a(n)?n:void 0}},KNDS:function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},KOzp:function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return l})),n.d(e,"d",(function(){return d}));var a=n("z/SZ"),r=n("hpHm"),i=n("2uy1"),s=n("PqYM");class u{constructor(){this.adaptivePosition=!0,this.placement="top",this.triggers="click",this.outsideClick=!1,this.delay=0}}class o{constructor(t){Object.assign(this,t)}get isBs3(){return Object(r.d)()}}class l{constructor(t,e,n,a,r,i){this._elementRef=e,this._renderer=n,this._positionService=i,this.outsideClick=!1,this.containerClass="",this._isInited=!1,this._popover=r.createLoader(e,a,n).provide({provide:u,useValue:t}),Object.assign(this,t),this.onShown=this._popover.onShown,this.onHidden=this._popover.onHidden,"undefined"!=typeof window&&e.nativeElement.addEventListener("click",(function(){try{e.nativeElement.focus()}catch(t){return}}))}get isOpen(){return this._popover.isShown}set isOpen(t){t?this.show():this.hide()}show(){if(this._popover.isShown||!this.popover||this._delayTimeoutId)return;this._positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition},preventOverflow:{enabled:this.adaptivePosition}}});const t=()=>{this._delayTimeoutId&&(this._delayTimeoutId=void 0),this._popover.attach(o).to(this.container).position({attachment:this.placement}).show({content:this.popover,context:this.popoverContext,placement:this.placement,title:this.popoverTitle,containerClass:this.containerClass}),this.adaptivePosition||(this._positionService.calcPosition(),this._positionService.deletePositionElement(this._popover._componentRef.location)),this.isOpen=!0},e=()=>{this._popoverCancelShowFn&&this._popoverCancelShowFn()};if(this.delay){const n=Object(s.a)(this.delay).subscribe(()=>{t(),e()});this.triggers&&Object(r.f)(this.triggers).forEach(t=>{this._popoverCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,t.close,()=>{n.unsubscribe(),e()})})}else t()}hide(){this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this.isOpen&&(this._popover.hide(),this.isOpen=!1)}toggle(){if(this.isOpen)return this.hide();this.show()}ngOnInit(){this._isInited||(this._isInited=!0,this._popover.listen({triggers:this.triggers,outsideClick:this.outsideClick,show:()=>this.show()}))}ngOnDestroy(){this._popover.dispose()}}class d{static forRoot(){return{ngModule:d,providers:[u,a.a,i.a]}}}},KQir:function(t,e){t.exports=function(){return!1}},KSF8:function(t,e,n){!function(t){"use strict";t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},KTz0:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},KVJa:function(t,e,n){"use strict";var a=n("8Y7J");n("Z21x"),n("SVse"),n("sne2"),n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var r=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["class","btn btn-light tc_backButton"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.back()&&a),a}),null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.name)}))}},KmKo:function(t,e,n){var a=n("xluM"),r=n("glrk"),i=n("3Eq5");t.exports=function(t,e,n){var s,u;r(t);try{if(!(s=i(t,"return"))){if("throw"===e)throw n;return n}s=a(s,t)}catch(o){u=!0,s=o}if("throw"===e)throw n;if(u)throw s;return r(s),n}},Kqap:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){let n=!1;return arguments.length>=2&&(n=!0),function(a){return a.lift(new i(t,e,n))}}class i{constructor(t,e,n=!1){this.accumulator=t,this.seed=e,this.hasSeed=n}call(t,e){return e.subscribe(new s(t,this.accumulator,this.seed,this.hasSeed))}}class s extends a.a{constructor(t,e,n,a){super(t),this.accumulator=e,this._seed=n,this.hasSeed=a,this.index=0}get seed(){return this._seed}set seed(t){this.hasSeed=!0,this._seed=t}_next(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)}_tryNext(t){const e=this.index++;let n;try{n=this.accumulator(this.seed,t,e)}catch(a){this.destination.error(a)}this.seed=n,this.destination.next(n)}}},KqfI:function(t,e,n){"use strict";function a(){}n.d(e,"a",(function(){return a}))},L0Z1:function(t,e,n){(function(t){var a=n("qzZ1"),r=e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,s=i&&i.exports===r&&a.process,u=function(){try{return i&&i.require&&i.require("util").types||s&&s.binding&&s.binding("util")}catch(t){}}();t.exports=u}).call(this,n("YuTi")(t))},LJNh:function(t,e,n){var a=n("zDBQ"),r=n("8V0S"),i=n("/F2L");t.exports=function(t){return i(r(t,void 0,a),t+"")}},LOMR:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("Fwy9"),i=n("gk6K"),s=n("woSy"),u=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[["class","node-drop-slot"]],null,[[null,"treeDrop"],[null,"drop"]],(function(t,e,n){var r=!0,i=t.component;return"drop"===e&&(r=!1!==a["ɵnov"](t,1).onDrop(n)&&r),"treeDrop"===e&&(r=!1!==i.onDrop(n)&&r),r}),null,null)),a["ɵdid"](1,4341760,null,0,r.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{allowDragoverStyling:[0,"allowDragoverStyling"],treeAllowDrop:[1,"treeAllowDrop"]},{onDropCallback:"treeDrop"})],(function(t,e){var n=e.component;t(e,1,0,!0,n.allowDrop.bind(n))}),null)}var l=n("SVse"),d=n("CoVI"),c=n("uNpg"),f=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["class","tree-node-checkbox"],["type","checkbox"]],[[8,"checked",0],[8,"indeterminate",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.node.mouseAction("checkboxClick",n)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,1,0,n.node.isSelected,n.node.isPartiallySelected)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,h)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var p=n("jV1L"),b=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","toggle-children-wrapper"]],[[2,"toggle-children-wrapper-expanded",null],[2,"toggle-children-wrapper-collapsed",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.node.mouseAction("expanderClick",n)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"span",[["class","toggle-children"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.node.isExpanded,n.node.isCollapsed)}))}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[["class","toggle-children-placeholder"]],null,null,null,null,null))],null,null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](4,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.node.hasChildren),t(e,4,0,!n.node.hasChildren)}),null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,v)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var _=n("C523"),T=n("rZud"),w=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.node.displayField)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0,node:1,index:2})],(function(t,e){var n=e.component;t(e,1,0,!n.template);var a=t(e,4,0,n.node,n.node,n.index);t(e,3,0,a,n.template)}),null)}var I=n("OIDT"),N=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-checkbox",[],null,null,null,g,f)),a["ɵdid"](1,49152,null,0,c.a,[],{node:[0,"node"]},null)],(function(t,e){t(e,1,0,e.component.node)}),null)}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","node-wrapper"]],[[4,"padding-left",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"tree-node-expander",[],null,null,null,x,b)),a["ɵdid"](4,49152,null,0,p.a,[],{node:[0,"node"]},null),(t()(),a["ɵeld"](5,0,null,null,4,"div",[["class","node-content-wrapper"]],[[2,"node-content-wrapper-active",null],[2,"node-content-wrapper-focused",null]],[[null,"click"],[null,"dblclick"],[null,"mouseover"],[null,"mouseout"],[null,"contextmenu"],[null,"treeDrop"],[null,"treeDropDragOver"],[null,"treeDropDragLeave"],[null,"treeDropDragEnter"],[null,"drop"],[null,"dragstart"],[null,"dragend"]],(function(t,e,n){var r=!0,i=t.component;return"drop"===e&&(r=!1!==a["ɵnov"](t,6).onDrop(n)&&r),"dragstart"===e&&(r=!1!==a["ɵnov"](t,7).onDragStart(n)&&r),"dragend"===e&&(r=!1!==a["ɵnov"](t,7).onDragEnd()&&r),"click"===e&&(r=!1!==i.node.mouseAction("click",n)&&r),"dblclick"===e&&(r=!1!==i.node.mouseAction("dblClick",n)&&r),"mouseover"===e&&(r=!1!==i.node.mouseAction("mouseOver",n)&&r),"mouseout"===e&&(r=!1!==i.node.mouseAction("mouseOut",n)&&r),"contextmenu"===e&&(r=!1!==i.node.mouseAction("contextMenu",n)&&r),"treeDrop"===e&&(r=!1!==i.node.onDrop(n)&&r),"treeDropDragOver"===e&&(r=!1!==i.node.mouseAction("dragOver",n)&&r),"treeDropDragLeave"===e&&(r=!1!==i.node.mouseAction("dragLeave",n)&&r),"treeDropDragEnter"===e&&(r=!1!==i.node.mouseAction("dragEnter",n)&&r),r}),null,null)),a["ɵdid"](6,4341760,null,0,r.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{allowDragoverStyling:[0,"allowDragoverStyling"],treeAllowDrop:[1,"treeAllowDrop"]},{onDropCallback:"treeDrop",onDragOverCallback:"treeDropDragOver",onDragLeaveCallback:"treeDropDragLeave",onDragEnterCallback:"treeDropDragEnter"}),a["ɵdid"](7,4603904,null,0,_.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{draggedElement:[0,"draggedElement"],treeDragEnabled:[1,"treeDragEnabled"]},null),(t()(),a["ɵeld"](8,0,null,null,1,"tree-node-content",[],null,null,null,S,w)),a["ɵdid"](9,49152,null,0,T.a,[],{node:[0,"node"],index:[1,"index"],template:[2,"template"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.node.options.useCheckbox),t(e,4,0,n.node),t(e,6,0,n.node.allowDragoverStyling(),n.node.allowDrop),t(e,7,0,n.node,n.node.allowDrag()),t(e,9,0,n.node,n.index,n.templates.treeNodeTemplate)}),(function(t,e){var n=e.component;t(e,0,0,n.node.getNodePadding()),t(e,5,0,n.node.isActive,n.node.isFocused)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,R)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0,node:1,index:2,templates:3})],(function(t,e){var n=e.component;t(e,1,0,!n.templates.treeNodeWrapperTemplate);var a=t(e,4,0,n.node,n.node,n.index,n.templates);t(e,3,0,a,n.templates.treeNodeWrapperTemplate)}),null)}var k=n("WaXT"),E=n("ZhuC"),L=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["loading..."]))],null,null)}function P(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,D)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0})],(function(t,e){var n=e.component;t(e,1,0,!n.template);var a=t(e,4,0,n.node);t(e,3,0,a,n.template)}),null)}var M=n("4Dmd"),q=n("pcHL"),j=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-collection",[],null,null,null,X,J)),a["ɵdid"](1,245760,null,0,k.a,[],{nodes:[0,"nodes"],treeModel:[1,"treeModel"],templates:[2,"templates"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.node.children,n.node.treeModel,n.templates)}),null)}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-loading-component",[["class","tree-node-loading"]],[[4,"padding-left",null]],null,null,P,L)),a["ɵdid"](1,49152,null,0,E.a,[],{template:[0,"template"],node:[1,"node"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.templates.loadingTemplate,n.node)}),(function(t,e){t(e,0,0,e.component.node.getNodePadding())}))}function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[2,"tree-children",null],[2,"tree-children-no-padding",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,F)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](4,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.node.children),t(e,4,0,!n.node.children)}),(function(t,e){t(e,0,0,!0,e.component.node.options.levelPadding)}))}function B(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](2,16384,null,0,M.a,[a.Renderer2,a.TemplateRef,a.ViewContainerRef],{animateSpeed:[0,"animateSpeed"],animateAcceleration:[1,"animateAcceleration"],isEnabled:[2,"isEnabled"],isOpen:[3,"isOpen"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.node.options.animateSpeed,n.node.options.animateAcceleration,n.node.options.animateExpand,n.node.isExpanded)}),null)}function z(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,B)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var Y=n("TNUL"),H=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function U(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-drop-slot",[],null,null,null,o,u)),a["ɵdid"](1,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.node.parent,n.node.index)}),null)}function W(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[],[[8,"className",0],[2,"tree-node",null],[2,"tree-node-expanded",null],[2,"tree-node-collapsed",null],[2,"tree-node-leaf",null],[2,"tree-node-active",null],[2,"tree-node-focused",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,U)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"tree-node-wrapper",[],null,null,null,A,N)),a["ɵdid"](4,49152,null,0,I.a,[],{node:[0,"node"],index:[1,"index"],templates:[2,"templates"]},null),(t()(),a["ɵeld"](5,0,null,null,1,"tree-node-children",[],null,null,null,z,j)),a["ɵdid"](6,49152,null,0,q.a,[],{node:[0,"node"],templates:[1,"templates"]},null),(t()(),a["ɵeld"](7,0,null,null,1,"tree-node-drop-slot",[],null,null,null,o,u)),a["ɵdid"](8,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){var n=e.component;t(e,2,0,0===n.index),t(e,4,0,n.node,n.index,n.templates),t(e,6,0,n.node,n.templates),t(e,8,0,n.node.parent,n.node.index+1)}),(function(t,e){var n=e.component;t(e,0,0,n.node.getClass(),!0,n.node.isExpanded&&n.node.hasChildren,n.node.isCollapsed&&n.node.hasChildren,n.node.isLeaf,n.node.isActive,n.node.isFocused)}))}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,W)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](4,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](5,{$implicit:0,node:1,index:2,templates:3}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!n.templates.treeNodeFullTemplate);var a=t(e,5,0,n.node,n.node,n.index,n.templates);t(e,4,0,a,n.templates.treeNodeFullTemplate)}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,K)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var J=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node",[],null,null,null,$,H)),a["ɵdid"](1,49152,null,0,Y.a,[],{node:[0,"node"],index:[1,"index"],templates:[2,"templates"]},null)],(function(t,e){t(e,1,0,e.context.$implicit,e.context.index,e.component.templates)}),null)}function Q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"div",[],[[4,"margin-top",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Z)),a["ɵdid"](3,278528,null,0,l.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.viewportNodes,n.trackNode)}),(function(t,e){t(e,1,0,e.component.marginTop)}))}function X(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,Q)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var tt=n("dApe"),et=n("MP8s"),nt=n("HIU9"),at=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[],[[4,"height",null]],null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){t(e,1,0,e.component.getTotalHeight())}))}function it(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,rt)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}n("fxL3"),n.d(e,"a",(function(){return st})),n.d(e,"b",(function(){return lt}));var st=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tree-node-collection",[],null,null,null,X,J)),a["ɵdid"](1,245760,null,0,k.a,[],{nodes:[0,"nodes"],treeModel:[1,"treeModel"],templates:[2,"templates"]},null),a["ɵpod"](2,{loadingTemplate:0,treeNodeTemplate:1,treeNodeWrapperTemplate:2,treeNodeFullTemplate:3})],(function(t,e){var n=e.component,a=n.treeModel.roots,r=n.treeModel,i=t(e,2,0,n.loadingTemplate,n.treeNodeTemplate,n.treeNodeWrapperTemplate,n.treeNodeFullTemplate);t(e,1,0,a,r,i)}),null)}function ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-drop-slot",[["class","empty-tree-drop-slot"]],null,null,null,o,u)),a["ɵdid"](1,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){t(e,1,0,e.component.treeModel.virtualRoot,0)}),null)}function lt(t){return a["ɵvid"](0,[a["ɵqud"](671088640,1,{viewportComponent:0}),(t()(),a["ɵeld"](1,0,null,null,7,"tree-viewport",[],null,null,null,it,at)),a["ɵprd"](512,null,tt.a,tt.a,[et.a]),a["ɵdid"](3,4440064,[[1,4],["viewport",4]],0,nt.a,[a.ElementRef,a.NgZone,tt.a],null,null),(t()(),a["ɵeld"](4,0,null,0,4,"div",[["class","angular-tree-component"]],[[2,"node-dragging",null],[2,"angular-tree-component-rtl",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ut)),a["ɵdid"](6,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ot)),a["ɵdid"](8,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0),t(e,6,0,n.treeModel.roots),t(e,8,0,n.treeModel.isEmptyTree())}),(function(t,e){var n=e.component;t(e,4,0,n.treeDraggedElement.isDragging(),n.treeModel.options.rtl)}))}},LQDL:function(t,e,n){var a,r,i=n("2oRo"),s=n("NC/Y"),u=i.process,o=i.Deno,l=u&&u.versions||o&&o.version,d=l&&l.v8;d&&(r=(a=d.split("."))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!r&&s&&(!(a=s.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=s.match(/Chrome\/(\d+)/))&&(r=+a[1]),t.exports=r},LRne:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("z+Ro"),r=n("yCtX"),i=n("jZKg");function s(...t){let e=t[t.length-1];return Object(a.a)(e)?(t.pop(),Object(i.a)(t,e)):Object(r.a)(t)}},LWR0:function(t,e,n){var a=n("hmSm"),r=n("fIUv"),i=n("jNLg"),s=Math.max,u=Math.min;t.exports=function(t,e,n){var o,l,d,c,f,h,g=0,p=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=o,a=l;return o=l=void 0,g=e,c=t.apply(a,n)}function v(t){return g=t,f=setTimeout(_,e),p?y(t):c}function x(t){var n=t-h;return void 0===h||n>=e||n<0||b&&t-g>=d}function _(){var t=r();if(x(t))return T(t);f=setTimeout(_,function(t){var n=e-(t-h);return b?u(n,d-(t-g)):n}(t))}function T(t){return f=void 0,m&&o?y(t):(o=l=void 0,c)}function w(){var t=r(),n=x(t);if(o=arguments,l=this,h=t,n){if(void 0===f)return v(h);if(b)return clearTimeout(f),f=setTimeout(_,e),y(h)}return void 0===f&&(f=setTimeout(_,e)),c}return e=i(e)||0,a(n)&&(p=!!n.leading,d=(b="maxWait"in n)?s(i(n.maxWait)||0,e):d,m="trailing"in n?!!n.trailing:m),w.cancel=function(){void 0!==f&&clearTimeout(f),g=0,o=h=l=f=void 0},w.flush=function(){return void 0===f?c:T(r())},w}},LaC8:function(t,e,n){var a=n("pMcL"),r=n("sA22"),i=n("eNG0"),s=a?a.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?r(t):i(t)}},LceX:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return c})),n.d(e,"c",(function(){return i})),n.d(e,"d",(function(){return s})),n.d(e,"e",(function(){return u})),n.d(e,"f",(function(){return o})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return d}));var a=n("sne2");n("eTJe"),n("n/D3"),n("V3my"),n("ZEkX");class r{}const i={breadcrumbs:"Users"},s={breadcrumbs:a.a.CREATE},u={breadcrumbs:a.a.EDIT},o={breadcrumbs:"Roles"},l={breadcrumbs:a.a.CREATE},d={breadcrumbs:a.a.EDIT};class c{}},LgIp:function(t,e){t.exports=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r}},Lhse:function(t,e,n){"use strict";function a(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}n.d(e,"a",(function(){return r}));const r=a()},Loxo:function(t,e,n){!function(t){"use strict";t.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("wd/R"))},LqlI:function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return d})),n.d(e,"e",(function(){return h})),n.d(e,"f",(function(){return o}));var a=n("8Y7J"),r=n("hpHm"),i=n("z/SZ"),s=n("2uy1");class u{constructor(){this.hide=Function,this.setClass=Function}}class o{}const l={backdrop:!0,keyboard:!0,focus:!0,show:!1,ignoreBackdropClick:!1,class:"",animated:!0,initialState:{}};class d{constructor(t,e,n){this._element=e,this._renderer=n,this.isShown=!1,this.isModalHiding=!1,this.clickStartedInContent=!1,this.config=Object.assign({},t)}ngOnInit(){this.isAnimated&&this._renderer.addClass(this._element.nativeElement,"fade"),this._renderer.setStyle(this._element.nativeElement,"display","block"),setTimeout(()=>{this.isShown=!0,this._renderer.addClass(this._element.nativeElement,Object(r.d)()?"in":"show")},this.isAnimated?150:0),document&&document.body&&(1===this.bsModalService.getModalsCount()&&(this.bsModalService.checkScrollbar(),this.bsModalService.setScrollbar()),this._renderer.addClass(document.body,"modal-open")),this._element.nativeElement&&this._element.nativeElement.focus()}onClickStarted(t){this.clickStartedInContent=t.target!==this._element.nativeElement}onClickStop(t){this.config.ignoreBackdropClick||"static"===this.config.backdrop||t.target!==this._element.nativeElement||this.clickStartedInContent?this.clickStartedInContent=!1:(this.bsModalService.setDismissReason("backdrop-click"),this.hide())}onEsc(t){this.isShown&&(27!==t.keyCode&&"Escape"!==t.key||t.preventDefault(),this.config.keyboard&&this.level===this.bsModalService.getModalsCount()&&(this.bsModalService.setDismissReason("esc"),this.hide()))}ngOnDestroy(){this.isShown&&this.hide()}hide(){!this.isModalHiding&&this.isShown&&(this.isModalHiding=!0,this._renderer.removeClass(this._element.nativeElement,Object(r.d)()?"in":"show"),setTimeout(()=>{this.isShown=!1,document&&document.body&&1===this.bsModalService.getModalsCount()&&this._renderer.removeClass(document.body,"modal-open"),this.bsModalService.hide(this.level),this.isModalHiding=!1},this.isAnimated?300:0))}}class c{constructor(t,e){this._isShown=!1,this.element=t,this.renderer=e}get isAnimated(){return this._isAnimated}set isAnimated(t){this._isAnimated=t}get isShown(){return this._isShown}set isShown(t){this._isShown=t,t?this.renderer.addClass(this.element.nativeElement,"in"):this.renderer.removeClass(this.element.nativeElement,"in"),Object(r.d)()||(t?this.renderer.addClass(this.element.nativeElement,"show"):this.renderer.removeClass(this.element.nativeElement,"show"))}ngOnInit(){this.isAnimated&&(this.renderer.addClass(this.element.nativeElement,"fade"),r.b.reflow(this.element.nativeElement)),this.isShown=!0}}class f{constructor(t,e){this.clf=e,this.config=l,this.onShow=new a.EventEmitter,this.onShown=new a.EventEmitter,this.onHide=new a.EventEmitter,this.onHidden=new a.EventEmitter,this.isBodyOverflowing=!1,this.originalBodyPadding=0,this.scrollbarWidth=0,this.modalsCount=0,this.lastDismissReason="",this.loaders=[],this._backdropLoader=this.clf.createLoader(null,null,null),this._renderer=t.createRenderer(null,null)}show(t,e){return this.modalsCount++,this._createLoaders(),this.config=Object.assign({},l,e),this._showBackdrop(),this.lastDismissReason=null,this._showModal(t)}hide(t){1===this.modalsCount&&(this._hideBackdrop(),this.resetScrollbar()),this.modalsCount=this.modalsCount>=1?this.modalsCount-1:0,setTimeout(()=>{this._hideModal(t),this.removeLoaders(t)},this.config.animated?150:0)}_showBackdrop(){const t=this.config.backdrop||"static"===this.config.backdrop,e=!this.backdropRef||!this.backdropRef.instance.isShown;1===this.modalsCount&&(this.removeBackdrop(),t&&e&&(this._backdropLoader.attach(c).to("body").show({isAnimated:this.config.animated}),this.backdropRef=this._backdropLoader._componentRef))}_hideBackdrop(){this.backdropRef&&(this.backdropRef.instance.isShown=!1,setTimeout(()=>this.removeBackdrop(),this.config.animated?150:0))}_showModal(t){const e=this.loaders[this.loaders.length-1],n=new u,a=e.provide({provide:o,useValue:this.config}).provide({provide:u,useValue:n}).attach(d).to("body").show({content:t,isAnimated:this.config.animated,initialState:this.config.initialState,bsModalService:this});return a.instance.level=this.getModalsCount(),n.hide=()=>{setTimeout(()=>a.instance.hide(),this.config.animated?300:0)},n.content=e.getInnerComponent()||null,n.setClass=t=>{a.instance.config.class=t},n}_hideModal(t){const e=this.loaders[t-1];e&&e.hide()}getModalsCount(){return this.modalsCount}setDismissReason(t){this.lastDismissReason=t}removeBackdrop(){this._backdropLoader.hide(),this.backdropRef=null}checkScrollbar(){this.isBodyOverflowing=document.body.clientWidth<window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()}setScrollbar(){document&&(this.originalBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")||"0",10),this.isBodyOverflowing&&(document.body.style.paddingRight=this.originalBodyPadding+this.scrollbarWidth+"px"))}resetScrollbar(){document.body.style.paddingRight=this.originalBodyPadding+"px"}getScrollbarWidth(){const t=this._renderer.createElement("div");this._renderer.addClass(t,"modal-scrollbar-measure"),this._renderer.appendChild(document.body,t);const e=t.offsetWidth-t.clientWidth;return this._renderer.removeChild(document.body,t),e}_createLoaders(){const t=this.clf.createLoader(null,null,null);this.copyEvent(t.onBeforeShow,this.onShow),this.copyEvent(t.onShown,this.onShown),this.copyEvent(t.onBeforeHide,this.onHide),this.copyEvent(t.onHidden,this.onHidden),this.loaders.push(t)}removeLoaders(t){this.loaders.splice(t-1,1),this.loaders.forEach((t,e)=>{t.instance.level=e+1})}copyEvent(t,e){t.subscribe(()=>{e.emit(this.lastDismissReason)})}}class h{static forRoot(){return{ngModule:h,providers:[f,i.a,s.a]}}static forChild(){return{ngModule:h,providers:[f,i.a,s.a]}}}},LvDl:function(t,e,n){(function(t){var a;(function(){var r="Expected a function",i="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],u="[object Arguments]",o="[object Array]",l="[object Boolean]",d="[object Date]",c="[object Error]",f="[object Function]",h="[object GeneratorFunction]",g="[object Map]",p="[object Number]",b="[object Object]",m="[object RegExp]",y="[object Set]",v="[object String]",x="[object Symbol]",_="[object WeakMap]",T="[object ArrayBuffer]",w="[object DataView]",O="[object Float32Array]",S="[object Float64Array]",I="[object Int8Array]",N="[object Int16Array]",C="[object Int32Array]",R="[object Uint8Array]",A="[object Uint16Array]",k="[object Uint32Array]",E=/\b__p \+= '';/g,L=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,M=/[&<>"']/g,q=RegExp(P.source),j=RegExp(M.source),F=/<%-([\s\S]+?)%>/g,V=/<%([\s\S]+?)%>/g,G=/<%=([\s\S]+?)%>/g,B=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,z=/^\w*$/,Y=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,H=/[\\^$.*+?()[\]{}|]/g,U=RegExp(H.source),W=/^\s+|\s+$/g,K=/^\s+/,$=/\s+$/,J=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Z=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,X=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,at=/^[-+]0x[0-9a-f]+$/i,rt=/^0b[01]+$/i,it=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,ut=/^(?:0|[1-9]\d*)$/,ot=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt=/($^)/,dt=/['\n\r\u2028\u2029\\]/g,ct="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ft="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ht="["+ft+"]",gt="["+ct+"]",pt="\\d+",bt="[a-z\\xdf-\\xf6\\xf8-\\xff]",mt="[^\\ud800-\\udfff"+ft+pt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",yt="\\ud83c[\\udffb-\\udfff]",vt="[^\\ud800-\\udfff]",xt="(?:\\ud83c[\\udde6-\\uddff]){2}",_t="[\\ud800-\\udbff][\\udc00-\\udfff]",Tt="[A-Z\\xc0-\\xd6\\xd8-\\xde]",wt="(?:"+bt+"|"+mt+")",Ot="(?:"+Tt+"|"+mt+")",St="(?:"+gt+"|"+yt+")?",It="[\\ufe0e\\ufe0f]?"+St+"(?:\\u200d(?:"+[vt,xt,_t].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*",Nt="(?:"+["[\\u2700-\\u27bf]",xt,_t].join("|")+")"+It,Ct="(?:"+[vt+gt+"?",gt,xt,_t,"[\\ud800-\\udfff]"].join("|")+")",Rt=RegExp("['’]","g"),At=RegExp(gt,"g"),kt=RegExp(yt+"(?="+yt+")|"+Ct+It,"g"),Et=RegExp([Tt+"?"+bt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ht,Tt,"$"].join("|")+")",Ot+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ht,Tt+wt,"$"].join("|")+")",Tt+"?"+wt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Tt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",pt,Nt].join("|"),"g"),Lt=RegExp("[\\u200d\\ud800-\\udfff"+ct+"\\ufe0e\\ufe0f]"),Dt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Mt=-1,qt={};qt[O]=qt[S]=qt[I]=qt[N]=qt[C]=qt[R]=qt["[object Uint8ClampedArray]"]=qt[A]=qt[k]=!0,qt[u]=qt[o]=qt[T]=qt[l]=qt[w]=qt[d]=qt[c]=qt[f]=qt[g]=qt[p]=qt[b]=qt[m]=qt[y]=qt[v]=qt[_]=!1;var jt={};jt[u]=jt[o]=jt[T]=jt[w]=jt[l]=jt[d]=jt[O]=jt[S]=jt[I]=jt[N]=jt[C]=jt[g]=jt[p]=jt[b]=jt[m]=jt[y]=jt[v]=jt[x]=jt[R]=jt["[object Uint8ClampedArray]"]=jt[A]=jt[k]=!0,jt[c]=jt[f]=jt[_]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Vt=parseFloat,Gt=parseInt,Bt="object"==typeof global&&global&&global.Object===Object&&global,zt="object"==typeof self&&self&&self.Object===Object&&self,Yt=Bt||zt||Function("return this")(),Ht=e&&!e.nodeType&&e,Ut=Ht&&"object"==typeof t&&t&&!t.nodeType&&t,Wt=Ut&&Ut.exports===Ht,Kt=Wt&&Bt.process,$t=function(){try{return Ut&&Ut.require&&Ut.require("util").types||Kt&&Kt.binding&&Kt.binding("util")}catch(t){}}(),Jt=$t&&$t.isArrayBuffer,Zt=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,te=$t&&$t.isSet,ee=$t&&$t.isTypedArray;function ne(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function ae(t,e,n,a){for(var r=-1,i=null==t?0:t.length;++r<i;){var s=t[r];e(a,s,n(s),t)}return a}function re(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}function ie(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function se(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}function ue(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}function oe(t,e){return!(null==t||!t.length)&&ye(t,e,0)>-1}function le(t,e,n){for(var a=-1,r=null==t?0:t.length;++a<r;)if(n(e,t[a]))return!0;return!1}function de(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}function ce(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}function fe(t,e,n,a){var r=-1,i=null==t?0:t.length;for(a&&i&&(n=t[++r]);++r<i;)n=e(n,t[r],r,t);return n}function he(t,e,n,a){var r=null==t?0:t.length;for(a&&r&&(n=t[--r]);r--;)n=e(n,t[r],r,t);return n}function ge(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}var pe=Te("length");function be(t,e,n){var a;return n(t,(function(t,n,r){if(e(t,n,r))return a=n,!1})),a}function me(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}function ye(t,e,n){return e==e?function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}(t,e,n):me(t,xe,n)}function ve(t,e,n,a){for(var r=n-1,i=t.length;++r<i;)if(a(t[r],e))return r;return-1}function xe(t){return t!=t}function _e(t,e){var n=null==t?0:t.length;return n?Se(t,e)/n:NaN}function Te(t){return function(e){return null==e?void 0:e[t]}}function we(t){return function(e){return null==t?void 0:t[e]}}function Oe(t,e,n,a,r){return r(t,(function(t,r,i){n=a?(a=!1,t):e(n,t,r,i)})),n}function Se(t,e){for(var n,a=-1,r=t.length;++a<r;){var i=e(t[a]);void 0!==i&&(n=void 0===n?i:n+i)}return n}function Ie(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}function Ne(t){return function(e){return t(e)}}function Ce(t,e){return de(e,(function(e){return t[e]}))}function Re(t,e){return t.has(e)}function Ae(t,e){for(var n=-1,a=t.length;++n<a&&ye(e,t[n],0)>-1;);return n}function ke(t,e){for(var n=t.length;n--&&ye(e,t[n],0)>-1;);return n}function Ee(t,e){for(var n=t.length,a=0;n--;)t[n]===e&&++a;return a}var Le=we({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),De=we({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function Pe(t){return"\\"+Ft[t]}function Me(t){return Lt.test(t)}function qe(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}function je(t,e){return function(n){return t(e(n))}}function Fe(t,e){for(var n=-1,a=t.length,r=0,s=[];++n<a;){var u=t[n];u!==e&&u!==i||(t[n]=i,s[r++]=n)}return s}function Ve(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}function Ge(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=[t,t]})),n}function Be(t){return Me(t)?function(t){for(var e=kt.lastIndex=0;kt.test(t);)++e;return e}(t):pe(t)}function ze(t){return Me(t)?function(t){return t.match(kt)||[]}(t):function(t){return t.split("")}(t)}var Ye=we({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),He=function t(e){var n,a=(e=null==e?Yt:He.defaults(Yt.Object(),e,He.pick(Yt,Pt))).Array,ct=e.Date,ft=e.Error,ht=e.Function,gt=e.Math,pt=e.Object,bt=e.RegExp,mt=e.String,yt=e.TypeError,vt=a.prototype,xt=pt.prototype,_t=e["__core-js_shared__"],Tt=ht.prototype.toString,wt=xt.hasOwnProperty,Ot=0,St=(n=/[^.]+$/.exec(_t&&_t.keys&&_t.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",It=xt.toString,Nt=Tt.call(pt),Ct=Yt._,kt=bt("^"+Tt.call(wt).replace(H,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Lt=Wt?e.Buffer:void 0,Ft=e.Symbol,Bt=e.Uint8Array,zt=Lt?Lt.allocUnsafe:void 0,Ht=je(pt.getPrototypeOf,pt),Ut=pt.create,Kt=xt.propertyIsEnumerable,$t=vt.splice,pe=Ft?Ft.isConcatSpreadable:void 0,we=Ft?Ft.iterator:void 0,Ue=Ft?Ft.toStringTag:void 0,We=function(){try{var t=Zr(pt,"defineProperty");return t({},"",{}),t}catch(e){}}(),Ke=e.clearTimeout!==Yt.clearTimeout&&e.clearTimeout,$e=ct&&ct.now!==Yt.Date.now&&ct.now,Je=e.setTimeout!==Yt.setTimeout&&e.setTimeout,Ze=gt.ceil,Qe=gt.floor,Xe=pt.getOwnPropertySymbols,tn=Lt?Lt.isBuffer:void 0,en=e.isFinite,nn=vt.join,an=je(pt.keys,pt),rn=gt.max,sn=gt.min,un=ct.now,on=e.parseInt,ln=gt.random,dn=vt.reverse,cn=Zr(e,"DataView"),fn=Zr(e,"Map"),hn=Zr(e,"Promise"),gn=Zr(e,"Set"),pn=Zr(e,"WeakMap"),bn=Zr(pt,"create"),mn=pn&&new pn,yn={},vn=Ii(cn),xn=Ii(fn),_n=Ii(hn),Tn=Ii(gn),wn=Ii(pn),On=Ft?Ft.prototype:void 0,Sn=On?On.valueOf:void 0,In=On?On.toString:void 0;function Nn(t){if(zs(t)&&!Es(t)&&!(t instanceof kn)){if(t instanceof An)return t;if(wt.call(t,"__wrapped__"))return Ni(t)}return new An(t)}var Cn=function(){function t(){}return function(e){if(!Bs(e))return{};if(Ut)return Ut(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Rn(){}function An(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function kn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function En(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Ln(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Dn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Pn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Dn;++e<n;)this.add(t[e])}function Mn(t){var e=this.__data__=new Ln(t);this.size=e.size}function qn(t,e){var n=Es(t),a=!n&&ks(t),r=!n&&!a&&Ms(t),i=!n&&!a&&!r&&Zs(t),s=n||a||r||i,u=s?Ie(t.length,mt):[],o=u.length;for(var l in t)!e&&!wt.call(t,l)||s&&("length"==l||r&&("offset"==l||"parent"==l)||i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||ri(l,o))||u.push(l);return u}function jn(t){var e=t.length;return e?t[Da(0,e-1)]:void 0}function Fn(t,e){return _i(pr(t),Kn(e,0,t.length))}function Vn(t){return _i(pr(t))}function Gn(t,e,n){(void 0!==n&&!Cs(t[e],n)||void 0===n&&!(e in t))&&Un(t,e,n)}function Bn(t,e,n){var a=t[e];wt.call(t,e)&&Cs(a,n)&&(void 0!==n||e in t)||Un(t,e,n)}function zn(t,e){for(var n=t.length;n--;)if(Cs(t[n][0],e))return n;return-1}function Yn(t,e,n,a){return Xn(t,(function(t,r,i){e(a,t,n(t),i)})),a}function Hn(t,e){return t&&br(e,vu(e),t)}function Un(t,e,n){"__proto__"==e&&We?We(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Wn(t,e){for(var n=-1,r=e.length,i=a(r),s=null==t;++n<r;)i[n]=s?void 0:gu(t,e[n]);return i}function Kn(t,e,n){return t==t&&(void 0!==n&&(t=t<=n?t:n),void 0!==e&&(t=t>=e?t:e)),t}function $n(t,e,n,a,r,i){var s,o=1&e,c=2&e,_=4&e;if(n&&(s=r?n(t,a,r,i):n(t)),void 0!==s)return s;if(!Bs(t))return t;var E=Es(t);if(E){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&wt.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!o)return pr(t,s)}else{var L=ti(t),D=L==f||L==h;if(Ms(t))return lr(t,o);if(L==b||L==u||D&&!r){if(s=c||D?{}:ni(t),!o)return c?function(t,e){return br(t,Xr(t),e)}(t,function(t,e){return t&&br(e,xu(e),t)}(s,t)):function(t,e){return br(t,Qr(t),e)}(t,Hn(s,t))}else{if(!jt[L])return r?t:{};s=function(t,e,n){var a=t.constructor;switch(e){case T:return dr(t);case l:case d:return new a(+t);case w:return function(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case O:case S:case I:case N:case C:case R:case"[object Uint8ClampedArray]":case A:case k:return cr(t,n);case g:return new a;case p:case v:return new a(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new a;case x:return Sn?pt(Sn.call(t)):{}}}(t,L,o)}}i||(i=new Mn);var P=i.get(t);if(P)return P;i.set(t,s),Ks(t)?t.forEach((function(a){s.add($n(a,e,n,a,t,i))})):Ys(t)&&t.forEach((function(a,r){s.set(r,$n(a,e,n,r,t,i))}));var M=E?void 0:(_?c?Yr:zr:c?xu:vu)(t);return re(M||t,(function(a,r){M&&(a=t[r=a]),Bn(s,r,$n(a,e,n,r,t,i))})),s}function Jn(t,e,n){var a=n.length;if(null==t)return!a;for(t=pt(t);a--;){var r=n[a],i=t[r];if(void 0===i&&!(r in t)||!(0,e[r])(i))return!1}return!0}function Zn(t,e,n){if("function"!=typeof t)throw new yt(r);return mi((function(){t.apply(void 0,n)}),e)}function Qn(t,e,n,a){var r=-1,i=oe,s=!0,u=t.length,o=[],l=e.length;if(!u)return o;n&&(e=de(e,Ne(n))),a?(i=le,s=!1):e.length>=200&&(i=Re,s=!1,e=new Pn(e));t:for(;++r<u;){var d=t[r],c=null==n?d:n(d);if(d=a||0!==d?d:0,s&&c==c){for(var f=l;f--;)if(e[f]===c)continue t;o.push(d)}else i(e,c,a)||o.push(d)}return o}Nn.templateSettings={escape:F,evaluate:V,interpolate:G,variable:"",imports:{_:Nn}},(Nn.prototype=Rn.prototype).constructor=Nn,(An.prototype=Cn(Rn.prototype)).constructor=An,(kn.prototype=Cn(Rn.prototype)).constructor=kn,En.prototype.clear=function(){this.__data__=bn?bn(null):{},this.size=0},En.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},En.prototype.get=function(t){var e=this.__data__;if(bn){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return wt.call(e,t)?e[t]:void 0},En.prototype.has=function(t){var e=this.__data__;return bn?void 0!==e[t]:wt.call(e,t)},En.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=bn&&void 0===e?"__lodash_hash_undefined__":e,this},Ln.prototype.clear=function(){this.__data__=[],this.size=0},Ln.prototype.delete=function(t){var e=this.__data__,n=zn(e,t);return!(n<0||(n==e.length-1?e.pop():$t.call(e,n,1),--this.size,0))},Ln.prototype.get=function(t){var e=this.__data__,n=zn(e,t);return n<0?void 0:e[n][1]},Ln.prototype.has=function(t){return zn(this.__data__,t)>-1},Ln.prototype.set=function(t,e){var n=this.__data__,a=zn(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new En,map:new(fn||Ln),string:new En}},Dn.prototype.delete=function(t){var e=$r(this,t).delete(t);return this.size-=e?1:0,e},Dn.prototype.get=function(t){return $r(this,t).get(t)},Dn.prototype.has=function(t){return $r(this,t).has(t)},Dn.prototype.set=function(t,e){var n=$r(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this},Pn.prototype.add=Pn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.clear=function(){this.__data__=new Ln,this.size=0},Mn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Mn.prototype.get=function(t){return this.__data__.get(t)},Mn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Ln){var a=n.__data__;if(!fn||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new Dn(a)}return n.set(t,e),this.size=n.size,this};var Xn=vr(ua),ta=vr(oa,!0);function ea(t,e){var n=!0;return Xn(t,(function(t,a,r){return n=!!e(t,a,r)})),n}function na(t,e,n){for(var a=-1,r=t.length;++a<r;){var i=t[a],s=e(i);if(null!=s&&(void 0===u?s==s&&!Js(s):n(s,u)))var u=s,o=i}return o}function aa(t,e){var n=[];return Xn(t,(function(t,a,r){e(t,a,r)&&n.push(t)})),n}function ra(t,e,n,a,r){var i=-1,s=t.length;for(n||(n=ai),r||(r=[]);++i<s;){var u=t[i];e>0&&n(u)?e>1?ra(u,e-1,n,a,r):ce(r,u):a||(r[r.length]=u)}return r}var ia=xr(),sa=xr(!0);function ua(t,e){return t&&ia(t,e,vu)}function oa(t,e){return t&&sa(t,e,vu)}function la(t,e){return ue(e,(function(e){return Fs(t[e])}))}function da(t,e){for(var n=0,a=(e=ir(e,t)).length;null!=t&&n<a;)t=t[Si(e[n++])];return n&&n==a?t:void 0}function ca(t,e,n){var a=e(t);return Es(t)?a:ce(a,n(t))}function fa(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Ue&&Ue in pt(t)?function(t){var e=wt.call(t,Ue),n=t[Ue];try{t[Ue]=void 0;var a=!0}catch(i){}var r=It.call(t);return a&&(e?t[Ue]=n:delete t[Ue]),r}(t):function(t){return It.call(t)}(t)}function ha(t,e){return t>e}function ga(t,e){return null!=t&&wt.call(t,e)}function pa(t,e){return null!=t&&e in pt(t)}function ba(t,e,n){for(var r=n?le:oe,i=t[0].length,s=t.length,u=s,o=a(s),l=1/0,d=[];u--;){var c=t[u];u&&e&&(c=de(c,Ne(e))),l=sn(c.length,l),o[u]=!n&&(e||i>=120&&c.length>=120)?new Pn(u&&c):void 0}c=t[0];var f=-1,h=o[0];t:for(;++f<i&&d.length<l;){var g=c[f],p=e?e(g):g;if(g=n||0!==g?g:0,!(h?Re(h,p):r(d,p,n))){for(u=s;--u;){var b=o[u];if(!(b?Re(b,p):r(t[u],p,n)))continue t}h&&h.push(p),d.push(g)}}return d}function ma(t,e,n){var a=null==(t=hi(t,e=ir(e,t)))?t:t[Si(ji(e))];return null==a?void 0:ne(a,t,n)}function ya(t){return zs(t)&&fa(t)==u}function va(t,e,n,a,r){return t===e||(null==t||null==e||!zs(t)&&!zs(e)?t!=t&&e!=e:function(t,e,n,a,r,i){var s=Es(t),f=Es(e),h=s?o:ti(t),_=f?o:ti(e),O=(h=h==u?b:h)==b,S=(_=_==u?b:_)==b,I=h==_;if(I&&Ms(t)){if(!Ms(e))return!1;s=!0,O=!1}if(I&&!O)return i||(i=new Mn),s||Zs(t)?Gr(t,e,n,a,r,i):function(t,e,n,a,r,i,s){switch(n){case w:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case T:return!(t.byteLength!=e.byteLength||!i(new Bt(t),new Bt(e)));case l:case d:case p:return Cs(+t,+e);case c:return t.name==e.name&&t.message==e.message;case m:case v:return t==e+"";case g:var u=qe;case y:if(u||(u=Ve),t.size!=e.size&&!(1&a))return!1;var o=s.get(t);if(o)return o==e;a|=2,s.set(t,e);var f=Gr(u(t),u(e),a,r,i,s);return s.delete(t),f;case x:if(Sn)return Sn.call(t)==Sn.call(e)}return!1}(t,e,h,n,a,r,i);if(!(1&n)){var N=O&&wt.call(t,"__wrapped__"),C=S&&wt.call(e,"__wrapped__");if(N||C){var R=N?t.value():t,A=C?e.value():e;return i||(i=new Mn),r(R,A,n,a,i)}}return!!I&&(i||(i=new Mn),function(t,e,n,a,r,i){var s=1&n,u=zr(t),o=u.length;if(o!=zr(e).length&&!s)return!1;for(var l=o;l--;){var d=u[l];if(!(s?d in e:wt.call(e,d)))return!1}var c=i.get(t),f=i.get(e);if(c&&f)return c==e&&f==t;var h=!0;i.set(t,e),i.set(e,t);for(var g=s;++l<o;){var p=t[d=u[l]],b=e[d];if(a)var m=s?a(b,p,d,e,t,i):a(p,b,d,t,e,i);if(!(void 0===m?p===b||r(p,b,n,a,i):m)){h=!1;break}g||(g="constructor"==d)}if(h&&!g){var y=t.constructor,v=e.constructor;y==v||!("constructor"in t)||!("constructor"in e)||"function"==typeof y&&y instanceof y&&"function"==typeof v&&v instanceof v||(h=!1)}return i.delete(t),i.delete(e),h}(t,e,n,a,r,i))}(t,e,n,a,va,r))}function xa(t,e,n,a){var r=n.length,i=r,s=!a;if(null==t)return!i;for(t=pt(t);r--;){var u=n[r];if(s&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++r<i;){var o=(u=n[r])[0],l=t[o],d=u[1];if(s&&u[2]){if(void 0===l&&!(o in t))return!1}else{var c=new Mn;if(a)var f=a(l,d,o,t,e,c);if(!(void 0===f?va(d,l,3,a,c):f))return!1}}return!0}function _a(t){return!(!Bs(t)||(e=t,St&&St in e))&&(Fs(t)?kt:it).test(Ii(t));var e}function Ta(t){return"function"==typeof t?t:null==t?Hu:"object"==typeof t?Es(t)?Na(t[0],t[1]):Ia(t):to(t)}function wa(t){if(!li(t))return an(t);var e=[];for(var n in pt(t))wt.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Oa(t,e){return t<e}function Sa(t,e){var n=-1,r=Ds(t)?a(t.length):[];return Xn(t,(function(t,a,i){r[++n]=e(t,a,i)})),r}function Ia(t){var e=Jr(t);return 1==e.length&&e[0][2]?ci(e[0][0],e[0][1]):function(n){return n===t||xa(n,t,e)}}function Na(t,e){return si(t)&&di(e)?ci(Si(t),e):function(n){var a=gu(n,t);return void 0===a&&a===e?pu(n,t):va(e,a,3)}}function Ca(t,e,n,a,r){t!==e&&ia(e,(function(i,s){if(r||(r=new Mn),Bs(i))!function(t,e,n,a,r,i,s){var u=pi(t,n),o=pi(e,n),l=s.get(o);if(l)Gn(t,n,l);else{var d=i?i(u,o,n+"",t,e,s):void 0,c=void 0===d;if(c){var f=Es(o),h=!f&&Ms(o),g=!f&&!h&&Zs(o);d=o,f||h||g?Es(u)?d=u:Ps(u)?d=pr(u):h?(c=!1,d=lr(o,!0)):g?(c=!1,d=cr(o,!0)):d=[]:Us(o)||ks(o)?(d=u,ks(u)?d=iu(u):Bs(u)&&!Fs(u)||(d=ni(o))):c=!1}c&&(s.set(o,d),r(d,o,a,i,s),s.delete(o)),Gn(t,n,d)}}(t,e,s,n,Ca,a,r);else{var u=a?a(pi(t,s),i,s+"",t,e,r):void 0;void 0===u&&(u=i),Gn(t,s,u)}}),xu)}function Ra(t,e){var n=t.length;if(n)return ri(e+=e<0?n:0,n)?t[e]:void 0}function Aa(t,e,n){e=e.length?de(e,(function(t){return Es(t)?function(e){return da(e,1===t.length?t[0]:t)}:t})):[Hu];var a=-1;return e=de(e,Ne(Kr())),function(t,e){var a=t.length;for(t.sort((function(t,e){return function(t,e,n){for(var a=-1,r=t.criteria,i=e.criteria,s=r.length,u=n.length;++a<s;){var o=fr(r[a],i[a]);if(o)return a>=u?o:o*("desc"==n[a]?-1:1)}return t.index-e.index}(t,e,n)}));a--;)t[a]=t[a].value;return t}(Sa(t,(function(t,n,r){return{criteria:de(e,(function(e){return e(t)})),index:++a,value:t}})))}function ka(t,e,n){for(var a=-1,r=e.length,i={};++a<r;){var s=e[a],u=da(t,s);n(u,s)&&Fa(i,ir(s,t),u)}return i}function Ea(t,e,n,a){var r=a?ve:ye,i=-1,s=e.length,u=t;for(t===e&&(e=pr(e)),n&&(u=de(t,Ne(n)));++i<s;)for(var o=0,l=e[i],d=n?n(l):l;(o=r(u,d,o,a))>-1;)u!==t&&$t.call(u,o,1),$t.call(t,o,1);return t}function La(t,e){for(var n=t?e.length:0,a=n-1;n--;){var r=e[n];if(n==a||r!==i){var i=r;ri(r)?$t.call(t,r,1):Za(t,r)}}return t}function Da(t,e){return t+Qe(ln()*(e-t+1))}function Pa(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=Qe(e/2))&&(t+=t)}while(e);return n}function Ma(t,e){return yi(fi(t,e,Hu),t+"")}function qa(t){return jn(Cu(t))}function ja(t,e){var n=Cu(t);return _i(n,Kn(e,0,n.length))}function Fa(t,e,n,a){if(!Bs(t))return t;for(var r=-1,i=(e=ir(e,t)).length,s=i-1,u=t;null!=u&&++r<i;){var o=Si(e[r]),l=n;if("__proto__"===o||"constructor"===o||"prototype"===o)return t;if(r!=s){var d=u[o];void 0===(l=a?a(d,o,u):void 0)&&(l=Bs(d)?d:ri(e[r+1])?[]:{})}Bn(u,o,l),u=u[o]}return t}var Va=mn?function(t,e){return mn.set(t,e),t}:Hu,Ga=We?function(t,e){return We(t,"toString",{configurable:!0,enumerable:!1,value:Bu(e),writable:!0})}:Hu;function Ba(t){return _i(Cu(t))}function za(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var s=a(i);++r<i;)s[r]=t[r+e];return s}function Ya(t,e){var n;return Xn(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}function Ha(t,e,n){var a=0,r=null==t?a:t.length;if("number"==typeof e&&e==e&&r<=2147483647){for(;a<r;){var i=a+r>>>1,s=t[i];null!==s&&!Js(s)&&(n?s<=e:s<e)?a=i+1:r=i}return r}return Ua(t,e,Hu,n)}function Ua(t,e,n,a){var r=0,i=null==t?0:t.length;if(0===i)return 0;for(var s=(e=n(e))!=e,u=null===e,o=Js(e),l=void 0===e;r<i;){var d=Qe((r+i)/2),c=n(t[d]),f=void 0!==c,h=null===c,g=c==c,p=Js(c);if(s)var b=a||g;else b=l?g&&(a||f):u?g&&f&&(a||!h):o?g&&f&&!h&&(a||!p):!h&&!p&&(a?c<=e:c<e);b?r=d+1:i=d}return sn(i,4294967294)}function Wa(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var s=t[n],u=e?e(s):s;if(!n||!Cs(u,o)){var o=u;i[r++]=0===s?0:s}}return i}function Ka(t){return"number"==typeof t?t:Js(t)?NaN:+t}function $a(t){if("string"==typeof t)return t;if(Es(t))return de(t,$a)+"";if(Js(t))return In?In.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ja(t,e,n){var a=-1,r=oe,i=t.length,s=!0,u=[],o=u;if(n)s=!1,r=le;else if(i>=200){var l=e?null:Pr(t);if(l)return Ve(l);s=!1,r=Re,o=new Pn}else o=e?[]:u;t:for(;++a<i;){var d=t[a],c=e?e(d):d;if(d=n||0!==d?d:0,s&&c==c){for(var f=o.length;f--;)if(o[f]===c)continue t;e&&o.push(c),u.push(d)}else r(o,c,n)||(o!==u&&o.push(c),u.push(d))}return u}function Za(t,e){return null==(t=hi(t,e=ir(e,t)))||delete t[Si(ji(e))]}function Qa(t,e,n,a){return Fa(t,e,n(da(t,e)),a)}function Xa(t,e,n,a){for(var r=t.length,i=a?r:-1;(a?i--:++i<r)&&e(t[i],i,t););return n?za(t,a?0:i,a?i+1:r):za(t,a?i+1:0,a?r:i)}function tr(t,e){var n=t;return n instanceof kn&&(n=n.value()),fe(e,(function(t,e){return e.func.apply(e.thisArg,ce([t],e.args))}),n)}function er(t,e,n){var r=t.length;if(r<2)return r?Ja(t[0]):[];for(var i=-1,s=a(r);++i<r;)for(var u=t[i],o=-1;++o<r;)o!=i&&(s[i]=Qn(s[i]||u,t[o],e,n));return Ja(ra(s,1),e,n)}function nr(t,e,n){for(var a=-1,r=t.length,i=e.length,s={};++a<r;)n(s,t[a],a<i?e[a]:void 0);return s}function ar(t){return Ps(t)?t:[]}function rr(t){return"function"==typeof t?t:Hu}function ir(t,e){return Es(t)?t:si(t,e)?[t]:Oi(su(t))}var sr=Ma;function ur(t,e,n){var a=t.length;return n=void 0===n?a:n,!e&&n>=a?t:za(t,e,n)}var or=Ke||function(t){return Yt.clearTimeout(t)};function lr(t,e){if(e)return t.slice();var n=t.length,a=zt?zt(n):new t.constructor(n);return t.copy(a),a}function dr(t){var e=new t.constructor(t.byteLength);return new Bt(e).set(new Bt(t)),e}function cr(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function fr(t,e){if(t!==e){var n=void 0!==t,a=null===t,r=t==t,i=Js(t),s=void 0!==e,u=null===e,o=e==e,l=Js(e);if(!u&&!l&&!i&&t>e||i&&s&&o&&!u&&!l||a&&s&&o||!n&&o||!r)return 1;if(!a&&!i&&!l&&t<e||l&&n&&r&&!a&&!i||u&&n&&r||!s&&r||!o)return-1}return 0}function hr(t,e,n,r){for(var i=-1,s=t.length,u=n.length,o=-1,l=e.length,d=rn(s-u,0),c=a(l+d),f=!r;++o<l;)c[o]=e[o];for(;++i<u;)(f||i<s)&&(c[n[i]]=t[i]);for(;d--;)c[o++]=t[i++];return c}function gr(t,e,n,r){for(var i=-1,s=t.length,u=-1,o=n.length,l=-1,d=e.length,c=rn(s-o,0),f=a(c+d),h=!r;++i<c;)f[i]=t[i];for(var g=i;++l<d;)f[g+l]=e[l];for(;++u<o;)(h||i<s)&&(f[g+n[u]]=t[i++]);return f}function pr(t,e){var n=-1,r=t.length;for(e||(e=a(r));++n<r;)e[n]=t[n];return e}function br(t,e,n,a){var r=!n;n||(n={});for(var i=-1,s=e.length;++i<s;){var u=e[i],o=a?a(n[u],t[u],u,n,t):void 0;void 0===o&&(o=t[u]),r?Un(n,u,o):Bn(n,u,o)}return n}function mr(t,e){return function(n,a){var r=Es(n)?ae:Yn,i=e?e():{};return r(n,t,Kr(a,2),i)}}function yr(t){return Ma((function(e,n){var a=-1,r=n.length,i=r>1?n[r-1]:void 0,s=r>2?n[2]:void 0;for(i=t.length>3&&"function"==typeof i?(r--,i):void 0,s&&ii(n[0],n[1],s)&&(i=r<3?void 0:i,r=1),e=pt(e);++a<r;){var u=n[a];u&&t(e,u,a,i)}return e}))}function vr(t,e){return function(n,a){if(null==n)return n;if(!Ds(n))return t(n,a);for(var r=n.length,i=e?r:-1,s=pt(n);(e?i--:++i<r)&&!1!==a(s[i],i,s););return n}}function xr(t){return function(e,n,a){for(var r=-1,i=pt(e),s=a(e),u=s.length;u--;){var o=s[t?u:++r];if(!1===n(i[o],o,i))break}return e}}function _r(t){return function(e){var n=Me(e=su(e))?ze(e):void 0,a=n?n[0]:e.charAt(0),r=n?ur(n,1).join(""):e.slice(1);return a[t]()+r}}function Tr(t){return function(e){return fe(Fu(ku(e).replace(Rt,"")),t,"")}}function wr(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=Cn(t.prototype),a=t.apply(n,e);return Bs(a)?a:n}}function Or(t){return function(e,n,a){var r=pt(e);if(!Ds(e)){var i=Kr(n,3);e=vu(e),n=function(t){return i(r[t],t,r)}}var s=t(e,n,a);return s>-1?r[i?e[s]:s]:void 0}}function Sr(t){return Br((function(e){var n=e.length,a=n,i=An.prototype.thru;for(t&&e.reverse();a--;){var s=e[a];if("function"!=typeof s)throw new yt(r);if(i&&!u&&"wrapper"==Ur(s))var u=new An([],!0)}for(a=u?a:n;++a<n;){var o=Ur(s=e[a]),l="wrapper"==o?Hr(s):void 0;u=l&&ui(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?u[Ur(l[0])].apply(u,l[3]):1==s.length&&ui(s)?u[o]():u.thru(s)}return function(){var t=arguments,a=t[0];if(u&&1==t.length&&Es(a))return u.plant(a).value();for(var r=0,i=n?e[r].apply(this,t):a;++r<n;)i=e[r].call(this,i);return i}}))}function Ir(t,e,n,r,i,s,u,o,l,d){var c=128&e,f=1&e,h=2&e,g=24&e,p=512&e,b=h?void 0:wr(t);return function m(){for(var y=arguments.length,v=a(y),x=y;x--;)v[x]=arguments[x];if(g)var _=Wr(m),T=Ee(v,_);if(r&&(v=hr(v,r,i,g)),s&&(v=gr(v,s,u,g)),y-=T,g&&y<d){var w=Fe(v,_);return Lr(t,e,Ir,m.placeholder,n,v,w,o,l,d-y)}var O=f?n:this,S=h?O[t]:t;return y=v.length,o?v=gi(v,o):p&&y>1&&v.reverse(),c&&l<y&&(v.length=l),this&&this!==Yt&&this instanceof m&&(S=b||wr(S)),S.apply(O,v)}}function Nr(t,e){return function(n,a){return function(t,e,n,a){return ua(t,(function(t,r,i){e(a,n(t),r,i)})),a}(n,t,e(a),{})}}function Cr(t,e){return function(n,a){var r;if(void 0===n&&void 0===a)return e;if(void 0!==n&&(r=n),void 0!==a){if(void 0===r)return a;"string"==typeof n||"string"==typeof a?(n=$a(n),a=$a(a)):(n=Ka(n),a=Ka(a)),r=t(n,a)}return r}}function Rr(t){return Br((function(e){return e=de(e,Ne(Kr())),Ma((function(n){var a=this;return t(e,(function(t){return ne(t,a,n)}))}))}))}function Ar(t,e){var n=(e=void 0===e?" ":$a(e)).length;if(n<2)return n?Pa(e,t):e;var a=Pa(e,Ze(t/Be(e)));return Me(e)?ur(ze(a),0,t).join(""):a.slice(0,t)}function kr(t){return function(e,n,r){return r&&"number"!=typeof r&&ii(e,n,r)&&(n=r=void 0),e=eu(e),void 0===n?(n=e,e=0):n=eu(n),function(t,e,n,r){for(var i=-1,s=rn(Ze((e-t)/(n||1)),0),u=a(s);s--;)u[r?s:++i]=t,t+=n;return u}(e,n,r=void 0===r?e<n?1:-1:eu(r),t)}}function Er(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=ru(e),n=ru(n)),t(e,n)}}function Lr(t,e,n,a,r,i,s,u,o,l){var d=8&e;e|=d?32:64,4&(e&=~(d?64:32))||(e&=-4);var c=[t,e,r,d?i:void 0,d?s:void 0,d?void 0:i,d?void 0:s,u,o,l],f=n.apply(void 0,c);return ui(t)&&bi(f,c),f.placeholder=a,vi(f,t,e)}function Dr(t){var e=gt[t];return function(t,n){if(t=ru(t),(n=null==n?0:sn(nu(n),292))&&en(t)){var a=(su(t)+"e").split("e");return+((a=(su(e(a[0]+"e"+(+a[1]+n)))+"e").split("e"))[0]+"e"+(+a[1]-n))}return e(t)}}var Pr=gn&&1/Ve(new gn([,-0]))[1]==1/0?function(t){return new gn(t)}:Ju;function Mr(t){return function(e){var n=ti(e);return n==g?qe(e):n==y?Ge(e):function(t,e){return de(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function qr(t,e,n,s,u,o,l,d){var c=2&e;if(!c&&"function"!=typeof t)throw new yt(r);var f=s?s.length:0;if(f||(e&=-97,s=u=void 0),l=void 0===l?l:rn(nu(l),0),d=void 0===d?d:nu(d),f-=u?u.length:0,64&e){var h=s,g=u;s=u=void 0}var p=c?void 0:Hr(t),b=[t,e,n,s,u,h,g,o,l,d];if(p&&function(t,e){var n=t[1],a=e[1],r=n|a;if(!(r<131||128==a&&8==n||128==a&&256==n&&t[7].length<=e[8]||384==a&&e[7].length<=e[8]&&8==n))return t;1&a&&(t[2]=e[2],r|=1&n?0:4);var s=e[3];if(s){var u=t[3];t[3]=u?hr(u,s,e[4]):s,t[4]=u?Fe(t[3],i):e[4]}(s=e[5])&&(t[5]=(u=t[5])?gr(u,s,e[6]):s,t[6]=u?Fe(t[5],i):e[6]),(s=e[7])&&(t[7]=s),128&a&&(t[8]=null==t[8]?e[8]:sn(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=r}(b,p),t=b[0],e=b[1],n=b[2],s=b[3],u=b[4],!(d=b[9]=void 0===b[9]?c?0:t.length:rn(b[9]-f,0))&&24&e&&(e&=-25),e&&1!=e)m=8==e||16==e?function(t,e,n){var r=wr(t);return function i(){for(var s=arguments.length,u=a(s),o=s,l=Wr(i);o--;)u[o]=arguments[o];var d=s<3&&u[0]!==l&&u[s-1]!==l?[]:Fe(u,l);if((s-=d.length)<n)return Lr(t,e,Ir,i.placeholder,void 0,u,d,void 0,void 0,n-s);var c=this&&this!==Yt&&this instanceof i?r:t;return ne(c,this,u)}}(t,e,d):32!=e&&33!=e||u.length?Ir.apply(void 0,b):function(t,e,n,r){var i=1&e,s=wr(t);return function e(){for(var u=-1,o=arguments.length,l=-1,d=r.length,c=a(d+o),f=this&&this!==Yt&&this instanceof e?s:t;++l<d;)c[l]=r[l];for(;o--;)c[l++]=arguments[++u];return ne(f,i?n:this,c)}}(t,e,n,s);else var m=function(t,e,n){var a=1&e,r=wr(t);return function e(){var i=this&&this!==Yt&&this instanceof e?r:t;return i.apply(a?n:this,arguments)}}(t,e,n);return vi((p?Va:bi)(m,b),t,e)}function jr(t,e,n,a){return void 0===t||Cs(t,xt[n])&&!wt.call(a,n)?e:t}function Fr(t,e,n,a,r,i){return Bs(t)&&Bs(e)&&(i.set(e,t),Ca(t,e,void 0,Fr,i),i.delete(e)),t}function Vr(t){return Us(t)?void 0:t}function Gr(t,e,n,a,r,i){var s=1&n,u=t.length,o=e.length;if(u!=o&&!(s&&o>u))return!1;var l=i.get(t),d=i.get(e);if(l&&d)return l==e&&d==t;var c=-1,f=!0,h=2&n?new Pn:void 0;for(i.set(t,e),i.set(e,t);++c<u;){var g=t[c],p=e[c];if(a)var b=s?a(p,g,c,e,t,i):a(g,p,c,t,e,i);if(void 0!==b){if(b)continue;f=!1;break}if(h){if(!ge(e,(function(t,e){if(!Re(h,e)&&(g===t||r(g,t,n,a,i)))return h.push(e)}))){f=!1;break}}else if(g!==p&&!r(g,p,n,a,i)){f=!1;break}}return i.delete(t),i.delete(e),f}function Br(t){return yi(fi(t,void 0,Li),t+"")}function zr(t){return ca(t,vu,Qr)}function Yr(t){return ca(t,xu,Xr)}var Hr=mn?function(t){return mn.get(t)}:Ju;function Ur(t){for(var e=t.name+"",n=yn[e],a=wt.call(yn,e)?n.length:0;a--;){var r=n[a],i=r.func;if(null==i||i==t)return r.name}return e}function Wr(t){return(wt.call(Nn,"placeholder")?Nn:t).placeholder}function Kr(){var t=Nn.iteratee||Uu;return t=t===Uu?Ta:t,arguments.length?t(arguments[0],arguments[1]):t}function $r(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function Jr(t){for(var e=vu(t),n=e.length;n--;){var a=e[n],r=t[a];e[n]=[a,r,di(r)]}return e}function Zr(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return _a(n)?n:void 0}var Qr=Xe?function(t){return null==t?[]:(t=pt(t),ue(Xe(t),(function(e){return Kt.call(t,e)})))}:ao,Xr=Xe?function(t){for(var e=[];t;)ce(e,Qr(t)),t=Ht(t);return e}:ao,ti=fa;function ei(t,e,n){for(var a=-1,r=(e=ir(e,t)).length,i=!1;++a<r;){var s=Si(e[a]);if(!(i=null!=t&&n(t,s)))break;t=t[s]}return i||++a!=r?i:!!(r=null==t?0:t.length)&&Gs(r)&&ri(s,r)&&(Es(t)||ks(t))}function ni(t){return"function"!=typeof t.constructor||li(t)?{}:Cn(Ht(t))}function ai(t){return Es(t)||ks(t)||!!(pe&&t&&t[pe])}function ri(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&ut.test(t))&&t>-1&&t%1==0&&t<e}function ii(t,e,n){if(!Bs(n))return!1;var a=typeof e;return!!("number"==a?Ds(n)&&ri(e,n.length):"string"==a&&e in n)&&Cs(n[e],t)}function si(t,e){if(Es(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Js(t))||z.test(t)||!B.test(t)||null!=e&&t in pt(e)}function ui(t){var e=Ur(t),n=Nn[e];if("function"!=typeof n||!(e in kn.prototype))return!1;if(t===n)return!0;var a=Hr(n);return!!a&&t===a[0]}(cn&&ti(new cn(new ArrayBuffer(1)))!=w||fn&&ti(new fn)!=g||hn&&"[object Promise]"!=ti(hn.resolve())||gn&&ti(new gn)!=y||pn&&ti(new pn)!=_)&&(ti=function(t){var e=fa(t),n=e==b?t.constructor:void 0,a=n?Ii(n):"";if(a)switch(a){case vn:return w;case xn:return g;case _n:return"[object Promise]";case Tn:return y;case wn:return _}return e});var oi=_t?Fs:ro;function li(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||xt)}function di(t){return t==t&&!Bs(t)}function ci(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in pt(n))}}function fi(t,e,n){return e=rn(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,s=rn(r.length-e,0),u=a(s);++i<s;)u[i]=r[e+i];i=-1;for(var o=a(e+1);++i<e;)o[i]=r[i];return o[e]=n(u),ne(t,this,o)}}function hi(t,e){return e.length<2?t:da(t,za(e,0,-1))}function gi(t,e){for(var n=t.length,a=sn(e.length,n),r=pr(t);a--;){var i=e[a];t[a]=ri(i,n)?r[i]:void 0}return t}function pi(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var bi=xi(Va),mi=Je||function(t,e){return Yt.setTimeout(t,e)},yi=xi(Ga);function vi(t,e,n){var a=e+"";return yi(t,function(t,e){var n=e.length;if(!n)return t;var a=n-1;return e[a]=(n>1?"& ":"")+e[a],e=e.join(n>2?", ":" "),t.replace(J,"{\n/* [wrapped with "+e+"] */\n")}(a,function(t,e){return re(s,(function(n){var a="_."+n[0];e&n[1]&&!oe(t,a)&&t.push(a)})),t.sort()}(function(t){var e=t.match(Z);return e?e[1].split(Q):[]}(a),n)))}function xi(t){var e=0,n=0;return function(){var a=un(),r=16-(a-n);if(n=a,r>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function _i(t,e){var n=-1,a=t.length,r=a-1;for(e=void 0===e?a:e;++n<e;){var i=Da(n,r),s=t[i];t[i]=t[n],t[n]=s}return t.length=e,t}var Ti,wi,Oi=(Ti=Ts((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Y,(function(t,n,a,r){e.push(a?r.replace(tt,"$1"):n||t)})),e}),(function(t){return 500===wi.size&&wi.clear(),t})),wi=Ti.cache,Ti);function Si(t){if("string"==typeof t||Js(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ii(t){if(null!=t){try{return Tt.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function Ni(t){if(t instanceof kn)return t.clone();var e=new An(t.__wrapped__,t.__chain__);return e.__actions__=pr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Ci=Ma((function(t,e){return Ps(t)?Qn(t,ra(e,1,Ps,!0)):[]})),Ri=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),Kr(n,2)):[]})),Ai=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),void 0,n):[]}));function ki(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:nu(n);return r<0&&(r=rn(a+r,0)),me(t,Kr(e,3),r)}function Ei(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a-1;return void 0!==n&&(r=nu(n),r=n<0?rn(a+r,0):sn(r,a-1)),me(t,Kr(e,3),r,!0)}function Li(t){return null!=t&&t.length?ra(t,1):[]}function Di(t){return t&&t.length?t[0]:void 0}var Pi=Ma((function(t){var e=de(t,ar);return e.length&&e[0]===t[0]?ba(e):[]})),Mi=Ma((function(t){var e=ji(t),n=de(t,ar);return e===ji(n)?e=void 0:n.pop(),n.length&&n[0]===t[0]?ba(n,Kr(e,2)):[]})),qi=Ma((function(t){var e=ji(t),n=de(t,ar);return(e="function"==typeof e?e:void 0)&&n.pop(),n.length&&n[0]===t[0]?ba(n,void 0,e):[]}));function ji(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}var Fi=Ma(Vi);function Vi(t,e){return t&&t.length&&e&&e.length?Ea(t,e):t}var Gi=Br((function(t,e){var n=null==t?0:t.length,a=Wn(t,e);return La(t,de(e,(function(t){return ri(t,n)?+t:t})).sort(fr)),a}));function Bi(t){return null==t?t:dn.call(t)}var zi=Ma((function(t){return Ja(ra(t,1,Ps,!0))})),Yi=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),Ja(ra(t,1,Ps,!0),Kr(e,2))})),Hi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,Ja(ra(t,1,Ps,!0),void 0,e)}));function Ui(t){if(!t||!t.length)return[];var e=0;return t=ue(t,(function(t){if(Ps(t))return e=rn(t.length,e),!0})),Ie(e,(function(e){return de(t,Te(e))}))}function Wi(t,e){if(!t||!t.length)return[];var n=Ui(t);return null==e?n:de(n,(function(t){return ne(e,void 0,t)}))}var Ki=Ma((function(t,e){return Ps(t)?Qn(t,e):[]})),$i=Ma((function(t){return er(ue(t,Ps))})),Ji=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),er(ue(t,Ps),Kr(e,2))})),Zi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,er(ue(t,Ps),void 0,e)})),Qi=Ma(Ui),Xi=Ma((function(t){var e=t.length,n=e>1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Wi(t,n)}));function ts(t){var e=Nn(t);return e.__chain__=!0,e}function es(t,e){return e(t)}var ns=Br((function(t){var e=t.length,n=e?t[0]:0,a=this.__wrapped__,r=function(e){return Wn(e,t)};return!(e>1||this.__actions__.length)&&a instanceof kn&&ri(n)?((a=a.slice(n,+n+(e?1:0))).__actions__.push({func:es,args:[r],thisArg:void 0}),new An(a,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(r)})),as=mr((function(t,e,n){wt.call(t,n)?++t[n]:Un(t,n,1)})),rs=Or(ki),is=Or(Ei);function ss(t,e){return(Es(t)?re:Xn)(t,Kr(e,3))}function us(t,e){return(Es(t)?ie:ta)(t,Kr(e,3))}var os=mr((function(t,e,n){wt.call(t,n)?t[n].push(e):Un(t,n,[e])})),ls=Ma((function(t,e,n){var r=-1,i="function"==typeof e,s=Ds(t)?a(t.length):[];return Xn(t,(function(t){s[++r]=i?ne(e,t,n):ma(t,e,n)})),s})),ds=mr((function(t,e,n){Un(t,n,e)}));function cs(t,e){return(Es(t)?de:Sa)(t,Kr(e,3))}var fs=mr((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]})),hs=Ma((function(t,e){if(null==t)return[];var n=e.length;return n>1&&ii(t,e[0],e[1])?e=[]:n>2&&ii(e[0],e[1],e[2])&&(e=[e[0]]),Aa(t,ra(e,1),[])})),gs=$e||function(){return Yt.Date.now()};function ps(t,e,n){return e=n?void 0:e,qr(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function bs(t,e){var n;if("function"!=typeof e)throw new yt(r);return t=nu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var ms=Ma((function(t,e,n){var a=1;if(n.length){var r=Fe(n,Wr(ms));a|=32}return qr(t,a,e,n,r)})),ys=Ma((function(t,e,n){var a=3;if(n.length){var r=Fe(n,Wr(ys));a|=32}return qr(e,a,t,n,r)}));function vs(t,e,n){var a,i,s,u,o,l,d=0,c=!1,f=!1,h=!0;if("function"!=typeof t)throw new yt(r);function g(e){var n=a,r=i;return a=i=void 0,d=e,u=t.apply(r,n)}function p(t){return d=t,o=mi(m,e),c?g(t):u}function b(t){var n=t-l;return void 0===l||n>=e||n<0||f&&t-d>=s}function m(){var t=gs();if(b(t))return y(t);o=mi(m,function(t){var n=e-(t-l);return f?sn(n,s-(t-d)):n}(t))}function y(t){return o=void 0,h&&a?g(t):(a=i=void 0,u)}function v(){var t=gs(),n=b(t);if(a=arguments,i=this,l=t,n){if(void 0===o)return p(l);if(f)return or(o),o=mi(m,e),g(l)}return void 0===o&&(o=mi(m,e)),u}return e=ru(e)||0,Bs(n)&&(c=!!n.leading,s=(f="maxWait"in n)?rn(ru(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h),v.cancel=function(){void 0!==o&&or(o),d=0,a=l=i=o=void 0},v.flush=function(){return void 0===o?u:y(gs())},v}var xs=Ma((function(t,e){return Zn(t,1,e)})),_s=Ma((function(t,e,n){return Zn(t,ru(e)||0,n)}));function Ts(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new yt(r);var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(Ts.Cache||Dn),n}function ws(t){if("function"!=typeof t)throw new yt(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ts.Cache=Dn;var Os=sr((function(t,e){var n=(e=1==e.length&&Es(e[0])?de(e[0],Ne(Kr())):de(ra(e,1),Ne(Kr()))).length;return Ma((function(a){for(var r=-1,i=sn(a.length,n);++r<i;)a[r]=e[r].call(this,a[r]);return ne(t,this,a)}))})),Ss=Ma((function(t,e){return qr(t,32,void 0,e,Fe(e,Wr(Ss)))})),Is=Ma((function(t,e){return qr(t,64,void 0,e,Fe(e,Wr(Is)))})),Ns=Br((function(t,e){return qr(t,256,void 0,void 0,void 0,e)}));function Cs(t,e){return t===e||t!=t&&e!=e}var Rs=Er(ha),As=Er((function(t,e){return t>=e})),ks=ya(function(){return arguments}())?ya:function(t){return zs(t)&&wt.call(t,"callee")&&!Kt.call(t,"callee")},Es=a.isArray,Ls=Jt?Ne(Jt):function(t){return zs(t)&&fa(t)==T};function Ds(t){return null!=t&&Gs(t.length)&&!Fs(t)}function Ps(t){return zs(t)&&Ds(t)}var Ms=tn||ro,qs=Zt?Ne(Zt):function(t){return zs(t)&&fa(t)==d};function js(t){if(!zs(t))return!1;var e=fa(t);return e==c||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Us(t)}function Fs(t){if(!Bs(t))return!1;var e=fa(t);return e==f||e==h||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Vs(t){return"number"==typeof t&&t==nu(t)}function Gs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function Bs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function zs(t){return null!=t&&"object"==typeof t}var Ys=Qt?Ne(Qt):function(t){return zs(t)&&ti(t)==g};function Hs(t){return"number"==typeof t||zs(t)&&fa(t)==p}function Us(t){if(!zs(t)||fa(t)!=b)return!1;var e=Ht(t);if(null===e)return!0;var n=wt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Nt}var Ws=Xt?Ne(Xt):function(t){return zs(t)&&fa(t)==m},Ks=te?Ne(te):function(t){return zs(t)&&ti(t)==y};function $s(t){return"string"==typeof t||!Es(t)&&zs(t)&&fa(t)==v}function Js(t){return"symbol"==typeof t||zs(t)&&fa(t)==x}var Zs=ee?Ne(ee):function(t){return zs(t)&&Gs(t.length)&&!!qt[fa(t)]},Qs=Er(Oa),Xs=Er((function(t,e){return t<=e}));function tu(t){if(!t)return[];if(Ds(t))return $s(t)?ze(t):pr(t);if(we&&t[we])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[we]());var e=ti(t);return(e==g?qe:e==y?Ve:Cu)(t)}function eu(t){return t?(t=ru(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function nu(t){var e=eu(t),n=e%1;return e==e?n?e-n:e:0}function au(t){return t?Kn(nu(t),0,4294967295):0}function ru(t){if("number"==typeof t)return t;if(Js(t))return NaN;if(Bs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Bs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(W,"");var n=rt.test(t);return n||st.test(t)?Gt(t.slice(2),n?2:8):at.test(t)?NaN:+t}function iu(t){return br(t,xu(t))}function su(t){return null==t?"":$a(t)}var uu=yr((function(t,e){if(li(e)||Ds(e))br(e,vu(e),t);else for(var n in e)wt.call(e,n)&&Bn(t,n,e[n])})),ou=yr((function(t,e){br(e,xu(e),t)})),lu=yr((function(t,e,n,a){br(e,xu(e),t,a)})),du=yr((function(t,e,n,a){br(e,vu(e),t,a)})),cu=Br(Wn),fu=Ma((function(t,e){t=pt(t);var n=-1,a=e.length,r=a>2?e[2]:void 0;for(r&&ii(e[0],e[1],r)&&(a=1);++n<a;)for(var i=e[n],s=xu(i),u=-1,o=s.length;++u<o;){var l=s[u],d=t[l];(void 0===d||Cs(d,xt[l])&&!wt.call(t,l))&&(t[l]=i[l])}return t})),hu=Ma((function(t){return t.push(void 0,Fr),ne(Tu,void 0,t)}));function gu(t,e,n){var a=null==t?void 0:da(t,e);return void 0===a?n:a}function pu(t,e){return null!=t&&ei(t,e,pa)}var bu=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),t[e]=n}),Bu(Hu)),mu=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),wt.call(t,e)?t[e].push(n):t[e]=[n]}),Kr),yu=Ma(ma);function vu(t){return Ds(t)?qn(t):wa(t)}function xu(t){return Ds(t)?qn(t,!0):function(t){if(!Bs(t))return function(t){var e=[];if(null!=t)for(var n in pt(t))e.push(n);return e}(t);var e=li(t),n=[];for(var a in t)("constructor"!=a||!e&&wt.call(t,a))&&n.push(a);return n}(t)}var _u=yr((function(t,e,n){Ca(t,e,n)})),Tu=yr((function(t,e,n,a){Ca(t,e,n,a)})),wu=Br((function(t,e){var n={};if(null==t)return n;var a=!1;e=de(e,(function(e){return e=ir(e,t),a||(a=e.length>1),e})),br(t,Yr(t),n),a&&(n=$n(n,7,Vr));for(var r=e.length;r--;)Za(n,e[r]);return n})),Ou=Br((function(t,e){return null==t?{}:function(t,e){return ka(t,e,(function(e,n){return pu(t,n)}))}(t,e)}));function Su(t,e){if(null==t)return{};var n=de(Yr(t),(function(t){return[t]}));return e=Kr(e),ka(t,n,(function(t,n){return e(t,n[0])}))}var Iu=Mr(vu),Nu=Mr(xu);function Cu(t){return null==t?[]:Ce(t,vu(t))}var Ru=Tr((function(t,e,n){return e=e.toLowerCase(),t+(n?Au(e):e)}));function Au(t){return ju(su(t).toLowerCase())}function ku(t){return(t=su(t))&&t.replace(ot,Le).replace(At,"")}var Eu=Tr((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Lu=Tr((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Du=_r("toLowerCase"),Pu=Tr((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()})),Mu=Tr((function(t,e,n){return t+(n?" ":"")+ju(e)})),qu=Tr((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),ju=_r("toUpperCase");function Fu(t,e,n){return t=su(t),void 0===(e=n?void 0:e)?function(t){return Dt.test(t)}(t)?function(t){return t.match(Et)||[]}(t):function(t){return t.match(X)||[]}(t):t.match(e)||[]}var Vu=Ma((function(t,e){try{return ne(t,void 0,e)}catch(n){return js(n)?n:new ft(n)}})),Gu=Br((function(t,e){return re(e,(function(e){e=Si(e),Un(t,e,ms(t[e],t))})),t}));function Bu(t){return function(){return t}}var zu=Sr(),Yu=Sr(!0);function Hu(t){return t}function Uu(t){return Ta("function"==typeof t?t:$n(t,1))}var Wu=Ma((function(t,e){return function(n){return ma(n,t,e)}})),Ku=Ma((function(t,e){return function(n){return ma(t,n,e)}}));function $u(t,e,n){var a=vu(e),r=la(e,a);null!=n||Bs(e)&&(r.length||!a.length)||(n=e,e=t,t=this,r=la(e,vu(e)));var i=!(Bs(n)&&"chain"in n&&!n.chain),s=Fs(t);return re(r,(function(n){var a=e[n];t[n]=a,s&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),r=n.__actions__=pr(this.__actions__);return r.push({func:a,args:arguments,thisArg:t}),n.__chain__=e,n}return a.apply(t,ce([this.value()],arguments))})})),t}function Ju(){}var Zu=Rr(de),Qu=Rr(se),Xu=Rr(ge);function to(t){return si(t)?Te(Si(t)):function(t){return function(e){return da(e,t)}}(t)}var eo=kr(),no=kr(!0);function ao(){return[]}function ro(){return!1}var io,so=Cr((function(t,e){return t+e}),0),uo=Dr("ceil"),oo=Cr((function(t,e){return t/e}),1),lo=Dr("floor"),co=Cr((function(t,e){return t*e}),1),fo=Dr("round"),ho=Cr((function(t,e){return t-e}),0);return Nn.after=function(t,e){if("function"!=typeof e)throw new yt(r);return t=nu(t),function(){if(--t<1)return e.apply(this,arguments)}},Nn.ary=ps,Nn.assign=uu,Nn.assignIn=ou,Nn.assignInWith=lu,Nn.assignWith=du,Nn.at=cu,Nn.before=bs,Nn.bind=ms,Nn.bindAll=Gu,Nn.bindKey=ys,Nn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Es(t)?t:[t]},Nn.chain=ts,Nn.chunk=function(t,e,n){e=(n?ii(t,e,n):void 0===e)?1:rn(nu(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,s=0,u=a(Ze(r/e));i<r;)u[s++]=za(t,i,i+=e);return u},Nn.compact=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r},Nn.concat=function(){var t=arguments.length;if(!t)return[];for(var e=a(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return ce(Es(n)?pr(n):[n],ra(e,1))},Nn.cond=function(t){var e=null==t?0:t.length,n=Kr();return t=e?de(t,(function(t){if("function"!=typeof t[1])throw new yt(r);return[n(t[0]),t[1]]})):[],Ma((function(n){for(var a=-1;++a<e;){var r=t[a];if(ne(r[0],this,n))return ne(r[1],this,n)}}))},Nn.conforms=function(t){return function(t){var e=vu(t);return function(n){return Jn(n,t,e)}}($n(t,1))},Nn.constant=Bu,Nn.countBy=as,Nn.create=function(t,e){var n=Cn(t);return null==e?n:Hn(n,e)},Nn.curry=function t(e,n,a){var r=qr(e,8,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.curryRight=function t(e,n,a){var r=qr(e,16,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.debounce=vs,Nn.defaults=fu,Nn.defaultsDeep=hu,Nn.defer=xs,Nn.delay=_s,Nn.difference=Ci,Nn.differenceBy=Ri,Nn.differenceWith=Ai,Nn.drop=function(t,e,n){var a=null==t?0:t.length;return a?za(t,(e=n||void 0===e?1:nu(e))<0?0:e,a):[]},Nn.dropRight=function(t,e,n){var a=null==t?0:t.length;return a?za(t,0,(e=a-(e=n||void 0===e?1:nu(e)))<0?0:e):[]},Nn.dropRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0,!0):[]},Nn.dropWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0):[]},Nn.fill=function(t,e,n,a){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&ii(t,e,n)&&(n=0,a=r),function(t,e,n,a){var r=t.length;for((n=nu(n))<0&&(n=-n>r?0:r+n),(a=void 0===a||a>r?r:nu(a))<0&&(a+=r),a=n>a?0:au(a);n<a;)t[n++]=e;return t}(t,e,n,a)):[]},Nn.filter=function(t,e){return(Es(t)?ue:aa)(t,Kr(e,3))},Nn.flatMap=function(t,e){return ra(cs(t,e),1)},Nn.flatMapDeep=function(t,e){return ra(cs(t,e),1/0)},Nn.flatMapDepth=function(t,e,n){return n=void 0===n?1:nu(n),ra(cs(t,e),n)},Nn.flatten=Li,Nn.flattenDeep=function(t){return null!=t&&t.length?ra(t,1/0):[]},Nn.flattenDepth=function(t,e){return null!=t&&t.length?ra(t,e=void 0===e?1:nu(e)):[]},Nn.flip=function(t){return qr(t,512)},Nn.flow=zu,Nn.flowRight=Yu,Nn.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,a={};++e<n;){var r=t[e];a[r[0]]=r[1]}return a},Nn.functions=function(t){return null==t?[]:la(t,vu(t))},Nn.functionsIn=function(t){return null==t?[]:la(t,xu(t))},Nn.groupBy=os,Nn.initial=function(t){return null!=t&&t.length?za(t,0,-1):[]},Nn.intersection=Pi,Nn.intersectionBy=Mi,Nn.intersectionWith=qi,Nn.invert=bu,Nn.invertBy=mu,Nn.invokeMap=ls,Nn.iteratee=Uu,Nn.keyBy=ds,Nn.keys=vu,Nn.keysIn=xu,Nn.map=cs,Nn.mapKeys=function(t,e){var n={};return e=Kr(e,3),ua(t,(function(t,a,r){Un(n,e(t,a,r),t)})),n},Nn.mapValues=function(t,e){var n={};return e=Kr(e,3),ua(t,(function(t,a,r){Un(n,a,e(t,a,r))})),n},Nn.matches=function(t){return Ia($n(t,1))},Nn.matchesProperty=function(t,e){return Na(t,$n(e,1))},Nn.memoize=Ts,Nn.merge=_u,Nn.mergeWith=Tu,Nn.method=Wu,Nn.methodOf=Ku,Nn.mixin=$u,Nn.negate=ws,Nn.nthArg=function(t){return t=nu(t),Ma((function(e){return Ra(e,t)}))},Nn.omit=wu,Nn.omitBy=function(t,e){return Su(t,ws(Kr(e)))},Nn.once=function(t){return bs(2,t)},Nn.orderBy=function(t,e,n,a){return null==t?[]:(Es(e)||(e=null==e?[]:[e]),Es(n=a?void 0:n)||(n=null==n?[]:[n]),Aa(t,e,n))},Nn.over=Zu,Nn.overArgs=Os,Nn.overEvery=Qu,Nn.overSome=Xu,Nn.partial=Ss,Nn.partialRight=Is,Nn.partition=fs,Nn.pick=Ou,Nn.pickBy=Su,Nn.property=to,Nn.propertyOf=function(t){return function(e){return null==t?void 0:da(t,e)}},Nn.pull=Fi,Nn.pullAll=Vi,Nn.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,Kr(n,2)):t},Nn.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,void 0,n):t},Nn.pullAt=Gi,Nn.range=eo,Nn.rangeRight=no,Nn.rearg=Ns,Nn.reject=function(t,e){return(Es(t)?ue:aa)(t,ws(Kr(e,3)))},Nn.remove=function(t,e){var n=[];if(!t||!t.length)return n;var a=-1,r=[],i=t.length;for(e=Kr(e,3);++a<i;){var s=t[a];e(s,a,t)&&(n.push(s),r.push(a))}return La(t,r),n},Nn.rest=function(t,e){if("function"!=typeof t)throw new yt(r);return Ma(t,e=void 0===e?e:nu(e))},Nn.reverse=Bi,Nn.sampleSize=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:nu(e),(Es(t)?Fn:ja)(t,e)},Nn.set=function(t,e,n){return null==t?t:Fa(t,e,n)},Nn.setWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Fa(t,e,n,a)},Nn.shuffle=function(t){return(Es(t)?Vn:Ba)(t)},Nn.slice=function(t,e,n){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&ii(t,e,n)?(e=0,n=a):(e=null==e?0:nu(e),n=void 0===n?a:nu(n)),za(t,e,n)):[]},Nn.sortBy=hs,Nn.sortedUniq=function(t){return t&&t.length?Wa(t):[]},Nn.sortedUniqBy=function(t,e){return t&&t.length?Wa(t,Kr(e,2)):[]},Nn.split=function(t,e,n){return n&&"number"!=typeof n&&ii(t,e,n)&&(e=n=void 0),(n=void 0===n?4294967295:n>>>0)?(t=su(t))&&("string"==typeof e||null!=e&&!Ws(e))&&!(e=$a(e))&&Me(t)?ur(ze(t),0,n):t.split(e,n):[]},Nn.spread=function(t,e){if("function"!=typeof t)throw new yt(r);return e=null==e?0:rn(nu(e),0),Ma((function(n){var a=n[e],r=ur(n,0,e);return a&&ce(r,a),ne(t,this,r)}))},Nn.tail=function(t){var e=null==t?0:t.length;return e?za(t,1,e):[]},Nn.take=function(t,e,n){return t&&t.length?za(t,0,(e=n||void 0===e?1:nu(e))<0?0:e):[]},Nn.takeRight=function(t,e,n){var a=null==t?0:t.length;return a?za(t,(e=a-(e=n||void 0===e?1:nu(e)))<0?0:e,a):[]},Nn.takeRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!1,!0):[]},Nn.takeWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3)):[]},Nn.tap=function(t,e){return e(t),t},Nn.throttle=function(t,e,n){var a=!0,i=!0;if("function"!=typeof t)throw new yt(r);return Bs(n)&&(a="leading"in n?!!n.leading:a,i="trailing"in n?!!n.trailing:i),vs(t,e,{leading:a,maxWait:e,trailing:i})},Nn.thru=es,Nn.toArray=tu,Nn.toPairs=Iu,Nn.toPairsIn=Nu,Nn.toPath=function(t){return Es(t)?de(t,Si):Js(t)?[t]:pr(Oi(su(t)))},Nn.toPlainObject=iu,Nn.transform=function(t,e,n){var a=Es(t),r=a||Ms(t)||Zs(t);if(e=Kr(e,4),null==n){var i=t&&t.constructor;n=r?a?new i:[]:Bs(t)&&Fs(i)?Cn(Ht(t)):{}}return(r?re:ua)(t,(function(t,a,r){return e(n,t,a,r)})),n},Nn.unary=function(t){return ps(t,1)},Nn.union=zi,Nn.unionBy=Yi,Nn.unionWith=Hi,Nn.uniq=function(t){return t&&t.length?Ja(t):[]},Nn.uniqBy=function(t,e){return t&&t.length?Ja(t,Kr(e,2)):[]},Nn.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Ja(t,void 0,e):[]},Nn.unset=function(t,e){return null==t||Za(t,e)},Nn.unzip=Ui,Nn.unzipWith=Wi,Nn.update=function(t,e,n){return null==t?t:Qa(t,e,rr(n))},Nn.updateWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Qa(t,e,rr(n),a)},Nn.values=Cu,Nn.valuesIn=function(t){return null==t?[]:Ce(t,xu(t))},Nn.without=Ki,Nn.words=Fu,Nn.wrap=function(t,e){return Ss(rr(e),t)},Nn.xor=$i,Nn.xorBy=Ji,Nn.xorWith=Zi,Nn.zip=Qi,Nn.zipObject=function(t,e){return nr(t||[],e||[],Bn)},Nn.zipObjectDeep=function(t,e){return nr(t||[],e||[],Fa)},Nn.zipWith=Xi,Nn.entries=Iu,Nn.entriesIn=Nu,Nn.extend=ou,Nn.extendWith=lu,$u(Nn,Nn),Nn.add=so,Nn.attempt=Vu,Nn.camelCase=Ru,Nn.capitalize=Au,Nn.ceil=uo,Nn.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=ru(n))==n?n:0),void 0!==e&&(e=(e=ru(e))==e?e:0),Kn(ru(t),e,n)},Nn.clone=function(t){return $n(t,4)},Nn.cloneDeep=function(t){return $n(t,5)},Nn.cloneDeepWith=function(t,e){return $n(t,5,e="function"==typeof e?e:void 0)},Nn.cloneWith=function(t,e){return $n(t,4,e="function"==typeof e?e:void 0)},Nn.conformsTo=function(t,e){return null==e||Jn(t,e,vu(e))},Nn.deburr=ku,Nn.defaultTo=function(t,e){return null==t||t!=t?e:t},Nn.divide=oo,Nn.endsWith=function(t,e,n){t=su(t),e=$a(e);var a=t.length,r=n=void 0===n?a:Kn(nu(n),0,a);return(n-=e.length)>=0&&t.slice(n,r)==e},Nn.eq=Cs,Nn.escape=function(t){return(t=su(t))&&j.test(t)?t.replace(M,De):t},Nn.escapeRegExp=function(t){return(t=su(t))&&U.test(t)?t.replace(H,"\\$&"):t},Nn.every=function(t,e,n){var a=Es(t)?se:ea;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.find=rs,Nn.findIndex=ki,Nn.findKey=function(t,e){return be(t,Kr(e,3),ua)},Nn.findLast=is,Nn.findLastIndex=Ei,Nn.findLastKey=function(t,e){return be(t,Kr(e,3),oa)},Nn.floor=lo,Nn.forEach=ss,Nn.forEachRight=us,Nn.forIn=function(t,e){return null==t?t:ia(t,Kr(e,3),xu)},Nn.forInRight=function(t,e){return null==t?t:sa(t,Kr(e,3),xu)},Nn.forOwn=function(t,e){return t&&ua(t,Kr(e,3))},Nn.forOwnRight=function(t,e){return t&&oa(t,Kr(e,3))},Nn.get=gu,Nn.gt=Rs,Nn.gte=As,Nn.has=function(t,e){return null!=t&&ei(t,e,ga)},Nn.hasIn=pu,Nn.head=Di,Nn.identity=Hu,Nn.includes=function(t,e,n,a){t=Ds(t)?t:Cu(t),n=n&&!a?nu(n):0;var r=t.length;return n<0&&(n=rn(r+n,0)),$s(t)?n<=r&&t.indexOf(e,n)>-1:!!r&&ye(t,e,n)>-1},Nn.indexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:nu(n);return r<0&&(r=rn(a+r,0)),ye(t,e,r)},Nn.inRange=function(t,e,n){return e=eu(e),void 0===n?(n=e,e=0):n=eu(n),function(t,e,n){return t>=sn(e,n)&&t<rn(e,n)}(t=ru(t),e,n)},Nn.invoke=yu,Nn.isArguments=ks,Nn.isArray=Es,Nn.isArrayBuffer=Ls,Nn.isArrayLike=Ds,Nn.isArrayLikeObject=Ps,Nn.isBoolean=function(t){return!0===t||!1===t||zs(t)&&fa(t)==l},Nn.isBuffer=Ms,Nn.isDate=qs,Nn.isElement=function(t){return zs(t)&&1===t.nodeType&&!Us(t)},Nn.isEmpty=function(t){if(null==t)return!0;if(Ds(t)&&(Es(t)||"string"==typeof t||"function"==typeof t.splice||Ms(t)||Zs(t)||ks(t)))return!t.length;var e=ti(t);if(e==g||e==y)return!t.size;if(li(t))return!wa(t).length;for(var n in t)if(wt.call(t,n))return!1;return!0},Nn.isEqual=function(t,e){return va(t,e)},Nn.isEqualWith=function(t,e,n){var a=(n="function"==typeof n?n:void 0)?n(t,e):void 0;return void 0===a?va(t,e,void 0,n):!!a},Nn.isError=js,Nn.isFinite=function(t){return"number"==typeof t&&en(t)},Nn.isFunction=Fs,Nn.isInteger=Vs,Nn.isLength=Gs,Nn.isMap=Ys,Nn.isMatch=function(t,e){return t===e||xa(t,e,Jr(e))},Nn.isMatchWith=function(t,e,n){return n="function"==typeof n?n:void 0,xa(t,e,Jr(e),n)},Nn.isNaN=function(t){return Hs(t)&&t!=+t},Nn.isNative=function(t){if(oi(t))throw new ft("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return _a(t)},Nn.isNil=function(t){return null==t},Nn.isNull=function(t){return null===t},Nn.isNumber=Hs,Nn.isObject=Bs,Nn.isObjectLike=zs,Nn.isPlainObject=Us,Nn.isRegExp=Ws,Nn.isSafeInteger=function(t){return Vs(t)&&t>=-9007199254740991&&t<=9007199254740991},Nn.isSet=Ks,Nn.isString=$s,Nn.isSymbol=Js,Nn.isTypedArray=Zs,Nn.isUndefined=function(t){return void 0===t},Nn.isWeakMap=function(t){return zs(t)&&ti(t)==_},Nn.isWeakSet=function(t){return zs(t)&&"[object WeakSet]"==fa(t)},Nn.join=function(t,e){return null==t?"":nn.call(t,e)},Nn.kebabCase=Eu,Nn.last=ji,Nn.lastIndexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a;return void 0!==n&&(r=(r=nu(n))<0?rn(a+r,0):sn(r,a-1)),e==e?function(t,e,n){for(var a=n+1;a--;)if(t[a]===e)return a;return a}(t,e,r):me(t,xe,r,!0)},Nn.lowerCase=Lu,Nn.lowerFirst=Du,Nn.lt=Qs,Nn.lte=Xs,Nn.max=function(t){return t&&t.length?na(t,Hu,ha):void 0},Nn.maxBy=function(t,e){return t&&t.length?na(t,Kr(e,2),ha):void 0},Nn.mean=function(t){return _e(t,Hu)},Nn.meanBy=function(t,e){return _e(t,Kr(e,2))},Nn.min=function(t){return t&&t.length?na(t,Hu,Oa):void 0},Nn.minBy=function(t,e){return t&&t.length?na(t,Kr(e,2),Oa):void 0},Nn.stubArray=ao,Nn.stubFalse=ro,Nn.stubObject=function(){return{}},Nn.stubString=function(){return""},Nn.stubTrue=function(){return!0},Nn.multiply=co,Nn.nth=function(t,e){return t&&t.length?Ra(t,nu(e)):void 0},Nn.noConflict=function(){return Yt._===this&&(Yt._=Ct),this},Nn.noop=Ju,Nn.now=gs,Nn.pad=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;if(!e||a>=e)return t;var r=(e-a)/2;return Ar(Qe(r),n)+t+Ar(Ze(r),n)},Nn.padEnd=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;return e&&a<e?t+Ar(e-a,n):t},Nn.padStart=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;return e&&a<e?Ar(e-a,n)+t:t},Nn.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),on(su(t).replace(K,""),e||0)},Nn.random=function(t,e,n){if(n&&"boolean"!=typeof n&&ii(t,e,n)&&(e=n=void 0),void 0===n&&("boolean"==typeof e?(n=e,e=void 0):"boolean"==typeof t&&(n=t,t=void 0)),void 0===t&&void 0===e?(t=0,e=1):(t=eu(t),void 0===e?(e=t,t=0):e=eu(e)),t>e){var a=t;t=e,e=a}if(n||t%1||e%1){var r=ln();return sn(t+r*(e-t+Vt("1e-"+((r+"").length-1))),e)}return Da(t,e)},Nn.reduce=function(t,e,n){var a=Es(t)?fe:Oe,r=arguments.length<3;return a(t,Kr(e,4),n,r,Xn)},Nn.reduceRight=function(t,e,n){var a=Es(t)?he:Oe,r=arguments.length<3;return a(t,Kr(e,4),n,r,ta)},Nn.repeat=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:nu(e),Pa(su(t),e)},Nn.replace=function(){var t=arguments,e=su(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Nn.result=function(t,e,n){var a=-1,r=(e=ir(e,t)).length;for(r||(r=1,t=void 0);++a<r;){var i=null==t?void 0:t[Si(e[a])];void 0===i&&(a=r,i=n),t=Fs(i)?i.call(t):i}return t},Nn.round=fo,Nn.runInContext=t,Nn.sample=function(t){return(Es(t)?jn:qa)(t)},Nn.size=function(t){if(null==t)return 0;if(Ds(t))return $s(t)?Be(t):t.length;var e=ti(t);return e==g||e==y?t.size:wa(t).length},Nn.snakeCase=Pu,Nn.some=function(t,e,n){var a=Es(t)?ge:Ya;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.sortedIndex=function(t,e){return Ha(t,e)},Nn.sortedIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2))},Nn.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var a=Ha(t,e);if(a<n&&Cs(t[a],e))return a}return-1},Nn.sortedLastIndex=function(t,e){return Ha(t,e,!0)},Nn.sortedLastIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2),!0)},Nn.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var n=Ha(t,e,!0)-1;if(Cs(t[n],e))return n}return-1},Nn.startCase=Mu,Nn.startsWith=function(t,e,n){return t=su(t),n=null==n?0:Kn(nu(n),0,t.length),e=$a(e),t.slice(n,n+e.length)==e},Nn.subtract=ho,Nn.sum=function(t){return t&&t.length?Se(t,Hu):0},Nn.sumBy=function(t,e){return t&&t.length?Se(t,Kr(e,2)):0},Nn.template=function(t,e,n){var a=Nn.templateSettings;n&&ii(t,e,n)&&(e=void 0),t=su(t),e=lu({},e,a,jr);var r,i,s=lu({},e.imports,a.imports,jr),u=vu(s),o=Ce(s,u),l=0,d=e.interpolate||lt,c="__p += '",f=bt((e.escape||lt).source+"|"+d.source+"|"+(d===G?et:lt).source+"|"+(e.evaluate||lt).source+"|$","g"),h="//# sourceURL="+(wt.call(e,"sourceURL")?(e.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Mt+"]")+"\n";t.replace(f,(function(e,n,a,s,u,o){return a||(a=s),c+=t.slice(l,o).replace(dt,Pe),n&&(r=!0,c+="' +\n__e("+n+") +\n'"),u&&(i=!0,c+="';\n"+u+";\n__p += '"),a&&(c+="' +\n((__t = ("+a+")) == null ? '' : __t) +\n'"),l=o+e.length,e})),c+="';\n";var g=wt.call(e,"variable")&&e.variable;g||(c="with (obj) {\n"+c+"\n}\n"),c=(i?c.replace(E,""):c).replace(L,"$1").replace(D,"$1;"),c="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(r?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+c+"return __p\n}";var p=Vu((function(){return ht(u,h+"return "+c).apply(void 0,o)}));if(p.source=c,js(p))throw p;return p},Nn.times=function(t,e){if((t=nu(t))<1||t>9007199254740991)return[];var n=4294967295,a=sn(t,4294967295);t-=4294967295;for(var r=Ie(a,e=Kr(e));++n<t;)e(n);return r},Nn.toFinite=eu,Nn.toInteger=nu,Nn.toLength=au,Nn.toLower=function(t){return su(t).toLowerCase()},Nn.toNumber=ru,Nn.toSafeInteger=function(t){return t?Kn(nu(t),-9007199254740991,9007199254740991):0===t?t:0},Nn.toString=su,Nn.toUpper=function(t){return su(t).toUpperCase()},Nn.trim=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace(W,"");if(!t||!(e=$a(e)))return t;var a=ze(t),r=ze(e);return ur(a,Ae(a,r),ke(a,r)+1).join("")},Nn.trimEnd=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace($,"");if(!t||!(e=$a(e)))return t;var a=ze(t);return ur(a,0,ke(a,ze(e))+1).join("")},Nn.trimStart=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace(K,"");if(!t||!(e=$a(e)))return t;var a=ze(t);return ur(a,Ae(a,ze(e))).join("")},Nn.truncate=function(t,e){var n=30,a="...";if(Bs(e)){var r="separator"in e?e.separator:r;n="length"in e?nu(e.length):n,a="omission"in e?$a(e.omission):a}var i=(t=su(t)).length;if(Me(t)){var s=ze(t);i=s.length}if(n>=i)return t;var u=n-Be(a);if(u<1)return a;var o=s?ur(s,0,u).join(""):t.slice(0,u);if(void 0===r)return o+a;if(s&&(u+=o.length-u),Ws(r)){if(t.slice(u).search(r)){var l,d=o;for(r.global||(r=bt(r.source,su(nt.exec(r))+"g")),r.lastIndex=0;l=r.exec(d);)var c=l.index;o=o.slice(0,void 0===c?u:c)}}else if(t.indexOf($a(r),u)!=u){var f=o.lastIndexOf(r);f>-1&&(o=o.slice(0,f))}return o+a},Nn.unescape=function(t){return(t=su(t))&&q.test(t)?t.replace(P,Ye):t},Nn.uniqueId=function(t){var e=++Ot;return su(t)+e},Nn.upperCase=qu,Nn.upperFirst=ju,Nn.each=ss,Nn.eachRight=us,Nn.first=Di,$u(Nn,(io={},ua(Nn,(function(t,e){wt.call(Nn.prototype,e)||(io[e]=t)})),io),{chain:!1}),Nn.VERSION="4.17.20",re(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Nn[t].placeholder=Nn})),re(["drop","take"],(function(t,e){kn.prototype[t]=function(n){n=void 0===n?1:rn(nu(n),0);var a=this.__filtered__&&!e?new kn(this):this.clone();return a.__filtered__?a.__takeCount__=sn(n,a.__takeCount__):a.__views__.push({size:sn(n,4294967295),type:t+(a.__dir__<0?"Right":"")}),a},kn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),re(["filter","map","takeWhile"],(function(t,e){var n=e+1,a=1==n||3==n;kn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Kr(t,3),type:n}),e.__filtered__=e.__filtered__||a,e}})),re(["head","last"],(function(t,e){var n="take"+(e?"Right":"");kn.prototype[t]=function(){return this[n](1).value()[0]}})),re(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");kn.prototype[t]=function(){return this.__filtered__?new kn(this):this[n](1)}})),kn.prototype.compact=function(){return this.filter(Hu)},kn.prototype.find=function(t){return this.filter(t).head()},kn.prototype.findLast=function(t){return this.reverse().find(t)},kn.prototype.invokeMap=Ma((function(t,e){return"function"==typeof t?new kn(this):this.map((function(n){return ma(n,t,e)}))})),kn.prototype.reject=function(t){return this.filter(ws(Kr(t)))},kn.prototype.slice=function(t,e){t=nu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new kn(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=nu(e))<0?n.dropRight(-e):n.take(e-t)),n)},kn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},kn.prototype.toArray=function(){return this.take(4294967295)},ua(kn.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),a=/^(?:head|last)$/.test(e),r=Nn[a?"take"+("last"==e?"Right":""):e],i=a||/^find/.test(e);r&&(Nn.prototype[e]=function(){var e=this.__wrapped__,s=a?[1]:arguments,u=e instanceof kn,o=s[0],l=u||Es(e),d=function(t){var e=r.apply(Nn,ce([t],s));return a&&c?e[0]:e};l&&n&&"function"==typeof o&&1!=o.length&&(u=l=!1);var c=this.__chain__,f=!!this.__actions__.length,h=i&&!c,g=u&&!f;if(!i&&l){e=g?e:new kn(this);var p=t.apply(e,s);return p.__actions__.push({func:es,args:[d],thisArg:void 0}),new An(p,c)}return h&&g?t.apply(this,s):(p=this.thru(d),h?a?p.value()[0]:p.value():p)})})),re(["pop","push","shift","sort","splice","unshift"],(function(t){var e=vt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",a=/^(?:pop|shift)$/.test(t);Nn.prototype[t]=function(){var t=arguments;if(a&&!this.__chain__){var r=this.value();return e.apply(Es(r)?r:[],t)}return this[n]((function(n){return e.apply(Es(n)?n:[],t)}))}})),ua(kn.prototype,(function(t,e){var n=Nn[e];if(n){var a=n.name+"";wt.call(yn,a)||(yn[a]=[]),yn[a].push({name:e,func:n})}})),yn[Ir(void 0,2).name]=[{name:"wrapper",func:void 0}],kn.prototype.clone=function(){var t=new kn(this.__wrapped__);return t.__actions__=pr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=pr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=pr(this.__views__),t},kn.prototype.reverse=function(){if(this.__filtered__){var t=new kn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},kn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Es(t),a=e<0,r=n?t.length:0,i=function(t,e,n){for(var a=-1,r=n.length;++a<r;){var i=n[a],s=i.size;switch(i.type){case"drop":t+=s;break;case"dropRight":e-=s;break;case"take":e=sn(e,t+s);break;case"takeRight":t=rn(t,e-s)}}return{start:t,end:e}}(0,r,this.__views__),s=i.start,u=i.end,o=u-s,l=a?u:s-1,d=this.__iteratees__,c=d.length,f=0,h=sn(o,this.__takeCount__);if(!n||!a&&r==o&&h==o)return tr(t,this.__actions__);var g=[];t:for(;o--&&f<h;){for(var p=-1,b=t[l+=e];++p<c;){var m=d[p],y=m.type,v=(0,m.iteratee)(b);if(2==y)b=v;else if(!v){if(1==y)continue t;break t}}g[f++]=b}return g},Nn.prototype.at=ns,Nn.prototype.chain=function(){return ts(this)},Nn.prototype.commit=function(){return new An(this.value(),this.__chain__)},Nn.prototype.next=function(){void 0===this.__values__&&(this.__values__=tu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},Nn.prototype.plant=function(t){for(var e,n=this;n instanceof Rn;){var a=Ni(n);a.__index__=0,a.__values__=void 0,e?r.__wrapped__=a:e=a;var r=a;n=n.__wrapped__}return r.__wrapped__=t,e},Nn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof kn){var e=t;return this.__actions__.length&&(e=new kn(this)),(e=e.reverse()).__actions__.push({func:es,args:[Bi],thisArg:void 0}),new An(e,this.__chain__)}return this.thru(Bi)},Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return tr(this.__wrapped__,this.__actions__)},Nn.prototype.first=Nn.prototype.head,we&&(Nn.prototype[we]=function(){return this}),Nn}();Yt._=He,void 0===(a=(function(){return He}).call(e,n,e,t))||(t.exports=a)}).call(this)}).call(this,n("YuTi")(t))},LxgN:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}},"M+Mf":function(t,e,n){var a=n("rk81"),r=n("IfUl"),i=n("PjNX"),s=n("02OF"),u=n("hmSm"),o=n("MBcj"),l=n("dCge");t.exports=function t(e,n,d,c,f){e!==n&&i(n,(function(i,o){if(f||(f=new a),u(i))s(e,n,o,d,t,c,f);else{var h=c?c(l(e,o),i,o+"",e,n,f):void 0;void 0===h&&(h=i),r(e,o,h)}}),o)}},MBcj:function(t,e,n){var a=n("pmjB"),r=n("6eui"),i=n("im1V");t.exports=function(t){return i(t)?a(t,!0):r(t)}},"MO+k":function(t,e,n){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={rgb2hsl:n,rgb2hsv:a,rgb2hwb:i,rgb2cmyk:s,rgb2keyword:u,rgb2xyz:o,rgb2lab:l,rgb2lch:function(t){return v(l(t))},hsl2rgb:d,hsl2hsv:function(t){var e=t[1]/100,n=t[2]/100;return 0===n?[0,0,0]:[t[0],2*(e*=(n*=2)<=1?n:2-n)/(n+e)*100,(n+e)/2*100]},hsl2hwb:function(t){return i(d(t))},hsl2cmyk:function(t){return s(d(t))},hsl2keyword:function(t){return u(d(t))},hsv2rgb:c,hsv2hsl:function(t){var e,n,a=t[1]/100,r=t[2]/100;return e=a*r,[t[0],100*(e=(e/=(n=(2-a)*r)<=1?n:2-n)||0),100*(n/=2)]},hsv2hwb:function(t){return i(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return u(c(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return u(f(t))},cmyk2rgb:h,cmyk2hsl:function(t){return n(h(t))},cmyk2hsv:function(t){return a(h(t))},cmyk2hwb:function(t){return i(h(t))},cmyk2keyword:function(t){return u(h(t))},keyword2rgb:T,keyword2hsl:function(t){return n(T(t))},keyword2hsv:function(t){return a(T(t))},keyword2hwb:function(t){return i(T(t))},keyword2cmyk:function(t){return s(T(t))},keyword2lab:function(t){return l(T(t))},keyword2xyz:function(t){return o(T(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return v(m(t))},lab2xyz:y,lab2rgb:x,lab2lch:v,lch2lab:_,lch2xyz:function(t){return y(_(t))},lch2rgb:function(t){return x(_(t))}};function n(t){var e,n,a=t[0]/255,r=t[1]/255,i=t[2]/255,s=Math.min(a,r,i),u=Math.max(a,r,i),o=u-s;return u==s?e=0:a==u?e=(r-i)/o:r==u?e=2+(i-a)/o:i==u&&(e=4+(a-r)/o),(e=Math.min(60*e,360))<0&&(e+=360),n=(s+u)/2,[e,100*(u==s?0:n<=.5?o/(u+s):o/(2-u-s)),100*n]}function a(t){var e,n,a=t[0],r=t[1],i=t[2],s=Math.min(a,r,i),u=Math.max(a,r,i),o=u-s;return n=0==u?0:o/u*1e3/10,u==s?e=0:a==u?e=(r-i)/o:r==u?e=2+(i-a)/o:i==u&&(e=4+(a-r)/o),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,u/255*1e3/10]}function i(t){var e=t[0],a=t[1],r=t[2];return[n(t)[0],1/255*Math.min(e,Math.min(a,r))*100,100*(r=1-1/255*Math.max(e,Math.max(a,r)))]}function s(t){var e,n=t[0]/255,a=t[1]/255,r=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-a,1-r)))/(1-e)||0),100*((1-a-e)/(1-e)||0),100*((1-r-e)/(1-e)||0),100*e]}function u(t){return O[JSON.stringify(t)]}function o(t){var e=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92)),100*(.2126*e+.7152*n+.0722*a),100*(.0193*e+.1192*n+.9505*a)]}function l(t){var e=o(t),n=e[0],a=e[1],r=e[2];return a/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116)-16,500*(n-a),200*(a-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]}function d(t){var e,n,a,r,i,s=t[0]/360,u=t[1]/100,o=t[2]/100;if(0==u)return[i=255*o,i,i];e=2*o-(n=o<.5?o*(1+u):o+u-o*u),r=[0,0,0];for(var l=0;l<3;l++)(a=s+1/3*-(l-1))<0&&a++,a>1&&a--,r[l]=255*(i=6*a<1?e+6*(n-e)*a:2*a<1?n:3*a<2?e+(n-e)*(2/3-a)*6:e);return r}function c(t){var e=t[0]/60,n=t[1]/100,a=t[2]/100,r=Math.floor(e)%6,i=e-Math.floor(e),s=255*a*(1-n),u=255*a*(1-n*i),o=255*a*(1-n*(1-i));switch(a*=255,r){case 0:return[a,o,s];case 1:return[u,a,s];case 2:return[s,a,o];case 3:return[s,u,a];case 4:return[o,s,a];case 5:return[a,s,u]}}function f(t){var e,n,a,i,s=t[0]/360,u=t[1]/100,o=t[2]/100,l=u+o;switch(l>1&&(u/=l,o/=l),a=6*s-(e=Math.floor(6*s)),0!=(1&e)&&(a=1-a),i=u+a*((n=1-o)-u),e){default:case 6:case 0:r=n,g=i,b=u;break;case 1:r=i,g=n,b=u;break;case 2:r=u,g=n,b=i;break;case 3:r=u,g=i,b=n;break;case 4:r=i,g=u,b=n;break;case 5:r=n,g=u,b=i}return[255*r,255*g,255*b]}function h(t){var e=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,t[0]/100*(1-a)+a)),255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,n,a,r=t[0]/100,i=t[1]/100,s=t[2]/100;return n=-.9689*r+1.8758*i+.0415*s,a=.0557*r+-.204*i+1.057*s,e=(e=3.2406*r+-1.5372*i+-.4986*s)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:a*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(a=Math.min(Math.max(0,a),1))]}function m(t){var e=t[0],n=t[1],a=t[2];return n/=100,a/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function y(t){var e,n,a,r,i=t[0],s=t[1],u=t[2];return i<=8?r=(n=100*i/903.3)/100*7.787+16/116:(n=100*Math.pow((i+16)/116,3),r=Math.pow(n/100,1/3)),[e=e/95.047<=.008856?e=95.047*(s/500+r-16/116)/7.787:95.047*Math.pow(s/500+r,3),n,a=a/108.883<=.008859?a=108.883*(r-u/200-16/116)/7.787:108.883*Math.pow(r-u/200,3)]}function v(t){var e,n=t[0],a=t[1],r=t[2];return(e=360*Math.atan2(r,a)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(a*a+r*r),e]}function x(t){return p(y(t))}function _(t){var e,n=t[1];return e=t[2]/360*2*Math.PI,[t[0],n*Math.cos(e),n*Math.sin(e)]}function T(t){return w[t]}var w={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},O={};for(var S in w)O[JSON.stringify(w[S])]=S;var I=function(){return new k};for(var N in e){I[N+"Raw"]=function(t){return function(n){return"number"==typeof n&&(n=Array.prototype.slice.call(arguments)),e[t](n)}}(N);var C=/(\w+)2(\w+)/.exec(N),R=C[1],A=C[2];(I[R]=I[R]||{})[A]=I[N]=function(t){return function(n){"number"==typeof n&&(n=Array.prototype.slice.call(arguments));var a=e[t](n);if("string"==typeof a||void 0===a)return a;for(var r=0;r<a.length;r++)a[r]=Math.round(a[r]);return a}}(N)}var k=function(){this.convs={}};k.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},k.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},k.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space;e=I[n][t](this.convs[n]),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach((function(t){k.prototype[t]=function(e){return this.routeSpace(t,arguments)}}));var E=I,L={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},D={getRgba:P,getHsla:M,getRgb:function(t){var e=P(t);return e&&e.slice(0,3)},getHsl:function(t){var e=M(t);return e&&e.slice(0,3)},getHwb:q,getAlpha:function(t){var e=P(t);return e||(e=M(t))||(e=q(t))?e[3]:void 0},hexString:function(t,e){return e=void 0!==e&&3===t.length?e:t[3],"#"+B(t[0])+B(t[1])+B(t[2])+(e>=0&&e<1?B(Math.round(255*e)):"")},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?j(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:j,percentString:function(t,e){return e<1||t[3]&&t[3]<1?F(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:F,hslString:function(t,e){return e<1||t[3]&&t[3]<1?V(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:V,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return z[t.slice(0,3)]}};function P(t){if(t){var e=[0,0,0],n=1,a=t.match(/^#([a-fA-F0-9]{3,4})$/i),r="";if(a){r=(a=a[1])[3];for(var i=0;i<e.length;i++)e[i]=parseInt(a[i]+a[i],16);r&&(n=Math.round(parseInt(r+r,16)/255*100)/100)}else if(a=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(r=a[2],a=a[1],i=0;i<e.length;i++)e[i]=parseInt(a.slice(2*i,2*i+2),16);r&&(n=Math.round(parseInt(r,16)/255*100)/100)}else if(a=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(i=0;i<e.length;i++)e[i]=parseInt(a[i+1]);n=parseFloat(a[4])}else if(a=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(i=0;i<e.length;i++)e[i]=Math.round(2.55*parseFloat(a[i+1]));n=parseFloat(a[4])}else if(a=t.match(/(\w+)/)){if("transparent"==a[1])return[0,0,0,0];if(!(e=L[a[1]]))return}for(i=0;i<e.length;i++)e[i]=G(e[i],0,255);return n=n||0==n?G(n,0,1):1,e[3]=n,e}}function M(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[G(parseInt(e[1]),0,360),G(parseFloat(e[2]),0,100),G(parseFloat(e[3]),0,100),G(isNaN(n)?1:n,0,1)]}}}function q(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[G(parseInt(e[1]),0,360),G(parseFloat(e[2]),0,100),G(parseFloat(e[3]),0,100),G(isNaN(n)?1:n,0,1)]}}}function j(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function F(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function V(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function G(t,e,n){return Math.min(Math.max(e,t),n)}function B(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var z={};for(var Y in L)z[L[Y]]=Y;var H=function(t){return t instanceof H?t:this instanceof H?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=D.getRgba(t))?this.setValues("rgb",e):(e=D.getHsla(t))?this.setValues("hsl",e):(e=D.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new H(t);var e};H.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return D.hexString(this.values.rgb)},rgbString:function(){return D.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return D.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return D.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return D.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return D.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return D.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return D.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var a=t[n]/255;e[n]=a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,a=void 0===e?.5:e,r=2*a-1,i=this.alpha()-n.alpha(),s=((r*i==-1?r:(r+i)/(1+r*i))+1)/2,u=1-s;return this.rgb(s*this.red()+u*n.red(),s*this.green()+u*n.green(),s*this.blue()+u*n.blue()).alpha(this.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new H,a=this.values,r=n.values;for(var i in a)a.hasOwnProperty(i)&&("[object Array]"===(e={}.toString.call(t=a[i]))?r[i]=t.slice(0):"[object Number]"===e?r[i]=t:console.error("unexpected color value:",t));return n}},H.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},H.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},H.prototype.getValues=function(t){for(var e=this.values,n={},a=0;a<t.length;a++)n[t.charAt(a)]=e[t][a];return 1!==e.alpha&&(n.a=e.alpha),n},H.prototype.setValues=function(t,e){var n,a,r=this.values,i=this.spaces,s=this.maxes,u=1;if(this.valid=!0,"alpha"===t)u=e;else if(e.length)r[t]=e.slice(0,t.length),u=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)r[t][n]=e[t.charAt(n)];u=e.a}else if(void 0!==e[i[t][0]]){var o=i[t];for(n=0;n<t.length;n++)r[t][n]=e[o[n]];u=e.alpha}if(r.alpha=Math.max(0,Math.min(1,void 0===u?r.alpha:u)),"alpha"===t)return!1;for(n=0;n<t.length;n++)a=Math.max(0,Math.min(s[t][n],r[t][n])),r[t][n]=Math.round(a);for(var l in i)l!==t&&(r[l]=E[t][l](r[t]));return!0},H.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},H.prototype.setChannel=function(t,e,n){var a=this.values[t];return void 0===n?a[e]:(n===a[e]||(a[e]=n,this.setValues(t,a)),this)},"undefined"!=typeof window&&(window.Color=H);var U,W=H,K={noop:function(){},uid:(U=0,function(){return U++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return K.valueOrDefault(K.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var r,i,s;if(K.isArray(t))if(i=t.length,a)for(r=i-1;r>=0;r--)e.call(n,t[r],r);else for(r=0;r<i;r++)e.call(n,t[r],r);else if(K.isObject(t))for(i=(s=Object.keys(t)).length,r=0;r<i;r++)e.call(n,t[s[r]],s[r])},arrayEquals:function(t,e){var n,a,r,i;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(i=e[n],(r=t[n])instanceof Array&&i instanceof Array){if(!K.arrayEquals(r,i))return!1}else if(r!==i)return!1;return!0},clone:function(t){if(K.isArray(t))return t.map(K.clone);if(K.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,r=0;r<a;++r)e[n[r]]=K.clone(t[n[r]]);return e}return t},_merger:function(t,e,n,a){var r=e[t],i=n[t];K.isObject(r)&&K.isObject(i)?K.merge(r,i,a):e[t]=K.clone(i)},_mergerIf:function(t,e,n){var a=e[t],r=n[t];K.isObject(a)&&K.isObject(r)?K.mergeIf(a,r):e.hasOwnProperty(t)||(e[t]=K.clone(r))},merge:function(t,e,n){var a,r,i,s,u,o=K.isArray(e)?e:[e],l=o.length;if(!K.isObject(t))return t;for(a=(n=n||{}).merger||K._merger,r=0;r<l;++r)if(K.isObject(e=o[r]))for(u=0,s=(i=Object.keys(e)).length;u<s;++u)a(i[u],t,e,n);return t},mergeIf:function(t,e){return K.merge(t,e,{merger:K._mergerIf})},extend:function(t){for(var e=function(e,n){t[n]=e},n=1,a=arguments.length;n<a;++n)K.each(arguments[n],e);return t},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=n};return a.prototype=e.prototype,n.prototype=new a,n.extend=K.inherits,t&&K.extend(n.prototype,t),n.__super__=e.prototype,n}},$=K;K.callCallback=K.callback,K.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},K.getValueOrDefault=K.valueOrDefault,K.getValueAtIndexOrDefault=K.valueAtIndexOrDefault;var J={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:1===t?1:(n||(n=.3),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),-a*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:1===t?1:(n||(n=.3),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),a*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),t<1?a*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:a*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-J.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*J.easeInBounce(2*t):.5*J.easeOutBounce(2*t-1)+.5}},Z={effects:J};$.easingEffects=J;var Q=Math.PI,X=Q/180,tt=2*Q,et=Q/2,nt=Q/4,at=2*Q/3,rt={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,a,r,i){if(i){var s=Math.min(i,r/2,a/2),u=e+s,o=n+s,l=e+a-s,d=n+r-s;t.moveTo(e,o),u<l&&o<d?(t.arc(u,o,s,-Q,-et),t.arc(l,o,s,-et,0),t.arc(l,d,s,0,et),t.arc(u,d,s,et,Q)):u<l?(t.moveTo(u,n),t.arc(l,o,s,-et,et),t.arc(u,o,s,et,Q+et)):o<d?(t.arc(u,o,s,-Q,0),t.arc(u,d,s,0,Q)):t.arc(u,o,s,-Q,Q),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,a,r)},drawPoint:function(t,e,n,a,r,i){var s,u,o,l,d,c=(i||0)*X;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(s=e.toString())&&"[object HTMLCanvasElement]"!==s){if(!(isNaN(n)||n<=0)){switch(t.beginPath(),e){default:t.arc(a,r,n,0,tt),t.closePath();break;case"triangle":t.moveTo(a+Math.sin(c)*n,r-Math.cos(c)*n),c+=at,t.lineTo(a+Math.sin(c)*n,r-Math.cos(c)*n),c+=at,t.lineTo(a+Math.sin(c)*n,r-Math.cos(c)*n),t.closePath();break;case"rectRounded":l=n-(d=.516*n),u=Math.cos(c+nt)*l,o=Math.sin(c+nt)*l,t.arc(a-u,r-o,d,c-Q,c-et),t.arc(a+o,r-u,d,c-et,c),t.arc(a+u,r+o,d,c,c+et),t.arc(a-o,r+u,d,c+et,c+Q),t.closePath();break;case"rect":if(!i){l=Math.SQRT1_2*n,t.rect(a-l,r-l,2*l,2*l);break}c+=nt;case"rectRot":u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+o,r-u),t.lineTo(a+u,r+o),t.lineTo(a-o,r+u),t.closePath();break;case"crossRot":c+=nt;case"cross":u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+u,r+o),t.moveTo(a+o,r-u),t.lineTo(a-o,r+u);break;case"star":u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+u,r+o),t.moveTo(a+o,r-u),t.lineTo(a-o,r+u),c+=nt,u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+u,r+o),t.moveTo(a+o,r-u),t.lineTo(a-o,r+u);break;case"line":u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+u,r+o);break;case"dash":t.moveTo(a,r),t.lineTo(a+Math.cos(c)*n,r+Math.sin(c)*n)}t.fill(),t.stroke()}}else t.drawImage(e,a-e.width/2,r-e.height/2,e.width,e.height)},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,a){var r=n.steppedLine;if(r){if("middle"===r){var i=(e.x+n.x)/2;t.lineTo(i,a?n.y:e.y),t.lineTo(i,a?e.y:n.y)}else"after"===r&&!a||"after"!==r&&a?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y);t.lineTo(n.x,n.y)}else n.tension?t.bezierCurveTo(a?e.controlPointPreviousX:e.controlPointNextX,a?e.controlPointPreviousY:e.controlPointNextY,a?n.controlPointNextX:n.controlPointPreviousX,a?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},it=rt;$.clear=rt.clear,$.drawRoundedRectangle=function(t){t.beginPath(),rt.roundedRect.apply(rt,arguments)};var st={_set:function(t,e){return $.merge(this[t]||(this[t]={}),e)}};st._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var ut=st,ot=$.valueOrDefault,lt={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,r;return $.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,r=+t.left||0):e=n=a=r=+t||0,{top:e,right:n,bottom:a,left:r,height:e+a,width:r+n}},_parseFont:function(t){var e=ut.global,n=ot(t.fontSize,e.defaultFontSize),a={family:ot(t.fontFamily,e.defaultFontFamily),lineHeight:$.options.toLineHeight(ot(t.lineHeight,e.defaultLineHeight),n),size:n,style:ot(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return a.string=function(t){return!t||$.isNullOrUndef(t.size)||$.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(a),a},resolve:function(t,e,n){var a,r,i;for(a=0,r=t.length;a<r;++a)if(void 0!==(i=t[a])&&(void 0!==e&&"function"==typeof i&&(i=i(e)),void 0!==n&&$.isArray(i)&&(i=i[n]),void 0!==i))return i}},dt=$,ct=it,ft=lt;dt.easing=Z,dt.canvas=ct,dt.options=ft;var ht=function(t){dt.extend(this,t),this.initialize.apply(this,arguments)};dt.extend(ht.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=dt.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,a=e._start,r=e._view;return n&&1!==t?(r||(r=e._view={}),a||(a=e._start={}),function(t,e,n,a){var r,i,s,u,o,l,d,c,f,h=Object.keys(n);for(r=0,i=h.length;r<i;++r)if(l=n[s=h[r]],e.hasOwnProperty(s)||(e[s]=l),(u=e[s])!==l&&"_"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=u),(d=typeof l)==typeof(o=t[s]))if("string"===d){if((c=W(o)).valid&&(f=W(l)).valid){e[s]=f.mix(c,a).rgbString();continue}}else if(dt.isFinite(o)&&dt.isFinite(l)){e[s]=o+(l-o)*a;continue}e[s]=l}}(a,r,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return dt.isNumber(this._model.x)&&dt.isNumber(this._model.y)}}),ht.extend=dt.inherits;var gt=ht,pt=gt.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),bt=pt;Object.defineProperty(pt.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(pt.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),ut._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:dt.noop,onComplete:dt.noop}});var mt={animations:[],request:null,addAnimation:function(t,e,n,a){var r,i,s=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=n,a||(t.animating=!0),r=0,i=s.length;r<i;++r)if(s[r].chart===t)return void(s[r]=e);s.push(e),1===s.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=dt.findIndex(this.animations,(function(e){return e.chart===t}));-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=dt.requestAnimFrame.call(window,(function(){t.request=null,t.startDigest()})))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,a,r=this.animations,i=0;i<r.length;)e=(t=r[i]).chart,n=t.numSteps,a=Math.floor((Date.now()-t.startTime)/t.duration*n)+1,t.currentStep=Math.min(a,n),dt.callback(t.render,[e,t],e),dt.callback(t.onAnimationProgress,[t],e),t.currentStep>=n?(dt.callback(t.onAnimationComplete,[t],e),e.animating=!1,r.splice(i,1)):++i}},yt=dt.options.resolve,vt=["push","pop","shift","splice","unshift"];function xt(t,e){var n=t._chartjs;if(n){var a=n.listeners,r=a.indexOf(e);-1!==r&&a.splice(r,1),a.length>0||(vt.forEach((function(e){delete t[e]})),delete t._chartjs)}}var _t=function(t,e){this.initialize(t,e)};dt.extend(_t.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&xt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),a=this.getDataset().data||[],r=n.data;for(t=0,e=a.length;t<e;++t)r[t]=r[t]||this.createMetaData(t);n.dataset=n.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,n=this,a=n.getDataset(),r=a.data||(a.data=[]);n._data!==r&&(n._data&&xt(n._data,n),r&&Object.isExtensible(r)&&(e=n,(t=r)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),vt.forEach((function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),r=a.apply(this,e);return dt.each(t._chartjs.listeners,(function(t){"function"==typeof t[n]&&t[n].apply(t,e)})),r}})})))),n._data=r),n.resyncElements()},update:dt.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],a=n.length,r=0;r<a;++r)n[r].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,a=0;for(t.dataset&&t.dataset.draw();a<n;++a)e[a].draw()},removeHoverStyle:function(t){dt.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},r=t._model,i=dt.getHoverColor;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth},r.backgroundColor=yt([a.hoverBackgroundColor,e.hoverBackgroundColor,i(r.backgroundColor)],void 0,n),r.borderColor=yt([a.hoverBorderColor,e.hoverBorderColor,i(r.borderColor)],void 0,n),r.borderWidth=yt([a.hoverBorderWidth,e.hoverBorderWidth,r.borderWidth],void 0,n)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,a=e.length;a<n?t.data.splice(a,n-a):a>n&&this.insertElements(n,a-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),_t.extend=dt.inherits;var Tt=_t;ut._set("global",{elements:{arc:{backgroundColor:ut.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var wt=gt.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var a=dt.getAngleFromPoint(n,{x:t,y:e}),r=a.angle,i=a.distance,s=n.startAngle,u=n.endAngle;u<s;)u+=2*Math.PI;for(;r>u;)r-=2*Math.PI;for(;r<s;)r+=2*Math.PI;return r>=s&&r<=u&&i>=n.innerRadius&&i<=n.outerRadius}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,a=n.startAngle,r=n.endAngle,i="inner"===n.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(n.x,n.y,Math.max(n.outerRadius-i,0),a,r),e.arc(n.x,n.y,n.innerRadius,r,a,!0),e.closePath(),e.fillStyle=n.backgroundColor,e.fill(),n.borderWidth&&("inner"===n.borderAlign?(e.beginPath(),e.arc(n.x,n.y,n.outerRadius,a-(t=i/n.outerRadius),r+t),n.innerRadius>i?e.arc(n.x,n.y,n.innerRadius-i,r+(t=i/n.innerRadius),a-t,!0):e.arc(n.x,n.y,i,r+Math.PI/2,a-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(n.x,n.y,n.outerRadius,a,r),e.arc(n.x,n.y,n.innerRadius,r,a,!0),e.closePath(),e.lineWidth=2*n.borderWidth,e.lineJoin="round"):(e.lineWidth=n.borderWidth,e.lineJoin="bevel"),e.strokeStyle=n.borderColor,e.stroke()),e.restore()}}),Ot=dt.valueOrDefault,St=ut.global.defaultColor;ut._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var It=gt.extend({draw:function(){var t,e,n,a,r=this._view,i=this._chart.ctx,s=r.spanGaps,u=this._children.slice(),o=ut.global,l=o.elements.line,d=-1;for(this._loop&&u.length&&u.push(u[0]),i.save(),i.lineCap=r.borderCapStyle||l.borderCapStyle,i.setLineDash&&i.setLineDash(r.borderDash||l.borderDash),i.lineDashOffset=Ot(r.borderDashOffset,l.borderDashOffset),i.lineJoin=r.borderJoinStyle||l.borderJoinStyle,i.lineWidth=Ot(r.borderWidth,l.borderWidth),i.strokeStyle=r.borderColor||o.defaultColor,i.beginPath(),d=-1,t=0;t<u.length;++t)e=u[t],n=dt.previousItem(u,t),a=e._view,0===t?a.skip||(i.moveTo(a.x,a.y),d=t):(n=-1===d?n:u[d],a.skip||(d!==t-1&&!s||-1===d?i.moveTo(a.x,a.y):dt.canvas.lineTo(i,n._view,e._view),d=t));i.stroke(),i.restore()}}),Nt=dt.valueOrDefault,Ct=ut.global.defaultColor;function Rt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}ut._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:Ct,borderColor:Ct,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var At=gt.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:Rt,inXRange:Rt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._chart.ctx,a=e.pointStyle,r=e.rotation,i=e.radius,s=e.x,u=e.y,o=ut.global,l=o.defaultColor;e.skip||(void 0===t||dt.canvas._isPointInArea(e,t))&&(n.strokeStyle=e.borderColor||l,n.lineWidth=Nt(e.borderWidth,o.elements.point.borderWidth),n.fillStyle=e.backgroundColor||l,dt.canvas.drawPoint(n,a,i,s,u,r))}}),kt=ut.global.defaultColor;function Et(t){return t&&void 0!==t.width}function Lt(t){var e,n,a,r,i;return Et(t)?(e=t.x-(i=t.width/2),n=t.x+i,a=Math.min(t.y,t.base),r=Math.max(t.y,t.base)):(i=t.height/2,e=Math.min(t.x,t.base),n=Math.max(t.x,t.base),a=t.y-i,r=t.y+i),{left:e,top:a,right:n,bottom:r}}function Dt(t,e,n){return t===e?n:t===n?e:t}function Pt(t,e,n){var a=null===e,r=null===n,i=!(!t||a&&r)&&Lt(t);return i&&(a||e>=i.left&&e<=i.right)&&(r||n>=i.top&&n<=i.bottom)}ut._set("global",{elements:{rectangle:{backgroundColor:kt,borderColor:kt,borderSkipped:"bottom",borderWidth:0}}});var Mt=gt.extend({draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=Lt(t),n=e.right-e.left,a=e.bottom-e.top,r=function(t,e,n){var a,r,i,s,u=t.borderWidth,o=function(t){var e=t.borderSkipped,n={};return e?(t.horizontal?t.base>t.x&&(e=Dt(e,"left","right")):t.base<t.y&&(e=Dt(e,"bottom","top")),n[e]=!0,n):n}(t);return dt.isObject(u)?(a=+u.top||0,r=+u.right||0,i=+u.bottom||0,s=+u.left||0):a=r=i=s=+u||0,{t:o.top||a<0?0:a>n?n:a,r:o.right||r<0?0:r>e?e:r,b:o.bottom||i<0?0:i>n?n:i,l:o.left||s<0?0:s>e?e:s}}(t,n/2,a/2);return{outer:{x:e.left,y:e.top,w:n,h:a},inner:{x:e.left+r.l,y:e.top+r.t,w:n-r.l-r.r,h:a-r.t-r.b}}}(e),a=n.outer,r=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(a.x,a.y,a.w,a.h),a.w===r.w&&a.h===r.h||(t.save(),t.beginPath(),t.rect(a.x,a.y,a.w,a.h),t.clip(),t.fillStyle=e.borderColor,t.rect(r.x,r.y,r.w,r.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Pt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return Et(n)?Pt(n,t,null):Pt(n,null,e)},inXRange:function(t){return Pt(this._view,t,null)},inYRange:function(t){return Pt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return Et(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return Et(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),qt={},jt=It,Ft=At,Vt=Mt;qt.Arc=wt,qt.Line=jt,qt.Point=Ft,qt.Rectangle=Vt;var Gt=dt.options.resolve;ut._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var Bt=Tt.extend({dataElementType:qt.Rectangle,initialize:function(){var t,e=this;Tt.prototype.initialize.apply(e,arguments),(t=e.getMeta()).stack=e.getDataset().stack,t.bar=!0},update:function(t){var e,n,a=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=a.length;e<n;++e)this.updateElement(a[e],e,t)},updateElement:function(t,e,n){var a=this,r=a.getMeta(),i=a.getDataset(),s=a._resolveElementOptions(t,e);t._xScale=a.getScaleForId(r.xAxisID),t._yScale=a.getScaleForId(r.yAxisID),t._datasetIndex=a.index,t._index=e,t._model={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderSkipped:s.borderSkipped,borderWidth:s.borderWidth,datasetLabel:i.label,label:a.chart.data.labels[e]},a._updateElementGeometry(t,e,n),t.pivot()},_updateElementGeometry:function(t,e,n){var a=this,r=t._model,i=a._getValueScale(),s=i.getBasePixel(),u=i.isHorizontal(),o=a._ruler||a.getRuler(),l=a.calculateBarValuePixels(a.index,e),d=a.calculateBarIndexPixels(a.index,e,o);r.horizontal=u,r.base=n?s:l.base,r.x=u?n?s:l.head:d.center,r.y=u?d.center:n?s:l.head,r.height=u?d.size:void 0,r.width=u?void 0:d.size},_getStacks:function(t){var e,n,a=this.chart,r=this._getIndexScale().options.stacked,i=void 0===t?a.data.datasets.length:t+1,s=[];for(e=0;e<i;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===r||!0===r&&-1===s.indexOf(n.stack)||void 0===r&&(void 0===n.stack||-1===s.indexOf(n.stack)))&&s.push(n.stack);return s},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),a=void 0!==e?n.indexOf(e):-1;return-1===a?n.length-1:a},getRuler:function(){var t,e,n=this._getIndexScale(),a=this.getStackCount(),r=this.index,i=n.isHorizontal(),s=i?n.left:n.top,u=s+(i?n.width:n.height),o=[];for(t=0,e=this.getMeta().data.length;t<e;++t)o.push(n.getPixelForValue(null,t,r));return{min:dt.isNullOrUndef(n.options.barThickness)?function(t,e){var n,a,r,i,s=t.isHorizontal()?t.width:t.height,u=t.getTicks();for(r=1,i=e.length;r<i;++r)s=Math.min(s,Math.abs(e[r]-e[r-1]));for(r=0,i=u.length;r<i;++r)a=t.getPixelForTick(r),s=r>0?Math.min(s,a-n):s,n=a;return s}(n,o):-1,pixels:o,start:s,end:u,stackCount:a,scale:n}},calculateBarValuePixels:function(t,e){var n,a,r,i,s,u,o=this.chart,l=this.getMeta(),d=this._getValueScale(),c=d.isHorizontal(),f=o.data.datasets,h=+d.getRightValue(f[t].data[e]),g=d.options.minBarLength,p=d.options.stacked,b=l.stack,m=0;if(p||void 0===p&&void 0!==b)for(n=0;n<t;++n)(a=o.getDatasetMeta(n)).bar&&a.stack===b&&a.controller._getValueScaleId()===d.id&&o.isDatasetVisible(n)&&(r=+d.getRightValue(f[n].data[e]),(h<0&&r<0||h>=0&&r>0)&&(m+=r));return i=d.getPixelForValue(m),u=(s=d.getPixelForValue(m+h))-i,void 0!==g&&Math.abs(u)<g&&(u=g,s=h>=0&&!c||h<0&&c?i-g:i+g),{size:u,base:i,head:s,center:s+u/2}},calculateBarIndexPixels:function(t,e,n){var a=n.scale.options,r="flex"===a.barThickness?function(t,e,n){var a,r=e.pixels,i=r[t],s=t>0?r[t-1]:null,u=t<r.length-1?r[t+1]:null,o=n.categoryPercentage;return null===s&&(s=i-(null===u?e.end-e.start:u-i)),null===u&&(u=i+i-s),a=i-(i-Math.min(s,u))/2*o,{chunk:Math.abs(u-s)/2*o/e.stackCount,ratio:n.barPercentage,start:a}}(e,n,a):function(t,e,n){var a,r,i=n.barThickness,s=e.stackCount,u=e.pixels[t];return dt.isNullOrUndef(i)?(a=e.min*n.categoryPercentage,r=n.barPercentage):(a=i*s,r=1),{chunk:a/s,ratio:r,start:u-a/2}}(e,n,a),i=this.getStackIndex(t,this.getMeta().stack),s=r.start+r.chunk*i+r.chunk/2,u=Math.min(dt.valueOrDefault(a.maxBarThickness,1/0),r.chunk*r.ratio);return{base:s-u/2,head:s+u/2,center:s,size:u}},draw:function(){var t=this.chart,e=this._getValueScale(),n=this.getMeta().data,a=this.getDataset(),r=n.length,i=0;for(dt.canvas.clipArea(t.ctx,t.chartArea);i<r;++i)isNaN(e.getRightValue(a.data[i]))||n[i].draw();dt.canvas.unclipArea(t.ctx)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],u=t.custom||{},o=i.options.elements.rectangle,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderSkipped","borderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=Gt([u[r],s[r],o[r]],d,e);return l}}),zt=dt.valueOrDefault,Yt=dt.options.resolve;ut._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": ("+t.xLabel+", "+t.yLabel+", "+e.datasets[t.datasetIndex].data[t.index].r+")"}}}});var Ht=Tt.extend({dataElementType:qt.Point,update:function(t){var e=this,n=e.getMeta();dt.each(n.data,(function(n,a){e.updateElement(n,a,t)}))},updateElement:function(t,e,n){var a=this,r=a.getMeta(),i=t.custom||{},s=a.getScaleForId(r.xAxisID),u=a.getScaleForId(r.yAxisID),o=a._resolveElementOptions(t,e),l=a.getDataset().data[e],d=a.index,c=n?s.getPixelForDecimal(.5):s.getPixelForValue("object"==typeof l?l:NaN,e,d),f=n?u.getBasePixel():u.getPixelForValue(l,e,d);t._xScale=s,t._yScale=u,t._options=o,t._datasetIndex=d,t._index=e,t._model={backgroundColor:o.backgroundColor,borderColor:o.borderColor,borderWidth:o.borderWidth,hitRadius:o.hitRadius,pointStyle:o.pointStyle,rotation:o.rotation,radius:n?0:o.radius,skip:i.skip||isNaN(c)||isNaN(f),x:c,y:f},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=zt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=zt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=zt(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],u=t.custom||{},o=i.options.elements.point,l=s.data[e],d={},c={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},f=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,a=f.length;n<a;++n)d[r=f[n]]=Yt([u[r],s[r],o[r]],c,e);return d.radius=Yt([u.radius,l?l.r:void 0,s.radius,o.radius],c,e),d}}),Ut=dt.options.resolve,Wt=dt.valueOrDefault;ut._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,a=n.datasets,r=n.labels;if(a.length)for(var i=0;i<a[0].data.length;++i)e.push('<li><span style="background-color:'+a[0].backgroundColor[i]+'"></span>'),r[i]&&e.push(r[i]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,a){var r=t.getDatasetMeta(0),i=e.datasets[0],s=r.data[a],u=s&&s.custom||{},o=t.options.elements.arc;return{text:n,fillStyle:Ut([u.backgroundColor,i.backgroundColor,o.backgroundColor],void 0,a),strokeStyle:Ut([u.borderColor,i.borderColor,o.borderColor],void 0,a),lineWidth:Ut([u.borderWidth,i.borderWidth,o.borderWidth],void 0,a),hidden:isNaN(i.data[a])||r.data[a].hidden,index:a}})):[]}},onClick:function(t,e){var n,a,r,i=e.index,s=this.chart;for(n=0,a=(s.data.datasets||[]).length;n<a;++n)(r=s.getDatasetMeta(n)).data[i]&&(r.data[i].hidden=!r.data[i].hidden);s.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],a=": "+e.datasets[t.datasetIndex].data[t.index];return dt.isArray(n)?(n=n.slice())[0]+=a:n+=a,n}}}});var Kt=Tt.extend({dataElementType:qt.Arc,linkScales:dt.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e,n,a=this,r=a.chart,i=r.chartArea,s=r.options,u=i.right-i.left,o=i.bottom-i.top,l=Math.min(u,o),d={x:0,y:0},c=a.getMeta(),f=c.data,h=s.cutoutPercentage,g=s.circumference,p=a._getRingWeight(a.index);if(g<2*Math.PI){var b=s.rotation%(2*Math.PI),m=(b+=2*Math.PI*(b>=Math.PI?-1:b<-Math.PI?1:0))+g,y={x:Math.cos(b),y:Math.sin(b)},v={x:Math.cos(m),y:Math.sin(m)},x=b<=0&&m>=0||b<=2*Math.PI&&2*Math.PI<=m,_=b<=.5*Math.PI&&.5*Math.PI<=m||b<=2.5*Math.PI&&2.5*Math.PI<=m,T=b<=-Math.PI&&-Math.PI<=m||b<=Math.PI&&Math.PI<=m,w=b<=.5*-Math.PI&&.5*-Math.PI<=m||b<=1.5*Math.PI&&1.5*Math.PI<=m,O=h/100,S={x:T?-1:Math.min(y.x*(y.x<0?1:O),v.x*(v.x<0?1:O)),y:w?-1:Math.min(y.y*(y.y<0?1:O),v.y*(v.y<0?1:O))},I={x:x?1:Math.max(y.x*(y.x>0?1:O),v.x*(v.x>0?1:O)),y:_?1:Math.max(y.y*(y.y>0?1:O),v.y*(v.y>0?1:O))},N={width:.5*(I.x-S.x),height:.5*(I.y-S.y)};l=Math.min(u/N.width,o/N.height),d={x:-.5*(I.x+S.x),y:-.5*(I.y+S.y)}}for(e=0,n=f.length;e<n;++e)f[e]._options=a._resolveElementOptions(f[e],e);for(r.borderWidth=a.getMaxBorderWidth(),r.outerRadius=Math.max((l-r.borderWidth)/2,0),r.innerRadius=Math.max(h?r.outerRadius/100*h:0,0),r.radiusLength=(r.outerRadius-r.innerRadius)/(a._getVisibleDatasetWeightTotal()||1),r.offsetX=d.x*r.outerRadius,r.offsetY=d.y*r.outerRadius,c.total=a.calculateTotal(),a.outerRadius=r.outerRadius-r.radiusLength*a._getRingWeightOffset(a.index),a.innerRadius=Math.max(a.outerRadius-r.radiusLength*p,0),e=0,n=f.length;e<n;++e)a.updateElement(f[e],e,t)},updateElement:function(t,e,n){var a=this,r=a.chart,i=r.chartArea,s=r.options,u=s.animation,o=(i.left+i.right)/2,l=(i.top+i.bottom)/2,d=s.rotation,c=s.rotation,f=a.getDataset(),h=n&&u.animateRotate||t.hidden?0:a.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),g=t._options||{};dt.extend(t,{_datasetIndex:a.index,_index:e,_model:{backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,borderAlign:g.borderAlign,x:o+r.offsetX,y:l+r.offsetY,startAngle:d,endAngle:c,circumference:h,outerRadius:n&&u.animateScale?0:a.outerRadius,innerRadius:n&&u.animateScale?0:a.innerRadius,label:dt.valueAtIndexOrDefault(f.label,e,r.data.labels[e])}});var p=t._model;n&&u.animateRotate||(p.startAngle=0===e?s.rotation:a.getMeta().data[e-1]._model.endAngle,p.endAngle=p.startAngle+p.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),a=0;return dt.each(n.data,(function(n,r){t=e.data[r],isNaN(t)||n.hidden||(a+=Math.abs(t))})),a},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,a,r,i,s,u,o,l=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e<n;++e)if(d.isDatasetVisible(e)){t=(a=d.getDatasetMeta(e)).data,e!==this.index&&(i=a.controller);break}if(!t)return 0;for(e=0,n=t.length;e<n;++e)r=t[e],"inner"!==(s=i?i._resolveElementOptions(r,e):r._options).borderAlign&&(l=(o=s.hoverBorderWidth)>(l=(u=s.borderWidth)>l?u:l)?o:l);return l},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Wt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Wt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Wt(n.hoverBorderWidth,n.borderWidth)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=this.getDataset(),u=t.custom||{},o=i.options.elements.arc,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=Ut([u[r],s[r],o[r]],d,e);return l},_getRingWeightOffset:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&(e+=this._getRingWeight(n));return e},_getRingWeight:function(t){return Math.max(Wt(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});ut._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}});var $t=Bt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),Jt=dt.valueOrDefault,Zt=dt.options.resolve,Qt=dt.canvas._isPointInArea;function Xt(t,e){return Jt(t.showLine,e.showLines)}ut._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var te=Tt.extend({datasetElementType:qt.Line,dataElementType:qt.Point,update:function(t){var e,n,a=this,r=a.getMeta(),i=r.dataset,s=r.data||[],u=a.getScaleForId(r.yAxisID),o=a.getDataset(),l=Xt(o,a.chart.options);for(l&&(void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),i._scale=u,i._datasetIndex=a.index,i._children=s,i._model=a._resolveLineOptions(i),i.pivot()),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(l&&0!==i._model.tension&&a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},updateElement:function(t,e,n){var a,r,i=this,s=i.getMeta(),u=t.custom||{},o=i.getDataset(),l=i.index,d=o.data[e],c=i.getScaleForId(s.yAxisID),f=i.getScaleForId(s.xAxisID),h=s.dataset._model,g=i._resolvePointOptions(t,e);a=f.getPixelForValue("object"==typeof d?d:NaN,e,l),r=n?c.getBasePixel():i.calculatePointY(d,e,l),t._xScale=f,t._yScale=c,t._options=g,t._datasetIndex=l,t._index=e,t._model={x:a,y:r,skip:u.skip||isNaN(a)||isNaN(r),radius:g.radius,pointStyle:g.pointStyle,rotation:g.rotation,backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,tension:Jt(u.tension,h?h.tension:0),steppedLine:!!h&&h.steppedLine,hitRadius:g.hitRadius}},_resolvePointOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],u=t.custom||{},o=i.options.elements.point,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},f=Object.keys(c);for(n=0,a=f.length;n<a;++n)l[r=f[n]]=Zt([u[r],s[c[r]],s[r],o[r]],d,e);return l},_resolveLineOptions:function(t){var e,n,a,r=this.chart,i=r.data.datasets[this.index],s=t.custom||{},u=r.options,o=u.elements.line,l={},d=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill","cubicInterpolationMode"];for(e=0,n=d.length;e<n;++e)l[a=d[e]]=Zt([s[a],i[a],o[a]]);return l.spanGaps=Jt(i.spanGaps,u.spanGaps),l.tension=Jt(i.lineTension,o.tension),l.steppedLine=Zt([s.steppedLine,i.steppedLine,o.stepped]),l},calculatePointY:function(t,e,n){var a,r,i,s=this.chart,u=this.getMeta(),o=this.getScaleForId(u.yAxisID),l=0,d=0;if(o.options.stacked){for(a=0;a<n;a++)if(r=s.data.datasets[a],"line"===(i=s.getDatasetMeta(a)).type&&i.yAxisID===o.id&&s.isDatasetVisible(a)){var c=Number(o.getRightValue(r.data[e]));c<0?d+=c||0:l+=c||0}var f=Number(o.getRightValue(t));return o.getPixelForValue(f<0?d+f:l+f)}return o.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,a,r=this.chart,i=this.getMeta(),s=i.dataset._model,u=r.chartArea,o=i.data||[];function l(t,e,n){return Math.max(Math.min(t,n),e)}if(s.spanGaps&&(o=o.filter((function(t){return!t._model.skip}))),"monotone"===s.cubicInterpolationMode)dt.splineCurveMonotone(o);else for(t=0,e=o.length;t<e;++t)n=o[t]._model,a=dt.splineCurve(dt.previousItem(o,t)._model,n,dt.nextItem(o,t)._model,s.tension),n.controlPointPreviousX=a.previous.x,n.controlPointPreviousY=a.previous.y,n.controlPointNextX=a.next.x,n.controlPointNextY=a.next.y;if(r.options.elements.line.capBezierPoints)for(t=0,e=o.length;t<e;++t)Qt(n=o[t]._model,u)&&(t>0&&Qt(o[t-1]._model,u)&&(n.controlPointPreviousX=l(n.controlPointPreviousX,u.left,u.right),n.controlPointPreviousY=l(n.controlPointPreviousY,u.top,u.bottom)),t<o.length-1&&Qt(o[t+1]._model,u)&&(n.controlPointNextX=l(n.controlPointNextX,u.left,u.right),n.controlPointNextY=l(n.controlPointNextY,u.top,u.bottom)))},draw:function(){var t,e=this.chart,n=this.getMeta(),a=n.data||[],r=e.chartArea,i=a.length,s=0;for(Xt(this.getDataset(),e.options)&&(dt.canvas.clipArea(e.ctx,{left:r.left,right:r.right,top:r.top-(t=(n.dataset._model.borderWidth||0)/2),bottom:r.bottom+t}),n.dataset.draw(),dt.canvas.unclipArea(e.ctx));s<i;++s)a[s].draw(r)},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Jt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Jt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Jt(n.hoverBorderWidth,n.borderWidth),e.radius=Jt(n.hoverRadius,n.radius)}}),ee=dt.options.resolve;ut._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,a=n.datasets,r=n.labels;if(a.length)for(var i=0;i<a[0].data.length;++i)e.push('<li><span style="background-color:'+a[0].backgroundColor[i]+'"></span>'),r[i]&&e.push(r[i]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,a){var r=t.getDatasetMeta(0),i=e.datasets[0],s=r.data[a].custom||{},u=t.options.elements.arc;return{text:n,fillStyle:ee([s.backgroundColor,i.backgroundColor,u.backgroundColor],void 0,a),strokeStyle:ee([s.borderColor,i.borderColor,u.borderColor],void 0,a),lineWidth:ee([s.borderWidth,i.borderWidth,u.borderWidth],void 0,a),hidden:isNaN(i.data[a])||r.data[a].hidden,index:a}})):[]}},onClick:function(t,e){var n,a,r,i=e.index,s=this.chart;for(n=0,a=(s.data.datasets||[]).length;n<a;++n)(r=s.getDatasetMeta(n)).data[i].hidden=!r.data[i].hidden;s.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var ne=Tt.extend({dataElementType:qt.Arc,linkScales:dt.noop,update:function(t){var e,n,a,r=this,i=r.getDataset(),s=r.getMeta(),u=r.chart.options.startAngle||0,o=r._starts=[],l=r._angles=[],d=s.data;for(r._updateRadius(),s.count=r.countVisibleElements(),e=0,n=i.data.length;e<n;e++)o[e]=u,a=r._computeAngle(e),l[e]=a,u+=a;for(e=0,n=d.length;e<n;++e)d[e]._options=r._resolveElementOptions(d[e],e),r.updateElement(d[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,a=e.options,r=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max(r/2,0),e.innerRadius=Math.max(a.cutoutPercentage?e.outerRadius/100*a.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,n){var a=this,r=a.chart,i=a.getDataset(),s=r.options,u=s.animation,o=r.scale,l=r.data.labels,d=o.xCenter,c=o.yCenter,f=s.startAngle,h=t.hidden?0:o.getDistanceFromCenterForValue(i.data[e]),g=a._starts[e],p=g+(t.hidden?0:a._angles[e]),b=u.animateScale?0:o.getDistanceFromCenterForValue(i.data[e]),m=t._options||{};dt.extend(t,{_datasetIndex:a.index,_index:e,_scale:o,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:d,y:c,innerRadius:0,outerRadius:n?b:h,startAngle:n&&u.animateRotate?f:g,endAngle:n&&u.animateRotate?f:p,label:dt.valueAtIndexOrDefault(l,e,l[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return dt.each(e.data,(function(e,a){isNaN(t.data[a])||e.hidden||n++})),n},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor,r=dt.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=r(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=r(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=r(n.hoverBorderWidth,n.borderWidth)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=this.getDataset(),u=t.custom||{},o=i.options.elements.arc,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=ee([u[r],s[r],o[r]],d,e);return l},_computeAngle:function(t){var e=this,n=this.getMeta().count,a=e.getDataset(),r=e.getMeta();return isNaN(a.data[t])||r.data[t].hidden?0:ee([e.chart.options.elements.arc.angle,2*Math.PI/n],{chart:e.chart,dataIndex:t,dataset:a,datasetIndex:e.index},t)}});ut._set("pie",dt.clone(ut.doughnut)),ut._set("pie",{cutoutPercentage:0});var ae=Kt,re=dt.valueOrDefault,ie=dt.options.resolve;ut._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}});var se=Tt.extend({datasetElementType:qt.Line,dataElementType:qt.Point,linkScales:dt.noop,update:function(t){var e,n,a=this,r=a.getMeta(),i=r.dataset,s=r.data||[],u=a.chart.scale,o=a.getDataset();for(void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),i._scale=u,i._datasetIndex=a.index,i._children=s,i._loop=!0,i._model=a._resolveLineOptions(i),i.pivot(),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},updateElement:function(t,e,n){var a=this,r=t.custom||{},i=a.getDataset(),s=a.chart.scale,u=s.getPointPositionForValue(e,i.data[e]),o=a._resolvePointOptions(t,e),l=a.getMeta().dataset._model,d=n?s.xCenter:u.x,c=n?s.yCenter:u.y;t._scale=s,t._options=o,t._datasetIndex=a.index,t._index=e,t._model={x:d,y:c,skip:r.skip||isNaN(d)||isNaN(c),radius:o.radius,pointStyle:o.pointStyle,rotation:o.rotation,backgroundColor:o.backgroundColor,borderColor:o.borderColor,borderWidth:o.borderWidth,tension:re(r.tension,l?l.tension:0),hitRadius:o.hitRadius}},_resolvePointOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],u=t.custom||{},o=i.options.elements.point,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},f=Object.keys(c);for(n=0,a=f.length;n<a;++n)l[r=f[n]]=ie([u[r],s[c[r]],s[r],o[r]],d,e);return l},_resolveLineOptions:function(t){var e,n,a,r=this.chart,i=r.data.datasets[this.index],s=t.custom||{},u=r.options.elements.line,o={},l=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"];for(e=0,n=l.length;e<n;++e)o[a=l[e]]=ie([s[a],i[a],u[a]]);return o.tension=re(i.lineTension,u.tension),o},updateBezierControlPoints:function(){var t,e,n,a,r=this.getMeta(),i=this.chart.chartArea,s=r.data||[];function u(t,e,n){return Math.max(Math.min(t,n),e)}for(t=0,e=s.length;t<e;++t)n=s[t]._model,a=dt.splineCurve(dt.previousItem(s,t,!0)._model,n,dt.nextItem(s,t,!0)._model,n.tension),n.controlPointPreviousX=u(a.previous.x,i.left,i.right),n.controlPointPreviousY=u(a.previous.y,i.top,i.bottom),n.controlPointNextX=u(a.next.x,i.left,i.right),n.controlPointNextY=u(a.next.y,i.top,i.bottom)},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=re(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=re(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=re(n.hoverBorderWidth,n.borderWidth),e.radius=re(n.hoverRadius,n.radius)}});ut._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}});var ue={bar:Bt,bubble:Ht,doughnut:Kt,horizontalBar:$t,line:te,polarArea:ne,pie:ae,radar:se,scatter:te};function oe(t,e){return t.native?{x:t.x,y:t.y}:dt.getRelativePosition(t,e)}function le(t,e){var n,a,r,i,s;for(a=0,i=t.data.datasets.length;a<i;++a)if(t.isDatasetVisible(a))for(r=0,s=(n=t.getDatasetMeta(a)).data.length;r<s;++r){var u=n.data[r];u._view.skip||e(u)}}function de(t,e){var n=[];return le(t,(function(t){t.inRange(e.x,e.y)&&n.push(t)})),n}function ce(t,e,n,a){var r=Number.POSITIVE_INFINITY,i=[];return le(t,(function(t){if(!n||t.inRange(e.x,e.y)){var s=t.getCenterPoint(),u=a(e,s);u<r?(i=[t],r=u):u===r&&i.push(t)}})),i}function fe(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,a){var r=e?Math.abs(t.x-a.x):0,i=n?Math.abs(t.y-a.y):0;return Math.sqrt(Math.pow(r,2)+Math.pow(i,2))}}function he(t,e,n){var a=oe(e,t);n.axis=n.axis||"x";var r=fe(n.axis),i=n.intersect?de(t,a):ce(t,a,!1,r),s=[];return i.length?(t.data.datasets.forEach((function(e,n){if(t.isDatasetVisible(n)){var a=t.getDatasetMeta(n).data[i[0]._index];a&&!a._view.skip&&s.push(a)}})),s):[]}var ge={modes:{single:function(t,e){var n=oe(e,t),a=[];return le(t,(function(t){if(t.inRange(n.x,n.y))return a.push(t),a})),a.slice(0,1)},label:he,index:he,dataset:function(t,e,n){var a=oe(e,t);n.axis=n.axis||"xy";var r=fe(n.axis),i=n.intersect?de(t,a):ce(t,a,!1,r);return i.length>0&&(i=t.getDatasetMeta(i[0]._datasetIndex).data),i},"x-axis":function(t,e){return he(t,e,{intersect:!1})},point:function(t,e){return de(t,oe(e,t))},nearest:function(t,e,n){var a=oe(e,t);n.axis=n.axis||"xy";var r=fe(n.axis);return ce(t,a,n.intersect,r)},x:function(t,e,n){var a=oe(e,t),r=[],i=!1;return le(t,(function(t){t.inXRange(a.x)&&r.push(t),t.inRange(a.x,a.y)&&(i=!0)})),n.intersect&&!i&&(r=[]),r},y:function(t,e,n){var a=oe(e,t),r=[],i=!1;return le(t,(function(t){t.inYRange(a.y)&&r.push(t),t.inRange(a.x,a.y)&&(i=!0)})),n.intersect&&!i&&(r=[]),r}}};function pe(t,e){return dt.where(t,(function(t){return t.position===e}))}function be(t,e){t.forEach((function(t,e){return t._tmpIndex_=e,t})),t.sort((function(t,n){var a=e?n:t,r=e?t:n;return a.weight===r.weight?a._tmpIndex_-r._tmpIndex_:a.weight-r.weight})),t.forEach((function(t){delete t._tmpIndex_}))}function me(t,e){dt.each(t,(function(t){e[t.position]+=t.isHorizontal()?t.height:t.width}))}ut._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var ye,ve={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var a,r=["fullWidth","position","weight"],i=r.length,s=0;s<i;++s)n.hasOwnProperty(a=r[s])&&(e[a]=n[a])},update:function(t,e,n){if(t){var a=dt.options.toPadding((t.options.layout||{}).padding),r=a.left,i=a.right,s=a.top,u=a.bottom,o=pe(t.boxes,"left"),l=pe(t.boxes,"right"),d=pe(t.boxes,"top"),c=pe(t.boxes,"bottom"),f=pe(t.boxes,"chartArea");be(o,!0),be(l,!1),be(d,!0),be(c,!1);var h,g=o.concat(l),p=d.concat(c),b=g.concat(p),m=e-r-i,y=n-s-u,v=(e-m/2)/g.length,x=m,_=y,T={top:s,left:r,bottom:u,right:i},w=[];dt.each(b,(function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?m:x,y/2),_-=e.height):(e=t.update(v,_),x-=e.width),w.push({horizontal:n,width:e.width,box:t})})),h=function(t){var e=0,n=0,a=0,r=0;return dt.each(t,(function(t){if(t.getPadding){var i=t.getPadding();e=Math.max(e,i.top),n=Math.max(n,i.left),a=Math.max(a,i.bottom),r=Math.max(r,i.right)}})),{top:e,left:n,bottom:a,right:r}}(b),dt.each(g,A),me(g,T),dt.each(p,A),me(p,T),dt.each(g,(function(t){var e=dt.findNextWhere(w,(function(e){return e.box===t}));e&&t.update(e.width,_,{left:0,right:0,top:T.top,bottom:T.bottom})})),me(b,T={top:s,left:r,bottom:u,right:i});var O=Math.max(h.left-T.left,0);T.left+=O,T.right+=Math.max(h.right-T.right,0);var S=Math.max(h.top-T.top,0);T.top+=S,T.bottom+=Math.max(h.bottom-T.bottom,0);var I=n-T.top-T.bottom,N=e-T.left-T.right;N===x&&I===_||(dt.each(g,(function(t){t.height=I})),dt.each(p,(function(t){t.fullWidth||(t.width=N)})),_=I,x=N);var C=r+O,R=s+S;dt.each(o.concat(d),k),C+=x,R+=_,dt.each(l,k),dt.each(c,k),t.chartArea={left:T.left,top:T.top,right:T.left+x,bottom:T.top+_},dt.each(f,(function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(x,_)}))}function A(t){var e=dt.findNextWhere(w,(function(e){return e.box===t}));if(e)if(e.horizontal){var n={left:Math.max(T.left,h.left),right:Math.max(T.right,h.right),top:0,bottom:0};t.update(t.fullWidth?m:x,y/2,n)}else t.update(e.width,_)}function k(t){t.isHorizontal()?(t.left=t.fullWidth?r:T.left,t.right=t.fullWidth?e-i:T.left+x,t.top=R,t.bottom=R+t.height,R=t.bottom):(t.left=C,t.right=C+t.width,t.top=T.top,t.bottom=T.top+_,C=t.right)}}},xe=(ye=Object.freeze({default:"/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"}))&&ye.default||ye,_e=["animationstart","webkitAnimationStart"],Te={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function we(t,e){var n=dt.getStyle(t,e),a=n&&n.match(/^(\d+)(\.\d+)?px$/);return a?Number(a[1]):void 0}var Oe=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(n){}return t}()&&{passive:!0};function Se(t,e,n){t.addEventListener(e,n,Oe)}function Ie(t,e,n){t.removeEventListener(e,n,Oe)}function Ne(t,e,n,a,r){return{type:t,chart:e,native:r||null,x:void 0!==n?n:null,y:void 0!==a?a:null}}function Ce(t){var e=document.createElement("div");return e.className=t||"",e}var Re={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(){this._loaded||(this._loaded=!0,this.disableCSSInjection||function(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}(this,xe))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return this._ensureLoaded(),n&&n.canvas===t?(function(t,e){var n=t.style,a=t.getAttribute("height"),r=t.getAttribute("width");if(t.$chartjs={initial:{height:a,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===r||""===r){var i=we(t,"width");void 0!==i&&(t.width=i)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=we(t,"height");void 0!==i&&(t.height=s)}}(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e.$chartjs){var n=e.$chartjs.initial;["height","width"].forEach((function(t){var a=n[t];dt.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)})),dt.each(n.style||{},(function(t,n){e.style[n]=t})),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var a=t.canvas;if("resize"!==e){var r=n.$chartjs||(n.$chartjs={});Se(a,e,(r.proxies||(r.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=Te[t.type]||t.type,a=dt.getRelativePosition(t,e);return Ne(n,e,a.x,a.y,t)}(e,t))})}else!function(t,e,n){var a,r,i,s,u=t.$chartjs||(t.$chartjs={}),o=u.resizer=function(t){var e=Ce("chartjs-size-monitor"),n=Ce("chartjs-size-monitor-expand"),a=Ce("chartjs-size-monitor-shrink");n.appendChild(Ce()),a.appendChild(Ce()),e.appendChild(n),e.appendChild(a),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,a.scrollLeft=1e6,a.scrollTop=1e6};var r=function(){e._reset(),t()};return Se(n,"scroll",r.bind(n,"expand")),Se(a,"scroll",r.bind(a,"shrink")),e}((a=function(){if(u.resizer){var a=n.options.maintainAspectRatio&&t.parentNode,r=a?a.clientWidth:0;e(Ne("resize",n)),a&&a.clientWidth<r&&n.canvas&&e(Ne("resize",n))}},i=!1,s=[],function(){s=Array.prototype.slice.call(arguments),r=r||this,i||(i=!0,dt.requestAnimFrame.call(window,(function(){i=!1,a.apply(r,s)})))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),a=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};dt.each(_e,(function(e){Se(t,e,a)})),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,(function(){if(u.resizer){var e=t.parentNode;e&&e!==o.parentNode&&e.insertBefore(o,e.firstChild),o._reset()}}))}(a,n,t)},removeEventListener:function(t,e,n){var a,r,i,s=t.canvas;if("resize"!==e){var u=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];u&&Ie(s,e,u)}else i=(r=(a=s).$chartjs||{}).resizer,delete r.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(dt.each(_e,(function(e){Ie(t,e,n)})),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(a),i&&i.parentNode&&i.parentNode.removeChild(i)}};dt.addEvent=Se,dt.removeEvent=Ie;var Ae=dt.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},Re._enabled?Re:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}});ut._set("global",{plugins:{}});var ke={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach((function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)})),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var a,r,i,s,u,o=this.descriptors(t),l=o.length;for(a=0;a<l;++a)if("function"==typeof(u=(i=(r=o[a]).plugin)[e])&&((s=[t].concat(n||[])).push(r.options),!1===u.apply(i,s)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],a=[],r=t&&t.config||{},i=r.options&&r.options.plugins||{};return this._plugins.concat(r.plugins||[]).forEach((function(t){if(-1===n.indexOf(t)){var e=t.id,r=i[e];!1!==r&&(!0===r&&(r=dt.clone(ut.global.plugins[e])),n.push(t),a.push({plugin:t,options:r||{}}))}})),e.descriptors=a,e.id=this._cacheId,a},_invalidate:function(t){delete t.$plugins}},Ee={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=dt.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?dt.merge({},[ut.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=dt.extend(this.defaults[t],e))},addScalesToLayout:function(t){dt.each(t.scales,(function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,ve.addBox(t,e)}))}},Le=dt.valueOrDefault;ut._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:dt.noop,title:function(t,e){var n="",a=e.labels,r=a?a.length:0;if(t.length>0){var i=t[0];i.label?n=i.label:i.xLabel?n=i.xLabel:r>0&&i.index<r&&(n=a[i.index])}return n},afterTitle:dt.noop,beforeBody:dt.noop,beforeLabel:dt.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),dt.isNullOrUndef(t.value)?n+=t.yLabel:n+=t.value,n},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:dt.noop,afterBody:dt.noop,beforeFooter:dt.noop,footer:dt.noop,afterFooter:dt.noop}}});var De={average:function(t){if(!t.length)return!1;var e,n,a=0,r=0,i=0;for(e=0,n=t.length;e<n;++e){var s=t[e];if(s&&s.hasValue()){var u=s.tooltipPosition();a+=u.x,r+=u.y,++i}}return{x:a/i,y:r/i}},nearest:function(t,e){var n,a,r,i=e.x,s=e.y,u=Number.POSITIVE_INFINITY;for(n=0,a=t.length;n<a;++n){var o=t[n];if(o&&o.hasValue()){var l=o.getCenterPoint(),d=dt.distanceBetweenPoints(e,l);d<u&&(u=d,r=o)}}if(r){var c=r.tooltipPosition();i=c.x,s=c.y}return{x:i,y:s}}};function Pe(t,e){return e&&(dt.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Me(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function qe(t){var e=ut.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Le(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Le(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Le(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Le(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Le(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Le(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Le(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Le(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Le(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function je(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Fe(t){return Pe([],Me(t))}var Ve=gt.extend({initialize:function(){this._model=qe(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,a=n.beforeTitle.apply(t,arguments),r=n.title.apply(t,arguments),i=n.afterTitle.apply(t,arguments),s=[];return s=Pe(s,Me(a)),s=Pe(s,Me(r)),Pe(s,Me(i))},getBeforeBody:function(){return Fe(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,a=n._options.callbacks,r=[];return dt.each(t,(function(t){var i={before:[],lines:[],after:[]};Pe(i.before,Me(a.beforeLabel.call(n,t,e))),Pe(i.lines,a.label.call(n,t,e)),Pe(i.after,Me(a.afterLabel.call(n,t,e))),r.push(i)})),r},getAfterBody:function(){return Fe(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),r=e.afterFooter.apply(t,arguments),i=[];return i=Pe(i,Me(n)),i=Pe(i,Me(a)),Pe(i,Me(r))},update:function(t){var e,n,a,r,i,s,u,o,l,d,c=this,f=c._options,h=c._model,g=c._model=qe(f),p=c._active,b=c._data,m={xAlign:h.xAlign,yAlign:h.yAlign},y={x:h.x,y:h.y},v={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(p.length){g.opacity=1;var _=[],T=[];x=De[f.position].call(c,p,c._eventPosition);var w=[];for(e=0,n=p.length;e<n;++e)w.push((r=void 0,i=void 0,o=void 0,l=void 0,d=void 0,r=(a=p[e])._xScale,i=a._yScale||a._scale,s=a._index,l=(o=a._chart.getDatasetMeta(u=a._datasetIndex).controller)._getIndexScale(),d=o._getValueScale(),{xLabel:r?r.getLabelForIndex(s,u):"",yLabel:i?i.getLabelForIndex(s,u):"",label:l?""+l.getLabelForIndex(s,u):"",value:d?""+d.getLabelForIndex(s,u):"",index:s,datasetIndex:u,x:a._model.x,y:a._model.y}));f.filter&&(w=w.filter((function(t){return f.filter(t,b)}))),f.itemSort&&(w=w.sort((function(t,e){return f.itemSort(t,e,b)}))),dt.each(w,(function(t){_.push(f.callbacks.labelColor.call(c,t,c._chart)),T.push(f.callbacks.labelTextColor.call(c,t,c._chart))})),g.title=c.getTitle(w,b),g.beforeBody=c.getBeforeBody(w,b),g.body=c.getBody(w,b),g.afterBody=c.getAfterBody(w,b),g.footer=c.getFooter(w,b),g.x=x.x,g.y=x.y,g.caretPadding=f.caretPadding,g.labelColors=_,g.labelTextColors=T,g.dataPoints=w,v=function(t,e){var n=t._chart.ctx,a=2*e.yPadding,r=0,i=e.body,s=i.reduce((function(t,e){return t+e.before.length+e.lines.length+e.after.length}),0),u=e.title.length,o=e.footer.length,l=e.titleFontSize,d=e.bodyFontSize,c=e.footerFontSize;a+=u*l,a+=u?(u-1)*e.titleSpacing:0,a+=u?e.titleMarginBottom:0,a+=(s+=e.beforeBody.length+e.afterBody.length)*d,a+=s?(s-1)*e.bodySpacing:0,a+=o?e.footerMarginTop:0,a+=o*c,a+=o?(o-1)*e.footerSpacing:0;var f=0,h=function(t){r=Math.max(r,n.measureText(t).width+f)};return n.font=dt.fontString(l,e._titleFontStyle,e._titleFontFamily),dt.each(e.title,h),n.font=dt.fontString(d,e._bodyFontStyle,e._bodyFontFamily),dt.each(e.beforeBody.concat(e.afterBody),h),f=e.displayColors?d+2:0,dt.each(i,(function(t){dt.each(t.before,h),dt.each(t.lines,h),dt.each(t.after,h)})),f=0,n.font=dt.fontString(c,e._footerFontStyle,e._footerFontFamily),dt.each(e.footer,h),{width:r+=2*e.xPadding,height:a}}(this,g),y=function(t,e,n,a){var r=t.x,i=t.y,s=t.caretPadding,u=n.xAlign,o=n.yAlign,l=t.caretSize+s,d=t.cornerRadius+s;return"right"===u?r-=e.width:"center"===u&&((r-=e.width/2)+e.width>a.width&&(r=a.width-e.width),r<0&&(r=0)),"top"===o?i+=l:i-="bottom"===o?e.height+l:e.height/2,"center"===o?"left"===u?r+=l:"right"===u&&(r-=l):"left"===u?r-=d:"right"===u&&(r+=d),{x:r,y:i}}(g,v,m=function(t,e){var n,a,r,i,s,u=t._model,o=t._chart,l=t._chart.chartArea,d="center",c="center";u.y<e.height?c="top":u.y>o.height-e.height&&(c="bottom");var f=(l.left+l.right)/2,h=(l.top+l.bottom)/2;"center"===c?(n=function(t){return t<=f},a=function(t){return t>f}):(n=function(t){return t<=e.width/2},a=function(t){return t>=o.width-e.width/2}),r=function(t){return t+e.width+u.caretSize+u.caretPadding>o.width},i=function(t){return t-e.width-u.caretSize-u.caretPadding<0},s=function(t){return t<=h?"top":"bottom"},n(u.x)?(d="left",r(u.x)&&(d="center",c=s(u.y))):a(u.x)&&(d="right",i(u.x)&&(d="center",c=s(u.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,v),c._chart)}else g.opacity=0;return g.xAlign=m.xAlign,g.yAlign=m.yAlign,g.x=y.x,g.y=y.y,g.width=v.width,g.height=v.height,g.caretX=x.x,g.caretY=x.y,c._model=g,t&&f.custom&&f.custom.call(c,g),c},drawCaret:function(t,e){var n=this._chart.ctx,a=this.getCaretPosition(t,e,this._view);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var a,r,i,s,u,o,l=n.caretSize,d=n.cornerRadius,c=n.xAlign,f=n.yAlign,h=t.x,g=t.y,p=e.width,b=e.height;if("center"===f)u=g+b/2,"left"===c?(r=(a=h)-l,i=a,s=u+l,o=u-l):(r=(a=h+p)+l,i=a,s=u-l,o=u+l);else if("left"===c?(a=(r=h+d+l)-l,i=r+l):"right"===c?(a=(r=h+p-d-l)-l,i=r+l):(a=(r=n.caretX)-l,i=r+l),"top"===f)u=(s=g)-l,o=s;else{u=(s=g+b)+l,o=s;var m=i;i=a,a=m}return{x1:a,x2:r,x3:i,y1:s,y2:u,y3:o}},drawTitle:function(t,e,n){var a=e.title;if(a.length){t.x=je(e,e._titleAlign),n.textAlign=e._titleAlign,n.textBaseline="top";var r,i,s=e.titleFontSize,u=e.titleSpacing;for(n.fillStyle=e.titleFontColor,n.font=dt.fontString(s,e._titleFontStyle,e._titleFontFamily),r=0,i=a.length;r<i;++r)n.fillText(a[r],t.x,t.y),t.y+=s+u,r+1===a.length&&(t.y+=e.titleMarginBottom-u)}},drawBody:function(t,e,n){var a,r=e.bodyFontSize,i=e.bodySpacing,s=e._bodyAlign,u=e.body,o=e.displayColors,l=e.labelColors,d=0,c=o?je(e,"left"):0;n.textAlign=s,n.textBaseline="top",n.font=dt.fontString(r,e._bodyFontStyle,e._bodyFontFamily),t.x=je(e,s);var f=function(e){n.fillText(e,t.x+d,t.y),t.y+=r+i};n.fillStyle=e.bodyFontColor,dt.each(e.beforeBody,f),d=o&&"right"!==s?"center"===s?r/2+1:r+2:0,dt.each(u,(function(i,s){n.fillStyle=a=e.labelTextColors[s],dt.each(i.before,f),dt.each(i.lines,(function(i){o&&(n.fillStyle=e.legendColorBackground,n.fillRect(c,t.y,r,r),n.lineWidth=1,n.strokeStyle=l[s].borderColor,n.strokeRect(c,t.y,r,r),n.fillStyle=l[s].backgroundColor,n.fillRect(c+1,t.y+1,r-2,r-2),n.fillStyle=a),f(i)})),dt.each(i.after,f)})),d=0,dt.each(e.afterBody,f),t.y-=i},drawFooter:function(t,e,n){var a=e.footer;a.length&&(t.x=je(e,e._footerAlign),t.y+=e.footerMarginTop,n.textAlign=e._footerAlign,n.textBaseline="top",n.fillStyle=e.footerFontColor,n.font=dt.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),dt.each(a,(function(a){n.fillText(a,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing})))},drawBackground:function(t,e,n,a){n.fillStyle=e.backgroundColor,n.strokeStyle=e.borderColor,n.lineWidth=e.borderWidth;var r=e.xAlign,i=e.yAlign,s=t.x,u=t.y,o=a.width,l=a.height,d=e.cornerRadius;n.beginPath(),n.moveTo(s+d,u),"top"===i&&this.drawCaret(t,a),n.lineTo(s+o-d,u),n.quadraticCurveTo(s+o,u,s+o,u+d),"center"===i&&"right"===r&&this.drawCaret(t,a),n.lineTo(s+o,u+l-d),n.quadraticCurveTo(s+o,u+l,s+o-d,u+l),"bottom"===i&&this.drawCaret(t,a),n.lineTo(s+d,u+l),n.quadraticCurveTo(s,u+l,s,u+l-d),"center"===i&&"left"===r&&this.drawCaret(t,a),n.lineTo(s,u+d),n.quadraticCurveTo(s,u,s+d,u),n.closePath(),n.fill(),e.borderWidth>0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},a={x:e.x,y:e.y},r=Math.abs(e.opacity<.001)?0:e.opacity;this._options.enabled&&(e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length)&&(t.save(),t.globalAlpha=r,this.drawBackground(a,e,t,n),a.y+=e.yPadding,this.drawTitle(a,e,t),this.drawBody(a,e,t),this.drawFooter(a,e,t),t.restore())}},handleEvent:function(t){var e,n=this,a=n._options;return n._lastActive=n._lastActive||[],n._active="mouseout"===t.type?[]:n._chart.getElementsAtEventForMode(t,a.mode,a),(e=!dt.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(a.enabled||a.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}});Ve.positioners=De;var Ge=dt.valueOrDefault;function Be(){return dt.merge({},[].slice.call(arguments),{merger:function(t,e,n,a){if("xAxes"===t||"yAxes"===t){var r,i,s,u=n[t].length;for(e[t]||(e[t]=[]),r=0;r<u;++r)i=Ge((s=n[t][r]).type,"xAxes"===t?"category":"linear"),r>=e[t].length&&e[t].push({}),dt.merge(e[t][r],!e[t][r].type||s.type&&s.type!==e[t][r].type?[Ee.getScaleDefaults(i),s]:s)}else dt._merger(t,e,n,a)}})}function ze(){return dt.merge({},[].slice.call(arguments),{merger:function(t,e,n,a){var r=e[t]||{},i=n[t];"scales"===t?e[t]=Be(r,i):"scale"===t?e[t]=dt.merge(r,[Ee.getScaleDefaults(i.type),i]):dt._merger(t,e,n,a)}})}function Ye(t){var e=t.options;dt.each(t.scales,(function(e){ve.removeBox(t,e)})),e=ze(ut.global,ut[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function He(t){return"top"===t||"bottom"===t}ut._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Ue=function(t,e){return this.construct(t,e),this};dt.extend(Ue.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=ze(ut.global,ut[t.type],t.options||{}),t}(e);var a=Ae.acquireContext(t,e),r=a&&a.canvas,i=r&&r.height,s=r&&r.width;n.id=dt.uid(),n.ctx=a,n.canvas=r,n.config=e,n.width=s,n.height=i,n.aspectRatio=i?s/i:null,n.options=e.options,n._bufferedRender=!1,n.chart=n,n.controller=n,Ue.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),a&&r?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return ke.notify(t,"beforeInit"),dt.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),ke.notify(t,"afterInit"),t},clear:function(){return dt.canvas.clear(this),this},stop:function(){return mt.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,a=e.canvas,r=n.maintainAspectRatio&&e.aspectRatio||null,i=Math.max(0,Math.floor(dt.getMaximumWidth(a))),s=Math.max(0,Math.floor(r?i/r:dt.getMaximumHeight(a)));if((e.width!==i||e.height!==s)&&(a.width=e.width=i,a.height=e.height=s,a.style.width=i+"px",a.style.height=s+"px",dt.retinaScale(e,n.devicePixelRatio),!t)){var u={width:i,height:s};ke.notify(e,"resize",[u]),n.onResize&&n.onResize(e,u),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;dt.each(e.xAxes,(function(t,e){t.id=t.id||"x-axis-"+e})),dt.each(e.yAxes,(function(t,e){t.id=t.id||"y-axis-"+e})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},a=[],r=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(a=a.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&a.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),dt.each(a,(function(e){var a=e.options,i=a.id,s=Ge(a.type,e.dtype);He(a.position)!==He(e.dposition)&&(a.position=e.dposition),r[i]=!0;var u=null;if(i in n&&n[i].type===s)(u=n[i]).options=a,u.ctx=t.ctx,u.chart=t;else{var o=Ee.getScaleConstructor(s);if(!o)return;u=new o({id:i,type:s,options:a,ctx:t.ctx,chart:t}),n[u.id]=u}u.mergeTicksOptions(),e.isDefault&&(t.scale=u)})),dt.each(r,(function(t,e){t||delete n[e]})),t.scales=n,Ee.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return dt.each(t.data.datasets,(function(n,a){var r=t.getDatasetMeta(a),i=n.type||t.config.type;if(r.type&&r.type!==i&&(t.destroyDatasetMeta(a),r=t.getDatasetMeta(a)),r.type=i,r.controller)r.controller.updateIndex(a),r.controller.linkScales();else{var s=ue[r.type];if(void 0===s)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new s(t,a),e.push(r.controller)}}),t),e},resetElements:function(){var t=this;dt.each(t.data.datasets,(function(e,n){t.getDatasetMeta(n).controller.reset()}),t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),Ye(e),ke._invalidate(e),!1!==ke.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var n=e.buildOrUpdateControllers();dt.each(e.data.datasets,(function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()}),e),e.updateLayout(),e.options.animation&&e.options.animation.duration&&dt.each(n,(function(t){t.reset()})),e.updateDatasets(),e.tooltip.initialize(),e.lastActive=[],ke.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){!1!==ke.notify(this,"beforeLayout")&&(ve.update(this,this.width,this.height),ke.notify(this,"afterScaleUpdate"),ke.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==ke.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);ke.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==ke.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),ke.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=e.options.animation,a=Ge(t.duration,n&&n.duration),r=t.lazy;if(!1!==ke.notify(e,"beforeRender")){var i=function(t){ke.notify(e,"afterRender"),dt.callback(n&&n.onComplete,[t],e)};if(n&&a){var s=new bt({numSteps:a/16.66,easing:t.easing||n.easing,render:function(t,e){var n=e.currentStep,a=n/e.numSteps;t.draw((0,dt.easing.effects[e.easing])(a),a,n)},onAnimationProgress:n.onProgress,onAnimationComplete:i});mt.addAnimation(e,s,a,r)}else e.draw(),i(new bt({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),dt.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==ke.notify(e,"beforeDraw",[t])&&(dt.each(e.boxes,(function(t){t.draw(e.chartArea)}),e),e.drawDatasets(t),e._drawTooltip(t),ke.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,n=(this.data.datasets||[]).length;e<n;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==ke.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);ke.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),a={meta:n,index:t,easingValue:e};!1!==ke.notify(this,"beforeDatasetDraw",[a])&&(n.controller.draw(e),ke.notify(this,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==ke.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),ke.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return ge.modes.single(this,t)},getElementsAtEvent:function(t){return ge.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ge.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var a=ge.modes[e];return"function"==typeof a?a(this,t,n):[]},getDatasetAtEvent:function(t){return ge.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],a=n._meta&&n._meta[e];a&&(a.controller.destroy(),delete n._meta[e])},destroy:function(){var t,e,n=this,a=n.canvas;for(n.stop(),t=0,e=n.data.datasets.length;t<e;++t)n.destroyDatasetMeta(t);a&&(n.unbindEvents(),dt.canvas.clear(n),Ae.releaseContext(n.ctx),n.canvas=null,n.ctx=null),ke.notify(n,"destroy"),delete Ue.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Ve({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};dt.each(t.options.events,(function(a){Ae.addEventListener(t,a,n),e[a]=n})),t.options.responsive&&(n=function(){t.resize()},Ae.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,dt.each(e,(function(e,n){Ae.removeEventListener(t,n,e)})))},updateHoverStyle:function(t,e,n){var a,r,i,s=n?"setHoverStyle":"removeHoverStyle";for(r=0,i=t.length;r<i;++r)(a=t[r])&&this.getDatasetMeta(a._datasetIndex).controller[s](a)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==ke.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var a=e.handleEvent(t);n&&(a=n._start?n.handleEvent(t):a|n.handleEvent(t)),ke.notify(e,"afterEvent",[t]);var r=e._bufferedRequest;return r?e.render(r):a&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,n=this,a=n.options||{},r=a.hover;return n.lastActive=n.lastActive||[],n.active="mouseout"===t.type?[]:n.getElementsAtEventForMode(t,r.mode,r),dt.callback(a.onHover||a.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||a.onClick&&a.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,r.mode,!1),n.active.length&&r.mode&&n.updateHoverStyle(n.active,r.mode,!0),e=!dt.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),Ue.instances={};var We=Ue;function Ke(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function $e(t){this.options=t||{}}Ue.Controller=Ue,Ue.types={},dt.configMerge=ze,dt.scaleMerge=Be,dt.extend($e.prototype,{formats:Ke,parse:Ke,format:Ke,add:Ke,diff:Ke,startOf:Ke,endOf:Ke,_create:function(t){return t}}),$e.override=function(t){dt.extend($e.prototype,t)};var Je={_date:$e},Ze={formatters:{values:function(t){return dt.isArray(t)?t:""+t},linear:function(t,e,n){var a=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var r=dt.log10(Math.abs(a)),i="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var s=dt.log10(Math.abs(t));i=t.toExponential(Math.floor(s)-Math.floor(r))}else{var u=-1*Math.floor(r);u=Math.max(Math.min(u,20),0),i=t.toFixed(u)}else i="0";return i},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(dt.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}},Qe=dt.valueOrDefault,Xe=dt.valueAtIndexOrDefault;function tn(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(t[e].label);return a}function en(t,e,n){return dt.isArray(e)?dt.longestText(t,n,e):t.measureText(e).width}ut._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:Ze.formatters.values,minor:{},major:{}}});var nn=gt.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){dt.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var a,r,i,s,u,o,l=this;for(l.beforeUpdate(),l.maxWidth=t,l.maxHeight=e,l.margins=dt.extend({left:0,right:0,top:0,bottom:0},n),l._maxLabelLines=0,l.longestLabelWidth=0,l.longestTextCache=l.longestTextCache||{},l.beforeSetDimensions(),l.setDimensions(),l.afterSetDimensions(),l.beforeDataLimits(),l.determineDataLimits(),l.afterDataLimits(),l.beforeBuildTicks(),u=l.buildTicks()||[],u=l.afterBuildTicks(u)||u,l.beforeTickToLabelConversion(),i=l.convertTicksToLabels(u)||l.ticks,l.afterTickToLabelConversion(),l.ticks=i,a=0,r=i.length;a<r;++a)s=i[a],(o=u[a])?o.label=s:u.push(o={label:s,major:!1});return l._ticks=u,l.beforeCalculateTickRotation(),l.calculateTickRotation(),l.afterCalculateTickRotation(),l.beforeFit(),l.fit(),l.afterFit(),l.afterUpdate(),l.minSize},afterUpdate:function(){dt.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){dt.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){dt.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){dt.callback(this.options.beforeDataLimits,[this])},determineDataLimits:dt.noop,afterDataLimits:function(){dt.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){dt.callback(this.options.beforeBuildTicks,[this])},buildTicks:dt.noop,afterBuildTicks:function(t){var e=this;return dt.isArray(t)&&t.length?dt.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=dt.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){dt.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){dt.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){dt.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,a=tn(t._ticks),r=dt.options._parseFont(n);e.font=r.string;var i=n.minRotation||0;if(a.length&&t.options.display&&t.isHorizontal())for(var s,u=dt.longestText(e,r.string,a,t.longestTextCache),o=u,l=t.getPixelForTick(1)-t.getPixelForTick(0)-6;o>l&&i<n.maxRotation;){var d=dt.toRadians(i);if(s=Math.cos(d),Math.sin(d)*u>t.maxHeight){i--;break}i++,o=s*u}t.labelRotation=i},afterCalculateTickRotation:function(){dt.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){dt.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=tn(t._ticks),a=t.options,r=a.ticks,i=a.scaleLabel,s=a.gridLines,u=t._isVisible(),o=a.position,l=t.isHorizontal(),d=dt.options._parseFont,c=d(r),f=a.gridLines.tickMarkLength;if(e.width=l?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:u&&s.drawTicks?f:0,e.height=l?u&&s.drawTicks?f:0:t.maxHeight,i.display&&u){var h=d(i),g=dt.options.toPadding(i.padding),p=h.lineHeight+g.height;l?e.height+=p:e.width+=p}if(r.display&&u){var b=dt.longestText(t.ctx,c.string,n,t.longestTextCache),m=dt.numberOfLabelLines(n),y=.5*c.size,v=t.options.ticks.padding;if(t._maxLabelLines=m,t.longestLabelWidth=b,l){var x=dt.toRadians(t.labelRotation),_=Math.cos(x),T=Math.sin(x);e.height=Math.min(t.maxHeight,e.height+(T*b+c.lineHeight*m+y)+v),t.ctx.font=c.string;var w,O,S=en(t.ctx,n[0],c.string),I=en(t.ctx,n[n.length-1],c.string),N=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(n.length-1);0!==t.labelRotation?(w="bottom"===o?_*S:_*y,O="bottom"===o?_*y:_*I):(w=S/2,O=I/2),t.paddingLeft=Math.max(w-N,0)+3,t.paddingRight=Math.max(O-C,0)+3}else r.mirror?b=0:b+=v+y,e.width=Math.min(t.maxWidth,e.width+b),t.paddingTop=c.size/2,t.paddingBottom=c.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){dt.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(dt.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:dt.noop,getPixelForValue:dt.noop,getValueForPixel:dt.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var a=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),r=a*t+e.paddingLeft;return n&&(r+=a/2),e.left+r+(e.isFullWidth()?e.margins.left:0)}return e.top+t*((e.height-(e.paddingTop+e.paddingBottom))/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;return e.isHorizontal()?e.left+((e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft)+(e.isFullWidth()?e.margins.left:0):e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,a=this,r=a.isHorizontal(),i=t.length,s=!1,u=a.options.ticks.minor.maxTicksLimit,o=a._tickSize()*(i-1),l=r?a.width-(a.paddingLeft+a.paddingRight):a.height-(a.paddingTop+a.PaddingBottom),d=[];for(o>l&&(s=1+Math.floor(o/l)),i>u&&(s=Math.max(s,1+Math.floor(i/u))),e=0;e<i;e++)n=t[e],s>1&&e%s>0&&delete n.label,d.push(n);return d},_tickSize:function(){var t=this,e=t.isHorizontal(),n=t.options.ticks.minor,a=dt.toRadians(t.labelRotation),r=Math.abs(Math.cos(a)),i=Math.abs(Math.sin(a)),s=n.autoSkipPadding||0,u=t.longestLabelWidth+s||0,o=dt.options._parseFont(n),l=t._maxLabelLines*o.lineHeight+s||0;return e?l*r>u*i?u/r:l/i:l*i<u*r?l/r:u/i},_isVisible:function(){var t,e,n,a=this.chart,r=this.options.display;if("auto"!==r)return!!r;for(t=0,e=a.data.datasets.length;t<e;++t)if(a.isDatasetVisible(t)&&((n=a.getDatasetMeta(t)).xAxisID===this.id||n.yAxisID===this.id))return!0;return!1},draw:function(t){var e=this,n=e.options;if(e._isVisible()){var a,r,i,s=e.chart,u=e.ctx,o=ut.global.defaultFontColor,l=n.ticks.minor,d=n.ticks.major||l,c=n.gridLines,f=n.scaleLabel,h=n.position,g=0!==e.labelRotation,p=l.mirror,b=e.isHorizontal(),m=dt.options._parseFont,y=l.display&&l.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=Qe(l.fontColor,o),x=m(l),_=x.lineHeight,T=Qe(d.fontColor,o),w=m(d),O=l.padding,S=l.labelOffset,I=c.drawTicks?c.tickMarkLength:0,N=Qe(f.fontColor,o),C=m(f),R=dt.options.toPadding(f.padding),A=dt.toRadians(e.labelRotation),k=[],E=c.drawBorder?Xe(c.lineWidth,0,0):0,L=dt._alignPixel;if("top"===h?(a=L(s,e.bottom,E),r=e.bottom-I,i=a-E/2):"bottom"===h?(a=L(s,e.top,E),r=a+E/2,i=e.top+I):"left"===h?(a=L(s,e.right,E),r=e.right-I,i=a-E/2):(a=L(s,e.left,E),r=a+E/2,i=e.left+I),dt.each(y,(function(a,u){if(!dt.isNullOrUndef(a.label)){var o,l,d,f,m,y,v,x,T,w,N,C,R,D,P,M,q=a.label;u===e.zeroLineIndex&&n.offset===c.offsetGridLines?(o=c.zeroLineWidth,l=c.zeroLineColor,d=c.zeroLineBorderDash||[],f=c.zeroLineBorderDashOffset||0):(o=Xe(c.lineWidth,u),l=Xe(c.color,u),d=c.borderDash||[],f=c.borderDashOffset||0);var j=dt.isArray(q)?q.length:1,F=function(t,e,n){var a=t.getPixelForTick(e);return n&&(1===t.getTicks().length?a-=t.isHorizontal()?Math.max(a-t.left,t.right-a):Math.max(a-t.top,t.bottom-a):a-=0===e?(t.getPixelForTick(1)-a)/2:(a-t.getPixelForTick(e-1))/2),a}(e,u,c.offsetGridLines);if(b){var V=I+O;F<e.left-1e-7&&(l="rgba(0,0,0,0)"),m=v=T=N=L(s,F,o),y=r,x=i,R=e.getPixelForTick(u)+S,"top"===h?(w=L(s,t.top,E)+E/2,C=t.bottom,P=((g?1:.5)-j)*_,M=g?"left":"center",D=e.bottom-V):(w=t.top,C=L(s,t.bottom,E)-E/2,P=(g?0:.5)*_,M=g?"right":"center",D=e.top+V)}else{var G=(p?0:I)+O;F<e.top-1e-7&&(l="rgba(0,0,0,0)"),m=r,v=i,y=x=w=C=L(s,F,o),D=e.getPixelForTick(u)+S,P=(1-j)*_/2,"left"===h?(T=L(s,t.left,E)+E/2,N=t.right,M=p?"left":"right",R=e.right-G):(T=t.left,N=L(s,t.right,E)-E/2,M=p?"right":"left",R=e.left+G)}k.push({tx1:m,ty1:y,tx2:v,ty2:x,x1:T,y1:w,x2:N,y2:C,labelX:R,labelY:D,glWidth:o,glColor:l,glBorderDash:d,glBorderDashOffset:f,rotation:-1*A,label:q,major:a.major,textOffset:P,textAlign:M})}})),dt.each(k,(function(t){var e=t.glWidth,n=t.glColor;if(c.display&&e&&n&&(u.save(),u.lineWidth=e,u.strokeStyle=n,u.setLineDash&&(u.setLineDash(t.glBorderDash),u.lineDashOffset=t.glBorderDashOffset),u.beginPath(),c.drawTicks&&(u.moveTo(t.tx1,t.ty1),u.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(u.moveTo(t.x1,t.y1),u.lineTo(t.x2,t.y2)),u.stroke(),u.restore()),l.display){u.save(),u.translate(t.labelX,t.labelY),u.rotate(t.rotation),u.font=t.major?w.string:x.string,u.fillStyle=t.major?T:v,u.textBaseline="middle",u.textAlign=t.textAlign;var a=t.label,r=t.textOffset;if(dt.isArray(a))for(var i=0;i<a.length;++i)u.fillText(""+a[i],0,r),r+=_;else u.fillText(a,0,r);u.restore()}})),f.display){var D,P,M=0,q=C.lineHeight/2;if(b)D=e.left+(e.right-e.left)/2,P="bottom"===h?e.bottom-q-R.bottom:e.top+q+R.top;else{var j="left"===h;D=j?e.left+q+R.top:e.right-q-R.top,P=e.top+(e.bottom-e.top)/2,M=j?-.5*Math.PI:.5*Math.PI}u.save(),u.translate(D,P),u.rotate(M),u.textAlign="center",u.textBaseline="middle",u.fillStyle=N,u.font=C.string,u.fillText(f.labelString,0,0),u.restore()}if(E){var F,V,G,B,z=E,Y=Xe(c.lineWidth,y.length-1,0);b?(F=L(s,e.left,z)-z/2,V=L(s,e.right,Y)+Y/2,G=B=a):(G=L(s,e.top,z)-z/2,B=L(s,e.bottom,Y)+Y/2,F=V=a),u.lineWidth=E,u.strokeStyle=Xe(c.color,0),u.beginPath(),u.moveTo(F,G),u.lineTo(V,B),u.stroke()}}}}),an=nn.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,n=e.getLabels();e.minIndex=0,e.maxIndex=n.length-1,void 0!==e.options.ticks.min&&(t=n.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=n.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=n[e.minIndex],e.max=n[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,a=n.chart;return a.getDatasetMeta(e).controller._getValueScaleId()===n.id?n.getRightValue(a.data.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,a=this,r=a.options.offset,i=Math.max(a.maxIndex+1-a.minIndex-(r?0:1),1);if(null!=t&&(n=a.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var s=a.getLabels().indexOf(t=n||t);e=-1!==s?s:e}if(a.isHorizontal()){var u=a.width/i,o=u*(e-a.minIndex);return r&&(o+=u/2),a.left+o}var l=a.height/i,d=l*(e-a.minIndex);return r&&(d+=l/2),a.top+d},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,a=Math.max(e._ticks.length-(n?0:1),1),r=e.isHorizontal(),i=(r?e.width:e.height)/a;return t-=r?e.left:e.top,n&&(t-=i/2),(t<=0?0:Math.round(t/i))+e.minIndex},getBasePixel:function(){return this.bottom}});an._defaults={position:"bottom"};var rn=dt.isNullOrUndef,sn=nn.extend({getRightValue:function(t){return"string"==typeof t?+t:nn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=dt.sign(t.min),a=dt.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var r=void 0!==e.min||void 0!==e.suggestedMin,i=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(t.min=null===t.min?e.suggestedMin:Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(t.max=null===t.max?e.suggestedMax:Math.max(t.max,e.suggestedMax)),r!==i&&t.min>=t.max&&(r?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,a=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),a=a||11),a&&(t=Math.min(a,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:dt.noop,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),a={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:dt.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=function(t,e){var n,a,r,i,s=[],u=t.stepSize,o=u||1,l=t.maxTicks-1,d=t.min,c=t.max,f=t.precision,h=e.min,g=e.max,p=dt.niceNum((g-h)/l/o)*o;if(p<1e-14&&rn(d)&&rn(c))return[h,g];(i=Math.ceil(g/p)-Math.floor(h/p))>l&&(p=dt.niceNum(i*p/l/o)*o),u||rn(f)?n=Math.pow(10,dt._decimalPlaces(p)):(n=Math.pow(10,f),p=Math.ceil(p*n)/n),a=Math.floor(h/p)*p,r=Math.ceil(g/p)*p,u&&(!rn(d)&&dt.almostWhole(d/p,p/1e3)&&(a=d),!rn(c)&&dt.almostWhole(c/p,p/1e3)&&(r=c)),i=dt.almostEquals(i=(r-a)/p,Math.round(i),p/1e3)?Math.round(i):Math.ceil(i),a=Math.round(a*n)/n,r=Math.round(r*n)/n,s.push(rn(d)?a:d);for(var b=1;b<i;++b)s.push(Math.round((a+b*p)*n)/n);return s.push(rn(c)?r:c),s}(a,t);t.handleDirectionalChanges(),t.max=dt.max(r),t.min=dt.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),nn.prototype.convertTicksToLabels.call(t)}}),un={position:"left",ticks:{callback:Ze.formatters.linear}},on=sn.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function i(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&dt.each(a,(function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&i(a)&&void 0!==a.stack&&(s=!0)}})),e.stacked||s){var u={};dt.each(a,(function(a,r){var s=n.getDatasetMeta(r),o=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");void 0===u[o]&&(u[o]={positiveValues:[],negativeValues:[]});var l=u[o].positiveValues,d=u[o].negativeValues;n.isDatasetVisible(r)&&i(s)&&dt.each(a.data,(function(n,a){var r=+t.getRightValue(n);isNaN(r)||s.data[a].hidden||(l[a]=l[a]||0,d[a]=d[a]||0,e.relativePoints?l[a]=100:r<0?d[a]+=r:l[a]+=r)}))})),dt.each(u,(function(e){var n=e.positiveValues.concat(e.negativeValues),a=dt.min(n),r=dt.max(n);t.min=null===t.min?a:Math.min(t.min,a),t.max=null===t.max?r:Math.max(t.max,r)}))}else dt.each(a,(function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&i(r)&&dt.each(e.data,(function(e,n){var a=+t.getRightValue(e);isNaN(a)||r.data[n].hidden||((null===t.min||a<t.min)&&(t.min=a),(null===t.max||a>t.max)&&(t.max=a))}))}));t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=dt.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,n=e.start,a=+e.getRightValue(t),r=e.end-n;return e.isHorizontal()?e.left+e.width/r*(a-n):e.bottom-e.height/r*(a-n)},getValueForPixel:function(t){var e=this,n=e.isHorizontal();return e.start+(n?t-e.left:e.bottom-t)/(n?e.width:e.height)*(e.end-e.start)},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});on._defaults=un;var ln=dt.valueOrDefault,dn={position:"left",ticks:{callback:Ze.formatters.logarithmic}};function cn(t,e){return dt.isFinite(t)&&t>=0?t:e}var fn=nn.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function i(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var s=e.stacked;if(void 0===s&&dt.each(a,(function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&i(a)&&void 0!==a.stack&&(s=!0)}})),e.stacked||s){var u={};dt.each(a,(function(a,r){var s=n.getDatasetMeta(r),o=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");n.isDatasetVisible(r)&&i(s)&&(void 0===u[o]&&(u[o]=[]),dt.each(a.data,(function(e,n){var a=u[o],r=+t.getRightValue(e);isNaN(r)||s.data[n].hidden||r<0||(a[n]=a[n]||0,a[n]+=r)})))})),dt.each(u,(function(e){if(e.length>0){var n=dt.min(e),a=dt.max(e);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?a:Math.max(t.max,a)}}))}else dt.each(a,(function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&i(r)&&dt.each(e.data,(function(e,n){var a=+t.getRightValue(e);isNaN(a)||r.data[n].hidden||a<0||((null===t.min||a<t.min)&&(t.min=a),(null===t.max||a>t.max)&&(t.max=a),0!==a&&(null===t.minNotZero||a<t.minNotZero)&&(t.minNotZero=a))}))}));this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=cn(e.min,t.min),t.max=cn(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(dt.log10(t.min))-1),t.max=Math.pow(10,Math.floor(dt.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(dt.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(dt.log10(t.min))+1):10),null===t.minNotZero&&(t.minNotZero=t.min>0?t.min:t.max<1?Math.pow(10,Math.floor(dt.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),a={min:cn(e.min),max:cn(e.max)},r=t.ticks=function(t,e){var n,a,r=[],i=ln(t.min,Math.pow(10,Math.floor(dt.log10(e.min)))),s=Math.floor(dt.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,s));0===i?(n=Math.floor(dt.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),r.push(i),i=a*Math.pow(10,n)):(n=Math.floor(dt.log10(i)),a=Math.floor(i/Math.pow(10,n)));var o=n<0?Math.pow(10,Math.abs(n)):1;do{r.push(i),10==++a&&(a=1,o=++n>=0?1:o),i=Math.round(a*Math.pow(10,n)*o)/o}while(n<s||n===s&&a<u);var l=ln(t.max,i);return r.push(l),r}(a,t);t.max=dt.max(r),t.min=dt.min(r),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&r.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),nn.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(dt.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,n,a,r,i,s=this,u=s.options.ticks,o=u.reverse,l=dt.log10,d=s._getFirstTickValue(s.minNotZero),c=0;return t=+s.getRightValue(t),o?(a=s.end,r=s.start,i=-1):(a=s.start,r=s.end,i=1),s.isHorizontal()?(e=s.width,n=o?s.right:s.left):(e=s.height,i*=-1,n=o?s.top:s.bottom),t!==a&&(0===a&&(e-=c=ln(u.fontSize,ut.global.defaultFontSize),a=d),0!==t&&(c+=e/(l(r)-l(a))*(l(t)-l(a))),n+=i*c),n},getValueForPixel:function(t){var e,n,a,r,i=this,s=i.options.ticks,u=s.reverse,o=dt.log10,l=i._getFirstTickValue(i.minNotZero);if(u?(n=i.end,a=i.start):(n=i.start,a=i.end),i.isHorizontal()?(e=i.width,r=u?i.right-t:t-i.left):(e=i.height,r=u?t-i.top:i.bottom-t),r!==n){if(0===n){var d=ln(s.fontSize,ut.global.defaultFontSize);r-=d,e-=d,n=l}r*=o(a)-o(n),r/=e,r=Math.pow(10,o(n)+r)}return r}});fn._defaults=dn;var hn=dt.valueOrDefault,gn=dt.valueAtIndexOrDefault,pn=dt.options.resolve,bn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:Ze.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function mn(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function yn(t){var e=t.ticks;return e.display&&t.display?hn(e.fontSize,ut.global.defaultFontSize)+2*e.backdropPaddingY:0}function vn(t,e,n,a,r){return t===a||t===r?{start:e-n/2,end:e+n/2}:t<a||t>r?{start:e-n,end:e}:{start:e,end:e+n}}function xn(t){return 0===t||180===t?"center":t<180?"left":"right"}function _n(t,e,n,a){var r,i,s=n.y+a/2;if(dt.isArray(e))for(r=0,i=e.length;r<i;++r)t.fillText(e[r],n.x,s),s+=a;else t.fillText(e,n.x,s)}function Tn(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function wn(t){return dt.isNumber(t)?t:0}var On=sn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=yn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;dt.each(e.data.datasets,(function(r,i){if(e.isDatasetVisible(i)){var s=e.getDatasetMeta(i);dt.each(r.data,(function(e,r){var i=+t.getRightValue(e);isNaN(i)||s.data[r].hidden||(n=Math.min(i,n),a=Math.max(i,a))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=a===Number.NEGATIVE_INFINITY?0:a,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/yn(this.options))},convertTicksToLabels:function(){var t=this;sn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,a,r=dt.options._parseFont(t.options.pointLabels),i={l:0,r:t.width,t:0,b:t.height-t.paddingTop},s={};t.ctx.font=r.string,t._pointLabelSizes=[];var u,o,l,d=mn(t);for(e=0;e<d;e++){a=t.getPointPosition(e,t.drawingArea+5),u=t.ctx,o=r.lineHeight,n=dt.isArray(l=t.pointLabels[e]||"")?{w:dt.longestText(u,u.font,l),h:l.length*o}:{w:u.measureText(l).width,h:o},t._pointLabelSizes[e]=n;var c=t.getIndexAngle(e),f=dt.toDegrees(c)%360,h=vn(f,a.x,n.w,0,180),g=vn(f,a.y,n.h,90,270);h.start<i.l&&(i.l=h.start,s.l=c),h.end>i.r&&(i.r=h.end,s.r=c),g.start<i.t&&(i.t=g.start,s.t=c),g.end>i.b&&(i.b=g.end,s.b=c)}t.setReductions(t.drawingArea,i,s)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var a=this,r=e.l/Math.sin(n.l),i=Math.max(e.r-a.width,0)/Math.sin(n.r),s=-e.t/Math.cos(n.t),u=-Math.max(e.b-(a.height-a.paddingTop),0)/Math.cos(n.b);r=wn(r),i=wn(i),s=wn(s),u=wn(u),a.drawingArea=Math.min(Math.floor(t-(r+i)/2),Math.floor(t-(s+u)/2)),a.setCenterPoint(r,i,s,u)},setCenterPoint:function(t,e,n,a){var r=this,i=n+r.drawingArea,s=r.height-r.paddingTop-a-r.drawingArea;r.xCenter=Math.floor((t+r.drawingArea+(r.width-e-r.drawingArea))/2+r.left),r.yCenter=Math.floor((i+s)/2+r.top+r.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/mn(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,a=e.ticks;if(e.display){var r=t.ctx,i=this.getIndexAngle(0),s=dt.options._parseFont(a);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,n=t.options,a=n.angleLines,r=n.gridLines,i=n.pointLabels,s=hn(a.lineWidth,r.lineWidth),u=hn(a.color,r.color),o=yn(n);e.save(),e.lineWidth=s,e.strokeStyle=u,e.setLineDash&&(e.setLineDash(pn([a.borderDash,r.borderDash,[]])),e.lineDashOffset=pn([a.borderDashOffset,r.borderDashOffset,0]));var l=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),d=dt.options._parseFont(i);e.font=d.string,e.textBaseline="middle";for(var c=mn(t)-1;c>=0;c--){if(a.display&&s&&u){var f=t.getPointPosition(c,l);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(f.x,f.y),e.stroke()}if(i.display){var h=t.getPointPosition(c,l+(0===c?o/2:0)+5),g=gn(i.fontColor,c,ut.global.defaultFontColor);e.fillStyle=g;var p=t.getIndexAngle(c),b=dt.toDegrees(p);e.textAlign=xn(b),Tn(b,t._pointLabelSizes[c],h),_n(e,t.pointLabels[c]||"",h,d.lineHeight)}}e.restore()}(t),dt.each(t.ticks,(function(e,u){if(u>0||a.reverse){var o=t.getDistanceFromCenterForValue(t.ticksAsNumbers[u]);if(n.display&&0!==u&&function(t,e,n,a){var r,i=t.ctx,s=e.circular,u=mn(t),o=gn(e.color,a-1),l=gn(e.lineWidth,a-1);if((s||u)&&o&&l){if(i.save(),i.strokeStyle=o,i.lineWidth=l,i.setLineDash&&(i.setLineDash(e.borderDash||[]),i.lineDashOffset=e.borderDashOffset||0),i.beginPath(),s)i.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{r=t.getPointPosition(0,n),i.moveTo(r.x,r.y);for(var d=1;d<u;d++)r=t.getPointPosition(d,n),i.lineTo(r.x,r.y)}i.closePath(),i.stroke(),i.restore()}}(t,n,o,u),a.display){var l=hn(a.fontColor,ut.global.defaultFontColor);if(r.font=s.string,r.save(),r.translate(t.xCenter,t.yCenter),r.rotate(i),a.showLabelBackdrop){var d=r.measureText(e).width;r.fillStyle=a.backdropColor,r.fillRect(-d/2-a.backdropPaddingX,-o-s.size/2-a.backdropPaddingY,d+2*a.backdropPaddingX,s.size+2*a.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=l,r.fillText(e,0,-o),r.restore()}}}))}}});On._defaults=bn;var Sn=dt.valueOrDefault,In=Number.MIN_SAFE_INTEGER||-9007199254740991,Nn=Number.MAX_SAFE_INTEGER||9007199254740991,Cn={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},Rn=Object.keys(Cn);function An(t,e){return t-e}function kn(t){var e,n,a,r={},i=[];for(e=0,n=t.length;e<n;++e)r[a=t[e]]||(r[a]=!0,i.push(a));return i}function En(t,e,n,a){var r=function(t,e,n){for(var a,r,i,s=0,u=t.length-1;s>=0&&s<=u;){if(i=t[a=s+u>>1],!(r=t[a-1]||null))return{lo:null,hi:i};if(i[e]<n)s=a+1;else{if(!(r[e]>n))return{lo:r,hi:i};u=a-1}}return{lo:i,hi:null}}(t,e,n),i=r.lo?r.hi?r.lo:t[t.length-2]:t[0],s=r.lo?r.hi?r.hi:t[t.length-1]:t[1],u=s[e]-i[e];return i[a]+(s[a]-i[a])*(u?(n-i[e])/u:0)}function Ln(t,e){var n=t._adapter,a=t.options.time,r=a.parser,i=r||a.format,s=e;return"function"==typeof r&&(s=r(s)),dt.isFinite(s)||(s="string"==typeof i?n.parse(s,i):n.parse(s)),null!==s?+s:(r||"function"!=typeof i||(s=i(e),dt.isFinite(s)||(s=n.parse(s))),s)}function Dn(t,e){if(dt.isNullOrUndef(e))return null;var n=t.options.time,a=Ln(t,t.getRightValue(e));return null===a||n.round&&(a=+t._adapter.startOf(a,n.round)),a}function Pn(t){for(var e=Rn.indexOf(t)+1,n=Rn.length;e<n;++e)if(Cn[Rn[e]].common)return Rn[e]}var Mn=nn.extend({initialize:function(){this.mergeTicksOptions(),nn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),a=t._adapter=new Je._date(e.adapters.date);return n.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),dt.mergeIf(n.displayFormats,a.formats()),nn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),nn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,a,r,i,s=this,u=s.chart,o=s._adapter,l=s.options.time,d=l.unit||"day",c=Nn,f=In,h=[],g=[],p=[],b=u.data.labels||[];for(t=0,n=b.length;t<n;++t)p.push(Dn(s,b[t]));for(t=0,n=(u.data.datasets||[]).length;t<n;++t)if(u.isDatasetVisible(t))if(dt.isObject((r=u.data.datasets[t].data)[0]))for(g[t]=[],e=0,a=r.length;e<a;++e)i=Dn(s,r[e]),h.push(i),g[t][e]=i;else{for(e=0,a=p.length;e<a;++e)h.push(p[e]);g[t]=p.slice(0)}else g[t]=[];p.length&&(p=kn(p).sort(An),c=Math.min(c,p[0]),f=Math.max(f,p[p.length-1])),h.length&&(h=kn(h).sort(An),c=Math.min(c,h[0]),f=Math.max(f,h[h.length-1])),c=Dn(s,l.min)||c,f=Dn(s,l.max)||f,c=c===Nn?+o.startOf(Date.now(),d):c,f=f===In?+o.endOf(Date.now(),d)+1:f,s.min=Math.min(c,f),s.max=Math.max(c+1,f),s._horizontal=s.isHorizontal(),s._table=[],s._timestamps={data:h,datasets:g,labels:p}},buildTicks:function(){var t,e,n,a=this,r=a.min,i=a.max,s=a.options,u=s.time,o=[],l=[];switch(s.ticks.source){case"data":o=a._timestamps.data;break;case"labels":o=a._timestamps.labels;break;case"auto":default:o=function(t,e,n,a){var r,i=t._adapter,s=t.options,u=s.time,o=u.unit||function(t,e,n,a){var r,i,s=Rn.length;for(r=Rn.indexOf(t);r<s-1;++r)if((i=Cn[Rn[r]]).common&&Math.ceil((n-e)/((i.steps?i.steps[i.steps.length-1]:Nn)*i.size))<=a)return Rn[r];return Rn[s-1]}(u.minUnit,e,n,a),l=Pn(o),d=Sn(u.stepSize,u.unitStepSize),c="week"===o&&u.isoWeekday,f=s.ticks.major.enabled,h=Cn[o],g=e,p=n,b=[];for(d||(d=function(t,e,n,a){var r,i,s,u=e-t,o=Cn[n],l=o.size,d=o.steps;if(!d)return Math.ceil(u/(a*l));for(r=0,i=d.length;r<i&&(s=d[r],!(Math.ceil(u/(l*s))<=a));++r);return s}(e,n,o,a)),c&&(g=+i.startOf(g,"isoWeek",c),p=+i.startOf(p,"isoWeek",c)),g=+i.startOf(g,c?"day":o),(p=+i.startOf(p,c?"day":o))<n&&(p=+i.add(p,1,o)),r=g,f&&l&&!c&&!u.round&&(r=+i.startOf(r,l),r=+i.add(r,~~((g-r)/(h.size*d))*d,o));r<p;r=+i.add(r,d,o))b.push(+r);return b.push(+r),b}(a,r,i,a.getLabelCapacity(r))}for("ticks"===s.bounds&&o.length&&(r=o[0],i=o[o.length-1]),r=Dn(a,u.min)||r,i=Dn(a,u.max)||i,t=0,e=o.length;t<e;++t)(n=o[t])>=r&&n<=i&&l.push(n);return a.min=r,a.max=i,a._unit=u.unit||function(t,e,n,a,r){var i,s;for(i=Rn.length-1;i>=Rn.indexOf(n);i--)if(Cn[s=Rn[i]].common&&t._adapter.diff(r,a,s)>=e.length)return s;return Rn[n?Rn.indexOf(n):0]}(a,l,u.minUnit,a.min,a.max),a._majorUnit=Pn(a._unit),a._table=function(t,e,n,a){if("linear"===a||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var r,i,s,u,o,l=[],d=[e];for(r=0,i=t.length;r<i;++r)(u=t[r])>e&&u<n&&d.push(u);for(d.push(n),r=0,i=d.length;r<i;++r)o=d[r+1],u=d[r],void 0!==(s=d[r-1])&&void 0!==o&&Math.round((o+s)/2)===u||l.push({time:u,pos:r/(i-1)});return l}(a._timestamps.data,r,i,s.distribution),a._offsets=function(t,e,n,a,r){var i,s,u=0,o=0;return r.offset&&e.length&&(r.time.min||(i=En(t,"time",e[0],"pos"),u=1===e.length?1-i:(En(t,"time",e[1],"pos")-i)/2),r.time.max||(s=En(t,"time",e[e.length-1],"pos"),o=1===e.length?s:(s-En(t,"time",e[e.length-2],"pos"))/2)),{start:u,end:o}}(a._table,l,0,0,s),s.ticks.reverse&&l.reverse(),function(t,e,n){var a,r,i,s,u=[];for(a=0,r=e.length;a<r;++a)i=e[a],s=!!n&&i===+t._adapter.startOf(i,n),u.push({value:i,major:s});return u}(a,l,a._majorUnit)},getLabelForIndex:function(t,e){var n=this,a=n._adapter,r=n.chart.data,i=n.options.time,s=r.labels&&t<r.labels.length?r.labels[t]:"",u=r.datasets[e].data[t];return dt.isObject(u)&&(s=n.getRightValue(u)),i.tooltipFormat?a.format(Ln(n,s),i.tooltipFormat):"string"==typeof s?s:a.format(Ln(n,s),i.displayFormats.datetime)},tickFormatFunction:function(t,e,n,a){var r=this._adapter,i=this.options,s=i.time.displayFormats,u=s[this._unit],o=this._majorUnit,l=s[o],d=+r.startOf(t,o),c=i.ticks.major,f=c.enabled&&o&&l&&t===d,h=r.format(t,a||(f?l:u)),g=f?c:i.ticks.minor,p=Sn(g.callback,g.userCallback);return p?p(h,e,n):h},convertTicksToLabels:function(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(this.tickFormatFunction(t[e].value,e,t));return a},getPixelForOffset:function(t){var e=this,n=e.options.ticks.reverse,a=e._horizontal?e.width:e.height,r=e._horizontal?n?e.right:e.left:n?e.bottom:e.top,i=En(e._table,"time",t,"pos"),s=a*(e._offsets.start+i)/(e._offsets.start+1+e._offsets.end);return n?r-s:r+s},getPixelForValue:function(t,e,n){var a=null;if(void 0!==e&&void 0!==n&&(a=this._timestamps.datasets[n][e]),null===a&&(a=Dn(this,t)),null!==a)return this.getPixelForOffset(a)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,n=e._horizontal?e.width:e.height,a=En(e._table,"pos",(n?(t-(e._horizontal?e.left:e.top))/n:0)*(e._offsets.start+1+e._offsets.start)-e._offsets.end,"time");return e._adapter._create(a)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,a=dt.toRadians(e.maxRotation),r=Math.cos(a),i=Math.sin(a);return n*r+Sn(e.fontSize,ut.global.defaultFontSize)*i},getLabelCapacity:function(t){var e=this,n=e.tickFormatFunction(t,0,[],e.options.time.displayFormats.millisecond),a=e.getLabelWidth(n),r=e.isHorizontal()?e.width:e.height,i=Math.floor(r/a);return i>0?i:1}});Mn._defaults={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};var qn={category:an,linear:on,logarithmic:fn,radialLinear:On,time:Mn},jn={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Je._date.override("function"==typeof t?{_id:"moment",formats:function(){return jn},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,a){return t(e).add(n,a).valueOf()},diff:function(e,n,a){return t.duration(t(e).diff(t(n))).as(a)},startOf:function(e,n,a){return e=t(e),"isoWeek"===n?e.isoWeekday(a).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),ut._set("global",{plugins:{filler:{propagate:!0}}});var Fn={dataset:function(t){var e=t.fill,n=t.chart,a=n.getDatasetMeta(e),r=a&&n.isDatasetVisible(e)&&a.dataset._children||[],i=r.length||0;return i?function(t,e){return e<i&&r[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,a=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===a?t.y:a}}}};function Vn(t,e,n){var a,r=t._model||{},i=r.fill;if(void 0===i&&(i=!!r.backgroundColor),!1===i||null===i)return!1;if(!0===i)return"origin";if(a=parseFloat(i,10),isFinite(a)&&Math.floor(a)===a)return"-"!==i[0]&&"+"!==i[0]||(a=e+a),!(a===e||a<0||a>=n)&&a;switch(i){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return i;default:return!1}}function Gn(t){var e,n=t.el._model||{},a=t.el._scale||{},r=t.fill,i=null;if(isFinite(r))return null;if("start"===r?i=void 0===n.scaleBottom?a.bottom:n.scaleBottom:"end"===r?i=void 0===n.scaleTop?a.top:n.scaleTop:void 0!==n.scaleZero?i=n.scaleZero:a.getBasePosition?i=a.getBasePosition():a.getBasePixel&&(i=a.getBasePixel()),null!=i){if(void 0!==i.x&&void 0!==i.y)return i;if(dt.isFinite(i))return{x:(e=a.isHorizontal())?i:null,y:e?null:i}}return null}function Bn(t,e,n){var a,r=t[e].fill,i=[e];if(!n)return r;for(;!1!==r&&-1===i.indexOf(r);){if(!isFinite(r))return r;if(!(a=t[r]))return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function zn(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),Fn[n](t))}function Yn(t){return t&&!t.skip}function Hn(t,e,n,a,r){var i;if(a&&r){for(t.moveTo(e[0].x,e[0].y),i=1;i<a;++i)dt.canvas.lineTo(t,e[i-1],e[i]);for(t.lineTo(n[r-1].x,n[r-1].y),i=r-1;i>0;--i)dt.canvas.lineTo(t,n[i],n[i-1],!0)}}var Un={id:"filler",afterDatasetsUpdate:function(t,e){var n,a,r,i,s=(t.data.datasets||[]).length,u=e.propagate,o=[];for(a=0;a<s;++a)i=null,(r=(n=t.getDatasetMeta(a)).dataset)&&r._model&&r instanceof qt.Line&&(i={visible:t.isDatasetVisible(a),fill:Vn(r,a,s),chart:t,el:r}),n.$filler=i,o.push(i);for(a=0;a<s;++a)(i=o[a])&&(i.fill=Bn(o,a,u),i.boundary=Gn(i),i.mapper=zn(i))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,r=n.el,i=r._view,s=r._children||[],u=n.mapper,o=i.backgroundColor||ut.global.defaultColor;u&&o&&s.length&&(dt.canvas.clipArea(a,t.chartArea),function(t,e,n,a,r,i){var s,u,o,l,d,c,f,h=e.length,g=a.spanGaps,p=[],b=[],m=0,y=0;for(t.beginPath(),s=0,u=h+!!i;s<u;++s)d=n(l=e[o=s%h]._view,o,a),c=Yn(l),f=Yn(d),c&&f?(m=p.push(l),y=b.push(d)):m&&y&&(g?(c&&p.push(l),f&&b.push(d)):(Hn(t,p,b,m,y),m=y=0,p=[],b=[]));Hn(t,p,b,m,y),t.closePath(),t.fillStyle=r,t.fill()}(a,s,u,i,o,r._loop),dt.canvas.unclipArea(a))}}},Wn=dt.noop,Kn=dt.valueOrDefault;function $n(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}ut._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,a=this.chart,r=a.getDatasetMeta(n);r.hidden=null===r.hidden?!a.data.datasets[n].hidden:null,a.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return dt.isArray(e.datasets)?e.datasets.map((function(e,n){return{text:e.label,fillStyle:dt.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}}),this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var Jn=gt.extend({initialize:function(t){dt.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:Wn,update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=n,a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeBuildLabels(),a.buildLabels(),a.afterBuildLabels(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:Wn,beforeSetDimensions:Wn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Wn,beforeBuildLabels:Wn,buildLabels:function(){var t=this,e=t.options.labels||{},n=dt.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter((function(n){return e.filter(n,t.chart.data)}))),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:Wn,beforeFit:Wn,fit:function(){var t=this,e=t.options,n=e.labels,a=e.display,r=t.ctx,i=dt.options._parseFont(n),s=i.size,u=t.legendHitBoxes=[],o=t.minSize,l=t.isHorizontal();if(l?(o.width=t.maxWidth,o.height=a?10:0):(o.width=a?10:0,o.height=t.maxHeight),a)if(r.font=i.string,l){var d=t.lineWidths=[0],c=0;r.textAlign="left",r.textBaseline="top",dt.each(t.legendItems,(function(t,e){var a=$n(n,s)+s/2+r.measureText(t.text).width;(0===e||d[d.length-1]+a+n.padding>o.width)&&(c+=s+n.padding,d[d.length-(e>0?0:1)]=n.padding),u[e]={left:0,top:0,width:a,height:s},d[d.length-1]+=a+n.padding})),o.height+=c}else{var f=n.padding,h=t.columnWidths=[],g=n.padding,p=0,b=0,m=s+f;dt.each(t.legendItems,(function(t,e){var a=$n(n,s)+s/2+r.measureText(t.text).width;e>0&&b+m>o.height-f&&(g+=p+n.padding,h.push(p),p=0,b=0),p=Math.max(p,a),b+=m,u[e]={left:0,top:0,width:a,height:s}})),g+=p,h.push(p),o.width+=g}t.width=o.width,t.height=o.height},afterFit:Wn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,a=ut.global,r=a.defaultColor,i=a.elements.line,s=t.width,u=t.lineWidths;if(e.display){var o,l=t.ctx,d=Kn(n.fontColor,a.defaultFontColor),c=dt.options._parseFont(n),f=c.size;l.textAlign="left",l.textBaseline="middle",l.lineWidth=.5,l.strokeStyle=d,l.fillStyle=d,l.font=c.string;var h=$n(n,f),g=t.legendHitBoxes,p=t.isHorizontal();o=p?{x:t.left+(s-u[0])/2+n.padding,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var b=f+n.padding;dt.each(t.legendItems,(function(a,d){var c=l.measureText(a.text).width,m=h+f/2+c,y=o.x,v=o.y;p?d>0&&y+m+n.padding>t.left+t.minSize.width&&(v=o.y+=b,o.line++,y=o.x=t.left+(s-u[o.line])/2+n.padding):d>0&&v+b>t.top+t.minSize.height&&(y=o.x=y+t.columnWidths[o.line]+n.padding,v=o.y=t.top+n.padding,o.line++),function(t,n,a){if(!(isNaN(h)||h<=0)){l.save();var s=Kn(a.lineWidth,i.borderWidth);if(l.fillStyle=Kn(a.fillStyle,r),l.lineCap=Kn(a.lineCap,i.borderCapStyle),l.lineDashOffset=Kn(a.lineDashOffset,i.borderDashOffset),l.lineJoin=Kn(a.lineJoin,i.borderJoinStyle),l.lineWidth=s,l.strokeStyle=Kn(a.strokeStyle,r),l.setLineDash&&l.setLineDash(Kn(a.lineDash,i.borderDash)),e.labels&&e.labels.usePointStyle){var u=h*Math.SQRT2/2;dt.canvas.drawPoint(l,a.pointStyle,u,t+h/2,n+f/2)}else 0!==s&&l.strokeRect(t,n,h,f),l.fillRect(t,n,h,f);l.restore()}}(y,v,a),g[d].left=y,g[d].top=v,function(t,e,n,a){var r=f/2,i=h+r+t,s=e+r;l.fillText(n.text,i,s),n.hidden&&(l.beginPath(),l.lineWidth=2,l.moveTo(i,s),l.lineTo(i+a,s),l.stroke())}(y,v,a,c),p?o.x+=m+n.padding:o.y+=b}))}},_getLegendItemAt:function(t,e){var n,a,r,i=this;if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)for(r=i.legendHitBoxes,n=0;n<r.length;++n)if(t>=(a=r[n]).left&&t<=a.left+a.width&&e>=a.top&&e<=a.top+a.height)return i.legendItems[n];return null},handleEvent:function(t){var e,n=this,a=n.options,r="mouseup"===t.type?"click":t.type;if("mousemove"===r){if(!a.onHover&&!a.onLeave)return}else{if("click"!==r)return;if(!a.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===r?e&&a.onClick&&a.onClick.call(n,t.native,e):(a.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&a.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),a.onHover&&e&&a.onHover.call(n,t.native,e))}});function Zn(t,e){var n=new Jn({ctx:t.ctx,options:e,chart:t});ve.configure(t,n,e),ve.addBox(t,n),t.legend=n}var Qn={id:"legend",_element:Jn,beforeInit:function(t){var e=t.options.legend;e&&Zn(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(dt.mergeIf(e,ut.global.legend),n?(ve.configure(t,n,e),n.options=e):Zn(t,e)):n&&(ve.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Xn=dt.noop;ut._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var ta=gt.extend({initialize:function(t){dt.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Xn,update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=n,a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeBuildLabels(),a.buildLabels(),a.afterBuildLabels(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:Xn,beforeSetDimensions:Xn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Xn,beforeBuildLabels:Xn,buildLabels:Xn,afterBuildLabels:Xn,beforeFit:Xn,fit:function(){var t=this,e=t.options,n=e.display,a=t.minSize,r=dt.isArray(e.text)?e.text.length:1,i=dt.options._parseFont(e),s=n?r*i.lineHeight+2*e.padding:0;t.isHorizontal()?(a.width=t.maxWidth,a.height=s):(a.width=s,a.height=t.maxHeight),t.width=a.width,t.height=a.height},afterFit:Xn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var a,r,i,s=dt.options._parseFont(n),u=s.lineHeight,o=u/2+n.padding,l=0,d=t.top,c=t.left,f=t.bottom,h=t.right;e.fillStyle=dt.valueOrDefault(n.fontColor,ut.global.defaultFontColor),e.font=s.string,t.isHorizontal()?(r=c+(h-c)/2,i=d+o,a=h-c):(r="left"===n.position?c+o:h-o,i=d+(f-d)/2,a=f-d,l=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(r,i),e.rotate(l),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(dt.isArray(g))for(var p=0,b=0;b<g.length;++b)e.fillText(g[b],0,p,a),p+=u;else e.fillText(g,0,0,a);e.restore()}}});function ea(t,e){var n=new ta({ctx:t.ctx,options:e,chart:t});ve.configure(t,n,e),ve.addBox(t,n),t.titleBlock=n}var na={},aa=Un,ra=Qn,ia={id:"title",_element:ta,beforeInit:function(t){var e=t.options.title;e&&ea(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(dt.mergeIf(e,ut.global.title),n?(ve.configure(t,n,e),n.options=e):ea(t,e)):n&&(ve.removeBox(t,n),delete t.titleBlock)}};for(var sa in na.filler=aa,na.legend=ra,na.title=ia,We.helpers=dt,function(){function t(t,e,n){var a;return"string"==typeof t?(a=parseInt(t,10),-1!==t.indexOf("%")&&(a=a/100*e.parentNode[n])):a=t,a}function e(t){return null!=t&&"none"!==t}function n(n,a,r){var i=document.defaultView,s=dt._getParentNode(n),u=i.getComputedStyle(n)[a],o=i.getComputedStyle(s)[a],l=e(u),d=e(o),c=Number.POSITIVE_INFINITY;return l||d?Math.min(l?t(u,n,r):c,d?t(o,s,r):c):"none"}dt.where=function(t,e){if(dt.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return dt.each(t,(function(t){e(t)&&n.push(t)})),n},dt.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var a=0,r=t.length;a<r;++a)if(e.call(n,t[a],a,t))return a;return-1},dt.findNextWhere=function(t,e,n){dt.isNullOrUndef(n)&&(n=-1);for(var a=n+1;a<t.length;a++){var r=t[a];if(e(r))return r}},dt.findPreviousWhere=function(t,e,n){dt.isNullOrUndef(n)&&(n=t.length);for(var a=n-1;a>=0;a--){var r=t[a];if(e(r))return r}},dt.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},dt.almostEquals=function(t,e,n){return Math.abs(t-e)<n},dt.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},dt.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},dt.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},dt.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},dt.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,n=Math.round(e);return t===Math.pow(10,n)?n:e},dt.toRadians=function(t){return t*(Math.PI/180)},dt.toDegrees=function(t){return t*(180/Math.PI)},dt._decimalPlaces=function(t){if(dt.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},dt.getAngleFromPoint=function(t,e){var n=e.x-t.x,a=e.y-t.y,r=Math.sqrt(n*n+a*a),i=Math.atan2(a,n);return i<-.5*Math.PI&&(i+=2*Math.PI),{angle:i,distance:r}},dt.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},dt.aliasPixel=function(t){return t%2==0?0:.5},dt._alignPixel=function(t,e,n){var a=t.currentDevicePixelRatio,r=n/2;return Math.round((e-r)*a)/a+r},dt.splineCurve=function(t,e,n,a){var r=t.skip?e:t,i=e,s=n.skip?e:n,u=Math.sqrt(Math.pow(i.x-r.x,2)+Math.pow(i.y-r.y,2)),o=Math.sqrt(Math.pow(s.x-i.x,2)+Math.pow(s.y-i.y,2)),l=u/(u+o),d=o/(u+o),c=a*(l=isNaN(l)?0:l),f=a*(d=isNaN(d)?0:d);return{previous:{x:i.x-c*(s.x-r.x),y:i.y-c*(s.y-r.y)},next:{x:i.x+f*(s.x-r.x),y:i.y+f*(s.y-r.y)}}},dt.EPSILON=Number.EPSILON||1e-14,dt.splineCurveMonotone=function(t){var e,n,a,r,i,s,u,o,l,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),c=d.length;for(e=0;e<c;++e)if(!(a=d[e]).model.skip){if(n=e>0?d[e-1]:null,(r=e<c-1?d[e+1]:null)&&!r.model.skip){var f=r.model.x-a.model.x;a.deltaK=0!==f?(r.model.y-a.model.y)/f:0}a.mK=!n||n.model.skip?a.deltaK:!r||r.model.skip?n.deltaK:this.sign(n.deltaK)!==this.sign(a.deltaK)?0:(n.deltaK+a.deltaK)/2}for(e=0;e<c-1;++e)r=d[e+1],(a=d[e]).model.skip||r.model.skip||(dt.almostEquals(a.deltaK,0,this.EPSILON)?a.mK=r.mK=0:(i=a.mK/a.deltaK,s=r.mK/a.deltaK,(o=Math.pow(i,2)+Math.pow(s,2))<=9||(u=3/Math.sqrt(o),a.mK=i*u*a.deltaK,r.mK=s*u*a.deltaK)));for(e=0;e<c;++e)(a=d[e]).model.skip||(r=e<c-1?d[e+1]:null,(n=e>0?d[e-1]:null)&&!n.model.skip&&(a.model.controlPointPreviousX=a.model.x-(l=(a.model.x-n.model.x)/3),a.model.controlPointPreviousY=a.model.y-l*a.mK),r&&!r.model.skip&&(a.model.controlPointNextX=a.model.x+(l=(r.model.x-a.model.x)/3),a.model.controlPointNextY=a.model.y+l*a.mK))},dt.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},dt.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},dt.niceNum=function(t,e){var n=Math.floor(dt.log10(t)),a=t/Math.pow(10,n);return(e?a<1.5?1:a<3?2:a<7?5:10:a<=1?1:a<=2?2:a<=5?5:10)*Math.pow(10,n)},dt.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},dt.getRelativePosition=function(t,e){var n,a,r=t.originalEvent||t,i=t.target||t.srcElement,s=i.getBoundingClientRect(),u=r.touches;u&&u.length>0?(n=u[0].clientX,a=u[0].clientY):(n=r.clientX,a=r.clientY);var o=parseFloat(dt.getStyle(i,"padding-left")),l=parseFloat(dt.getStyle(i,"padding-top")),d=parseFloat(dt.getStyle(i,"padding-right")),c=parseFloat(dt.getStyle(i,"padding-bottom")),f=s.bottom-s.top-l-c;return{x:n=Math.round((n-s.left-o)/(s.right-s.left-o-d)*i.width/e.currentDevicePixelRatio),y:a=Math.round((a-s.top-l)/f*i.height/e.currentDevicePixelRatio)}},dt.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},dt.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},dt._calculatePadding=function(t,e,n){return(e=dt.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},dt._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},dt.getMaximumWidth=function(t){var e=dt._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,a=n-dt._calculatePadding(e,"padding-left",n)-dt._calculatePadding(e,"padding-right",n),r=dt.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},dt.getMaximumHeight=function(t){var e=dt._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,a=n-dt._calculatePadding(e,"padding-top",n)-dt._calculatePadding(e,"padding-bottom",n),r=dt.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},dt.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},dt.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var a=t.canvas,r=t.height,i=t.width;a.height=r*n,a.width=i*n,t.ctx.scale(n,n),a.style.height||a.style.width||(a.style.height=r+"px",a.style.width=i+"px")}},dt.fontString=function(t,e,n){return e+" "+t+"px "+n},dt.longestText=function(t,e,n,a){var r=(a=a||{}).data=a.data||{},i=a.garbageCollect=a.garbageCollect||[];a.font!==e&&(r=a.data={},i=a.garbageCollect=[],a.font=e),t.font=e;var s=0;dt.each(n,(function(e){null!=e&&!0!==dt.isArray(e)?s=dt.measureText(t,r,i,s,e):dt.isArray(e)&&dt.each(e,(function(e){null==e||dt.isArray(e)||(s=dt.measureText(t,r,i,s,e))}))}));var u=i.length/2;if(u>n.length){for(var o=0;o<u;o++)delete r[i[o]];i.splice(0,u)}return s},dt.measureText=function(t,e,n,a,r){var i=e[r];return i||(i=e[r]=t.measureText(r).width,n.push(r)),i>a&&(a=i),a},dt.numberOfLabelLines=function(t){var e=1;return dt.each(t,(function(t){dt.isArray(t)&&t.length>e&&(e=t.length)})),e},dt.color=W?function(t){return t instanceof CanvasGradient&&(t=ut.global.defaultColor),W(t)}:function(t){return console.error("Color.js not found!"),t},dt.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:dt.color(t).saturate(.5).darken(.1).rgbString()}}(),We._adapters=Je,We.Animation=bt,We.animationService=mt,We.controllers=ue,We.DatasetController=Tt,We.defaults=ut,We.Element=gt,We.elements=qt,We.Interaction=ge,We.layouts=ve,We.platform=Ae,We.plugins=ke,We.Scale=nn,We.scaleService=Ee,We.Ticks=Ze,We.Tooltip=Ve,We.helpers.each(qn,(function(t,e){We.scaleService.registerScaleType(e,t,t._defaults)})),na)na.hasOwnProperty(sa)&&We.plugins.register(na[sa]);We.platform.initialize();var ua=We;return"undefined"!=typeof window&&(window.Chart=We),We.Chart=We,We.Legend=na.legend._element,We.Title=na.title._element,We.pluginService=We.plugins,We.PluginBase=We.Element.extend({}),We.canvasHelpers=We.helpers.canvas,We.layoutService=We.layouts,We.LinearScaleBase=sn,We.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){We[t]=function(e,n){return new We(e,We.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),ua}(function(){try{return n("wd/R")}catch(t){}}())},MOZO:function(t,e,n){var a=n("0GLT"),r=n("VLqJ"),i=n("fqHM"),s=n("6II+");t.exports=function(t,e){return a(t)?t:r(t,e)?[t]:i(s(t))}},MP8s:function(t,e,n){"use strict";n.d(e,"a",(function(){return T}));var a=n("8Y7J"),r=n("2vnA"),i=n("f95s"),s=n("mfoh"),u=n("X+05"),o=n("8SuI"),l=n.n(o),d=n("gBXJ"),c=n.n(d),f=n("LgIp"),h=n.n(f),g=n("n9Vz"),p=n.n(g),b=n("372+"),m=n.n(b),y=n("Q7RW"),v=n.n(y),x=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},_=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},T=function(){function t(){this.options=new s.b,this.eventNames=Object.keys(u.a),this.expandedNodeIds={},this.selectedLeafNodeIds={},this.activeNodeIds={},this.hiddenNodeIds={},this.focusedNodeId=null,this.firstUpdate=!0,this.subscriptions=[]}var e;return e=t,t.prototype.fireEvent=function(t){t.treeModel=this,this.events[t.eventName].emit(t),this.events.event.emit(t)},t.prototype.subscribe=function(t,e){var n=this.events[t].subscribe(e);this.subscriptions.push(n)},t.prototype.getFocusedNode=function(){return this.focusedNode},t.prototype.getActiveNode=function(){return this.activeNodes[0]},t.prototype.getActiveNodes=function(){return this.activeNodes},t.prototype.getVisibleRoots=function(){return this.virtualRoot.visibleChildren},t.prototype.getFirstRoot=function(t){return void 0===t&&(t=!1),l()(t?this.getVisibleRoots():this.roots)},t.prototype.getLastRoot=function(t){return void 0===t&&(t=!1),c()(t?this.getVisibleRoots():this.roots)},Object.defineProperty(t.prototype,"isFocused",{get:function(){return e.focusedTree===this},enumerable:!0,configurable:!0}),t.prototype.isNodeFocused=function(t){return this.focusedNode===t},t.prototype.isEmptyTree=function(){return this.roots&&0===this.roots.length},Object.defineProperty(t.prototype,"focusedNode",{get:function(){return this.focusedNodeId?this.getNodeById(this.focusedNodeId):null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expandedNodes",{get:function(){var t=this,e=Object.keys(this.expandedNodeIds).filter((function(e){return t.expandedNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activeNodes",{get:function(){var t=this,e=Object.keys(this.activeNodeIds).filter((function(e){return t.activeNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hiddenNodes",{get:function(){var t=this,e=Object.keys(this.hiddenNodeIds).filter((function(e){return t.hiddenNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectedLeafNodes",{get:function(){var t=this,e=Object.keys(this.selectedLeafNodeIds).filter((function(e){return t.selectedLeafNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),t.prototype.getNodeByPath=function(t,e){if(void 0===e&&(e=null),!t)return null;if(e=e||this.virtualRoot,0===t.length)return e;if(!e.children)return null;var n=t.shift(),a=p()(e.children,{id:n});return a?this.getNodeByPath(t,a):null},t.prototype.getNodeById=function(t){var e=t.toString();return this.getNodeBy((function(t){return t.id.toString()===e}))},t.prototype.getNodeBy=function(t,e){if(void 0===e&&(e=null),!(e=e||this.virtualRoot).children)return null;var n=p()(e.children,t);if(n)return n;for(var a=0,r=e.children;a<r.length;a++){var i=this.getNodeBy(t,r[a]);if(i)return i}},t.prototype.isExpanded=function(t){return this.expandedNodeIds[t.id]},t.prototype.isHidden=function(t){return this.hiddenNodeIds[t.id]},t.prototype.isActive=function(t){return this.activeNodeIds[t.id]},t.prototype.isSelected=function(t){return this.selectedLeafNodeIds[t.id]},t.prototype.ngOnDestroy=function(){this.dispose(),this.unsubscribeAll()},t.prototype.dispose=function(){this.virtualRoot&&this.virtualRoot.dispose()},t.prototype.unsubscribeAll=function(){this.subscriptions.forEach((function(t){return t.unsubscribe()})),this.subscriptions=[]},t.prototype.setData=function(t){var e=t.nodes,n=t.options,a=void 0===n?null:n,r=t.events,i=void 0===r?null:r;a&&(this.options=new s.b(a)),i&&(this.events=i),e&&(this.nodes=e),this.update()},t.prototype.update=function(){var t,e=((t={id:this.options.rootId,virtual:!0})[this.options.childrenField]=this.nodes,t);this.dispose(),this.virtualRoot=new i.a(e,null,this,0),this.roots=this.virtualRoot.children,this.firstUpdate?this.roots&&(this.firstUpdate=!1,this._calculateExpandedNodes()):this.fireEvent({eventName:u.a.updateData})},t.prototype.setFocusedNode=function(t){this.focusedNodeId=t?t.id:null},t.prototype.setFocus=function(t){e.focusedTree=t?this:null},t.prototype.doForAll=function(t){this.roots.forEach((function(e){return e.doForAll(t)}))},t.prototype.focusNextNode=function(){var t=this.getFocusedNode(),e=t?t.findNextNode(!0,!0):this.getFirstRoot(!0);e&&e.focus()},t.prototype.focusPreviousNode=function(){var t=this.getFocusedNode(),e=t?t.findPreviousNode(!0):this.getLastRoot(!0);e&&e.focus()},t.prototype.focusDrillDown=function(){var t=this.getFocusedNode();if(t&&t.isCollapsed&&t.hasChildren)t.toggleExpanded();else{var e=t?t.getFirstChild(!0):this.getFirstRoot(!0);e&&e.focus()}},t.prototype.focusDrillUp=function(){var t=this.getFocusedNode();if(t)if(t.isExpanded)t.toggleExpanded();else{var e=t.realParent;e&&e.focus()}},t.prototype.setActiveNode=function(t,e,n){void 0===n&&(n=!1),n?this._setActiveNodeMulti(t,e):this._setActiveNodeSingle(t,e),e?(t.focus(this.options.scrollOnActivate),this.fireEvent({eventName:u.a.activate,node:t}),this.fireEvent({eventName:u.a.nodeActivate,node:t})):(this.fireEvent({eventName:u.a.deactivate,node:t}),this.fireEvent({eventName:u.a.nodeDeactivate,node:t}))},t.prototype.setSelectedNode=function(t,e){var n;this.selectedLeafNodeIds=Object.assign({},this.selectedLeafNodeIds,((n={})[t.id]=e,n)),e?(t.focus(),this.fireEvent({eventName:u.a.select,node:t})):this.fireEvent({eventName:u.a.deselect,node:t})},t.prototype.setExpandedNode=function(t,e){var n;this.expandedNodeIds=Object.assign({},this.expandedNodeIds,((n={})[t.id]=e,n)),this.fireEvent({eventName:u.a.toggleExpanded,node:t,isExpanded:e})},t.prototype.expandAll=function(){this.roots.forEach((function(t){return t.expandAll()}))},t.prototype.collapseAll=function(){this.roots.forEach((function(t){return t.collapseAll()}))},t.prototype.setIsHidden=function(t,e){var n;this.hiddenNodeIds=Object.assign({},this.hiddenNodeIds,((n={})[t.id]=e,n))},t.prototype.setHiddenNodeIds=function(t){this.hiddenNodeIds=t.reduce((function(t,e){var n;return Object.assign(t,((n={})[e]=!0,n))}),{})},t.prototype.performKeyAction=function(t,e){var n=this.options.actionMapping.keys[e.keyCode];return!!n&&(e.preventDefault(),n(this,t,e),!0)},t.prototype.filterNodes=function(t,e){var n,a=this;if(void 0===e&&(e=!0),!t)return this.clearFilter();if(m()(t))n=function(e){return-1!==e.displayField.toLowerCase().indexOf(t.toLowerCase())};else{if(!v()(t))return console.error("Don't know what to do with filter",t),void console.error("Should be either a string or function");n=t}var r={};this.roots.forEach((function(t){return a._filterNode(r,t,n,e)})),this.hiddenNodeIds=r,this.fireEvent({eventName:u.a.changeFilter})},t.prototype.clearFilter=function(){this.hiddenNodeIds={},this.fireEvent({eventName:u.a.changeFilter})},t.prototype.moveNode=function(t,e){var n=t.getIndexInParent(),a=t.parent;if(this.canMoveNode(t,e,n)){var r=a.getField("children");e.parent.getField("children")||e.parent.setField("children",[]);var i=e.parent.getField("children"),s=r.splice(n,1)[0],o=a===e.parent&&e.index>n?e.index-1:e.index;i.splice(o,0,s),a.treeModel.update(),e.parent.treeModel!==a.treeModel&&e.parent.treeModel.update(),this.fireEvent({eventName:u.a.moveNode,node:s,to:{parent:e.parent.data,index:o},from:{parent:a.data,index:n}})}},t.prototype.copyNode=function(t,e){var n=t.getIndexInParent();if(this.canMoveNode(t,e,n)){e.parent.getField("children")||e.parent.setField("children",[]);var a=e.parent.getField("children"),r=this.options.getNodeClone(t);a.splice(e.index,0,r),t.treeModel.update(),e.parent.treeModel!==t.treeModel&&e.parent.treeModel.update(),this.fireEvent({eventName:u.a.copyNode,node:r,to:{parent:e.parent.data,index:e.index}})}},t.prototype.getState=function(){return{expandedNodeIds:this.expandedNodeIds,selectedLeafNodeIds:this.selectedLeafNodeIds,activeNodeIds:this.activeNodeIds,hiddenNodeIds:this.hiddenNodeIds,focusedNodeId:this.focusedNodeId}},t.prototype.setState=function(t){t&&Object.assign(this,{expandedNodeIds:t.expandedNodeIds||{},selectedLeafNodeIds:t.selectedLeafNodeIds||{},activeNodeIds:t.activeNodeIds||{},hiddenNodeIds:t.hiddenNodeIds||{},focusedNodeId:t.focusedNodeId})},t.prototype.subscribeToState=function(t){var e=this;Object(r.b)((function(){return t(e.getState())}))},t.prototype.canMoveNode=function(t,e,n){return void 0===n&&(n=void 0),n||t.getIndexInParent(),(t.parent!==e.parent||n!==e.index)&&!e.parent.isDescendantOf(t)},t.prototype.calculateExpandedNodes=function(){this._calculateExpandedNodes()},t.prototype._filterNode=function(t,e,n,a){var r=this,i=n(e);return e.children&&e.children.forEach((function(e){r._filterNode(t,e,n,a)&&(i=!0)})),i||(t[e.id]=!0),a&&i&&e.ensureVisible(),i},t.prototype._calculateExpandedNodes=function(t){var e,n=this;void 0===t&&(t=null),(t=t||this.virtualRoot).data[this.options.isExpandedField]&&(this.expandedNodeIds=Object.assign({},this.expandedNodeIds,((e={})[t.id]=!0,e))),t.children&&t.children.forEach((function(t){return n._calculateExpandedNodes(t)}))},t.prototype._setActiveNodeSingle=function(t,e){var n,a=this;this.activeNodes.filter((function(e){return e!==t})).forEach((function(t){a.fireEvent({eventName:u.a.deactivate,node:t}),a.fireEvent({eventName:u.a.nodeDeactivate,node:t})})),this.activeNodeIds=e?((n={})[t.id]=!0,n):{}},t.prototype._setActiveNodeMulti=function(t,e){var n;this.activeNodeIds=Object.assign({},this.activeNodeIds,((n={})[t.id]=e,n))},t.focusedTree=null,x([r.d,_("design:type",Array)],t.prototype,"roots",void 0),x([r.d,_("design:type",Object)],t.prototype,"expandedNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"selectedLeafNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"activeNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"hiddenNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"focusedNodeId",void 0),x([r.d,_("design:type",i.a)],t.prototype,"virtualRoot",void 0),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"focusedNode",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"expandedNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"activeNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"hiddenNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"selectedLeafNodes",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setData",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"update",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setFocusedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setFocus",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"doForAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusNextNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusPreviousNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusDrillDown",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusDrillUp",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object,Object]),_("design:returntype",void 0)],t.prototype,"setActiveNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setSelectedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setExpandedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"expandAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"collapseAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setIsHidden",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setHiddenNodeIds",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"filterNodes",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"clearFilter",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"moveNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"copyNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setState",null),e=x([Object(a.Injectable)()],t)}()},MaPG:function(t,e,n){var a=n("8a/S"),r=n("3a3P"),i=n("VLqJ"),s=n("Wv1A");t.exports=function(t){return i(t)?a(s(t)):r(t)}},MdoF:function(t,e,n){"use strict";n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n("8Y7J"),r=n("CNMR"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"button",[["aria-label","Close"],["class","close"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.close()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["×"])),(t()(),a["ɵeld"](3,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Close"]))],null,null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["role","alert"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](4,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"alert alert-"+n.type,n.classes),t(e,4,0,n.dismissible)}),null)}function l(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.isOpen)}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"alert",[],null,null,null,l,s)),a["ɵdid"](1,114688,null,0,r.a,[r.b,a.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}var c=a["ɵccf"]("alert,bs-alert",r.a,d,{type:"type",dismissible:"dismissible",dismissOnTimeout:"dismissOnTimeout",isOpen:"isOpen"},{onClose:"onClose",onClosed:"onClosed"},["*"])},MuvH:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("IheW"),i=n("pL04");let s=(()=>{class t{constructor(t){this.http=t}findValue(t,e){if(t.value)return t.value.find(t=>t.section===e)}getValue(t,e){let n=this.findValue(t,e);if(!n){const a=e.indexOf(".");-1!==a&&(n=this.findValue(t,e.substring(0,a)))}return n||(n=this.findValue(t,"global")),n?n.value:t.default}getConfigData(){return this.http.get("api/cluster_conf/")}get(t){return this.http.get("api/cluster_conf/"+t)}filter(t){return this.http.get("api/cluster_conf/filter?names="+t.join(","))}create(t){return this.http.post("api/cluster_conf/",t)}delete(t,e){return this.http.delete(`api/cluster_conf/${t}?section=${e}`)}bulkCreate(t){return this.http.put("api/cluster_conf/",t)}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.c))},token:t,providedIn:i.a}),t})()},Mxhz:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("LRne"),r=n("CqXF"),i=n("JIr8"),s=n("8Y7J"),u=n("IheW"),o=n("pL04");let l=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("api/user")}delete(t){return this.http.delete("api/user/"+t)}get(t){return this.http.get("api/user/"+t)}create(t){return this.http.post("api/user",t)}update(t){return this.http.put("api/user/"+t.username,t)}changePassword(t,e,n){return this.http.post(`api/user/${t}/change_password`,{old_password:e,new_password:n})}validateUserName(t){return this.get(t).pipe(Object(r.a)(!0),Object(i.a)(t=>(t.preventDefault(),Object(a.a)(!1))))}validatePassword(t,e=null,n=null){return this.http.post("api/user/validate_password",{password:t,username:e,old_password:n})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](u.c))},token:t,providedIn:o.a}),t})()},"N+g0":function(t,e,n){var a=n("g6v/"),r=n("m/L8"),i=n("glrk"),s=n("/GqU"),u=n("33Wh");t.exports=a?Object.defineProperties:function(t,e){i(t);for(var n,a=s(e),o=u(e),l=o.length,d=0;l>d;)r.f(t,n=o[d++],a[n]);return t}},"NC/Y":function(t,e,n){var a=n("0GbY");t.exports=a("navigator","userAgent")||""},NEZu:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a){this.customColors={backgroundColor:void 0,borderColor:void 0},this.checkOffset=!1,this.chartEl=t.nativeElement,this.getStyleLeft=n,this.getStyleTop=a,this.tooltipEl=e.nativeElement}customTooltips(t){if(0===t.opacity)return void(this.tooltipEl.style.opacity=0);if(this.tooltipEl.classList.remove("above","below","no-transform"),this.tooltipEl.classList.add(t.yAlign?t.yAlign:"no-transform"),t.body){const e=t.title||[],n=t.body.map(t=>t.lines);let a="<thead>";e.forEach(t=>{a+="<tr><th>"+this.getTitle(t)+"</th></tr>"}),a+="</thead><tbody>",n.forEach((e,n)=>{const r=t.labelColors[n];let i="background:"+(this.customColors.backgroundColor||r.backgroundColor);i+="; border-color:"+(this.customColors.borderColor||r.borderColor),i+="; border-width: 2px",a+='<tr><td nowrap><span class="chartjs-tooltip-key" style="'+i+'"></span>'+this.getBody(e)+"</td></tr>"}),a+="</tbody>",this.tooltipEl.querySelector("table").innerHTML=a}const e=this.chartEl.offsetTop,n=this.chartEl.offsetLeft;if(this.checkOffset){const e=t.width/2;this.tooltipEl.classList.remove("transform-left"),this.tooltipEl.classList.remove("transform-right"),t.caretX-e<0?this.tooltipEl.classList.add("transform-left"):t.caretX+e>this.chartEl.width&&this.tooltipEl.classList.add("transform-right")}this.tooltipEl.style.left=this.getStyleLeft(t,n),this.tooltipEl.style.top=this.getStyleTop(t,e),this.tooltipEl.style.opacity=1,this.tooltipEl.style.fontFamily=t._fontFamily,this.tooltipEl.style.fontSize=t.fontSize,this.tooltipEl.style.fontStyle=t._fontStyle,this.tooltipEl.style.padding=t.yPadding+"px "+t.xPadding+"px"}getBody(t){return t}getTitle(t){return t}}},NJ4a:function(t,e,n){"use strict";function a(t){setTimeout(()=>{throw t},0)}n.d(e,"a",(function(){return a}))},NJ9Y:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("sVev"),r=n("pLZG"),i=n("BFxc"),s=n("XDbj"),u=n("xbPD"),o=n("SpAZ");function l(t,e){const n=arguments.length>=2;return l=>l.pipe(t?Object(r.a)((e,n)=>t(e,n,l)):o.a,Object(i.a)(1),n?Object(u.a)(e):Object(s.a)(()=>new a.a))}},NSEa:function(t,e,n){var a=n("CNUl");t.exports=function(t,e){var n=e?a(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}},NUGo:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("iInd"),s=n("FE24"),u=n("z/SZ"),o=n("GS7A");n("S7zO"),n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return b}));var l=a["ɵcrt"]({encapsulation:0,styles:[[".dropdown-menu[_ngcontent-%COMP%] > .disabled[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]{pointer-events:auto;cursor:default!important}"]],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,10,"button",[["type","button"]],null,[[null,"click"]],(function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["ɵnov"](t,5).onClick()&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.ngIf)&&r),r}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](4,{disabled:0}),a["ɵdid"](5,16384,null,0,i.n,[i.m,i.a,[8,null],a.Renderer2,a.ElementRef],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](8,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](9,1),(t()(),a["ɵeld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](11,null,["",""]))],(function(t,e){var n=e.component,r=a["ɵinlineInterpolate"](1,"btn btn-",n.btnColor,""),i=t(e,4,0,n.disableSelectionAction(e.context.ngIf));t(e,3,0,r,i),t(e,5,0,e.context.ngIf.preserveFragment?"":null,n.useRouterLink(e.context.ngIf));var s=t(e,9,0,e.context.ngIf.icon);t(e,8,0,s)}),(function(t,e){t(e,11,0,e.context.ngIf.name)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](1,null,[""," "]))],null,(function(t,e){t(e,1,0,e.component.dropDownOnly)}))}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[["class","sr-only"]],null,null,null,null,null))],null,null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"button",[["dropdownToggle",""],["type","button"]],[[8,"className",0],[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick()&&r),r}),null,null)),a["ɵdid"](1,147456,null,0,s.g,[a.ChangeDetectorRef,s.c,a.ElementRef,a.Renderer2,s.f],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.dropDownOnly),t(e,5,0,!n.dropDownOnly)}),(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"btn btn-",e.component.btnColor," dropdown-toggle dropdown-toggle-split"),!0,a["ɵnov"](e,1).isDisabled,a["ɵnov"](e,1).isOpen)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,12,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,11,"li",[["data-toggle","tooltip"],["role","menuitem"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,10,"a",[["class","dropdown-item"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.$implicit)&&r),r}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](5,{disabled:0}),a["ɵdid"](6,671744,null,0,i.p,[i.m,i.a,r.LocationStrategy],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),a["ɵeld"](7,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](9,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](10,1),(t()(),a["ɵeld"](11,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](12,null,["",""]))],(function(t,e){var n=e.component,a=t(e,5,0,n.disableSelectionAction(e.context.$implicit));t(e,4,0,"dropdown-item",a),t(e,6,0,e.context.$implicit.preserveFragment?"":null,n.useRouterLink(e.context.$implicit));var r=t(e,10,0,e.context.$implicit.icon);t(e,9,0,r)}),(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](1,"",n.toClassName(e.context.$implicit.name),""),a["ɵinlineInterpolate"](1,"",n.useDisableDesc(e.context.$implicit),"")),t(e,2,0,a["ɵnov"](e,6).target,a["ɵnov"](e,6).href),t(e,12,0,e.context.$implicit.name)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](2,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.dropDownActions)}),null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,8,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,s.f,s.f,[]),a["ɵdid"](2,212992,null,0,s.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,u.a,s.f,s.a,o.b],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](8,16384,null,0,s.d,[s.f,a.ViewContainerRef,a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0,n.getCurrentButton()),t(e,6,0,n.showDropDownActions())}),(function(t,e){t(e,0,0,a["ɵnov"](e,2).dropup,a["ɵnov"](e,2).isOpen,a["ɵnov"](e,2).isOpen&&a["ɵnov"](e,2).isBs4)}))}},NaFW:function(t,e,n){var a=n("9d/t"),r=n("3Eq5"),i=n("P4y1"),s=n("tiKp")("iterator");t.exports=function(t){if(null!=t)return r(t,s)||r(t,"@@iterator")||i[a(t)]}},NtIB:function(t,e,n){var a=n("uy3s"),r=n("eQba"),i=n("jqoL"),s=n("VLqJ"),u=n("kXVT"),o=n("YLnZ"),l=n("Wv1A");t.exports=function(t,e){return s(t)&&u(e)?o(l(t),e):function(n){var s=r(n,t);return void 0===s&&s===e?i(n,t):a(e,s,3)}}},O741:function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=a.String,s=a.TypeError;t.exports=function(t){if("object"==typeof t||r(t))return t;throw s("Can't set "+i(t)+" as a prototype")}},O9Tv:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("YzqF");e.Mutex=a.default},OIDT:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"tree-node-wrapper",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n      <div *ngIf="!templates.treeNodeWrapperTemplate" class="node-wrapper" [style.padding-left]="node.getNodePadding()">\n          <tree-node-checkbox *ngIf="node.options.useCheckbox" [node]="node"></tree-node-checkbox>\n          <tree-node-expander [node]="node"></tree-node-expander>\n          <div class="node-content-wrapper"\n               [class.node-content-wrapper-active]="node.isActive"\n               [class.node-content-wrapper-focused]="node.isFocused"\n               (click)="node.mouseAction(\'click\', $event)"\n               (dblclick)="node.mouseAction(\'dblClick\', $event)"\n               (mouseover)="node.mouseAction(\'mouseOver\', $event)"\n               (mouseout)="node.mouseAction(\'mouseOut\', $event)"\n               (contextmenu)="node.mouseAction(\'contextMenu\', $event)"\n               (treeDrop)="node.onDrop($event)"\n               (treeDropDragOver)="node.mouseAction(\'dragOver\', $event)"\n               (treeDropDragLeave)="node.mouseAction(\'dragLeave\', $event)"\n               (treeDropDragEnter)="node.mouseAction(\'dragEnter\', $event)"\n               [treeAllowDrop]="node.allowDrop"\n               [allowDragoverStyling]="node.allowDragoverStyling()"\n               [treeDrag]="node"\n               [treeDragEnabled]="node.allowDrag()">\n\n              <tree-node-content [node]="node" [index]="index" [template]="templates.treeNodeTemplate">\n              </tree-node-content>\n          </div>\n      </div>\n      <ng-container\n              [ngTemplateOutlet]="templates.treeNodeWrapperTemplate"\n              [ngTemplateOutletContext]="{ $implicit: node, node: node, index: index, templates: templates }">\n      </ng-container>\n  '}),s("design:paramtypes",[])],t)}()},OIYi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},OLbh:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("s7LF");class r{constructor(t,e){this.modalRef=t,this.modalService=e,this.boundCancel=this.cancel.bind(this),this.canceled=!1,this.confirmationForm=new a.k({}),this.onHide=this.modalService.onHide.subscribe(t=>{this.onCancel&&(t||this.canceled)&&this.onCancel()})}ngOnInit(){if(this.bodyContext=this.bodyContext||{},this.bodyContext.$implicit=this.bodyData,!this.onSubmit)throw new Error("No submit action defined");if(!this.buttonText)throw new Error("No action name defined");if(!this.titleText)throw new Error("No title defined");if(!this.bodyTpl&&!this.description)throw new Error("No description defined")}ngOnDestroy(){this.onHide.unsubscribe()}cancel(){this.canceled=!0,this.modalRef.hide()}stopLoadingSpinner(){this.confirmationForm.setErrors({cdSubmitButton:!0})}}},Oaa7:function(t,e,n){!function(t){"use strict";t.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},Ob0Z:function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function a(t,e,n,a){var r="";if(e)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,t)}t.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात्री"===e?t<4?t:t+12:"सकाळी"===e?t:"दुपारी"===e?t>=10?t:t+12:"सायंकाळी"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात्री":t<10?"सकाळी":t<17?"दुपारी":t<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("wd/R"))},OcYo:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("e0ae");class r{constructor(t,e,n,a){this.elementRef=t,this.renderer=e,this.toastr=n,this.i18n=a}ngOnInit(){const t=this.renderer.createElement("i");this.renderer.addClass(t,"fa"),this.renderer.addClass(t,"fa-clipboard"),this.renderer.setAttribute(t,"title",this.i18n("Copy to clipboard")),this.renderer.appendChild(this.elementRef.nativeElement,t)}getText(){return document.getElementById(this.cdCopy2ClipboardButton).value}onClick(){try{const t=Object(a.a)(),e=this.getText(),n=()=>{this.toastr.success("Copied text to the clipboard successfully.")};["firefox","ie","ios","safari"].includes(t.name)?navigator.clipboard.writeText(e).then(()=>n()):navigator.permissions.query({name:"clipboard-write"}).then(t=>{"granted"!==t.state&&"prompt"!==t.state||navigator.clipboard.writeText(e).then(()=>n())})}catch(t){this.toastr.error("Failed to copy text to the clipboard.")}}}},OjkT:function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};t.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(t,e){return 12===t&&(t=0),"राति"===e?t<4?t:t+12:"बिहान"===e?t:"दिउँसो"===e?t>=10?t:t+12:"साँझ"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"राति":t<12?"बिहान":t<16?"दिउँसो":t<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("wd/R"))},OpvP:function(t,e,n){var a=n("4zBA");t.exports=a({}.isPrototypeOf)},Oxv6:function(t,e,n){!function(t){"use strict";var e={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};t.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(t,e){return 12===t&&(t=0),"шаб"===e?t<4?t:t+12:"субҳ"===e?t:"рӯз"===e?t>=11?t:t+12:"бегоҳ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"шаб":t<11?"субҳ":t<16?"рӯз":t<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},P4y1:function(t,e){t.exports={}},P8lu:function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n("mrSG"),r=n("IheW"),i=n("LvDl"),s=n("cp0P"),u=n("LRne"),o=n("5+tZ"),l=n("CqXF"),d=n("JIr8"),c=n("xTzq"),f=n("8Y7J"),h=n("pL04");let g=(()=>{let t=class{constructor(t){this.http=t,this.url="api/rgw/user"}list(){return this.enumerate().pipe(Object(o.a)(t=>t.length>0?Object(s.a)(t.map(t=>this.get(t))):Object(u.a)([])))}enumerate(){return this.http.get(this.url)}enumerateEmail(){return this.http.get(this.url+"/get_emails")}get(t){return this.http.get(`${this.url}/${t}`)}getQuota(t){return this.http.get(`${this.url}/${t}/quota`)}create(t){let e=new r.h;return i.keys(t).forEach(n=>{e=e.append(n,t[n])}),this.http.post(this.url,null,{params:e})}update(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.put(`${this.url}/${t}`,null,{params:n})}updateQuota(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.put(`${this.url}/${t}/quota`,null,{params:n})}delete(t){return this.http.delete(`${this.url}/${t}`)}createSubuser(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.post(`${this.url}/${t}/subuser`,null,{params:n})}deleteSubuser(t,e){return this.http.delete(`${this.url}/${t}/subuser/${e}`)}addCapability(t,e,n){let a=new r.h;return a=a.append("type",e),a=a.append("perm",n),this.http.post(`${this.url}/${t}/capability`,null,{params:a})}deleteCapability(t,e,n){let a=new r.h;return a=a.append("type",e),a=a.append("perm",n),this.http.delete(`${this.url}/${t}/capability`,{params:a})}addS3Key(t,e){let n=new r.h;return n=n.append("key_type","s3"),i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.post(`${this.url}/${t}/key`,null,{params:n})}deleteS3Key(t,e){let n=new r.h;return n=n.append("key_type","s3"),n=n.append("access_key",e),this.http.delete(`${this.url}/${t}/key`,{params:n})}exists(t){return this.get(t).pipe(Object(l.a)(!0),Object(d.a)(t=>(i.isFunction(t.preventDefault)&&t.preventDefault(),Object(u.a)(!1))))}emailExists(t){return t=decodeURIComponent(t),this.enumerateEmail().pipe(Object(o.a)(e=>{const n=i.indexOf(e,t);return Object(u.a)(-1!==n)}))}};return t.ngInjectableDef=f["ɵɵdefineInjectable"]({factory:function(){return new t(f["ɵɵinject"](r.c))},token:t,providedIn:h.a}),t=a.__decorate([c.a,a.__metadata("design:paramtypes",[r.c])],t),t})()},PA2r:function(t,e,n){!function(t){"use strict";var e="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),a=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function i(t){return t>1&&t<5&&1!=~~(t/10)}function s(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"pár sekund":"pár sekundami";case"ss":return e||a?r+(i(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(i(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(i(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(i(t)?"dny":"dní"):r+"dny";case"M":return e||a?"měsíc":"měsícem";case"MM":return e||a?r+(i(t)?"měsíce":"měsíců"):r+"měsíci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(i(t)?"roky":"let"):r+"lety"}}t.defineLocale("cs",{months:e,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},PCNd:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},"PEr+":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("EEJc"),s=n("ajRT"),u=n("s7LF"),o=n("+gVj"),l=n("mXUL"),d=n("IZUe"),c=n("ANnk"),f=n("f/UV"),h=n("aexS"),g=n("gp3X"),p=n("sb0X"),b=n("KVJa"),m=n("Z21x"),y=n("sne2"),v=n("0+/T"),x=n("LqlI");n.d(e,"a",(function(){return D}));var _=a["ɵcrt"]({encapsulation:0,styles:[[".modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]{margin-top:1em}.modal-body[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," "])),a["ɵppd"](2,1),(t()(),a["ɵeld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](4,null,["",""])),(t()(),a["ɵted"](-1,null,["?"]))],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r),t(e,4,0,n.itemNames[0])}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," the selected items?"])),a["ɵppd"](2,1),(t()(),a["ɵeld"](3,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,S)),a["ɵdid"](5,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,5,0,e.component.itemNames)}),(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r)}))}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["manyNames",2]],null,0,null,I))],(function(t,e){t(e,2,0,1===e.component.itemNames.length,a["ɵnov"](e,3))}),null)}function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," the selected ","?"])),a["ɵppd"](2,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,0),n.actionDescription));t(e,1,0,r,n.itemDescription)}))}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," ","\n"])),a["ɵppd"](1,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,0,0,t(e,1,0,a["ɵnov"](e.parent,1),n.actionDescription));t(e,0,0,r,n.itemDescription)}))}function E(t){return a["ɵvid"](0,[a["ɵpid"](0,r.LowerCasePipe,[]),a["ɵpid"](0,r.TitleCasePipe,[]),a["ɵqud"](402653184,1,{submitButton:0}),(t()(),a["ɵeld"](3,0,null,null,44,"cd-modal",[],null,null,null,i.c,i.b)),a["ɵdid"](4,49152,[["modal",4]],0,s.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["ɵeld"](5,0,null,0,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](8,0,null,1,39,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](9,0,null,null,38,"form",[["name","deletionForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,11).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,11).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,14).onSubmit()&&r),r}),null,null)),a["ɵdid"](10,16384,null,0,u.G,[],null,null),a["ɵdid"](11,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,u.d,null,[u.l]),a["ɵdid"](13,16384,null,0,u.s,[[4,u.d]],null,null),a["ɵdid"](14,16384,null,0,o.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](15,0,null,null,25,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](17,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](18,0,null,null,22,"div",[["class","question"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](20,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["noNames",2]],null,0,null,C)),(t()(),a["ɵand"](16777216,null,null,2,null,R)),a["ɵdid"](23,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](24,{form:0}),(t()(),a["ɵeld"](25,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,l.b,l.a)),a["ɵdid"](26,1163264,null,2,o.c,[a.ElementRef,o.g],null,null),a["ɵqud"](603979776,2,{FormControlNames:1}),a["ɵqud"](603979776,3,{messagesBlock:0}),(t()(),a["ɵeld"](29,0,null,0,11,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](30,0,null,null,8,"input",[["autofocus",""],["class","custom-control-input"],["formControlName","confirmation"],["id","confirmation"],["name","confirmation"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t,31).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,31).onTouched()&&r),r}),null,null)),a["ɵdid"](31,16384,null,0,u.c,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,u.p,(function(t){return[t]}),[u.c]),a["ɵdid"](33,671744,[[2,4]],0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,u.q,null,[u.j]),a["ɵdid"](35,16384,null,0,u.r,[[4,u.q]],null,null),a["ɵdid"](36,4210688,null,0,d.a,[a.ElementRef],{autofocus:[0,"autofocus"]},null),a["ɵdid"](37,4210688,null,0,c.a,[[2,f.a],h.a,a.ElementRef],null,null),a["ɵdid"](38,16384,null,0,o.h,[[3,u.d],o.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵeld"](39,0,null,null,1,"label",[["class","custom-control-label"],["for","confirmation"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Yes, I am sure."])),(t()(),a["ɵeld"](41,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](42,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.callSubmitAction()&&a),a}),g.b,g.a)),a["ɵdid"](43,114688,[[1,4],["submitButton",4]],0,p.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵand"](16777216,null,0,1,null,A)),a["ɵdid"](45,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](46,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,b.b,b.a)),a["ɵdid"](47,49152,null,0,m.a,[r.Location,y.b],{name:[0,"name"],back:[1,"back"]},null),(t()(),a["ɵand"](0,[["deletionHeading",2]],null,0,null,k))],(function(t,e){var n=e.component;t(e,4,0,n.modalRef),t(e,7,0,a["ɵnov"](e,48)),t(e,11,0,n.deletionForm),t(e,14,0,n.deletionForm),t(e,17,0,n.bodyContext,n.bodyTemplate),t(e,20,0,n.itemNames,a["ɵnov"](e,21));var r=t(e,24,0,n.deletionForm);t(e,23,0,r,n.childFormGroupTemplate),t(e,26,0),t(e,33,0,"confirmation"),t(e,36,0,""),t(e,38,0,"confirmation"),t(e,43,0,n.deletionForm),t(e,45,0,a["ɵnov"](e,48)),t(e,47,0,"Cancel",n.modalRef.hide)}),(function(t,e){t(e,9,0,a["ɵnov"](e,13).ngClassUntouched,a["ɵnov"](e,13).ngClassTouched,a["ɵnov"](e,13).ngClassPristine,a["ɵnov"](e,13).ngClassDirty,a["ɵnov"](e,13).ngClassValid,a["ɵnov"](e,13).ngClassInvalid,a["ɵnov"](e,13).ngClassPending),t(e,25,0,a["ɵnov"](e,26).hasErrors,a["ɵnov"](e,26).hasSuccess),t(e,30,0,a["ɵnov"](e,35).ngClassUntouched,a["ɵnov"](e,35).ngClassTouched,a["ɵnov"](e,35).ngClassPristine,a["ɵnov"](e,35).ngClassDirty,a["ɵnov"](e,35).ngClassValid,a["ɵnov"](e,35).ngClassInvalid,a["ɵnov"](e,35).ngClassPending,a["ɵnov"](e,38).validClass,a["ɵnov"](e,38).invalidClass)}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-deletion-modal",[],null,null,null,E,_)),a["ɵdid"](1,114688,null,0,v.a,[x.a],null,null)],(function(t,e){t(e,1,0)}),null)}var D=a["ɵccf"]("cd-deletion-modal",v.a,L,{},{},[])},PHub:function(t,e,n){var a=n("PnUS"),r=n("x3F9"),i=Object.prototype,s=i.hasOwnProperty,u=i.propertyIsEnumerable,o=a(function(){return arguments}())?a:function(t){return r(t)&&s.call(t,"callee")&&!u.call(t,"callee")};t.exports=o},PKPk:function(t,e,n){"use strict";var a=n("ZUd8").charAt,r=n("V37c"),i=n("afO8"),s=n("fdAy"),u=i.set,o=i.getterFor("String Iterator");s(String,"String",(function(t){u(this,{type:"String Iterator",string:r(t),index:0})}),(function(){var t,e=o(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=a(n,r),e.index+=t.length,{value:t,done:!1})}))},PeUW:function(t,e,n){!function(t){"use strict";var e={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};t.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(t){return t+"வது"},preparse:function(t){return t.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(t,e,n){return t<2?" யாமம்":t<6?" வைகறை":t<10?" காலை":t<14?" நண்பகல்":t<18?" எற்பாடு":t<22?" மாலை":" யாமம்"},meridiemHour:function(t,e){return 12===t&&(t=0),"யாமம்"===e?t<2?t:t+12:"வைகறை"===e||"காலை"===e||"நண்பகல்"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})}(n("wd/R"))},PhyI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return r}));var a=function(t){return t[t.global=0]="global",t[t.pool=1]="pool",t[t.image=2]="image",t}({}),r=function(t){return t[t.bps=0]="bps",t[t.iops=1]="iops",t[t.milliseconds=2]="milliseconds",t}({})},PjNX:function(t,e,n){var a=n("eH2F")();t.exports=a},PnUS:function(t,e,n){var a=n("LaC8"),r=n("x3F9");t.exports=function(t){return r(t)&&"[object Arguments]"==a(t)}},PpIw:function(t,e,n){!function(t){"use strict";var e={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};t.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(t){return t.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ರಾತ್ರಿ"===e?t<4?t:t+12:"ಬೆಳಿಗ್ಗೆ"===e?t:"ಮಧ್ಯಾಹ್ನ"===e?t>=10?t:t+12:"ಸಂಜೆ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ರಾತ್ರಿ":t<10?"ಬೆಳಿಗ್ಗೆ":t<17?"ಮಧ್ಯಾಹ್ನ":t<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(t){return t+"ನೇ"},week:{dow:0,doy:6}})}(n("wd/R"))},PqYM:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("HDdC"),r=n("D0XW"),i=n("Y7HM"),s=n("z+Ro");function u(t=0,e,n){let u=-1;return Object(i.a)(e)?u=Number(e)<1?1:Number(e):Object(s.a)(e)&&(n=e),Object(s.a)(n)||(n=r.a),new a.a(e=>{const a=Object(i.a)(t)?t:+t-n.now();return n.schedule(o,a,{index:0,period:u,subscriber:e})})}function o(t){const{index:e,period:n,subscriber:a}=t;if(a.next(e),!a.closed){if(-1===n)return a.complete();t.index=e+1,this.schedule(t,n)}}},Q7RW:function(t,e,n){var a=n("LaC8"),r=n("hmSm");t.exports=function(t){if(!r(t))return!1;var e=a(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},QC43:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("MdoF"),i=n("CNMR"),s=n("SVse");n("XFyV"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return o}));var u=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"alert",[["type","info"]],null,null,null,r.c,r.b)),a["ɵdid"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,"strong",[],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,s["ɵNgClassImpl"],s["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,s.NgClass,[s["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,2),a["ɵncd"](0,0)],(function(t,e){var n=e.component;t(e,1,0,"info");var a=t(e,6,0,n.icons.spinner,n.icons.spin);t(e,5,0,a)}),null)}},QCZx:function(t,e,n){var a=n("2zzJ"),r=n("7+rY"),i=n("MOZO");t.exports=function(t,e,n){for(var s=-1,u=e.length,o={};++s<u;){var l=e[s],d=a(t,l);n(d,l)&&r(o,i(l,t),d)}return o}},QFaf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("s7LF");class r extends a.k{constructor(t,e,n){super(t,e,n),this.controls=t}get(t){const e=this._get(t);if(!e)throw new Error(`Control '${t}' could not be found!`);return e}_get(t){return super.get(t)||Object.values(this.controls).filter(t=>t.get).map(e=>e instanceof r?e._get(t):e.get(t)).find(t=>Boolean(t))}getValue(t){return this.get(t).value}silentSet(t,e){this.get(t).setValue(e,{emitEvent:!1})}showError(t,e,n){const a=this.get(t);return(e.submitted||a.dirty)&&(n?a.hasError(n):a.invalid)}}},QTAa:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("t/zF");class r extends a.a{}},QUkU:function(t,e,n){var a=n("JEWA"),r=n("im1V"),i=n("Uies"),s=n("hmSm");t.exports=function(t,e,n){if(!s(n))return!1;var u=typeof e;return!!("number"==u?r(n)&&i(e,n.length):"string"==u&&e in n)&&a(n[e],t)}},QWBl:function(t,e,n){"use strict";var a=n("I+eb"),r=n("F8JR");a({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},Qj4J:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("wd/R"))},QjCD:function(t,e,n){var a=n("kGkW"),r=n("nC65"),i=n("YLnZ");t.exports=function(t){var e=r(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||a(n,t,e)}}},QpVZ:function(t,e,n){var a=n("LaC8"),r=n("x3F9");t.exports=function(t){return"symbol"==typeof t||r(t)&&"[object Symbol]"==a(t)}},QuoE:function(t,e,n){var a=n("bX23"),r=n("vIot"),i=n("0rEg");t.exports=function(t,e,n){return e==e?i(t,e,n):a(t,r,n)}},R2cF:function(t,e){var n=/\w*$/;t.exports=function(t){var e=new t.constructor(t.source,n.exec(t));return e.lastIndex=t.lastIndex,e}},R6RA:function(t,e,n){var a=n("hmSm"),r=Object.create,i=function(){function t(){}return function(e){if(!a(e))return{};if(r)return r(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();t.exports=i},R8cQ:function(t,e,n){var a=n("pMcL"),r=n("xAZD"),i=n("0GLT"),s=n("QpVZ"),u=a?a.prototype:void 0,o=u?u.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return r(e,t)+"";if(s(e))return o?o.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}},RAwQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?r[n][0]:r[n][1]}function n(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10;return n(0===e?t/10:e)}if(t<1e4){for(;t>=10;)t/=10;return n(t)}return n(t/=1e3)}t.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(t){return n(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t},past:function(t){return n(t.substr(0,t.indexOf(" ")))?"viru "+t:"virun "+t},s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},RBUI:function(t,e){t.exports=function(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}},RK3t:function(t,e,n){var a=n("2oRo"),r=n("4zBA"),i=n("0Dky"),s=n("xrYK"),u=a.Object,o=r("".split);t.exports=i((function(){return!u("z").propertyIsEnumerable(0)}))?function(t){return"String"==s(t)?o(t,""):u(t)}:u},RNIs:function(t,e,n){var a=n("tiKp"),r=n("fHMY"),i=n("m/L8"),s=a("unscopables"),u=Array.prototype;null==u[s]&&i.f(u,s,{configurable:!0,value:r(null)}),t.exports=function(t){u[s][t]=!0}},Rf2I:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("s7LF"),r=n("LvDl");n("2EZI"),n("Fgil"),n("aXbf");class i{constructor(t,e,n,a,r){this.bsModalRef=t,this.formBuilder=e,this.formatter=n,this.dimlessBinaryPipe=a,this.i18n=r}ngOnInit(){this.createForm()}createForm(){const t={};this.fields.forEach(e=>{t[e.name]=this.createFormControl(e)}),this.formGroup=this.formBuilder.group(t)}createFormControl(t){let e=[];return r.isBoolean(t.required)&&t.required&&e.push(a.B.required),t.validators&&(e=e.concat(t.validators)),new a.i(r.defaultTo("binary"===t.type?this.dimlessBinaryPipe.transform(t.value):t.value,null),{validators:e})}getError(t){const e=this.formGroup.get(t.name).errors;return Object.keys(e).map(n=>this.getErrorMessage(n,e[n],t.errors)).join("<br>")}getErrorMessage(t,e,n){if(n){const e=n[t];if(e)return e}return["binaryMin","binaryMax"].includes(t)?e(this.i18n):this.i18n("required"===t?"This field is required.":"An error occurred.")}onSubmitForm(t){this.fields.filter(t=>"binary"===t.type).map(t=>t.name).forEach(e=>{const n=t[e];n&&(t[e]=this.formatter.toBytes(n))}),this.bsModalRef.hide(),r.isFunction(this.onSubmit)&&this.onSubmit(t)}}},Rm1S:function(t,e,n){"use strict";var a=n("xluM"),r=n("14Sl"),i=n("glrk"),s=n("UMSQ"),u=n("V37c"),o=n("HYAF"),l=n("3Eq5"),d=n("iqWW"),c=n("FMNM");r("match",(function(t,e,n){return[function(e){var n=o(this),r=null==e?void 0:l(e,t);return r?a(r,e,n):new RegExp(e)[t](u(n))},function(t){var a=i(this),r=u(t),o=n(e,a,r);if(o.done)return o.value;if(!a.global)return c(a,r);var l=a.unicode;a.lastIndex=0;for(var f,h=[],g=0;null!==(f=c(a,r));){var p=u(f[0]);h[g]=p,""===p&&(a.lastIndex=d(r,s(a.lastIndex),l)),g++}return 0===g?null:h}]}))},RnhZ:function(t,e,n){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="RnhZ"},RvDp:function(t,e,n){var a=n("MOZO"),r=n("PHub"),i=n("0GLT"),s=n("Uies"),u=n("KNDS"),o=n("Wv1A");t.exports=function(t,e,n){for(var l=-1,d=(e=a(e,t)).length,c=!1;++l<d;){var f=o(e[l]);if(!(c=null!=t&&n(t,f)))break;t=t[f]}return c||++l!=d?c:!!(d=null==t?0:t.length)&&u(d)&&s(f,d)&&(i(t)||r(t))}},S6ln:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return a+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return a+(1===t?"dan":"dana");case"MM":return a+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return a+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},S7zO:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LvDl"),r=n("oxzT");n("vCyI"),n("jKX/");class i{constructor(){this.btnColor="secondary",this.dropDownActions=[],this.icons=r.a}ngOnInit(){this.removeActionsWithNoPermissions(),this.updateDropDownActions()}toClassName(t){return t.replace(/ /g,"-").replace(/[^a-z-]/gi,"").toLowerCase()}removeActionsWithNoPermissions(){if(!this.permission)return void(this.tableActions=[]);const t=Object.keys(this.permission).filter(t=>this.permission[t]);this.tableActions=this.tableActions.filter(e=>t.includes(e.permission))}updateDropDownActions(){this.dropDownActions=this.tableActions.filter(t=>t.visible?t.visible(this.selection):t)}getCurrentButton(){if(this.dropDownOnly)return;let t=this.dropDownActions.find(t=>this.showableAction(t));return!t&&this.dropDownActions.length>0&&(t=this.dropDownActions[0]),t}showableAction(t){const e=t.canBePrimary,n=this.selection.hasSingleSelection,a="create"===t.permission?!n:n;return e&&e(this.selection)||!e&&a}useRouterLink(t){if(t.routerLink&&!this.disableSelectionAction(t))return a.isString(t.routerLink)?t.routerLink:t.routerLink()}disableSelectionAction(t){const e=t.disable;if(e)return Boolean(e(this.selection));const n=t.permission,a=this.selection.hasSingleSelection&&this.selection.first();return Boolean(["update","delete"].includes(n)&&(!a||a.cdExecuting))}showDropDownActions(){return this.updateDropDownActions(),this.dropDownActions.length>1}useClickAction(t){return!this.disableSelectionAction(t)&&t.click&&t.click()}useDisableDesc(t){if(t.disable){const e=t.disable(this.selection);return a.isString(e)?e:void 0}}}},"SB+Q":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return encodeURIComponent(t)}}},SDUG:function(t,e,n){var a=n("PjNX"),r=n("FGWQ");t.exports=function(t,e){return t&&a(t,e,r)}},SFrS:function(t,e,n){var a=n("2oRo"),r=n("xluM"),i=n("Fib7"),s=n("hh1v"),u=a.TypeError;t.exports=function(t,e){var n,a;if("string"===e&&i(n=t.toString)&&!s(a=r(n,t)))return a;if(i(n=t.valueOf)&&!s(a=r(n,t)))return a;if("string"!==e&&i(n=t.toString)&&!s(a=r(n,t)))return a;throw u("Can't convert object to primitive value")}},SFxW:function(t,e,n){!function(t){"use strict";var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10;return t+(e[n]||e[t%100-n]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},SPu7:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="pl-PL">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Rozwiń</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Pulpit</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klaster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosty</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Usługi</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD-ki</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfiguracja</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH mapa</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Zarządca modułów</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Logi</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pule</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Dostęp blokowy</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Obrazy</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Kopia lustrzana</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>Sieciowy system plików NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systemy plików</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Dostęp obiektowy</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Demony</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Wiadra</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Wybierz język</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Trwa ładowanie danych...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Wybór czasu Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Zresetuj ustawienia</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Wstecz</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Błąd wczytywania danych.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>Wybrane</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>Znaleziono</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>Razem</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nazwa</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Opis</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Długi opis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Domyślna</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Domyślny demon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Wartości</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Zapisz</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>widok CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Ładowanie...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nazwa hosta</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Tak, jestem pewny.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Anuluj</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zamknij</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista hostów</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Całkowita wydajność</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nie znaleziono wejść</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Logi z klastra </target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Audyt logów</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Ładowanie konfiguracji.</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Nie można załadować konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edytuj moduł zarządzania</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Wpisana wartość nie jest poprawnym UUID, np. 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Wpisana wartość musi być poprawnym adresem IP</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Podana wartość musi być liczbą</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Podana wartość musi być liczbą albo dziesiętną.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Zaktualizuj</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Klaster ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Zmodyfikowana monmapa</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>epoka monmap</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kworum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kworum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>wymagany con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>Wymagane mon </target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>W kworum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nie w kworum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Dodaj</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funkcje</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flagi OSD w całym klastrze</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Zatwierdź</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Zaawansowane...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorytet odzyskiwania OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorytet</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Dostosuj wartości priorytetowe</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>To pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Wartość powinna być pomiędzy 0 a 1. </target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ponowne ważenie</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, wybierz, 1 {Głębokość} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, wybierz, 1 {głębokość} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista OSD-ków </target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Wartość</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edytuj</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Usuń</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdrowie</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statystyki</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klienci</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Każdy klient ma dostęp</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresy</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Obowiązkowe pole</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Musi zawierać jedną albo więcej ,rozdzielonych przecinkiem, wartości </target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Na przykład: </target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ dostępu</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Dodaj klientów </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Brak dostępnego klastra -- </target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Wybierz klaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Dodaj demona</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Pamięć Podręczna</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Brak danych puli -- </target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Wybierz pamięć podręczną -- </target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Użytkownik dostępu obiektowego</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Brak dostępnych użytkowników -- </target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Wybierz użytkownika dostępu obiektowego -- </target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS Użytkownik ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Brak dostępnych klientów -- </target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Wybierz klienta cephx -- </target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nazwa CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etykieta bezpieczeństwa</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Uruchom etykietę bezpieczeństwa</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Ścieżka CephFS </target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Ścieżka powinna zaczynać się z \'/\' i następne może być słowo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Nowy katalog będzie stworzony. </target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Ścieżka</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Ścieżką może być tylko \'/\' albo słowo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Nowe wiadro będzie stworzone </target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protokół NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klient może nie montować podkatalogów ( np. jeśli Tag = foo, klient może nie montować foo/baz) </target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Używając różnych opcji Tagu, ta sama Ścieżka może być wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Używając różnych opcji Pseudo, ta sama Ścieżka może być wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Brak dostępnych typów dostępu --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Wybierz typ dostępu --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>- Brak squasha -</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Wybierz, jakiego rodzaju identyfikacja użytkownika ma być przeprowadzana --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protokół Transportu </target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Witamy w Cephie! </target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nazwa użytkownika jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Hasło jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Zaloguj</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Przepraszam, użytkownik nie istnieje w  Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Zakazany</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Przepraszam, nie masz dostępu do tego czego szukasz. </target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Konfiguracja RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Usuń wartość konfiguracji lokalnej. Wartość konfiguracji rodzica będzie odziedziczona i zostanie użyta zamiast tej.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minimalna wartość wynosi 0.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista puli</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nazwa może składać się z alfanumerycznych znaków, kresek i podkreśleń.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Wybrana nazwa profilu kodu kasowania jest już używana.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Wtyczka</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Ramka danych (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Musi być większa bądź równa 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Kodowanie kawałka (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Musi być większa bądź równa 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estymator trwałości (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalność  (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domena niepowodzenia Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalność Crusha</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nic</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technika</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Rozmiar pakietu</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>korzeń Crusha</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>urządzenie klasy Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>którykolwiek</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Katalog</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nazwa...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Wybrana nazwa Ceph pula jest już użyta.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Typ pula</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Wybierz typ pula --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupa umieszczenia</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Przynajmniej jedna grupa umieszczenia jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Twój klaster nie obsługuje tylu PG. Skalkuluj proszę potrzebną ilość PG.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Pomoc obliczeniowa</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikowany rozmiar</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flagi</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC Nadpisuje</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Zastosowania</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Skasuj profil kodu.</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Brak profilu kasowania --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Wybierz profil kodu wymazywania --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>zbiór zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Wybierz zasadę Crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>zasada Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Kroki Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Kompresja</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Tryb</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorytm</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Brak algorytmu kompresji wymazywania --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>np. 128 KB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Wartość powinna być większa niż 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maksymalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>np. 512 KB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Wartość powinna być większa niż minimalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Stosunek</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Skompresowany stosunek</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Wartość powinna być pomiędzy 0.0, a 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>np. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Szczegóły</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Szczegóły wydajności</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Szczegóły poziomów pamięci podręcznej</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Przenieś obraz do kosza</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Zabezpieczenie wygasa w </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NIEZABEZPIECZONY </target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Zły format daty. Proszę używać "RRRR-MM-DD GG:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Ochrona już wygasła. Proszę wybrać przyszłą datę lub zostawić pustą.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Przenieś obraz</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Przegląd</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Obiekty docelowe</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Uwierzytelnianie wykrywania</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Użytkownik</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nazwy użytkowników muszą mieć długość od 8 do 64 znaków i \nmogą zawierać jedynie litery, \'.\', \'@\', \'-\', \'_\' lub \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Hasło</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Wspólny użytkownik </target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Wspólne hasło</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Dostępne informacje: </target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>obiekty docelowe iSCSI niedostępne </target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pul</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Dane pula</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Utworzony</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Rozmiar</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Obiekty</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Rozmiar obiektu</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Zaopatrzony</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>Niedostępny</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Całkowite rezerwy</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Jednostka maskowana</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Licznik maskowania</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Rodzic</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefiks nazwy bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Zamówienie</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Migawki</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>To ustawienie zastępuję wartość globalną.</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globalne</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>To jest globalna wartość. Dla tego obrazu nie ustawiono żadnej wartości dla tej opcji.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' and \'@\' nie są dozwolone.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Brak dostępnych rbd puli --  </target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Wybierz pul --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Użyj dedykowanych danych pul </target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Dane pul</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Dedykowany pul, który przechowuje dane obiektowe z RBD</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Musisz zwiększyć rozmiar.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Zaawansowane</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Maskowanie</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednostka pasków</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Wybierz jednostkę pasków -- </target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Pole jest wymagane, ponieważ licznik pasków jest zdefiniowany. </target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Jednostka pasków jest większa niż rozmiar obiektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Licznik pasków </target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Pole jest wymagane, ponieważ jednostka pasków jest zdefiniowana! </target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Licznik pasków musi być większy od 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Zaraz się wycofasz. </target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Usuń Śmieci</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Wszystkie</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pul:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nazwa pula</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Przywróć obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Przywróć</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>Wpisz nazwe nowego obrazu i kliknij. </target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nowa Nazwa</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Wygasły w</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Zabezpieczony do</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Zmiana tych parametrów z domyślnych wartości przeważnie nie jest potrzebna.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ustawienia</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Tylny koniec przechowywania</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Potwierdź</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Ustawienia zaawansowane</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Nazwa IQN obiektu docelowego iSCSI</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Błędna składnia nazwy IQN.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Na przykład: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Więcej informacji</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Ten obiekt docelowy  zmodyfikował zaawansowane ustawienia.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portale</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Dodaj portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Ten obraz zmodyfikował ustawienia. </target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Dodaj obraz.</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Uwierzytelnianie ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inicjatory iSCSI</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inicjator iSCSI</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Klient IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Inicjator IQN powinien być unikalny.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nazwy użytkowników muszą mieć długość od 8 do 64 znaków i mogą zawierać jedynie litery,  \'.\', \'@\', \'-\', \'_\' lub  \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Inicjator iSCSI należą do grupy. Obrazy będą skonfigurowane w grupie. </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Brak dodanych pozycji.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Dodaj inicjator iSCSI</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupy</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupa</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Dodaj grupę</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Kosz</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Zagadnienia</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronizacja</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Gotowy</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Tryb edycji lustrzanego pula</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Sparowany klaster musi być usunięty  przed wyłączeniem lustra. </target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, wybierz, edytuj{Edytuj} inaczej {Dodaj} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nazwa Klastra</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Nazwa klastra jest niepoprawna </target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>ID CephX nie jest poprawne.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adres monitora </target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Adresy rozdzielane przecinkami... </target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Adres monitora nie jest poprawny.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Klucz CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Klucz zakodowany w Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Klucz CephX musi być zakodowany w Base64/</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Liczniki wydajności nie są dostępne</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista demonów</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Liczniki wydajności</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Ładowanie wiadra danych</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Number ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Wartość nie jest poprawna.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Wybrana nazwa już jest użyta.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Właściciel</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Wybierz użytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Uaktywniony</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Typ indeksu</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Zasada umieszczania</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Znacznik</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Maksymalny znacznik</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Wersja</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Główna wersja</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Czas modyfikacji</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Strefa </target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>kontyngent wiadra</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maksymalny rozmiar</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Nielimitowany</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Maksimum obiektów</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nazwa użytkownika</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Wybierz nazwę użytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Auto-generowany klucz</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Klucz dostępu</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajny klucz </target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Pełne imię </target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Adres email</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Zawieszony</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Maksimum wiader</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>pod-użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Zdolności</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Limit użytkownika</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Pokaż</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Klucze</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- wybierz typ --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Pozwolenie </target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Wybierz pozwolenie --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>pod-użytkownik</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Wybrane ID pod-użytkownika jest już użyte.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>odczyt, zapis</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pełny</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Szybki klucz</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Auto-generowany sekret</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Ładowanie danych użytkownika...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Nie można załadować danych użytkownika.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Wybrane ID użytkownika jest już użyte.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ten adres email nie jest poprawny.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Wybrany adres email jest już użyty.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Max. wiader </target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Wyłączony</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Zwyczaj</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>klucz S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nie ma pod-użytkowników.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3 (prosty serwis przechowywania) </target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Nie ma kluczy.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Szybki</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nie ma zdolności. </target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Nielimitowany rozmiar</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. rozmiar</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Nielimitowane obiekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Max. obiektów</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Podana wartość musi być &gt;= 0</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Opis...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Pozwolenia</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potwierdź hasło</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Potwierdzające hasło nie pokrywa się z hasłem.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Email</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Niepoprawny email.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Zamierzasz usunąć uprawnienia „odczytu / aktualizacji użytkownika” od własnego użytkownika.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Jeśli kontynuujesz, nie będziesz mógł dodawać albo usuwać role od użytkowników.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Jesteś pewny, że chcesz kontynuować? </target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Pomoc</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentacja</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>Interfejs API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>O</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Ustawienia Pulpitu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Zarządzanie użytkownikami</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Zalogowany użytkownik</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Wyloguj</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atrybuty (mapa OSD-ków)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Niedostępne metadane</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadane</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Licznik wydajności</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Pisze</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Czyta</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Obecne wartości </target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Źródło </target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Poziom</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Może być aktualizowany w czasie wykonywania (edytowalny)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tagi</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Wartości enumerowane </target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Zobacz także </target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status klastra</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Zarządzanie demonami</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Obiekty bram </target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Serwery metadanych</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Bramy iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>Klient IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Przepustowość klienta</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Odczyt/Zapis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Przepustowość odzyskiwania</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Szoruj</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Wydajność</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Pojemność rzędu</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PG-y na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Pojemność</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Szeregi</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Obecny</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Zaktualizowane uwierzytelnianie wykrywania</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Brak dostępnych portali.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nie ma dostępnych obrazów. </target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Nie ma dostępnych obrazów. Proszę się upewnić, że dodajesz obraz do obiektu docelowego. </target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Nie ma dostępnych inicjatorów iSCSI. Proszę upewnić się, że dodajesz inicjator iSCSI do obiektu docelowego.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>obiekt docelowy iSCSI</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stan</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Odczyt bajtów </target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Zapis bajtów</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Odczyt Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Zapis Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Od</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instancja</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Zagadnienie </target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Progres</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Tryb Edycji</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Dodaj parowanie </target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Edytuj parowanie</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Usuń parowanie</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Lider</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Lokalny</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Zdalny</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>lustrzane parowanie</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Klucz</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Głębokie spłaszczenie</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Warstwowanie </target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Wyłączna blokada</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa obiektów (wymaga wyłącznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Kronikowanie  (wymaga wyłącznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NIEZABEZPIECZONY </target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Wycofywanie migawek RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Wycofanie</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>migawka RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Usunięty o </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stan</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>wersja</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>administrator</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Czuwanie demona </target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Ranga</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Demon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktywność</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>centrale</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>i-węzły</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Użycie</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Zaktualizowany</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Wartość może być zaktualizowana w czasie wykonywania . </target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Demony/klienci nie pobierają tej wartości z\nbazy danych skonfigurowanego monitora. Nie zezwalamy na ustawienie tej opcji przez \'konfiguracje ceph\nustaw.. \'. Ta opcja powinna być skonfigurowana przez ceph.conf albo przez\nterminal.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Opcja działa tylko podczas startu demona.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Opcja dotyczy tylko tworzenia klastra.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Opcja tylko wpływa na tworzenie demona.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Usługa</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Obecna wartość</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Edytowalny</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Włączyć</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Wyłączyć</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Ponowne łączenie, proszę czekać</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Adres publiczny</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otwarte sesje</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Nie w </target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD-ki, które zostały oznaczone jako poza, nie będą oznaczone ponownie jako w gdy zostaną uruchomion</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Nie poza</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD-ki nie będą automatycznie oznaczone jako poza po konfiguracji interwału</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nie powstały </target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD-ki nie mogą startować</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nie upadły</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Raport z niepowodzenia OSD jest ignorowany, także monitory nie oznaczą OSD jako upadłego. </target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pauza </target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pauzuje czytanie i zapisywanie</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nie szoruj</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Szorowanie jest wyłączone</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nie ma głębokiego szorowania</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Głębokie szorowanie jest wyłączone</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Brak zasypywania</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasypywanie PG jest zawieszone</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nie przywrócono</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Przywrócenie PGy jest zawieszone </target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Sortuj bitowo</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Użyj sortowania bitowego</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Usuń snap katalogi</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD-ki zmieniły snapsety</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Odzyskaj usunięte</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Podczas zdrowienia zastosowano usunięcie zamiast parowania</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Twardy limit logów PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Ustawia twardy limit na długość logów PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Zaktualizowane flagi OSD-ków</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD-ik</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>poza</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>w</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>upadły</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Zaznacz</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>Stracony OSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>Zaznaczony jako stracony</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Czyść</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>Oczyszczony</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>Zniszcz</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>Zniszczony</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>Usuń</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG-y</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Czytanie bajtów</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapis bajtów </target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Czytanie ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Zapis ops</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max zasypywanie</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Max aktywność wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Max pojedynczy start wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Uśpienie wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Praca</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>surowość</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Wystartowany</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Użyty</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dostępny</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Czyść</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Działający</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Ostrzeżenie </target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Nieznany</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>Podniesiony</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>brak systemów plików</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktywny</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>Rezerwa</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>niedostępny</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktywny demon</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kworum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Usługa NFS Ganesha nie jest skonfigurowana</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Użytkownik CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>system plików CephFS </target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(Odziedziczyło z globalnej konfiguracji)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>Odziedziczyło z globalnej konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Wybierz, jakiego rodzaju identyfikacja użytkownika ma być przeprowadzana -- </target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Brak dostępnym demonów</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Tryb pamięci podręcznej</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min wiek eksmisji</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min wiek wyrównania </target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max bajtów obiektu docelowego </target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max obiektów docelowych</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nie dodano żadnego zastosowania</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Osiągnięto limit zastosowań </target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Pul może mieć maksymalnie 4 definicje aplikacji. </target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Dozwolone znaki \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Maksymalna długość wynosi 128 znaków</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtruj lub dodaj zastosowanie</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Dodaj zastosowanie</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>skasuj profil kodu</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Rozmiar repliki</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Ostatnia zmiana</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Skasuj profil zakodowany</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Zbiór zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>wiadro</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Wiadra</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>użytkownik</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Zakres</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Czytaj</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Stwórz</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>System roli </target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Zaktualizuj użytkownika</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Kontynuuj </target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Zostałeś automatycznie wylogowany, ponieważ zostały zmienione twoje role.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Każdy obiekt jest podzielony na części fragmentów danych, każdy jest przechowywany na innym OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Oblicz porcje kodu dla każdego obiektu i przechowuj je na różnych OSD.\n Liczba fragmentów kodujących to również liczba OSD, które mogą zostać wyłączone bez utraty danych.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Wtyczka jerasure jest najbardziej uniwersalną i elastyczną wtyczką,\n jest to również domyślne ustawienie dla pui kodowanych przez Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Bardziej elastyczną techniką jest reed_sol_van: wystarczy ustawić k\n oraz m. Technika cauchy_good może być szybsza, ale musisz wybrać rozmiar pakietu\n ostrożnie. Wszystkie reed_sol_r6_op, liberation, blaum_roth, liber8tion są odpowiednikami RAID6\n w tym sensie, że mogą być skonfigurowane tylko z m = 2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Kodowanie będzie wykonywane na pakietach o rozmiarze bajtów naraz.\n Wybór odpowiedniego rozmiaru pakietu jest trudny.\n Dokumentacja jerasure zawiera obszerne informacje na ten temat.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Z wtyczką jerasure, gdy obiekt zakodowany przy użyciu skasowania jest przechowywany na \n wielu OSD-kach, odzyskiwanie po utracie jednego OSD wymaga odczytu ze wszystkich pozostałych.\n Na przykład, jeśli konfiguracja skryptu ma wartość k = 8 ,m = 4 i l=4, utrata jednego OSD wymaga odczytu\n od jedenastu innych do naprawy.\n\n Wtyczka kodu wymazywania lrc tworzy fragmenty o parzystości lokalnej, aby móc je odzyskać\n mniej OSD. Na przykład, jeśli lrc jest skonfigurowane z k = 8, m = 4 i l = 4, zostanie utworzony\n dodatkowy fragment parzystości na każde cztery OSD. Gdy jeden OSD zostanie utracone, może to być\n odzyskane tylko z czterema OSD zamiast jedenastu.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Grupuj fragmenty kodu i danych w zestawy lokalizacji wielkości. Na przykład,\n dla k = 4 i m = 2, gdy lokalność = 3 tworzone są dwie grupy po trzy. Każdy zestaw może\n odzyskać bez czytania kawałków z innego zestawu.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Typ wiadra CRUSH, w którym zdefiniowano każdy zestaw porcji\n przez l zostaną zapisane. Na przykład, jeśli jest ustawiony na rack, każda grupa l porcji będzie\n umieszczona w innym raku. Służy do utworzenia kroku reguły CRUSH, takiego jak krok wyboru\n racka. Jeśli nie jest ustawiony, nie ma takiego grupowania.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Wtyczka isa zawiera bibliotekę ISA. Działa tylko na procesorach Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Wtyczka ISA jest dostępna w dwóch formach Reed Solomon.\n Jeśli ustawiono reed_sol_van, jest to Vandermonde, jeśli ustawiono cauchy, to jest to Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Wtyczka shec zawiera wiele bibliotek SHEC.\n Pozwala ceph odzyskać dane bardziej efektywnie niż kody Reeda Solomona.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Liczba kawałków parzystości, z których każdy zawiera każdą porcję danych w swoim zakresie obliczeń. Liczba jest używana jako estymator trwałości. Na przykład, jeśli c = 2,\n 2 OSD można wyłączyć bez utraty danych.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nazwa wiadra crush jest użyte do pierwszego kroku reguły CRUSH.\nNa przykład krok jest domyślny.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Upewnij się, że żadne dwie porcje nie znajdują się w wiadrze z tą samą awarią\n domeny. Na przykład, jeśli domena awarii jest hostem, nie zostaną na niej zapisane dwie porcje\n hosta. Służy do utworzenia kroku reguły CRUSH, takiego jak krok wyboru hosta.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Ogranicz umieszczanie do urządzeń określonej klasy\n (np. ssd lub hdd), używając nazw klas urządzeń zgniatających na mapie CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Ustaw nazwę katalogu, z którego ładowana jest wtyczka kodu kasowania.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Dozwolone są wszystkie operacje</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Dozwolone są operacje, które nie modyfikują serweru</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Operacje odczytu i zapisu są zakazane, wszystkie inne dozwolone</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Operacje odczytu i zapisu, oraz wszystkie operacje modyfikujące atrybuty albo katalogi są zakazane </target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Brak dostępu w ogóle</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- wybierz priorytet -- </target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Niski</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Wysoki</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informacja</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Ostatnie 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Ostatnie 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Ostatnie 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Ostatnia 1 godzina (domyślnie)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Ostatnie 3 godziny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Ostatnie 6 godzin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Ostatnie 12 godzin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Ostatnie 24 godziny</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Wczoraj</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Dzisiaj</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Do tej pory dzisiaj</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Przedwczoraj</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Ostatnie 2 dni</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Tego dnia tydzień temu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Poprzedni tydzień</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Ten tydzień </target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Do tej pory w tym tygodniu</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Ostatnie 7 dni</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Poprzedniego miesiąca</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>ten miesiąc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Do tej pory w tym miesiącu</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Ostatnie 30 dni</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Ostatnie 90 dni</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Ostatnie 6 miesięcy</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Ostatni 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Poprzedniego roku</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Bieżącego roku</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Do tej pory bieżącego roku</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Ostatnie 2 lata</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Ostatnie 5 lat</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nie wybrano żadnej pozycji</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Odznacz pozycję, żeby wybrać ponownie</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Osiągnięto limit wyboru. </target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtr tagów.</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Dodaj odznakę</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Brak dostępnych pozycji.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Sklonuj</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopia</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Szoruj głęboko</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Zniszcz</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Spłaszcz</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>zaznacz jako upadły</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Zaznacz jako w </target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Zaznacz jako stracony</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Zaznacz jako poza</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Zabezpiecz</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Zmień nazwę</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Przywróć</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Przenieś do kosza</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Odbezpiecz </target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Usunięty</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Sklonowano</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Skopiowano </target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Spłaszczony</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Oczyszczony</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Przywrócony</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Wycofaj</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Tak</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Nie</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Jakość serwisu</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Pożądany limit IO bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Pożądany limit operacji IO na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>limit odczytu BPS</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Pożądany limit odczytu bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>limit  odczytu IOPS</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Pożądany limit operacji odczytu na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit zapisu BPS</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Pożądany limit zapisu bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit zapisu IOPS</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Pożądany limit operacji zapisu na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Wiązka BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Żądana granica serii IO bajtów.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Wiązka IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Żądana granica serii operacji IO.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Odczyt wiązki BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Żądana granica serii odczytanych bajtów.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Odczyt wiązki IOPS</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target> Żądana granica serii operacji odczytu.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Zapis wiązki BPS</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Żądana granica serii bajtów zapisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Zapis wiązki IOPS</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Żądana granica serii operacji zapisu.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Wykonywanie </target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>Wykonaj</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Wykonany</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>Nieznane zadanie</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Tworzenie</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>Utwórz</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aktualizowanie </target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>Zaktualizuj</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Usuwanie</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Klonowanie</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>Sklonuj </target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kopiowanie </target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>Kopiuj</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Spłaszczanie</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>Spłaszcz</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Wycofywanie </target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>Wycofanie</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Przenoszenie</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>Przenieś</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Przeniesiono</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Nie znaleziono obrazu.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Przywracanie</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>Przywróć </target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>oczyszczać</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>oczyść</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>Wszystkie pule</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Nie można wyłączyć lustrzenia ponieważ zawiera parowanie.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},SQuY:function(t,e,n){var a=n("Dd78"),r=n("Tq0f"),i=n("lPUB"),s=n("3ENo"),u=n("wgvl");function o(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}o.prototype.clear=a,o.prototype.delete=r,o.prototype.get=i,o.prototype.has=s,o.prototype.set=u,t.exports=o},STAE:function(t,e,n){var a=n("LQDL"),r=n("0Dky");t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},SVse:function(t,e,n){"use strict";n.r(e),n.d(e,"ɵangular_packages_common_common_c",(function(){return ae})),n.d(e,"ɵangular_packages_common_common_h",(function(){return At})),n.d(e,"ɵangular_packages_common_common_g",(function(){return Ct})),n.d(e,"ɵangular_packages_common_common_f",(function(){return Nt})),n.d(e,"ɵangular_packages_common_common_k",(function(){return Qt})),n.d(e,"ɵangular_packages_common_common_j",(function(){return Jt})),n.d(e,"ɵangular_packages_common_common_i",(function(){return $t})),n.d(e,"ɵangular_packages_common_common_a",(function(){return ft})),n.d(e,"ɵangular_packages_common_common_b",(function(){return bt})),n.d(e,"ɵangular_packages_common_common_e",(function(){return Se})),n.d(e,"ɵangular_packages_common_common_d",(function(){return Ke})),n.d(e,"ɵregisterLocaleData",(function(){return mt})),n.d(e,"registerLocaleData",(function(){return mt})),n.d(e,"formatDate",(function(){return K})),n.d(e,"formatCurrency",(function(){return ut})),n.d(e,"formatNumber",(function(){return lt})),n.d(e,"formatPercent",(function(){return ot})),n.d(e,"NgLocaleLocalization",(function(){return pt})),n.d(e,"NgLocalization",(function(){return ht})),n.d(e,"Plural",(function(){return g})),n.d(e,"NumberFormatStyle",(function(){return h})),n.d(e,"FormStyle",(function(){return p})),n.d(e,"TranslationWidth",(function(){return b})),n.d(e,"FormatWidth",(function(){return m})),n.d(e,"NumberSymbol",(function(){return y})),n.d(e,"WeekDay",(function(){return v})),n.d(e,"getNumberOfCurrencyDigits",(function(){return G})),n.d(e,"getCurrencySymbol",(function(){return V})),n.d(e,"getLocaleDayPeriods",(function(){return _})),n.d(e,"getLocaleDayNames",(function(){return T})),n.d(e,"getLocaleMonthNames",(function(){return w})),n.d(e,"getLocaleId",(function(){return x})),n.d(e,"getLocaleEraNames",(function(){return O})),n.d(e,"getLocaleWeekEndRange",(function(){return I})),n.d(e,"getLocaleFirstDayOfWeek",(function(){return S})),n.d(e,"getLocaleDateFormat",(function(){return N})),n.d(e,"getLocaleDateTimeFormat",(function(){return R})),n.d(e,"getLocaleExtraDayPeriodRules",(function(){return M})),n.d(e,"getLocaleExtraDayPeriods",(function(){return q})),n.d(e,"getLocalePluralCase",(function(){return D})),n.d(e,"getLocaleTimeFormat",(function(){return C})),n.d(e,"getLocaleNumberSymbol",(function(){return A})),n.d(e,"getLocaleNumberFormat",(function(){return k})),n.d(e,"getLocaleCurrencyName",(function(){return L})),n.d(e,"getLocaleCurrencySymbol",(function(){return E})),n.d(e,"ɵparseCookieValue",(function(){return yt})),n.d(e,"CommonModule",(function(){return $e})),n.d(e,"DeprecatedI18NPipesModule",(function(){return Je})),n.d(e,"NgClass",(function(){return Lt})),n.d(e,"NgClassBase",(function(){return Et})),n.d(e,"NgForOf",(function(){return Mt})),n.d(e,"NgForOfContext",(function(){return Pt})),n.d(e,"NgIf",(function(){return jt})),n.d(e,"NgIfContext",(function(){return Ft})),n.d(e,"NgPlural",(function(){return Ht})),n.d(e,"NgPluralCase",(function(){return Ut})),n.d(e,"NgStyle",(function(){return ee})),n.d(e,"NgStyleBase",(function(){return te})),n.d(e,"NgSwitch",(function(){return Bt})),n.d(e,"NgSwitchCase",(function(){return zt})),n.d(e,"NgSwitchDefault",(function(){return Yt})),n.d(e,"NgTemplateOutlet",(function(){return ne})),n.d(e,"NgComponentOutlet",(function(){return Dt})),n.d(e,"DOCUMENT",(function(){return Ze})),n.d(e,"AsyncPipe",(function(){return Ae})),n.d(e,"DatePipe",(function(){return Pe})),n.d(e,"I18nPluralPipe",(function(){return qe})),n.d(e,"I18nSelectPipe",(function(){return je})),n.d(e,"JsonPipe",(function(){return Fe})),n.d(e,"LowerCasePipe",(function(){return ke})),n.d(e,"CurrencyPipe",(function(){return Ye})),n.d(e,"DecimalPipe",(function(){return Be})),n.d(e,"PercentPipe",(function(){return ze})),n.d(e,"SlicePipe",(function(){return We})),n.d(e,"UpperCasePipe",(function(){return De})),n.d(e,"TitleCasePipe",(function(){return Le})),n.d(e,"KeyValuePipe",(function(){return Ve})),n.d(e,"DeprecatedDatePipe",(function(){return ve})),n.d(e,"DeprecatedCurrencyPipe",(function(){return Oe})),n.d(e,"DeprecatedDecimalPipe",(function(){return Te})),n.d(e,"DeprecatedPercentPipe",(function(){return we})),n.d(e,"ɵPLATFORM_BROWSER_ID",(function(){return Qe})),n.d(e,"ɵPLATFORM_SERVER_ID",(function(){return Xe})),n.d(e,"ɵPLATFORM_WORKER_APP_ID",(function(){return tn})),n.d(e,"ɵPLATFORM_WORKER_UI_ID",(function(){return en})),n.d(e,"isPlatformBrowser",(function(){return nn})),n.d(e,"isPlatformServer",(function(){return an})),n.d(e,"isPlatformWorkerApp",(function(){return rn})),n.d(e,"isPlatformWorkerUi",(function(){return sn})),n.d(e,"VERSION",(function(){return un})),n.d(e,"ViewportScroller",(function(){return on})),n.d(e,"ɵNullViewportScroller",(function(){return dn})),n.d(e,"ɵNgClassImplProvider__POST_R3__",(function(){return Rt})),n.d(e,"ɵNgClassR2Impl",(function(){return It})),n.d(e,"ɵNgClassImpl",(function(){return St})),n.d(e,"ɵNgStyleImplProvider__POST_R3__",(function(){return Zt})),n.d(e,"ɵNgStyleR2Impl",(function(){return Kt})),n.d(e,"ɵNgStyleImpl",(function(){return Wt})),n.d(e,"ɵngStyleDirectiveDef__POST_R3__",(function(){return Xt})),n.d(e,"ɵngClassDirectiveDef__POST_R3__",(function(){return kt})),n.d(e,"PlatformLocation",(function(){return r})),n.d(e,"LOCATION_INITIALIZED",(function(){return i})),n.d(e,"LocationStrategy",(function(){return s})),n.d(e,"APP_BASE_HREF",(function(){return u})),n.d(e,"HashLocationStrategy",(function(){return d})),n.d(e,"PathLocationStrategy",(function(){return c})),n.d(e,"Location",(function(){return o}));var a=n("8Y7J");class r{}const i=new a.InjectionToken("Location Initialized");class s{}const u=new a.InjectionToken("appBaseHref");class o{constructor(t,e){this._subject=new a.EventEmitter,this._urlChangeListeners=[],this._platformStrategy=t;const n=this._platformStrategy.getBaseHref();this._platformLocation=e,this._baseHref=o.stripTrailingSlash(l(n)),this._platformStrategy.onPopState(t=>{this._subject.emit({url:this.path(!0),pop:!0,state:t.state,type:t.type})})}path(t=!1){return this.normalize(this._platformStrategy.path(t))}getState(){return this._platformLocation.getState()}isCurrentPathEqualTo(t,e=""){return this.path()==this.normalize(t+o.normalizeQueryParams(e))}normalize(t){return o.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,l(t)))}prepareExternalUrl(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)}go(t,e="",n=null){this._platformStrategy.pushState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+o.normalizeQueryParams(e)),n)}replaceState(t,e="",n=null){this._platformStrategy.replaceState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+o.normalizeQueryParams(e)),n)}forward(){this._platformStrategy.forward()}back(){this._platformStrategy.back()}onUrlChange(t){this._urlChangeListeners.push(t),this.subscribe(t=>{this._notifyUrlChangeListeners(t.url,t.state)})}_notifyUrlChangeListeners(t="",e){this._urlChangeListeners.forEach(n=>n(t,e))}subscribe(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})}static normalizeQueryParams(t){return t&&"?"!==t[0]?"?"+t:t}static joinWithSlash(t,e){if(0==t.length)return e;if(0==e.length)return t;let n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e}static stripTrailingSlash(t){const e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)}}function l(t){return t.replace(/\/index.html$/,"")}class d extends s{constructor(t,e){super(),this._platformLocation=t,this._baseHref="",null!=e&&(this._baseHref=e)}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}path(t=!1){let e=this._platformLocation.hash;return null==e&&(e="#"),e.length>0?e.substring(1):e}prepareExternalUrl(t){const e=o.joinWithSlash(this._baseHref,t);return e.length>0?"#"+e:e}pushState(t,e,n,a){let r=this.prepareExternalUrl(n+o.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(t,e,r)}replaceState(t,e,n,a){let r=this.prepareExternalUrl(n+o.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}class c extends s{constructor(t,e){if(super(),this._platformLocation=t,null==e&&(e=this._platformLocation.getBaseHrefFromDOM()),null==e)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=e}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return o.joinWithSlash(this._baseHref,t)}path(t=!1){const e=this._platformLocation.pathname+o.normalizeQueryParams(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?`${e}${n}`:e}pushState(t,e,n,a){const r=this.prepareExternalUrl(n+o.normalizeQueryParams(a));this._platformLocation.pushState(t,e,r)}replaceState(t,e,n,a){const r=this.prepareExternalUrl(n+o.normalizeQueryParams(a));this._platformLocation.replaceState(t,e,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}const f={ADP:[void 0,void 0,0],AFN:[void 0,void 0,0],ALL:[void 0,void 0,0],AMD:[void 0,void 0,0],AOA:[void 0,"Kz"],ARS:[void 0,"$"],AUD:["A$","$"],BAM:[void 0,"KM"],BBD:[void 0,"$"],BDT:[void 0,"৳"],BHD:[void 0,void 0,3],BIF:[void 0,void 0,0],BMD:[void 0,"$"],BND:[void 0,"$"],BOB:[void 0,"Bs"],BRL:["R$"],BSD:[void 0,"$"],BWP:[void 0,"P"],BYN:[void 0,"р.",2],BYR:[void 0,void 0,0],BZD:[void 0,"$"],CAD:["CA$","$",2],CHF:[void 0,void 0,2],CLF:[void 0,void 0,4],CLP:[void 0,"$",0],CNY:["CN¥","¥"],COP:[void 0,"$",0],CRC:[void 0,"₡",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"Kč",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E£"],ESP:[void 0,"₧",0],EUR:["€"],FJD:[void 0,"$"],FKP:[void 0,"£"],GBP:["£"],GEL:[void 0,"₾"],GIP:[void 0,"£"],GNF:[void 0,"FG",0],GTQ:[void 0,"Q"],GYD:[void 0,"$",0],HKD:["HK$","$"],HNL:[void 0,"L"],HRK:[void 0,"kn"],HUF:[void 0,"Ft",2],IDR:[void 0,"Rp",0],ILS:["₪"],INR:["₹"],IQD:[void 0,void 0,0],IRR:[void 0,void 0,0],ISK:[void 0,"kr",0],ITL:[void 0,void 0,0],JMD:[void 0,"$"],JOD:[void 0,void 0,3],JPY:["¥",void 0,0],KHR:[void 0,"៛"],KMF:[void 0,"CF",0],KPW:[void 0,"₩",0],KRW:["₩",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"₸"],LAK:[void 0,"₭",0],LBP:[void 0,"L£",0],LKR:[void 0,"Rs"],LRD:[void 0,"$"],LTL:[void 0,"Lt"],LUF:[void 0,void 0,0],LVL:[void 0,"Ls"],LYD:[void 0,void 0,3],MGA:[void 0,"Ar",0],MGF:[void 0,void 0,0],MMK:[void 0,"K",0],MNT:[void 0,"₮",0],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",0],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"₦"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:[void 0,"₱"],PKR:[void 0,"Rs",0],PLN:[void 0,"zł"],PYG:[void 0,"₲",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"₽"],RUR:[void 0,"р."],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"£"],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"£"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"£",0],THB:[void 0,"฿"],TMM:[void 0,void 0,0],TND:[void 0,void 0,3],TOP:[void 0,"T$"],TRL:[void 0,void 0,0],TRY:[void 0,"₺"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,0],UAH:[void 0,"₴"],UGX:[void 0,void 0,0],USD:["$"],UYI:[void 0,void 0,0],UYU:[void 0,"$"],UZS:[void 0,void 0,0],VEF:[void 0,"Bs"],VND:["₫",void 0,0],VUV:[void 0,void 0,0],XAF:["FCFA",void 0,0],XCD:["EC$","$"],XOF:["CFA",void 0,0],XPF:["CFPF",void 0,0],YER:[void 0,void 0,0],ZAR:[void 0,"R"],ZMK:[void 0,void 0,0],ZMW:[void 0,"ZK"],ZWD:[void 0,void 0,0]},h=function(){var t={Decimal:0,Percent:1,Currency:2,Scientific:3};return t[t.Decimal]="Decimal",t[t.Percent]="Percent",t[t.Currency]="Currency",t[t.Scientific]="Scientific",t}(),g=function(){var t={Zero:0,One:1,Two:2,Few:3,Many:4,Other:5};return t[t.Zero]="Zero",t[t.One]="One",t[t.Two]="Two",t[t.Few]="Few",t[t.Many]="Many",t[t.Other]="Other",t}(),p=function(){var t={Format:0,Standalone:1};return t[t.Format]="Format",t[t.Standalone]="Standalone",t}(),b=function(){var t={Narrow:0,Abbreviated:1,Wide:2,Short:3};return t[t.Narrow]="Narrow",t[t.Abbreviated]="Abbreviated",t[t.Wide]="Wide",t[t.Short]="Short",t}(),m=function(){var t={Short:0,Medium:1,Long:2,Full:3};return t[t.Short]="Short",t[t.Medium]="Medium",t[t.Long]="Long",t[t.Full]="Full",t}(),y=function(){var t={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};return t[t.Decimal]="Decimal",t[t.Group]="Group",t[t.List]="List",t[t.PercentSign]="PercentSign",t[t.PlusSign]="PlusSign",t[t.MinusSign]="MinusSign",t[t.Exponential]="Exponential",t[t.SuperscriptingExponent]="SuperscriptingExponent",t[t.PerMille]="PerMille",t[t.Infinity]="Infinity",t[t.NaN]="NaN",t[t.TimeSeparator]="TimeSeparator",t[t.CurrencyDecimal]="CurrencyDecimal",t[t.CurrencyGroup]="CurrencyGroup",t}(),v=function(){var t={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6};return t[t.Sunday]="Sunday",t[t.Monday]="Monday",t[t.Tuesday]="Tuesday",t[t.Wednesday]="Wednesday",t[t.Thursday]="Thursday",t[t.Friday]="Friday",t[t.Saturday]="Saturday",t}();function x(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].LocaleId]}function _(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].DayPeriodsFormat],r[a["ɵLocaleDataIndex"].DayPeriodsStandalone]],e);return j(i,n)}function T(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].DaysFormat],r[a["ɵLocaleDataIndex"].DaysStandalone]],e);return j(i,n)}function w(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].MonthsFormat],r[a["ɵLocaleDataIndex"].MonthsStandalone]],e);return j(i,n)}function O(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].Eras],e)}function S(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].FirstDayOfWeek]}function I(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].WeekendRange]}function N(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].DateFormat],e)}function C(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].TimeFormat],e)}function R(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].DateTimeFormat],e)}function A(t,e){const n=Object(a["ɵfindLocaleData"])(t),r=n[a["ɵLocaleDataIndex"].NumberSymbols][e];if(void 0===r){if(e===y.CurrencyDecimal)return n[a["ɵLocaleDataIndex"].NumberSymbols][y.Decimal];if(e===y.CurrencyGroup)return n[a["ɵLocaleDataIndex"].NumberSymbols][y.Group]}return r}function k(t,e){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].NumberFormats][e]}function E(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].CurrencySymbol]||null}function L(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].CurrencyName]||null}const D=a["ɵgetLocalePluralCase"];function P(t){if(!t[a["ɵLocaleDataIndex"].ExtraData])throw new Error(`Missing extra locale data for the locale "${t[a["ɵLocaleDataIndex"].LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function M(t){const e=Object(a["ɵfindLocaleData"])(t);return P(e),(e[a["ɵLocaleDataIndex"].ExtraData][2]||[]).map(t=>"string"==typeof t?F(t):[F(t[0]),F(t[1])])}function q(t,e,n){const r=Object(a["ɵfindLocaleData"])(t);P(r);const i=j([r[a["ɵLocaleDataIndex"].ExtraData][0],r[a["ɵLocaleDataIndex"].ExtraData][1]],e)||[];return j(i,n)||[]}function j(t,e){for(let n=e;n>-1;n--)if(void 0!==t[n])return t[n];throw new Error("Locale data API: locale data undefined")}function F(t){const[e,n]=t.split(":");return{hours:+e,minutes:+n}}function V(t,e,n="en"){const r=function(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].Currencies]}(n)[t]||f[t]||[],i=r[1];return"narrow"===e&&"string"==typeof i?i:r[0]||t}function G(t){let e;const n=f[t];return n&&(e=n[2]),"number"==typeof e?e:2}const B=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,z={},Y=/((?:[^GyMLwWdEabBhHmsSzZO']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,H=function(){var t={Short:0,ShortGMT:1,Long:2,Extended:3};return t[t.Short]="Short",t[t.ShortGMT]="ShortGMT",t[t.Long]="Long",t[t.Extended]="Extended",t}(),U=function(){var t={FullYear:0,Month:1,Date:2,Hours:3,Minutes:4,Seconds:5,FractionalSeconds:6,Day:7};return t[t.FullYear]="FullYear",t[t.Month]="Month",t[t.Date]="Date",t[t.Hours]="Hours",t[t.Minutes]="Minutes",t[t.Seconds]="Seconds",t[t.FractionalSeconds]="FractionalSeconds",t[t.Day]="Day",t}(),W=function(){var t={DayPeriods:0,Days:1,Months:2,Eras:3};return t[t.DayPeriods]="DayPeriods",t[t.Days]="Days",t[t.Months]="Months",t[t.Eras]="Eras",t}();function K(t,e,n,a){let r=function(t){if(rt(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){t=t.trim();const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);if(/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){const[e,n,a]=t.split("-").map(t=>+t);return new Date(e,n-1,a)}let n;if(n=t.match(B))return at(n)}const e=new Date(t);if(!rt(e))throw new Error(`Unable to convert "${t}" into a date`);return e}(t);e=function t(e,n){const a=x(e);if(z[a]=z[a]||{},z[a][n])return z[a][n];let r="";switch(n){case"shortDate":r=N(e,m.Short);break;case"mediumDate":r=N(e,m.Medium);break;case"longDate":r=N(e,m.Long);break;case"fullDate":r=N(e,m.Full);break;case"shortTime":r=C(e,m.Short);break;case"mediumTime":r=C(e,m.Medium);break;case"longTime":r=C(e,m.Long);break;case"fullTime":r=C(e,m.Full);break;case"short":const n=t(e,"shortTime"),a=t(e,"shortDate");r=$(R(e,m.Short),[n,a]);break;case"medium":const i=t(e,"mediumTime"),s=t(e,"mediumDate");r=$(R(e,m.Medium),[i,s]);break;case"long":const u=t(e,"longTime"),o=t(e,"longDate");r=$(R(e,m.Long),[u,o]);break;case"full":const l=t(e,"fullTime"),d=t(e,"fullDate");r=$(R(e,m.Full),[l,d])}return r&&(z[a][n]=r),r}(n,e)||e;let i,s=[];for(;e;){if(i=Y.exec(e),!i){s.push(e);break}{s=s.concat(i.slice(1));const t=s.pop();if(!t)break;e=t}}let u=r.getTimezoneOffset();a&&(u=nt(a,u),r=function(t,e,n){const a=t.getTimezoneOffset();return function(t,e){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+e),t}(t,-1*(nt(e,a)-a))}(r,a));let o="";return s.forEach(t=>{const e=function(t){if(et[t])return et[t];let e;switch(t){case"G":case"GG":case"GGG":e=Q(W.Eras,b.Abbreviated);break;case"GGGG":e=Q(W.Eras,b.Wide);break;case"GGGGG":e=Q(W.Eras,b.Narrow);break;case"y":e=Z(U.FullYear,1,0,!1,!0);break;case"yy":e=Z(U.FullYear,2,0,!0,!0);break;case"yyy":e=Z(U.FullYear,3,0,!1,!0);break;case"yyyy":e=Z(U.FullYear,4,0,!1,!0);break;case"M":case"L":e=Z(U.Month,1,1);break;case"MM":case"LL":e=Z(U.Month,2,1);break;case"MMM":e=Q(W.Months,b.Abbreviated);break;case"MMMM":e=Q(W.Months,b.Wide);break;case"MMMMM":e=Q(W.Months,b.Narrow);break;case"LLL":e=Q(W.Months,b.Abbreviated,p.Standalone);break;case"LLLL":e=Q(W.Months,b.Wide,p.Standalone);break;case"LLLLL":e=Q(W.Months,b.Narrow,p.Standalone);break;case"w":e=tt(1);break;case"ww":e=tt(2);break;case"W":e=tt(1,!0);break;case"d":e=Z(U.Date,1);break;case"dd":e=Z(U.Date,2);break;case"E":case"EE":case"EEE":e=Q(W.Days,b.Abbreviated);break;case"EEEE":e=Q(W.Days,b.Wide);break;case"EEEEE":e=Q(W.Days,b.Narrow);break;case"EEEEEE":e=Q(W.Days,b.Short);break;case"a":case"aa":case"aaa":e=Q(W.DayPeriods,b.Abbreviated);break;case"aaaa":e=Q(W.DayPeriods,b.Wide);break;case"aaaaa":e=Q(W.DayPeriods,b.Narrow);break;case"b":case"bb":case"bbb":e=Q(W.DayPeriods,b.Abbreviated,p.Standalone,!0);break;case"bbbb":e=Q(W.DayPeriods,b.Wide,p.Standalone,!0);break;case"bbbbb":e=Q(W.DayPeriods,b.Narrow,p.Standalone,!0);break;case"B":case"BB":case"BBB":e=Q(W.DayPeriods,b.Abbreviated,p.Format,!0);break;case"BBBB":e=Q(W.DayPeriods,b.Wide,p.Format,!0);break;case"BBBBB":e=Q(W.DayPeriods,b.Narrow,p.Format,!0);break;case"h":e=Z(U.Hours,1,-12);break;case"hh":e=Z(U.Hours,2,-12);break;case"H":e=Z(U.Hours,1);break;case"HH":e=Z(U.Hours,2);break;case"m":e=Z(U.Minutes,1);break;case"mm":e=Z(U.Minutes,2);break;case"s":e=Z(U.Seconds,1);break;case"ss":e=Z(U.Seconds,2);break;case"S":e=Z(U.FractionalSeconds,1);break;case"SS":e=Z(U.FractionalSeconds,2);break;case"SSS":e=Z(U.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=X(H.Short);break;case"ZZZZZ":e=X(H.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=X(H.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=X(H.Long);break;default:return null}return et[t]=e,e}(t);o+=e?e(r,n,u):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),o}function $(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,(function(t,n){return null!=e&&n in e?e[n]:t}))),t}function J(t,e,n="-",a,r){let i="";(t<0||r&&t<=0)&&(r?t=1-t:(t=-t,i=n));let s=String(t);for(;s.length<e;)s="0"+s;return a&&(s=s.substr(s.length-e)),i+s}function Z(t,e,n=0,a=!1,r=!1){return function(i,s){let u=function(t,e){switch(t){case U.FullYear:return e.getFullYear();case U.Month:return e.getMonth();case U.Date:return e.getDate();case U.Hours:return e.getHours();case U.Minutes:return e.getMinutes();case U.Seconds:return e.getSeconds();case U.FractionalSeconds:return e.getMilliseconds();case U.Day:return e.getDay();default:throw new Error(`Unknown DateType value "${t}".`)}}(t,i);if((n>0||u>-n)&&(u+=n),t===U.Hours)0===u&&-12===n&&(u=12);else if(t===U.FractionalSeconds)return o=e,J(u,3).substr(0,o);var o;const l=A(s,y.MinusSign);return J(u,e,l,a,r)}}function Q(t,e,n=p.Format,a=!1){return function(r,i){return function(t,e,n,a,r,i){switch(n){case W.Months:return w(e,r,a)[t.getMonth()];case W.Days:return T(e,r,a)[t.getDay()];case W.DayPeriods:const s=t.getHours(),u=t.getMinutes();if(i){const t=M(e),n=q(e,r,a);let i;if(t.forEach((t,e)=>{if(Array.isArray(t)){const{hours:a,minutes:r}=t[0],{hours:o,minutes:l}=t[1];s>=a&&u>=r&&(s<o||s===o&&u<l)&&(i=n[e])}else{const{hours:a,minutes:r}=t;a===s&&r===u&&(i=n[e])}}),i)return i}return _(e,r,a)[s<12?0:1];case W.Eras:return O(e,a)[t.getFullYear()<=0?0:1];default:throw new Error("unexpected translation type "+n)}}(r,i,t,e,n,a)}}function X(t){return function(e,n,a){const r=-1*a,i=A(n,y.MinusSign),s=r>0?Math.floor(r/60):Math.ceil(r/60);switch(t){case H.Short:return(r>=0?"+":"")+J(s,2,i)+J(Math.abs(r%60),2,i);case H.ShortGMT:return"GMT"+(r>=0?"+":"")+J(s,1,i);case H.Long:return"GMT"+(r>=0?"+":"")+J(s,2,i)+":"+J(Math.abs(r%60),2,i);case H.Extended:return 0===a?"Z":(r>=0?"+":"")+J(s,2,i)+":"+J(Math.abs(r%60),2,i);default:throw new Error(`Unknown zone width "${t}"`)}}}function tt(t,e=!1){return function(n,a){let r;if(e){const t=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,e=n.getDate();r=1+Math.floor((e+t)/7)}else{const t=function(t){const e=new Date(t,0,1).getDay();return new Date(t,0,1+(e<=4?4:11)-e)}(n.getFullYear()),e=(i=n,new Date(i.getFullYear(),i.getMonth(),i.getDate()+(4-i.getDay()))).getTime()-t.getTime();r=1+Math.round(e/6048e5)}var i;return J(r,t,A(a,y.MinusSign))}}const et={};function nt(t,e){t=t.replace(/:/g,"");const n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function at(t){const e=new Date(0);let n=0,a=0;const r=t[8]?e.setUTCFullYear:e.setFullYear,i=t[8]?e.setUTCHours:e.setHours;t[9]&&(n=Number(t[9]+t[10]),a=Number(t[9]+t[11])),r.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));const s=Number(t[4]||0)-n,u=Number(t[5]||0)-a,o=Number(t[6]||0),l=Math.round(1e3*parseFloat("0."+(t[7]||0)));return i.call(e,s,u,o,l),e}function rt(t){return t instanceof Date&&!isNaN(t.valueOf())}const it=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function st(t,e,n,a,r,i,s=!1){let u="",o=!1;if(isFinite(t)){let l=function(t){let e,n,a,r,i,s=Math.abs(t)+"",u=0;for((n=s.indexOf("."))>-1&&(s=s.replace(".","")),(a=s.search(/e/i))>0?(n<0&&(n=a),n+=+s.slice(a+1),s=s.substring(0,a)):n<0&&(n=s.length),a=0;"0"===s.charAt(a);a++);if(a===(i=s.length))e=[0],n=1;else{for(i--;"0"===s.charAt(i);)i--;for(n-=a,e=[],r=0;a<=i;a++,r++)e[r]=Number(s.charAt(a))}return n>22&&(e=e.splice(0,21),u=n-1,n=1),{digits:e,exponent:u,integerLen:n}}(t);s&&(l=function(t){if(0===t.digits[0])return t;const e=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===e?t.digits.push(0,0):1===e&&t.digits.push(0),t.integerLen+=2),t}(l));let d=e.minInt,c=e.minFrac,f=e.maxFrac;if(i){const t=i.match(it);if(null===t)throw new Error(i+" is not a valid digit info");const e=t[1],n=t[3],a=t[5];null!=e&&(d=ct(e)),null!=n&&(c=ct(n)),null!=a?f=ct(a):null!=n&&c>f&&(f=c)}!function(t,e,n){if(e>n)throw new Error(`The minimum number of digits after fraction (${e}) is higher than the maximum (${n}).`);let a=t.digits,r=a.length-t.integerLen;const i=Math.min(Math.max(e,r),n);let s=i+t.integerLen,u=a[s];if(s>0){a.splice(Math.max(t.integerLen,s));for(let t=s;t<a.length;t++)a[t]=0}else{r=Math.max(0,r),t.integerLen=1,a.length=Math.max(1,s=i+1),a[0]=0;for(let t=1;t<s;t++)a[t]=0}if(u>=5)if(s-1<0){for(let e=0;e>s;e--)a.unshift(0),t.integerLen++;a.unshift(1),t.integerLen++}else a[s-1]++;for(;r<Math.max(0,i);r++)a.push(0);let o=0!==i;const l=e+t.integerLen,d=a.reduceRight((function(t,e,n,a){return a[n]=(e+=t)<10?e:e-10,o&&(0===a[n]&&n>=l?a.pop():o=!1),e>=10?1:0}),0);d&&(a.unshift(d),t.integerLen++)}(l,c,f);let h=l.digits,g=l.integerLen;const p=l.exponent;let b=[];for(o=h.every(t=>!t);g<d;g++)h.unshift(0);for(;g<0;g++)h.unshift(0);g>0?b=h.splice(g,h.length):(b=h,h=[0]);const m=[];for(h.length>=e.lgSize&&m.unshift(h.splice(-e.lgSize,h.length).join(""));h.length>e.gSize;)m.unshift(h.splice(-e.gSize,h.length).join(""));h.length&&m.unshift(h.join("")),u=m.join(A(n,a)),b.length&&(u+=A(n,r)+b.join("")),p&&(u+=A(n,y.Exponential)+"+"+p)}else u=A(n,y.Infinity);return u=t<0&&!o?e.negPre+u+e.negSuf:e.posPre+u+e.posSuf,u}function ut(t,e,n,a,r){const i=dt(k(e,h.Currency),A(e,y.MinusSign));return i.minFrac=G(a),i.maxFrac=i.minFrac,st(t,i,e,y.CurrencyGroup,y.CurrencyDecimal,r).replace("¤",n).replace("¤","")}function ot(t,e,n){return st(t,dt(k(e,h.Percent),A(e,y.MinusSign)),e,y.Group,y.Decimal,n,!0).replace(new RegExp("%","g"),A(e,y.PercentSign))}function lt(t,e,n){return st(t,dt(k(e,h.Decimal),A(e,y.MinusSign)),e,y.Group,y.Decimal,n)}function dt(t,e="-"){const n={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},a=t.split(";"),r=a[0],i=a[1],s=-1!==r.indexOf(".")?r.split("."):[r.substring(0,r.lastIndexOf("0")+1),r.substring(r.lastIndexOf("0")+1)],u=s[0],o=s[1]||"";n.posPre=u.substr(0,u.indexOf("#"));for(let d=0;d<o.length;d++){const t=o.charAt(d);"0"===t?n.minFrac=n.maxFrac=d+1:"#"===t?n.maxFrac=d+1:n.posSuf+=t}const l=u.split(",");if(n.gSize=l[1]?l[1].length:0,n.lgSize=l[2]||l[1]?(l[2]||l[1]).length:0,i){const t=r.length-n.posPre.length-n.posSuf.length,e=i.indexOf("#");n.negPre=i.substr(0,e).replace(/'/g,""),n.negSuf=i.substr(e+t).replace(/'/g,"")}else n.negPre=e+n.posPre,n.negSuf=n.posSuf;return n}function ct(t){const e=parseInt(t);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}const ft=new a.InjectionToken("UseV4Plurals");class ht{}function gt(t,e,n,a){let r="="+t;if(e.indexOf(r)>-1)return r;if(r=n.getPluralCategory(t,a),e.indexOf(r)>-1)return r;if(e.indexOf("other")>-1)return"other";throw new Error(`No plural message found for value "${t}"`)}class pt extends ht{constructor(t,e){super(),this.locale=t,this.deprecatedPluralFn=e}getPluralCategory(t,e){switch(this.deprecatedPluralFn?this.deprecatedPluralFn(e||this.locale,t):D(e||this.locale)(t)){case g.Zero:return"zero";case g.One:return"one";case g.Two:return"two";case g.Few:return"few";case g.Many:return"many";default:return"other"}}}function bt(t,e){"string"==typeof e&&(e=parseInt(e,10));const n=e,a=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=a.length,s=parseInt(a,10),u=parseInt(n.toString().replace(/^[^.]*\.?|0+$/g,""),10)||0;switch(t.split("-")[0].toLowerCase()){case"af":case"asa":case"az":case"bem":case"bez":case"bg":case"brx":case"ce":case"cgg":case"chr":case"ckb":case"ee":case"el":case"eo":case"es":case"eu":case"fo":case"fur":case"gsw":case"ha":case"haw":case"hu":case"jgo":case"jmc":case"ka":case"kk":case"kkj":case"kl":case"ks":case"ksb":case"ky":case"lb":case"lg":case"mas":case"mgo":case"ml":case"mn":case"nb":case"nd":case"ne":case"nn":case"nnh":case"nyn":case"om":case"or":case"os":case"ps":case"rm":case"rof":case"rwk":case"saq":case"seh":case"sn":case"so":case"sq":case"ta":case"te":case"teo":case"tk":case"tr":case"ug":case"uz":case"vo":case"vun":case"wae":case"xog":return 1===n?g.One:g.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?g.One:g.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?g.One:g.Other;case"ar":return 0===n?g.Zero:1===n?g.One:2===n?g.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?g.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?g.Many:g.Other;case"ast":case"ca":case"de":case"en":case"et":case"fi":case"fy":case"gl":case"it":case"nl":case"sv":case"sw":case"ur":case"yi":return 1===r&&0===i?g.One:g.Other;case"be":return n%10==1&&n%100!=11?g.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?g.Few:n%10==0||n%10===Math.floor(n%10)&&n%10>=5&&n%10<=9||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=14?g.Many:g.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?g.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?g.Two:n%10===Math.floor(n%10)&&(n%10>=3&&n%10<=4||n%10==9)&&!(n%100>=10&&n%100<=19||n%100>=70&&n%100<=79||n%100>=90&&n%100<=99)?g.Few:0!==n&&n%1e6==0?g.Many:g.Other;case"bs":case"hr":case"sr":return 0===i&&r%10==1&&r%100!=11||s%10==1&&s%100!=11?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||s%10===Math.floor(s%10)&&s%10>=2&&s%10<=4&&!(s%100>=12&&s%100<=14)?g.Few:g.Other;case"cs":case"sk":return 1===r&&0===i?g.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?g.Few:0!==i?g.Many:g.Other;case"cy":return 0===n?g.Zero:1===n?g.One:2===n?g.Two:3===n?g.Few:6===n?g.Many:g.Other;case"da":return 1===n||0!==u&&(0===r||1===r)?g.One:g.Other;case"dsb":case"hsb":return 0===i&&r%100==1||s%100==1?g.One:0===i&&r%100==2||s%100==2?g.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||s%100===Math.floor(s%100)&&s%100>=3&&s%100<=4?g.Few:g.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?g.One:g.Other;case"fil":return 0===i&&(1===r||2===r||3===r)||0===i&&r%10!=4&&r%10!=6&&r%10!=9||0!==i&&s%10!=4&&s%10!=6&&s%10!=9?g.One:g.Other;case"ga":return 1===n?g.One:2===n?g.Two:n===Math.floor(n)&&n>=3&&n<=6?g.Few:n===Math.floor(n)&&n>=7&&n<=10?g.Many:g.Other;case"gd":return 1===n||11===n?g.One:2===n||12===n?g.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?g.Few:g.Other;case"gv":return 0===i&&r%10==1?g.One:0===i&&r%10==2?g.Two:0!==i||r%100!=0&&r%100!=20&&r%100!=40&&r%100!=60&&r%100!=80?0!==i?g.Many:g.Other:g.Few;case"he":return 1===r&&0===i?g.One:2===r&&0===i?g.Two:0!==i||n>=0&&n<=10||n%10!=0?g.Other:g.Many;case"is":return 0===u&&r%10==1&&r%100!=11||0!==u?g.One:g.Other;case"ksh":return 0===n?g.Zero:1===n?g.One:g.Other;case"kw":case"naq":case"se":case"smn":return 1===n?g.One:2===n?g.Two:g.Other;case"lag":return 0===n?g.Zero:0!==r&&1!==r||0===n?g.Other:g.One;case"lt":return n%10!=1||n%100>=11&&n%100<=19?n%10===Math.floor(n%10)&&n%10>=2&&n%10<=9&&!(n%100>=11&&n%100<=19)?g.Few:0!==s?g.Many:g.Other:g.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&s%100===Math.floor(s%100)&&s%100>=11&&s%100<=19?g.Zero:n%10==1&&n%100!=11||2===i&&s%10==1&&s%100!=11||2!==i&&s%10==1?g.One:g.Other;case"mk":return 0===i&&r%10==1||s%10==1?g.One:g.Other;case"mt":return 1===n?g.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?g.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?g.Many:g.Other;case"pl":return 1===r&&0===i?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?g.Few:0===i&&1!==r&&r%10===Math.floor(r%10)&&r%10>=0&&r%10<=1||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=12&&r%100<=14?g.Many:g.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?g.One:g.Other;case"ro":return 1===r&&0===i?g.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?g.Few:g.Other;case"ru":case"uk":return 0===i&&r%10==1&&r%100!=11?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?g.Few:0===i&&r%10==0||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=11&&r%100<=14?g.Many:g.Other;case"shi":return 0===r||1===n?g.One:n===Math.floor(n)&&n>=2&&n<=10?g.Few:g.Other;case"si":return 0===n||1===n||0===r&&1===s?g.One:g.Other;case"sl":return 0===i&&r%100==1?g.One:0===i&&r%100==2?g.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?g.Few:g.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?g.One:g.Other;default:return g.Other}}function mt(t,e,n){"string"!=typeof e&&(n=e,e=t[a["ɵLocaleDataIndex"].LocaleId]),e=e.toLowerCase().replace(/_/g,"-"),a["ɵLOCALE_DATA"][e]=t,n&&(a["ɵLOCALE_DATA"][e][a["ɵLocaleDataIndex"].ExtraData]=n)}function yt(t,e){e=encodeURIComponent(e);for(const n of t.split(";")){const t=n.indexOf("="),[a,r]=-1==t?[n,""]:[n.slice(0,t),n.slice(t+1)];if(a.trim()===e)return decodeURIComponent(r)}return null}class vt{constructor(t,e){this._name=t,this._options=e,this.value=null,this._lastSetValue=null,this._lastSetValueType=0,this._lastSetValueIdentityChange=!1}setValue(t){if(Array.isArray(t))this._lastSetValueType=4;else if(t instanceof Set)this._lastSetValueType=8;else if(t&&"string"==typeof t){if(!(4&this._options))throw new Error(this._name+" string values are not allowed");this._lastSetValueType=1}else this._lastSetValueType=t?2:0;this._lastSetValueIdentityChange=!0,this._lastSetValue=t||null}hasValueChanged(){let t=this._lastSetValueIdentityChange;if(!(t||14&this._lastSetValueType))return!1;let e=null;const n=!!(1&this._options),a=!!(8&this._options),r=!!(2&this._options);switch(this._lastSetValueType){case 1:const i=this._lastSetValue.split(/\s+/g);16&this._options?(e={},i.forEach((t,n)=>e[t]=!0)):e=i.reduce((t,e,n)=>t+(n?" ":"")+e);break;case 2:const s=this._lastSetValue,u=Object.keys(s);t||(t=!this.value||function(t,e,n){const a=t;if(!Ot(Object.keys(e),a))return!0;for(let r=0;r<a.length;r++){const t=a[r];if(e[t]!==n[t])return!0}return!1}(u,this.value,s)),t&&(e=xt(this._name,n,a,r,s,u));break;case 4:case 8:const o=Array.from(this._lastSetValue);t||(t=!Ot(Object.keys(this.value),o)),t&&(e=xt(this._name,n,a,r,o));break;default:e=null}return t&&(this.value=e),t}}function xt(t,e,n,a,r,i){const s={};if(i)for(let u=0;u<i.length;u++){let t=i[u];t=e?t.trim():t,Tt(s,t,r[t],n,a)}else for(let u=0;u<r.length;u++){let n=r[u];_t(t,n),n=e?n.trim():n,Tt(s,n,!0,!1,a)}return s}function _t(t,e){if("string"!=typeof e)throw new Error(`${t} can only toggle CSS classes expressed as strings, got ${e}`)}function Tt(t,e,n,a,r){if(r&&e.indexOf(" ")>0){const r=e.split(/\s+/g);for(let e=0;e<r.length;e++)wt(t,r[e],n,a)}else wt(t,e,n,a)}function wt(t,e,n,a){if(a){const t=function(t,e){const n=t.indexOf(".");if(n>0){const a=t.substr(n+1);t=t.substring(0,n),null!=e&&(e+=a)}return{key:t,value:e}}(e,n);n=t.value,e=t.key}t[e]=n}function Ot(t,e){if(t&&e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(-1===e.indexOf(t[n]))return!1;return!0}return!1}class St{}class It{constructor(t,e,n,a){this._iterableDiffers=t,this._keyValueDiffers=e,this._ngEl=n,this._renderer=a,this._initialClasses=[]}getValue(){return null}setClass(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}setNgClass(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(Object(a["ɵisListLikeIterable"])(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}applyChanges(){if(this._iterableDiffer){const t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){const t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}}_applyKeyValueChanges(t){t.forEachAddedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachChangedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachRemovedItem(t=>{t.previousValue&&this._toggleClass(t.key,!1)})}_applyIterableChanges(t){t.forEachAddedItem(t=>{if("string"!=typeof t.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got "+Object(a["ɵstringify"])(t.item));this._toggleClass(t.item,!0)}),t.forEachRemovedItem(t=>this._toggleClass(t.item,!1))}_applyClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!0)):Object.keys(t).forEach(e=>this._toggleClass(e,!!t[e])))}_removeClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!1)):Object.keys(t).forEach(t=>this._toggleClass(t,!1)))}_toggleClass(t,e){(t=t.trim())&&t.split(/\s+/g).forEach(t=>{e?this._renderer.addClass(this._ngEl.nativeElement,t):this._renderer.removeClass(this._ngEl.nativeElement,t)})}}class Nt{constructor(){this._value=null,this._ngClassDiffer=new vt("NgClass",23),this._classStringDiffer=null}getValue(){return this._value}setClass(t){(t||this._classStringDiffer)&&(this._classStringDiffer=this._classStringDiffer||new vt("class",20),this._classStringDiffer.setValue(t))}setNgClass(t){this._ngClassDiffer.setValue(t)}applyChanges(){const t=!!this._classStringDiffer&&this._classStringDiffer.hasValueChanged(),e=this._ngClassDiffer.hasValueChanged();if(t||e){let t=this._ngClassDiffer.value;if(this._classStringDiffer){let e=this._classStringDiffer.value;e&&(t=t?Object.assign({},e,t):e)}this._value=t}}}const Ct={provide:St,useClass:It},Rt={provide:St,useClass:Nt},At=Ct,kt=Object(a["ɵɵdefineDirective"])({type:function(){},selectors:null,factory:()=>{},hostBindings:function(t,e,n){1&t&&(Object(a["ɵɵallocHostVars"])(1),Object(a["ɵɵstyling"])()),2&t&&(Object(a["ɵɵclassMap"])(e.getValue()),Object(a["ɵɵstylingApply"])())}});let Et=(()=>{class t{constructor(t){this._delegate=t}getValue(){return this._delegate.getValue()}}return t.ngDirectiveDef=void 0,t})();class Lt extends Et{constructor(t){super(t)}set klass(t){this._delegate.setClass(t)}set ngClass(t){this._delegate.setNgClass(t)}ngDoCheck(){this._delegate.applyChanges()}}class Dt{constructor(t){this._viewContainerRef=t,this._componentRef=null,this._moduleRef=null}ngOnChanges(t){if(this._viewContainerRef.clear(),this._componentRef=null,this.ngComponentOutlet){const e=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;if(t.ngComponentOutletNgModuleFactory)if(this._moduleRef&&this._moduleRef.destroy(),this.ngComponentOutletNgModuleFactory){const t=e.get(a.NgModuleRef);this._moduleRef=this.ngComponentOutletNgModuleFactory.create(t.injector)}else this._moduleRef=null;const n=(this._moduleRef?this._moduleRef.componentFactoryResolver:e.get(a.ComponentFactoryResolver)).resolveComponentFactory(this.ngComponentOutlet);this._componentRef=this._viewContainerRef.createComponent(n,this._viewContainerRef.length,e,this.ngComponentOutletContent)}}ngOnDestroy(){this._moduleRef&&this._moduleRef.destroy()}}class Pt{constructor(t,e,n,a){this.$implicit=t,this.ngForOf=e,this.index=n,this.count=a}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}class Mt{constructor(t,e,n){this._viewContainer=t,this._template=e,this._differs=n,this._ngForOfDirty=!0,this._differ=null}set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){Object(a.isDevMode)()&&null!=t&&"function"!=typeof t&&console&&console.warn&&console.warn(`trackBy must be a function, but received ${JSON.stringify(t)}. See https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html#!#change-propagation for more information.`),this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const n=this._ngForOf;if(!this._differ&&n)try{this._differ=this._differs.find(n).create(this.ngForTrackBy)}catch(e){throw new Error(`Cannot find a differ supporting object '${n}' of type '${t=n,t.name||typeof t}'. NgFor only supports binding to Iterables such as Arrays.`)}}var t;if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const e=[];t.forEachOperation((t,n,a)=>{if(null==t.previousIndex){const n=this._viewContainer.createEmbeddedView(this._template,new Pt(null,this._ngForOf,-1,-1),null===a?void 0:a),r=new qt(t,n);e.push(r)}else if(null==a)this._viewContainer.remove(null===n?void 0:n);else if(null!==n){const r=this._viewContainer.get(n);this._viewContainer.move(r,a);const i=new qt(t,r);e.push(i)}});for(let n=0;n<e.length;n++)this._perViewChange(e[n].view,e[n].record);for(let n=0,a=this._viewContainer.length;n<a;n++){const t=this._viewContainer.get(n);t.context.index=n,t.context.count=a,t.context.ngForOf=this._ngForOf}t.forEachIdentityChange(t=>{this._viewContainer.get(t.currentIndex).context.$implicit=t.item})}_perViewChange(t,e){t.context.$implicit=e.item}static ngTemplateContextGuard(t,e){return!0}}class qt{constructor(t,e){this.record=t,this.view=e}}class jt{constructor(t,e){this._viewContainer=t,this._context=new Ft,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=e}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){Vt("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){Vt("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}}class Ft{constructor(){this.$implicit=null,this.ngIf=null}}function Vt(t,e){if(e&&!e.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${Object(a["ɵstringify"])(e)}'.`)}class Gt{constructor(t,e){this._viewContainerRef=t,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(t){t&&!this._created?this.create():!t&&this._created&&this.destroy()}}class Bt{constructor(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(t){this._ngSwitch=t,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(t){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(t)}_matchCase(t){const e=t==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||e,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),e}_updateDefaultCases(t){if(this._defaultViews&&t!==this._defaultUsed){this._defaultUsed=t;for(let e=0;e<this._defaultViews.length;e++)this._defaultViews[e].enforceState(t)}}}class zt{constructor(t,e,n){this.ngSwitch=n,n._addCase(),this._view=new Gt(t,e)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}class Yt{constructor(t,e,n){n._addDefault(new Gt(t,e))}}class Ht{constructor(t){this._localization=t,this._caseViews={}}set ngPlural(t){this._switchValue=t,this._updateView()}addCase(t,e){this._caseViews[t]=e}_updateView(){this._clearViews();const t=Object.keys(this._caseViews),e=gt(this._switchValue,t,this._localization);this._activateView(this._caseViews[e])}_clearViews(){this._activeView&&this._activeView.destroy()}_activateView(t){t&&(this._activeView=t,this._activeView.create())}}class Ut{constructor(t,e,n,a){this.value=t;const r=!isNaN(Number(t));a.addCase(r?"="+t:t,new Gt(n,e))}}class Wt{}class Kt{constructor(t,e,n){this._ngEl=t,this._differs=e,this._renderer=n}getValue(){return null}setNgStyle(t){this._ngStyle=t,!this._differ&&t&&(this._differ=this._differs.find(t).create())}applyChanges(){if(this._differ){const t=this._differ.diff(this._ngStyle);t&&this._applyChanges(t)}}_applyChanges(t){t.forEachRemovedItem(t=>this._setStyle(t.key,null)),t.forEachAddedItem(t=>this._setStyle(t.key,t.currentValue)),t.forEachChangedItem(t=>this._setStyle(t.key,t.currentValue))}_setStyle(t,e){const[n,a]=t.split(".");null!=(e=null!=e&&a?`${e}${a}`:e)?this._renderer.setStyle(this._ngEl.nativeElement,n,e):this._renderer.removeStyle(this._ngEl.nativeElement,n)}}class $t{constructor(){this._differ=new vt("NgStyle",8),this._value=null}getValue(){return this._value}setNgStyle(t){this._differ.setValue(t)}applyChanges(){this._differ.hasValueChanged()&&(this._value=this._differ.value)}}const Jt={provide:Wt,useClass:Kt},Zt={provide:Wt,useClass:$t},Qt=Jt,Xt=Object(a["ɵɵdefineDirective"])({type:function(){},selectors:null,factory:()=>{},hostBindings:function(t,e,n){1&t&&Object(a["ɵɵstyling"])(),2&t&&(Object(a["ɵɵstyleMap"])(e.getValue()),Object(a["ɵɵstylingApply"])())}});let te=(()=>{class t{constructor(t){this._delegate=t}getValue(){return this._delegate.getValue()}}return t.ngDirectiveDef=void 0,t})();class ee extends te{constructor(t){super(t)}set ngStyle(t){this._delegate.setNgStyle(t)}ngDoCheck(){this._delegate.applyChanges()}}class ne{constructor(t){this._viewContainerRef=t,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null}ngOnChanges(t){this._shouldRecreateView(t)?(this._viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._viewRef)),this.ngTemplateOutlet&&(this._viewRef=this._viewContainerRef.createEmbeddedView(this.ngTemplateOutlet,this.ngTemplateOutletContext))):this._viewRef&&this.ngTemplateOutletContext&&this._updateExistingContext(this.ngTemplateOutletContext)}_shouldRecreateView(t){const e=t.ngTemplateOutletContext;return!!t.ngTemplateOutlet||e&&this._hasContextShapeChanged(e)}_hasContextShapeChanged(t){const e=Object.keys(t.previousValue||{}),n=Object.keys(t.currentValue||{});if(e.length===n.length){for(let t of n)if(-1===e.indexOf(t))return!0;return!1}return!0}_updateExistingContext(t){for(let e of Object.keys(t))this._viewRef.context[e]=this.ngTemplateOutletContext[e]}}const ae=[Lt,Dt,Mt,jt,ne,ee,Bt,zt,Yt,Ht,Ut];function re(t,e){return Error(`InvalidPipeArgument: '${e}' for pipe '${Object(a["ɵstringify"])(t)}'`)}const ie=/((?:[^yMLdHhmsazZEwGjJ']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|J+|j+|m+|s+|a|z|Z|G+|w+))(.*)/,se={yMMMdjms:me(be([ge("year",1),pe("month",3),ge("day",1),ge("hour",1),ge("minute",1),ge("second",1)])),yMdjm:me(be([ge("year",1),ge("month",1),ge("day",1),ge("hour",1),ge("minute",1)])),yMMMMEEEEd:me(be([ge("year",1),pe("month",4),pe("weekday",4),ge("day",1)])),yMMMMd:me(be([ge("year",1),pe("month",4),ge("day",1)])),yMMMd:me(be([ge("year",1),pe("month",3),ge("day",1)])),yMd:me(be([ge("year",1),ge("month",1),ge("day",1)])),jms:me(be([ge("hour",1),ge("second",1),ge("minute",1)])),jm:me(be([ge("hour",1),ge("minute",1)]))},ue={yyyy:me(ge("year",4)),yy:me(ge("year",2)),y:me(ge("year",1)),MMMM:me(pe("month",4)),MMM:me(pe("month",3)),MM:me(ge("month",2)),M:me(ge("month",1)),LLLL:me(pe("month",4)),L:me(pe("month",1)),dd:me(ge("day",2)),d:me(ge("day",1)),HH:oe(de(me(he(ge("hour",2),!1)))),H:de(me(he(ge("hour",1),!1))),hh:oe(de(me(he(ge("hour",2),!0)))),h:de(me(he(ge("hour",1),!0))),jj:me(ge("hour",2)),j:me(ge("hour",1)),mm:oe(me(ge("minute",2))),m:me(ge("minute",1)),ss:oe(me(ge("second",2))),s:me(ge("second",1)),sss:me(ge("second",3)),EEEE:me(pe("weekday",4)),EEE:me(pe("weekday",3)),EE:me(pe("weekday",2)),E:me(pe("weekday",1)),a:le(me(he(ge("hour",1),!0))),Z:fe("short"),z:fe("long"),ww:me({}),w:me({}),G:me(pe("era",1)),GG:me(pe("era",2)),GGG:me(pe("era",3)),GGGG:me(pe("era",4))};function oe(t){return function(e,n){const a=t(e,n);return 1==a.length?"0"+a:a}}function le(t){return function(e,n){return t(e,n).split(" ")[1]}}function de(t){return function(e,n){return t(e,n).split(" ")[0]}}function ce(t,e,n){return new Intl.DateTimeFormat(e,n).format(t).replace(/[\u200e\u200f]/g,"")}function fe(t){const e={hour:"2-digit",hour12:!1,timeZoneName:t};return function(t,n){const a=ce(t,n,e);return a?a.substring(3):""}}function he(t,e){return t.hour12=e,t}function ge(t,e){const n={};return n[t]=2===e?"2-digit":"numeric",n}function pe(t,e){const n={};return n[t]=e<4?e>1?"short":"narrow":"long",n}function be(t){return t.reduce((t,e)=>Object.assign({},t,e),{})}function me(t){return(e,n)=>ce(e,n,t)}const ye=new Map;let ve=(()=>{class t{constructor(t){this._locale=t}transform(e,n="mediumDate"){if(null==e||""===e||e!=e)return null;let a;if("string"==typeof e&&(e=e.trim()),xe(e))a=e;else if(isNaN(e-parseFloat(e)))if("string"==typeof e&&/^(\d{4}-\d{1,2}-\d{1,2})$/.test(e)){const[t,n,r]=e.split("-").map(t=>parseInt(t,10));a=new Date(t,n-1,r)}else a=new Date(e);else a=new Date(parseFloat(e));if(!xe(a)){let n;if("string"!=typeof e||!(n=e.match(B)))throw re(t,e);a=at(n)}return class{static format(t,e,n){return function(t,e,n){const a=se[t];if(a)return a(e,n);const r=t;let i=ye.get(r);if(!i){let e;i=[],ie.exec(t);let n=t;for(;n;)e=ie.exec(n),e?(i=i.concat(e.slice(1)),n=i.pop()):(i.push(n),n=null);ye.set(r,i)}return i.reduce((t,a)=>{const r=ue[a];return t+(r?r(e,n):function(t){return"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}(a))},"")}(n,t,e)}}.format(a,this._locale,t._ALIASES[n]||n)}}return t._ALIASES={medium:"yMMMdjms",short:"yMdjm",fullDate:"yMMMMEEEEd",longDate:"yMMMMd",mediumDate:"yMMMd",shortDate:"yMd",mediumTime:"jms",shortTime:"jm"},t})();function xe(t){return t instanceof Date&&!isNaN(t.valueOf())}function _e(t,e,n,a,r,i=null,s=!1){if(null==n)return null;if("number"!=typeof(n="string"!=typeof n||isNaN(+n-parseFloat(n))?n:+n))throw re(t,n);let u,o,l;if(a!==h.Currency&&(u=1,o=0,l=3),r){const t=r.match(it);if(null===t)throw new Error(r+" is not a valid digit info for number pipes");null!=t[1]&&(u=ct(t[1])),null!=t[3]&&(o=ct(t[3])),null!=t[5]&&(l=ct(t[5]))}return class{static format(t,e,n,a={}){const{minimumIntegerDigits:r,minimumFractionDigits:i,maximumFractionDigits:s,currency:u,currencyAsSymbol:o=!1}=a,l={minimumIntegerDigits:r,minimumFractionDigits:i,maximumFractionDigits:s,style:h[n].toLowerCase()};return n==h.Currency&&(l.currency="string"==typeof u?u:void 0,l.currencyDisplay=o?"symbol":"code"),new Intl.NumberFormat(e,l).format(t)}}.format(n,e,a,{minimumIntegerDigits:u,minimumFractionDigits:o,maximumFractionDigits:l,currency:i,currencyAsSymbol:s})}class Te{constructor(t){this._locale=t}transform(t,e){return _e(Te,this._locale,t,h.Decimal,e)}}class we{constructor(t){this._locale=t}transform(t,e){return _e(we,this._locale,t,h.Percent,e)}}class Oe{constructor(t){this._locale=t}transform(t,e="USD",n=!1,a){return _e(Oe,this._locale,t,h.Currency,a,e,n)}}const Se=[Te,we,Oe,ve];class Ie{createSubscription(t,e){return t.subscribe({next:e,error:t=>{throw t}})}dispose(t){t.unsubscribe()}onDestroy(t){t.unsubscribe()}}class Ne{createSubscription(t,e){return t.then(e,t=>{throw t})}dispose(t){}onDestroy(t){}}const Ce=new Ne,Re=new Ie;class Ae{constructor(t){this._ref=t,this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null,this._strategy=null}ngOnDestroy(){this._subscription&&this._dispose()}transform(t){return this._obj?t!==this._obj?(this._dispose(),this.transform(t)):Object(a["ɵlooseIdentical"])(this._latestValue,this._latestReturnedValue)?this._latestReturnedValue:(this._latestReturnedValue=this._latestValue,a.WrappedValue.wrap(this._latestValue)):(t&&this._subscribe(t),this._latestReturnedValue=this._latestValue,this._latestValue)}_subscribe(t){this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,e=>this._updateLatestValue(t,e))}_selectStrategy(t){if(Object(a["ɵisPromise"])(t))return Ce;if(Object(a["ɵisObservable"])(t))return Re;throw re(Ae,t)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null}_updateLatestValue(t,e){t===this._obj&&(this._latestValue=e,this._ref.markForCheck())}}class ke{transform(t){if(!t)return t;if("string"!=typeof t)throw re(ke,t);return t.toLowerCase()}}const Ee=/(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D])\S*/g;class Le{transform(t){if(!t)return t;if("string"!=typeof t)throw re(Le,t);return t.replace(Ee,t=>t[0].toUpperCase()+t.substr(1).toLowerCase())}}class De{transform(t){if(!t)return t;if("string"!=typeof t)throw re(De,t);return t.toUpperCase()}}class Pe{constructor(t){this.locale=t}transform(t,e="mediumDate",n,a){if(null==t||""===t||t!=t)return null;try{return K(t,e,a||this.locale,n)}catch(r){throw re(Pe,r.message)}}}const Me=/#/g;class qe{constructor(t){this._localization=t}transform(t,e,n){if(null==t)return"";if("object"!=typeof e||null===e)throw re(qe,e);return e[gt(t,Object.keys(e),this._localization,n)].replace(Me,t.toString())}}class je{transform(t,e){if(null==t)return"";if("object"!=typeof e||"string"!=typeof t)throw re(je,e);return e.hasOwnProperty(t)?e[t]:e.hasOwnProperty("other")?e.other:""}}class Fe{transform(t){return JSON.stringify(t,null,2)}}class Ve{constructor(t){this.differs=t,this.keyValues=[]}transform(t,e=Ge){if(!t||!(t instanceof Map)&&"object"!=typeof t)return null;this.differ||(this.differ=this.differs.find(t).create());const n=this.differ.diff(t);return n&&(this.keyValues=[],n.forEachItem(t=>{this.keyValues.push({key:t.key,value:t.currentValue})}),this.keyValues.sort(e)),this.keyValues}}function Ge(t,e){const n=t.key,a=e.key;if(n===a)return 0;if(void 0===n)return 1;if(void 0===a)return-1;if(null===n)return 1;if(null===a)return-1;if("string"==typeof n&&"string"==typeof a)return n<a?-1:1;if("number"==typeof n&&"number"==typeof a)return n-a;if("boolean"==typeof n&&"boolean"==typeof a)return n<a?-1:1;const r=String(n),i=String(a);return r==i?0:r<i?-1:1}class Be{constructor(t){this._locale=t}transform(t,e,n){if(He(t))return null;n=n||this._locale;try{return lt(Ue(t),n,e)}catch(a){throw re(Be,a.message)}}}class ze{constructor(t){this._locale=t}transform(t,e,n){if(He(t))return null;n=n||this._locale;try{return ot(Ue(t),n,e)}catch(a){throw re(ze,a.message)}}}class Ye{constructor(t){this._locale=t}transform(t,e,n="symbol",a,r){if(He(t))return null;r=r||this._locale,"boolean"==typeof n&&(console&&console.warn&&console.warn('Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are "code", "symbol" or "symbol-narrow".'),n=n?"symbol":"code");let i=e||"USD";"code"!==n&&(i="symbol"===n||"symbol-narrow"===n?V(i,"symbol"===n?"wide":"narrow",r):n);try{return ut(Ue(t),r,i,e,a)}catch(s){throw re(Ye,s.message)}}}function He(t){return null==t||""===t||t!=t}function Ue(t){if("string"==typeof t&&!isNaN(Number(t)-parseFloat(t)))return Number(t);if("number"!=typeof t)throw new Error(t+" is not a number");return t}class We{transform(t,e,n){if(null==t)return t;if(!this.supports(t))throw re(We,t);return t.slice(e,n)}supports(t){return"string"==typeof t||Array.isArray(t)}}const Ke=[Ae,De,ke,Fe,We,Be,ze,Le,Ye,Pe,qe,je,Ve];class $e{}class Je{}const Ze=new a.InjectionToken("DocumentToken"),Qe="browser",Xe="server",tn="browserWorkerApp",en="browserWorkerUi";function nn(t){return t===Qe}function an(t){return t===Xe}function rn(t){return t===tn}function sn(t){return t===en}const un=new a.Version("8.2.14");let on=(()=>{class t{}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({token:t,providedIn:"root",factory:()=>new ln(Object(a["ɵɵinject"])(Ze),window,Object(a["ɵɵinject"])(a.ErrorHandler))}),t})();class ln{constructor(t,e,n){this.document=t,this.window=e,this.errorHandler=n,this.offset=()=>[0,0]}setOffset(t){this.offset=Array.isArray(t)?()=>t:t}getScrollPosition(){return this.supportScrollRestoration()?[this.window.scrollX,this.window.scrollY]:[0,0]}scrollToPosition(t){this.supportScrollRestoration()&&this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){if(this.supportScrollRestoration()){t=this.window.CSS&&this.window.CSS.escape?this.window.CSS.escape(t):t.replace(/(\"|\'\ |:|\.|\[|\]|,|=)/g,"\\$1");try{const e=this.document.querySelector("#"+t);if(e)return void this.scrollToElement(e);const n=this.document.querySelector(`[name='${t}']`);if(n)return void this.scrollToElement(n)}catch(e){this.errorHandler.handleError(e)}}}setHistoryScrollRestoration(t){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}}scrollToElement(t){const e=t.getBoundingClientRect(),n=e.left+this.window.pageXOffset,a=e.top+this.window.pageYOffset,r=this.offset();this.window.scrollTo(n-r[0],a-r[1])}supportScrollRestoration(){try{return!!this.window&&!!this.window.scrollTo}catch(t){return!1}}}class dn{setOffset(t){}getScrollPosition(){return[0,0]}scrollToPosition(t){}scrollToAnchor(t){}setHistoryScrollRestoration(t){}}},SatO:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("wd/R"))},SeVD:function(t,e,n){"use strict";var a=n("ngJS"),r=n("NJ4a"),i=n("Lhse"),s=n("kJWO"),u=n("I55L"),o=n("c2HN"),l=n("XoHu");n.d(e,"a",(function(){return d}));const d=t=>{if(t&&"function"==typeof t[s.a])return d=t,t=>{const e=d[s.a]();if("function"!=typeof e.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return e.subscribe(t)};if(Object(u.a)(t))return Object(a.a)(t);if(Object(o.a)(t))return n=t,t=>(n.then(e=>{t.closed||(t.next(e),t.complete())},e=>t.error(e)).then(null,r.a),t);if(t&&"function"==typeof t[i.a])return e=t,t=>{const n=e[i.a]();for(;;){const e=n.next();if(e.done){t.complete();break}if(t.next(e.value),t.closed)break}return"function"==typeof n.return&&t.add(()=>{n.return&&n.return()}),t};{const e=Object(l.a)(t)?"an invalid object":`'${t}'`;throw new TypeError(`You provided ${e} where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.`)}var e,n,d}},SgmB:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("LRne"),r=n("5+tZ"),i=n("8Y7J"),s=n("IheW"),u=n("pL04");let o=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("api/role")}delete(t){return this.http.delete("api/role/"+t)}get(t){return this.http.get("api/role/"+t)}create(t){return this.http.post("api/role",t)}clone(t,e){return this.http.post(`api/role/${t}/clone`,{new_name:e})}update(t){return this.http.put("api/role/"+t.name,t)}exists(t){return this.list().pipe(Object(r.a)(e=>{const n=e.some(e=>e.name===t);return Object(a.a)(n)}))}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.c))},token:t,providedIn:u.a}),t})()},SpAZ:function(t,e,n){"use strict";function a(t){return t}n.d(e,"a",(function(){return a}))},SxV6:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("sVev"),r=n("pLZG"),i=n("IzEk"),s=n("xbPD"),u=n("XDbj"),o=n("SpAZ");function l(t,e){const n=arguments.length>=2;return l=>l.pipe(t?Object(r.a)((e,n)=>t(e,n,l)):o.a,Object(i.a)(1),n?Object(s.a)(e):Object(u.a)(()=>new a.a))}},T63f:function(t,e,n){var a=n("0Dky"),r=n("hh1v"),i=n("xrYK"),s=n("2Gvs"),u=Object.isExtensible,o=a((function(){u(1)}));t.exports=o||s?function(t){return!!r(t)&&(!s||"ArrayBuffer"!=i(t))&&(!u||u(t))}:u},TAQX:function(t,e,n){var a=n("im1V");t.exports=function(t,e){return function(n,r){if(null==n)return n;if(!a(n))return t(n,r);for(var i=n.length,s=e?i:-1,u=Object(n);(e?s--:++s<i)&&!1!==r(u[s],s,u););return n}}},THq6:function(t,e,n){var a=n("pMcL"),r=a?a.prototype:void 0,i=r?r.valueOf:void 0;t.exports=function(t){return i?Object(i.call(t)):{}}},TJUb:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e){return a.isPlainObject(e)?a.get(e,t,t):t}}},TNUL:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"TreeNode, tree-node",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div\n        *ngIf="!templates.treeNodeFullTemplate"\n        [class]="node.getClass()"\n        [class.tree-node]="true"\n        [class.tree-node-expanded]="node.isExpanded && node.hasChildren"\n        [class.tree-node-collapsed]="node.isCollapsed && node.hasChildren"\n        [class.tree-node-leaf]="node.isLeaf"\n        [class.tree-node-active]="node.isActive"\n        [class.tree-node-focused]="node.isFocused"\n      >\n        <tree-node-drop-slot\n          *ngIf="index === 0"\n          [dropIndex]="node.index"\n          [node]="node.parent"\n        ></tree-node-drop-slot>\n\n        <tree-node-wrapper\n          [node]="node"\n          [index]="index"\n          [templates]="templates"\n        ></tree-node-wrapper>\n\n        <tree-node-children\n          [node]="node"\n          [templates]="templates"\n        ></tree-node-children>\n        <tree-node-drop-slot\n          [dropIndex]="node.index + 1"\n          [node]="node.parent"\n        ></tree-node-drop-slot>\n      </div>\n      <ng-container\n        [ngTemplateOutlet]="templates.treeNodeFullTemplate"\n        [ngTemplateOutletContext]="{\n          $implicit: node,\n          node: node,\n          index: index,\n          templates: templates\n        }"\n      >\n      </ng-container>\n    </ng-container>\n  '})],t)}()},TWQb:function(t,e,n){var a=n("/GqU"),r=n("I8vh"),i=n("B/qT"),s=function(t){return function(e,n,s){var u,o=a(e),l=i(o),d=r(s,l);if(t&&n!=n){for(;l>d;)if((u=o[d++])!=u)return!0}else for(;l>d;d++)if((t||d in o)&&o[d]===n)return t||d||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},TYzs:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=parseInt(t,10);return isNaN(e)?t:t+(1===Math.floor(e/10)?"th":e%10==1?"st":e%10==2?"nd":e%10==3?"rd":"th")}}},Ta7t:function(t,e,n){var a=n("2oRo"),r=n("I8vh"),i=n("B/qT"),s=n("hBjN"),u=a.Array,o=Math.max;t.exports=function(t,e,n){for(var a=i(t),l=r(e,a),d=r(void 0===n?a:n,a),c=u(o(d-l,0)),f=0;l<d;l++,f++)s(c,f,t[l]);return c.length=f,c}},"TbD+":function(t,e,n){var a=n("QCZx"),r=n("jqoL");t.exports=function(t,e){return a(t,e,(function(e,n){return r(t,n)}))}},TeQF:function(t,e,n){"use strict";var a=n("I+eb"),r=n("tycR").filter;a({target:"Array",proto:!0,forced:!n("Hd5f")("filter")},{filter:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},Tq0f:function(t,e,n){var a=n("Ytn0");t.exports=function(t){var e=a(this,t).delete(t);return this.size-=e?1:0,e}},U02d:function(t,e,n){var a=n("qN6l"),r=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(a){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return r.call(e,t)?e[t]:void 0}},UDhR:function(t,e,n){!function(t){"use strict";t.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},UMSQ:function(t,e,n){var a=n("WSbT"),r=Math.min;t.exports=function(t){return t>0?r(a(t),9007199254740991):0}},USCx:function(t,e,n){!function(t){"use strict";t.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},Uies:function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var a=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==a||"symbol"!=a&&n.test(t))&&t>-1&&t%1==0&&t<e}},UnOm:function(t,e,n){var a=n("ktBm"),r=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=a(e,t);return!(n<0||(n==e.length-1?e.pop():r.call(e,n,1),--this.size,0))}},UpQW:function(t,e,n){!function(t){"use strict";var e=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("wd/R"))},Uqmq:function(t,e,n){var a=n("M+Mf"),r=n("hmSm");t.exports=function t(e,n,i,s,u,o){return r(e)&&r(n)&&(o.set(n,e),a(e,n,void 0,t,o),o.delete(n)),e}},Ur1D:function(t,e,n){!function(t){"use strict";t.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(t,e,n){return t<11?"ekuseni":t<15?"emini":t<19?"entsambama":"ebusuku"},meridiemHour:function(t,e){return 12===t&&(t=0),"ekuseni"===e?t:"emini"===e?t>=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("wd/R"))},UxlC:function(t,e,n){"use strict";var a=n("K6Rb"),r=n("xluM"),i=n("4zBA"),s=n("14Sl"),u=n("0Dky"),o=n("glrk"),l=n("Fib7"),d=n("WSbT"),c=n("UMSQ"),f=n("V37c"),h=n("HYAF"),g=n("iqWW"),p=n("3Eq5"),b=n("DLK6"),m=n("FMNM"),y=n("tiKp")("replace"),v=Math.max,x=Math.min,_=i([].concat),T=i([].push),w=i("".indexOf),O=i("".slice),S="$0"==="a".replace(/./,"$0"),I=!!/./[y]&&""===/./[y]("a","$0");s("replace",(function(t,e,n){var i=I?"$":"$0";return[function(t,n){var a=h(this),i=null==t?void 0:p(t,y);return i?r(i,t,a,n):r(e,f(a),t,n)},function(t,r){var s=o(this),u=f(t);if("string"==typeof r&&-1===w(r,i)&&-1===w(r,"$<")){var h=n(e,s,u,r);if(h.done)return h.value}var p=l(r);p||(r=f(r));var y=s.global;if(y){var S=s.unicode;s.lastIndex=0}for(var I=[];;){var N=m(s,u);if(null===N)break;if(T(I,N),!y)break;""===f(N[0])&&(s.lastIndex=g(u,c(s.lastIndex),S))}for(var C,R="",A=0,k=0;k<I.length;k++){for(var E=f((N=I[k])[0]),L=v(x(d(N.index),u.length),0),D=[],P=1;P<N.length;P++)T(D,void 0===(C=N[P])?C:String(C));var M=N.groups;if(p){var q=_([E],D,L,u);void 0!==M&&T(q,M);var j=f(a(r,void 0,q))}else j=b(E,u,L,D,M,r);L>=A&&(R+=O(u,A,L)+j,A=L+E.length)}return R+O(u,A)}]}),!!u((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}))||!S||I)},"V/fk":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},V2x9:function(t,e,n){!function(t){"use strict";t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},V37c:function(t,e,n){var a=n("2oRo"),r=n("9d/t"),i=a.String;t.exports=function(t){if("Symbol"===r(t))throw TypeError("Cannot convert a Symbol value to a string");return i(t)}},V3my:function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("cp0P"),s=(n("DSvg"),n("SgmB"),n("20UP"),n("Mxhz"),n("OLbh")),u=n("DNAf"),o=(n("sne2"),n("oxzT")),l=n("mtw6"),d=(n("2EZI"),n("1Ni5")),c=n("oMSZ"),f=(n("aexS"),n("9nlD"),n("1nQr"),function(t){return t.editing="editing",t}({}));class h{}n.d(e,"a",(function(){return g}));class g{constructor(t,e,n,a,r,i,s,l,d,c,h,g,p){this.authService=t,this.authStorageService=e,this.route=n,this.router=a,this.modalService=r,this.roleService=i,this.userService=s,this.notificationService=l,this.i18n=d,this.actionLabels=c,this.passwordPolicyService=h,this.formBuilder=g,this.settingsService=p,this.userFormMode=f,this.messages=new u.a({empty:this.i18n("There are no roles.")},this.i18n),this.passwordPolicyHelpText="",this.icons=o.a,this.bsConfig={dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default"},this.resource=this.i18n("user"),this.createForm(),this.messages=new u.a({empty:this.i18n("There are no roles.")},this.i18n)}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({username:["",[a.B.required],[d.a.unique(this.userService.validateUserName,this.userService)]],name:[""],password:["",[],[d.a.passwordPolicy(this.userService,()=>this.userForm.getValue("username"),(t,e,n)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(e),this.passwordValuation=r.defaultTo(n,"")})]],confirmpassword:[""],pwdExpirationDate:[""],email:["",[d.a.email]],roles:[[]],enabled:[!0,[a.B.required]],pwdUpdateRequired:[!0]},{validators:[d.a.match("password","confirmpassword")]})}ngOnInit(){this.router.url.startsWith("/user-management/users/edit")?(this.mode=this.userFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.minDate=new Date;const t=[this.roleService.list(),this.settingsService.getStandardSettings()];Object(i.a)(t).subscribe(t=>{if(this.allRoles=r.map(t[0],t=>(t.enabled=!0,t)),this.pwdExpirationSettings=new c.a(t[1]),this.mode===this.userFormMode.editing)this.initEdit();else if(this.pwdExpirationSettings.pwdExpirationSpan>0){const t=this.userForm.get("pwdExpirationDate"),e=new Date;e.setDate(this.minDate.getDate()+this.pwdExpirationSettings.pwdExpirationSpan),t.setValue(e),t.setValidators([a.B.required])}})}initEdit(){this.disableForEdit(),this.route.params.subscribe(t=>{this.userService.get(t.username).subscribe(t=>{this.response=r.cloneDeep(t),this.setResponse(t)})})}disableForEdit(){this.userForm.get("username").disable()}setResponse(t){["username","name","email","roles","enabled","pwdUpdateRequired"].forEach(e=>this.userForm.get(e).setValue(t[e]));const e=t.pwdExpirationDate;e&&this.userForm.get("pwdExpirationDate").setValue(new Date(1e3*e))}getRequest(){const t=new h;["username","password","name","email","roles","enabled","pwdUpdateRequired"].forEach(e=>t[e]=this.userForm.get(e).value);const e=this.userForm.get("pwdExpirationDate").value;return e&&(this.mode===this.userFormMode.editing&&this.response.pwdExpirationDate===Number(e)/1e3||e.setHours(23,59,59),t.pwdExpirationDate=Number(e)/1e3),t}createAction(){const t=this.getRequest();this.userService.create(t).subscribe(()=>{this.notificationService.show(l.a.success,this.i18n('Created user "{{username}}"',{username:t.username})),this.router.navigate(["/user-management/users"])},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}editAction(){if(this.isUserRemovingNeededRolePermissions()){const t={titleText:this.i18n("Update user"),buttonText:this.i18n("Continue"),bodyTpl:this.removeSelfUserReadUpdatePermissionTpl,onSubmit:()=>{this.modalRef.hide(),this.doEditAction()},onCancel:()=>{this.userForm.setErrors({cdSubmitButton:!0}),this.userForm.get("roles").reset(this.userForm.get("roles").value)}};this.modalRef=this.modalService.show(s.a,{initialState:t})}else this.doEditAction()}isCurrentUser(){return this.authStorageService.getUsername()===this.userForm.getValue("username")}isUserChangingRoles(){return this.isCurrentUser()&&this.response&&!r.isEqual(this.response.roles,this.userForm.getValue("roles"))}isUserRemovingNeededRolePermissions(){return this.isCurrentUser()&&!this.hasUserReadUpdatePermissions(this.userForm.getValue("roles"))}hasUserReadUpdatePermissions(t=[]){for(const e of this.allRoles)if(-1!==t.indexOf(e.name)&&e.scopes_permissions.user){const t=e.scopes_permissions.user;return["read","update"].every(e=>-1!==t.indexOf(e))}return!1}doEditAction(){const t=this.getRequest();this.userService.update(t).subscribe(()=>{this.isUserChangingRoles()?this.authService.logout(()=>{this.notificationService.show(l.a.info,this.i18n("You were automatically logged out because your roles have been changed."))}):(this.notificationService.show(l.a.success,this.i18n('Updated user "{{username}}"',{username:t.username})),this.router.navigate(["/user-management/users"]))},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}clearExpirationDate(){this.userForm.get("pwdExpirationDate").setValue(void 0)}submit(){this.mode===this.userFormMode.editing?this.editAction():this.createAction()}}},V5SL:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="fr-FR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Activer/Désactiver la navigation</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Tableau de bord</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Grappe</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Serveurs</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Moniteurs</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuration</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Carte CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Modules Manager</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Journaux</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Réserves</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloc</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Images</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Mise en miroir</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systèmes de fichiers</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartiments</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sélectionner une langue</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Chargement des données du panneau...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Sélecteur d\'heure Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Réinitialiser les paramètres</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Retour</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Échec du chargement des données.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>sélectionné(e)(s)</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>trouvé(e)(s)</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nom</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Description</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Description longue</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Valeur par défaut</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Valeur par défaut du daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valeurs</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Sauvegarder</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visionneuse de carte CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Chargement...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nom d\'hôte</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Ce champs est requis.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Oui.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annuler</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fermer</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste d\'hôtes</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performance globale</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Aucune entrée trouvée</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Journaux de grappes</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Journaux d\'audit</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Chargement de la configuration...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>La configuration n\'a pas pu être chargée.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Modifier le module Manager</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>La valeur entrée n\'est pas un UUID valide, par exemple : 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>La valeur entrée doit être une adresse IP valide.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>La valeur entrée doit être un nombre.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>La valeur entrée doit être un nombre ou une valeur décimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Mise à jour</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Statut</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID de grappe</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap modifié</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Dans le quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Hors quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Ajouter</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fonctionnalités</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Drapeaux OSD à l\'échelle de la grappe</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Soumettre</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avancé...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorité de récupération des OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorité</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personnaliser les valeurs de priorité</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Ce champ est obligatoire !</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>La valeur doit être comprise entre 0 et 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Réévaluer</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profondeur } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profondeur } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Liste des OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valeur</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifier</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Supprimer</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Santé</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiques</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clients</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Accès possible par tous les clients</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresses</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Champ obligatoire</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Doit contenir une ou plusieurs valeurs séparées par une virgule</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Par exemple :</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Type d\'accès</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Ajouter des clients</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Aucune grappe disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Sélectionner la grappe --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Ajouter un daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend de stockage</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Aucune réserve de données disponible --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Sélectionner le backend de stockage --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Utilisateur Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Aucun utilisateur disponible --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Sélectionner l\'utilisateur Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID utilisateur CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Aucun client disponible --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Sélectionner le client cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nom CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Libellé de sécurité</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Activer le libellé de sécurité</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Chemin CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Le chemin doit commencer par \'/\' et peut être suivi d\'un mot</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Un nouveau répertoire sera créé</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Chemin</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Le chemin peut être constitué d\'un seul \'/\' ou d\'un seul mot</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Un compartiment sera créé</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocole NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Balise NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Les clients ne peuvent pas monter de sous-répertoires (si la balise = foo, le client ne peut pas monter foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>En utilisant différentes options de balise, il est possible d\'exporter plusieurs fois le même chemin.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>En utilisant différentes options de pseudo, il est possible d\'exporter exporter plusieurs fois le même chemin.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Aucun type d\'accès disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Sélectionner le type d\'accès --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Aucun squash disponible --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Sélectionnez le type de squash d\'ID utilisateur qui est effectué --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocole de transport</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Bienvenue dans Ceph !</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nom d\'utilisateur requis</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Mot de passe requis</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Connexion</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Désolé, l\'utilisateur n\'existe pas dans Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Interdit</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Désolé, vous n\'êtes pas autorisé à voir ce que vous cherchez.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuration RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Supprimez la valeur de configuration locale. La valeur de configuration parent sera héritée et utilisée à la place.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>La valeur minimale est 0.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Liste des réserves</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Le nom doit être exclusivement composé de caractères alphanumériques, de tirets et de traits de soulignement.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Le nom de profil du code d\'effacement sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plug-in</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Blocs de données (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Doit être égal ou supérieur à 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Blocs de codage (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Doit être égal ou supérieur à 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimateur de durabilité (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localité (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domaine de défaillance Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localité Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Aucun</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technique</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Taille de paquet</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Racine Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe de périphérique Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>tout</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Répertoire</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nom...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Le nom de réserve Ceph sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Type de réserve</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Sélectionner un type de réserve --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Au moins un groupe de placements est nécessaire.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Votre grappe ne peut pas gérer autant de groupes de placements. Veuillez recalculer le nombre de groupes de placements nécessaires.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Aide au calcul</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Taille de réplication</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Drapeaux</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Écrasements EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Applications</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Aucun profil de code d\'effacement n\'est disponible --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Sélectionner un profil de code d\'effacement --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Jeu de règles Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Sélectionner une règle crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Règle Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Étapes Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compression</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Mode</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorithme</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Aucun algorithme de compression d\'effacement n\'est disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Taille de blob minimale</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>par ex. 128 Kio</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>La valeur doit être supérieure à 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Taille de blob maximale</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>par ex., 512 Kio</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>La valeur doit être supérieure à la taille de blob minimale.</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rapport</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rapport de compression</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>La valeur doit se situer entre 0.0 et 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>par exemple, 10 Gio</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Détails</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Détails des performances</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Détails des niveaux de mise en cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Déplacer une image vers la corbeille.</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protection expire le </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NON PROTÉGÉ</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Format de date incorrect. Veuillez utiliser "AAAA-MM-JJ HH:mm:ss"</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protection a déjà expiré. Veuillez sélectionner une date ultérieure ou laisser le champ vide.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Déplacer une image</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Présentation</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Cibles</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Authentification de la découverte</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utilisateur</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Les noms d\'utilisateur doivent comporter entre 8 et 64 caractères et\n                        ne peuvent contenir que des lettres et les caractères \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Mot de passe</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Utilisateur commun</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Mot de passe commun</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informations disponibles :</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Cibles iSCSI non disponibles</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Réserve</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Réserve de données</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Créé</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Taille</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objets</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Taille de l\'objet</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Provisionné</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Provisionnement total</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unité de segmentation</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Nombre de segmentations</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Parent</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Préfixe du nom de bloc</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Tri</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantanés</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Ce paramètre remplace la valeur globale</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Il s\'agit de la valeur globale. Aucune valeur de cette option n\'a été définie pour cette image.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>Les caractères \'/\' et \'@\' ne sont pas autorisés.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Aucune réserve RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Sélectionner une réserve --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utiliser une réserve de données dédiée</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Réserve de données</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Réserve dédiée qui stocke les données objet du RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Vous devez augmenter la taille.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avancé</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Segmentation</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unité de segmentation</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Sélectionner une unité de segmentation --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Ce champ est obligatoire, car le nombre de segments est défini.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>L\'unité de segmentation est supérieure à la taille de l\'objet.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Nombre de segments</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Ce champ est obligatoire, car l\'unité de segmentation est définie.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Le nombre de segments doit être supérieur à 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Vous êtes sur le point de revenir à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vider la corbeille</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tout</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Réserve :</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nom de la réserve...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurer l\'image</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Pour restaurer</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>saisissez le nouveau nom de l\'image, puis cliquez sur</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nouveau nom</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Expiration le </target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protection jusqu\'au</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologie iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Il n\'est généralement pas nécessaire de modifier ces paramètres par défaut.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Paramètres</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmer</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Paramètres avancés</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN cible</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Modèle IQN incorrect.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Par exemple : iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Plus d\'informations</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Des paramètres avancés de cette cible ont été modifiés.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portails</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Ajouter un portail</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Des paramètres avancés de cette image ont été modifiés.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Ajouter une image</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Authentification ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Initiateurs</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Initiateur</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN client</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>L\'IQN de l\'initiateur doit être unique.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Les noms d\'utilisateur doivent comporter entre 8 et 64 caractères et\n                        ne peuvent contenir que des lettres et les caractères \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'initiateur appartient à un groupe dans lequel les images seront configurées.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Aucun élément ajouté.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Ajouter un initiateur</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Groupes</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Groupe</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Ajouter un groupe</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Corbeille</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problèmes</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronisation en cours</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Prêt</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Modifier le mode de mise en miroir de la réserve</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Les grappes d\'homologues doivent être supprimées avant de désactiver la mise en miroir.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Modifier} other {Ajouter} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nom de grappe</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Le nom de grappe n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>L\'ID CephX n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresses du moniteur</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Adresses séparées par une virgule...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>L\'adresse du moniteur n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Clef CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Clef Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La clef CephX doit être codée en base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Compteurs de performance non disponibles</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Liste de daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Compteurs de performance</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Chargement des données de compartiment...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>La valeur n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Le nom sélectionné est déjà en cours d\'utilisation.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propriétaire</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Sélectionner un utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Activé</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Type d\'index</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Règle de placement</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marqueur</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marqueur maximum</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Version principale</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Date de modification</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Groupe de zones</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota de compartiments</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Taille maximale</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Illimité</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Nombre maximal d\'objets</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nom d\'utilisateur</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Sélectionner un nom d\'utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Générer automatiquement la clef</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clef d\'accès</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clef secrète</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nom complet</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Adresse électronique</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendu</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Système</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nombre maximal de compartiments</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Utilisateurs secondaires</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Fonctionnalités</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Quota utilisateur</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Afficher</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Clefs</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Type</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Sélectionner un type --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Autorisation</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Sélectionner une autorisation --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Utilisateur secondaire</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>L\'ID d\'utilisateur secondaire sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lire, écrire</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>complet</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Clé Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Générer automatiquement le secret</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Chargement des donnés utilisateur…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Les donnés utilisateur n\'ont pas pu être chargées.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>L\'ID utilisateur spécifié est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ceci n\'est pas une adresse électronique valide.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>L\'adresse électronique spécifiée est déjà utilisée.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nombre max. de compartiments</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Désactivé</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personnalisé</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clef S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Il n\'y a aucun utilisateur secondaire.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Il n\'y a pas de clefs.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Il n\'y a aucune fonctionnalité.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Taille illimitée</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Taille max.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objets illimités</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nombre max. d\'objets</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>La valeur saisie doit être &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Description...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Autorisations</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Rôles</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmer le mot de passe</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Le mot de passe de confirmation ne correspond pas au mot de passe.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Adresse électronique</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>L\'adresse électronique n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Vous êtes sur le point de supprimer les autorisations "lecture/mise à jour utilisateur" de votre propre utilisateur.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Si vous continuez, vous ne serez plus en mesure d\'ajouter ni de supprimer des rôles pour n\'importe quel utilisateur.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Voulez-vous vraiment continuer ?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Aide</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentation</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>À propos de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Paramètres du tableau de bord</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestion des utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Utilisateur connecté</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Se déconnecter</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attributs (carte OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Métadonnées non disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Métadonnées</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Compteur de performance</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Écritures</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lectures</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogramme</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valeurs actuelles</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Minimum</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Maximum</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Source</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Niveau</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Mise à jour possible lors de l\'exécution (modifiable)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Balises</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valeurs d\'énuménation</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Voir aussi</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Statut de la grappe</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons du gestionnaire</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Passerelles d\'objet</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Serveurs de métadonnées</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Passerelles iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS client</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Débit client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectures/Écritures client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Débit de récupération</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Nettoyer</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Performance</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacité brute</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Groupes de placements par OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Statut du groupe de placements</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacité</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Rangs</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Actuel</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Authentification de la découverte mise à jour</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Il n\'y a aucun portail disponible.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Il n\'y a aucune image disponible.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Il n\'y a aucune image disponible. Veillez à ajouter une image à la cible.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Il n\'y a aucun initiateur disponible. Veillez à ajouter un initiateur à la cible.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Cible</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>État</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Octets de lecture</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Octets d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Opérations d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O depuis</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problème</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Avancement</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode d\'édition</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Ajouter un homologue</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Modifier un homologue</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Supprimer un homologue</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>nb en local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>nb à distance</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>mettre en miroir l\'homologue</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Clef</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Aplatissement en profondeur</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Superposition</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Verrou exclusif</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Assignation d\'objet (nécessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journalisation (nécessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROTÉGÉ</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Retour à l\'état initial de l\'instantané RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revenir à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Intantané RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Supprimé le</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>type</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>état</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>version</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Hôte</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>racine</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons en veille</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Rang</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Activité</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Utilisation</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Mis à jour</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>La valeur peut être mise à jour au moment de l\'exécution.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Les daemons/clients ne tirent pas cette valeur de\n  la base de données de configuration de Monitor. Nous n\'autorisons pas le réglage de cette option via \'ceph config\n  set ...\'. Cette option doit être configurée via ceph.conf ou via\n  la ligne de commande.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>L\'option ne prend effet qu\'au démarrage du daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>L\'option n\'affecte que la création des grappes.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>L\'option n\'affecte que la création des daemons.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Service</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valeur actuelle</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Modifiable</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Activer</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Désactiver</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconnexion en cours… Veuillez patienter.</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Adresse publique</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessions ouvertes</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Pas rentrés</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Les OSD qui ont été marqués comme sortis ne seront pas marqués comme rentrés à leur démarrage.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Pas sortis</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Les OSD ne seront pas marqués automatiquement comme sortis après l\'intervalle configuré.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Pas démarrés</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Les OSD ne sont pas autorisés à démarrer.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Pas arrêtés</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Les rapports de défaillance des OSD sont ignorés, de sorte que les moniteurs ne marquent pas les OSD comme étant arrêtés.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pause</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Met en pause les lectures et écritures</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Pas de nettoyage</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Nettoyage désactivé</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Pas de nettoyage en profondeur</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Le nettoyage en profondeur est désactivé</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Pas de renvoi</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Le renvoi des groupes de placements est suspendu</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Pas de récupération</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La récupération des groupes de placements est suspendue</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Tri au niveau du bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Utiliser le tri au niveau du bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Variables snapdir purgées</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Les OSD ont converti les variables snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Suppressions des récupérations</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Suppressions effectuées pendant la restauration et non l\'homologation</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite stricte de journalisation des groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Impose une limite stricte à la longueur du journal des groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Drapeaux OSD mis à jour</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>sorti</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>rentré</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>arrêté</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marquer</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdu</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marqué comme perdu</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Purger</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purgé</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>détruire</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>détruit</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>supprimer</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Octets de lecture</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Octets d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Opérations d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Nbre max. de renvois</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Nombre maximum de récupérations actives</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Nombre maximum de démarrages uniques de récupérations</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Mise en veille de la récupération</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Travail</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravité</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Démarré</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilisé</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispo.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Nettoyé</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>En cours</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Avertissement</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Inconnu</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>opérationnel</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>aucun système de fichiers</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>actif</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>veille</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon actif</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Le service NFS Ganesha n\'est pas configuré.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Utilisateur CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Système de fichiers CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(hérité de la configuration globale)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>hérité de la configuration globale</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Sélectionner le type de squashing d\'ID utilisateur effectué --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Aucun daemon n\'est disponible.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Mode cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Âge évict min.</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Âge vidage min.</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Nombre max d\'octets cibles</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nombre max. d\'objets cibles</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Aucune application ajoutée</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Limite d\'applications atteinte</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Une réserve peut avoir quatre définitions d\'application maximum.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caractère autorisés \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La longueur maximale est de 128 caractères.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrer ou ajouter des applications</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Ajouter une application</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Taille de la réplique</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Dernier changement</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Jeu de règles Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartiment</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartiments</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>utilisateur</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Périmètre</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lecture</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Créer</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Rôle système</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Mettre à jour l\'utilisateur</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuer</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Vous avez été automatiquement déconnecté, car vos rôles ont changé.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Chaque objet est divisé en parties de blocs de données, chacune étant stockée sur un OSD différent.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calculez des blocs de codage pour chaque objet et stockez-les sur différents OSD.\n Le nombre de blocs de codage correspond également au nombre d\'OSD qui peuvent être arrêtés sans perdre de données.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Le plugin jerasure est le plugin le plus générique et le plus flexible,\n  c\'est aussi la valeur par défaut des réserves codées à effacement Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La technique la plus flexible est reed_sol_van_van : il suffit de définir k\n et m. La technique cauchy_good peut être plus rapide, mais vous devez choisir la taille du paquet\n avec précaution. reed_sol_r6_op, liberation, blaum_roth et liber8tion sont des équivalents RAID6\n en ce sens qu\'ils ne peuvent être configurés qu\'avec m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>L\'encodage se fera sur des paquets de taille d\'octets.\n  Choisir la bonne taille de paquet est difficile.\n  La documentation de jerasure contient de nombreuses informations à ce sujet.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Avec le plugin jerasure, lorsqu\'un objet codé à effacement est stocké sur\n plusieurs OSD, la récupération à la suite de la perte d\'un OSD nécessite la lecture de tous les autres.\n Par exemple, si jerasure est configuré avec k=8 et m=4, la perte d\'un OSD nécessite de lire\n les onze autres pour pouvoir effectuer une réparation.\n\n Le plugin de code d\'effacement lrc crée des blocs de parité locale pour permettre la récupération avec\n moins d\'OSD. Par exemple, si lrc est configuré avec k=8, m=4 et l=4,\n un bloc de parité supplémentaire est créé pour chaque groupe de quatre OSD. Lorsqu\'un seul OSD est perdu, il peut être\n récupéré avec seulement quatre OSD au lieu de onze.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Regroupez les blocs de données et de codage en ensembles de localité de taille. Par exemple,\n pour k=4 et m=2, lorsque locality=3, deux groupes de trois sont créés. Chaque ensemble peut\n être récupéré sans lire les blocs d\'un autre jeu.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Type de compartiment Crush dans lequel chaque ensemble de blocs défini\n par I sera stocké. Par exemple, s\'il est réglé sur rack, chaque groupe de blocs I sera\n placé dans un rack différent. Il est utilisé pour créer une étape de la règle CRUSH telle que l\'étape de choix\n d\'un rack. S\'il n\'est pas défini, aucun regroupement de ce type n\'est effectué.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Le plug-in isa encapsule la bibliothèque ISA. Il ne fonctionne qu\'avec des processeurs Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Le plugin ISA se présente sous deux formes Reed Solomon.\n Si reed_sol_van est défini, il équivaut à Vandermonde. Si cauchy est configuré, il équivaut à Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Le plug-in shec encapsule la bibliothèque SHEC multiple.\n Il permet à Ceph de récupérer les données plus efficacement qu\'avec les codes Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Nombre de blocs de parité, chacun incluant chaque bloc de données dans sa\n plage de calcul. Ce nombre est utilisé comme estimateur de durabilité. Par exemple, si c=2,\n 2 OSD peuvent être arrêtés sans perte de données.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nom du compartiment crush utilisé pour la première étape de la règle CRUSH.\n Par exemple, l\'étape de définition des valeurs par défaut.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Vérifiez qu\'il n\'existe pas deux blocs dans un compartiment avec le même domaine de\n défaillance. Par exemple, si le domaine de défaillance est un hôte, deux blocs ne seront pas stockés sur le même\n hôte. Cette option est utilisée pour créer une étape de la règle CRUSH telle que chooseleaf host.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restreindre le placement aux périphériques d\'une classe spécifique\n (par exemple, ssd ou hdd), en utilisant les noms des classes de périphériques crush dans la carte CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Définissez le nom du répertoire à partir duquel le plug-in de code d\'effacement est chargé.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Autoriser toutes les opérations</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Autorise uniquement les opérations qui ne modifient pas le serveur</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>N\'autorise pas les opérations de lecture ou d\'écriture, mais toutes les autres.</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>N\'autorise pas la lecture, l\'écriture ni aucune autre opération modifiant les attributs d\'un fichier ou le contenu d\'un répertoire.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>N\'autorise aucun accès</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Sélectionner la priorité --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Faible</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Élevée</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informations</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Les 5 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Les 15 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Les 30 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>La dernière heure (par défaut)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Les 3 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Les 6 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Les 12 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Les 24 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Hier</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Aujourd\'hui</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Depuis le début de la journée</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Avant-hier</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Les 2 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Il y a huit jours</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>La semaine dernière</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Cette semaine</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Depuis le début de la semaine</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Les 7 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Le mois dernier</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Ce mois</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Depuis le début du mois</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Les 30 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Les 90 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Les 6 derniers mois</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>L\'année écoulée</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>L\'année dernière</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Cette année</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Depuis le début de l\'année</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Les 2 dernières années</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Les 5 dernières années</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Aucun élément sélectionné.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Désélectionnez l\'élément pour le sélectionner à nouveau.</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de sélection atteinte</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Balises de filtre</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Ajouter un badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Aucun élément disponible.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Cloner</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copier</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Nettoyage en profondeur</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Détruire</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplatir</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marquer comme arrêté</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marquer comme rentré</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marquer comme perdu</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marquer comme sorti</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Protéger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renommer</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurer</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Déplacer vers la corbeille</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Annuler la protection</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Supprimé</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Cloné</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copié</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Applati</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgé</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restauré</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rétabli à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Oui</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Non</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualité de service</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite de bits/s</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Limite souhaitée d\'octets E/S par seconde.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite E/S par seconde</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Limite souhaitée d\'opérations E/S par seconde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite de bits/s en lecture</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Limite souhaitée de lecture d\'octets par seconde.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Limite souhaitée d\'opérations de lecture par seconde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite de bits/s en écriture</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Limite souhaitée d\'écriture d\'octets par seconde.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Limite souhaitée d\'opérations d\'écriture par seconde.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Rafale de bits/s</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Limite de rafale d\'octets en E/S souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Rafale E/S par seconde</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Limite de rafale d\'opérations E/S souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Rafale E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Limite de rafale d\'octets lus par seconde.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Rafale E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Limite de rafale d\'opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Rafale E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Limite de rafale de lectures d\'octets souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Rafale d\'E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Limite de rafale d\'opérations d\'écriture souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>En cours d\'exécution</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>exécuter</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Exécuté</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tâche inconnue</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>En cours de création</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>créer</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>En cours de mise à jour</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>mettre à jour</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>En cours de suppression</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonage en cours</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>cloner</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>En cours de copie</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copie</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Aplatissement</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>aplatir</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Retour à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rétablir l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>En cours de déplacement</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>déplacer</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Déplacé</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Impossible de trouver l\'image.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>En cours de restauration.</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurer</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>En cours de purge</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>purger</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>toutes les réserves</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossible de désactiver la mise en miroir, car l\'élément contient un homologue.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},VLqJ:function(t,e,n){var a=n("0GLT"),r=n("QpVZ"),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;t.exports=function(t,e){if(a(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!r(t))||s.test(t)||!i.test(t)||null!=e&&t in Object(e)}},VRyK:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("HDdC"),r=n("z+Ro"),i=n("bHdf"),s=n("yCtX");function u(...t){let e=Number.POSITIVE_INFINITY,n=null,u=t[t.length-1];return Object(r.a)(u)?(n=t.pop(),t.length>1&&"number"==typeof t[t.length-1]&&(e=t.pop())):"number"==typeof u&&(e=t.pop()),null===n&&1===t.length&&t[0]instanceof a.a?t[0]:Object(i.a)(e)(Object(s.a)(t,n))}},VTlA:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("mSOc"),n("ufoC");class a{constructor(t,e){this.taskMessageService=t,this.summaryService=e}init(t,e,n,a,r,i,s){this.getUpdate=t,this.preProcessing=e,this.setList=n,this.onFetchError=a,this.taskFilter=r,this.itemFilter=i,this.builders=s||{},this.summaryDataSubscription=this.summaryService.subscribe(t=>{this.getUpdate().subscribe(e=>{this.updateData(e,t.executing_tasks.filter(this.taskFilter))},this.onFetchError)},this.onFetchError)}updateData(t,e){const n=this.preProcessing?this.preProcessing(t):t;this.addMissing(n,e),n.forEach(t=>{const n=e.filter(e=>this.itemFilter(t,e));t.cdExecuting=this.getTaskAction(n)}),this.setList(n)}addMissing(t,e){const n=this.builders.default;e.forEach(e=>{const a=t.find(t=>this.itemFilter(t,e)),r=this.builders[e.name];a||!r&&!n||t.push(r?r(e.metadata):n(e.metadata))})}getTaskAction(t){if(0!==t.length)return t.map(t=>{const e=t.progress?` ${t.progress}%`:"";return this.taskMessageService.getRunningText(t)+"..."+e}).join(", ")}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}}},VXsX:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("LvDl"),r=n("8Y7J");class i{constructor(t,e,n){this.name=t,this.metadata=e,this.onTaskFinished=n}}let s=(()=>{class t{constructor(){this.subscriptions=[]}init(t){return t.subscribe(t=>{const e=t.executing_tasks,n=t.finished_tasks,a=[];for(const r of this.subscriptions){const t=this._getTask(r,n),i=this._getTask(r,e);null!==t&&null===i&&r.onTaskFinished(t),null!==i&&a.push(r),this.subscriptions=a}})}subscribe(t,e,n){this.subscriptions.push(new i(t,e,n))}_getTask(t,e){for(const n of e)if(n.name===t.name&&a.isEqual(n.metadata,t.metadata))return n;return null}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},Vclq:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("wd/R"))},Vhfg:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("lJxs"),r=n("ej+x"),i=n("8Y7J"),s=n("iInd");let u=(()=>{class t{constructor(t,e){this.router=t,this.featureToggles=e}canActivate(t){return this.featureToggles.get().pipe(Object(a.a)(e=>!1!==e[t.routeConfig.path]||(this.router.navigate(["404"]),!1)))}canActivateChild(t){return this.canActivate(t.parent)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.m),i["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})()},ViD7:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="cs">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Zobraz./skrýt navigaci</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Přehled</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klastr</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Stroje</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Služby</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Nastavení</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH mapa</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Moduly správy</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Záznamy událostí</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Fondy</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blok</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Obrazy</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Zrcadlení</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Souborové systémy</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektová brána</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Procesy služeb</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Uživatelé</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Nádoby</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Získávají se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pro\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Čekejte…\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Zobrazují se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>z mezipaměti\n  pro \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Nedaří se načíst dat \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pro\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Zkontrolujte zdraví klastru.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Vyčistit oznámení</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Odebrat oznámení</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Trvání:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>Nejsou zde žádná oznámení.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Úlohy a oznámení</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Vyberte jazyk</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Načítání údajů panelu…</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Nahlédněte do\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, kde naleznete jak\n  nastavit a zapnout funkci monitorování.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana přehled neexistuje. Podívejte se do\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> jak\n  přidat přehledy do Grafany.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Volič čas Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Resetovat nastavení</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Načíst znovu</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Odebrat uživatelsky určenou hodnotu nastavení. Namísto toho bude převzato a použito výchozí nastavení.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Nemůže být vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Nemůže být nižší než 1.</target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zpět</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Data se nepodařilo načíst</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>vybráno</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>nalezeno</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>celkem</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Název</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Popis</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Podrobnější popis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Výchozí</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Výchozí pro proces služby</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Hodnoty</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Nemůže být vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Nemůže být nižší než \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Uložit</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>prohlížeč CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Načítání…</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Název stroje</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Tuto kolonku je třeba vyplnit.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>Zvolený název stroje už je používán.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Opravdu chcete \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Opravdu chcete označené položky \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> ?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Opravdu chcete \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> označené \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ano, opravdu to chci.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Storno</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zavřít</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Seznam strojů</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Celková výkonnost</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Zařízení</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenalezeny žádné položky</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Záznamy událostí v klastra</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Auditní záznamy událostí</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priorita:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Klíčové slovo:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Datum:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Volba data</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Časový rozsah:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Načítání nastavení…</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Toto nastavení se nepodařilo načíst.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Upravit modul správy</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Zadaná hodnota není platné UUID, např.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Je třeba, aby zadaná hodnota byla platnou IP adresou.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Je třeba, aby byla nižší nebo rovná \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Je třeba, aby byla vyšší než nebo rovná \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Je třeba, aby zadaná hodnota byla číslo.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Je třeba, aby zadaná hodnota byla číslo nebo desítkové.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aktualizovat</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Stav</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Identif. kastru</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>mapa monitorů změněna</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epocha</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kvórum spojení</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kvórum monitor</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>vyžadováno spojení</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>vyžadováno monitorů</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>V kvóru</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Není v kvóru</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Přidat</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funkce</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Příznaky OSD pro celý klastr</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Odeslat</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Pokročilé…</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Pokročilé volby nastavení</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorita obnovení OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorita</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Přizpůsobit hodnoty priority</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Tuto kolonku je třeba vyplnit!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká, je třeba, aby nebyla vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Je třeba, aby byla nižší než \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Je třeba, aby hodnota byla mezi 0 a 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Znovu vyvážit</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSD \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>kontrola\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, vybrat, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, vybrat, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Seznam OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Ticha</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Vyberte atribut vůči kterému hledat shodu --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Hodnota</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Použít regulární výraz</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Upravit</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Smazat</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Úprava ticha skončí platnost původního ticha a znovu ho vytvoří jako nové ticho</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Tvůrce</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Komentář</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Čas začátku</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>Pokud čas začátku leží v minulosti, bude namísto něj použit okamžik vytvoření</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Trvání</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>Čas konce</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdraví</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiky</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Ohledně nastavení a zapnutí funkce správy NFS Ganesha nahlédněte do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klienti</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Přistupovat může libovolný klient</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresy</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Vyžadovaná kolonka</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Je třeba, aby obsahovalo jednu nebo více čárkou oddělovaných hodnot</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Například:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ přístupu</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Přidat klienty</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Žádný klastr k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Vyberte klastr --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Přidat proces služby</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Podpůrná vrstva úložiště</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Žádné fondy k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Vyberte podpůrnou vrstvu úložiště --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Uživatel objektové brány</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Žádní uživatelé k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Vyberte uživatele brány objektů --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>Identif. uživatele CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Žádní klienti k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Vyberte cephx klienta --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Název CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- Žádný souborový systém CephFS k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Vyberte CephFS souborový systém --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Štítek zabezpečení</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Zapnout štítek zabezpečení</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Popis umístění CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Je třeba, aby popis umístění začínal na „/“, za kterým následuje slovo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Bude vytvořena nová složka</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Popis umístění</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Popis umístění může být pouze jediné „/“ nebo slovo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Bude vytvořena nová nádoba</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS protokol</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS štítek</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternativní přístup pro \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> připojení (nemůže začínat na /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klienti nemohou připojovat podsložky (tj. pokud Tag = neco, klient nemůže připojit neco/podslozka).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Použitím různých voleb Štítku, může to stejné umístění být exportováno vícekrát.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>Pozice kterou tento \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export zabírá\n                v \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (je třeba, aby se neopakovalo).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>By using different Pseudo options, the same Path may be exported multiple times.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Je třeba, aby Pseudo začínalo na „/“ a a nemůže obsahovat nic z následujícího: &gt;, &lt;, |, &amp;, ( nebo ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Žádný typ přístupu k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Vyberte typ přístupu --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Žádné squash k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Vyberte jaký druh squashování identifikátor uživatele je prováděn --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportní protokol</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Původní heslo</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>Je třeba, aby původní a nové heslo nebyly stejné</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>Nové heslo</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Zopakování zadání nového hesla</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Kontrolní zadání nového hesla se neshoduje.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Vítejte v Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Je třeba vyplnit uživatelské jméno</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Je třeba vyplnit heslo</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Přihlásit</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Je nám líto, uživatel v Ceph neexistuje.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Vrátit se na \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Přihlašovací stránku\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Budete odhlášeni od poskytovatele identity když se pokusíte znovu přihlásit.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Odepřeno</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Omlouváme se, ale nemáte oprávnění zobrazit to, po čem se  poohlížíte.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>Data obdržena v JSON formátu verze 2.x, což je v tuto chvíli nekompatibilní s přehledem.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>výsledek SMART testu samoposouzení celkového stavu</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Informace o zařízení</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Nastavení RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Odebrat hodnotu místnímu nastavení. Namísto ní bude použita hodnota nadřazeného nastavení.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minimální hodnota je 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Seznam fondů</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Název může být tvořen pouze písmeny a číslicemi, dále ještě spojovníky a podtržítky.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Zvolený název pro profil mazacího kódu je už používán.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Zásuvný modul</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Shluky dat (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Je třeba, aby bylo 2 a více.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Shluky kódování (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Je třeba, aby bylo 1 a více.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Odhadování odolnosti (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Umístění (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Doména selhání crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalita crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Žádné</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technika</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Velikostpaketu</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Kořen crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Třída crush zařízení</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>libovolné</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Složka</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Název…</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Zvolený název pro Ceph fond je už používán.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Není možné vytvořit RBD fond s názvem „/“ v názvu.\n              Změňte název nebo \'rbd\' odeberte ze seznamu aplikací.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Typ fondul</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Vybrat typ fondu --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Je třeba alespoň jedné skupiny umístění!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Váš klastr nemůže obsloužit tolik skupin umístění. Přepočítejte potřebné množství skupin umístění.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Nápověda k výpočtu</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikovaná velikost</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Nejméně: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Nejvíce: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>Zadaná velikost je mimo rozsah. Platná hodnota je\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> až \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> .\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Příznaky</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC přebití</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplikace</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil mazacího kódu</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Žádný profil mazacího kódu --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Vyberte profil mazacího kódu --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Sada pravidel crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Vybrat crush pravidlo --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush pravidlo</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush kroky</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Komprese</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Režim</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmus</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Žádný algoritmus komprese mazání --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimální velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>např. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Hodnota by měla být vyšší než nula</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Hodnota by měla být nižší než maximální velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Nejvyšší velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>např. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Hodnota by měla být vyšší než nejnižší velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Poměr</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Kompresní poměr</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Hodnota by měla být z rozmezí 0.0 až 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Kvóty</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Nejvýše bajtů</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Pro vypnutí této kvóty nevyplňujte nebo zadejte 0 (nulu).</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>Platná kvóta by měla být vyšší než 0 (nula).</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>např. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>Hodnota by měla být vyšší nebo rovna 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Podrobnosti</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Podrobnosti o výkonnosti</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Podrobnosti o stupních mezipaměti</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Přesunout obraz do koše</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Platnost ochrany skončí v</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NECHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Chybný formát data. Použijte „RRRR-MM-DD HH:mm:ss“.</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Platnost ochrany už skončila. Zvolte budoucí datum nebo nevyplňujte.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Přesunout obraz</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Brány</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Je třeba, aby bylo vyšší nebo rovno \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Je třeba, aby bylo nižší nebo rovno \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Přehled</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Cíle</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Uživatele</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména byla 8 až 64 znaků dlouhá a\n              mohu obsahovat pouze písmena a znaky „.“, „@“, „-“, „_“ a „:“.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Heslo</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla byla 12 až 16 znaků dlouhá\n              a mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Uživatel pro vzájemné ověření</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Heslo pro vzájemné ověření</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby heslo byla 12 až 16 znaků dlouhá a\n              mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Podívejte se do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  jak nastavit a zapnout funkci správy iSCSI cílů.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informace k dispozici:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI cíl není k dispozici</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>K dispozici pouze pro RBD obrazy se zapnutým \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Fond</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datový fond</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Vytvořeno</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Velikost</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objekty</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Velikost objektu</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Poskytováno</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>neaplikovatelné</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Celkem poskytováno</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Proužkovací jednotka</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Počet proužkování</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Nadřazené</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Předpona názvu bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Pořadí</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Zachycené stavy</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Toto nastavení přebije globální hodnotu</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globální</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Toto je globální hodnota. Pro tento obraz nebyla u této volby nastavena žádná hodnota.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> od\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>„/“ a „@“ nejsou dovoleny.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Žádné rbd fondy k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Vybrat fond --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Použít vyhrazený datový fond</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datový fond</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Vyhrazený fond který uchovává objektová data RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Je třeba zvětšit.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Pokročilé</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Proužkování</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednotka proužku</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Vybrat jednotku proužku --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Tuto kolonku je třeba vyplnit, protože je definován počet proužků!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Jednotka proužku je vyšší než velikost objektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Počet proužků</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Tuto kolonku je třeba vyplnit, protože je definována jednotka proužku!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Je třeba, aby počet proužků byl větší než nula.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Chystáte se vrátit zpět</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vysypat koš</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Vše</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Fond:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Název fondu…</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Obnovit obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Pro obnovení</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>zadejte nový název pro obraz a klikněte na</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nový název</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Platnost skončila v</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Chráněno do</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>Tento obraz je chráněn do\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologie iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Měnit tyto parametry z jejich výchozích hodnot obvykle není potřeba.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Nastavení</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Potvrdit</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pokročilá nastavení</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN cíle</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN nemá správný formát.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN má následující formu zápisu\n                \'iqn.$rok-$mesic.$adresaObracene:$definovanyNazev\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Například: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Další informace</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Tento cíl má změněná pokročilá nastavení.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portály</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Přidat portál</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Je třeba alespoň \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> bran.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Tento obraz má změněná nastavení.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Přidat obraz</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL ověřování</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména měla délku 8 až 64 znaků a\n                obsahovala pouze písmena a případně ještě znaky „.“, „@“, „-“, „_“ nebo „:“.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 až 16 znaků\n                a obsahovala písmena a znaky „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciátory</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciátor</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN klienta</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Je třeba, aby se IQN iniciátoru neopakovalo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména měla délku 8 až 64 znaků a\n                        mohou obsahovat pouze písmena a znaky „.“, „@“, „-“, „_“ nebo „:“.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 až 16 znaků\n                        a mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 znaků 16 a\n                        mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Iniciátor spadá do skupiny. Obrazy budou nastaveny ve skupině.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nepřidány žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Přidat iniciátor</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Skupiny</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Skupina</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Přidat skupinu</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Koš</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>problémy</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronizuje se</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Připraveno</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Upravit režim zrcadlení fondu</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Pro úpravu režimu zrcadlení pro fond \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, vyberte ze seznamu nový režim a klikněte na \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aktualizovat\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Před vypnutím zrcadlení je třeba odebrat klastry-protějšky.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  protějšek zrcadlení fondu\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Název klastru</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Název klastru není platný</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX identif.</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX identif. …</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX identif. není platný.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresy monitorů</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Čárkou oddělované adresy…</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Adresa monitoru není platná.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX klíč</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Klíč v base64 kódování…</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Je třeba, aby CephX klíč byl v kódování base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Výkonnostní čítače nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Podívejte se do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  jak nastavit a zapnout funkci správy brány objektů.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Seznam procesů služeb</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Výkonnostní čítače</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Načítání dat nádoby…</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Identif.</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Hodnota není platná.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Zvolený název už je používán.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Vlastník</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Vybrat uživatele --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Cíl umístění</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Vybrat cíl umístění --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Verzování</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Zapnuto</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>Identif.</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Typ rejstříku</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Pravidlo umístění</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Označovač</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Nejvyšší označovač</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Verze</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Hlavní verze</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Okamžik úpravy</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Skupinazóny</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kvóta nádoby</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Nejvyšší velikost</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Neomezeno</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Uživatelské jméno</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Vybrat uživatelské jméno --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Automaticky vytvořit klíč</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Přístupový klíč</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajný klíč</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Celé jméno</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-mailová adresa</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Systém</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nejvýše nádob</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Dílčí uživatelé</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Schopnosti</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kvóta uživatele</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Zobrazit</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Klíče</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Vybrat typ --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Oprávnění</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Vybrat oprávnění --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Dílčí uživatel</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Zvolený identifikátor dílčího uživatele už je používán.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>číst, zapisovat</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>plné</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift klíč</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Automaticky vytvořit tajemství</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Načítání údajů uživatele…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Údaje uživatele se nepodařilo načíst.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Zvolený identif. uživatele už je používán.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Toto není platná e-mailová adresa.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Zvolená e-mailová adresa už je používána.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nejvýše nádob</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Vypnuto</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Uživatelsky určené</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 klíč</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nejsou zde žádní dílčí uživatelé.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Nejsou zde žádné klíče.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nejsou zde žádné schopnosti.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Neomezená velikost</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Nejvyšší velikost</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Neomezené objekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Je třeba, aby zadaná hodnota byla 0 a vyšší.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Popis…</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Oprávnění</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potvrzení zadání hesla</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Zadání hesla se neshodují.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Neplatný e-mail.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Chystáte se odebrat oprávnění „uživatel číst/aktualizovat“ svému vlastnímu účtu.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Pokud budete pokračovat, nebudete nadále schopní přidávat nebo nebo odebírat role žádnému z uživatelů.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Opravdu chcete pokračovat?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Nápověda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentace</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>Aplikační program. rozhraní</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>O aplikaci</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Nastavení přehledu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Správa uživatelů</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Přihlášený uživatel</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Přihlášeni jako\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Změnit heslo</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Odhlásit</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributy (OSD mapa)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadata nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadata</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Stav zařízení</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Výkonnostní čítač</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram není k dispozici: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Zápisy</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Čtení</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Stávající hodnoty</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Zdroj</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Úroveň</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Je možné aktualizovat za provozu (upravitelné)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Štítky</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Vyčíslit hodnoty</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Viz také</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Stav klastru</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Procesy služby správy</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektové brány</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Metadata servery</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI brány</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>vst/výst. klienta</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Propustnost klienta</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Čtení/zápis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Propustnost zotavení</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Kontrola</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Výkonnost</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Holá kapacita</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Skupin umístění na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stav skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapacita</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>Další podrobnosti \n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> naleznete v \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>záznamech událostí\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Hodnocení</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>čítače výkonnosti MDS</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Složky</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Klienti (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Stávající</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Aktualizováno ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Nejsou k dispozici žádné portály.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nejsou k dispozici žádné obrazy.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Nejsou k dispozici žádné obrazy. Ověřte, že jste cíli přidali obraz.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Nejsou k dispozici žádné iniciátory. Ověřte, že jste cíli přidali iniciátor.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>cíl</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Cíl</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target>Počet relací</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Cíl má aktivní relace</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI cíl</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stav</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target>Počet cílů</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bajtů čtení</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bajtů zápis</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operací/s čtení</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operací/s zápis</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O od</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problém</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Ukazatel postupu</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Upravit režim</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Přidat protějšek</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Upravit protějšek</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Smazat protějšek</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Vedoucí</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Počet místních</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Počet vzdálených</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>zrcadlit protějšek</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Klíč</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Hluboké zploštění</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Vrstvení</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Výhradní zámek</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa objektů (vyžaduje výhradní zámek)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Žurnálování (vyžaduje výhradní zámek)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Je třeba, aby nadřazený obraz podporoval vrstvy</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>CHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NECHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Vrácení zachyceného stavu RBD zpět</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Vrácení zpět</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Zachycený stav RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Smazáno v</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>identif.</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stav</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>verze</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Stroj</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>kořen</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Procesy služeb v pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Hodnocení</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Proces služby</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivita</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Struktury složek</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>I-uzlů</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Využití</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Původ</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualizováno</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Hodnotu je možné aktualizovat za chodu.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Procesy služeb / klienti nezískávají tuto hodnotu\n      z databáze nastavení monitoru. Není umožněno nastavit tuto volbu\n      prostřednictvím „ceph config set …\'. Tato volba by měla být nastavena\n      z příkazového řádku.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Volba se uplatní pouze při spouštění procesu služby.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Volba ovlivní pouze vytváření klastru.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Volba ovlivní pouze vytvoření procesu služby.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Aktualizována volba nastavení \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Služba</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Stávající hodnota</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Upravitelné</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>stroj</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Popis umístění zařízení</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>K dispozici</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Aktualizována volba pro modul „\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Zapnout</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Vypnout</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>Modul Zpráva je vždy zapnutý.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Opětovné připojování, čekejte…</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Veřejná adresa</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otevřené relace</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Počet do</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD které byly dříve odznačeny nebudou označeny nazpět když spustí</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Počet ven</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD nebudou automaticky odznačeny po nastaveném intervalu</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Počet aktivních</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD není dovoleno spuštění</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Počet neaktivních</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Hlášení o selhání OSD jsou ignorovány, jako například že monitory OSD neoznačí jako nedostupné</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pozastavit</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pozastavit čtení a zápisy</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Žádná kontrola</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Kontrola je vypnutá</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Žádná hloubková kontrola</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Hloubková kontrola je vypnutá</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Žádné zasypávání</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasypávání skupin umístění je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Žádné obnovení</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Obnovování skupin umístění je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitové třídění</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Třídit podle bitů</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Vyčištěné složky zachycených stavů</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD mají převedené sady zachycených stavů</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Smazáno při zotavování</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Mazání provedená při obnovování namísto peeringu</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Nepřekročitelný limit záznamu událostí PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Zapne nepřekročitelný limit na délku záznamu událostí v pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualizovány OSD příznaky</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>ven</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>dovnitř</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>nedostupné</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Značka</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD ztraceno</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>označeno jako ztracené</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Vyčistit</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>vyčištěno</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>zlikvidovat</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>zlikvidováno</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>smazat</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Priorita zotavování</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Přečteno bajtů</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapsáno bajtů</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operací/s čtení</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operací/s zápis</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Označit OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Označit \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max Backfills</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Recovery Max Active</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Recovery Max Single Start</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Uspání zotavení</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Aktualizována rychlost zotavení OSD „\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Úloha</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Závažnost</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Zahájeno</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL adresa</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>ticho</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Název atributu</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regulární výraz</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Přidejte hostitele s Prometheus do nastavení přehledu a znovu načtete stránku</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Vytvořil(a)</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Končí</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Ticho</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Popis stavu</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Použito</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>K dispozici</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Čisté</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Pracující</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Varování</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Neznámé</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Zdravé</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Chybně umístěno</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degradováno</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Odnalezeno</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>repliky</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktivní</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>žádné souborové systémy</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktivní</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>v pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>neaplikovatelné</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktivní proces služby</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kvórum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Služba NFS Ganesha není nastavena.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS uživatel</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Souborový systém CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(převzato z globálního nastavení)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>převzato z globálního nastavení</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Vyberte jaký druh squashování identifikátor uživatele je prováděn --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Nejsou k dispozici žádné procesy služeb.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC profil</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Režim mezipaměti</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min Evict Age</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min Flush Age</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Nejvýše bajtů cíle</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nejvýše objektů cíle</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nebyla přidána žádná aplikace</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Dosažen limit aplikací</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Fond může mít nejvýše čtyři definice aplikací.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Použitelné znaky „_a-zA-Z0-9“</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Nejvyšší délka je 128 znaků</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrovat nebo přidat aplikace</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Přidat aplikaci</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>fond</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil mazacího kódu</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Velikost repliky</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Nejnovější změna</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Mazáním kódovaný profil</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Sada crush pravidel</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Smazání fondu je vypnuto nastavením mon_allow_pool_delete configuration.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>nádoba</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Vytvořena nádoba objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>nádoby</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>schopnost</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>uživatel</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>dílčí uživatel</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 klíč</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Aktualizován uživatel objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Vytvořen uživatel objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>uživatelé</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift klíč</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>Vyskytla se chyba s kódem \n          <x id="INTERPOLATION" equiv-text="{{code}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Nezpracované</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Práh</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>Když se nezdařilo</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Nejhorší</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Rozsah</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Čtení</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Vytvořit</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Vytvořena role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Aktualizována role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Systémová role</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Smazána role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>Nejsou zde žádné role.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Vytvořen uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aktualizovat uživatele</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Pokračovat</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Byli jste automaticky odhlášeni protože vaše role byly změněny.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Aktualizován uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Smazán uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Nepodařilo se smazat uživatele „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>Nyní jste přihlášení jako „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“.\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>heslo</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Aktualizované heslo uživatele"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Každý objekt je rozdělen v částech shluků dat, každé uložené na jiném OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Počítat kódovací shluky pro každý objekt a ukládat je na různých OSD.\n      Počet kódovacích shluků je také počet OSD, které mohou vypadnou, aniž dojde ke ztrátě dat.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Zásuvný modul jerasure je nejobecnější a nejpřizpůsobivější,\n je také výchozí pro Ceph fondy kódované mazáním.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Přizpůsobivější technikou je reed_sol_van: postačí nastvit k\n          a m. Technika cauchy_good technique může být rychlejší, ale je třeba pečlivě nastavit velikost\n          paketu. Všechny z reed_sol_r6_op, liberation, blaum_roth, liber8tion jsou ekvivalenty RAID6\n          v tom smyslu, že je možné je nastavit pouze s m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Zásuvný modul isa obaluje knihovnu ISA. Funguje pouze na procesorech Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Zásuvný modul ISA přichází ve dvou Reed Solomon podobách.\n          Pokud je nastaveno reed_sol_van, je to Vandermonde, pokud je nastaveno Cauchy, je Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Počet paritních shluků, ze kterých každý obsahuje každý shluk dat ve svém\n          výpočetním rozsahu. Číslo je použito pro odhad odolnosti. Například, pokud c=2,\n          2 OSD mohou vypadnou aniž by byla ztracena data.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Název crush nádoby sloužící jako první krok CRUSH pravidla.\n Například krok vzít výchozí.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Zajistit, aby žádné dva shluky nebyly v nádobě nacházejícící se ve stejné\n      doméně selhání. Například, pokud doména selhání je hostitel, žádné dva shluky nebudou uloženy na stejném hostiteli\n      Je použito pro vytvoření kroku CRUSH pravidla jako krok chooseleaf hostitele.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Omezit umístění na zařízení určité třídy\n      (např., ssd nebo hdd), pomocí názvu crush třídy zařízení v  CRUSH mapě.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Nastavit složku ze které načítat zásuvný modul mazacího kódu.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Umožnit všechny operace</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Umožnit pouze operace které neupraví server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Neumožňuje operace čtení či zápisu, ale umožňuje ostatní</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Neumožňuje čtení, zápis nebo jinou operaci která upravuje atributy        souboru nebo obsah složky</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Neumožnit vůbec žádný přístup</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Vyberte prioritu --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Nízká</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Vysoká</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Chyba</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informace</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Úspěch</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Uplynulých 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Uplynulých 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Uplynulých 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Uplynulá 1 hodina (výchozí)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Uplynulé 3 hodiny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Uplynulých 6 hodin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Uplynulých 12 hodin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Uplynulých 24 hodin</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Včera</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Dnes</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Dnes doposud</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Včerejšek</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Uplynulé 2 dny</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Tento den minulý týden</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Předchozí týden</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Tento týden</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Tento týden doposud</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Uplynulých 7 dnů</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Předchozí měsíc</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Tento měsíc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Tento měsíc doposud</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Uplynulých 30 dnů</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Uplynulých 90 dnů</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Uplynulých 6 měsíců</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Uplynulý 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Předchozí rok</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Tento rok</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Tento rok doposud</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Uplynulé 2 roky</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Uplynulých 5 let</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nevybrány žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Aby položku bylo možné znovu vybrat, je třeba nejprve zrušit její výběr</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Dosažen limit výběru</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrovat štítky</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Přidat odznak</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Nejsou k dispozici žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Odebrat</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonovat</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopírovat</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Hloubková kontrola</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Zlikvidovat</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Zploštit</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Označit</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Označit</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Označit ztracené</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Odznačit</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Ochránit</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Přejmenovat</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Obnovit</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Přesunout do koše</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Zrušit ochranu</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Změnit</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Znovuvytvořit</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Ukončit platnost</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Smazáno</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Přidáno</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Odebráno</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Upraveno</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Zrušeno</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Naklonováno</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Zkopírováno</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Zlikvidováno</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Zploštěno</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Označeno jako ztracené</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Chráněno</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Vyčištěno</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Přejmenováno</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Obnoveno</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Vzato zpět</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Zobrazeno</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Přesunout do koše</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Ochrana zrušena</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Znovu vytvořeno</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Platnost skončila</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ano</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Ne</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>žádné aktivní výstrahy</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>Jedna aktivní výstraha</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> aktivních výstrah\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Odpovídá jednomu pravidlu</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Odpovídá \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> pravidlům\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> s \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kvalita služby</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Požadovaný limit vst./výstup. bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit vst/výstup. operací / s</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Požadovaný limit vst./výstup. operací za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limit BPS čtení</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Požadovaný limit čtení bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limit IOPS čtení</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Požadovaný limit operací čtení za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit BPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Požadovaný limit zápisu bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit IOPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Požadovaný limit operací čtení za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS dávka</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Požadovaný limit dávky bajtů vstup/výstupu.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS dávka</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Požadovaný limit dávky vst./výstup. operací.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Dávka BPS čtení</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Požadovaný limit dávky bajtů čtení.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Dávka IOPS čtení</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Požadovaný limit dávky čtení bajtů.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Dávka BPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Požadovaný limit bajtů dávky zápisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Dávka IOPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Požadovaný limit dávky operace zápisu.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Nepodařilo se \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Vykonává se</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>vykonat</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Vykonáno</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>neznámý úkol</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Vytváří se</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>vytvořit</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aktualizuje se</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aktualizovat</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Maže se</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Přidávání</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>přidat</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Odebírání</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>odebrat</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD zachycený stav „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>režim zrcadlení pro fond „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>protějšek zrcadlení pro fond „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>všechny přehledy</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> obsahuje zachycené stavy.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Klonuje se</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klonovat</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Je třeba, aby zachycený stav \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> byl chráněný.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kopíruje se</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>zkopírovat</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Zploštění</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>zploštit</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Název už je používán pro \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Není možné zrušit ochranu \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, protože obsahuje podřízené obrazy.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> není možné smazat, protože je chráněné.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Bere se zpět</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>vzít zpět</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Přesouvá se</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>přesunout</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Přesunuto</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ do koše\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Obraz se nedaří najít.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Obnovuje se</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>obnovit</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ do „\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Název „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ už je používán pro jiný obraz.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Čistí se</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>vyčistit</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>všechny fondy</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>obrazy z \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Zrcadlení nelze vypnout protože obsahuje protějšek.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>stroj „\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>fond „\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>profil mazacího kódu „\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>cíl „\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},VpIT:function(t,e,n){var a=n("xDBR"),r=n("xs3f");(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.20.0",mode:a?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},Vu81:function(t,e,n){var a=n("0GbY"),r=n("4zBA"),i=n("JBy8"),s=n("dBg+"),u=n("glrk"),o=r([].concat);t.exports=a("Reflect","ownKeys")||function(t){var e=i.f(u(t)),n=s.f;return n?o(e,n(t)):e}},WF9J:function(t,e,n){"use strict";n("TeQF"),n("QWBl"),n("4mDm"),n("zKZe"),n("07d7"),n("4l63"),n("PKPk"),n("ENF9"),n("3bBZ");var a,r=n("hKI/"),i=n.n(r),s=n("9/5/"),u=n.n(s),o=n("uyHG"),l=n.n(o),d=[],c="ResizeObserver loop completed with undelivered notifications.";!function(t){t.BORDER_BOX="border-box",t.CONTENT_BOX="content-box",t.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"}(a||(a={}));var f,h=function(t){return Object.freeze(t)},g=function(t,e){this.inlineSize=t,this.blockSize=e,h(this)},p=function(){function t(t,e,n,a){return this.x=t,this.y=e,this.width=n,this.height=a,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,h(this)}return t.prototype.toJSON=function(){var t=this;return{x:t.x,y:t.y,top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:t.width,height:t.height}},t.fromRect=function(e){return new t(e.x,e.y,e.width,e.height)},t}(),b=function(t){return t instanceof SVGElement&&"getBBox"in t},m=function(t){if(b(t)){var e=t.getBBox();return!e.width&&!e.height}return!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},y=function(t){var e,n;if(t instanceof Element)return!0;var a=null===(n=null===(e=t)||void 0===e?void 0:e.ownerDocument)||void 0===n?void 0:n.defaultView;return!!(a&&t instanceof a.Element)},v="undefined"!=typeof window?window:{},x=new WeakMap,_=/auto|scroll/,T=/^tb|vertical/,w=/msie|trident/i.test(v.navigator&&v.navigator.userAgent),O=function(t){return parseFloat(t||"0")},S=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=!1),new g((n?e:t)||0,(n?t:e)||0)},I=h({devicePixelContentBoxSize:S(),borderBoxSize:S(),contentBoxSize:S(),contentRect:new p(0,0,0,0)}),N=function(t,e){if(void 0===e&&(e=!1),x.has(t)&&!e)return x.get(t);if(m(t))return x.set(t,I),I;var n=getComputedStyle(t),a=b(t)&&t.ownerSVGElement&&t.getBBox(),r=!w&&"border-box"===n.boxSizing,i=T.test(n.writingMode||""),s=!a&&_.test(n.overflowY||""),u=!a&&_.test(n.overflowX||""),o=a?0:O(n.paddingTop),l=a?0:O(n.paddingRight),d=a?0:O(n.paddingBottom),c=a?0:O(n.paddingLeft),f=a?0:O(n.borderTopWidth),g=a?0:O(n.borderRightWidth),y=a?0:O(n.borderBottomWidth),v=c+l,N=o+d,C=(a?0:O(n.borderLeftWidth))+g,R=f+y,A=u?t.offsetHeight-R-t.clientHeight:0,k=s?t.offsetWidth-C-t.clientWidth:0,E=r?v+C:0,L=r?N+R:0,D=a?a.width:O(n.width)-E-k,P=a?a.height:O(n.height)-L-A,M=D+v+k+C,q=P+N+A+R,j=h({devicePixelContentBoxSize:S(Math.round(D*devicePixelRatio),Math.round(P*devicePixelRatio),i),borderBoxSize:S(M,q,i),contentBoxSize:S(D,P,i),contentRect:new p(c,o,D,P)});return x.set(t,j),j},C=function(t,e,n){var r=N(t,n),i=r.borderBoxSize,s=r.contentBoxSize,u=r.devicePixelContentBoxSize;switch(e){case a.DEVICE_PIXEL_CONTENT_BOX:return u;case a.BORDER_BOX:return i;default:return s}},R=function(t){var e=N(t);this.target=t,this.contentRect=e.contentRect,this.borderBoxSize=h([e.borderBoxSize]),this.contentBoxSize=h([e.contentBoxSize]),this.devicePixelContentBoxSize=h([e.devicePixelContentBoxSize])},A=function(t){if(m(t))return 1/0;for(var e=0,n=t.parentNode;n;)e+=1,n=n.parentNode;return e},k=function(){var t=1/0,e=[];d.forEach((function(n){if(0!==n.activeTargets.length){var a=[];n.activeTargets.forEach((function(e){var n=new R(e.target),r=A(e.target);a.push(n),e.lastReportedSize=C(e.target,e.observedBox),r<t&&(t=r)})),e.push((function(){n.callback.call(n.observer,a,n.observer)})),n.activeTargets.splice(0,n.activeTargets.length)}}));for(var n=0,a=e;n<a.length;n++)(0,a[n])();return t},E=function(t){d.forEach((function(e){e.activeTargets.splice(0,e.activeTargets.length),e.skippedTargets.splice(0,e.skippedTargets.length),e.observationTargets.forEach((function(n){n.isActive()&&(A(n.target)>t?e.activeTargets.push(n):e.skippedTargets.push(n))}))}))},L=[],D=0,P={attributes:!0,characterData:!0,childList:!0,subtree:!0},M=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],q=function(t){return void 0===t&&(t=0),Date.now()+t},j=!1,F=new(function(){function t(){var t=this;this.stopped=!0,this.listener=function(){return t.schedule()}}return t.prototype.run=function(t){var e=this;if(void 0===t&&(t=250),!j){j=!0;var n,a=q(t);n=function(){var n=!1;try{n=function(){var t,e=0;for(E(e);d.some((function(t){return t.activeTargets.length>0}));)e=k(),E(e);return d.some((function(t){return t.skippedTargets.length>0}))&&("function"==typeof ErrorEvent?t=new ErrorEvent("error",{message:c}):((t=document.createEvent("Event")).initEvent("error",!1,!1),t.message=c),window.dispatchEvent(t)),e>0}()}finally{if(j=!1,t=a-q(),!D)return;n?e.run(1e3):t>0?e.run(t):e.start()}},function(t){if(!f){var e=0,a=document.createTextNode("");new MutationObserver((function(){return L.splice(0).forEach((function(t){return t()}))})).observe(a,{characterData:!0}),f=function(){a.textContent=""+(e?e--:e++)}}L.push((function(){requestAnimationFrame(n)})),f()}()}},t.prototype.schedule=function(){this.stop(),this.run()},t.prototype.observe=function(){var t=this,e=function(){return t.observer&&t.observer.observe(document.body,P)};document.body?e():v.addEventListener("DOMContentLoaded",e)},t.prototype.start=function(){var t=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),M.forEach((function(e){return v.addEventListener(e,t.listener,!0)})))},t.prototype.stop=function(){var t=this;this.stopped||(this.observer&&this.observer.disconnect(),M.forEach((function(e){return v.removeEventListener(e,t.listener,!0)})),this.stopped=!0)},t}()),V=function(t){!D&&t>0&&F.start(),!(D+=t)&&F.stop()},G=function(){function t(t,e){this.target=t,this.observedBox=e||a.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return t.prototype.isActive=function(){var t,e=C(this.target,this.observedBox,!0);return b(t=this.target)||function(t){switch(t.tagName){case"INPUT":if("image"!==t.type)break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1}(t)||"inline"!==getComputedStyle(t).display||(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},t}(),B=function(t,e){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=t,this.callback=e},z=new WeakMap,Y=function(t,e){for(var n=0;n<t.length;n+=1)if(t[n].target===e)return n;return-1},H=function(){function t(){}return t.connect=function(t,e){var n=new B(t,e);z.set(t,n)},t.observe=function(t,e,n){var a=z.get(t),r=0===a.observationTargets.length;Y(a.observationTargets,e)<0&&(r&&d.push(a),a.observationTargets.push(new G(e,n&&n.box)),V(1),F.schedule())},t.unobserve=function(t,e){var n=z.get(t),a=Y(n.observationTargets,e);a>=0&&(1===n.observationTargets.length&&d.splice(d.indexOf(n),1),n.observationTargets.splice(a,1),V(-1))},t.disconnect=function(t){var e=this,n=z.get(t);n.observationTargets.slice().forEach((function(n){return e.unobserve(t,n.target)})),n.activeTargets.splice(0,n.activeTargets.length)},t}(),U=function(){function t(t){if(0===arguments.length)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if("function"!=typeof t)throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");H.connect(this,t)}return t.prototype.observe=function(t,e){if(0===arguments.length)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!y(t))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");H.observe(this,t,e)},t.prototype.unobserve=function(t){if(0===arguments.length)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!y(t))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");H.unobserve(this,t)},t.prototype.disconnect=function(){H.disconnect(this)},t.toString=function(){return"function ResizeObserver () { [polyfill code] }"},t}(),W=n("AxL3"),K=n.n(W);function $(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:window}function J(t){return t&&t.ownerDocument?t.ownerDocument:document}n("E9XD"),n("sMBO"),n("rB9j"),n("Rm1S"),n("UxlC");var Z=null,Q=null;function X(t){if(null===Z){var e=J(t);if(void 0===e)return Z=0;var n=e.body,a=e.createElement("div");a.classList.add("simplebar-hide-scrollbar"),n.appendChild(a);var r=a.getBoundingClientRect().right;n.removeChild(a),Z=r}return Z}K.a&&window.addEventListener("resize",(function(){Q!==window.devicePixelRatio&&(Q=window.devicePixelRatio,Z=null)}));var tt=function(){function t(e,n){var a=this;this.onScroll=function(){var t=$(a.el);a.scrollXTicking||(t.requestAnimationFrame(a.scrollX),a.scrollXTicking=!0),a.scrollYTicking||(t.requestAnimationFrame(a.scrollY),a.scrollYTicking=!0)},this.scrollX=function(){a.axis.x.isOverflowing&&(a.showScrollbar("x"),a.positionScrollbar("x")),a.scrollXTicking=!1},this.scrollY=function(){a.axis.y.isOverflowing&&(a.showScrollbar("y"),a.positionScrollbar("y")),a.scrollYTicking=!1},this.onMouseEnter=function(){a.showScrollbar("x"),a.showScrollbar("y")},this.onMouseMove=function(t){a.mouseX=t.clientX,a.mouseY=t.clientY,(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseMoveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseMoveForAxis("y")},this.onMouseLeave=function(){a.onMouseMove.cancel(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseLeaveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseLeaveForAxis("y"),a.mouseX=-1,a.mouseY=-1},this.onWindowResize=function(){a.scrollbarWidth=a.getScrollbarWidth(),a.hideNativeScrollbar()},this.hideScrollbars=function(){a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.track.rect)||(a.axis.y.scrollbar.el.classList.remove(a.classNames.visible),a.axis.y.isVisible=!1),a.isWithinBounds(a.axis.x.track.rect)||(a.axis.x.scrollbar.el.classList.remove(a.classNames.visible),a.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,n;a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&(e=a.isWithinBounds(a.axis.x.track.rect)),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&(n=a.isWithinBounds(a.axis.y.track.rect)),(e||n)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&(a.axis.x.scrollbar.rect=a.axis.x.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.x.scrollbar.rect)?a.onDragStart(t,"x"):a.onTrackClick(t,"x")),n&&(a.axis.y.scrollbar.rect=a.axis.y.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.scrollbar.rect)?a.onDragStart(t,"y"):a.onTrackClick(t,"y"))))},this.drag=function(e){var n=a.axis[a.draggedAxis].track,r=n.rect[a.axis[a.draggedAxis].sizeAttr],i=a.axis[a.draggedAxis].scrollbar,s=a.contentWrapperEl[a.axis[a.draggedAxis].scrollSizeAttr],u=parseInt(a.elStyles[a.axis[a.draggedAxis].sizeAttr],10);e.preventDefault(),e.stopPropagation();var o=(("y"===a.draggedAxis?e.pageY:e.pageX)-n.rect[a.axis[a.draggedAxis].offsetAttr]-a.axis[a.draggedAxis].dragOffset)/(r-i.size)*(s-u);"x"===a.draggedAxis&&(o=a.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?o-(r+i.size):o,o=a.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-o:o),a.contentWrapperEl[a.axis[a.draggedAxis].scrollOffsetAttr]=o},this.onEndDrag=function(t){var e=J(a.el),n=$(a.el);t.preventDefault(),t.stopPropagation(),a.el.classList.remove(a.classNames.dragging),e.removeEventListener("mousemove",a.drag,!0),e.removeEventListener("mouseup",a.onEndDrag,!0),a.removePreventClickId=n.setTimeout((function(){e.removeEventListener("click",a.preventClick,!0),e.removeEventListener("dblclick",a.preventClick,!0),a.removePreventClickId=null}))},this.preventClick=function(t){t.preventDefault(),t.stopPropagation()},this.el=e,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},n),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,t.instances.has(this.el)||(this.recalculate=i()(this.recalculate.bind(this),64),this.onMouseMove=i()(this.onMouseMove.bind(this),64),this.hideScrollbars=u()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=u()(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=l()(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var e=document.createElement("div");e.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var n=e.firstElementChild;document.body.appendChild(n);var a=n.firstElementChild;n.scrollLeft=0;var r=t.getOffset(n),i=t.getOffset(a);n.scrollLeft=999;var s=t.getOffset(a);return{isRtlScrollingInverted:r.left!==i.left&&i.left-s.left!=0,isRtlScrollbarInverted:r.left!==i.left}},t.getOffset=function(t){var e=t.getBoundingClientRect(),n=J(t),a=$(t);return{top:e.top+(a.pageYOffset||n.documentElement.scrollTop),left:e.left+(a.pageXOffset||n.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),K.a&&(this.initDOM(),this.setAccessibilityAttributes(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var t=this;if(Array.prototype.filter.call(this.el.children,(function(e){return e.classList.contains(t.classNames.wrapper)})).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.axis.x.track.el=e.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=e.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.setAccessibilityAttributes=function(){var t=this.options.ariaLabel||"scrollable content";this.contentWrapperEl.setAttribute("tabindex","0"),this.contentWrapperEl.setAttribute("role","region"),this.contentWrapperEl.setAttribute("aria-label",t)},e.initListeners=function(){var t=this,e=$(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),e.addEventListener("resize",this.onWindowResize);var n=!1;this.resizeObserver=new(e.ResizeObserver||U)((function(){n&&t.recalculate()})),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),e.requestAnimationFrame((function(){n=!0})),this.mutationObserver=new e.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var t=$(this.el);this.elStyles=t.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var e=this.heightAutoObserverEl.offsetHeight<=1,n=this.heightAutoObserverEl.offsetWidth<=1,a=this.contentEl.offsetWidth,r=this.contentWrapperEl.offsetWidth,i=this.elStyles.overflowX,s=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var u=this.contentEl.scrollHeight,o=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=e?"auto":"100%",this.placeholderEl.style.width=n?a+"px":"auto",this.placeholderEl.style.height=u+"px";var l=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=o>a,this.axis.y.isOverflowing=u>l,this.axis.x.isOverflowing="hidden"!==i&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==s&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var d=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&o>r-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&u>l-d,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(t){if(void 0===t&&(t="y"),!this.axis[t].isOverflowing)return 0;var e,n=this.axis[t].track.el[this.axis[t].offsetSizeAttr];return e=Math.max(~~(n/this.contentEl[this.axis[t].scrollSizeAttr]*n),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e},e.positionScrollbar=function(e){if(void 0===e&&(e="y"),this.axis[e].isOverflowing){var n=this.contentWrapperEl[this.axis[e].scrollSizeAttr],a=this.axis[e].track.el[this.axis[e].offsetSizeAttr],r=parseInt(this.elStyles[this.axis[e].sizeAttr],10),i=this.axis[e].scrollbar,s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],u=~~((s="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-s:s)/(n-r)*(a-i.size));u="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?u+(a-i.size):u,i.el.style.transform="x"===e?"translate3d("+u+"px, 0, 0)":"translate3d(0, "+u+"px, 0)"}},e.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,n=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),n.style.display=this.axis[t].isOverflowing?"block":"none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(t){void 0===t&&(t="y"),this.axis[t].isVisible||(this.axis[t].scrollbar.el.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(t,e){void 0===e&&(e="y");var n=J(this.el),a=$(this.el);this.axis[e].dragOffset=("y"===e?t.pageY:t.pageX)-this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),n.addEventListener("mousemove",this.drag,!0),n.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(n.addEventListener("click",this.preventClick,!0),n.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(t,e){var n=this;if(void 0===e&&(e="y"),this.options.clickOnTrack){var a=$(this.el);this.axis[e].scrollbar.rect=this.axis[e].scrollbar.el.getBoundingClientRect();var r=this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],i=parseInt(this.elStyles[this.axis[e].sizeAttr],10),s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],u=("y"===e?this.mouseY-r:this.mouseX-r)<0?-1:1,o=-1===u?s-i:s+i;!function t(){var r,i;-1===u?s>o&&(n.contentWrapperEl.scrollTo(((r={})[n.axis[e].offsetAttr]=s-=n.options.clickOnTrackSpeed,r)),a.requestAnimationFrame(t)):s<o&&(n.contentWrapperEl.scrollTo(((i={})[n.axis[e].offsetAttr]=s+=n.options.clickOnTrackSpeed,i)),a.requestAnimationFrame(t))}()}},e.getContentElement=function(){return this.contentEl},e.getScrollElement=function(){return this.contentWrapperEl},e.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:X(this.el)}catch(t){return X(this.el)}},e.removeListeners=function(){var t=this,e=$(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl&&this.contentWrapperEl.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver&&this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},e.unMount=function(){this.removeListeners(),t.instances.delete(this.el)},e.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},e.findChild=function(t,e){var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return Array.prototype.filter.call(t.children,(function(t){return n.call(t,e)}))[0]},t}();tt.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},tt.instances=new WeakMap;var et=tt,nt=(n("FZtP"),function(t){return Array.prototype.reduce.call(t,(function(t,e){var n=e.name.match(/data-simplebar-(.+)/);if(n){var a=n[1].replace(/\W+(.)/g,(function(t,e){return e.toUpperCase()}));switch(e.value){case"true":t[a]=!0;break;case"false":t[a]=!1;break;case void 0:t[a]=!0;break;default:t[a]=e.value}}return t}),{})});function at(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:window}function rt(t){return t&&t.ownerDocument?t.ownerDocument:document}var it=null,st=null;function ut(t){if(null===it){var e=rt(t);if(void 0===e)return it=0;var n=e.body,a=e.createElement("div");a.classList.add("simplebar-hide-scrollbar"),n.appendChild(a);var r=a.getBoundingClientRect().right;n.removeChild(a),it=r}return it}K.a&&window.addEventListener("resize",(function(){st!==window.devicePixelRatio&&(st=window.devicePixelRatio,it=null)}));var ot=function(){function t(e,n){var a=this;this.onScroll=function(){var t=at(a.el);a.scrollXTicking||(t.requestAnimationFrame(a.scrollX),a.scrollXTicking=!0),a.scrollYTicking||(t.requestAnimationFrame(a.scrollY),a.scrollYTicking=!0)},this.scrollX=function(){a.axis.x.isOverflowing&&(a.showScrollbar("x"),a.positionScrollbar("x")),a.scrollXTicking=!1},this.scrollY=function(){a.axis.y.isOverflowing&&(a.showScrollbar("y"),a.positionScrollbar("y")),a.scrollYTicking=!1},this.onMouseEnter=function(){a.showScrollbar("x"),a.showScrollbar("y")},this.onMouseMove=function(t){a.mouseX=t.clientX,a.mouseY=t.clientY,(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseMoveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseMoveForAxis("y")},this.onMouseLeave=function(){a.onMouseMove.cancel(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseLeaveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseLeaveForAxis("y"),a.mouseX=-1,a.mouseY=-1},this.onWindowResize=function(){a.scrollbarWidth=a.getScrollbarWidth(),a.hideNativeScrollbar()},this.hideScrollbars=function(){a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.track.rect)||(a.axis.y.scrollbar.el.classList.remove(a.classNames.visible),a.axis.y.isVisible=!1),a.isWithinBounds(a.axis.x.track.rect)||(a.axis.x.scrollbar.el.classList.remove(a.classNames.visible),a.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,n;a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&(e=a.isWithinBounds(a.axis.x.track.rect)),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&(n=a.isWithinBounds(a.axis.y.track.rect)),(e||n)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&(a.axis.x.scrollbar.rect=a.axis.x.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.x.scrollbar.rect)?a.onDragStart(t,"x"):a.onTrackClick(t,"x")),n&&(a.axis.y.scrollbar.rect=a.axis.y.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.scrollbar.rect)?a.onDragStart(t,"y"):a.onTrackClick(t,"y"))))},this.drag=function(e){var n=a.axis[a.draggedAxis].track,r=n.rect[a.axis[a.draggedAxis].sizeAttr],i=a.axis[a.draggedAxis].scrollbar,s=a.contentWrapperEl[a.axis[a.draggedAxis].scrollSizeAttr],u=parseInt(a.elStyles[a.axis[a.draggedAxis].sizeAttr],10);e.preventDefault(),e.stopPropagation();var o=(("y"===a.draggedAxis?e.pageY:e.pageX)-n.rect[a.axis[a.draggedAxis].offsetAttr]-a.axis[a.draggedAxis].dragOffset)/(r-i.size)*(s-u);"x"===a.draggedAxis&&(o=a.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?o-(r+i.size):o,o=a.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-o:o),a.contentWrapperEl[a.axis[a.draggedAxis].scrollOffsetAttr]=o},this.onEndDrag=function(t){var e=rt(a.el),n=at(a.el);t.preventDefault(),t.stopPropagation(),a.el.classList.remove(a.classNames.dragging),e.removeEventListener("mousemove",a.drag,!0),e.removeEventListener("mouseup",a.onEndDrag,!0),a.removePreventClickId=n.setTimeout((function(){e.removeEventListener("click",a.preventClick,!0),e.removeEventListener("dblclick",a.preventClick,!0),a.removePreventClickId=null}))},this.preventClick=function(t){t.preventDefault(),t.stopPropagation()},this.el=e,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},n),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,t.instances.has(this.el)||(this.recalculate=i()(this.recalculate.bind(this),64),this.onMouseMove=i()(this.onMouseMove.bind(this),64),this.hideScrollbars=u()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=u()(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=l()(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var e=document.createElement("div");e.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var n=e.firstElementChild;document.body.appendChild(n);var a=n.firstElementChild;n.scrollLeft=0;var r=t.getOffset(n),i=t.getOffset(a);n.scrollLeft=999;var s=t.getOffset(a);return{isRtlScrollingInverted:r.left!==i.left&&i.left-s.left!=0,isRtlScrollbarInverted:r.left!==i.left}},t.getOffset=function(t){var e=t.getBoundingClientRect(),n=rt(t),a=at(t);return{top:e.top+(a.pageYOffset||n.documentElement.scrollTop),left:e.left+(a.pageXOffset||n.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),K.a&&(this.initDOM(),this.setAccessibilityAttributes(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var t=this;if(Array.prototype.filter.call(this.el.children,(function(e){return e.classList.contains(t.classNames.wrapper)})).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.axis.x.track.el=e.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=e.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.setAccessibilityAttributes=function(){var t=this.options.ariaLabel||"scrollable content";this.contentWrapperEl.setAttribute("tabindex","0"),this.contentWrapperEl.setAttribute("role","region"),this.contentWrapperEl.setAttribute("aria-label",t)},e.initListeners=function(){var t=this,e=at(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),e.addEventListener("resize",this.onWindowResize);var n=!1;this.resizeObserver=new(e.ResizeObserver||U)((function(){n&&t.recalculate()})),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),e.requestAnimationFrame((function(){n=!0})),this.mutationObserver=new e.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var t=at(this.el);this.elStyles=t.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var e=this.heightAutoObserverEl.offsetHeight<=1,n=this.heightAutoObserverEl.offsetWidth<=1,a=this.contentEl.offsetWidth,r=this.contentWrapperEl.offsetWidth,i=this.elStyles.overflowX,s=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var u=this.contentEl.scrollHeight,o=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=e?"auto":"100%",this.placeholderEl.style.width=n?a+"px":"auto",this.placeholderEl.style.height=u+"px";var l=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=o>a,this.axis.y.isOverflowing=u>l,this.axis.x.isOverflowing="hidden"!==i&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==s&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var d=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&o>r-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&u>l-d,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(t){if(void 0===t&&(t="y"),!this.axis[t].isOverflowing)return 0;var e,n=this.axis[t].track.el[this.axis[t].offsetSizeAttr];return e=Math.max(~~(n/this.contentEl[this.axis[t].scrollSizeAttr]*n),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e},e.positionScrollbar=function(e){if(void 0===e&&(e="y"),this.axis[e].isOverflowing){var n=this.contentWrapperEl[this.axis[e].scrollSizeAttr],a=this.axis[e].track.el[this.axis[e].offsetSizeAttr],r=parseInt(this.elStyles[this.axis[e].sizeAttr],10),i=this.axis[e].scrollbar,s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],u=~~((s="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-s:s)/(n-r)*(a-i.size));u="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?u+(a-i.size):u,i.el.style.transform="x"===e?"translate3d("+u+"px, 0, 0)":"translate3d(0, "+u+"px, 0)"}},e.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,n=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),n.style.display=this.axis[t].isOverflowing?"block":"none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(t){void 0===t&&(t="y"),this.axis[t].isVisible||(this.axis[t].scrollbar.el.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(t,e){void 0===e&&(e="y");var n=rt(this.el),a=at(this.el);this.axis[e].dragOffset=("y"===e?t.pageY:t.pageX)-this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),n.addEventListener("mousemove",this.drag,!0),n.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(n.addEventListener("click",this.preventClick,!0),n.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(t,e){var n=this;if(void 0===e&&(e="y"),this.options.clickOnTrack){var a=at(this.el);this.axis[e].scrollbar.rect=this.axis[e].scrollbar.el.getBoundingClientRect();var r=this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],i=parseInt(this.elStyles[this.axis[e].sizeAttr],10),s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],u=("y"===e?this.mouseY-r:this.mouseX-r)<0?-1:1,o=-1===u?s-i:s+i;!function t(){var r,i;-1===u?s>o&&(n.contentWrapperEl.scrollTo(((r={})[n.axis[e].offsetAttr]=s-=n.options.clickOnTrackSpeed,r)),a.requestAnimationFrame(t)):s<o&&(n.contentWrapperEl.scrollTo(((i={})[n.axis[e].offsetAttr]=s+=n.options.clickOnTrackSpeed,i)),a.requestAnimationFrame(t))}()}},e.getContentElement=function(){return this.contentEl},e.getScrollElement=function(){return this.contentWrapperEl},e.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:ut(this.el)}catch(t){return ut(this.el)}},e.removeListeners=function(){var t=this,e=at(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl&&this.contentWrapperEl.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver&&this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},e.unMount=function(){this.removeListeners(),t.instances.delete(this.el)},e.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},e.findChild=function(t,e){var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return Array.prototype.filter.call(t.children,(function(t){return n.call(t,e)}))[0]},t}();ot.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},ot.instances=new WeakMap,ot.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),(function(t){"init"===t.getAttribute("data-simplebar")||ot.instances.has(t)||new ot(t,nt(t.attributes))}))},ot.removeObserver=function(){this.globalObserver.disconnect()},ot.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),"undefined"!=typeof MutationObserver&&(this.globalObserver=new MutationObserver(ot.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))},ot.handleMutations=function(t){t.forEach((function(t){Array.prototype.forEach.call(t.addedNodes,(function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?!ot.instances.has(t)&&document.documentElement.contains(t)&&new ot(t,nt(t.attributes)):Array.prototype.forEach.call(t.querySelectorAll("[data-simplebar]"),(function(t){"init"!==t.getAttribute("data-simplebar")&&!ot.instances.has(t)&&document.documentElement.contains(t)&&new ot(t,nt(t.attributes))})))})),Array.prototype.forEach.call(t.removedNodes,(function(t){1===t.nodeType&&("init"===t.getAttribute("data-simplebar")?ot.instances.has(t)&&!document.documentElement.contains(t)&&ot.instances.get(t).unMount():Array.prototype.forEach.call(t.querySelectorAll('[data-simplebar="init"]'),(function(t){ot.instances.has(t)&&!document.documentElement.contains(t)&&ot.instances.get(t).unMount()})))}))}))},ot.getOptions=nt,K.a&&ot.initHtmlApi(),n.d(e,"a",(function(){return lt})),n.d(e,"b",(function(){return dt}));class lt{constructor(t){this.elRef=t}ngOnInit(){}ngAfterViewInit(){this.SimpleBar=new et(this.elRef.nativeElement,this.options||{})}ngOnDestroy(){this.SimpleBar.unMount(),this.SimpleBar=null}}class dt{}},WJkJ:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},WKiH:function(t,e,n){var a=n("4zBA"),r=n("HYAF"),i=n("V37c"),s=n("WJkJ"),u=a("".replace),o="["+s+"]",l=RegExp("^"+o+o+"*"),d=RegExp(o+o+"*$"),c=function(t){return function(e){var n=i(r(e));return 1&t&&(n=u(n,l,"")),2&t&&(n=u(n,d,"")),n}};t.exports={start:c(1),end:c(2),trim:c(3)}},WMd4:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("EY2u"),r=n("LRne"),i=n("z6cu");let s=(()=>{class t{constructor(t,e,n){this.kind=t,this.value=e,this.error=n,this.hasValue="N"===t}observe(t){switch(this.kind){case"N":return t.next&&t.next(this.value);case"E":return t.error&&t.error(this.error);case"C":return t.complete&&t.complete()}}do(t,e,n){switch(this.kind){case"N":return t&&t(this.value);case"E":return e&&e(this.error);case"C":return n&&n()}}accept(t,e,n){return t&&"function"==typeof t.next?this.observe(t):this.do(t,e,n)}toObservable(){switch(this.kind){case"N":return Object(r.a)(this.value);case"E":return Object(i.a)(this.error);case"C":return Object(a.b)()}throw new Error("unexpected notification kind value")}static createNext(e){return void 0!==e?new t("N",e):t.undefinedValueNotification}static createError(e){return new t("E",void 0,e)}static createComplete(){return t.completeNotification}}return t.completeNotification=new t("C"),t.undefinedValueNotification=new t("N",void 0),t})()},WSbT:function(t,e){var n=Math.ceil,a=Math.floor;t.exports=function(t){var e=+t;return e!=e||0===e?0:(e>0?a:n)(e)}},WYrj:function(t,e,n){!function(t){"use strict";var e=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];t.defineLocale("dv",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(t){return"މފ"===t},meridiem:function(t,e,n){return t<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("wd/R"))},Wa4q:function(t,e,n){var a=n("qzZ1"),r="object"==typeof self&&self&&self.Object===Object&&self,i=a||r||Function("return this")();t.exports=i},WaXT:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("2vnA"),i=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.a.apply(void 0,t)}),r.a),s=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.c.apply(void 0,t)}),r.c),u=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.d.apply(void 0,t)}),r.d),o=n("MP8s");n.d(e,"a",(function(){return c}));var l=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},d=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},c=function(){function t(){this._dispose=[]}return Object.defineProperty(t.prototype,"nodes",{get:function(){return this._nodes},set:function(t){this.setNodes(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"marginTop",{get:function(){var t=this.viewportNodes&&this.viewportNodes.length&&this.viewportNodes[0];return(t&&t.parent?t.position-t.parent.position-t.parent.getSelfHeight():0)+"px"},enumerable:!0,configurable:!0}),t.prototype.setNodes=function(t){this._nodes=t},t.prototype.ngOnInit=function(){var t=this;this.virtualScroll=this.treeModel.virtualScroll,this._dispose=[Object(r.e)((function(){return t.virtualScroll.getViewportNodes(t.nodes).map((function(t){return t.index}))}),(function(e){t.viewportNodes=e.map((function(e){return t.nodes[e]}))}),{compareStructural:!0,fireImmediately:!0}),Object(r.e)((function(){return t.nodes}),(function(e){t.viewportNodes=t.virtualScroll.getViewportNodes(e)}))]},t.prototype.ngOnDestroy=function(){this._dispose.forEach((function(t){return t()}))},t.prototype.trackNode=function(t,e){return e.id},l([Object(a.Input)(),d("design:type",Object),d("design:paramtypes",[Object])],t.prototype,"nodes",null),l([Object(a.Input)(),d("design:type",o.a)],t.prototype,"treeModel",void 0),l([u,d("design:type",Object)],t.prototype,"_nodes",void 0),l([Object(a.Input)(),d("design:type",Object)],t.prototype,"templates",void 0),l([u,d("design:type",Array)],t.prototype,"viewportNodes",void 0),l([s,d("design:type",String),d("design:paramtypes",[])],t.prototype,"marginTop",null),l([i,d("design:type",Function),d("design:paramtypes",[Object]),d("design:returntype",void 0)],t.prototype,"setNodes",null),l([Object(a.Component)({selector:"tree-node-collection",encapsulation:a.ViewEncapsulation.None,template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div [style.margin-top]="marginTop">\n        <tree-node\n          *ngFor="let node of viewportNodes; let i = index; trackBy: trackNode"\n          [node]="node"\n          [index]="i"\n          [templates]="templates"\n        >\n        </tree-node>\n      </div>\n    </ng-container>\n  '})],t)}()},We1y:function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=n("DVFp"),s=a.TypeError;t.exports=function(t){if(r(t))return t;throw s(i(t)+" is not a function")}},WiuZ:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("978R"),s=n("z/SZ"),u=n("2uy1"),o=n("s7LF"),l=n("+gVj"),d=n("ANnk"),c=n("f/UV"),f=n("aexS"),h=n("KOzp");n("wnGv"),n("GiVz"),n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return N}));var g=a["ɵcrt"]({encapsulation:0,styles:[[".select-menu-item[_ngcontent-%COMP%]{display:block;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.09);font-size:12px}.select-menu-item[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.select-menu-item-icon[_ngcontent-%COMP%]{float:left;padding:.5em;width:3em}.select-menu-item-content[_ngcontent-%COMP%]{padding:.5em}"]],data:{}});function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback text-center"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.messages.customValidations[e.parent.context.$implicit])}))}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.form.showError("filter",a["ɵnov"](e.parent,2))&&n.filter.hasError(e.context.$implicit))}),null)}function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"small",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),a["ɵted"](3,null,[" ","  "]))],null,(function(t,e){t(e,3,0,e.parent.context.$implicit.description)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,"div",[["class","select-menu-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.triggerSelection(t.context.$implicit)&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{"help-block disabled":0}),(t()(),a["ɵeld"](4,0,null,null,3,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,["   "])),(t()(),a["ɵeld"](8,0,null,null,3,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["ɵted"](9,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](11,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=t(e,3,0,!(n.data.length!==n.selectionLimit&&e.context.$implicit.enabled||e.context.$implicit.selected));t(e,2,0,"select-menu-item",a),t(e,6,0,e.context.$implicit.selected),t(e,11,0,e.context.$implicit.description)}),(function(t,e){t(e,9,0,e.context.$implicit.name)}))}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[["class","select-menu-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addCustomOption()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](5,1),(t()(),a["ɵted"](-1,null,["   "])),(t()(),a["ɵeld"](7,0,null,null,1,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["ɵted"](8,null,[" "," '","' "]))],(function(t,e){var n=t(e,5,0,e.component.icons.tag);t(e,4,0,n)}),(function(t,e){var n=e.component;t(e,8,0,n.messages.add,n.filter.value)}))}function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,2,"span",[["class","form-text text-muted text-center text-warning"]],null,null,null,null,null)),a["ɵdid"](1,212992,null,0,i.c,[a.ViewContainerRef,s.a,i.a,a.ElementRef,a.Renderer2,u.a],{tooltip:[0,"tooltip"]},null),(t()(),a["ɵted"](2,null,[" "," "])),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.messages.selectionLimit.tooltip)}),(function(t,e){t(e,2,0,e.component.messages.selectionLimit.text)}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","is-invalid"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,_)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.data.length===n.selectionLimit)}),null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,2).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,2).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,5).onSubmit()&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,o.G,[],null,null),a["ɵdid"](2,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,o.d,null,[o.l]),a["ɵdid"](4,16384,null,0,o.s,[[4,o.d]],null,null),a["ɵdid"](5,16384,null,0,l.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](6,0,null,null,10,"div",[],null,null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,7,"input",[["class","form-control text-center"],["formControlName","filter"],["type","text"]],[[8,"placeholder",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["ɵnov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,8)._compositionEnd(n.target.value)&&r),"keyup"===e&&(r=!1!==(13==n.keyCode?i.selectOption():i.updateFilter())&&r),r}),null,null)),a["ɵdid"](8,16384,null,0,o.e,[a.Renderer2,a.ElementRef,[2,o.b]],null,null),a["ɵprd"](1024,null,o.p,(function(t){return[t]}),[o.e]),a["ɵdid"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,o.q,null,[o.j]),a["ɵdid"](12,16384,null,0,o.r,[[4,o.q]],null,null),a["ɵdid"](13,4210688,null,0,d.a,[[2,c.a],f.a,a.ElementRef],null,null),a["ɵdid"](14,16384,null,0,l.h,[[3,o.d],l.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,b)),a["ɵdid"](16,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](18,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,x)),a["ɵdid"](20,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](22,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.form),t(e,5,0,n.form),t(e,10,0,"filter"),t(e,14,0,"filter"),t(e,16,0,n.Object.keys(n.messages.customValidations)),t(e,18,0,n.filteredOptions),t(e,20,0,n.isCreatable()),t(e,22,0,n.data.length===n.selectionLimit)}),(function(t,e){var n=e.component;t(e,0,0,a["ɵnov"](e,4).ngClassUntouched,a["ɵnov"](e,4).ngClassTouched,a["ɵnov"](e,4).ngClassPristine,a["ɵnov"](e,4).ngClassDirty,a["ɵnov"](e,4).ngClassValid,a["ɵnov"](e,4).ngClassInvalid,a["ɵnov"](e,4).ngClassPending),t(e,7,0,n.messages.filter,a["ɵnov"](e,12).ngClassUntouched,a["ɵnov"](e,12).ngClassTouched,a["ɵnov"](e,12).ngClassPristine,a["ɵnov"](e,12).ngClassDirty,a["ɵnov"](e,12).ngClassValid,a["ɵnov"](e,12).ngClassInvalid,a["ɵnov"](e,12).ngClassPending,a["ɵnov"](e,14).validClass,a["ɵnov"](e,14).invalidClass)}))}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,4,"a",[["class","select-menu-edit float-left"],["container","body"],["outsideClick","true"],["placement","bottom"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵdid"](3,212992,null,0,h.c,[h.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,u.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0,"select-menu-edit float-left",e.component.elemClass),t(e,3,0,a["ɵnov"](e.parent,0),"bottom","true","body")}),null)}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted float-left"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.messages.empty)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted  float-left"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.messages.noOptions)}))}function N(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,[["popTemplate",2]],null,0,null,w)),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,S)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.customBadges||n.options.length>0),t(e,4,0,0===n.data.length&&!(!n.customBadges&&0===n.options.length)),t(e,6,0,!n.customBadges&&0===n.options.length)}),null)}},Wv1A:function(t,e,n){var a=n("QpVZ");t.exports=function(t){if("string"==typeof t||a(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},WxRl:function(t,e,n){!function(t){"use strict";var e="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(t,e,n,a){var r=t;switch(n){case"s":return a||e?"néhány másodperc":"néhány másodperce";case"ss":return r+(a||e)?" másodperc":" másodperce";case"m":return"egy"+(a||e?" perc":" perce");case"mm":return r+(a||e?" perc":" perce");case"h":return"egy"+(a||e?" óra":" órája");case"hh":return r+(a||e?" óra":" órája");case"d":return"egy"+(a||e?" nap":" napja");case"dd":return r+(a||e?" nap":" napja");case"M":return"egy"+(a||e?" hónap":" hónapja");case"MM":return r+(a||e?" hónap":" hónapja");case"y":return"egy"+(a||e?" év":" éve");case"yy":return r+(a||e?" év":" éve")}return""}function a(t){return(t?"":"[múlt] ")+"["+e[this.day()]+"] LT[-kor]"}t.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(t){return"u"===t.charAt(1).toLowerCase()},meridiem:function(t,e,n){return t<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return a.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return a.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"X+05":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a={toggleExpanded:"toggleExpanded",activate:"activate",deactivate:"deactivate",nodeActivate:"nodeActivate",nodeDeactivate:"nodeDeactivate",select:"select",deselect:"deselect",focus:"focus",blur:"blur",initialized:"initialized",updateData:"updateData",moveNode:"moveNode",copyNode:"copyNode",event:"event",loadNodeChildren:"loadNodeChildren",changeFilter:"changeFilter",stateChange:"stateChange"}},X709:function(t,e,n){!function(t){"use strict";t.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"e":1===e||2===e?"a":"e")},week:{dow:1,doy:4}})}(n("wd/R"))},XDbj:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("sVev"),r=n("7o/Q");function i(t=o){return e=>e.lift(new s(t))}class s{constructor(t){this.errorFactory=t}call(t,e){return e.subscribe(new u(t,this.errorFactory))}}class u extends r.a{constructor(t,e){super(t),this.errorFactory=e,this.hasValue=!1}_next(t){this.hasValue=!0,this.destination.next(t)}_complete(){if(this.hasValue)return this.destination.complete();{let e;try{e=this.errorFactory()}catch(t){e=t}this.destination.error(e)}}}function o(){return new a.a}},XDpg:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"周";default:return t}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("wd/R"))},XFPk:function(t,e,n){var a=n("qN6l"),r=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return a?void 0!==e[t]:r.call(e,t)}},XFyV:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");class r{constructor(){this.icons=a.a}}},XGwC:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},XLvN:function(t,e,n){!function(t){"use strict";t.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(t,e){return 12===t&&(t=0),"రాత్రి"===e?t<4?t:t+12:"ఉదయం"===e?t:"మధ్యాహ్నం"===e?t>=10?t:t+12:"సాయంత్రం"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"రాత్రి":t<10?"ఉదయం":t<17?"మధ్యాహ్నం":t<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("wd/R"))},XNiG:function(t,e,n){"use strict";n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return d}));var a=n("HDdC"),r=n("7o/Q"),i=n("quSY"),s=n("9ppp"),u=n("Ylt2"),o=n("2QA8");class l extends r.a{constructor(t){super(t),this.destination=t}}let d=(()=>{class t extends a.a{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[o.a](){return new l(this)}lift(t){const e=new c(this,this);return e.operator=t,e}next(t){if(this.closed)throw new s.a;if(!this.isStopped){const{observers:e}=this,n=e.length,a=e.slice();for(let r=0;r<n;r++)a[r].next(t)}}error(t){if(this.closed)throw new s.a;this.hasError=!0,this.thrownError=t,this.isStopped=!0;const{observers:e}=this,n=e.length,a=e.slice();for(let r=0;r<n;r++)a[r].error(t);this.observers.length=0}complete(){if(this.closed)throw new s.a;this.isStopped=!0;const{observers:t}=this,e=t.length,n=t.slice();for(let a=0;a<e;a++)n[a].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(t){if(this.closed)throw new s.a;return super._trySubscribe(t)}_subscribe(t){if(this.closed)throw new s.a;return this.hasError?(t.error(this.thrownError),i.a.EMPTY):this.isStopped?(t.complete(),i.a.EMPTY):(this.observers.push(t),new u.a(this,t))}asObservable(){const t=new a.a;return t.source=this,t}}return t.create=(t,e)=>new c(t,e),t})();class c extends d{constructor(t,e){super(),this.destination=t,this.source=e}next(t){const{destination:e}=this;e&&e.next&&e.next(t)}error(t){const{destination:e}=this;e&&e.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:e}=this;return e?this.source.subscribe(t):i.a.EMPTY}}},Xg1U:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("978R"),i=(n("SVse"),a["ɵcrt"]({encapsulation:0,styles:[".tooltip[_nghost-%COMP%] {\n      display: block;\n      pointer-events: none;\n    }\n    .bs3.tooltip.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -2px;\n    }\n    .bs3.tooltip.bottom[_nghost-%COMP%] {\n      margin-top: 0px;\n    }\n    .bs3.bs-tooltip-left[_nghost-%COMP%], .bs3.bs-tooltip-right[_nghost-%COMP%]{\n      margin: 0px;\n    }\n    .bs3.bs-tooltip-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs3.bs-tooltip-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      margin: .3rem 0;\n    }"],data:{}}));function s(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","tooltip-arrow arrow"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","tooltip-inner"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-tooltip-container",[["role","tooltip"]],[[8,"className",0],[2,"show",null],[2,"bs3",null],[1,"id",0]],null,null,s,i)),a["ɵdid"](1,4243456,null,0,r.b,[r.a],null,null)],null,(function(t,e){t(e,0,0,"tooltip in tooltip-"+a["ɵnov"](e,1).placement+" bs-tooltip-"+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).containerClass,!a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).id)}))}var o=a["ɵccf"]("bs-tooltip-container",r.b,u,{},{},["*"])},XhiP:function(t,e,n){var a=n("Wa4q");t.exports=a.Uint8Array},Xnc8:function(t,e,n){var a=n("g6v/"),r=n("Gi26"),i=Function.prototype,s=a&&Object.getOwnPropertyDescriptor,u=r(i,"name"),o=u&&"something"===(function(){}).name,l=u&&(!a||a&&s(i,"name").configurable);t.exports={EXISTS:u,PROPER:o,CONFIGURABLE:l}},XoHu:function(t,e,n){"use strict";function a(t){return null!==t&&"object"==typeof t}n.d(e,"a",(function(){return a}))},Y3RO:function(t,e){t.exports=function(t,e){var n=-1,a=t.length;for(e||(e=Array(a));++n<a;)e[n]=t[n];return e}},Y7HM:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("DH7j");function r(t){return!Object(a.a)(t)&&t-parseFloat(t)+1>=0}},YCpU:function(t,e,n){var a=n("QuoE"),r=n("im1V"),i=n("372+"),s=n("H+zY"),u=n("yb/u"),o=Math.max;t.exports=function(t,e,n,l){t=r(t)?t:u(t),n=n&&!l?s(n):0;var d=t.length;return n<0&&(n=o(d+n,0)),i(t)?n<=d&&t.indexOf(e,n)>-1:!!d&&a(t,e,n)>-1}},YF1G:function(t,e,n){var a=n("xrYK"),r=n("2oRo");t.exports="process"==a(r.process)},YGUN:function(t,e){t.exports=function(t){return function(){return t}}},YLnZ:function(t,e){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},YNrV:function(t,e,n){"use strict";var a=n("g6v/"),r=n("4zBA"),i=n("xluM"),s=n("0Dky"),u=n("33Wh"),o=n("dBg+"),l=n("0eef"),d=n("ewvW"),c=n("RK3t"),f=Object.assign,h=Object.defineProperty,g=r([].concat);t.exports=!f||s((function(){if(a&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=f({},t)[n]||"abcdefghijklmnopqrst"!=u(f({},e)).join("")}))?function(t,e){for(var n=d(t),r=arguments.length,s=1,f=o.f,h=l.f;r>s;)for(var p,b=c(arguments[s++]),m=f?g(u(b),f(b)):u(b),y=m.length,v=0;y>v;)p=m[v++],a&&!i(h,b,p)||(n[p]=b[p]);return n}:f},YRex:function(t,e,n){!function(t){"use strict";t.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(t,e){return 12===t&&(t=0),"يېرىم كېچە"===e||"سەھەر"===e||"چۈشتىن بۇرۇن"===e?t:"چۈشتىن كېيىن"===e||"كەچ"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"يېرىم كېچە":a<900?"سەھەر":a<1130?"چۈشتىن بۇرۇن":a<1230?"چۈش":a<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-كۈنى";case"w":case"W":return t+"-ھەپتە";default:return t}},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("wd/R"))},"Yj/I":function(t,e,n){var a=n("l9nr"),r=n("im1V"),i=n("FGWQ");t.exports=function(t){return function(e,n,s){var u=Object(e);if(!r(e)){var o=a(n,3);e=i(e),n=function(t){return o(u[t],t,u)}}var l=t(e,n,s);return l>-1?u[o?e[l]:l]:void 0}}},Ylt2:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("quSY");class r extends a.a{constructor(t,e){super(),this.subject=t,this.subscriber=e,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,e=t.observers;if(this.subject=null,!e||0===e.length||t.isStopped||t.closed)return;const n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}},Yrry:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J");class r{constructor(t){this.domSanitizer=t}transform(t){return this.domSanitizer.sanitize(a.SecurityContext.HTML,t)}}},Ytn0:function(t,e,n){var a=n("sEik");t.exports=function(t,e){var n=t.__data__;return a(e)?n["string"==typeof e?"string":"hash"]:n.map}},YuTi:function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},YzqF:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(){this._queue=[],this._pending=!1}return t.prototype.isLocked=function(){return this._pending},t.prototype.acquire=function(){var t=this,e=new Promise((function(e){return t._queue.push(e)}));return this._pending||this._dispatchNext(),e},t.prototype.runExclusive=function(t){return this.acquire().then((function(e){var n;try{n=t()}catch(a){throw e(),a}return Promise.resolve(n).then((function(t){return e(),t}),(function(t){throw e(),t}))}))},t.prototype._dispatchNext=function(){this._queue.length>0?(this._pending=!0,this._queue.shift()(this._dispatchNext.bind(this))):this._pending=!1},t}();e.default=a},Z21x:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("sne2");class a{constructor(t,e){this.location=t,this.actionLabels=e,this.name=this.actionLabels.CANCEL,this.back=()=>this.location.back()}}},Z2DA:function(t,e,n){var a=n("vJUC"),r=n("+FhV"),i=n("1Yk6"),s=n("kA6G");t.exports=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)a(e,i(t)),t=r(t);return e}:s},Z4QM:function(t,e,n){!function(t){"use strict";var e=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];t.defineLocale("sd",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("wd/R"))},ZAMP:function(t,e,n){!function(t){"use strict";t.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},ZDA6:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("IheW"),i=n("pL04");let s=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("ui-api/scope")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.c))},token:t,providedIn:i.a}),t})()},ZEkX:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return o})),n("Mxhz");var a=n("0+/T"),r=(n("sne2"),n("x38r")),i=n("oxzT"),s=n("mtw6"),u=n("vCyI");n("a0VL"),n("nSDx"),n("aexS"),n("9nlD");const o=new(n("EgGo").a)("user-management/users");class l{constructor(t,e,n,a,r,s,o,l,d){this.userService=t,this.emptyPipe=e,this.modalService=n,this.notificationService=a,this.authStorageService=r,this.i18n=s,this.urlBuilder=o,this.cdDatePipe=l,this.actionLabels=d,this.selection=new u.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:i.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:i.a.edit,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().username),name:this.actionLabels.EDIT},{permission:"delete",icon:i.a.destroy,click:()=>this.deleteUserModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Username"),prop:"username",flexGrow:1},{name:this.i18n("Name"),prop:"name",flexGrow:1,pipe:this.emptyPipe},{name:this.i18n("Email"),prop:"email",flexGrow:1,pipe:this.emptyPipe},{name:this.i18n("Roles"),prop:"roles",flexGrow:1,cellTemplate:this.userRolesTpl},{name:this.i18n("Enabled"),prop:"enabled",flexGrow:1,cellTransformation:r.a.checkIcon},{name:this.i18n("Password expiration date"),prop:"pwdExpirationDate",flexGrow:1,pipe:this.cdDatePipe}]}getUsers(){this.userService.list().subscribe(t=>{t.forEach(t=>{t.pwdExpirationDate&&t.pwdExpirationDate>0&&(t.pwdExpirationDate=1e3*t.pwdExpirationDate)}),this.users=t})}updateSelection(t){this.selection=t}deleteUser(t){this.userService.delete(t).subscribe(()=>{this.getUsers(),this.modalRef.hide(),this.notificationService.show(s.a.success,this.i18n('Deleted user "{{username}}"',{username:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}deleteUserModal(){const t=this.authStorageService.getUsername(),e=this.selection.first().username;t!==e?this.modalRef=this.modalService.show(a.a,{initialState:{itemDescription:"User",itemNames:[e],submitAction:()=>this.deleteUser(e)}}):this.notificationService.show(s.a.error,this.i18n('Failed to delete user "{{username}}"',{username:e}),this.i18n('You are currently logged in as "{{username}}".',{username:e}))}}},ZPW6:function(t,e,n){var a=n("w/8D");t.exports=function(t,e,n){"__proto__"==e&&a?a(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},ZUHj:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("51Dv"),r=n("SeVD"),i=n("HDdC");function s(t,e,n,s,u=new a.a(t,n,s)){if(!u.closed)return e instanceof i.a?e.subscribe(u):Object(r.a)(e)(u)}},ZUd8:function(t,e,n){var a=n("4zBA"),r=n("WSbT"),i=n("V37c"),s=n("HYAF"),u=a("".charAt),o=a("".charCodeAt),l=a("".slice),d=function(t){return function(e,n){var a,d,c=i(s(e)),f=r(n),h=c.length;return f<0||f>=h?t?"":void 0:(a=o(c,f))<55296||a>56319||f+1===h||(d=o(c,f+1))<56320||d>57343?t?u(c,f):a:t?l(c,f,f+2):d-56320+(a-55296<<10)+65536}};t.exports={codeAt:d(!1),charAt:d(!0)}},ZY2H:function(t,e,n){var a=n("/Gx3"),r=n("QUkU");t.exports=function(t){return a((function(e,n){var a=-1,i=n.length,s=i>1?n[i-1]:void 0,u=i>2?n[2]:void 0;for(s=t.length>3&&"function"==typeof s?(i--,s):void 0,u&&r(n[0],n[1],u)&&(s=i<3?void 0:s,i=1),e=Object(e);++a<i;){var o=n[a];o&&t(e,o,a,s)}return e}))}},Zduo:function(t,e,n){!function(t){"use strict";t.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(t){return"p"===t.charAt(0).toLowerCase()},meridiem:function(t,e,n){return t>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("wd/R"))},ZfDv:function(t,e,n){var a=n("C0Ia");t.exports=function(t,e){return new(a(t))(0===e?0:e)}},ZhuC:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",a.TemplateRef)],t.prototype,"template",void 0),i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({encapsulation:a.ViewEncapsulation.None,selector:"tree-loading-component",template:'\n    <span *ngIf="!template">loading...</span>\n    <ng-container\n      [ngTemplateOutlet]="template"\n      [ngTemplateOutletContext]="{ $implicit: node }">\n    </ng-container>\n  '})],t)}()},a0VL:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.datePipe=t}transform(t){return null===t||""===t?"":this.datePipe.transform(t,"shortDate")+" "+this.datePipe.transform(t,"mediumTime")}}},a1D2:function(t,e,n){var a=n("43VP");t.exports=function(t,e){var n;return a(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}},a278:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("QC43"),i=n("XFyV"),s=n("DqMs"),u=n("/NlG"),o=n("GiVz"),l=n("i4WA"),d=n("6qls"),c=n("tz6c"),f=n("s7LF"),h=n("ANnk"),g=n("f/UV"),p=n("aexS"),b=n("SVse");n("insk"),n("cUpR"),n("20UP"),n.d(e,"a",(function(){return m})),n.d(e,"b",(function(){return w}));var m=a["ɵcrt"]({encapsulation:0,styles:[[".grafana[_ngcontent-%COMP%]{width:100%;height:600px;z-index:0}.grafana_one[_ngcontent-%COMP%]{height:400px}.grafana_two[_ngcontent-%COMP%]{height:750px}.grafana_three[_ngcontent-%COMP%]{height:900px}.grafana_four[_ngcontent-%COMP%]{height:1160px}.timepicker[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.dropdown-menu[_ngcontent-%COMP%]{top:20px;right:20px;left:auto}"]],data:{}});function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,r.b,r.a)),a["ɵdid"](1,49152,null,0,i.a,[],null,null),(t()(),a["ɵted"](-1,0,["Loading panel data..."]))],null,null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,u.a,[o.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Please consult the "])),(t()(),a["ɵeld"](3,0,null,0,1,"cd-doc",[["section","grafana"]],null,null,null,l.b,l.a)),a["ɵdid"](4,114688,null,0,d.a,[c.a,o.a],{section:[0,"section"]},null),(t()(),a["ɵted"](-1,0,[" on how to configure and enable the monitoring functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"grafana")}),null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,u.a,[o.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Grafana Dashboard doesn't exist. Please refer to "])),(t()(),a["ɵeld"](3,0,null,0,1,"cd-doc",[["section","grafana"]],null,null,null,l.b,l.a)),a["ɵdid"](4,114688,null,0,d.a,[c.a,o.a],{section:[0,"section"]},null),(t()(),a["ɵted"](-1,0,[" on how to add dashboards to Grafana."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"grafana")}),null)}function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,f.v,[a.ElementRef,a.Renderer2,[2,f.A]],{ngValue:[0,"ngValue"]},null),a["ɵdid"](2,147456,null,0,f.F,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["ɵted"](3,null,[""," "]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,25,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,18,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,17,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,16,"div",[["class","form-inline timepicker"]],null,null,null,null,null)),(t()(),a["ɵeld"](4,0,null,null,1,"label",[["class","ml-1 my-1 col-form-label"],["for","timepicker"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Grafana Time Picker"])),(t()(),a["ɵeld"](6,0,null,null,8,"select",[["class","custom-select my-1 mx-3"],["id","timepicker"],["name","timepicker"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["ɵnov"](t,7).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,7).onTouched()&&r),"ngModelChange"===e&&(r=!1!==(i.time=n)&&r),"ngModelChange"===e&&(r=!1!==i.onTimepickerChange(n)&&r),r}),null,null)),a["ɵdid"](7,16384,null,0,f.A,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,f.p,(function(t){return[t]}),[f.A]),a["ɵdid"](9,671744,null,0,f.u,[[8,null],[8,null],[8,null],[6,f.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["ɵprd"](2048,null,f.q,null,[f.u]),a["ɵdid"](11,16384,null,0,f.r,[[4,f.q]],null,null),a["ɵdid"](12,4210688,null,0,h.a,[[2,g.a],p.a,a.ElementRef],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,_)),a["ɵdid"](14,278528,null,0,b.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](15,0,null,null,4,"button",[["class","btn btn-light my-1"],["title","Reset Settings"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.reset()&&a),a}),null,null)),(t()(),a["ɵeld"](16,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,b["ɵNgClassImpl"],b["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](18,278528,null,0,b.NgClass,[b["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](19,1),(t()(),a["ɵeld"](20,0,null,null,5,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["ɵeld"](21,0,null,null,4,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),a["ɵeld"](22,0,null,null,3,"div",[["class","grafana-container"]],null,null,null,null,null)),(t()(),a["ɵeld"](23,0,[["iframe",1]],null,2,"iframe",[["class","grafana"],["frameborder","0"],["id","iframe"],["scrolling","no"]],[[8,"src",5]],null,null,null,null)),a["ɵprd"](512,null,b["ɵNgClassImpl"],b["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](25,278528,null,0,b.NgClass,[b["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null)],(function(t,e){var n=e.component;t(e,9,0,"timepicker",n.time),t(e,14,0,n.grafanaTimes);var a=t(e,19,0,n.icons.undo);t(e,18,0,a),t(e,25,0,"grafana",n.panelStyle)}),(function(t,e){var n=e.component;t(e,6,0,a["ɵnov"](e,11).ngClassUntouched,a["ɵnov"](e,11).ngClassTouched,a["ɵnov"](e,11).ngClassPristine,a["ɵnov"](e,11).ngClassDirty,a["ɵnov"](e,11).ngClassValid,a["ɵnov"](e,11).ngClassInvalid,a["ɵnov"](e,11).ngClassPending),t(e,23,0,n.grafanaSrc)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](1,16384,null,0,b.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](3,16384,null,0,b.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,x)),a["ɵdid"](5,16384,null,0,b.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](7,16384,null,0,b.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.loading&&n.grafanaExist),t(e,3,0,!n.grafanaExist),t(e,5,0,!n.dashboardExist),t(e,7,0,n.grafanaExist&&n.dashboardExist)}),null)}},a40w:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("EEJc"),i=n("ajRT"),s=n("s7LF"),u=n("+gVj"),o=n("SVse"),l=n("gp3X"),d=n("sb0X"),c=n("KVJa"),f=n("Z21x"),h=n("sne2"),g=n("OLbh"),p=n("LqlI");n.d(e,"a",(function(){return _}));var b=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.description)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,22,"cd-modal",[],null,[[null,"hide"]],(function(t,e,n){var a=!0;return"hide"===e&&(a=!1!==t.component.cancel()&&a),a}),r.c,r.b)),a["ɵdid"](1,49152,null,0,i.a,[],null,{hide:"hide"}),(t()(),a["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](3,null,["",""])),(t()(),a["ɵeld"](4,0,null,1,18,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,17,"form",[["name","confirmationForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,7).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,10).onSubmit()&&r),r}),null,null)),a["ɵdid"](6,16384,null,0,s.G,[],null,null),a["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,s.d,null,[s.l]),a["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),a["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](11,0,null,null,4,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](13,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](15,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0,r=t.component;return"submitAction"===e&&(a=!1!==r.onSubmit(r.confirmationForm.value)&&a),a}),l.b,l.a)),a["ɵdid"](19,114688,null,0,d.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵted"](20,0,[" "," "])),(t()(),a["ɵeld"](21,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),a["ɵdid"](22,49152,null,0,f.a,[o.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,7,0,n.confirmationForm),t(e,10,0,n.confirmationForm),t(e,13,0,n.bodyContext,n.bodyTpl),t(e,15,0,n.description),t(e,19,0,n.confirmationForm),t(e,22,0,"Cancel",n.boundCancel)}),(function(t,e){var n=e.component;t(e,3,0,n.titleText),t(e,5,0,a["ɵnov"](e,9).ngClassUntouched,a["ɵnov"](e,9).ngClassTouched,a["ɵnov"](e,9).ngClassPristine,a["ɵnov"](e,9).ngClassDirty,a["ɵnov"](e,9).ngClassValid,a["ɵnov"](e,9).ngClassInvalid,a["ɵnov"](e,9).ngClassPending),t(e,20,0,n.buttonText)}))}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-confirmation-modal",[],null,null,null,v,b)),a["ɵdid"](1,245760,null,0,g.a,[p.a,p.b],null,null)],(function(t,e){t(e,1,0)}),null)}var _=a["ɵccf"]("cd-confirmation-modal",g.a,x,{},{},[])},a96k:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a=!0){this.selected=t,this.name=e,this.description=n,this.enabled=a}}},aGrj:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("eIep");function r(t,e){return e?Object(a.a)(()=>t,e):Object(a.a)(()=>t)}},aHM3:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("8Y7J"),n("s7LF");class a{static forRoot(){return{ngModule:a,providers:[]}}}},aHcz:function(t,e){t.exports=function(t){return t}},aIdf:function(t,e,n){!function(t){"use strict";function e(t,e,n){return t+" "+function(t,e){return 2===e?function(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}(t):t}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],t)}t.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:function(t){switch(function t(e){return e>9?t(e%10):e}(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(t){return t+(1===t?"añ":"vet")},week:{dow:1,doy:4}})}(n("wd/R"))},aIsn:function(t,e,n){!function(t){"use strict";t.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},aKKh:function(t,e,n){var a=n("ktBm");t.exports=function(t,e){var n=this.__data__,r=a(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}},aO6C:function(t,e,n){var a=n("4zBA"),r=n("0Dky"),i=n("Fib7"),s=n("9d/t"),u=n("0GbY"),o=n("iSVu"),l=function(){},d=[],c=u("Reflect","construct"),f=/^\s*(?:class|function)\b/,h=a(f.exec),g=!f.exec(l),p=function(t){if(!i(t))return!1;try{return c(l,d,t),!0}catch(e){return!1}},b=function(t){if(!i(t))return!1;switch(s(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return g||!!h(f,o(t))}catch(e){return!0}};b.sham=!0,t.exports=!c||r((function(){var t;return p(p.call)||!p(Object)||!p((function(){t=!0}))||t}))?b:p},aQkU:function(t,e,n){!function(t){"use strict";t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})}(n("wd/R"))},aT2Y:function(t,e,n){var a=n("o3PY"),r=n("UnOm"),i=n("mWP/"),s=n("bdl3"),u=n("aKKh");function o(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}o.prototype.clear=a,o.prototype.delete=r,o.prototype.get=i,o.prototype.has=s,o.prototype.set=u,t.exports=o},aTV8:function(t,e,n){var a=n("LxgN"),r=n("l9nr"),i=n("a1D2"),s=n("0GLT"),u=n("QUkU");t.exports=function(t,e,n){var o=s(t)?a:i;return n&&u(t,e,n)&&(e=void 0),o(t,r(e,3))}},aXbf:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LvDl"),r=n("8Y7J");let i=(()=>{class t{constructor(){}format_number(t,e,n,r=1){if(a.isString(t)&&(t=Number(t)),!a.isNumber(t))return"-";let i=t<1?0:Math.floor(Math.log(t)/Math.log(e));i=i>=n.length?n.length-1:i;let s=a.round(t/Math.pow(e,i),r).toString();return""===s?"-":(""!==n[i]&&(s=`${s} ${n[i]}`),s)}toBytes(t,e=null){const n=["b","k","m","g","t","p","e","z","y"],r=RegExp("^(\\d+(.\\d+)?) ?(["+n.join("")+"]?(b|ib|B/s)?)?$","i").exec(t);if(null===r)return e;let i=parseFloat(r[1]);return a.isString(r[3])&&(i*=Math.pow(1024,n.indexOf(r[3].toLowerCase()[0]))),Math.round(i)}toMilliseconds(t){const e=/^\s*(\d+)\s*(ms)?\s*$/i.exec(t);return null!==e?+e[1]:0}toIops(t){const e=/^\s*(\d+)\s*(IOPS)?\s*$/i.exec(t);return null!==e?+e[1]:0}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},aexS:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("2Vo4"),r=n("jKX/"),i=n("8Y7J");let s=(()=>{class t{constructor(){this.isPwdDisplayedSource=new a.a(!1),this.isPwdDisplayed$=this.isPwdDisplayedSource.asObservable()}set(t,e={},n=!1,a=null,i=!1){localStorage.setItem("dashboard_username",t),localStorage.setItem("dashboard_permissions",JSON.stringify(new r.a(e))),localStorage.setItem("user_pwd_expiration_date",String(a)),localStorage.setItem("user_pwd_update_required",String(i)),localStorage.setItem("sso",String(n))}remove(){localStorage.removeItem("dashboard_username"),localStorage.removeItem("user_pwd_expiration_data"),localStorage.removeItem("user_pwd_update_required")}isLoggedIn(){return null!==localStorage.getItem("dashboard_username")}getUsername(){return localStorage.getItem("dashboard_username")}getPermissions(){return JSON.parse(localStorage.getItem("dashboard_permissions")||JSON.stringify(new r.a({})))}getPwdExpirationDate(){return Number(localStorage.getItem("user_pwd_expiration_date"))}getPwdUpdateRequired(){return"true"===localStorage.getItem("user_pwd_update_required")}isSSO(){return"true"===localStorage.getItem("sso")}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},afO8:function(t,e,n){var a,r,i,s=n("f5p1"),u=n("2oRo"),o=n("4zBA"),l=n("hh1v"),d=n("kRJp"),c=n("Gi26"),f=n("xs3f"),h=n("93I0"),g=n("0BK2"),p=u.TypeError;if(s||f.state){var b=f.state||(f.state=new(0,u.WeakMap)),m=o(b.get),y=o(b.has),v=o(b.set);a=function(t,e){if(y(b,t))throw new p("Object already initialized");return e.facade=t,v(b,t,e),e},r=function(t){return m(b,t)||{}},i=function(t){return y(b,t)}}else{var x=h("state");g[x]=!0,a=function(t,e){if(c(t,x))throw new p("Object already initialized");return e.facade=t,d(t,x,e),e},r=function(t){return c(t,x)?t[x]:{}},i=function(t){return c(t,x)}}t.exports={set:a,get:r,has:i,enforce:function(t){return i(t)?r(t):a(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=r(e)).type!==t)throw p("Incompatible receiver, "+t+" required");return n}}}},ajRT:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J");class r{constructor(){this.hide=new a.EventEmitter}close(){this.modalRef&&this.modalRef.hide(),this.hide.emit()}}},atuK:function(t,e,n){"use strict";n.d(e,"a",(function(){return v})),n.d(e,"b",(function(){return E})),n.d(e,"d",(function(){return H})),n.d(e,"c",(function(){return rt}));var a=n("8Y7J"),r=n("ienR"),i=n("SVse"),s=(n("s7LF"),n("2uy1")),u=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,o)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,d)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,f)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function m(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,b)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-datepicker-container",[["aria-label","calendar"],["class","bottom"],["role","dialog"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),m,u)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.b,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var v=a["ɵccf"]("bs-datepicker-container",r.b,y,{},{},[]),x=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,_)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,w)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,S)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,R)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-datepicker-inline-container",[],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),A,x)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.e,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var E=a["ɵccf"]("bs-datepicker-inline-container",r.e,k,{},{},[]),L=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,D)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,M)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,j)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function B(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,P)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,q)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,F)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function z(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,B)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function Y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-daterangepicker-inline-container",[],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),z,L)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.k,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var H=a["ɵccf"]("bs-daterangepicker-inline-container",r.k,Y,{},{},[]),U=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function W(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,W)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function J(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,$)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function Z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function Q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,Z)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function X(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,K)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,J)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Q)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,X)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,tt)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function nt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,et)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function at(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-daterangepicker-container",[["aria-label","calendar"],["class","bottom"],["role","dialog"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),nt,U)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.i,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var rt=a["ɵccf"]("bs-daterangepicker-container",r.i,at,{},{},[]),it=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function st(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-current-date",[["title","hey there"]],null,null,null,dt,lt)),a["ɵdid"](1,49152,null,0,r.x,[],{title:[0,"title"]},null)],(function(t,e){t(e,1,0,"hey there")}),null)}function ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-timepicker",[],null,null,null,Et,kt)),a["ɵdid"](1,49152,null,0,r.D,[],null,null)],null,null)}function ot(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,st)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,0,null,null,1,"div",[["class","bs-datepicker-head"]],null,null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵeld"](4,0,null,null,1,"div",[["class","bs-datepicker-body"]],null,null,null,null,null)),a["ɵncd"](null,1),(t()(),a["ɵand"](16777216,null,null,1,null,ut)),a["ɵdid"](7,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,!1),t(e,7,0,!1)}),null)}var lt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","current-timedate"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.component.title)}))}var ct=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ft(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit.label)}))}function ht(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Custom Range"]))],null,null)}function gt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-predefined-btns"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ft)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ht)),a["ɵdid"](4,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.ranges),t(e,4,0,n.isCustomRangeShown)}),null)}var pt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function bt(t){return a["ɵvid"](2,[(t()(),a["ɵted"](0,null,["",""]))],null,(function(t,e){t(e,0,0,e.component.day.label)}))}var mt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function yt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"button",[["class","current"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.view("month")&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.component.calendar.monthTitle)}))}function vt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,2,"button",[["class","previous"],["type","button"]],[[8,"disabled",0],[4,"visibility",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.navTo(!0)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["‹"])),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵand"](16777216,null,null,1,null,yt)),a["ɵdid"](5,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵeld"](7,0,null,null,2,"button",[["class","current"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.view("year")&&a),a}),null,null)),(t()(),a["ɵeld"](8,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](9,null,["",""])),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵeld"](11,0,null,null,2,"button",[["class","next"],["type","button"]],[[8,"disabled",0],[4,"visibility",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.navTo(!1)&&a),a}),null,null)),(t()(),a["ɵeld"](12,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["›"]))],(function(t,e){t(e,5,0,e.component.calendar.monthTitle)}),(function(t,e){var n=e.component;t(e,0,0,n.calendar.disableLeftArrow,n.calendar.hideLeftArrow?"hidden":"visible"),t(e,9,0,n.calendar.yearTitle),t(e,11,0,n.calendar.disableRightArrow,n.calendar.hideRightArrow?"hidden":"visible")}))}var xt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function _t(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"th",[],null,null,null,null,null))],null,null)}function Tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"th",[["aria-label","weekday"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[""," "]))],null,(function(t,e){t(e,1,0,e.component.calendar.weekdays[e.context.index])}))}function wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["class","week"]],[[2,"active-week",null]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectWeek(t.parent.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.weekHoverHandler(t.parent.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.weekHoverHandler(t.parent.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){var n=e.component;t(e,0,0,n.isWeekHovered),t(e,2,0,n.calendar.weekNumbers[e.parent.context.index])}))}function Ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"td",[["role","gridcell"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"span",[["bsDatepickerDayDecorator",""]],[[2,"disabled",null],[2,"is-highlighted",null],[2,"is-other-month",null],[2,"is-active-other-month",null],[2,"in-range",null],[2,"select-start",null],[2,"select-end",null],[2,"selected",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectDay(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverDay(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverDay(t.context.$implicit,!1)&&a),a}),bt,pt)),a["ɵdid"](2,114688,null,0,r.z,[r.a,a.ElementRef,a.Renderer2],{day:[0,"day"]},null),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,1,0,a["ɵnov"](e,2).day.isDisabled,a["ɵnov"](e,2).day.isHovered,a["ɵnov"](e,2).day.isOtherMonth,a["ɵnov"](e,2).day.isOtherMonthHovered,a["ɵnov"](e,2).day.isInRange,a["ɵnov"](e,2).day.isSelectionStart,a["ɵnov"](e,2).day.isSelectionEnd,a["ɵnov"](e,2).day.isSelected),t(e,3,0,e.context.$implicit.label)}))}function St(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,wt)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Ot)),a["ɵdid"](4,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.options.showWeekNumbers),t(e,4,0,e.context.$implicit.days)}),null)}function It(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,13,"bs-calendar-layout",[],null,null,null,ot,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,9,"table",[["class","days weeks"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,5,"thead",[],null,null,null,null,null)),(t()(),a["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,_t)),a["ɵdid"](8,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Tt)),a["ɵdid"](10,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](11,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,St)),a["ɵdid"](13,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,8,0,n.options.showWeekNumbers),t(e,10,0,n.calendar.weekdays),t(e,13,0,n.calendar.weeks)}),null)}var Nt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Ct(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["role","gridcell"]],[[2,"disabled",null],[2,"is-highlighted",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.viewMonth(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverMonth(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverMonth(t.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],[[2,"selected",null]],null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,1,0,e.context.$implicit.isSelected),t(e,2,0,e.context.$implicit.label)}))}function Rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ct)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function At(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,ot,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,3,"table",[["class","months"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Rt)),a["ɵdid"](7,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,7,0,n.calendar.months)}),null)}var kt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"div",[["class","bs-timepicker-container"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"button",[["class","bs-decrease"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["-"])),(t()(),a["ɵeld"](4,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"button",[["class","bs-increase"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["+"])),(t()(),a["ɵeld"](7,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["ɵeld"](8,0,null,null,1,"button",[["class","bs-decrease"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["-"])),(t()(),a["ɵeld"](10,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["ɵeld"](11,0,null,null,1,"button",[["class","bs-increase"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["+"])),(t()(),a["ɵeld"](13,0,null,null,2,"button",[["class","switch-time-format"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](14,null,[""," "])),(t()(),a["ɵeld"](15,0,null,null,0,"img",[["alt",""],["src","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg=="]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,4,0,n.hours),t(e,10,0,n.minutes),t(e,14,0,n.ampm)}))}var Lt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["role","gridcell"]],[[2,"disabled",null],[2,"is-highlighted",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.viewYear(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverYear(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverYear(t.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],[[2,"selected",null]],null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,1,0,e.context.$implicit.isSelected),t(e,2,0,e.context.$implicit.label)}))}function Pt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Dt)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function Mt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,ot,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,3,"table",[["class","years"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Pt)),a["ɵdid"](7,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,7,0,n.calendar.years)}),null)}},b1Dy:function(t,e,n){!function(t){"use strict";t.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},b5OY:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("pxLl");class a{constructor(t,e){this.performanceCounterService=t,this.i18n=e,this.columns=[],this.counters=[]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Description"),prop:"description",flexGrow:1},{name:this.i18n("Value"),prop:"value",cellTemplate:this.valueTpl,flexGrow:1}]}getCounters(t){this.performanceCounterService.get(this.serviceType,this.serviceId).subscribe(t=>{this.counters=t},e=>{404===e.status?(e.preventDefault(),this.counters=null):t.error()})}}},bHdf:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("5+tZ"),r=n("SpAZ");function i(t=Number.POSITIVE_INFINITY){return Object(a.a)(r.a,t)}},bN42:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="ja-JP">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>ナビゲーションの切り替え</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>ダッシュボード</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>クラスタ</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>ホスト</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>モニター</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>サービス</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSHマップ</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>マネージャモジュール</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>ログ</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>プール</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>ブロック</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>イメージ</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>ミラーリング</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>ファイルシステム</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>オブジェクトゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>デーモン</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>バケット</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>言語の選択</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>パネルデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana Time Picker</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>設定のリセット</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>戻る</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>データを読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>選択済み</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>検出済み</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>合計</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名前</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>説明</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>長い説明</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>デフォルト</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>デーモンのデフォルト</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>値</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>保存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSHマップビューア</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>ホスト名</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>はい。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>キャンセル</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>閉じる</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>ホストリスト</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>全体的なパフォーマンス</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>エントリが見つかりません</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>クラスタログ</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>監査ログ</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>設定を読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>設定を読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>マネージャモジュールの編集</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>入力された値は有効なUUIDではありません(有効なUUIDの例: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8)。</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>有効なIPアドレスを入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>数字を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>数字または小数を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>ステータス</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>クラスタID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmapが変更されました</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmapエポック</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>定数con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>定数mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>必須のcon</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>必須のmon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>定数内</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非定数内</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>追加</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>機能</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>クラスタ全体のOSDフラグ</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>送信</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>詳細...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD回復優先度</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>優先度</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>優先度値のカスタマイズ</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>値は0と1の間である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>再重みづけ</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSDリスト</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>値</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>編集</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>削除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>ヘルス</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>統計情報</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>クライアント</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任意のクライアントからアクセスできます</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>アドレス</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必須フィールド</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>1つ以上のカンマ区切り値を含んでいる必要があります</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>アクセスタイプ</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>スカッシュ</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>クライアントの追加</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 使用可能なクラスタがありません --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- クラスタを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>デーモンの追加</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>ストレージバックエンド</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 使用可能なデータプールがありません --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- ストレージバックエンドを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>オブジェクトゲートウェイユーザ</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 使用可能なユーザがありません --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- オブジェクトゲートウェイユーザを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFSユーザID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 使用可能なクライアントがありません --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephxクライアントを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS名</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>セキュリティラベル</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>セキュリティラベルの有効化</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFSパス</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>パスは「/」で始まる必要があり、その後ろに1つの単語を配置できます</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>新しいディレクトリが作成されます</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>パス</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>パスは単一の「/」または1つの単語である必要があります</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>新しいバケットが作成されます</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFSプロトコル</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFSタグ</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>クライアントはサブディレクトリをマウントできません(たとえば、[タグ] = fooの場合は、クライアントはfoo/bazをマウントできません)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>異なる[タグ]オプションを使用することで、同じパスを複数回エクスポートできます。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>疑似</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>異なる[疑似]オプションを使用することで、同じパスを複数回エクスポートできます。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 使用可能なアクセスタイプがありません --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- アクセスタイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 使用可能なスカッシュがありません --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 実行されるユーザIDスカッシュ操作の種類を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>トランスポートプロトコル</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Cephにようこそ!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>ユーザ名は必須です</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>パスワードは必須です</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>ログイン</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>このユーザはCephに存在しません。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>禁止</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>検索していた内容を表示することは許可されていません。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD設定</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>ローカル設定値を削除します。親設定値が継承されて代わりに使用されます。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小値は0です</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>プールリスト</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名前は英数字、ダッシュ、および下線のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>選択されたイレイジャコードプロファイル名はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>プラグイン</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>データチャンク(k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>2以上である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>コーディングチャンク(m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>1以上である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>耐久性推定子(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>地域(l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush障害ドメイン</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush地域</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>技法</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>パケットサイズ</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crushルート</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crushデバイスクラス</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任意</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>ディレクトリ</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名前...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>選択されたCephプール名はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>プールタイプ</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- プールタイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>配置グループ</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>少なくとも1つの配置グループが必要です。</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>ご使用のクラスタはこれだけ多数の配置グループを処理できません。必要な配置グループの数を再計算してください。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>計算のヘルプ</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>複製されたサイズ</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>フラグ</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>ECの上書き</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>アプリケーション</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>イレイジャコードプロファイル</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 使用可能なイレイジャコードプロファイルがありません --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- イレイジャコードプロファイルを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crushルールセット</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crushルールを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crushルール</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crushステップ</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>圧縮</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>モード</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>アルゴリズム</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 使用可能なイレイジャ圧縮アルゴリズムがありません --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>最小blobサイズ</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>例: 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>値は0より大きい必要があります</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>最大blobサイズ</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>例: 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>値は最小blobサイズより大きい必要があります</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>率</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>圧縮率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>値は0.0~1.0の間である必要があります</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>例: 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>詳細</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>パフォーマンスの詳細</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>キャッシュ層の詳細</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>イメージをごみ箱に移動する</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保護の失効日</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>保護されていません</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日付の形式が正しくありません。「YYYY-MM-DD HH:mm:ss」という形式を使用してください。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保護はすでに失効しています。将来の日付を選択するか、日付を空白のままにしてください。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>イメージの移動</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>概要</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>ターゲット</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>検出認証</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>ユーザ名は8~64文字の長さである必要があり、\n英字、「.」、「@」、「-」、「_」、または「:」のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>パスワード</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>相互ユーザ</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>相互パスワード</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>取得可能な情報:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>使用可能なiSCSIターゲットがありません</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>プール</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>データプール</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>作成済み</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>サイズ</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>オブジェクトサイズ</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>プロビジョニング済み</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>プロビジョニング済み合計</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>ストライピング単位</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>ストライピング数</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>親</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>ブロック名のプレフィックス</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>順番</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>スナップショット</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>イメージ</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>この設定はグローバル値よりも優先されます</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>グローバル</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>これはグローバル値です。このイメージについて、このオプションの値は設定されていません。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>「/」と「@」は使用できません。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 使用可能なrbdプールがありません --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- プールを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>専用のデータプールを使用してください</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>データプール</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>RBDのオブジェクトデータを保管するための専用プール</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>サイズを大きくする必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>詳細</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>ストライピング</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>ストライプ単位</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- ストライプ単位を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>ストライプ数が定義されているため、このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>ストライプ単位がオブジェクトサイズより大きいです。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>ストライプ数</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>ストライプ単位が定義されているため、このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>ストライプ数は0より大きい必要があります。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>ロールバックしようとしています</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>ごみ箱を空にする</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>すべて</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>プール:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>プール名...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>イメージの復元</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>復元するには</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>イメージの新しい名前を入力してクリックします</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新しい名前</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>失効日</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保護の終了日</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSIトポロジ</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常はこれらのパラメータをデフォルト値から変更する必要はありません。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>バックストア</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>確認</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>詳細設定</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>ターゲットIQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQNのパターンが正しくありません。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>詳細情報</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>このターゲットの詳細設定は変更されています。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>ポータル</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>ポータルの追加</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>このイメージの設定は変更されています。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>イメージの追加</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL認証</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>イニシエータ</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>イニシエータ</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>クライアントIQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>イニシエータIQNは一意である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>ユーザ名は8~64文字の長さである必要があり、\n英字、「.」、「@」、「-」、「_」、または「:」のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>イニシエータはいずれかのグループに属します。イメージはそのグループ内で設定されます。</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>アイテムが追加されていません。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>イニシエータの追加</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>グループ</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>グループ</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>グループの追加</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>ごみ箱</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>同期中</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>準備完了</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>プールのミラーモードの編集</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>ミラーを無効にする前に、ピアクラスタを削除する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>クラスタ名</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>このクラスタ名は無効です。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>このCephX IDは無効です。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>モニターアドレス</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>カンマ区切りアドレス...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>この警告アドレスは無効です。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephXキー</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64エンコード化済みキー...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephXキーはbase64でエンコードされている必要があります。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>パフォーマンスカウンタを使用できません</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>デーモンリスト</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>パフォーマンスカウンタ</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>バケットデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Id</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>この値は無効です。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>選択された名前はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>所有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- ユーザを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>有効化済み</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>インデックスタイプ</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>配置ルール</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>マーカー</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>最大マーカー</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>バージョン</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>マスタバージョン</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>変更時間</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>ゾーングループ</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>バケットクォータ</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大サイズ</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>無制限</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>ユーザ名</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- ユーザ名を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>キーの自動生成</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>アクセスキー</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>秘密キー</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>氏名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>電子メールアドレス</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>中断済み</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>システム</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大バケット数</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>サブユーザ</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>機能</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>ユーザクォータ</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>表示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>キー</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>タイプ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- タイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>許可</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 許可を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>サブユーザ</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>選択されたサブユーザIDはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>読み取り、書き込み</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>フル</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>スウィフトキー</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>秘密の自動生成</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>ユーザデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>ユーザデータを読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>選択されたユーザIDはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>これは有効な電子メールアドレスではありません。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>選択された電子メールアドレスはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>最大バケット数</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>無効化済み</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>カスタム</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3キー</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>サブユーザがいません。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>キーがありません。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>スウィフト</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>機能がありません。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>無制限のサイズ</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>最大サイズ</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>無制限のオブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>0以上の値を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>説明...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>許可</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>役割</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>パスワードの確認入力</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>確認入力されたパスワードがパスワードと一致しません。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>電子メール</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>無効な電子メールです。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>自身のユーザから「user read / update」という許可を削除しようとしています。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>続行した場合は、どのユーザの役割も追加および削除できなくなります。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>続行してもよろしいですか?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>ヘルプ</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>ドキュメント</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>バージョン情報</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>ダッシュボード設定</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>ユーザ管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>ログイン済みユーザ</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>サインアウト</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>属性(OSDマップ)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>メタデータを使用できません</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>メタデータ</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>パフォーマンスカウンタ</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>書き込み回数</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>読み取り回数</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>ヒストグラム</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>現行値</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>最小</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>最大</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>ソース</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>レベル</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>実行時に更新できます(編集可能)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>タグ</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>列挙値</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>関連項目</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>クラスタのステータス</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>マネージャデーモン</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>オブジェクトゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>メタデータサーバ</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSIゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>クライアントのIOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>クライアントのスループット</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>クライアントの読み取り/書き込み</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>回復スループット</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>スクラブ</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>パフォーマンス</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>未フォーマット時の容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSDあたりの配置グループ数</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>配置グループのステータス</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>ランク</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>現在</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>検出認証を更新しました</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>使用可能なポータルはありません。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>使用可能なイメージはありません。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>使用可能なイメージはありません。ターゲットにイメージを追加したことを確認してください。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>使用可能なイニシエータはありません。ターゲットにイニシエータを追加したことを確認してください。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>ターゲット</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>状態</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>読み取りバイト数</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>書き込みバイト数</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>読み取り操作数</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>書き込み操作数</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>次の日付以降のA/O</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>インスタンス</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>進捗</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>モードの編集</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>ピアの追加</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>ピアの編集</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>ピアの削除</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>リーダー</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>#ローカル</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>#リモート</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>ミラーピア</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>キー</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>ディープフラット化</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>階層化</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>排他ロック</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>オブジェクトマップ(排他ロックが必要)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>ジャーナリング(排他ロックが必要)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>未保護</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBDスナップショットのロールバック</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>ロールバック</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBDスナップショット</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>削除日時</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>タイプ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>状態</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>バージョン</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>ホスト</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>ルート</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>スタンバイデーモン</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>ランク</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>デーモン</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>アクティビティ</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>dエントリ</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>iノード</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用量</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>更新済み</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>この値は実行時に更新できます。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>デーモン/クライアントはこの値をモニター設定データベースから取得しません。\nこのオプションを「ceph config set ...」を通じて設定することは禁止されています。\nこのオプションは、ceph.confまたはコマンドラインを通じて\n設定する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>オプションはデーモン始動時のみに有効になります。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>オプションはクラスタの作成のみに適用されます。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>オプションはデーモンの作成のみに適用されます。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>サービス</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>現行値</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>編集可能</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>有効化</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>無効化</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>再接続していますので、しばらくお待ちください...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>パブリックアドレス</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>セッションの開始</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>インなし</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>以前にアウトとしてマークされたOSDは、それらの始動時にインとしてマークされることはありません</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>アウトなし</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSDは、設定済みの間隔が経過した後に自動的にアウトとしてマークされます</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>アップなし</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSDを始動することは許可されていません</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>ダウンなし</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>OSDの障害レポートは無視されているため、OSDはモニターによってダウンとしてマークされません</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>一時停止</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>読み取りと書き込みを一時停止します</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>スクラブなし</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>スクラブ処理は無効化されています</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>ディープスクラブなし</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>ディープスクラブ処理は無効化されています</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>バックフィルなし</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>配置グループのバックフィルは中断されています</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>回復なし</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>配置グループの回復は中断されています</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>ビット単位のソート</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>ビット単位のソートを使用する</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>消去されたスナップディレクトリ</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDによってスナップセットが変換されました</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>回復の削除</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>ピアリングの代わりに回復時に削除が実行されました</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>配置グループログのハード制限</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>配置グループログ長のハード制限を適用します</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>OSDフラグを更新しました</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>アウト</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>イン</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ダウン</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>マーク</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>喪失したOSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>喪失としてマーク済み</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>消去</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>消去済み</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>破棄</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>破棄済み</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>削除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>配置グループ数</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>読み取りバイト数</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>書き込みバイト数</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>読み取り操作数</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>書き込み操作数</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大バックフィル数</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>回復最大アクティブ</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>回復最大単一始動</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>回復スリープ</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>ジョブ</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>重大度</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>始動済み</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>使用済み</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>使用可能</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>クリーン</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>動作中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警告</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>不明</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>アップ</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>ファイルシステムがありません</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>アクティブ</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>スタンバイ</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>アクティブデーモン</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>定数</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganeshaサービスが設定されていません。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>トランスポート</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFSユーザ</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFSファイルシステム</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(グローバル設定から継承)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>グローバル設定から継承されました</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 実行されるユーザIDスカッシュ操作を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>使用可能なデーモンがありません。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>キャッシュモード</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>退去までの最小経過時間</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>消去までの最小経過時間</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>ターゲットの最大バイト数</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>ターゲットの最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>アプリケーションは追加されていません</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>アプリケーション数の上限に達しました</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>1つのプールは最大で4つのアプリケーション定義しか保有できません。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>使用可能な文字「_a-zA-Z0-9」</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>最大長は128文字です</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>アプリケーションのフィルタリングまたは追加</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>アプリケーションの追加</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>イレイジャコードプロファイル</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>レプリカサイズ</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>最後の変更</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>イレイジャコード化済みプロファイル</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crushルールセット</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>バケット</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>バケット数</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>ユーザ数</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>範囲</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>読み取り</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>作成</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>システム役割</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>ユーザの更新</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>続行</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>このユーザの役割が変更されたため、このユーザは自動的にログアウトされました。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>各オブジェクトは複数のデータチャンクパートに分割されており、それぞれのパートは異なるOSDに保管されています。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>各オブジェクトのコーディングチャンクを計算して、これらのチャンクを別々のOSDに保管します。\nコーディングチャンクの数は、データを失うことなくダウン状態になることができるOSDの数でもあります。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>jerasureプラグインは最も汎用的で柔軟性の高いプラグインです。\nこのプラグインは、Cephイレイジャコード化済みプール用のデフォルトでもあります。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>さらに柔軟性の高い技法はreed_sol_vanです。kとmを\n設定するだけで十分です。\ncauchy_good技法はより高速となり得ますが、パケットサイズを慎重に選択する必要があります。\nreed_sol_r6_op、liberation、blaum_roth、liber8tionはすべて、\nm=2を使用した設定のみが可能という意味でRAID6と同等です。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>エンコードはバイトサイズのパケット群に対して同時に実行されます。\n適切なパケットサイズを選択することは困難です。\njerasureのドキュメントにはこのトピックに関する詳細な情報が記載されています。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>jerasureプラグインを使用すると、イレイジャコード化済みオブジェクトが複数のOSDに保管されている場合は、\n1つのOSDの喪失から回復するには、他のすべてのOSDからの読み取りが必要になります。\nたとえば、k=8およびm=4を使用してjerasureが設定されている場合は、1つのOSDが失われた場合、\n修復のためには他の11個のOSDからの読み取りが必要になります。\n\nlrcイレイジャコードプラグインは、これより少ないOSDを使用した回復を可能にするために、\nローカルパリティチャンクを作成します。たとえば、lrcがk=8、m=4、およびl=4を使用して設定されている場合は、\nlrcは、4つのOSDごとに1つの追加パリティチャンクを作成します。1つのOSDが失われた場合は、\n11個の代わりに4つのOSDのみを使用してそのOSDを回復できます。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>コーディングチャンクとデータチャンクをサイズ地域の複数セットにグループ分けします。\nたとえば、k=4およびm=2の場合に、[地域]=3の場合は、3つのチャンクからなるグループが2つ作成されます。\n各セットは、別のセットからチャンクを読み取ることなく回復できます。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>1によって定義されたチャンクの各セットが保管されるCrushバケットのタイプ。\nたとえば、このバケットタイプがラックに設定されている場合は、1のチャンクの各グループは異なるラックに配置されます。\nこのバケットタイプを使用して、「ラックの選択」ステップなどのCRUSHルールステップが作成されます。\nこのバケットタイプが設定されていない場合は、このようなグループ分けは行われません。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isaプラグインはISAライブラリをカプセル化します。このプラグインはIntelプロセッサ上のみで動作します。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISAプラグインは2つのリードソロモン形式で提供されています。reed_sol_vanが設定されている場合は、Vandermondeであり、cauchyが設定されている場合は、Cauchyです。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shecプラグインは複数のSHECライブラリをカプセル化します。\nこのプラグインを使用すると、cephはリードソロモンコードより効率的にデータを回復できます。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>それぞれが各データチャンクを各自の計算範囲内に含んでいるパリティチャンクの数。\nこの数は、耐久性推定子として使用されます。\nたとえば、c=2の場合は、データを失うことなく2つのOSDがダウン状態になることができます。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSHルールの最初のステップ(「デフォルトの使用」ステップなど)用に\n使用されるCrushバケットの名前。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>同じ障害ドメインの単一バケット内に2つのチャンクが配置されることを防止します。\nたとえば、障害ドメインがホストである場合は、2つのチャンクが同じホストに保管されることはありません。\nこれを使用して、「リーフホストの選択」ステップなどのCRUSHルールステップが作成されます。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>CRUSHマップ内でCrushデバイスクラス名を使用して、配置先を特定クラス(ssdやhddなど)のデバイスのみに制限します。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>イレイジャコードプラグインの読み込み元となるディレクトリ名を設定します。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>すべての操作を許可します</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>サーバに変更を加えない操作のみを許可します</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>読み取り/書き込み操作を許可しませんが、他のすべての操作を許可します</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>読み取り/書き込み操作、およびファイル属性やディレクトリ内容を変更するどの操作も許可しません</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>アクセスを一切許可しません</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 優先度を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>情報</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>直前の5分間</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>直前の15分間</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>直前の30分間</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>直前の1時間(デフォルト)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>直前の3時間</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>直前の6時間</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>直前の12時間</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>直前の24時間</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨日</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>本日</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>本日の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>一昨日</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>過去2日間</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>先週の同じ曜日</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>前週</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>今週</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>今週の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>過去7日間</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>前月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>今月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>今月の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>過去30日間</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>過去90日間</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>過去6カ月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>過去1年間</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>前年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>過去2年間</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>過去5年間</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>アイテムが選択されていません。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>アイテムを選択解除して再選択してください</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>選択の上限に達しました</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>タグのフィルタリング</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>バッジの追加</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>使用可能なアイテムはありません。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>コピー</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>ディープスクラブ</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>破棄</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>フラット化</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>ダウンとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>インとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>喪失としてマーク</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>アウトとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保護</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>名前の変更</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>復元</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>ごみ箱に移動する</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>保護解除</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>削除済み</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>複製済み</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>コピー済み</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>フラット化済み</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>消去済み</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>復元済み</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>ロールバック済み</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>はい</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>いいえ</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>サービス品質</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS制限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>希望する秒あたり入出力バイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS制限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>希望する秒あたり入出力操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>読み取りBPS制限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>希望する秒あたり読み取りバイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>読み取りIOPS制限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>希望する秒あたり読み取り操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>書き込みBPS制限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>希望する秒あたり書き込みバイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>書き込みIOPS制限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>希望する秒あたり書き込み操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPSバースト</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>希望する入出力バイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>希望する入出力操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>読み取りBPSバースト</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>希望する読み取りバイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>読み取りIOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>希望する読み取り操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>書き込みBPSバースト</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>希望する書き込みバイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>書き込みIOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>希望する書き込み操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>実行中</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>実行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>実行済み</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>不明なタスク</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>作成中</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>作成</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>更新中</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>削除中</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>複製中</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>コピー中</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>コピー</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>フラット化中</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>フラット化</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>ロールバック中</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>ロールバック</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>移動中</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>移動</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>移動済み</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>イメージが見つかりませんでした。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>復元中</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>復元</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>消去中</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>消去</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>すべてのプール</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>ピアを含んでいるためミラーリングを無効化できません。</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},bOMt:function(t,e,n){!function(t){"use strict";t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},bOdf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("5+tZ");function r(t,e){return Object(a.a)(t,e,1)}},bQrF:function(t,e,n){var a=n("ZPW6"),r=n("JEWA"),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var s=t[e];i.call(t,e)&&r(s,n)&&(void 0!==n||e in t)||a(t,e,n)}},bWFh:function(t,e,n){"use strict";var a=n("I+eb"),r=n("2oRo"),i=n("4zBA"),s=n("lMq5"),u=n("busE"),o=n("8YOa"),l=n("ImZN"),d=n("GarU"),c=n("Fib7"),f=n("hh1v"),h=n("0Dky"),g=n("HH4o"),p=n("1E5z"),b=n("cVYH");t.exports=function(t,e,n){var m=-1!==t.indexOf("Map"),y=-1!==t.indexOf("Weak"),v=m?"set":"add",x=r[t],_=x&&x.prototype,T=x,w={},O=function(t){var e=i(_[t]);u(_,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(y&&!f(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return y&&!f(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!f(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(s(t,!c(x)||!(y||_.forEach&&!h((function(){(new x).entries().next()})))))T=n.getConstructor(e,t,m,v),o.enable();else if(s(t,!0)){var S=new T,I=S[v](y?{}:-0,1)!=S,N=h((function(){S.has(1)})),C=g((function(t){new x(t)})),R=!y&&h((function(){for(var t=new x,e=5;e--;)t[v](e,e);return!t.has(-0)}));C||((T=e((function(t,e){d(t,_);var n=b(new x,t,T);return null!=e&&l(e,n[v],{that:n,AS_ENTRIES:m}),n}))).prototype=_,_.constructor=T),(N||R)&&(O("delete"),O("has"),m&&O("get")),(R||I)&&O(v),y&&_.clear&&delete _.clear}return w[t]=T,a({global:!0,forced:T!=x},w),p(T,t),y||n.setStrong(T,t,m),T}},bWnS:function(t,e,n){var a=n("qN6l");t.exports=function(){this.__data__=a?a(null):{},this.size=0}},bX23:function(t,e){t.exports=function(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}},bXm7:function(t,e,n){!function(t){"use strict";var e={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};t.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},bYM6:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("wd/R"))},bdl3:function(t,e,n){var a=n("ktBm");t.exports=function(t){return a(this.__data__,t)>-1}},bpih:function(t,e,n){!function(t){"use strict";t.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},busE:function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=n("Gi26"),s=n("kRJp"),u=n("zk60"),o=n("iSVu"),l=n("afO8"),d=n("Xnc8").CONFIGURABLE,c=l.get,f=l.enforce,h=String(String).split("String");(t.exports=function(t,e,n,o){var l,c=!!o&&!!o.unsafe,g=!!o&&!!o.enumerable,p=!!o&&!!o.noTargetGet,b=o&&void 0!==o.name?o.name:e;r(n)&&("Symbol("===String(b).slice(0,7)&&(b="["+String(b).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!i(n,"name")||d&&n.name!==b)&&s(n,"name",b),(l=f(n)).source||(l.source=h.join("string"==typeof b?b:""))),t!==a?(c?!p&&t[e]&&(g=!0):delete t[e],g?t[e]=n:s(t,e,n)):g?t[e]=n:u(e,n)})(Function.prototype,"toString",(function(){return r(this)&&c(this).source||o(this)}))},bxKX:function(t,e,n){!function(t){"use strict";t.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},bxSN:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("8Y7J"),i=n("moLw");e.ClickOutsideModule=function(){return a([r.NgModule({declarations:[i.ClickOutsideDirective],exports:[i.ClickOutsideDirective]})],(function(){}))}()},c2HN:function(t,e,n){"use strict";function a(t){return!!t&&"function"!=typeof t.subscribe&&"function"==typeof t.then}n.d(e,"a",(function(){return a}))},cRL0:function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},cRix:function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");t.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},cUpR:function(t,e,n){"use strict";n.d(e,"p",(function(){return _})),n.d(e,"a",(function(){return dt})),n.d(e,"h",(function(){return lt})),n.d(e,"c",(function(){return T})),n.d(e,"d",(function(){return w})),n.d(e,"e",(function(){return W})),n.d(e,"f",(function(){return K})),n.d(e,"g",(function(){return $})),n.d(e,"b",(function(){return tt})),n.d(e,"q",(function(){return s})),n.d(e,"j",(function(){return k})),n.d(e,"i",(function(){return H})),n.d(e,"m",(function(){return J})),n.d(e,"n",(function(){return X})),n.d(e,"l",(function(){return I})),n.d(e,"o",(function(){return S})),n.d(e,"k",(function(){return et}));var a=n("SVse"),r=n("8Y7J");let i=null;function s(){return i}const u={class:"className",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},o={"\b":"Backspace","\t":"Tab","\7f":"Delete","\e":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},l={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\90":"NumLock"},d=(()=>{if(r["ɵglobal"].Node)return r["ɵglobal"].Node.prototype.contains||function(t){return!!(16&this.compareDocumentPosition(t))}})();class c extends class extends class{constructor(){this.resourceLoaderType=null}get attrToPropMap(){return this._attrToPropMap}set attrToPropMap(t){this._attrToPropMap=t}}{constructor(){super(),this._animationPrefix=null,this._transitionEnd=null;try{const t=this.createElement("div",document);if(null!=this.getStyle(t,"animationName"))this._animationPrefix="";else{const e=["Webkit","Moz","O","ms"];for(let n=0;n<e.length;n++)if(null!=this.getStyle(t,e[n]+"AnimationName")){this._animationPrefix="-"+e[n].toLowerCase()+"-";break}}const e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};Object.keys(e).forEach(n=>{null!=this.getStyle(t,n)&&(this._transitionEnd=e[n])})}catch(t){this._animationPrefix=null,this._transitionEnd=null}}getDistributedNodes(t){return t.getDistributedNodes()}resolveAndSetHref(t,e,n){t.href=null==n?e:e+"/../"+n}supportsDOMEvents(){return!0}supportsNativeShadowDOM(){return"function"==typeof document.body.createShadowRoot}getAnimationPrefix(){return this._animationPrefix?this._animationPrefix:""}getTransitionEnd(){return this._transitionEnd?this._transitionEnd:""}supportsAnimation(){return null!=this._animationPrefix&&null!=this._transitionEnd}}{parse(t){throw new Error("parse not implemented")}static makeCurrent(){var t;t=new c,i||(i=t)}hasProperty(t,e){return e in t}setProperty(t,e,n){t[e]=n}getProperty(t,e){return t[e]}invoke(t,e,n){t[e](...n)}logError(t){window.console&&(console.error?console.error(t):console.log(t))}log(t){window.console&&window.console.log&&window.console.log(t)}logGroup(t){window.console&&window.console.group&&window.console.group(t)}logGroupEnd(){window.console&&window.console.groupEnd&&window.console.groupEnd()}get attrToPropMap(){return u}contains(t,e){return d.call(t,e)}querySelector(t,e){return t.querySelector(e)}querySelectorAll(t,e){return t.querySelectorAll(e)}on(t,e,n){t.addEventListener(e,n,!1)}onAndCancel(t,e,n){return t.addEventListener(e,n,!1),()=>{t.removeEventListener(e,n,!1)}}dispatchEvent(t,e){t.dispatchEvent(e)}createMouseEvent(t){const e=this.getDefaultDocument().createEvent("MouseEvent");return e.initEvent(t,!0,!0),e}createEvent(t){const e=this.getDefaultDocument().createEvent("Event");return e.initEvent(t,!0,!0),e}preventDefault(t){t.preventDefault(),t.returnValue=!1}isPrevented(t){return t.defaultPrevented||null!=t.returnValue&&!t.returnValue}getInnerHTML(t){return t.innerHTML}getTemplateContent(t){return"content"in t&&this.isTemplateElement(t)?t.content:null}getOuterHTML(t){return t.outerHTML}nodeName(t){return t.nodeName}nodeValue(t){return t.nodeValue}type(t){return t.type}content(t){return this.hasProperty(t,"content")?t.content:t}firstChild(t){return t.firstChild}nextSibling(t){return t.nextSibling}parentElement(t){return t.parentNode}childNodes(t){return t.childNodes}childNodesAsList(t){const e=t.childNodes,n=new Array(e.length);for(let a=0;a<e.length;a++)n[a]=e[a];return n}clearNodes(t){for(;t.firstChild;)t.removeChild(t.firstChild)}appendChild(t,e){t.appendChild(e)}removeChild(t,e){t.removeChild(e)}replaceChild(t,e,n){t.replaceChild(e,n)}remove(t){return t.parentNode&&t.parentNode.removeChild(t),t}insertBefore(t,e,n){t.insertBefore(n,e)}insertAllBefore(t,e,n){n.forEach(n=>t.insertBefore(n,e))}insertAfter(t,e,n){t.insertBefore(n,e.nextSibling)}setInnerHTML(t,e){t.innerHTML=e}getText(t){return t.textContent}setText(t,e){t.textContent=e}getValue(t){return t.value}setValue(t,e){t.value=e}getChecked(t){return t.checked}setChecked(t,e){t.checked=e}createComment(t){return this.getDefaultDocument().createComment(t)}createTemplate(t){const e=this.getDefaultDocument().createElement("template");return e.innerHTML=t,e}createElement(t,e){return(e=e||this.getDefaultDocument()).createElement(t)}createElementNS(t,e,n){return(n=n||this.getDefaultDocument()).createElementNS(t,e)}createTextNode(t,e){return(e=e||this.getDefaultDocument()).createTextNode(t)}createScriptTag(t,e,n){const a=(n=n||this.getDefaultDocument()).createElement("SCRIPT");return a.setAttribute(t,e),a}createStyleElement(t,e){const n=(e=e||this.getDefaultDocument()).createElement("style");return this.appendChild(n,this.createTextNode(t,e)),n}createShadowRoot(t){return t.createShadowRoot()}getShadowRoot(t){return t.shadowRoot}getHost(t){return t.host}clone(t){return t.cloneNode(!0)}getElementsByClassName(t,e){return t.getElementsByClassName(e)}getElementsByTagName(t,e){return t.getElementsByTagName(e)}classList(t){return Array.prototype.slice.call(t.classList,0)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}hasClass(t,e){return t.classList.contains(e)}setStyle(t,e,n){t.style[e]=n}removeStyle(t,e){t.style[e]=""}getStyle(t,e){return t.style[e]}hasStyle(t,e,n){const a=this.getStyle(t,e)||"";return n?a==n:a.length>0}tagName(t){return t.tagName}attributeMap(t){const e=new Map,n=t.attributes;for(let a=0;a<n.length;a++){const t=n.item(a);e.set(t.name,t.value)}return e}hasAttribute(t,e){return t.hasAttribute(e)}hasAttributeNS(t,e,n){return t.hasAttributeNS(e,n)}getAttribute(t,e){return t.getAttribute(e)}getAttributeNS(t,e,n){return t.getAttributeNS(e,n)}setAttribute(t,e,n){t.setAttribute(e,n)}setAttributeNS(t,e,n,a){t.setAttributeNS(e,n,a)}removeAttribute(t,e){t.removeAttribute(e)}removeAttributeNS(t,e,n){t.removeAttributeNS(e,n)}templateAwareRoot(t){return this.isTemplateElement(t)?this.content(t):t}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}getBoundingClientRect(t){try{return t.getBoundingClientRect()}catch(e){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}}getTitle(t){return t.title}setTitle(t,e){t.title=e||""}elementMatches(t,e){return!!this.isElementNode(t)&&(t.matches&&t.matches(e)||t.msMatchesSelector&&t.msMatchesSelector(e)||t.webkitMatchesSelector&&t.webkitMatchesSelector(e))}isTemplateElement(t){return this.isElementNode(t)&&"TEMPLATE"===t.nodeName}isTextNode(t){return t.nodeType===Node.TEXT_NODE}isCommentNode(t){return t.nodeType===Node.COMMENT_NODE}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}hasShadowRoot(t){return null!=t.shadowRoot&&t instanceof HTMLElement}isShadowRoot(t){return t instanceof DocumentFragment}importIntoDoc(t){return document.importNode(this.templateAwareRoot(t),!0)}adoptNode(t){return document.adoptNode(t)}getHref(t){return t.getAttribute("href")}getEventKey(t){let e=t.key;if(null==e){if(e=t.keyIdentifier,null==e)return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&l.hasOwnProperty(e)&&(e=l[e]))}return o[e]||e}getGlobalEventTarget(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null}getHistory(){return window.history}getLocation(){return window.location}getBaseHref(t){const e=h||(h=document.querySelector("base"),h)?h.getAttribute("href"):null;return null==e?null:(n=e,f||(f=document.createElement("a")),f.setAttribute("href",n),"/"===f.pathname.charAt(0)?f.pathname:"/"+f.pathname);var n}resetBaseElement(){h=null}getUserAgent(){return window.navigator.userAgent}setData(t,e,n){this.setAttribute(t,"data-"+e,n)}getData(t,e){return this.getAttribute(t,"data-"+e)}getComputedStyle(t){return getComputedStyle(t)}supportsWebAnimation(){return"function"==typeof Element.prototype.animate}performanceNow(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()}supportsCookies(){return!0}getCookie(t){return Object(a["ɵparseCookieValue"])(document.cookie,t)}setCookie(t,e){document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(e)}}let f,h=null;function g(){return!!window.history.pushState}const p=new r.InjectionToken("TRANSITION_ID"),b=[{provide:r.APP_INITIALIZER,useFactory:function(t,e,n){return()=>{n.get(r.ApplicationInitStatus).donePromise.then(()=>{const n=s();Array.prototype.slice.apply(n.querySelectorAll(e,"style[ng-transition]")).filter(e=>n.getAttribute(e,"ng-transition")===t).forEach(t=>n.remove(t))})}},deps:[p,a.DOCUMENT,r.Injector],multi:!0}];class m{static init(){Object(r.setTestabilityGetter)(new m)}addToWindow(t){r["ɵglobal"].getAngularTestability=(e,n=!0)=>{const a=t.findTestabilityInTree(e,n);if(null==a)throw new Error("Could not find testability for element.");return a},r["ɵglobal"].getAllAngularTestabilities=()=>t.getAllTestabilities(),r["ɵglobal"].getAllAngularRootElements=()=>t.getAllRootElements(),r["ɵglobal"].frameworkStabilizers||(r["ɵglobal"].frameworkStabilizers=[]),r["ɵglobal"].frameworkStabilizers.push(t=>{const e=r["ɵglobal"].getAllAngularTestabilities();let n=e.length,a=!1;const i=function(e){a=a||e,n--,0==n&&t(a)};e.forEach((function(t){t.whenStable(i)}))})}findTestabilityInTree(t,e,n){if(null==e)return null;const a=t.getTestability(e);return null!=a?a:n?s().isShadowRoot(e)?this.findTestabilityInTree(t,s().getHost(e),!0):this.findTestabilityInTree(t,s().parentElement(e),!0):null}}function y(t,e){"undefined"!=typeof COMPILED&&COMPILED||((r["ɵglobal"].ng=r["ɵglobal"].ng||{})[t]=e)}const v=(()=>({ApplicationRef:r.ApplicationRef,NgZone:r.NgZone}))();function x(t){return Object(r.getDebugNode)(t)}function _(t){return y("probe",x),y("coreTokens",Object.assign({},v,(t||[]).reduce((t,e)=>(t[e.name]=e.token,t),{}))),()=>x}const T=new r.InjectionToken("EventManagerPlugins");class w{constructor(t,e){this._zone=e,this._eventNameToPlugin=new Map,t.forEach(t=>t.manager=this),this._plugins=t.slice().reverse()}addEventListener(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)}addGlobalEventListener(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)}getZone(){return this._zone}_findPluginFor(t){const e=this._eventNameToPlugin.get(t);if(e)return e;const n=this._plugins;for(let a=0;a<n.length;a++){const e=n[a];if(e.supports(t))return this._eventNameToPlugin.set(t,e),e}throw new Error("No event manager plugin found for event "+t)}}class O{constructor(t){this._doc=t}addGlobalEventListener(t,e,n){const a=s().getGlobalEventTarget(this._doc,t);if(!a)throw new Error(`Unsupported event target ${a} for event ${e}`);return this.addEventListener(a,e,n)}}class S{constructor(){this._stylesSet=new Set}addStyles(t){const e=new Set;t.forEach(t=>{this._stylesSet.has(t)||(this._stylesSet.add(t),e.add(t))}),this.onStylesAdded(e)}onStylesAdded(t){}getAllStyles(){return Array.from(this._stylesSet)}}class I extends S{constructor(t){super(),this._doc=t,this._hostNodes=new Set,this._styleNodes=new Set,this._hostNodes.add(t.head)}_addStylesToHost(t,e){t.forEach(t=>{const n=this._doc.createElement("style");n.textContent=t,this._styleNodes.add(e.appendChild(n))})}addHost(t){this._addStylesToHost(this._stylesSet,t),this._hostNodes.add(t)}removeHost(t){this._hostNodes.delete(t)}onStylesAdded(t){this._hostNodes.forEach(e=>this._addStylesToHost(t,e))}ngOnDestroy(){this._styleNodes.forEach(t=>s().remove(t))}}const N={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},C=/%COMP%/g;function R(t,e,n){for(let a=0;a<e.length;a++){let r=e[a];Array.isArray(r)?R(t,r,n):(r=r.replace(C,t),n.push(r))}return n}function A(t){return e=>{!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}class k{constructor(t,e,n){this.eventManager=t,this.sharedStylesHost=e,this.appId=n,this.rendererByCompId=new Map,this.defaultRenderer=new E(t)}createRenderer(t,e){if(!t||!e)return this.defaultRenderer;switch(e.encapsulation){case r.ViewEncapsulation.Emulated:{let n=this.rendererByCompId.get(e.id);return n||(n=new P(this.eventManager,this.sharedStylesHost,e,this.appId),this.rendererByCompId.set(e.id,n)),n.applyToHost(t),n}case r.ViewEncapsulation.Native:case r.ViewEncapsulation.ShadowDom:return new M(this.eventManager,this.sharedStylesHost,t,e);default:if(!this.rendererByCompId.has(e.id)){const t=R(e.id,e.styles,[]);this.sharedStylesHost.addStyles(t),this.rendererByCompId.set(e.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}class E{constructor(t){this.eventManager=t,this.data=Object.create(null)}destroy(){}createElement(t,e){return e?document.createElementNS(N[e]||e,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,e){t.appendChild(e)}insertBefore(t,e,n){t&&t.insertBefore(e,n)}removeChild(t,e){t&&t.removeChild(e)}selectRootElement(t,e){let n="string"==typeof t?document.querySelector(t):t;if(!n)throw new Error(`The selector "${t}" did not match any elements`);return e||(n.textContent=""),n}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,e,n,a){if(a){e=a+":"+e;const r=N[a];r?t.setAttributeNS(r,e,n):t.setAttribute(e,n)}else t.setAttribute(e,n)}removeAttribute(t,e,n){if(n){const a=N[n];a?t.removeAttributeNS(a,e):t.removeAttribute(`${n}:${e}`)}else t.removeAttribute(e)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}setStyle(t,e,n,a){a&r.RendererStyleFlags2.DashCase?t.style.setProperty(e,n,a&r.RendererStyleFlags2.Important?"important":""):t.style[e]=n}removeStyle(t,e,n){n&r.RendererStyleFlags2.DashCase?t.style.removeProperty(e):t.style[e]=""}setProperty(t,e,n){D(e,"property"),t[e]=n}setValue(t,e){t.nodeValue=e}listen(t,e,n){return D(e,"listener"),"string"==typeof t?this.eventManager.addGlobalEventListener(t,e,A(n)):this.eventManager.addEventListener(t,e,A(n))}}const L=(()=>"@".charCodeAt(0))();function D(t,e){if(t.charCodeAt(0)===L)throw new Error(`Found the synthetic ${e} ${t}. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.`)}class P extends E{constructor(t,e,n,a){super(t),this.component=n;const r=R(a+"-"+n.id,n.styles,[]);e.addStyles(r),this.contentAttr="_ngcontent-%COMP%".replace(C,a+"-"+n.id),this.hostAttr=function(t){return"_nghost-%COMP%".replace(C,t)}(a+"-"+n.id)}applyToHost(t){super.setAttribute(t,this.hostAttr,"")}createElement(t,e){const n=super.createElement(t,e);return super.setAttribute(n,this.contentAttr,""),n}}class M extends E{constructor(t,e,n,a){super(t),this.sharedStylesHost=e,this.hostEl=n,this.component=a,this.shadowRoot=a.encapsulation===r.ViewEncapsulation.ShadowDom?n.attachShadow({mode:"open"}):n.createShadowRoot(),this.sharedStylesHost.addHost(this.shadowRoot);const i=R(a.id,a.styles,[]);for(let r=0;r<i.length;r++){const t=document.createElement("style");t.textContent=i[r],this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}appendChild(t,e){return super.appendChild(this.nodeOrShadowRoot(t),e)}insertBefore(t,e,n){return super.insertBefore(this.nodeOrShadowRoot(t),e,n)}removeChild(t,e){return super.removeChild(this.nodeOrShadowRoot(t),e)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}}const q=(()=>"undefined"!=typeof Zone&&Zone.__symbol__||function(t){return"__zone_symbol__"+t})(),j=q("addEventListener"),F=q("removeEventListener"),V={},G="__zone_symbol__propagationStopped",B=(()=>{const t="undefined"!=typeof Zone&&Zone[q("BLACK_LISTED_EVENTS")];if(t){const e={};return t.forEach(t=>{e[t]=t}),e}})(),z=function(t){return!!B&&B.hasOwnProperty(t)},Y=function(t){const e=V[t.type];if(!e)return;const n=this[e];if(!n)return;const a=[t];if(1===n.length){const t=n[0];return t.zone!==Zone.current?t.zone.run(t.handler,this,a):t.handler.apply(this,a)}{const e=n.slice();for(let n=0;n<e.length&&!0!==t[G];n++){const t=e[n];t.zone!==Zone.current?t.zone.run(t.handler,this,a):t.handler.apply(this,a)}}};class H extends O{constructor(t,e,n){super(t),this.ngZone=e,n&&Object(a.isPlatformServer)(n)||this.patchEvent()}patchEvent(){if("undefined"==typeof Event||!Event||!Event.prototype)return;if(Event.prototype.__zone_symbol__stopImmediatePropagation)return;const t=Event.prototype.__zone_symbol__stopImmediatePropagation=Event.prototype.stopImmediatePropagation;Event.prototype.stopImmediatePropagation=function(){this&&(this[G]=!0),t&&t.apply(this,arguments)}}supports(t){return!0}addEventListener(t,e,n){let a=n;if(!t[j]||r.NgZone.isInAngularZone()&&!z(e))t.addEventListener(e,a,!1);else{let n=V[e];n||(n=V[e]=q("ANGULAR"+e+"FALSE"));let r=t[n];const i=r&&r.length>0;r||(r=t[n]=[]);const s=z(e)?Zone.root:Zone.current;if(0===r.length)r.push({zone:s,handler:a});else{let t=!1;for(let e=0;e<r.length;e++)if(r[e].handler===a){t=!0;break}t||r.push({zone:s,handler:a})}i||t[j](e,Y,!1)}return()=>this.removeEventListener(t,e,a)}removeEventListener(t,e,n){let a=t[F];if(!a)return t.removeEventListener.apply(t,[e,n,!1]);let r=V[e],i=r&&t[r];if(!i)return t.removeEventListener.apply(t,[e,n,!1]);let s=!1;for(let u=0;u<i.length;u++)if(i[u].handler===n){s=!0,i.splice(u,1);break}s?0===i.length&&a.apply(t,[e,Y,!1]):t.removeEventListener.apply(t,[e,n,!1])}}const U={pan:!0,panstart:!0,panmove:!0,panend:!0,pancancel:!0,panleft:!0,panright:!0,panup:!0,pandown:!0,pinch:!0,pinchstart:!0,pinchmove:!0,pinchend:!0,pinchcancel:!0,pinchin:!0,pinchout:!0,press:!0,pressup:!0,rotate:!0,rotatestart:!0,rotatemove:!0,rotateend:!0,rotatecancel:!0,swipe:!0,swipeleft:!0,swiperight:!0,swipeup:!0,swipedown:!0,tap:!0},W=new r.InjectionToken("HammerGestureConfig"),K=new r.InjectionToken("HammerLoader");class ${constructor(){this.events=[],this.overrides={}}buildHammer(t){const e=new Hammer(t,this.options);e.get("pinch").set({enable:!0}),e.get("rotate").set({enable:!0});for(const n in this.overrides)e.get(n).set(this.overrides[n]);return e}}class J extends O{constructor(t,e,n,a){super(t),this._config=e,this.console=n,this.loader=a}supports(t){return!(!U.hasOwnProperty(t.toLowerCase())&&!this.isCustomEvent(t)||!window.Hammer&&!this.loader&&(this.console.warn(`The "${t}" event cannot be bound because Hammer.JS is not loaded and no custom loader has been specified.`),1))}addEventListener(t,e,n){const a=this.manager.getZone();if(e=e.toLowerCase(),!window.Hammer&&this.loader){let a=!1,r=()=>{a=!0};return this.loader().then(()=>{if(!window.Hammer)return this.console.warn("The custom HAMMER_LOADER completed, but Hammer.JS is not present."),void(r=()=>{});a||(r=this.addEventListener(t,e,n))}).catch(()=>{this.console.warn(`The "${e}" event cannot be bound because the custom Hammer.JS loader failed.`),r=()=>{}}),()=>{r()}}return a.runOutsideAngular(()=>{const r=this._config.buildHammer(t),i=function(t){a.runGuarded((function(){n(t)}))};return r.on(e,i),()=>{r.off(e,i),"function"==typeof r.destroy&&r.destroy()}})}isCustomEvent(t){return this._config.events.indexOf(t)>-1}}const Z=["alt","control","meta","shift"],Q={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};class X extends O{constructor(t){super(t)}supports(t){return null!=X.parseEventName(t)}addEventListener(t,e,n){const a=X.parseEventName(e),r=X.eventCallback(a.fullKey,n,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>s().onAndCancel(t,a.domEventName,r))}static parseEventName(t){const e=t.toLowerCase().split("."),n=e.shift();if(0===e.length||"keydown"!==n&&"keyup"!==n)return null;const a=X._normalizeKey(e.pop());let r="";if(Z.forEach(t=>{const n=e.indexOf(t);n>-1&&(e.splice(n,1),r+=t+".")}),r+=a,0!=e.length||0===a.length)return null;const i={};return i.domEventName=n,i.fullKey=r,i}static getEventFullKey(t){let e="",n=s().getEventKey(t);return n=n.toLowerCase()," "===n?n="space":"."===n&&(n="dot"),Z.forEach(a=>{a!=n&&(0,Q[a])(t)&&(e+=a+".")}),e+=n,e}static eventCallback(t,e,n){return a=>{X.getEventFullKey(a)===t&&n.runGuarded(()=>e(a))}}static _normalizeKey(t){switch(t){case"esc":return"escape";default:return t}}}class tt{}class et extends tt{constructor(t){super(),this._doc=t}sanitize(t,e){if(null==e)return null;switch(t){case r.SecurityContext.NONE:return e;case r.SecurityContext.HTML:return e instanceof at?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"HTML"),Object(r["ɵ_sanitizeHtml"])(this._doc,String(e)));case r.SecurityContext.STYLE:return e instanceof rt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"Style"),Object(r["ɵ_sanitizeStyle"])(e));case r.SecurityContext.SCRIPT:if(e instanceof it)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"Script"),new Error("unsafe value used in a script context");case r.SecurityContext.URL:return e instanceof ut||e instanceof st?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"URL"),Object(r["ɵ_sanitizeUrl"])(String(e)));case r.SecurityContext.RESOURCE_URL:if(e instanceof ut)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"ResourceURL"),new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)");default:throw new Error(`Unexpected SecurityContext ${t} (see http://g.co/ng/security#xss)`)}}checkNotSafeValue(t,e){if(t instanceof nt)throw new Error(`Required a safe ${e}, got a ${t.getTypeName()} (see http://g.co/ng/security#xss)`)}bypassSecurityTrustHtml(t){return new at(t)}bypassSecurityTrustStyle(t){return new rt(t)}bypassSecurityTrustScript(t){return new it(t)}bypassSecurityTrustUrl(t){return new st(t)}bypassSecurityTrustResourceUrl(t){return new ut(t)}}class nt{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return"SafeValue must use [property]=binding: "+this.changingThisBreaksApplicationSecurity+" (see http://g.co/ng/security#xss)"}}class at extends nt{getTypeName(){return"HTML"}}class rt extends nt{getTypeName(){return"Style"}}class it extends nt{getTypeName(){return"Script"}}class st extends nt{getTypeName(){return"URL"}}class ut extends nt{getTypeName(){return"ResourceURL"}}const ot=[{provide:r.PLATFORM_ID,useValue:a["ɵPLATFORM_BROWSER_ID"]},{provide:r.PLATFORM_INITIALIZER,useValue:function(){c.makeCurrent(),m.init()},multi:!0},{provide:a.PlatformLocation,useClass:class extends a.PlatformLocation{constructor(t){super(),this._doc=t,this._init()}_init(){this.location=s().getLocation(),this._history=s().getHistory()}getBaseHrefFromDOM(){return s().getBaseHref(this._doc)}onPopState(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)}onHashChange(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)}get href(){return this.location.href}get protocol(){return this.location.protocol}get hostname(){return this.location.hostname}get port(){return this.location.port}get pathname(){return this.location.pathname}get search(){return this.location.search}get hash(){return this.location.hash}set pathname(t){this.location.pathname=t}pushState(t,e,n){g()?this._history.pushState(t,e,n):this.location.hash=n}replaceState(t,e,n){g()?this._history.replaceState(t,e,n):this.location.hash=n}forward(){this._history.forward()}back(){this._history.back()}getState(){return this._history.state}},deps:[a.DOCUMENT]},{provide:a.DOCUMENT,useFactory:function(){return document},deps:[]}],lt=Object(r.createPlatformFactory)(r.platformCore,"browser",ot);class dt{constructor(t){if(t)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(t){return{ngModule:dt,providers:[{provide:r.APP_ID,useValue:t.appId},{provide:p,useExisting:r.APP_ID},b]}}}"undefined"!=typeof window&&window},cVYH:function(t,e,n){var a=n("Fib7"),r=n("hh1v"),i=n("0rvr");t.exports=function(t,e,n){var s,u;return i&&a(s=e.constructor)&&s!==n&&r(u=s.prototype)&&u!==n.prototype&&i(t,u),t}},cjaf:function(t,e){t.exports=function(t){return this.__data__.get(t)}},cp0P:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("HDdC"),r=n("DH7j"),i=n("lJxs"),s=n("XoHu"),u=n("Cfvw");function o(...t){if(1===t.length){const e=t[0];if(Object(r.a)(e))return l(e,null);if(Object(s.a)(e)&&Object.getPrototypeOf(e)===Object.prototype){const t=Object.keys(e);return l(t.map(t=>e[t]),t)}}if("function"==typeof t[t.length-1]){const e=t.pop();return l(t=1===t.length&&Object(r.a)(t[0])?t[0]:t,null).pipe(Object(i.a)(t=>e(...t)))}return l(t,null)}function l(t,e){return new a.a(n=>{const a=t.length;if(0===a)return void n.complete();const r=new Array(a);let i=0,s=0;for(let o=0;o<a;o++){const l=Object(u.a)(t[o]);let d=!1;n.add(l.subscribe({next:t=>{d||(d=!0,s++),r[o]=t},error:t=>n.error(t),complete:()=>{i++,i!==a&&d||(s===a&&n.next(e?e.reduce((t,e,n)=>(t[e]=r[n],t),{}):r),n.complete())}}))}})}},crnd:function(t,e){function n(t){return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}))}n.keys=function(){return[]},n.resolve=n,t.exports=n,n.id="crnd"},czMo:function(t,e,n){!function(t){"use strict";t.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},"d+Og":function(t,e,n){"use strict";var a=n("LvDl");let r=(()=>{class t{constructor(t){if(this.type=t,!this.isValidType())throw new Error("Wrong placement group category type");this.setTypeStates()}isValidType(){return t.VALID_CATEGORIES.includes(this.type)}setTypeStates(){switch(this.type){case t.CATEGORY_CLEAN:this.states=["active","clean"];break;case t.CATEGORY_WORKING:this.states=["activating","backfill_wait","backfilling","creating","deep","degraded","forced_backfill","forced_recovery","peering","peered","recovering","recovery_wait","repair","scrubbing","snaptrim","snaptrim_wait"];break;case t.CATEGORY_WARNING:this.states=["backfill_toofull","backfill_unfound","down","incomplete","inconsistent","recovery_toofull","recovery_unfound","remapped","snaptrim_error","stale","undersized"];break;default:this.states=[]}}}return t.CATEGORY_CLEAN="clean",t.CATEGORY_WORKING="working",t.CATEGORY_WARNING="warning",t.CATEGORY_UNKNOWN="unknown",t.VALID_CATEGORIES=[t.CATEGORY_CLEAN,t.CATEGORY_WORKING,t.CATEGORY_WARNING,t.CATEGORY_UNKNOWN],t})();var i=n("8Y7J"),s=n("kJI8");n.d(e,"a",(function(){return u}));let u=(()=>{class t{constructor(){this.categories=this.createCategories()}getAllTypes(){return r.VALID_CATEGORIES}getTypeByStates(t){const e=this.getPgStatesFromText(t);if(0===e.length)return r.CATEGORY_UNKNOWN;const n=a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(t=>a.intersection(this.categories[t].states,e).length));if(n[r.CATEGORY_WARNING]>0)return r.CATEGORY_WARNING;const i=n[r.CATEGORY_WORKING];return e.length>n[r.CATEGORY_CLEAN]+i?r.CATEGORY_UNKNOWN:i?r.CATEGORY_WORKING:r.CATEGORY_CLEAN}createCategories(){return a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(t=>new r(t)))}getPgStatesFromText(t){const e=t.replace(/[^a-z]+/g," ").trim().split(" ");return a.uniq(e)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:s.a}),t})()},dApe:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("2vnA"),i=n("MP8s"),s=n("X+05"),u=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},o=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},l=function(){function t(t){var e=this;this.treeModel=t,this.yBlocks=0,this.x=0,this.viewportHeight=null,this.viewport=null,t.virtualScroll=this,this._dispose=[Object(r.b)((function(){return e.fixScroll()}))]}return Object.defineProperty(t.prototype,"y",{get:function(){return 150*this.yBlocks},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalHeight",{get:function(){return this.treeModel.virtualRoot?this.treeModel.virtualRoot.height:0},enumerable:!0,configurable:!0}),t.prototype.fireEvent=function(t){this.treeModel.fireEvent(t)},t.prototype.init=function(){var t=this,e=this.recalcPositions.bind(this);e(),this._dispose=this._dispose.concat([Object(r.e)((function(){return t.treeModel.roots}),e),Object(r.e)((function(){return t.treeModel.expandedNodeIds}),e),Object(r.e)((function(){return t.treeModel.hiddenNodeIds}),e)]),this.treeModel.subscribe(s.a.loadNodeChildren,e)},t.prototype.isEnabled=function(){return this.treeModel.options.useVirtualScroll},t.prototype._setYBlocks=function(t){this.yBlocks=t},t.prototype.recalcPositions=function(){this.treeModel.virtualRoot.height=this._getPositionAfter(this.treeModel.getVisibleRoots(),0)},t.prototype._getPositionAfter=function(t,e){var n=this,a=e;return t.forEach((function(t){t.position=a,a=n._getPositionAfterNode(t,a)})),a},t.prototype._getPositionAfterNode=function(t,e){var n=t.getSelfHeight()+e;return t.children&&t.isExpanded&&(n=this._getPositionAfter(t.visibleChildren,n)),t.height=n-e,n},t.prototype.clear=function(){this._dispose.forEach((function(t){return t()}))},t.prototype.setViewport=function(t){Object.assign(this,{viewport:t,x:t.scrollLeft,yBlocks:Math.round(t.scrollTop/150),viewportHeight:t.getBoundingClientRect?t.getBoundingClientRect().height:0})},t.prototype.scrollIntoView=function(t,e,n){if(void 0===n&&(n=!0),t.options.scrollContainer){var a=t.options.scrollContainer,r=a.getBoundingClientRect().height,i=a.getBoundingClientRect().top,s=this.viewport.getBoundingClientRect().top+t.position-i;(e||s<a.scrollTop||s+t.getSelfHeight()>a.scrollTop+r)&&(a.scrollTop=n?s-r/2:s)}else(e||t.position<this.y||t.position+t.getSelfHeight()>this.y+this.viewportHeight)&&this.viewport&&(this.viewport.scrollTop=n?t.position-this.viewportHeight/2:t.position,this._setYBlocks(Math.floor(this.viewport.scrollTop/150)))},t.prototype.getViewportNodes=function(t){var e=this;if(!t)return[];var n=t.filter((function(t){return!t.isHidden}));if(!this.isEnabled())return n;if(!this.viewportHeight||!n.length)return[];var a=d(n,(function(t){return t.position+500>e.y||t.position+t.height>e.y})),r=d(n,(function(t){return t.position-500>e.y+e.viewportHeight}),a),i=[];if(r-a>(1e3+this.viewportHeight)/n[0].treeModel.options.options.nodeHeight)return[];for(var s=a;s<=r;s++)i.push(n[s]);return i},t.prototype.fixScroll=function(){var t=Math.max(0,this.totalHeight-this.viewportHeight);this.y<0&&this._setYBlocks(0),this.y>t&&this._setYBlocks(t/150)},u([r.d,o("design:type",Object)],t.prototype,"yBlocks",void 0),u([r.d,o("design:type",Object)],t.prototype,"x",void 0),u([r.d,o("design:type",Object)],t.prototype,"viewportHeight",void 0),u([r.c,o("design:type",Object),o("design:paramtypes",[])],t.prototype,"y",null),u([r.c,o("design:type",Object),o("design:paramtypes",[])],t.prototype,"totalHeight",null),u([r.a,o("design:type",Function),o("design:paramtypes",[Object]),o("design:returntype",void 0)],t.prototype,"_setYBlocks",null),u([r.a,o("design:type",Function),o("design:paramtypes",[]),o("design:returntype",void 0)],t.prototype,"recalcPositions",null),u([r.a,o("design:type",Function),o("design:paramtypes",[Object]),o("design:returntype",void 0)],t.prototype,"setViewport",null),u([r.a,o("design:type",Function),o("design:paramtypes",[Object,Object,Object]),o("design:returntype",void 0)],t.prototype,"scrollIntoView",null),u([Object(a.Injectable)(),o("design:paramtypes",[i.a])],t)}();function d(t,e,n){void 0===n&&(n=0);for(var a=n,r=t.length-1;a!==r;){var i=Math.floor((a+r)/2);e(t[i])?r=i:a=a===i?r:i}return a}},"dBg+":function(t,e){e.f=Object.getOwnPropertySymbols},dCge:function(t,e){t.exports=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}},dEH0:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return t+" ms"}}},dNwA:function(t,e,n){!function(t){"use strict";t.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("wd/R"))},dX5L:function(t,e,n){var a=n("KFwg")(n("Wa4q"),"DataView");t.exports=a},dgut:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("NEZu");n("Fgil");class r{constructor(t){this.dimlessBinaryPipe=t,this.style={height:"30px",width:"100px"},this.colors=[{backgroundColor:"rgba(40,140,234,0.2)",borderColor:"rgba(40,140,234,1)",pointBackgroundColor:"rgba(40,140,234,1)",pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:"rgba(40,140,234,0.8)"}],this.options={animation:{duration:0},responsive:!0,maintainAspectRatio:!1,legend:{display:!1},elements:{line:{borderWidth:1}},tooltips:{enabled:!1,mode:"index",intersect:!1,custom:void 0,callbacks:{label:t=>this.isBinary?this.dimlessBinaryPipe.transform(t.yLabel):t.yLabel,title:()=>""}},scales:{yAxes:[{display:!1}],xAxes:[{display:!1}]}},this.datasets=[{data:[]}],this.labels=[]}ngOnInit(){const t=new a.a(this.chartCanvasRef,this.chartTooltipRef,(t,e)=>e+t.caretX+"px",t=>t.caretY-t.height-t.yPadding-5+"px");t.customColors={backgroundColor:this.colors[0].pointBackgroundColor,borderColor:this.colors[0].pointBorderColor},this.options.tooltips.custom=e=>{t.customTooltips(e)}}ngOnChanges(t){this.datasets[0].data=t.data.currentValue,this.labels=[...Array(t.data.currentValue.length)]}}},"e+ae":function(t,e,n){!function(t){"use strict";var e="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function a(t){return t>1&&t<5}function r(t,e,n,r){var i=t+" ";switch(n){case"s":return e||r?"pár sekúnd":"pár sekundami";case"ss":return e||r?i+(a(t)?"sekundy":"sekúnd"):i+"sekundami";case"m":return e?"minúta":r?"minútu":"minútou";case"mm":return e||r?i+(a(t)?"minúty":"minút"):i+"minútami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?i+(a(t)?"hodiny":"hodín"):i+"hodinami";case"d":return e||r?"deň":"dňom";case"dd":return e||r?i+(a(t)?"dni":"dní"):i+"dňami";case"M":return e||r?"mesiac":"mesiacom";case"MM":return e||r?i+(a(t)?"mesiace":"mesiacov"):i+"mesiacmi";case"y":return e||r?"rok":"rokom";case"yy":return e||r?i+(a(t)?"roky":"rokov"):i+"rokmi"}}t.defineLocale("sk",{months:e,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},e0ae:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=function(t,e,n){this.name=t,this.version=e,this.os=n,this.type="browser"},r=function(t){this.version=t,this.type="node",this.name="node",this.os=process.platform},i=function(t,e,n,a){this.name=t,this.version=e,this.os=n,this.bot=a,this.type="bot-device"},s=function(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null},u=/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,o=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["vivaldi",/Vivaldi\/([0-9\.]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/Edg\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],l=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function d(t){return t?c(t):"undefined"!=typeof navigator?c(navigator.userAgent):"undefined"!=typeof process&&process.version?new r(process.version.slice(1)):null}function c(t){var e=function(t){return""!==t&&o.reduce((function(e,n){var a=n[0];if(e)return e;var r=n[1].exec(t);return!!r&&[a,r]}),!1)}(t);if(!e)return null;var n=e[0],r=e[1];if("searchbot"===n)return new s;var d=r[1]&&r[1].split(/[._]/).slice(0,3);d?d.length<3&&(d=function(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var a=Array(t),r=0;for(e=0;e<n;e++)for(var i=arguments[e],s=0,u=i.length;s<u;s++,r++)a[r]=i[s];return a}(d,function(t){for(var e=[],n=0;n<t;n++)e.push("0");return e}(3-d.length))):d=[];var c=d.join("."),f=function(t){for(var e=0,n=l.length;e<n;e++){var a=l[e],r=a[0];if(a[1].exec(t))return r}return null}(t),h=u.exec(t);return h&&h[1]?new i(n,c,f,h[1]):new a(n,d.join("."),f)}},eAIQ:function(t,e,n){var a=n("77kF"),r=n("MBcj");t.exports=function(t){return a(t,r(t))}},"eDl+":function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},eFrH:function(t,e,n){var a=n("zBJ4")("span").classList,r=a&&a.constructor&&a.constructor.prototype;t.exports=r===Object.prototype?void 0:r},eH2F:function(t,e){t.exports=function(t){return function(e,n,a){for(var r=-1,i=Object(e),s=a(e),u=s.length;u--;){var o=s[t?u:++r];if(!1===n(i[o],o,i))break}return e}}},eIep:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("l7GE"),r=n("51Dv"),i=n("ZUHj"),s=n("lJxs"),u=n("Cfvw");function o(t,e){return"function"==typeof e?n=>n.pipe(o((n,a)=>Object(u.a)(t(n,a)).pipe(Object(s.a)((t,r)=>e(n,t,a,r))))):e=>e.lift(new l(t))}class l{constructor(t){this.project=t}call(t,e){return e.subscribe(new d(t,this.project))}}class d extends a.a{constructor(t,e){super(t),this.project=e,this.index=0}_next(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this._innerSub(e,t,n)}_innerSub(t,e,n){const a=this.innerSubscription;a&&a.unsubscribe();const s=new r.a(this,e,n),u=this.destination;u.add(s),this.innerSubscription=Object(i.a)(this,t,void 0,void 0,s),this.innerSubscription!==s&&u.add(this.innerSubscription)}_complete(){const{innerSubscription:t}=this;t&&!t.closed||super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=null}notifyComplete(t){this.destination.remove(t),this.innerSubscription=null,this.isStopped&&super._complete()}notifyNext(t,e,n,a,r){this.destination.next(e)}}},eNG0:function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},eQba:function(t,e,n){var a=n("2zzJ");t.exports=function(t,e,n){var r=null==t?void 0:a(t,e);return void 0===r?n:r}},eTJe:function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("cp0P"),s=(n("SgmB"),n("ZDA6"),n("sne2"),n("mtw6")),u=n("QFaf"),o=n("1Ni5"),l=(n("9nlD"),function(t){return t.editing="editing",t}({}));class d{}n.d(e,"a",(function(){return c}));class c{constructor(t,e,n,a,r,i,s){this.route=t,this.router=e,this.roleService=n,this.scopeService=a,this.notificationService=r,this.i18n=i,this.actionLabels=s,this.scopes=[],this.scopes_permissions=[],this.roleFormMode=l,this.resource=this.i18n("role"),this.createForm(),this.listenToChanges()}createForm(){this.roleForm=new u.a({name:new a.i("",{validators:[a.B.required],asyncValidators:[o.a.unique(this.roleService.exists,this.roleService)]}),description:new a.i(""),scopes_permissions:new a.i({})})}ngOnInit(){this.columns=[{prop:"scope",name:this.i18n("All"),flexGrow:2,cellTemplate:this.cellScopeCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"read",name:this.i18n("Read"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"create",name:this.i18n("Create"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"update",name:this.i18n("Update"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"delete",name:this.i18n("Delete"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl}],this.router.url.startsWith("/user-management/roles/edit")?(this.mode=this.roleFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.mode===this.roleFormMode.editing?this.initEdit():this.initCreate()}initCreate(){this.scopeService.list().subscribe(t=>{this.scopes=t,this.roleForm.get("scopes_permissions").setValue({})})}initEdit(){this.roleForm.get("name").disable(),this.route.params.subscribe(t=>{const e=[];e.push(this.scopeService.list()),e.push(this.roleService.get(t.name)),Object(i.a)(e).subscribe(t=>{this.scopes=t[0],["name","description","scopes_permissions"].forEach(e=>this.roleForm.get(e).setValue(t[1][e]))})})}listenToChanges(){this.roleForm.get("scopes_permissions").valueChanges.subscribe(t=>{const e=[];r.each(this.scopes,n=>{const a={read:!1,create:!1,update:!1,delete:!1};a.scope=n,n in t&&r.each(t[n],t=>{a[t]=!0}),e.push(a)}),this.scopes_permissions=e})}isRowChecked(t){const e=r.find(this.scopes_permissions,e=>e.scope===t);return!r.isUndefined(e)&&e.read&&e.create&&e.update&&e.delete}isHeaderChecked(t){let e=[t];return"scope"===t&&(e=["read","create","update","delete"]),e.every(t=>this.scopes_permissions.every(e=>e[t]))}onClickCellCheckbox(t,e,n=null){const a=r.cloneDeep(this.roleForm.getValue("scopes_permissions"));let i=[e];"scope"===e&&(i=["read","create","update","delete"]),t in a||(a[t]=[]),n&&n.target.checked||!r.isEqual(i.sort(),r.intersection(a[t],i).sort())?a[t]=r.union(a[t],i):(a[t]=r.difference(a[t],i),r.isEmpty(a[t])&&r.unset(a,t)),this.roleForm.get("scopes_permissions").setValue(a)}onClickHeaderCheckbox(t,e){const n=r.cloneDeep(this.roleForm.getValue("scopes_permissions"));let a=[t];"scope"===t&&(a=["read","create","update","delete"]),r.each(a,t=>{r.each(this.scopes,a=>{e.target.checked?n[a]=r.union(n[a],[t]):(n[a]=r.difference(n[a],[t]),r.isEmpty(n[a])&&r.unset(n,a))})}),this.roleForm.get("scopes_permissions").setValue(n)}getRequest(){const t=new d;return["name","description","scopes_permissions"].forEach(e=>t[e]=this.roleForm.get(e).value),t}createAction(){const t=this.getRequest();this.roleService.create(t).subscribe(()=>{this.notificationService.show(s.a.success,this.i18n("Created role '{{role_name}}'",{role_name:t.name})),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}editAction(){const t=this.getRequest();this.roleService.update(t).subscribe(()=>{this.notificationService.show(s.a.success,this.i18n("Updated role '{{role_name}}'",{role_name:t.name})),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}submit(){this.mode===this.roleFormMode.editing?this.editAction():this.createAction()}}},efK2:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e,n){return a.isString(t)?(n=a.defaultTo(n,""),a.truncate(t,{length:e,omission:n})):t}}},"ej+x":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("lOp/"),r=n("8Y7J"),i=n("IheW");let s=(()=>{class t{constructor(t,e){this.http=t,this.timerService=e,this.API_URL="api/feature_toggles",this.REFRESH_INTERVAL=3e4,this.featureToggleMap$=this.timerService.get(()=>this.http.get(this.API_URL),this.REFRESH_INTERVAL)}get(){return this.featureToggleMap$}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.c),r["ɵɵinject"](a.a))},token:t,providedIn:"root"}),t})()},emnf:function(t,e,n){var a=n("YGUN"),r=n("w/8D"),i=n("aHcz");t.exports=r?function(t,e){return r(t,"toString",{configurable:!0,enumerable:!1,value:a(e),writable:!0})}:i},ewvW:function(t,e,n){var a=n("2oRo"),r=n("HYAF"),i=a.Object;t.exports=function(t){return i(r(t))}},ezUo:function(t,e,n){var a=n("xT5m"),r=n("LxgN"),i=n("K1DE");t.exports=function(t,e,n,s,u,o){var l=1&n,d=t.length,c=e.length;if(d!=c&&!(l&&c>d))return!1;var f=o.get(t),h=o.get(e);if(f&&h)return f==e&&h==t;var g=-1,p=!0,b=2&n?new a:void 0;for(o.set(t,e),o.set(e,t);++g<d;){var m=t[g],y=e[g];if(s)var v=l?s(y,m,g,e,t,o):s(m,y,g,t,e,o);if(void 0!==v){if(v)continue;p=!1;break}if(b){if(!r(e,(function(t,e){if(!i(b,e)&&(m===t||u(m,t,n,s,o)))return b.push(e)}))){p=!1;break}}else if(m!==y&&!u(m,y,n,s,o)){p=!1;break}}return o.delete(t),o.delete(e),p}},"f/UV":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},f5p1:function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=n("iSVu"),s=a.WeakMap;t.exports=r(s)&&/native code/.test(i(s))},f95s:function(t,e,n){"use strict";n.d(e,"a",(function(){return p}));var a=n("2vnA"),r=n("X+05"),i=n("8SuI"),s=n.n(i),u=n("gBXJ"),o=n.n(u),l=n("aTV8"),d=n.n(l),c=n("7VGY"),f=n.n(c),h=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},g=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},p=function(){function t(t,e,n,a){var r=this;this.data=t,this.parent=e,this.treeModel=n,this.position=0,this.allowDrop=function(t,e){return r.options.allowDrop(t,{parent:r,index:0},e)},this.allowDragoverStyling=function(){return r.options.allowDragoverStyling},null==this.id&&(this.id=Math.floor(1e13*Math.random())),this.index=a,this.getField("children")&&this._initChildren(),this.autoLoadChildren()}return Object.defineProperty(t.prototype,"isHidden",{get:function(){return this.treeModel.isHidden(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isExpanded",{get:function(){return this.treeModel.isExpanded(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isActive",{get:function(){return this.treeModel.isActive(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFocused",{get:function(){return this.treeModel.isNodeFocused(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelected",{get:function(){return this.isSelectable()?this.treeModel.isSelected(this):d()(this.children,(function(t){return t.isSelected}))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAllSelected",{get:function(){return this.isSelectable()?this.treeModel.isSelected(this):f()(this.children,(function(t){return t.isAllSelected}))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isPartiallySelected",{get:function(){return this.isSelected&&!this.isAllSelected},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"level",{get:function(){return this.parent?this.parent.level+1:0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path.concat([this.id]):[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"elementRef",{get:function(){throw"Element Ref is no longer supported since introducing virtual scroll\n\n      You may use a template to obtain a reference to the element"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"originalNode",{get:function(){return this._originalNode},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasChildren",{get:function(){return!!(this.getField("hasChildren")||this.children&&this.children.length>0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCollapsed",{get:function(){return!this.isExpanded},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLeaf",{get:function(){return!this.hasChildren},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return this.parent.data.virtual},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"realParent",{get:function(){return this.isRoot?null:this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{get:function(){return this.treeModel.options},enumerable:!0,configurable:!0}),t.prototype.fireEvent=function(t){this.treeModel.fireEvent(t)},Object.defineProperty(t.prototype,"displayField",{get:function(){return this.getField("display")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"id",{get:function(){return this.getField("id")},set:function(t){this.setField("id",t)},enumerable:!0,configurable:!0}),t.prototype.getField=function(t){return this.data[this.options[t+"Field"]]},t.prototype.setField=function(t,e){this.data[this.options[t+"Field"]]=e},t.prototype._findAdjacentSibling=function(t,e){void 0===e&&(e=!1);var n=this._getParentsChildren(e),a=n.indexOf(this);return n.length>a+t?n[a+t]:null},t.prototype.findNextSibling=function(t){return void 0===t&&(t=!1),this._findAdjacentSibling(1,t)},t.prototype.findPreviousSibling=function(t){return void 0===t&&(t=!1),this._findAdjacentSibling(-1,t)},t.prototype.getVisibleChildren=function(){return this.visibleChildren},Object.defineProperty(t.prototype,"visibleChildren",{get:function(){return(this.children||[]).filter((function(t){return!t.isHidden}))},enumerable:!0,configurable:!0}),t.prototype.getFirstChild=function(t){void 0===t&&(t=!1);var e=t?this.visibleChildren:this.children;return s()(e||[])},t.prototype.getLastChild=function(t){void 0===t&&(t=!1);var e=t?this.visibleChildren:this.children;return o()(e||[])},t.prototype.findNextNode=function(t,e){return void 0===t&&(t=!0),void 0===e&&(e=!1),t&&this.isExpanded&&this.getFirstChild(e)||this.findNextSibling(e)||this.parent&&this.parent.findNextNode(!1,e)},t.prototype.findPreviousNode=function(t){void 0===t&&(t=!1);var e=this.findPreviousSibling(t);return e?e._getLastOpenDescendant(t):this.realParent},t.prototype._getLastOpenDescendant=function(t){void 0===t&&(t=!1);var e=this.getLastChild(t);return this.isCollapsed||!e?this:e._getLastOpenDescendant(t)},t.prototype._getParentsChildren=function(t){return void 0===t&&(t=!1),this.parent&&(t?this.parent.getVisibleChildren():this.parent.children)||[]},t.prototype.getIndexInParent=function(t){return void 0===t&&(t=!1),this._getParentsChildren(t).indexOf(this)},t.prototype.isDescendantOf=function(t){return this===t||this.parent&&this.parent.isDescendantOf(t)},t.prototype.getNodePadding=function(){return this.options.levelPadding*(this.level-1)+"px"},t.prototype.getClass=function(){return[this.options.nodeClass(this),"tree-node-level-"+this.level].join(" ")},t.prototype.onDrop=function(t){this.mouseAction("drop",t.event,{from:t.element,to:{parent:this,index:0,dropOnNode:!0}})},t.prototype.allowDrag=function(){return this.options.allowDrag(this)},t.prototype.loadNodeChildren=function(){var t=this;return this.options.getChildren?Promise.resolve(this.options.getChildren(this)).then((function(e){e&&(t.setField("children",e),t._initChildren(),t.options.useTriState&&t.treeModel.isSelected(t)&&t.setIsSelected(!0),t.children.forEach((function(t){t.getField("isExpanded")&&t.hasChildren&&t.expand()})))})).then((function(){t.fireEvent({eventName:r.a.loadNodeChildren,node:t})})):Promise.resolve()},t.prototype.expand=function(){return this.isExpanded||this.toggleExpanded(),this},t.prototype.collapse=function(){return this.isExpanded&&this.toggleExpanded(),this},t.prototype.doForAll=function(t){var e=this;Promise.resolve(t(this)).then((function(){e.children&&e.children.forEach((function(e){return e.doForAll(t)}))}))},t.prototype.expandAll=function(){this.doForAll((function(t){return t.expand()}))},t.prototype.collapseAll=function(){this.doForAll((function(t){return t.collapse()}))},t.prototype.ensureVisible=function(){return this.realParent&&(this.realParent.expand(),this.realParent.ensureVisible()),this},t.prototype.toggleExpanded=function(){return this.setIsExpanded(!this.isExpanded),this},t.prototype.setIsExpanded=function(t){return this.hasChildren&&this.treeModel.setExpandedNode(this,t),this},t.prototype.autoLoadChildren=function(){var t=this;this.handler=Object(a.e)((function(){return t.isExpanded}),(function(e){!t.children&&t.hasChildren&&e&&t.loadNodeChildren()}),{fireImmediately:!0})},t.prototype.dispose=function(){this.children&&this.children.forEach((function(t){return t.dispose()})),this.handler&&this.handler(),this.parent=null,this.children=null},t.prototype.setIsActive=function(t,e){return void 0===e&&(e=!1),this.treeModel.setActiveNode(this,t,e),t&&this.focus(this.options.scrollOnActivate),this},t.prototype.isSelectable=function(){return this.isLeaf||!this.children||!this.options.useTriState},t.prototype.setIsSelected=function(t){return this.isSelectable()?this.treeModel.setSelectedNode(this,t):this.visibleChildren.forEach((function(e){return e.setIsSelected(t)})),this},t.prototype.toggleSelected=function(){return this.setIsSelected(!this.isSelected),this},t.prototype.toggleActivated=function(t){return void 0===t&&(t=!1),this.setIsActive(!this.isActive,t),this},t.prototype.setActiveAndVisible=function(t){return void 0===t&&(t=!1),this.setIsActive(!0,t).ensureVisible(),setTimeout(this.scrollIntoView.bind(this)),this},t.prototype.scrollIntoView=function(t){void 0===t&&(t=!1),this.treeModel.virtualScroll.scrollIntoView(this,t)},t.prototype.focus=function(t){void 0===t&&(t=!0);var e=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(this),t&&this.scrollIntoView(),e&&this.fireEvent({eventName:r.a.blur,node:e}),this.fireEvent({eventName:r.a.focus,node:this}),this},t.prototype.blur=function(){var t=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(null),t&&this.fireEvent({eventName:r.a.blur,node:this}),this},t.prototype.setIsHidden=function(t){this.treeModel.setIsHidden(this,t)},t.prototype.hide=function(){this.setIsHidden(!0)},t.prototype.show=function(){this.setIsHidden(!1)},t.prototype.mouseAction=function(t,e,n){void 0===n&&(n=null),this.treeModel.setFocus(!0);var a=this.options.actionMapping.mouse[t];a&&a(this.treeModel,this,e,n)},t.prototype.getSelfHeight=function(){return this.options.nodeHeight(this)},t.prototype._initChildren=function(){var e=this;this.children=this.getField("children").map((function(n,a){return new t(n,e,e.treeModel,a)}))},h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isHidden",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isExpanded",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isActive",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isFocused",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isSelected",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isAllSelected",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isPartiallySelected",null),h([a.d,g("design:type",Array)],t.prototype,"children",void 0),h([a.d,g("design:type",Number)],t.prototype,"index",void 0),h([a.d,g("design:type",Object)],t.prototype,"position",void 0),h([a.d,g("design:type",Number)],t.prototype,"height",void 0),h([a.c,g("design:type",Number),g("design:paramtypes",[])],t.prototype,"level",null),h([a.c,g("design:type",Array),g("design:paramtypes",[])],t.prototype,"path",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"visibleChildren",null),h([a.a,g("design:type",Function),g("design:paramtypes",[Object]),g("design:returntype",void 0)],t.prototype,"setIsSelected",null),h([a.a,g("design:type",Function),g("design:paramtypes",[]),g("design:returntype",void 0)],t.prototype,"_initChildren",null),t}()},fHMY:function(t,e,n){var a,r=n("glrk"),i=n("N+g0"),s=n("eDl+"),u=n("0BK2"),o=n("G+Rx"),l=n("zBJ4"),d=n("93I0")("IE_PROTO"),c=function(){},f=function(t){return"<script>"+t+"<\/script>"},h=function(t){t.write(f("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){try{a=new ActiveXObject("htmlfile")}catch(r){}var t,e;g="undefined"!=typeof document?document.domain&&a?h(a):((e=l("iframe")).style.display="none",o.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(f("document.F=Object")),t.close(),t.F):h(a);for(var n=s.length;n--;)delete g.prototype[s[n]];return g()};u[d]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(c.prototype=r(t),n=new c,c.prototype=null,n[d]=t):n=g(),void 0===e?n:i(n,e)}},fIUv:function(t,e,n){var a=n("Wa4q");t.exports=function(){return a.Date.now()}},fdAy:function(t,e,n){"use strict";var a=n("I+eb"),r=n("xluM"),i=n("xDBR"),s=n("Xnc8"),u=n("Fib7"),o=n("ntOU"),l=n("4WOD"),d=n("0rvr"),c=n("1E5z"),f=n("kRJp"),h=n("busE"),g=n("tiKp"),p=n("P4y1"),b=n("rpNk"),m=s.PROPER,y=s.CONFIGURABLE,v=b.IteratorPrototype,x=b.BUGGY_SAFARI_ITERATORS,_=g("iterator"),T=function(){return this};t.exports=function(t,e,n,s,g,b,w){o(n,e,s);var O,S,I,N=function(t){if(t===g&&E)return E;if(!x&&t in A)return A[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},C=e+" Iterator",R=!1,A=t.prototype,k=A[_]||A["@@iterator"]||g&&A[g],E=!x&&k||N(g),L="Array"==e&&A.entries||k;if(L&&(O=l(L.call(new t)))!==Object.prototype&&O.next&&(i||l(O)===v||(d?d(O,v):u(O[_])||h(O,_,T)),c(O,C,!0,!0),i&&(p[C]=T)),m&&"values"==g&&k&&"values"!==k.name&&(!i&&y?f(A,"name","values"):(R=!0,E=function(){return r(k,this)})),g)if(S={values:N("values"),keys:b?E:N("keys"),entries:N("entries")},w)for(I in S)(x||R||!(I in A))&&h(A,I,S[I]);else a({target:e,proto:!0,forced:x||R},S);return i&&!w||A[_]===E||h(A,_,E,{name:g}),p[e]=E,S}},fqHM:function(t,e,n){var a=n("4a5m"),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,s=a((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(r,(function(t,n,a,r){e.push(a?r.replace(i,"$1"):n||t)})),e}));t.exports=s},fxL3:function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n("8Y7J"),r=n("MP8s"),i=n("gk6K"),s=n("mfoh"),u=n("HIU9"),o=n("YCpU"),l=n.n(o),d=n("+Z6c"),c=n.n(d),f=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},h=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},g=function(){function t(t,e){var n=this;this.treeModel=t,this.treeDraggedElement=e,t.eventNames.forEach((function(t){return n[t]=new a.EventEmitter})),t.subscribeToState((function(t){return n.stateChange.emit(t)}))}return Object.defineProperty(t.prototype,"nodes",{set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"focused",{set:function(t){this.treeModel.setFocus(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"state",{set:function(t){this.treeModel.setState(t)},enumerable:!0,configurable:!0}),t.prototype.onKeydown=function(t){if(this.treeModel.isFocused&&!l()(["input","textarea"],document.activeElement.tagName.toLowerCase())){var e=this.treeModel.getFocusedNode();this.treeModel.performKeyAction(e,t)}},t.prototype.onMousedown=function(t){(function t(e,n){return!e||e.localName!==n&&t(e.parentElement,n)})(t.target,"tree-root")&&this.treeModel.setFocus(!1)},t.prototype.ngOnChanges=function(t){(t.options||t.nodes)&&this.treeModel.setData({options:t.options&&t.options.currentValue,nodes:t.nodes&&t.nodes.currentValue,events:c()(this,this.treeModel.eventNames)})},t.prototype.sizeChanged=function(){this.viewportComponent.setViewport()},f([Object(a.ContentChild)("loadingTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"loadingTemplate",void 0),f([Object(a.ContentChild)("treeNodeTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeTemplate",void 0),f([Object(a.ContentChild)("treeNodeWrapperTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeWrapperTemplate",void 0),f([Object(a.ContentChild)("treeNodeFullTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeFullTemplate",void 0),f([Object(a.ViewChild)("viewport",{static:!1}),h("design:type",u.a)],t.prototype,"viewportComponent",void 0),f([Object(a.Input)(),h("design:type",Array),h("design:paramtypes",[Array])],t.prototype,"nodes",null),f([Object(a.Input)(),h("design:type",s.b),h("design:paramtypes",[s.b])],t.prototype,"options",null),f([Object(a.Input)(),h("design:type",Boolean),h("design:paramtypes",[Boolean])],t.prototype,"focused",null),f([Object(a.Input)(),h("design:type",Object),h("design:paramtypes",[Object])],t.prototype,"state",null),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"toggleExpanded",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"activate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"deactivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"nodeActivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"nodeDeactivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"select",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"deselect",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"focus",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"blur",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"updateData",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"initialized",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"moveNode",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"copyNode",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"loadNodeChildren",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"changeFilter",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"event",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"stateChange",void 0),f([Object(a.HostListener)("body: keydown",["$event"]),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],t.prototype,"onKeydown",null),f([Object(a.HostListener)("body: mousedown",["$event"]),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],t.prototype,"onMousedown",null),f([Object(a.Component)({selector:"Tree, tree-root",providers:[r.a],styles:[],template:'\n      <tree-viewport #viewport>\n          <div\n                  class="angular-tree-component"\n                  [class.node-dragging]="treeDraggedElement.isDragging()"\n                  [class.angular-tree-component-rtl]="treeModel.options.rtl">\n              <tree-node-collection\n                      *ngIf="treeModel.roots"\n                      [nodes]="treeModel.roots"\n                      [treeModel]="treeModel"\n                      [templates]="{\n            loadingTemplate: loadingTemplate,\n            treeNodeTemplate: treeNodeTemplate,\n            treeNodeWrapperTemplate: treeNodeWrapperTemplate,\n            treeNodeFullTemplate: treeNodeFullTemplate\n          }">\n              </tree-node-collection>\n              <tree-node-drop-slot\n                      class="empty-tree-drop-slot"\n                      *ngIf="treeModel.isEmptyTree()"\n                      [dropIndex]="0"\n                      [node]="treeModel.virtualRoot">\n              </tree-node-drop-slot>\n          </div>\n      </tree-viewport>\n  '}),h("design:paramtypes",[r.a,i.a])],t)}()},fzPg:function(t,e,n){!function(t){"use strict";t.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("wd/R"))},"g6v/":function(t,e,n){var a=n("0Dky");t.exports=!a((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},gBXJ:function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},gHid:function(t,e,n){var a=n("aT2Y"),r=n("Gf4A"),i=n("SQuY");t.exports=function(t,e){var n=this.__data__;if(n instanceof a){var s=n.__data__;if(!r||s.length<199)return s.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(s)}return n.set(t,e),this.size=n.size,this}},gRHU:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("2fFW"),r=n("NJ4a");const i={closed:!0,next(t){},error(t){if(a.a.useDeprecatedSynchronousErrorHandling)throw t;Object(r.a)(t)},complete(){}}},gVVK:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===t?e?"sekundo":"sekundi":2===t?e||a?"sekundi":"sekundah":t<5?e||a?"sekunde":"sekundah":"sekund");case"m":return e?"ena minuta":"eno minuto";case"mm":return r+(1===t?e?"minuta":"minuto":2===t?e||a?"minuti":"minutama":t<5?e||a?"minute":"minutami":e||a?"minut":"minutami");case"h":return e?"ena ura":"eno uro";case"hh":return r+(1===t?e?"ura":"uro":2===t?e||a?"uri":"urama":t<5?e||a?"ure":"urami":e||a?"ur":"urami");case"d":return e||a?"en dan":"enim dnem";case"dd":return r+(1===t?e||a?"dan":"dnem":2===t?e||a?"dni":"dnevoma":e||a?"dni":"dnevi");case"M":return e||a?"en mesec":"enim mesecem";case"MM":return r+(1===t?e||a?"mesec":"mesecem":2===t?e||a?"meseca":"mesecema":t<5?e||a?"mesece":"meseci":e||a?"mesecev":"meseci");case"y":return e||a?"eno leto":"enim letom";case"yy":return r+(1===t?e||a?"leto":"letom":2===t?e||a?"leti":"letoma":t<5?e||a?"leta":"leti":e||a?"let":"leti")}}t.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},gekB:function(t,e,n){!function(t){"use strict";var e="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",e[7],e[8],e[9]];function a(t,a,r,i){var s="";switch(r){case"s":return i?"muutaman sekunnin":"muutama sekunti";case"ss":return i?"sekunnin":"sekuntia";case"m":return i?"minuutin":"minuutti";case"mm":s=i?"minuutin":"minuuttia";break;case"h":return i?"tunnin":"tunti";case"hh":s=i?"tunnin":"tuntia";break;case"d":return i?"päivän":"päivä";case"dd":s=i?"päivän":"päivää";break;case"M":return i?"kuukauden":"kuukausi";case"MM":s=i?"kuukauden":"kuukautta";break;case"y":return i?"vuoden":"vuosi";case"yy":s=i?"vuoden":"vuotta"}return function(t,a){return t<10?a?n[t]:e[t]:t}(t,i)+" "+s}t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},gjCT:function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};t.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("wd/R"))},gk6K:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J"),r=function(){function t(){this._draggedElement=null}return t.prototype.set=function(t){this._draggedElement=t},t.prototype.get=function(){return this._draggedElement},t.prototype.isDragging=function(){return!!this.get()},function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.Injectable)()],t)}()},glrk:function(t,e,n){var a=n("2oRo"),r=n("hh1v"),i=a.String,s=a.TypeError;t.exports=function(t){if(r(t))return t;throw s(i(t)+" is not an object")}},gp3X:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse");n("sb0X"),n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return u}));var i=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](4,2)],(function(t,e){var n=e.component,a=t(e,4,0,n.icons.spinner,n.icons.spin);t(e,3,0,a)}),null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"button",[["class","btn btn-secondary tc_submitButton"]],[[8,"type",0],[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.submit(n)&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵncd"](null,0),(t()(),a["ɵand"](16777216,null,null,1,null,s)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"btn btn-secondary tc_submitButton",n.btnClass),t(e,5,0,n.loading)}),(function(t,e){var n=e.component;t(e,0,0,n.type,n.loading||n.disabled)}))}},h7vy:function(t,e,n){var a=n("LaC8"),r=n("x3F9");t.exports=function(t){return"number"==typeof t||r(t)&&"[object Number]"==a(t)}},hBjN:function(t,e,n){"use strict";var a=n("oEtG"),r=n("m/L8"),i=n("XGwC");t.exports=function(t,e,n){var s=a(e);s in t?r.f(t,s,i(0,n)):t[s]=n}},"hKI/":function(t,e){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,i=/^0o[0-7]+$/i,s=parseInt,u="object"==typeof global&&global&&global.Object===Object&&global,o="object"==typeof self&&self&&self.Object===Object&&self,l=u||o||Function("return this")(),d=Object.prototype.toString,c=Math.max,f=Math.min,h=function(){return l.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function p(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==d.call(t)}(t))return NaN;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(n,"");var u=r.test(t);return u||i.test(t)?s(t.slice(2),u?2:8):a.test(t)?NaN:+t}t.exports=function(t,e,n){var a=!0,r=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return g(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),function(t,e,n){var a,r,i,s,u,o,l=0,d=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=a,i=r;return a=r=void 0,l=e,s=t.apply(i,n)}function v(t){return l=t,u=setTimeout(_,e),d?y(t):s}function x(t){var n=t-o;return void 0===o||n>=e||n<0||b&&t-l>=i}function _(){var t=h();if(x(t))return T(t);u=setTimeout(_,function(t){var n=e-(t-o);return b?f(n,i-(t-l)):n}(t))}function T(t){return u=void 0,m&&a?y(t):(a=r=void 0,s)}function w(){var t=h(),n=x(t);if(a=arguments,r=this,o=t,n){if(void 0===u)return v(o);if(b)return u=setTimeout(_,e),y(o)}return void 0===u&&(u=setTimeout(_,e)),s}return e=p(e)||0,g(n)&&(d=!!n.leading,i=(b="maxWait"in n)?c(p(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),w.cancel=function(){void 0!==u&&clearTimeout(u),l=0,a=o=r=u=void 0},w.flush=function(){return void 0===u?s:T(h())},w}(t,e,{leading:a,maxWait:e,trailing:r})}},hKrs:function(t,e,n){!function(t){"use strict";t.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})}(n("wd/R"))},hTsC:function(t,e,n){var a=n("CNUl"),r=n("NSEa"),i=n("R2cF"),s=n("THq6"),u=n("lEOU");t.exports=function(t,e,n){var o=t.constructor;switch(e){case"[object ArrayBuffer]":return a(t);case"[object Boolean]":case"[object Date]":return new o(+t);case"[object DataView]":return r(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return u(t,n);case"[object Map]":return new o;case"[object Number]":case"[object String]":return new o(t);case"[object RegExp]":return i(t);case"[object Set]":return new o;case"[object Symbol]":return s(t)}}},hfeG:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("s7LF"),s=n("ANnk"),u=n("f/UV"),o=n("aexS"),l=n("+gVj"),d=n("EmSq"),c=n("Fgil"),f=n("aXbf"),h=n("pYKc"),g=n("ppaS"),p=n("GiVz"),b=n("mXUL"),m=n("EEJc"),y=n("ajRT"),v=n("gp3X"),x=n("sb0X"),_=n("KVJa"),T=n("Z21x"),w=n("sne2"),O=n("Rf2I"),S=n("LqlI"),I=n("2EZI");n.d(e,"a",(function(){return G}));var N=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.titleText)}))}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.message)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{required:0}),(t()(),a["ɵted"](4,null,[" "," "]))],(function(t,e){var n=t(e,3,0,!0===(null==e.parent.context.$implicit?null:e.parent.context.$implicit.required));t(e,2,0,"cd-col-form-label",n)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name),t(e,4,0,e.parent.context.$implicit.label)}))}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["ɵnov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,1)._compositionEnd(n.target.value)&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.e,[a.Renderer2,a.ElementRef,[2,i.b]],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.e]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,4210688,null,0,s.a,[[2,u.a],o.a,a.ElementRef],null,null),a["ɵdid"](7,16384,null,0,l.h,[[3,i.d],l.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,7,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,1,[e.parent.context.$implicit.type,e.parent.context.$implicit.name,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,7).validClass,a["ɵnov"](e,7).invalidClass])}))}function E(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"input",[["cdDimlessBinary",""],["class","form-control"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["ɵnov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,1)._compositionEnd(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,6).onBlur(n.target.value)&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.e,[a.Renderer2,a.ElementRef,[2,i.b]],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.e]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,81920,null,0,d.a,[a.ElementRef,i.q,c.a,f.a],null,null),a["ɵdid"](7,4210688,null,0,s.a,[[2,u.a],o.a,a.ElementRef],null,null),a["ɵdid"](8,16384,null,0,l.h,[[3,i.d],l.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,6,0),t(e,8,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,1,[e.parent.context.$implicit.name,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,8).validClass,a["ɵnov"](e,8).invalidClass])}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,i.v,[a.ElementRef,a.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),a["ɵdid"](2,147456,null,0,i.F,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),(function(t,e){t(e,3,0,null==e.parent.parent.context.$implicit||null==e.parent.parent.context.$implicit.typeConfig?null:e.parent.parent.context.$implicit.typeConfig.placeholder)}))}function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,i.v,[a.ElementRef,a.Renderer2,[2,i.A]],{value:[0,"value"]},null),a["ɵdid"](2,147456,null,0,i.F,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.text)}))}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,"select",[["class","form-control custom-select"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t,1).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.A,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.A]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,4210688,null,0,s.a,[[2,u.a],o.a,a.ElementRef],null,null),a["ɵdid"](7,16384,null,0,l.h,[[3,i.d],l.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,L)),a["ɵdid"](9,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,D)),a["ɵdid"](11,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,7,0,e.parent.context.$implicit.name),t(e,9,0,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.placeholder),t(e,11,0,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.options)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,7).validClass,a["ɵnov"](e,7).invalidClass)}))}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-select-badges",[],[[8,"id",0]],null,null,h.b,h.a)),a["ɵdid"](1,49152,null,0,g.a,[p.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"],customBadges:[3,"customBadges"]},null)],(function(t,e){t(e,1,0,e.parent.context.$implicit.value,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.options,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.messages,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.customBadges)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name)}))}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.getError(e.parent.context.$implicit))}))}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,21,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,20,"div",[],[[8,"className",0],[2,"has-error",null],[2,"has-success",null]],null,null,b.b,b.a)),a["ɵdid"](2,1163264,null,2,l.c,[a.ElementRef,l.g],null,null),a["ɵqud"](603979776,1,{FormControlNames:1}),a["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),a["ɵand"](16777216,null,0,1,null,A)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](7,0,null,0,14,"div",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](9,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpod"](10,{"cd-col-form-input":0,"col-sm-12":1}),(t()(),a["ɵand"](16777216,null,null,2,null,k)),a["ɵdid"](12,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpad"](13,2),(t()(),a["ɵand"](16777216,null,null,1,null,E)),a["ɵdid"](15,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,P)),a["ɵdid"](17,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,M)),a["ɵdid"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,q)),a["ɵdid"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,6,0,e.context.$implicit.label);var r=t(e,10,0,e.context.$implicit.label,!e.context.$implicit.label);t(e,9,0,r);var i=t(e,13,0,"text","number").includes(e.context.$implicit.type);t(e,12,0,i),t(e,15,0,"binary"===e.context.$implicit.type),t(e,17,0,"select"===e.context.$implicit.type),t(e,19,0,"select-badges"===e.context.$implicit.type),t(e,21,0,n.formGroup.showError(e.context.$implicit.name,a["ɵnov"](e.parent,7)))}),(function(t,e){t(e,1,0,a["ɵinlineInterpolate"](1,"form-group row cd-",e.context.$implicit.name,"-form-group"),a["ɵnov"](e,2).hasErrors,a["ɵnov"](e,2).hasSuccess)}))}function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,22,"cd-modal",[],null,null,null,m.c,m.b)),a["ɵdid"](1,49152,null,0,y.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,C)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](4,0,null,1,18,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,17,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,7).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,10).onSubmit()&&r),r}),null,null)),a["ɵdid"](6,16384,null,0,i.G,[],null,null),a["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,i.d,null,[i.l]),a["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),a["ɵdid"](10,16384,null,0,l.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](11,0,null,null,4,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,R)),a["ɵdid"](13,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,j)),a["ɵdid"](15,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0,r=t.component;return"submitAction"===e&&(a=!1!==r.onSubmitForm(r.formGroup.value)&&a),a}),v.b,v.a)),a["ɵdid"](19,114688,null,0,x.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵted"](20,0,[" "," "])),(t()(),a["ɵeld"](21,0,null,null,1,"cd-back-button",[],null,null,null,_.b,_.a)),a["ɵdid"](22,49152,null,0,T.a,[r.Location,w.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,3,0,n.titleText),t(e,7,0,n.formGroup),t(e,10,0,n.formGroup),t(e,13,0,n.message),t(e,15,0,n.fields),t(e,19,0,n.formGroup),t(e,22,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,5,0,a["ɵnov"](e,9).ngClassUntouched,a["ɵnov"](e,9).ngClassTouched,a["ɵnov"](e,9).ngClassPristine,a["ɵnov"](e,9).ngClassDirty,a["ɵnov"](e,9).ngClassValid,a["ɵnov"](e,9).ngClassInvalid,a["ɵnov"](e,9).ngClassPending),t(e,20,0,n.submitButtonText)}))}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-form-modal",[],null,null,null,F,N)),a["ɵdid"](1,114688,null,0,O.a,[S.a,I.a,f.a,c.a,p.a],null,null)],(function(t,e){t(e,1,0)}),null)}var G=a["ɵccf"]("cd-form-modal",O.a,V,{},{},[])},hh1v:function(t,e,n){var a=n("Fib7");t.exports=function(t){return"object"==typeof t?null!==t:a(t)}},hmSm:function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},honF:function(t,e,n){!function(t){"use strict";var e={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};t.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(t){return t.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},hpHm:function(t,e,n){"use strict";n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return p})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return h})),n.d(e,"e",(function(){return u})),n.d(e,"f",(function(){return s})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return o})),n.d(e,"i",(function(){return y})),n.d(e,"j",(function(){return d}));var a=n("8Y7J");class r{constructor(t,e){this.open=t,this.close=e||t}isManual(){return"manual"===this.open||"manual"===this.close}}const i={hover:["mouseover","mouseout"],focus:["focusin","focusout"]};function s(t,e=i){const n=(t||"").trim();if(0===n.length)return[];const a=n.split(/\s+/).map(t=>t.split(":")).map(t=>{const n=e[t[0]]||t;return new r(n[0],n[1])}),s=a.filter(t=>t.isManual());if(s.length>1)throw new Error("Triggers parse error: only one manual trigger is allowed");if(1===s.length&&a.length>1)throw new Error("Triggers parse error: manual trigger can't be mixed with other triggers");return a}function u(t,e){const n=s(e.triggers),a=e.target;if(1===n.length&&n[0].isManual())return Function.prototype;const r=[],i=[],u=()=>{i.forEach(t=>r.push(t())),i.length=0};return n.forEach(n=>{const s=n.open===n.close,o=s?e.toggle:e.show;s||i.push(()=>t.listen(a,n.close,e.hide)),r.push(t.listen(a,n.open,()=>o(u)))}),()=>{r.forEach(t=>t())}}function o(t,e){return e.outsideClick?t.listen("document","click",t=>{e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(e=>e.contains(t.target))||e.hide()}):Function.prototype}function l(t,e){return e.outsideEsc?t.listen("document","keyup.esc",t=>{e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(e=>e.contains(t.target))||e.hide()}):Function.prototype}const d="undefined"!=typeof window&&window||{},c=d.document;let f;function h(){return void 0===d||(void 0===d.__theme?(f||(f=function(){if("undefined"==typeof document)return null;const t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");const e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}()),"bs3"===f):"bs4"!==d.__theme)}function g(t){return function(t,e){const n=` __${e}Value`;Object.defineProperty(t,e,{get(){return this[n]},set(t){const a=this[n];this[n]=t,a!==t&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}}class p{static reflow(t){}static getStyles(t){let e=t.ownerDocument.defaultView;return e&&e.opener||(e=d),e.getComputedStyle(t)}}const b={},m="undefined"==typeof console||!("warn"in console);function y(t){!Object(a.isDevMode)()||m||t in b||(b[t]=!0,console.warn(t))}},hrfs:function(t,e,n){"use strict";n.d(e,"a",(function(){return b})),n.d(e,"b",(function(){return m})),n.d(e,"c",(function(){return g}));var a=n("8Y7J"),r=n("MO+k"),i=n("2Vo4"),s=n("lsW8");const u=[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]];function o(t,e){return"rgba("+t.concat(e).join(",")+")"}function l(t,e){return Math.floor(Math.random()*(e-t+1))+t}function d(t){return{backgroundColor:t.map(t=>o(t,.6)),borderColor:t.map(()=>"#fff"),pointBackgroundColor:t.map(t=>o(t,1)),pointBorderColor:t.map(()=>"#fff"),pointHoverBackgroundColor:t.map(t=>o(t,1)),pointHoverBorderColor:t.map(t=>o(t,1))}}function c(){return[l(0,255),l(0,255),l(0,255)]}function f(t){return u[t]||c()}function h(t){const e=new Array(t);for(let n=0;n<t;n++)e[n]=u[n]||c();return e}let g=(()=>{class t{constructor(){this.pColorschemesOptions={},this.colorschemesOptions=new i.a({})}setColorschemesOptions(t){this.pColorschemesOptions=t,this.colorschemesOptions.next(t)}getColorschemesOptions(){return this.pColorschemesOptions}}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t},token:t,providedIn:"root"}),t})();const p=function(){var t={Default:0,Update:1,Refresh:2};return t[t.Default]="Default",t[t.Update]="Update",t[t.Refresh]="Refresh",t}();class b{constructor(t,e){this.element=t,this.themeService=e,this.options={},this.chartClick=new a.EventEmitter,this.chartHover=new a.EventEmitter,this.old={dataExists:!1,dataLength:0,datasetsExists:!1,datasetsLength:0,datasetsDataObjects:[],datasetsDataLengths:[],colorsExists:!1,colors:[],labelsExist:!1,labels:[],legendExists:!1,legend:{}},this.subs=[]}static registerPlugin(t){r.Chart.plugins.register(t)}static unregisterPlugin(t){r.Chart.plugins.unregister(t)}ngOnInit(){this.ctx=this.element.nativeElement.getContext("2d"),this.refresh(),this.subs.push(this.themeService.colorschemesOptions.subscribe(t=>this.themeChanged(t)))}themeChanged(t){this.refresh()}ngDoCheck(){if(!this.chart)return;let t=p.Default;const e=e=>{t=e>t?e:t};switch(!!this.data!==this.old.dataExists&&(this.propagateDataToDatasets(this.data),this.old.dataExists=!!this.data,e(p.Update)),this.data&&this.data.length!==this.old.dataLength&&(this.old.dataLength=this.data&&this.data.length||0,e(p.Update)),!!this.datasets!==this.old.datasetsExists&&(this.old.datasetsExists=!!this.datasets,e(p.Update)),this.datasets&&this.datasets.length!==this.old.datasetsLength&&(this.old.datasetsLength=this.datasets&&this.datasets.length||0,e(p.Update)),this.datasets&&this.datasets.filter((t,e)=>t.data!==this.old.datasetsDataObjects[e]).length&&(this.old.datasetsDataObjects=this.datasets.map(t=>t.data),e(p.Update)),this.datasets&&this.datasets.filter((t,e)=>t.data.length!==this.old.datasetsDataLengths[e]).length&&(this.old.datasetsDataLengths=this.datasets.map(t=>t.data.length),e(p.Update)),!!this.colors!==this.old.colorsExists&&(this.old.colorsExists=!!this.colors,this.updateColors(),e(p.Update)),this.colors&&this.colors.filter((t,e)=>!this.colorsEqual(t,this.old.colors[e])).length&&(this.old.colors=this.colors.map(t=>this.copyColor(t)),this.updateColors(),e(p.Update)),!!this.labels!==this.old.labelsExist&&(this.old.labelsExist=!!this.labels,e(p.Update)),this.labels&&this.labels.filter((t,e)=>!this.labelsEqual(t,this.old.labels[e])).length&&(this.old.labels=this.labels.map(t=>this.copyLabel(t)),e(p.Update)),!!this.options.legend!==this.old.legendExists&&(this.old.legendExists=!!this.options.legend,e(p.Refresh)),this.options.legend&&this.options.legend.position!==this.old.legend.position&&(this.old.legend.position=this.options.legend.position,e(p.Refresh)),t){case p.Default:break;case p.Update:this.update();break;case p.Refresh:this.refresh()}}copyLabel(t){return Array.isArray(t)?[...t]:t}labelsEqual(t,e){return Array.isArray(t)===Array.isArray(e)&&(Array.isArray(t)||t===e)&&(!Array.isArray(t)||t.length===e.length)&&(!Array.isArray(t)||0===t.filter((t,n)=>t!==e[n]).length)}copyColor(t){return{backgroundColor:t.backgroundColor,borderWidth:t.borderWidth,borderColor:t.borderColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,pointBorderColor:t.pointBorderColor,pointBackgroundColor:t.pointBackgroundColor,pointBorderWidth:t.pointBorderWidth,pointRadius:t.pointRadius,pointHoverRadius:t.pointHoverRadius,pointHitRadius:t.pointHitRadius,pointHoverBackgroundColor:t.pointHoverBackgroundColor,pointHoverBorderColor:t.pointHoverBorderColor,pointHoverBorderWidth:t.pointHoverBorderWidth,pointStyle:t.pointStyle,hoverBackgroundColor:t.hoverBackgroundColor,hoverBorderColor:t.hoverBorderColor,hoverBorderWidth:t.hoverBorderWidth}}colorsEqual(t,e){return!t==!e&&(!t||t.backgroundColor===e.backgroundColor&&t.borderWidth===e.borderWidth&&t.borderColor===e.borderColor&&t.borderCapStyle===e.borderCapStyle&&t.borderDash===e.borderDash&&t.borderDashOffset===e.borderDashOffset&&t.borderJoinStyle===e.borderJoinStyle&&t.pointBorderColor===e.pointBorderColor&&t.pointBackgroundColor===e.pointBackgroundColor&&t.pointBorderWidth===e.pointBorderWidth&&t.pointRadius===e.pointRadius&&t.pointHoverRadius===e.pointHoverRadius&&t.pointHitRadius===e.pointHitRadius&&t.pointHoverBackgroundColor===e.pointHoverBackgroundColor&&t.pointHoverBorderColor===e.pointHoverBorderColor&&t.pointHoverBorderWidth===e.pointHoverBorderWidth&&t.pointStyle===e.pointStyle&&t.hoverBackgroundColor===e.hoverBackgroundColor&&t.hoverBorderColor===e.hoverBorderColor&&t.hoverBorderWidth===e.hoverBorderWidth)}updateColors(){this.datasets.forEach((t,e)=>{this.colors&&this.colors[e]?Object.assign(t,this.colors[e]):Object.assign(t,function(t,e,n){if("pie"===t||"doughnut"===t)return d(h(n));if("polarArea"===t)return{backgroundColor:(a=h(n)).map(t=>o(t,.6)),borderColor:a.map(t=>o(t,1)),hoverBackgroundColor:a.map(t=>o(t,.8)),hoverBorderColor:a.map(t=>o(t,1))};var a;if("line"===t||"radar"===t)return function(t){return{backgroundColor:o(t,.4),borderColor:o(t,1),pointBackgroundColor:o(t,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:o(t,.8)}}(f(e));if("bar"===t||"horizontalBar"===t)return function(t){return{backgroundColor:o(t,.6),borderColor:o(t,1),hoverBackgroundColor:o(t,.8),hoverBorderColor:o(t,1)}}(f(e));if("bubble"===t)return d(h(n));if("scatter"===t)return d(h(n));throw new Error("getColors - Unsupported chart type "+t)}(this.chartType,e,t.data.length),Object.assign({},t))})}ngOnChanges(t){let e=p.Default;const n=t=>{e=t>e?t:e};switch(t.hasOwnProperty("data")&&t.data.currentValue&&(this.propagateDataToDatasets(t.data.currentValue),n(p.Update)),t.hasOwnProperty("datasets")&&t.datasets.currentValue&&(this.propagateDatasetsToData(t.datasets.currentValue),n(p.Update)),t.hasOwnProperty("labels")&&(this.chart&&(this.chart.data.labels=t.labels.currentValue),n(p.Update)),t.hasOwnProperty("legend")&&(this.chart&&(this.chart.config.options.legend.display=t.legend.currentValue,this.chart.generateLegend()),n(p.Update)),t.hasOwnProperty("options")&&n(p.Refresh),e){case p.Update:this.update();break;case p.Refresh:case p.Default:this.refresh()}}ngOnDestroy(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.subs.forEach(t=>t.unsubscribe())}update(t,e){if(this.chart)return this.chart.update(t,e)}hideDataset(t,e){this.chart.getDatasetMeta(t).hidden=e,this.chart.update()}isDatasetHidden(t){return this.chart.getDatasetMeta(t).hidden}toBase64Image(){return this.chart.toBase64Image()}getChartConfiguration(){const t=this.getDatasets(),e=Object.assign({},this.options);!1===this.legend&&(e.legend={display:!1}),e.hover=e.hover||{},e.hover.onHover||(e.hover.onHover=(t,e)=>{e&&!e.length||this.chartHover.emit({event:t,active:e})}),e.onClick||(e.onClick=(t,e)=>{this.chartClick.emit({event:t,active:e})});const n=this.smartMerge(e,this.themeService.getColorschemesOptions());return{type:this.chartType,data:{labels:this.labels||[],datasets:t},plugins:this.plugins,options:n}}getChartBuilder(t){const e=this.getChartConfiguration();return new r.Chart(t,e)}smartMerge(t,e,n=0){if(0===n&&(t=Object(s.cloneDeep)(t)),Object.keys(e).forEach(a=>{if(Array.isArray(e[a])){const r=t[a];r&&r.forEach(t=>{this.smartMerge(t,e[a][0],n+1)})}else"object"==typeof e[a]?(a in t||(t[a]={}),this.smartMerge(t[a],e[a],n+1)):t[a]=e[a]}),0===n)return t}isMultiLineLabel(t){return Array.isArray(t)}joinLabel(t){return t?this.isMultiLineLabel(t)?t.join(" "):t:null}propagateDatasetsToData(t){this.data=this.datasets.map(t=>t.data),this.chart&&(this.chart.data.datasets=t),this.updateColors()}propagateDataToDatasets(t){this.isMultiDataSet(t)?this.datasets&&t.length===this.datasets.length?this.datasets.forEach((e,n)=>{e.data=t[n]}):(this.datasets=t.map((t,e)=>({data:t,label:this.joinLabel(this.labels[e])||"Label "+e})),this.chart&&(this.chart.data.datasets=this.datasets)):this.datasets?(this.datasets[0].data=t,this.datasets.splice(1)):(this.datasets=[{data:t}],this.chart&&(this.chart.data.datasets=this.datasets)),this.updateColors()}isMultiDataSet(t){return Array.isArray(t[0])}getDatasets(){if(!this.datasets&&!this.data)throw new Error("ng-charts configuration error, data or datasets field are required to render chart "+this.chartType);return this.datasets?(this.propagateDatasetsToData(this.datasets),this.datasets):this.data?(this.propagateDataToDatasets(this.data),this.datasets):void 0}refresh(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.ctx&&(this.chart=this.getChartBuilder(this.ctx))}}class m{}},i4WA:function(t,e,n){"use strict";var a=n("8Y7J");n("6qls"),n("tz6c"),n("GiVz"),n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var r=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,0,0,a["ɵinlineInterpolate"](1,"",n.docUrl,"")),t(e,1,0,n.docText)}))}},iEDd:function(t,e,n){!function(t){"use strict";t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return 0===t.indexOf("un")?"n"+t:"en "+t},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},iExv:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.i18n=t}transform(t,e=this.i18n("Yes"),n=this.i18n("No")){return Boolean(t)?e:n}}},iInd:function(t,e,n){"use strict";var a=n("SVse"),r=n("8Y7J"),i=n("LRne"),s=n("Cfvw"),u=n("2Vo4"),o=n("HDdC"),l=n("sVev"),d=n("z+Ro"),c=n("DH7j"),f=n("l7GE"),h=n("ZUHj"),g=n("yCtX");const p={};class b{constructor(t){this.resultSelector=t}call(t,e){return e.subscribe(new m(t,this.resultSelector))}}class m extends f.a{constructor(t,e){super(t),this.resultSelector=e,this.active=0,this.values=[],this.observables=[]}_next(t){this.values.push(p),this.observables.push(t)}_complete(){const t=this.observables,e=t.length;if(0===e)this.destination.complete();else{this.active=e,this.toRespond=e;for(let n=0;n<e;n++){const e=t[n];this.add(Object(h.a)(this,e,e,n))}}}notifyComplete(t){0==(this.active-=1)&&this.destination.complete()}notifyNext(t,e,n,a,r){const i=this.values,s=this.toRespond?i[n]===p?--this.toRespond:this.toRespond:0;i[n]=e,0===s&&(this.resultSelector?this._tryResultSelector(i):this.destination.next(i.slice()))}_tryResultSelector(t){let e;try{e=this.resultSelector.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}var y=n("EY2u");function v(t){return new o.a(e=>{let n;try{n=t()}catch(a){return void e.error(a)}return(n?Object(s.a)(n):Object(y.b)()).subscribe(e)})}var x=n("XNiG"),_=n("lJxs"),T=n("0EUg"),w=n("NJ9Y"),O=n("JIr8"),S=n("SxV6"),I=n("5+tZ"),N=n("7o/Q");class C{constructor(t,e,n){this.predicate=t,this.thisArg=e,this.source=n}call(t,e){return e.subscribe(new R(t,this.predicate,this.thisArg,this.source))}}class R extends N.a{constructor(t,e,n,a){super(t),this.predicate=e,this.thisArg=n,this.source=a,this.index=0,this.thisArg=n||this}notifyComplete(t){this.destination.next(t),this.destination.complete()}_next(t){let e=!1;try{e=this.predicate.call(this.thisArg,t,this.index++,this.source)}catch(n){return void this.destination.error(n)}e||this.notifyComplete(!1)}_complete(){this.notifyComplete(!0)}}var A=n("eIep"),k=n("IzEk"),E=n("GyhO"),L=n("Kqap"),D=n("pLZG"),P=n("bOdf"),M=n("128B"),q=n("vkgz"),j=n("nYR2"),F=n("bHdf"),V=n("cUpR");n.d(e,"F",(function(){return rt})),n.d(e,"v",(function(){return vn})),n.d(e,"C",(function(){return Rn})),n.d(e,"x",(function(){return wn})),n.d(e,"D",(function(){return An})),n.d(e,"E",(function(){return kn})),n.d(e,"z",(function(){return Sn})),n.d(e,"y",(function(){return On})),n.d(e,"B",(function(){return Cn})),n.d(e,"w",(function(){return _n})),n.d(e,"A",(function(){return Nn})),n.d(e,"G",(function(){return mn})),n.d(e,"n",(function(){return rn})),n.d(e,"p",(function(){return sn})),n.d(e,"o",(function(){return on})),n.d(e,"r",(function(){return cn})),n.d(e,"d",(function(){return z})),n.d(e,"e",(function(){return B})),n.d(e,"l",(function(){return Ke})),n.d(e,"m",(function(){return an})),n.d(e,"k",(function(){return Je})),n.d(e,"i",(function(){return yn})),n.d(e,"j",(function(){return En})),n.d(e,"q",(function(){return Tn})),n.d(e,"b",(function(){return dn})),n.d(e,"f",(function(){return pn})),n.d(e,"g",(function(){return gn})),n.d(e,"h",(function(){return hn})),n.d(e,"s",(function(){return bn})),n.d(e,"a",(function(){return Wt})),n.d(e,"t",(function(){return Qe})),n.d(e,"c",(function(){return It})),n.d(e,"u",(function(){return St}));class G{constructor(t,e){this.id=t,this.url=e}}class B extends G{constructor(t,e,n="imperative",a=null){super(t,e),this.navigationTrigger=n,this.restoredState=a}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class z extends G{constructor(t,e,n){super(t,e),this.urlAfterRedirects=n}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Y extends G{constructor(t,e,n){super(t,e),this.reason=n}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class H extends G{constructor(t,e,n){super(t,e),this.error=n}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class U extends G{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class W extends G{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class K extends G{constructor(t,e,n,a,r){super(t,e),this.urlAfterRedirects=n,this.state=a,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class $ extends G{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class J extends G{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Z{constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Q{constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class X{constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class tt{constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class et{constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class nt{constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class at{constructor(t,e,n){this.routerEvent=t,this.position=e,this.anchor=n}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class rt{}class it{constructor(t){this.params=t||{}}has(t){return this.params.hasOwnProperty(t)}get(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e[0]:e}return null}getAll(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function st(t){return new it(t)}function ut(t){const e=Error("NavigationCancelingError: "+t);return e.ngNavigationCancelingError=!0,e}function ot(t,e,n){const a=n.path.split("/");if(a.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||a.length<t.length))return null;const r={};for(let i=0;i<a.length;i++){const e=a[i],n=t[i];if(e.startsWith(":"))r[e.substring(1)]=n;else if(e!==n.path)return null}return{consumed:t.slice(0,a.length),posParams:r}}class lt{constructor(t,e){this.routes=t,this.module=e}}function dt(t,e=""){for(let n=0;n<t.length;n++){const a=t[n];ct(a,ft(e,a))}}function ct(t,e){if(!t)throw new Error(`\n      Invalid configuration of route '${e}': Encountered undefined route.\n      The reason might be an extra comma.\n\n      Example:\n      const routes: Routes = [\n        { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n        { path: 'dashboard',  component: DashboardComponent },, << two commas\n        { path: 'detail/:id', component: HeroDetailComponent }\n      ];\n    `);if(Array.isArray(t))throw new Error(`Invalid configuration of route '${e}': Array cannot be specified`);if(!t.component&&!t.children&&!t.loadChildren&&t.outlet&&"primary"!==t.outlet)throw new Error(`Invalid configuration of route '${e}': a componentless route without children or loadChildren cannot have a named outlet set`);if(t.redirectTo&&t.children)throw new Error(`Invalid configuration of route '${e}': redirectTo and children cannot be used together`);if(t.redirectTo&&t.loadChildren)throw new Error(`Invalid configuration of route '${e}': redirectTo and loadChildren cannot be used together`);if(t.children&&t.loadChildren)throw new Error(`Invalid configuration of route '${e}': children and loadChildren cannot be used together`);if(t.redirectTo&&t.component)throw new Error(`Invalid configuration of route '${e}': redirectTo and component cannot be used together`);if(t.path&&t.matcher)throw new Error(`Invalid configuration of route '${e}': path and matcher cannot be used together`);if(void 0===t.redirectTo&&!t.component&&!t.children&&!t.loadChildren)throw new Error(`Invalid configuration of route '${e}'. One of the following must be provided: component, redirectTo, children or loadChildren`);if(void 0===t.path&&void 0===t.matcher)throw new Error(`Invalid configuration of route '${e}': routes must have either a path or a matcher specified`);if("string"==typeof t.path&&"/"===t.path.charAt(0))throw new Error(`Invalid configuration of route '${e}': path cannot start with a slash`);if(""===t.path&&void 0!==t.redirectTo&&void 0===t.pathMatch)throw new Error(`Invalid configuration of route '{path: "${e}", redirectTo: "${t.redirectTo}"}': please provide 'pathMatch'. The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`);if(void 0!==t.pathMatch&&"full"!==t.pathMatch&&"prefix"!==t.pathMatch)throw new Error(`Invalid configuration of route '${e}': pathMatch can only be set to 'prefix' or 'full'`);t.children&&dt(t.children,e)}function ft(t,e){return e?t||e.path?t&&!e.path?t+"/":!t&&e.path?e.path:`${t}/${e.path}`:"":t}function ht(t){const e=t.children&&t.children.map(ht),n=e?Object.assign({},t,{children:e}):Object.assign({},t);return!n.component&&(e||n.loadChildren)&&n.outlet&&"primary"!==n.outlet&&(n.component=rt),n}function gt(t,e){const n=Object.keys(t),a=Object.keys(e);if(!n||!a||n.length!=a.length)return!1;let r;for(let i=0;i<n.length;i++)if(r=n[i],t[r]!==e[r])return!1;return!0}function pt(t){return Array.prototype.concat.apply([],t)}function bt(t){return t.length>0?t[t.length-1]:null}function mt(t,e){for(const n in t)t.hasOwnProperty(n)&&e(t[n],n)}function yt(t){return Object(r["ɵisObservable"])(t)?t:Object(r["ɵisPromise"])(t)?Object(s.a)(Promise.resolve(t)):Object(i.a)(t)}function vt(t,e,n){return n?function(t,e){return gt(t,e)}(t.queryParams,e.queryParams)&&function t(e,n){if(!wt(e.segments,n.segments))return!1;if(e.numberOfChildren!==n.numberOfChildren)return!1;for(const a in n.children){if(!e.children[a])return!1;if(!t(e.children[a],n.children[a]))return!1}return!0}(t.root,e.root):function(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(n=>e[n]===t[n])}(t.queryParams,e.queryParams)&&function t(e,n){return function e(n,a,r){if(n.segments.length>r.length)return!!wt(n.segments.slice(0,r.length),r)&&!a.hasChildren();if(n.segments.length===r.length){if(!wt(n.segments,r))return!1;for(const e in a.children){if(!n.children[e])return!1;if(!t(n.children[e],a.children[e]))return!1}return!0}{const t=r.slice(0,n.segments.length),i=r.slice(n.segments.length);return!!wt(n.segments,t)&&!!n.children.primary&&e(n.children.primary,a,i)}}(e,n,n.segments)}(t.root,e.root)}class xt{constructor(t,e,n){this.root=t,this.queryParams=e,this.fragment=n}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=st(this.queryParams)),this._queryParamMap}toString(){return Nt.serialize(this)}}class _t{constructor(t,e){this.segments=t,this.children=e,this.parent=null,mt(e,(t,e)=>t.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Ct(this)}}class Tt{constructor(t,e){this.path=t,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=st(this.parameters)),this._parameterMap}toString(){return Dt(this)}}function wt(t,e){return t.length===e.length&&t.every((t,n)=>t.path===e[n].path)}function Ot(t,e){let n=[];return mt(t.children,(t,a)=>{"primary"===a&&(n=n.concat(e(t,a)))}),mt(t.children,(t,a)=>{"primary"!==a&&(n=n.concat(e(t,a)))}),n}class St{}class It{parse(t){const e=new Ft(t);return new xt(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(t){return`${"/"+function t(e,n){if(!e.hasChildren())return Ct(e);if(n){const n=e.children.primary?t(e.children.primary,!1):"",a=[];return mt(e.children,(e,n)=>{"primary"!==n&&a.push(`${n}:${t(e,!1)}`)}),a.length>0?`${n}(${a.join("//")})`:n}{const n=Ot(e,(n,a)=>"primary"===a?[t(e.children.primary,!1)]:[`${a}:${t(n,!1)}`]);return`${Ct(e)}/(${n.join("//")})`}}(t.root,!0)}${function(t){const e=Object.keys(t).map(e=>{const n=t[e];return Array.isArray(n)?n.map(t=>`${At(e)}=${At(t)}`).join("&"):`${At(e)}=${At(n)}`});return e.length?"?"+e.join("&"):""}(t.queryParams)}${"string"==typeof t.fragment?"#"+encodeURI(t.fragment):""}`}}const Nt=new It;function Ct(t){return t.segments.map(t=>Dt(t)).join("/")}function Rt(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function At(t){return Rt(t).replace(/%3B/gi,";")}function kt(t){return Rt(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Et(t){return decodeURIComponent(t)}function Lt(t){return Et(t.replace(/\+/g,"%20"))}function Dt(t){return`${kt(t.path)}${e=t.parameters,Object.keys(e).map(t=>`;${kt(t)}=${kt(e[t])}`).join("")}`;var e}const Pt=/^[^\/()?;=#]+/;function Mt(t){const e=t.match(Pt);return e?e[0]:""}const qt=/^[^=?&#]+/,jt=/^[^?&#]+/;class Ft{constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new _t([],{}):new _t([],this.parseChildren())}parseQueryParams(){const t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n.primary=new _t(t,e)),n}parseSegment(){const t=Mt(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(t),new Tt(Et(t),this.parseMatrixParams())}parseMatrixParams(){const t={};for(;this.consumeOptional(";");)this.parseParam(t);return t}parseParam(t){const e=Mt(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=Mt(this.remaining);t&&(n=t,this.capture(n))}t[Et(e)]=Et(n)}parseQueryParam(t){const e=function(t){const e=t.match(qt);return e?e[0]:""}(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=function(t){const e=t.match(jt);return e?e[0]:""}(this.remaining);t&&(n=t,this.capture(n))}const a=Lt(e),r=Lt(n);if(t.hasOwnProperty(a)){let e=t[a];Array.isArray(e)||(e=[e],t[a]=e),e.push(r)}else t[a]=r}parseParens(t){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const n=Mt(this.remaining),a=this.remaining[n.length];if("/"!==a&&")"!==a&&";"!==a)throw new Error(`Cannot parse url '${this.url}'`);let r=void 0;n.indexOf(":")>-1?(r=n.substr(0,n.indexOf(":")),this.capture(r),this.capture(":")):t&&(r="primary");const i=this.parseChildren();e[r]=1===Object.keys(i).length?i.primary:new _t([],i),this.consumeOptional("//")}return e}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}capture(t){if(!this.consumeOptional(t))throw new Error(`Expected "${t}".`)}}class Vt{constructor(t){this._root=t}get root(){return this._root.value}parent(t){const e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null}children(t){const e=Gt(t,this._root);return e?e.children.map(t=>t.value):[]}firstChild(t){const e=Gt(t,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(t){const e=Bt(t,this._root);return e.length<2?[]:e[e.length-2].children.map(t=>t.value).filter(e=>e!==t)}pathFromRoot(t){return Bt(t,this._root).map(t=>t.value)}}function Gt(t,e){if(t===e.value)return e;for(const n of e.children){const e=Gt(t,n);if(e)return e}return null}function Bt(t,e){if(t===e.value)return[e];for(const n of e.children){const a=Bt(t,n);if(a.length)return a.unshift(e),a}return[]}class zt{constructor(t,e){this.value=t,this.children=e}toString(){return`TreeNode(${this.value})`}}function Yt(t){const e={};return t&&t.children.forEach(t=>e[t.value.outlet]=t),e}class Ht extends Vt{constructor(t,e){super(t),this.snapshot=e,Zt(this,t)}toString(){return this.snapshot.toString()}}function Ut(t,e){const n=function(t,e){const n=new $t([],{},{},"",{},"primary",e,null,t.root,-1,{});return new Jt("",new zt(n,[]))}(t,e),a=new u.a([new Tt("",{})]),r=new u.a({}),i=new u.a({}),s=new u.a({}),o=new u.a(""),l=new Wt(a,r,s,o,i,"primary",e,n.root);return l.snapshot=n.root,new Ht(new zt(l,[]),n)}class Wt{constructor(t,e,n,a,r,i,s,u){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=s,this._futureSnapshot=u}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(Object(_.a)(t=>st(t)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(Object(_.a)(t=>st(t)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Kt(t,e="emptyOnly"){const n=t.pathFromRoot;let a=0;if("always"!==e)for(a=n.length-1;a>=1;){const t=n[a],e=n[a-1];if(t.routeConfig&&""===t.routeConfig.path)a--;else{if(e.component)break;a--}}return function(t){return t.reduce((t,e)=>({params:Object.assign({},t.params,e.params),data:Object.assign({},t.data,e.data),resolve:Object.assign({},t.resolve,e._resolvedData)}),{params:{},data:{},resolve:{}})}(n.slice(a))}class $t{constructor(t,e,n,a,r,i,s,u,o,l,d){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=s,this.routeConfig=u,this._urlSegment=o,this._lastPathIndex=l,this._resolve=d}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=st(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=st(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(t=>t.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Jt extends Vt{constructor(t,e){super(e),this.url=t,Zt(this,e)}toString(){return Qt(this._root)}}function Zt(t,e){e.value._routerState=t,e.children.forEach(e=>Zt(t,e))}function Qt(t){const e=t.children.length>0?` { ${t.children.map(Qt).join(", ")} } `:"";return`${t.value}${e}`}function Xt(t){if(t.snapshot){const e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,gt(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),gt(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;++n)if(!gt(t[n],e[n]))return!1;return!0}(e.url,n.url)||t.url.next(n.url),gt(e.data,n.data)||t.data.next(n.data)}else t.snapshot=t._futureSnapshot,t.data.next(t._futureSnapshot.data)}function te(t,e){var n,a;return gt(t.params,e.params)&&wt(n=t.url,a=e.url)&&n.every((t,e)=>gt(t.parameters,a[e].parameters))&&!(!t.parent!=!e.parent)&&(!t.parent||te(t.parent,e.parent))}function ee(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function ne(t,e,n,a,r){let i={};return a&&mt(a,(t,e)=>{i[e]=Array.isArray(t)?t.map(t=>""+t):""+t}),new xt(n.root===t?e:function t(e,n,a){const r={};return mt(e.children,(e,i)=>{r[i]=e===n?a:t(e,n,a)}),new _t(e.segments,r)}(n.root,t,e),i,r)}class ae{constructor(t,e,n){if(this.isAbsolute=t,this.numberOfDoubleDots=e,this.commands=n,t&&n.length>0&&ee(n[0]))throw new Error("Root segment cannot have matrix parameters");const a=n.find(t=>"object"==typeof t&&null!=t&&t.outlets);if(a&&a!==bt(n))throw new Error("{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class re{constructor(t,e,n){this.segmentGroup=t,this.processChildren=e,this.index=n}}function ie(t){return"object"==typeof t&&null!=t&&t.outlets?t.outlets.primary:""+t}function se(t,e,n){if(t||(t=new _t([],{})),0===t.segments.length&&t.hasChildren())return ue(t,e,n);const a=function(t,e,n){let a=0,r=e;const i={match:!1,pathIndex:0,commandIndex:0};for(;r<t.segments.length;){if(a>=n.length)return i;const e=t.segments[r],s=ie(n[a]),u=a<n.length-1?n[a+1]:null;if(r>0&&void 0===s)break;if(s&&u&&"object"==typeof u&&void 0===u.outlets){if(!ce(s,u,e))return i;a+=2}else{if(!ce(s,{},e))return i;a++}r++}return{match:!0,pathIndex:r,commandIndex:a}}(t,e,n),r=n.slice(a.commandIndex);if(a.match&&a.pathIndex<t.segments.length){const e=new _t(t.segments.slice(0,a.pathIndex),{});return e.children.primary=new _t(t.segments.slice(a.pathIndex),t.children),ue(e,0,r)}return a.match&&0===r.length?new _t(t.segments,{}):a.match&&!t.hasChildren()?oe(t,e,n):a.match?ue(t,0,r):oe(t,e,n)}function ue(t,e,n){if(0===n.length)return new _t(t.segments,{});{const a=function(t){return"object"!=typeof t[0]||void 0===t[0].outlets?{primary:t}:t[0].outlets}(n),r={};return mt(a,(n,a)=>{null!==n&&(r[a]=se(t.children[a],e,n))}),mt(t.children,(t,e)=>{void 0===a[e]&&(r[e]=t)}),new _t(t.segments,r)}}function oe(t,e,n){const a=t.segments.slice(0,e);let r=0;for(;r<n.length;){if("object"==typeof n[r]&&void 0!==n[r].outlets){const t=le(n[r].outlets);return new _t(a,t)}if(0===r&&ee(n[0])){a.push(new Tt(t.segments[e].path,n[0])),r++;continue}const i=ie(n[r]),s=r<n.length-1?n[r+1]:null;i&&s&&ee(s)?(a.push(new Tt(i,de(s))),r+=2):(a.push(new Tt(i,{})),r++)}return new _t(a,{})}function le(t){const e={};return mt(t,(t,n)=>{null!==t&&(e[n]=oe(new _t([],{}),0,t))}),e}function de(t){const e={};return mt(t,(t,n)=>e[n]=""+t),e}function ce(t,e,n){return t==n.path&&gt(e,n.parameters)}class fe{constructor(t,e,n,a){this.routeReuseStrategy=t,this.futureState=e,this.currState=n,this.forwardEvent=a}activate(t){const e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,t),Xt(this.futureState.root),this.activateChildRoutes(e,n,t)}deactivateChildRoutes(t,e,n){const a=Yt(e);t.children.forEach(t=>{const e=t.value.outlet;this.deactivateRoutes(t,a[e],n),delete a[e]}),mt(a,(t,e)=>{this.deactivateRouteAndItsChildren(t,n)})}deactivateRoutes(t,e,n){const a=t.value,r=e?e.value:null;if(a===r)if(a.component){const r=n.getContext(a.outlet);r&&this.deactivateChildRoutes(t,e,r.children)}else this.deactivateChildRoutes(t,e,n);else r&&this.deactivateRouteAndItsChildren(e,n)}deactivateRouteAndItsChildren(t,e){this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,e):this.deactivateRouteAndOutlet(t,e)}detachAndStoreRouteSubtree(t,e){const n=e.getContext(t.value.outlet);if(n&&n.outlet){const e=n.outlet.detach(),a=n.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:e,route:t,contexts:a})}}deactivateRouteAndOutlet(t,e){const n=e.getContext(t.value.outlet);if(n){const a=Yt(t),r=t.value.component?n.children:e;mt(a,(t,e)=>this.deactivateRouteAndItsChildren(t,r)),n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated())}}activateChildRoutes(t,e,n){const a=Yt(e);t.children.forEach(t=>{this.activateRoutes(t,a[t.value.outlet],n),this.forwardEvent(new nt(t.value.snapshot))}),t.children.length&&this.forwardEvent(new tt(t.value.snapshot))}activateRoutes(t,e,n){const a=t.value,r=e?e.value:null;if(Xt(a),a===r)if(a.component){const r=n.getOrCreateContext(a.outlet);this.activateChildRoutes(t,e,r.children)}else this.activateChildRoutes(t,e,n);else if(a.component){const e=n.getOrCreateContext(a.outlet);if(this.routeReuseStrategy.shouldAttach(a.snapshot)){const t=this.routeReuseStrategy.retrieve(a.snapshot);this.routeReuseStrategy.store(a.snapshot,null),e.children.onOutletReAttached(t.contexts),e.attachRef=t.componentRef,e.route=t.route.value,e.outlet&&e.outlet.attach(t.componentRef,t.route.value),he(t.route)}else{const n=function(t){for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig;if(t&&t.component)return null}return null}(a.snapshot),r=n?n.module.componentFactoryResolver:null;e.attachRef=null,e.route=a,e.resolver=r,e.outlet&&e.outlet.activateWith(a,r),this.activateChildRoutes(t,null,e.children)}}else this.activateChildRoutes(t,null,n)}}function he(t){Xt(t.value),t.children.forEach(he)}function ge(t){return"function"==typeof t}function pe(t){return t instanceof xt}class be{constructor(t){this.segmentGroup=t||null}}class me{constructor(t){this.urlTree=t}}function ye(t){return new o.a(e=>e.error(new be(t)))}function ve(t){return new o.a(e=>e.error(new me(t)))}function xe(t){return new o.a(e=>e.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${t}'`)))}class _e{constructor(t,e,n,a,i){this.configLoader=e,this.urlSerializer=n,this.urlTree=a,this.config=i,this.allowRedirects=!0,this.ngModule=t.get(r.NgModuleRef)}apply(){return this.expandSegmentGroup(this.ngModule,this.config,this.urlTree.root,"primary").pipe(Object(_.a)(t=>this.createUrlTree(t,this.urlTree.queryParams,this.urlTree.fragment))).pipe(Object(O.a)(t=>{if(t instanceof me)return this.allowRedirects=!1,this.match(t.urlTree);if(t instanceof be)throw this.noMatchError(t);throw t}))}match(t){return this.expandSegmentGroup(this.ngModule,this.config,t.root,"primary").pipe(Object(_.a)(e=>this.createUrlTree(e,t.queryParams,t.fragment))).pipe(Object(O.a)(t=>{if(t instanceof be)throw this.noMatchError(t);throw t}))}noMatchError(t){return new Error(`Cannot match any routes. URL Segment: '${t.segmentGroup}'`)}createUrlTree(t,e,n){const a=t.segments.length>0?new _t([],{primary:t}):t;return new xt(a,e,n)}expandSegmentGroup(t,e,n,a){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(Object(_.a)(t=>new _t([],t))):this.expandSegment(t,n,e,n.segments,a,!0)}expandChildren(t,e,n){return function(t,e){if(0===Object.keys(t).length)return Object(i.a)({});const n=[],a=[],r={};return mt(t,(t,i)=>{const s=e(i,t).pipe(Object(_.a)(t=>r[i]=t));"primary"===i?n.push(s):a.push(s)}),i.a.apply(null,n.concat(a)).pipe(Object(T.a)(),Object(w.a)(),Object(_.a)(()=>r))}(n.children,(n,a)=>this.expandSegmentGroup(t,e,a,n))}expandSegment(t,e,n,a,r,s){return Object(i.a)(...n).pipe(Object(_.a)(u=>this.expandSegmentAgainstRoute(t,e,n,u,a,r,s).pipe(Object(O.a)(t=>{if(t instanceof be)return Object(i.a)(null);throw t}))),Object(T.a)(),Object(S.a)(t=>!!t),Object(O.a)((t,n)=>{if(t instanceof l.a||"EmptyError"===t.name){if(this.noLeftoversInUrl(e,a,r))return Object(i.a)(new _t([],{}));throw new be(e)}throw t}))}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}expandSegmentAgainstRoute(t,e,n,a,r,i,s){return Se(a)!==i?ye(e):void 0===a.redirectTo?this.matchSegmentAgainstRoute(t,e,a,r):s&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i):ye(e)}expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i){return"**"===a.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,a,i):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i)}expandWildCardWithParamsAgainstRouteUsingRedirect(t,e,n,a){const r=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?ve(r):this.lineralizeSegments(n,r).pipe(Object(I.a)(n=>{const r=new _t(n,{});return this.expandSegment(t,r,e,n,a,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i){const{matched:s,consumedSegments:u,lastChild:o,positionalParamSegments:l}=Te(e,a,r);if(!s)return ye(e);const d=this.applyRedirectCommands(u,a.redirectTo,l);return a.redirectTo.startsWith("/")?ve(d):this.lineralizeSegments(a,d).pipe(Object(I.a)(a=>this.expandSegment(t,e,n,a.concat(r.slice(o)),i,!1)))}matchSegmentAgainstRoute(t,e,n,a){if("**"===n.path)return n.loadChildren?this.configLoader.load(t.injector,n).pipe(Object(_.a)(t=>(n._loadedConfig=t,new _t(a,{})))):Object(i.a)(new _t(a,{}));const{matched:r,consumedSegments:s,lastChild:u}=Te(e,n,a);if(!r)return ye(e);const o=a.slice(u);return this.getChildConfig(t,n,a).pipe(Object(I.a)(t=>{const n=t.module,a=t.routes,{segmentGroup:r,slicedSegments:u}=function(t,e,n,a){return n.length>0&&function(t,e,n){return n.some(n=>Oe(t,e,n)&&"primary"!==Se(n))}(t,n,a)?{segmentGroup:we(new _t(e,function(t,e){const n={};n.primary=e;for(const a of t)""===a.path&&"primary"!==Se(a)&&(n[Se(a)]=new _t([],{}));return n}(a,new _t(n,t.children)))),slicedSegments:[]}:0===n.length&&function(t,e,n){return n.some(n=>Oe(t,e,n))}(t,n,a)?{segmentGroup:we(new _t(t.segments,function(t,e,n,a){const r={};for(const i of n)Oe(t,e,i)&&!a[Se(i)]&&(r[Se(i)]=new _t([],{}));return Object.assign({},a,r)}(t,n,a,t.children))),slicedSegments:n}:{segmentGroup:t,slicedSegments:n}}(e,s,o,a);return 0===u.length&&r.hasChildren()?this.expandChildren(n,a,r).pipe(Object(_.a)(t=>new _t(s,t))):0===a.length&&0===u.length?Object(i.a)(new _t(s,{})):this.expandSegment(n,r,a,u,"primary",!0).pipe(Object(_.a)(t=>new _t(s.concat(t.segments),t.children)))}))}getChildConfig(t,e,n){return e.children?Object(i.a)(new lt(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?Object(i.a)(e._loadedConfig):function(t,e,n){const a=e.canLoad;return a&&0!==a.length?Object(s.a)(a).pipe(Object(_.a)(a=>{const r=t.get(a);let i;if(function(t){return t&&ge(t.canLoad)}(r))i=r.canLoad(e,n);else{if(!ge(r))throw new Error("Invalid CanLoad guard");i=r(e,n)}return yt(i)})).pipe(Object(T.a)(),(r=t=>!0===t,t=>t.lift(new C(r,void 0,t)))):Object(i.a)(!0);var r}(t.injector,e,n).pipe(Object(I.a)(n=>n?this.configLoader.load(t.injector,e).pipe(Object(_.a)(t=>(e._loadedConfig=t,t))):function(t){return new o.a(e=>e.error(ut(`Cannot load children because the guard of the route "path: '${t.path}'" returned false`)))}(e))):Object(i.a)(new lt([],t))}lineralizeSegments(t,e){let n=[],a=e.root;for(;;){if(n=n.concat(a.segments),0===a.numberOfChildren)return Object(i.a)(n);if(a.numberOfChildren>1||!a.children.primary)return xe(t.redirectTo);a=a.children.primary}}applyRedirectCommands(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)}applyRedirectCreatreUrlTree(t,e,n,a){const r=this.createSegmentGroup(t,e.root,n,a);return new xt(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(t,e){const n={};return mt(t,(t,a)=>{if("string"==typeof t&&t.startsWith(":")){const r=t.substring(1);n[a]=e[r]}else n[a]=t}),n}createSegmentGroup(t,e,n,a){const r=this.createSegments(t,e.segments,n,a);let i={};return mt(e.children,(e,r)=>{i[r]=this.createSegmentGroup(t,e,n,a)}),new _t(r,i)}createSegments(t,e,n,a){return e.map(e=>e.path.startsWith(":")?this.findPosParam(t,e,a):this.findOrReturn(e,n))}findPosParam(t,e,n){const a=n[e.path.substring(1)];if(!a)throw new Error(`Cannot redirect to '${t}'. Cannot find '${e.path}'.`);return a}findOrReturn(t,e){let n=0;for(const a of e){if(a.path===t.path)return e.splice(n),a;n++}return t}}function Te(t,e,n){if(""===e.path)return"full"===e.pathMatch&&(t.hasChildren()||n.length>0)?{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}:{matched:!0,consumedSegments:[],lastChild:0,positionalParamSegments:{}};const a=(e.matcher||ot)(n,t,e);return a?{matched:!0,consumedSegments:a.consumed,lastChild:a.consumed.length,positionalParamSegments:a.posParams}:{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}}function we(t){if(1===t.numberOfChildren&&t.children.primary){const e=t.children.primary;return new _t(t.segments.concat(e.segments),e.children)}return t}function Oe(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0!==n.redirectTo}function Se(t){return t.outlet||"primary"}class Ie{constructor(t){this.path=t,this.route=this.path[this.path.length-1]}}class Ne{constructor(t,e){this.component=t,this.route=e}}function Ce(t,e,n){const a=t._root;return function t(e,n,a,r,i={canDeactivateChecks:[],canActivateChecks:[]}){const s=Yt(n);return e.children.forEach(e=>{!function(e,n,a,r,i={canDeactivateChecks:[],canActivateChecks:[]}){const s=e.value,u=n?n.value:null,o=a?a.getContext(e.value.outlet):null;if(u&&s.routeConfig===u.routeConfig){const l=function(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!wt(t.url,e.url);case"pathParamsOrQueryParamsChange":return!wt(t.url,e.url)||!gt(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!te(t,e)||!gt(t.queryParams,e.queryParams);case"paramsChange":default:return!te(t,e)}}(u,s,s.routeConfig.runGuardsAndResolvers);l?i.canActivateChecks.push(new Ie(r)):(s.data=u.data,s._resolvedData=u._resolvedData),t(e,n,s.component?o?o.children:null:a,r,i),l&&i.canDeactivateChecks.push(new Ne(o&&o.outlet&&o.outlet.component||null,u))}else u&&Ae(n,o,i),i.canActivateChecks.push(new Ie(r)),t(e,null,s.component?o?o.children:null:a,r,i)}(e,s[e.value.outlet],a,r.concat([e.value]),i),delete s[e.value.outlet]}),mt(s,(t,e)=>Ae(t,a.getContext(e),i)),i}(a,e?e._root:null,n,[a.value])}function Re(t,e,n){const a=function(t){if(!t)return null;for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig}return null}(e);return(a?a.module.injector:n).get(t)}function Ae(t,e,n){const a=Yt(t),r=t.value;mt(a,(t,a)=>{Ae(t,r.component?e?e.children.getContext(a):null:e,n)}),n.canDeactivateChecks.push(new Ne(r.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,r))}const ke=Symbol("INITIAL_VALUE");function Ee(){return Object(A.a)(t=>function(...t){let e=null,n=null;return Object(d.a)(t[t.length-1])&&(n=t.pop()),"function"==typeof t[t.length-1]&&(e=t.pop()),1===t.length&&Object(c.a)(t[0])&&(t=t[0]),Object(g.a)(t,n).lift(new b(e))}(...t.map(t=>t.pipe(Object(k.a)(1),function(...t){const e=t[t.length-1];return Object(d.a)(e)?(t.pop(),n=>Object(E.a)(t,n,e)):e=>Object(E.a)(t,e)}(ke)))).pipe(Object(L.a)((t,e)=>{let n=!1;return e.reduce((t,a,r)=>{if(t!==ke)return t;if(a===ke&&(n=!0),!n){if(!1===a)return a;if(r===e.length-1||pe(a))return a}return t},t)},ke),Object(D.a)(t=>t!==ke),Object(_.a)(t=>pe(t)?t:!0===t),Object(k.a)(1)))}function Le(t,e){return null!==t&&e&&e(new et(t)),Object(i.a)(!0)}function De(t,e){return null!==t&&e&&e(new X(t)),Object(i.a)(!0)}function Pe(t,e,n){const a=e.routeConfig?e.routeConfig.canActivate:null;if(!a||0===a.length)return Object(i.a)(!0);const r=a.map(a=>v(()=>{const r=Re(a,e,n);let i;if(function(t){return t&&ge(t.canActivate)}(r))i=yt(r.canActivate(e,t));else{if(!ge(r))throw new Error("Invalid CanActivate guard");i=yt(r(e,t))}return i.pipe(Object(S.a)())}));return Object(i.a)(r).pipe(Ee())}function Me(t,e,n){const a=e[e.length-1],r=e.slice(0,e.length-1).reverse().map(t=>function(t){const e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)).filter(t=>null!==t).map(e=>v(()=>{const r=e.guards.map(r=>{const i=Re(r,e.node,n);let s;if(function(t){return t&&ge(t.canActivateChild)}(i))s=yt(i.canActivateChild(a,t));else{if(!ge(i))throw new Error("Invalid CanActivateChild guard");s=yt(i(a,t))}return s.pipe(Object(S.a)())});return Object(i.a)(r).pipe(Ee())}));return Object(i.a)(r).pipe(Ee())}class qe{}class je{constructor(t,e,n,a,r,i){this.rootComponentType=t,this.config=e,this.urlTree=n,this.url=a,this.paramsInheritanceStrategy=r,this.relativeLinkResolution=i}recognize(){try{const t=Ge(this.urlTree.root,[],[],this.config,this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,"primary"),n=new $t([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},"primary",this.rootComponentType,null,this.urlTree.root,-1,{}),a=new zt(n,e),r=new Jt(this.url,a);return this.inheritParamsAndData(r._root),Object(i.a)(r)}catch(t){return new o.a(e=>e.error(t))}}inheritParamsAndData(t){const e=t.value,n=Kt(e,this.paramsInheritanceStrategy);e.params=Object.freeze(n.params),e.data=Object.freeze(n.data),t.children.forEach(t=>this.inheritParamsAndData(t))}processSegmentGroup(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)}processChildren(t,e){const n=Ot(e,(e,n)=>this.processSegmentGroup(t,e,n));return function(t){const e={};t.forEach(t=>{const n=e[t.value.outlet];if(n){const e=n.url.map(t=>t.toString()).join("/"),a=t.value.url.map(t=>t.toString()).join("/");throw new Error(`Two segments cannot have the same outlet name: '${e}' and '${a}'.`)}e[t.value.outlet]=t.value})}(n),n.sort((t,e)=>"primary"===t.value.outlet?-1:"primary"===e.value.outlet?1:t.value.outlet.localeCompare(e.value.outlet)),n}processSegment(t,e,n,a){for(const i of t)try{return this.processSegmentAgainstRoute(i,e,n,a)}catch(r){if(!(r instanceof qe))throw r}if(this.noLeftoversInUrl(e,n,a))return[];throw new qe}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}processSegmentAgainstRoute(t,e,n,a){if(t.redirectTo)throw new qe;if((t.outlet||"primary")!==a)throw new qe;let r,i=[],s=[];if("**"===t.path){const i=n.length>0?bt(n).parameters:{};r=new $t(n,i,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Ye(t),a,t.component,t,Fe(e),Ve(e)+n.length,He(t))}else{const u=function(t,e,n){if(""===e.path){if("full"===e.pathMatch&&(t.hasChildren()||n.length>0))throw new qe;return{consumedSegments:[],lastChild:0,parameters:{}}}const a=(e.matcher||ot)(n,t,e);if(!a)throw new qe;const r={};mt(a.posParams,(t,e)=>{r[e]=t.path});const i=a.consumed.length>0?Object.assign({},r,a.consumed[a.consumed.length-1].parameters):r;return{consumedSegments:a.consumed,lastChild:a.consumed.length,parameters:i}}(e,t,n);i=u.consumedSegments,s=n.slice(u.lastChild),r=new $t(i,u.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Ye(t),a,t.component,t,Fe(e),Ve(e)+i.length,He(t))}const u=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),{segmentGroup:o,slicedSegments:l}=Ge(e,i,s,u,this.relativeLinkResolution);if(0===l.length&&o.hasChildren()){const t=this.processChildren(u,o);return[new zt(r,t)]}if(0===u.length&&0===l.length)return[new zt(r,[])];const d=this.processSegment(u,o,l,"primary");return[new zt(r,d)]}}function Fe(t){let e=t;for(;e._sourceSegment;)e=e._sourceSegment;return e}function Ve(t){let e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;for(;e._sourceSegment;)e=e._sourceSegment,n+=e._segmentIndexShift?e._segmentIndexShift:0;return n-1}function Ge(t,e,n,a,r){if(n.length>0&&function(t,e,n){return n.some(n=>Be(t,e,n)&&"primary"!==ze(n))}(t,n,a)){const r=new _t(e,function(t,e,n,a){const r={};r.primary=a,a._sourceSegment=t,a._segmentIndexShift=e.length;for(const i of n)if(""===i.path&&"primary"!==ze(i)){const n=new _t([],{});n._sourceSegment=t,n._segmentIndexShift=e.length,r[ze(i)]=n}return r}(t,e,a,new _t(n,t.children)));return r._sourceSegment=t,r._segmentIndexShift=e.length,{segmentGroup:r,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return n.some(n=>Be(t,e,n))}(t,n,a)){const i=new _t(t.segments,function(t,e,n,a,r,i){const s={};for(const u of a)if(Be(t,n,u)&&!r[ze(u)]){const n=new _t([],{});n._sourceSegment=t,n._segmentIndexShift="legacy"===i?t.segments.length:e.length,s[ze(u)]=n}return Object.assign({},r,s)}(t,e,n,a,t.children,r));return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}const i=new _t(t.segments,t.children);return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}function Be(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0===n.redirectTo}function ze(t){return t.outlet||"primary"}function Ye(t){return t.data||{}}function He(t){return t.resolve||{}}function Ue(t,e,n,a){const r=Re(t,e,a);return yt(r.resolve?r.resolve(e,n):r(e,n))}function We(t){return function(e){return e.pipe(Object(A.a)(e=>{const n=t(e);return n?Object(s.a)(n).pipe(Object(_.a)(()=>e)):Object(s.a)([e])}))}}class Ke{}class $e{shouldDetach(t){return!1}store(t,e){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,e){return t.routeConfig===e.routeConfig}}const Je=new r.InjectionToken("ROUTES");class Ze{constructor(t,e,n,a){this.loader=t,this.compiler=e,this.onLoadStartListener=n,this.onLoadEndListener=a}load(t,e){return this.onLoadStartListener&&this.onLoadStartListener(e),this.loadModuleFactory(e.loadChildren).pipe(Object(_.a)(n=>{this.onLoadEndListener&&this.onLoadEndListener(e);const a=n.create(t);return new lt(pt(a.injector.get(Je)).map(ht),a)}))}loadModuleFactory(t){return"string"==typeof t?Object(s.a)(this.loader.load(t)):yt(t()).pipe(Object(I.a)(t=>t instanceof r.NgModuleFactory?Object(i.a)(t):Object(s.a)(this.compiler.compileModuleAsync(t))))}}class Qe{}class Xe{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,e){return t}}function tn(t){throw t}function en(t,e,n){return e.parse("/")}function nn(t,e){return Object(i.a)(null)}class an{constructor(t,e,n,a,i,s,o,l){this.rootComponentType=t,this.urlSerializer=e,this.rootContexts=n,this.location=a,this.config=l,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.navigationId=0,this.isNgZoneEnabled=!1,this.events=new x.a,this.errorHandler=tn,this.malformedUriErrorHandler=en,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:nn,afterPreactivation:nn},this.urlHandlingStrategy=new Xe,this.routeReuseStrategy=new $e,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="legacy",this.ngModule=i.get(r.NgModuleRef),this.console=i.get(r["ɵConsole"]);const d=i.get(r.NgZone);this.isNgZoneEnabled=d instanceof r.NgZone,this.resetConfig(l),this.currentUrlTree=new xt(new _t([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new Ze(s,o,t=>this.triggerEvent(new Z(t)),t=>this.triggerEvent(new Q(t))),this.routerState=Ut(this.currentUrlTree,this.rootComponentType),this.transitions=new u.a({id:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}setupNavigations(t){const e=this.events;return t.pipe(Object(D.a)(t=>0!==t.id),Object(_.a)(t=>Object.assign({},t,{extractedUrl:this.urlHandlingStrategy.extract(t.rawUrl)})),Object(A.a)(t=>{let n=!1,a=!1;return Object(i.a)(t).pipe(Object(q.a)(t=>{this.currentNavigation={id:t.id,initialUrl:t.currentRawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:this.lastSuccessfulNavigation?Object.assign({},this.lastSuccessfulNavigation,{previousNavigation:null}):null}}),Object(A.a)(t=>{const n=!this.navigated||t.extractedUrl.toString()!==this.browserUrlTree.toString();if(("reload"===this.onSameUrlNavigation||n)&&this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return Object(i.a)(t).pipe(Object(A.a)(t=>{const n=this.transitions.getValue();return e.next(new B(t.id,this.serializeUrl(t.extractedUrl),t.source,t.restoredState)),n!==this.transitions.getValue()?y.a:[t]}),Object(A.a)(t=>Promise.resolve(t)),(a=this.ngModule.injector,r=this.configLoader,s=this.urlSerializer,u=this.config,function(t){return t.pipe(Object(A.a)(t=>function(t,e,n,a,r){return new _e(t,e,n,a,r).apply()}(a,r,s,t.extractedUrl,u).pipe(Object(_.a)(e=>Object.assign({},t,{urlAfterRedirects:e})))))}),Object(q.a)(t=>{this.currentNavigation=Object.assign({},this.currentNavigation,{finalUrl:t.urlAfterRedirects})}),function(t,e,n,a,r){return function(i){return i.pipe(Object(I.a)(i=>function(t,e,n,a,r="emptyOnly",i="legacy"){return new je(t,e,n,a,r,i).recognize()}(t,e,i.urlAfterRedirects,n(i.urlAfterRedirects),a,r).pipe(Object(_.a)(t=>Object.assign({},i,{targetSnapshot:t})))))}}(this.rootComponentType,this.config,t=>this.serializeUrl(t),this.paramsInheritanceStrategy,this.relativeLinkResolution),Object(q.a)(t=>{"eager"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),Object(q.a)(t=>{const n=new U(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.next(n)}));var a,r,s,u;if(n&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:n,extractedUrl:a,source:r,restoredState:s,extras:u}=t,o=new B(n,this.serializeUrl(a),r,s);e.next(o);const l=Ut(a,this.rootComponentType).snapshot;return Object(i.a)(Object.assign({},t,{targetSnapshot:l,urlAfterRedirects:a,extras:Object.assign({},u,{skipLocationChange:!1,replaceUrl:!1})}))}return this.rawUrlTree=t.rawUrl,this.browserUrlTree=t.urlAfterRedirects,t.resolve(null),y.a}),We(t=>{const{targetSnapshot:e,id:n,extractedUrl:a,rawUrl:r,extras:{skipLocationChange:i,replaceUrl:s}}=t;return this.hooks.beforePreactivation(e,{navigationId:n,appliedUrlTree:a,rawUrlTree:r,skipLocationChange:!!i,replaceUrl:!!s})}),Object(q.a)(t=>{const e=new W(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),Object(_.a)(t=>Object.assign({},t,{guards:Ce(t.targetSnapshot,t.currentSnapshot,this.rootContexts)})),function(t,e){return function(n){return n.pipe(Object(I.a)(n=>{const{targetSnapshot:a,currentSnapshot:r,guards:{canActivateChecks:u,canDeactivateChecks:o}}=n;return 0===o.length&&0===u.length?Object(i.a)(Object.assign({},n,{guardsResult:!0})):function(t,e,n,a){return Object(s.a)(t).pipe(Object(I.a)(t=>function(t,e,n,a,r){const s=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!s||0===s.length)return Object(i.a)(!0);const u=s.map(i=>{const s=Re(i,e,r);let u;if(function(t){return t&&ge(t.canDeactivate)}(s))u=yt(s.canDeactivate(t,e,n,a));else{if(!ge(s))throw new Error("Invalid CanDeactivate guard");u=yt(s(t,e,n,a))}return u.pipe(Object(S.a)())});return Object(i.a)(u).pipe(Ee())}(t.component,t.route,n,e,a)),Object(S.a)(t=>!0!==t,!0))}(o,a,r,t).pipe(Object(I.a)(n=>n&&"boolean"==typeof n?function(t,e,n,a){return Object(s.a)(e).pipe(Object(P.a)(e=>Object(s.a)([De(e.route.parent,a),Le(e.route,a),Me(t,e.path,n),Pe(t,e.route,n)]).pipe(Object(T.a)(),Object(S.a)(t=>!0!==t,!0))),Object(S.a)(t=>!0!==t,!0))}(a,u,t,e):Object(i.a)(n)),Object(_.a)(t=>Object.assign({},n,{guardsResult:t})))}))}}(this.ngModule.injector,t=>this.triggerEvent(t)),Object(q.a)(t=>{if(pe(t.guardsResult)){const e=ut(`Redirecting to "${this.serializeUrl(t.guardsResult)}"`);throw e.url=t.guardsResult,e}}),Object(q.a)(t=>{const e=new K(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);this.triggerEvent(e)}),Object(D.a)(t=>{if(!t.guardsResult){this.resetUrlToCurrentUrlTree();const n=new Y(t.id,this.serializeUrl(t.extractedUrl),"");return e.next(n),t.resolve(!1),!1}return!0}),We(t=>{if(t.guards.canActivateChecks.length)return Object(i.a)(t).pipe(Object(q.a)(t=>{const e=new $(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),(e=this.paramsInheritanceStrategy,n=this.ngModule.injector,function(t){return t.pipe(Object(I.a)(t=>{const{targetSnapshot:a,guards:{canActivateChecks:r}}=t;return r.length?Object(s.a)(r).pipe(Object(P.a)(t=>function(t,e,n,a){return function(t,e,n,a){const r=Object.keys(t);if(0===r.length)return Object(i.a)({});if(1===r.length){const i=r[0];return Ue(t[i],e,n,a).pipe(Object(_.a)(t=>({[i]:t})))}const u={};return Object(s.a)(r).pipe(Object(I.a)(r=>Ue(t[r],e,n,a).pipe(Object(_.a)(t=>(u[r]=t,t))))).pipe(Object(w.a)(),Object(_.a)(()=>u))}(t._resolve,t,e,a).pipe(Object(_.a)(e=>(t._resolvedData=e,t.data=Object.assign({},t.data,Kt(t,n).resolve),null)))}(t.route,a,e,n)),Object(M.a)((t,e)=>t),Object(_.a)(e=>t)):Object(i.a)(t)}))}),Object(q.a)(t=>{const e=new J(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}));var e,n}),We(t=>{const{targetSnapshot:e,id:n,extractedUrl:a,rawUrl:r,extras:{skipLocationChange:i,replaceUrl:s}}=t;return this.hooks.afterPreactivation(e,{navigationId:n,appliedUrlTree:a,rawUrlTree:r,skipLocationChange:!!i,replaceUrl:!!s})}),Object(_.a)(t=>{const e=function(t,e,n){const a=function t(e,n,a){if(a&&e.shouldReuseRoute(n.value,a.value.snapshot)){const r=a.value;r._futureSnapshot=n.value;const i=function(e,n,a){return n.children.map(n=>{for(const r of a.children)if(e.shouldReuseRoute(r.value.snapshot,n.value))return t(e,n,r);return t(e,n)})}(e,n,a);return new zt(r,i)}{const a=e.retrieve(n.value);if(a){const t=a.route;return function t(e,n){if(e.value.routeConfig!==n.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(e.children.length!==n.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");n.value._futureSnapshot=e.value;for(let a=0;a<e.children.length;++a)t(e.children[a],n.children[a])}(n,t),t}{const a=new Wt(new u.a((r=n.value).url),new u.a(r.params),new u.a(r.queryParams),new u.a(r.fragment),new u.a(r.data),r.outlet,r.component,r),i=n.children.map(n=>t(e,n));return new zt(a,i)}}var r}(t,e._root,n?n._root:void 0);return new Ht(a,e)}(this.routeReuseStrategy,t.targetSnapshot,t.currentRouterState);return Object.assign({},t,{targetRouterState:e})}),Object(q.a)(t=>{this.currentUrlTree=t.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl),this.routerState=t.targetRouterState,"deferred"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),(r=this.rootContexts,o=this.routeReuseStrategy,l=t=>this.triggerEvent(t),Object(_.a)(t=>(new fe(o,t.targetRouterState,t.currentRouterState,l).activate(r),t))),Object(q.a)({next(){n=!0},complete(){n=!0}}),Object(j.a)(()=>{if(!n&&!a){this.resetUrlToCurrentUrlTree();const n=new Y(t.id,this.serializeUrl(t.extractedUrl),`Navigation ID ${t.id} is not equal to the current navigation id ${this.navigationId}`);e.next(n),t.resolve(!1)}this.currentNavigation=null}),Object(O.a)(n=>{if(a=!0,(r=n)&&r.ngNavigationCancelingError){const a=pe(n.url);a||(this.navigated=!0,this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl));const r=new Y(t.id,this.serializeUrl(t.extractedUrl),n.message);e.next(r),t.resolve(!1),a&&this.navigateByUrl(n.url)}else{this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl);const a=new H(t.id,this.serializeUrl(t.extractedUrl),n);e.next(a);try{t.resolve(this.errorHandler(n))}catch(i){t.reject(i)}}var r;return y.a}));var r,o,l}))}resetRootComponentType(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType}getTransition(){const t=this.transitions.value;return t.urlAfterRedirects=this.browserUrlTree,t}setTransition(t){this.transitions.next(Object.assign({},this.getTransition(),t))}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(t=>{let e=this.parseUrl(t.url);const n="popstate"===t.type?"popstate":"hashchange",a=t.state&&t.state.navigationId?t.state:null;setTimeout(()=>{this.scheduleNavigation(e,n,a,{replaceUrl:!0})},0)}))}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(t){this.events.next(t)}resetConfig(t){dt(t),this.config=t.map(ht),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=null)}createUrlTree(t,e={}){const{relativeTo:n,queryParams:a,fragment:i,preserveQueryParams:s,queryParamsHandling:u,preserveFragment:o}=e;Object(r.isDevMode)()&&s&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead.");const l=n||this.routerState.root,d=o?this.currentUrlTree.fragment:i;let c=null;if(u)switch(u){case"merge":c=Object.assign({},this.currentUrlTree.queryParams,a);break;case"preserve":c=this.currentUrlTree.queryParams;break;default:c=a||null}else c=s?this.currentUrlTree.queryParams:a||null;return null!==c&&(c=this.removeEmptyProps(c)),function(t,e,n,a,r){if(0===n.length)return ne(e.root,e.root,e,a,r);const i=function(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new ae(!0,0,t);let e=0,n=!1;const a=t.reduce((t,a,r)=>{if("object"==typeof a&&null!=a){if(a.outlets){const e={};return mt(a.outlets,(t,n)=>{e[n]="string"==typeof t?t.split("/"):t}),[...t,{outlets:e}]}if(a.segmentPath)return[...t,a.segmentPath]}return"string"!=typeof a?[...t,a]:0===r?(a.split("/").forEach((a,r)=>{0==r&&"."===a||(0==r&&""===a?n=!0:".."===a?e++:""!=a&&t.push(a))}),t):[...t,a]},[]);return new ae(n,e,a)}(n);if(i.toRoot())return ne(e.root,new _t([],{}),e,a,r);const s=function(t,e,n){if(t.isAbsolute)return new re(e.root,!0,0);if(-1===n.snapshot._lastPathIndex)return new re(n.snapshot._urlSegment,!0,0);const a=ee(t.commands[0])?0:1;return function(t,e,n){let a=t,r=e,i=n;for(;i>r;){if(i-=r,a=a.parent,!a)throw new Error("Invalid number of '../'");r=a.segments.length}return new re(a,!1,r-i)}(n.snapshot._urlSegment,n.snapshot._lastPathIndex+a,t.numberOfDoubleDots)}(i,e,t),u=s.processChildren?ue(s.segmentGroup,s.index,i.commands):se(s.segmentGroup,s.index,i.commands);return ne(s.segmentGroup,u,e,a,r)}(l,this.currentUrlTree,t,c,d)}navigateByUrl(t,e={skipLocationChange:!1}){Object(r.isDevMode)()&&this.isNgZoneEnabled&&!r.NgZone.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?");const n=pe(t)?t:this.parseUrl(t),a=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(a,"imperative",null,e)}navigate(t,e={skipLocationChange:!1}){return function(t){for(let e=0;e<t.length;e++){const n=t[e];if(null==n)throw new Error(`The requested path contains ${n} segment at index ${e}`)}}(t),this.navigateByUrl(this.createUrlTree(t,e),e)}serializeUrl(t){return this.urlSerializer.serialize(t)}parseUrl(t){let e;try{e=this.urlSerializer.parse(t)}catch(n){e=this.malformedUriErrorHandler(n,this.urlSerializer,t)}return e}isActive(t,e){if(pe(t))return vt(this.currentUrlTree,t,e);const n=this.parseUrl(t);return vt(this.currentUrlTree,n,e)}removeEmptyProps(t){return Object.keys(t).reduce((e,n)=>{const a=t[n];return null!=a&&(e[n]=a),e},{})}processNavigations(){this.navigations.subscribe(t=>{this.navigated=!0,this.lastSuccessfulId=t.id,this.events.next(new z(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,this.currentNavigation=null,t.resolve(!0)},t=>{this.console.warn("Unhandled Navigation Error: ")})}scheduleNavigation(t,e,n,a){const r=this.getTransition();if(r&&"imperative"!==e&&"imperative"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(r&&"hashchange"==e&&"popstate"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(r&&"popstate"==e&&"hashchange"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);let i=null,s=null;const u=new Promise((t,e)=>{i=t,s=e}),o=++this.navigationId;return this.setTransition({id:o,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:a,resolve:i,reject:s,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(t=>Promise.reject(t))}setBrowserUrl(t,e,n,a){const r=this.urlSerializer.serialize(t);a=a||{},this.location.isCurrentPathEqualTo(r)||e?this.location.replaceState(r,"",Object.assign({},a,{navigationId:n})):this.location.go(r,"",Object.assign({},a,{navigationId:n}))}resetStateAndUrl(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})}}class rn{constructor(t,e,n,a,r){this.router=t,this.route=e,this.commands=[],null==n&&a.setAttribute(r.nativeElement,"tabindex","0")}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){Object(r.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated!, use queryParamsHandling instead."),this.preserve=t}onClick(){const t={skipLocationChange:un(this.skipLocationChange),replaceUrl:un(this.replaceUrl)};return this.router.navigateByUrl(this.urlTree,t),!0}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:un(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:un(this.preserveFragment)})}}class sn{constructor(t,e,n){this.router=t,this.route=e,this.locationStrategy=n,this.commands=[],this.subscription=t.events.subscribe(t=>{t instanceof z&&this.updateTargetUrlAndHref()})}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){Object(r.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead."),this.preserve=t}ngOnChanges(t){this.updateTargetUrlAndHref()}ngOnDestroy(){this.subscription.unsubscribe()}onClick(t,e,n,a){if(0!==t||e||n||a)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0;const r={skipLocationChange:un(this.skipLocationChange),replaceUrl:un(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,r),!1}updateTargetUrlAndHref(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:un(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:un(this.preserveFragment)})}}function un(t){return""===t||!!t}class on{constructor(t,e,n,a,r){this.router=t,this.element=e,this.renderer=n,this.link=a,this.linkWithHref=r,this.classes=[],this.isActive=!1,this.routerLinkActiveOptions={exact:!1},this.subscription=t.events.subscribe(t=>{t instanceof z&&this.update()})}ngAfterContentInit(){this.links.changes.subscribe(t=>this.update()),this.linksWithHrefs.changes.subscribe(t=>this.update()),this.update()}set routerLinkActive(t){const e=Array.isArray(t)?t:t.split(" ");this.classes=e.filter(t=>!!t)}ngOnChanges(t){this.update()}ngOnDestroy(){this.subscription.unsubscribe()}update(){this.links&&this.linksWithHrefs&&this.router.navigated&&Promise.resolve().then(()=>{const t=this.hasActiveLinks();this.isActive!==t&&(this.isActive=t,this.classes.forEach(e=>{t?this.renderer.addClass(this.element.nativeElement,e):this.renderer.removeClass(this.element.nativeElement,e)}))})}isLinkActive(t){return e=>t.isActive(e.urlTree,this.routerLinkActiveOptions.exact)}hasActiveLinks(){const t=this.isLinkActive(this.router);return this.link&&t(this.link)||this.linkWithHref&&t(this.linkWithHref)||this.links.some(t)||this.linksWithHrefs.some(t)}}class ln{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.children=new dn,this.attachRef=null}}class dn{constructor(){this.contexts=new Map}onChildOutletCreated(t,e){const n=this.getOrCreateContext(t);n.outlet=e,this.contexts.set(t,n)}onChildOutletDestroyed(t){const e=this.getContext(t);e&&(e.outlet=null)}onOutletDeactivated(){const t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let e=this.getContext(t);return e||(e=new ln,this.contexts.set(t,e)),e}getContext(t){return this.contexts.get(t)||null}}class cn{constructor(t,e,n,a,i){this.parentContexts=t,this.location=e,this.resolver=n,this.changeDetector=i,this.activated=null,this._activatedRoute=null,this.activateEvents=new r.EventEmitter,this.deactivateEvents=new r.EventEmitter,this.name=a||"primary",t.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.resolver||null))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();const t=this.activated;return this.activated=null,this._activatedRoute=null,t}attach(t,e){this.activated=t,this._activatedRoute=e,this.location.insert(t.hostView)}deactivate(){if(this.activated){const t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,e){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=t;const n=(e=e||this.resolver).resolveComponentFactory(t._futureSnapshot.routeConfig.component),a=this.parentContexts.getOrCreateContext(this.name).children,r=new fn(t,a,this.location.injector);this.activated=this.location.createComponent(n,this.location.length,r),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}class fn{constructor(t,e,n){this.route=t,this.childContexts=e,this.parent=n}get(t,e){return t===Wt?this.route:t===dn?this.childContexts:this.parent.get(t,e)}}class hn{}class gn{preload(t,e){return e().pipe(Object(O.a)(()=>Object(i.a)(null)))}}class pn{preload(t,e){return Object(i.a)(null)}}class bn{constructor(t,e,n,a,r){this.router=t,this.injector=a,this.preloadingStrategy=r,this.loader=new Ze(e,n,e=>t.triggerEvent(new Z(e)),e=>t.triggerEvent(new Q(e)))}setUpPreloading(){this.subscription=this.router.events.pipe(Object(D.a)(t=>t instanceof z),Object(P.a)(()=>this.preload())).subscribe(()=>{})}preload(){const t=this.injector.get(r.NgModuleRef);return this.processRoutes(t,this.router.config)}ngOnDestroy(){this.subscription.unsubscribe()}processRoutes(t,e){const n=[];for(const a of e)if(a.loadChildren&&!a.canLoad&&a._loadedConfig){const t=a._loadedConfig;n.push(this.processRoutes(t.module,t.routes))}else a.loadChildren&&!a.canLoad?n.push(this.preloadConfig(t,a)):a.children&&n.push(this.processRoutes(t,a.children));return Object(s.a)(n).pipe(Object(F.a)(),Object(_.a)(t=>{}))}preloadConfig(t,e){return this.preloadingStrategy.preload(e,()=>this.loader.load(t.injector,e).pipe(Object(I.a)(t=>(e._loadedConfig=t,this.processRoutes(t.module,t.routes)))))}}class mn{constructor(t,e,n={}){this.router=t,this.viewportScroller=e,this.options=n,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},n.scrollPositionRestoration=n.scrollPositionRestoration||"disabled",n.anchorScrolling=n.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(t=>{t instanceof B?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof z&&(this.lastId=t.id,this.scheduleScrollEvent(t,this.router.parseUrl(t.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(t=>{t instanceof at&&(t.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(t.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,e){this.router.triggerEvent(new at(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}const yn=new r.InjectionToken("ROUTER_CONFIGURATION"),vn=new r.InjectionToken("ROUTER_FORROOT_GUARD"),xn=[a.Location,{provide:St,useClass:It},{provide:an,useFactory:Nn,deps:[r.ApplicationRef,St,dn,a.Location,r.Injector,r.NgModuleFactoryLoader,r.Compiler,Je,yn,[Qe,new r.Optional],[Ke,new r.Optional]]},dn,{provide:Wt,useFactory:Cn,deps:[an]},{provide:r.NgModuleFactoryLoader,useClass:r.SystemJsNgModuleLoader},bn,pn,gn,{provide:yn,useValue:{enableTracing:!1}}];function _n(){return new r.NgProbeToken("Router",an)}class Tn{constructor(t,e){}static forRoot(t,e){return{ngModule:Tn,providers:[xn,In(t),{provide:vn,useFactory:Sn,deps:[[an,new r.Optional,new r.SkipSelf]]},{provide:yn,useValue:e||{}},{provide:a.LocationStrategy,useFactory:On,deps:[a.PlatformLocation,[new r.Inject(a.APP_BASE_HREF),new r.Optional],yn]},{provide:mn,useFactory:wn,deps:[an,a.ViewportScroller,yn]},{provide:hn,useExisting:e&&e.preloadingStrategy?e.preloadingStrategy:pn},{provide:r.NgProbeToken,multi:!0,useFactory:_n},[Rn,{provide:r.APP_INITIALIZER,multi:!0,useFactory:An,deps:[Rn]},{provide:En,useFactory:kn,deps:[Rn]},{provide:r.APP_BOOTSTRAP_LISTENER,multi:!0,useExisting:En}]]}}static forChild(t){return{ngModule:Tn,providers:[In(t)]}}}function wn(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new mn(t,e,n)}function On(t,e,n={}){return n.useHash?new a.HashLocationStrategy(t,e):new a.PathLocationStrategy(t,e)}function Sn(t){if(t)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function In(t){return[{provide:r.ANALYZE_FOR_ENTRY_COMPONENTS,multi:!0,useValue:t},{provide:Je,multi:!0,useValue:t}]}function Nn(t,e,n,a,r,i,s,u,o={},l,d){const c=new an(null,e,n,a,r,i,s,pt(u));if(l&&(c.urlHandlingStrategy=l),d&&(c.routeReuseStrategy=d),o.errorHandler&&(c.errorHandler=o.errorHandler),o.malformedUriErrorHandler&&(c.malformedUriErrorHandler=o.malformedUriErrorHandler),o.enableTracing){const t=Object(V.q)();c.events.subscribe(e=>{t.logGroup("Router Event: "+e.constructor.name),t.log(e.toString()),t.log(e),t.logGroupEnd()})}return o.onSameUrlNavigation&&(c.onSameUrlNavigation=o.onSameUrlNavigation),o.paramsInheritanceStrategy&&(c.paramsInheritanceStrategy=o.paramsInheritanceStrategy),o.urlUpdateStrategy&&(c.urlUpdateStrategy=o.urlUpdateStrategy),o.relativeLinkResolution&&(c.relativeLinkResolution=o.relativeLinkResolution),c}function Cn(t){return t.routerState.root}class Rn{constructor(t){this.injector=t,this.initNavigation=!1,this.resultOfPreactivationDone=new x.a}appInitializer(){return this.injector.get(a.LOCATION_INITIALIZED,Promise.resolve(null)).then(()=>{let t=null;const e=new Promise(e=>t=e),n=this.injector.get(an),a=this.injector.get(yn);if(this.isLegacyDisabled(a)||this.isLegacyEnabled(a))t(!0);else if("disabled"===a.initialNavigation)n.setUpLocationChangeListener(),t(!0);else{if("enabled"!==a.initialNavigation)throw new Error(`Invalid initialNavigation options: '${a.initialNavigation}'`);n.hooks.afterPreactivation=()=>this.initNavigation?Object(i.a)(null):(this.initNavigation=!0,t(!0),this.resultOfPreactivationDone),n.initialNavigation()}return e})}bootstrapListener(t){const e=this.injector.get(yn),n=this.injector.get(bn),a=this.injector.get(mn),i=this.injector.get(an),s=this.injector.get(r.ApplicationRef);t===s.components[0]&&(this.isLegacyEnabled(e)?i.initialNavigation():this.isLegacyDisabled(e)&&i.setUpLocationChangeListener(),n.setUpPreloading(),a.init(),i.resetRootComponentType(s.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}isLegacyEnabled(t){return"legacy_enabled"===t.initialNavigation||!0===t.initialNavigation||void 0===t.initialNavigation}isLegacyDisabled(t){return"legacy_disabled"===t.initialNavigation||!1===t.initialNavigation}}function An(t){return t.appInitializer.bind(t)}function kn(t){return t.bootstrapListener.bind(t)}const En=new r.InjectionToken("Router Initializer")},"iQ+a":function(t,e,n){var a=n("nTk+"),r=n("1Yk6"),i=n("FGWQ");t.exports=function(t){return a(t,i,r)}},iSVu:function(t,e,n){var a=n("4zBA"),r=n("Fib7"),i=n("xs3f"),s=a(Function.toString);r(i.inspectSource)||(i.inspectSource=function(t){return s(t)}),t.exports=i.inspectSource},iYuL:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},ienR:function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return q})),n.d(e,"c",(function(){return j})),n.d(e,"d",(function(){return F})),n.d(e,"e",(function(){return V})),n.d(e,"f",(function(){return Y})),n.d(e,"g",(function(){return nt})),n.d(e,"h",(function(){return H})),n.d(e,"i",(function(){return B})),n.d(e,"j",(function(){return G})),n.d(e,"k",(function(){return z})),n.d(e,"l",(function(){return b})),n.d(e,"m",(function(){return st})),n.d(e,"n",(function(){return rt})),n.d(e,"o",(function(){return it})),n.d(e,"p",(function(){return dt})),n.d(e,"q",(function(){return ut})),n.d(e,"r",(function(){return ot})),n.d(e,"s",(function(){return lt})),n.d(e,"t",(function(){return M})),n.d(e,"u",(function(){return m})),n.d(e,"v",(function(){return p})),n.d(e,"w",(function(){return U})),n.d(e,"x",(function(){return W})),n.d(e,"y",(function(){return K})),n.d(e,"z",(function(){return $})),n.d(e,"A",(function(){return Z})),n.d(e,"B",(function(){return Q})),n.d(e,"C",(function(){return X})),n.d(e,"D",(function(){return tt})),n.d(e,"E",(function(){return et}));var a=n("8Y7J"),r=n("pLZG"),i=n("lJxs"),s=n("IzEk"),u=n("xj/R"),o=n("2Vo4"),l=n("AfCQ"),d=n("2uy1"),c=(n("GS7A"),n("z/SZ")),f=(n("s7LF"),n("hpHm"));class h{constructor(){this.adaptivePosition=!1,this.useUtc=!1,this.isAnimated=!1,this.containerClass="theme-green",this.displayMonths=1,this.showWeekNumbers=!0,this.dateInputFormat="L",this.rangeSeparator=" - ",this.rangeInputFormat="L",this.monthTitle="MMMM",this.yearTitle="YYYY",this.dayLabel="D",this.monthLabel="MMMM",this.yearLabel="YYYY",this.weekNumbers="w"}}class g{constructor(){this._customRangesFish=[]}set minDate(t){this._effects.setMinDate(t)}set maxDate(t){this._effects.setMaxDate(t)}set daysDisabled(t){this._effects.setDaysDisabled(t)}set datesDisabled(t){this._effects.setDatesDisabled(t)}set isDisabled(t){this._effects.setDisabled(t)}set dateCustomClasses(t){this._effects.setDateCustomClasses(t)}setViewMode(t){}navigateTo(t){}dayHoverHandler(t){}weekHoverHandler(t){}monthHoverHandler(t){}yearHoverHandler(t){}daySelectHandler(t){}monthSelectHandler(t){}yearSelectHandler(t){}_stopPropagation(t){t.stopPropagation()}}let p=(()=>{class t{calculate(){return{type:t.CALCULATE}}format(){return{type:t.FORMAT}}flag(){return{type:t.FLAG}}select(e){return{type:t.SELECT,payload:e}}changeViewMode(e){return{type:t.CHANGE_VIEWMODE,payload:e}}navigateTo(e){return{type:t.NAVIGATE_TO,payload:e}}navigateStep(e){return{type:t.NAVIGATE_OFFSET,payload:e}}setOptions(e){return{type:t.SET_OPTIONS,payload:e}}selectRange(e){return{type:t.SELECT_RANGE,payload:e}}hoverDay(e){return{type:t.HOVER,payload:e.isHovered?e.cell.date:null}}minDate(e){return{type:t.SET_MIN_DATE,payload:e}}maxDate(e){return{type:t.SET_MAX_DATE,payload:e}}daysDisabled(e){return{type:t.SET_DAYSDISABLED,payload:e}}datesDisabled(e){return{type:t.SET_DATESDISABLED,payload:e}}isDisabled(e){return{type:t.SET_IS_DISABLED,payload:e}}setDateCustomClasses(e){return{type:t.SET_DATE_CUSTOM_CLASSES,payload:e}}setLocale(e){return{type:t.SET_LOCALE,payload:e}}}return t.CALCULATE="[datepicker] calculate dates matrix",t.FORMAT="[datepicker] format datepicker values",t.FLAG="[datepicker] set flags",t.SELECT="[datepicker] select date",t.NAVIGATE_OFFSET="[datepicker] shift view date",t.NAVIGATE_TO="[datepicker] change view date",t.SET_OPTIONS="[datepicker] update render options",t.HOVER="[datepicker] hover date",t.CHANGE_VIEWMODE="[datepicker] switch view mode",t.SET_MIN_DATE="[datepicker] set min date",t.SET_MAX_DATE="[datepicker] set max date",t.SET_DAYSDISABLED="[datepicker] set days disabled",t.SET_DATESDISABLED="[datepicker] set dates disabled",t.SET_IS_DISABLED="[datepicker] set is disabled",t.SET_DATE_CUSTOM_CLASSES="[datepicker] set date custom classes",t.SET_LOCALE="[datepicker] set datepicker locale",t.SELECT_RANGE="[daterangepicker] select dates range",t})();class b{constructor(){this._defaultLocale="en",this._locale=new o.a(this._defaultLocale),this._localeChange=this._locale.asObservable()}get locale(){return this._locale}get localeChange(){return this._localeChange}get currentLocale(){return this._locale.getValue()}use(t){t!==this.currentLocale&&this._locale.next(t)}}class m{constructor(t,e){this._actions=t,this._localeService=e,this._subs=[]}init(t){return this._store=t,this}setValue(t){this._store.dispatch(this._actions.select(t))}setRangeValue(t){this._store.dispatch(this._actions.selectRange(t))}setMinDate(t){return this._store.dispatch(this._actions.minDate(t)),this}setMaxDate(t){return this._store.dispatch(this._actions.maxDate(t)),this}setDaysDisabled(t){return this._store.dispatch(this._actions.daysDisabled(t)),this}setDatesDisabled(t){return this._store.dispatch(this._actions.datesDisabled(t)),this}setDisabled(t){return this._store.dispatch(this._actions.isDisabled(t)),this}setDateCustomClasses(t){return this._store.dispatch(this._actions.setDateCustomClasses(t)),this}setOptions(t){const e=Object.assign({locale:this._localeService.currentLocale},t);return this._store.dispatch(this._actions.setOptions(e)),this}setBindings(t){return t.daysCalendar=this._store.select(t=>t.flaggedMonths).pipe(Object(r.a)(t=>!!t)),t.monthsCalendar=this._store.select(t=>t.flaggedMonthsCalendar).pipe(Object(r.a)(t=>!!t)),t.yearsCalendar=this._store.select(t=>t.yearsCalendarFlagged).pipe(Object(r.a)(t=>!!t)),t.viewMode=this._store.select(t=>t.view.mode),t.options=this._store.select(t=>t.showWeekNumbers).pipe(Object(i.a)(t=>({showWeekNumbers:t}))),this}setEventHandlers(t){return t.setViewMode=t=>{this._store.dispatch(this._actions.changeViewMode(t))},t.navigateTo=t=>{this._store.dispatch(this._actions.navigateStep(t.step))},t.dayHoverHandler=t=>{const e=t.cell;e.isOtherMonth||e.isDisabled||(this._store.dispatch(this._actions.hoverDay(t)),e.isHovered=t.isHovered)},t.monthHoverHandler=t=>{t.cell.isHovered=t.isHovered},t.yearHoverHandler=t=>{t.cell.isHovered=t.isHovered},t.monthSelectHandler=t=>{t.isDisabled||this._store.dispatch(this._actions.navigateTo({unit:{month:Object(u.l)(t.date),year:Object(u.j)(t.date)},viewMode:"day"}))},t.yearSelectHandler=t=>{t.isDisabled||this._store.dispatch(this._actions.navigateTo({unit:{year:Object(u.j)(t.date)},viewMode:"month"}))},this}registerDatepickerSideEffects(){return this._subs.push(this._store.select(t=>t.view).subscribe(t=>{this._store.dispatch(this._actions.calculate())})),this._subs.push(this._store.select(t=>t.monthsModel).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.format()))),this._subs.push(this._store.select(t=>t.formattedMonths).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.selectedDate).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.selectedRange).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.monthsCalendar).subscribe(()=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.yearsCalendarModel).pipe(Object(r.a)(t=>!!t)).subscribe(()=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.hoveredDate).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.dateCustomClasses).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._localeService.localeChange.subscribe(t=>this._store.dispatch(this._actions.setLocale(t)))),this}destroy(){for(const t of this._subs)t.unsubscribe()}}const y={date:new Date,mode:"day"},v=Object.assign(new h,{locale:"en",view:y,selectedRange:[],monthViewOptions:{width:7,height:6}});function x(t,e,n){const a=e&&Object(u.p)(Object(u.d)(t,"month"),e,"day"),r=n&&Object(u.n)(Object(u.G)(t,"month"),n,"day");return a||r}function _(t,e,n){const a=e&&Object(u.p)(Object(u.d)(t,"year"),e,"day"),r=n&&Object(u.n)(Object(u.G)(t,"year"),n,"day");return a||r}function T(t,e=0){const n=t&&t.yearsCalendarModel&&t.yearsCalendarModel[e];return n&&n.years&&n.years[0]&&n.years[0][0]&&n.years[0][0].date}function w(t,e){let n=t.initialDate;const a=new Array(t.height);for(let r=0;r<t.height;r++){a[r]=new Array(t.width);for(let i=0;i<t.width;i++)a[r][i]=e(n),n=Object(u.F)(n,t.shift)}return a}function O(t,e){const n=Object(u.i)(t),a=function(t,e){if(Object(u.t)(t,e.firstDayOfWeek))return t;const n=function(t,e){if(0===e)return t;const n=t-e%7;return n<0?n+7:n}(Object(u.h)(t),e.firstDayOfWeek);return Object(u.F)(t,{day:-n})}(n,e);return{daysMatrix:w({width:e.width,height:e.height,initialDate:a,shift:{day:1}},t=>t),month:n}}function S(t){const e=Object(u.k)(t),n=e.weekdaysShort(),a=e.firstDayOfWeek();return[...n.slice(a),...n.slice(0,a)]}function I(t,e){return!e||t>=e}const N={month:1};function C(t,e){return{months:w({width:3,height:4,initialDate:Object(u.G)(t,"year"),shift:N},t=>({date:t,label:Object(u.f)(t,e.monthLabel,e.locale)})),monthTitle:"",yearTitle:Object(u.f)(t,e.yearTitle,e.locale)}}const R=-1*(Math.floor(8)-1),A={year:1};function k(t,e,n){const a=w({width:4,height:4,initialDate:function(t,e){return e&&t.getFullYear()>=e.getFullYear()&&t.getFullYear()<e.getFullYear()+16?e:Object(u.F)(t,{year:R})}(t,n),shift:A},t=>({date:t,label:Object(u.f)(t,e.yearLabel,e.locale)}));return{years:a,monthTitle:"",yearTitle:function(t,e){return`${Object(u.f)(t[0][0].date,e.yearTitle,e.locale)} - ${Object(u.f)(t[3][3].date,e.yearTitle,e.locale)}`}(a,e)}}function E(t=v,e){switch(e.type){case p.CALCULATE:return function(t){const e=t.displayMonths;let n=t.view.date;if("day"===t.view.mode){t.showPreviousMonth&&0===t.selectedRange.length&&(n=Object(u.F)(n,{month:-1})),t.monthViewOptions.firstDayOfWeek=Object(u.k)(t.locale).firstDayOfWeek();const a=new Array(e);for(let r=0;r<e;r++)a[r]=O(n,t.monthViewOptions),n=Object(u.F)(n,{month:1});return Object.assign({},t,{monthsModel:a})}if("month"===t.view.mode){const a=new Array(e);for(let r=0;r<e;r++)a[r]=C(n,D(t)),n=Object(u.F)(n,{year:1});return Object.assign({},t,{monthsCalendar:a})}if("year"===t.view.mode){const a=new Array(e);for(let r=0;r<e;r++)a[r]=k(n,D(t),"year"===t.minMode?T(t,r):void 0),n=Object(u.F)(n,{year:16});return Object.assign({},t,{yearsCalendarModel:a})}return t}(t);case p.FORMAT:return function(t,e){if("day"===t.view.mode){const e=t.monthsModel.map((e,n)=>function(t,e,n){return{month:t.month,monthTitle:Object(u.f)(t.month,e.monthTitle,e.locale),yearTitle:Object(u.f)(t.month,e.yearTitle,e.locale),weekNumbers:(a=t.daysMatrix,r=e.weekNumbers,i=e.locale,a.map(t=>t[0]?Object(u.f)(t[0],r,i):"")),weekdays:S(e.locale),weeks:t.daysMatrix.map((t,a)=>({days:t.map((t,r)=>({date:t,label:Object(u.f)(t,e.dayLabel,e.locale),monthIndex:n,weekIndex:a,dayIndex:r}))}))};var a,r,i}(e,D(t),n));return Object.assign({},t,{formattedMonths:e})}const n=t.displayMonths;let a=t.view.date;if("month"===t.view.mode){const e=new Array(n);for(let r=0;r<n;r++)e[r]=C(a,D(t)),a=Object(u.F)(a,{year:1});return Object.assign({},t,{monthsCalendar:e})}if("year"===t.view.mode){const e=new Array(n);for(let r=0;r<n;r++)e[r]=k(a,D(t)),a=Object(u.F)(a,{year:16});return Object.assign({},t,{yearsCalendarModel:e})}return t}(t);case p.FLAG:return function(t,e){if("day"===t.view.mode){const e=t.formattedMonths.map((e,n)=>function(t,e){return t.weeks.forEach(n=>{n.days.forEach((a,r)=>{const i=!Object(u.w)(a.date,t.month),s=!i&&Object(u.v)(a.date,e.hoveredDate),o=!i&&e.selectedRange&&Object(u.v)(a.date,e.selectedRange[0]),l=!i&&e.selectedRange&&Object(u.v)(a.date,e.selectedRange[1]),d=!i&&Object(u.v)(a.date,e.selectedDate)||o||l,c=!i&&e.selectedRange&&function(t,e,n){return!(!t||!e[0])&&(e[1]?t>e[0]&&t<=e[1]:!!n&&t>e[0]&&t<=n)}(a.date,e.selectedRange,e.hoveredDate),f=e.isDisabled||Object(u.p)(a.date,e.minDate,"day")||Object(u.n)(a.date,e.maxDate,"day")||Object(u.s)(a.date,e.daysDisabled)||(h=a.date,!(void 0===(g=e.datesDisabled)||!g||!g.length)&&g.some(t=>Object(u.u)(h,t,"date")));var h,g;const p=new Date,b=!i&&Object(u.v)(a.date,p),m=e.dateCustomClasses&&e.dateCustomClasses.map(t=>Object(u.v)(a.date,t.date)?t.classes:[]).reduce((t,e)=>t.concat(e),[]).join(" ")||"",y=Object.assign({},a,{isOtherMonth:i,isHovered:s,isSelected:d,isSelectionStart:o,isSelectionEnd:l,isInRange:c,isDisabled:f,isToday:b,customClasses:m});a.isOtherMonth===y.isOtherMonth&&a.isHovered===y.isHovered&&a.isSelected===y.isSelected&&a.isSelectionStart===y.isSelectionStart&&a.isSelectionEnd===y.isSelectionEnd&&a.isDisabled===y.isDisabled&&a.isInRange===y.isInRange&&a.customClasses===y.customClasses||(n.days[r]=y)})}),t.hideLeftArrow=e.isDisabled||e.monthIndex>0&&e.monthIndex!==e.displayMonths,t.hideRightArrow=e.isDisabled||e.monthIndex<e.displayMonths&&e.monthIndex+1!==e.displayMonths,t.disableLeftArrow=x(Object(u.F)(t.month,{month:-1}),e.minDate,e.maxDate),t.disableRightArrow=x(Object(u.F)(t.month,{month:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,daysDisabled:t.daysDisabled,datesDisabled:t.datesDisabled,hoveredDate:t.hoveredDate,selectedDate:t.selectedDate,selectedRange:t.selectedRange,displayMonths:t.displayMonths,dateCustomClasses:t.dateCustomClasses,monthIndex:n}));return Object.assign({},t,{flaggedMonths:e})}if("month"===t.view.mode){const e=t.monthsCalendar.map((e,n)=>{return r={isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredMonth:t.hoveredMonth,selectedDate:t.selectedDate,displayMonths:t.displayMonths,monthIndex:n},(a=e).months.forEach((t,e)=>{t.forEach((t,n)=>{const i=Object(u.w)(t.date,r.hoveredMonth),s=r.isDisabled||x(t.date,r.minDate,r.maxDate),o=Object(u.w)(t.date,r.selectedDate),l=Object.assign(t,{isHovered:i,isDisabled:s,isSelected:o});t.isHovered===l.isHovered&&t.isDisabled===l.isDisabled&&t.isSelected===l.isSelected||(a.months[e][n]=l)})}),a.hideLeftArrow=r.monthIndex>0&&r.monthIndex!==r.displayMonths,a.hideRightArrow=r.monthIndex<r.displayMonths&&r.monthIndex+1!==r.displayMonths,a.disableLeftArrow=_(Object(u.F)(a.months[0][0].date,{year:-1}),r.minDate,r.maxDate),a.disableRightArrow=_(Object(u.F)(a.months[0][0].date,{year:1}),r.minDate,r.maxDate),a;var a,r});return Object.assign({},t,{flaggedMonthsCalendar:e})}if("year"===t.view.mode){const e=t.yearsCalendarModel.map((e,n)=>function(t,e){t.years.forEach((n,a)=>{n.forEach((n,r)=>{const i=Object(u.x)(n.date,e.hoveredYear),s=e.isDisabled||_(n.date,e.minDate,e.maxDate),o=Object(u.x)(n.date,e.selectedDate),l=Object.assign(n,{isHovered:i,isDisabled:s,isSelected:o});n.isHovered===l.isHovered&&n.isDisabled===l.isDisabled&&n.isSelected===l.isSelected||(t.years[a][r]=l)})}),t.hideLeftArrow=e.yearIndex>0&&e.yearIndex!==e.displayMonths,t.hideRightArrow=e.yearIndex<e.displayMonths&&e.yearIndex+1!==e.displayMonths,t.disableLeftArrow=_(Object(u.F)(t.years[0][0].date,{year:-1}),e.minDate,e.maxDate);const n=t.years.length-1,a=t.years[n].length-1;return t.disableRightArrow=_(Object(u.F)(t.years[n][a].date,{year:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredYear:t.hoveredYear,selectedDate:t.selectedDate,displayMonths:t.displayMonths,yearIndex:n}));return Object.assign({},t,{yearsCalendarFlagged:e})}return t}(t);case p.NAVIGATE_OFFSET:return function(t,e){const n={view:{mode:t.view.mode,date:L(t,e)}};return Object.assign({},t,n)}(t,e);case p.NAVIGATE_TO:{const n=e.payload,a=Object(u.E)(t.view.date,n.unit);let r,i;return I(n.viewMode,t.minMode)?(i=n.viewMode,r={view:{date:a,mode:i}}):(i=t.view.mode,r={selectedDate:a,view:{date:a,mode:i}}),Object.assign({},t,r)}case p.CHANGE_VIEWMODE:return I(e.payload,t.minMode)?Object.assign({},t,{view:{date:t.view.date,mode:e.payload}}):t;case p.HOVER:return Object.assign({},t,{hoveredDate:e.payload});case p.SELECT:{const n={selectedDate:e.payload,view:t.view},a=t.view.mode,r=P(e.payload||t.view.date,t.minDate,t.maxDate);return n.view={mode:a,date:r},Object.assign({},t,n)}case p.SET_OPTIONS:{const n=e.payload,a=n.minMode?n.minMode:t.view.mode,r=P(Object(u.r)(n.value)&&n.value||Object(u.o)(n.value)&&Object(u.r)(n.value[0])&&n.value[0]||t.view.date,n.minDate,n.maxDate);return n.view={mode:a,date:r},n.value&&(Object(u.o)(n.value)&&(n.selectedRange=n.value),n.value instanceof Date&&(n.selectedDate=n.value)),Object.assign({},t,n)}case p.SELECT_RANGE:{const n={selectedRange:e.payload,view:t.view},a=t.view.mode,r=P(e.payload&&e.payload[0]||t.view.date,t.minDate,t.maxDate);return n.view={mode:a,date:r},Object.assign({},t,n)}case p.SET_MIN_DATE:return Object.assign({},t,{minDate:e.payload});case p.SET_MAX_DATE:return Object.assign({},t,{maxDate:e.payload});case p.SET_IS_DISABLED:return Object.assign({},t,{isDisabled:e.payload});case p.SET_DATE_CUSTOM_CLASSES:return Object.assign({},t,{dateCustomClasses:e.payload});default:return t}}function L(t,e){if("year"===t.view.mode&&"year"===t.minMode){const n=T(t,0),a=Object(u.F)(n,{year:-R});return Object(u.F)(a,e.payload)}return Object(u.F)(Object(u.G)(t.view.date,"month"),e.payload)}function D(t){return{locale:t.locale,monthTitle:t.monthTitle,yearTitle:t.yearTitle,dayLabel:t.dayLabel,monthLabel:t.monthLabel,yearLabel:t.yearLabel,weekNumbers:t.weekNumbers}}function P(t,e,n){const a=Array.isArray(t)?t[0]:t;return e&&Object(u.n)(e,a,"day")?e:n&&Object(u.p)(n,a,"day")?n:a}class M extends l.b{constructor(){const t=new o.a({type:"[datepicker] dispatcher init"});super(t,E,new l.a(v,t,E))}}class q extends g{constructor(t,e,n,r,i,s,u){super(),this._config=e,this._store=n,this._element=r,this._actions=i,this._positionService=u,this.valueChange=new a.EventEmitter,this.animationState="void",this._subs=[],this._effects=s,t.setStyle(r.nativeElement,"display","block"),t.setStyle(r.nativeElement,"position","absolute")}set value(t){this._effects.setValue(t)}ngOnInit(){this._positionService.setOptions({modifiers:{flip:{enabled:this._config.adaptivePosition}},allowedPositions:["top","bottom"]}),this._positionService.event$.pipe(Object(s.a)(1)).subscribe(()=>{this._positionService.disable(),this.animationState=this._config.isAnimated?this.isTopPosition?"animated-up":"animated-down":"unanimated"}),this.isOtherMonthsActive=this._config.selectFromOtherMonth,this.containerClass=this._config.containerClass,this._effects.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects(),this._subs.push(this._store.select(t=>t.selectedDate).subscribe(t=>this.valueChange.emit(t)))}get isTopPosition(){return this._element.nativeElement.classList.contains("top")}positionServiceEnable(){this._positionService.enable()}daySelectHandler(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||this._store.dispatch(this._actions.select(t.date))}ngOnDestroy(){for(const t of this._subs)t.unsubscribe();this._effects.destroy()}}class j{constructor(t,e,n,r,i){this._config=t,this.placement="bottom",this.triggers="click",this.outsideClick=!0,this.container="body",this.outsideEsc=!0,this.bsValueChange=new a.EventEmitter,this._subs=[],Object.assign(this,this._config),this._datepicker=i.createLoader(e,r,n),this.onShown=this._datepicker.onShown,this.onHidden=this._datepicker.onHidden}get isOpen(){return this._datepicker.isShown}set isOpen(t){t?this.show():this.hide()}set bsValue(t){this._bsValue&&t&&this._bsValue.getTime()===t.getTime()||(this._bsValue=t,this.bsValueChange.emit(t))}ngOnInit(){this._datepicker.listen({outsideClick:this.outsideClick,outsideEsc:this.outsideEsc,triggers:this.triggers,show:()=>this.show()}),this.setConfig()}ngOnChanges(t){this._datepickerRef&&this._datepickerRef.instance&&(t.minDate&&(this._datepickerRef.instance.minDate=this.minDate),t.maxDate&&(this._datepickerRef.instance.maxDate=this.maxDate),t.daysDisabled&&(this._datepickerRef.instance.daysDisabled=this.daysDisabled),t.datesDisabled&&(this._datepickerRef.instance.datesDisabled=this.datesDisabled),t.isDisabled&&(this._datepickerRef.instance.isDisabled=this.isDisabled),t.dateCustomClasses&&(this._datepickerRef.instance.dateCustomClasses=this.dateCustomClasses))}show(){this._datepicker.isShown||(this.setConfig(),this._datepickerRef=this._datepicker.provide({provide:h,useValue:this._config}).attach(q).to(this.container).position({attachment:this.placement}).show({placement:this.placement}),this._subs.push(this.bsValueChange.subscribe(t=>{this._datepickerRef.instance.value=t})),this._subs.push(this._datepickerRef.instance.valueChange.subscribe(t=>{this.bsValue=t,this.hide()})))}hide(){this.isOpen&&this._datepicker.hide();for(const t of this._subs)t.unsubscribe()}toggle(){if(this.isOpen)return this.hide();this.show()}setConfig(){this._config=Object.assign({},this._config,this.bsConfig,{value:this._bsValue,isDisabled:this.isDisabled,minDate:this.minDate||this.bsConfig&&this.bsConfig.minDate,maxDate:this.maxDate||this.bsConfig&&this.bsConfig.maxDate,daysDisabled:this.daysDisabled||this.bsConfig&&this.bsConfig.daysDisabled,dateCustomClasses:this.dateCustomClasses||this.bsConfig&&this.bsConfig.dateCustomClasses,datesDisabled:this.datesDisabled||this.bsConfig&&this.bsConfig.datesDisabled,minMode:this.minMode||this.bsConfig&&this.bsConfig.minMode})}ngOnDestroy(){this._datepicker.dispose()}}class F extends h{}class V extends q{constructor(t,e,n,a,r,i,s){super(t,e,n,a,r,i,s),t.setStyle(a.nativeElement,"display","inline-block"),t.setStyle(a.nativeElement,"position","static")}}class G extends h{constructor(){super(...arguments),this.displayMonths=2,this.isAnimated=!1}}class B extends g{constructor(t,e,n,r,i,s,u){super(),this._config=e,this._store=n,this._element=r,this._actions=i,this._positionService=u,this.valueChange=new a.EventEmitter,this.animationState="void",this._rangeStack=[],this._subs=[],this._effects=s,t.setStyle(r.nativeElement,"display","block"),t.setStyle(r.nativeElement,"position","absolute")}set value(t){this._effects.setRangeValue(t)}ngOnInit(){this._positionService.setOptions({modifiers:{flip:{enabled:this._config.adaptivePosition}},allowedPositions:["top","bottom"]}),this._positionService.event$.pipe(Object(s.a)(1)).subscribe(()=>{this._positionService.disable(),this.animationState=this._config.isAnimated?this.isTopPosition?"animated-up":"animated-down":"unanimated"}),this.containerClass=this._config.containerClass,this.isOtherMonthsActive=this._config.selectFromOtherMonth,this._effects.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects(),this._subs.push(this._store.select(t=>t.selectedRange).subscribe(t=>this.valueChange.emit(t)))}get isTopPosition(){return this._element.nativeElement.classList.contains("top")}positionServiceEnable(){this._positionService.enable()}daySelectHandler(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||(1===this._rangeStack.length&&(this._rangeStack=t.date>=this._rangeStack[0]?[this._rangeStack[0],t.date]:[t.date]),0===this._rangeStack.length&&(this._rangeStack=[t.date]),this._store.dispatch(this._actions.selectRange(this._rangeStack)),2===this._rangeStack.length&&(this._rangeStack=[]))}ngOnDestroy(){for(const t of this._subs)t.unsubscribe();this._effects.destroy()}}class z extends B{constructor(t,e,n,a,r,i,s){super(t,e,n,a,r,i,s),t.setStyle(a.nativeElement,"display","inline-block"),t.setStyle(a.nativeElement,"position","static")}}class Y{constructor(t,e,n,a,r){this._picker=t,this._localeService=e,this._renderer=n,this._elRef=a,this.changeDetection=r,this._onChange=Function.prototype,this._onTouched=Function.prototype,this._validatorChange=Function.prototype,this._picker.bsValueChange.subscribe(t=>{let e=t;if(t){const n=this._localeService.currentLocale,a=Object(u.k)(n);if(!a)throw new Error(`Locale "${n}" is not defined, please add it with "defineLocale(...)"`);e=a.preinput(t)}this._setInputValue(e),this._value!==e&&(this._value=e,this._onChange(e),this._onTouched()),this.changeDetection.markForCheck()}),this._localeService.localeChange.subscribe(()=>{this._setInputValue(this._value)})}_setInputValue(t){const e=t?Object(u.f)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale):"";this._renderer.setProperty(this._elRef.nativeElement,"value",e)}onChange(t){this.writeValue(t.target.value),this._onChange(this._value),this._onTouched()}validate(t){const e=t.value;if(null==e||""===e)return null;if(Object(u.q)(e)){if(!Object(u.r)(e))return{bsDate:{invalid:e}};if(this._picker&&this._picker.minDate&&Object(u.p)(e,this._picker.minDate,"date"))return this.writeValue(this._picker.minDate),{bsDate:{minDate:this._picker.minDate}};if(this._picker&&this._picker.maxDate&&Object(u.n)(e,this._picker.maxDate,"date"))return this.writeValue(this._picker.maxDate),{bsDate:{maxDate:this._picker.maxDate}}}}registerOnValidatorChange(t){this._validatorChange=t}writeValue(t){if(t){const e=this._localeService.currentLocale;if(!Object(u.k)(e))throw new Error(`Locale "${e}" is not defined, please add it with "defineLocale(...)"`);this._value=Object(u.B)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale),this._picker._config.useUtc&&(this._value=Object(u.H)(this._value))}else this._value=null;this._picker.bsValue=this._value}setDisabledState(t){this._picker.isDisabled=t,t?this._renderer.setAttribute(this._elRef.nativeElement,"disabled","disabled"):this._renderer.removeAttribute(this._elRef.nativeElement,"disabled")}registerOnChange(t){this._onChange=t}registerOnTouched(t){this._onTouched=t}onBlur(){this._onTouched()}hide(){this._picker.hide(),this._renderer.selectRootElement(this._elRef.nativeElement).blur()}}class H extends h{constructor(){super(...arguments),this.displayMonths=2}}class U{}class W{}class K{}class ${constructor(t,e,n){this._config=t,this._elRef=e,this._renderer=n}ngOnInit(){this.day.isToday&&this._config&&this._config.customTodayClass&&this._renderer.addClass(this._elRef.nativeElement,this._config.customTodayClass),"string"==typeof this.day.customClasses&&this.day.customClasses.split(" ").filter(t=>t).forEach(t=>{this._renderer.addClass(this._elRef.nativeElement,t)})}}const J=function(){var t={UP:0,DOWN:1};return t[t.UP]="UP",t[t.DOWN]="DOWN",t}();class Z{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter}navTo(t){this.onNavigate.emit(t?J.DOWN:J.UP)}view(t){this.onViewMode.emit(t)}}class Q{constructor(t){this._config=t,this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter,this.onHoverWeek=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{month:J.DOWN===t?-1:1}})}changeViewMode(t){this.onViewMode.emit(t)}selectDay(t){this.onSelect.emit(t)}selectWeek(t){if(!this._config.selectWeek)return;if(t.days&&t.days[0]&&!t.days[0].isDisabled&&this._config.selectFromOtherMonth)return void this.onSelect.emit(t.days[0]);if(0===t.days.length)return;const e=t.days.find(t=>(this._config.selectFromOtherMonth||!t.isOtherMonth)&&!t.isDisabled);this.onSelect.emit(e)}weekHoverHandler(t,e){this._config.selectWeek&&t.days.find(t=>(this._config.selectFromOtherMonth||!t.isOtherMonth)&&!t.isDisabled)&&(t.isHovered=e,this.isWeekHovered=e,this.onHoverWeek.emit(t))}hoverDay(t,e){this._config.selectFromOtherMonth&&t.isOtherMonth&&(t.isOtherMonthHovered=e),this.onHover.emit({cell:t,isHovered:e})}}class X{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{year:J.DOWN===t?-1:1}})}viewMonth(t){this.onSelect.emit(t)}hoverMonth(t,e){this.onHover.emit({cell:t,isHovered:e})}changeViewMode(t){this.onViewMode.emit(t)}}class tt{constructor(){this.ampm="ok",this.hours=0,this.minutes=0}}class et{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{year:16*(J.DOWN===t?-1:1)}})}viewYear(t){this.onSelect.emit(t)}hoverYear(t,e){this.onHover.emit({cell:t,isHovered:e})}changeViewMode(t){this.onViewMode.emit(t)}}class nt{static forRoot(){return{ngModule:nt,providers:[c.a,d.a,M,p,h,H,F,G,m,b]}}}class at{format(t,e,n){return Object(u.f)(t,e,n)}}class rt{constructor(){this.selectionDone=new a.EventEmitter(void 0),this.update=new a.EventEmitter(!1),this.activeDateChange=new a.EventEmitter(void 0),this.stepDay={},this.stepMonth={},this.stepYear={},this.modes=["day","month","year"],this.dateFormatter=new at}get activeDate(){return this._activeDate}set activeDate(t){this._activeDate=t}ngOnInit(){this.uniqueId="datepicker--"+Math.floor(1e4*Math.random()),this.initDate?(this.activeDate=this.initDate,this.selectedDate=new Date(this.activeDate.valueOf()),this.update.emit(this.activeDate)):void 0===this.activeDate&&(this.activeDate=new Date)}ngOnChanges(t){this.refreshView(),this.checkIfActiveDateGotUpdated(t.activeDate)}checkIfActiveDateGotUpdated(t){if(t&&!t.firstChange){const e=t.previousValue;e&&e instanceof Date&&e.getTime()!==t.currentValue.getTime()&&this.activeDateChange.emit(this.activeDate)}}setCompareHandler(t,e){"day"===e&&(this.compareHandlerDay=t),"month"===e&&(this.compareHandlerMonth=t),"year"===e&&(this.compareHandlerYear=t)}compare(t,e){if(void 0!==t&&void 0!==e)return"day"===this.datepickerMode&&this.compareHandlerDay?this.compareHandlerDay(t,e):"month"===this.datepickerMode&&this.compareHandlerMonth?this.compareHandlerMonth(t,e):"year"===this.datepickerMode&&this.compareHandlerYear?this.compareHandlerYear(t,e):void 0}setRefreshViewHandler(t,e){"day"===e&&(this.refreshViewHandlerDay=t),"month"===e&&(this.refreshViewHandlerMonth=t),"year"===e&&(this.refreshViewHandlerYear=t)}refreshView(){"day"===this.datepickerMode&&this.refreshViewHandlerDay&&this.refreshViewHandlerDay(),"month"===this.datepickerMode&&this.refreshViewHandlerMonth&&this.refreshViewHandlerMonth(),"year"===this.datepickerMode&&this.refreshViewHandlerYear&&this.refreshViewHandlerYear()}dateFilter(t,e){return this.dateFormatter.format(t,e,this.locale)}isActive(t){return 0===this.compare(t.date,this.activeDate)&&(this.activeDateId=t.uid,!0)}createDateObject(t,e){const n={};return n.date=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n.date=this.fixTimeZone(n.date),n.label=this.dateFilter(t,e),n.selected=0===this.compare(t,this.selectedDate),n.disabled=this.isDisabled(t),n.current=0===this.compare(t,new Date),n.customClass=this.getCustomClassForDate(n.date),n}split(t,e){const n=[];for(;t.length>0;)n.push(t.splice(0,e));return n}fixTimeZone(t){const e=t.getHours();return new Date(t.getFullYear(),t.getMonth(),t.getDate(),23===e?e+2:0)}select(t,e=!0){this.datepickerMode===this.minMode?(this.activeDate||(this.activeDate=new Date(0,0,0,0,0,0,0)),this.activeDate=new Date(t.getFullYear(),t.getMonth(),t.getDate()),this.activeDate=this.fixTimeZone(this.activeDate),e&&this.selectionDone.emit(this.activeDate)):(this.activeDate=new Date(t.getFullYear(),t.getMonth(),t.getDate()),this.activeDate=this.fixTimeZone(this.activeDate),e&&(this.datepickerMode=this.modes[this.modes.indexOf(this.datepickerMode)-1])),this.selectedDate=new Date(this.activeDate.valueOf()),this.update.emit(this.activeDate),this.refreshView()}move(t){let e;if("day"===this.datepickerMode&&(e=this.stepDay),"month"===this.datepickerMode&&(e=this.stepMonth),"year"===this.datepickerMode&&(e=this.stepYear),e){const n=this.activeDate.getFullYear()+t*(e.years||0),a=this.activeDate.getMonth()+t*(e.months||0);this.activeDate=new Date(n,a,1),this.refreshView(),this.activeDateChange.emit(this.activeDate)}}toggleMode(t){const e=t||1;this.datepickerMode===this.maxMode&&1===e||this.datepickerMode===this.minMode&&-1===e||(this.datepickerMode=this.modes[this.modes.indexOf(this.datepickerMode)+e],this.refreshView())}getCustomClassForDate(t){if(!this.customClass)return"";const e=this.customClass.find(e=>e.date.valueOf()===t.valueOf()&&e.mode===this.datepickerMode,this);return void 0===e?"":e.clazz}compareDateDisabled(t,e){if(void 0!==t&&void 0!==e)return"day"===t.mode&&this.compareHandlerDay?this.compareHandlerDay(t.date,e):"month"===t.mode&&this.compareHandlerMonth?this.compareHandlerMonth(t.date,e):"year"===t.mode&&this.compareHandlerYear?this.compareHandlerYear(t.date,e):void 0}isDisabled(t){let e=!1;return this.dateDisabled&&this.dateDisabled.forEach(n=>{0===this.compareDateDisabled(n,t)&&(e=!0)}),this.dayDisabled&&(e=e||this.dayDisabled.indexOf(t.getDay())>-1),e||this.minDate&&this.compare(t,this.minDate)<0||this.maxDate&&this.compare(t,this.maxDate)>0}}class it{constructor(){this.locale="en",this.datepickerMode="day",this.startingDay=0,this.yearRange=20,this.minMode="day",this.maxMode="year",this.showWeeks=!0,this.formatDay="DD",this.formatMonth="MMMM",this.formatYear="YYYY",this.formatDayHeader="dd",this.formatDayTitle="MMMM YYYY",this.formatMonthTitle="YYYY",this.onlyCurrentMonth=!1,this.monthColLimit=3,this.yearColLimit=5,this.shortcutPropagation=!1}}class st{constructor(t){this.datepickerMode="day",this.showWeeks=!0,this.selectionDone=new a.EventEmitter(void 0),this.activeDateChange=new a.EventEmitter(void 0),this.onChange=Function.prototype,this.onTouched=Function.prototype,this._now=new Date,this.config=t,this.configureOptions()}get activeDate(){return this._activeDate||this._now}set activeDate(t){this._activeDate=t}configureOptions(){Object.assign(this,this.config)}onUpdate(t){this.activeDate=t,this.onChange(t)}onSelectionDone(t){this.selectionDone.emit(t)}onActiveDateChange(t){this.activeDateChange.emit(t)}writeValue(t){if(0!==this._datePicker.compare(t,this._activeDate))return t&&t instanceof Date?(this.activeDate=t,void this._datePicker.select(t,!1)):void(this.activeDate=t?new Date(t):void 0)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}}class ut{constructor(t){this.labels=[],this.rows=[],this.weekNumbers=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepDay={months:1},this.datePicker.setRefreshViewHandler((function(){const e=this.activeDate.getFullYear(),n=this.activeDate.getMonth(),a=new Date(e,n,1),r=this.startingDay-a.getDay(),i=r>0?7-r:-r,s=new Date(a.getTime());i>0&&s.setDate(1-i);const u=t.getDates(s,42),o=[];for(let t=0;t<42;t++){const e=this.createDateObject(u[t],this.formatDay);e.secondary=u[t].getMonth()!==n,e.uid=this.uniqueId+"-"+t,o[t]=e}t.labels=[];for(let l=0;l<7;l++)t.labels[l]={},t.labels[l].abbr=this.dateFilter(o[l].date,this.formatDayHeader),t.labels[l].full=this.dateFilter(o[l].date,"EEEE");if(t.title=this.dateFilter(this.activeDate,this.formatDayTitle),t.rows=this.split(o,7),this.showWeeks){t.weekNumbers=[];const e=(11-this.startingDay)%7,n=t.rows.length;for(let a=0;a<n;a++)t.weekNumbers.push(t.getISO8601WeekNumber(t.rows[a][e].date))}}),"day"),this.datePicker.setCompareHandler((function(t,e){const n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),a=new Date(e.getFullYear(),e.getMonth(),e.getDate());return n.getTime()-a.getTime()}),"day"),this.datePicker.refreshView()}getDates(t,e){const n=new Array(e);let a,r=new Date(t.getTime()),i=0;for(;i<e;)a=new Date(r.getTime()),a=this.datePicker.fixTimeZone(a),n[i++]=a,r=new Date(a.getFullYear(),a.getMonth(),a.getDate()+1);return n}getISO8601WeekNumber(t){const e=new Date(t.getTime());e.setDate(e.getDate()+4-(e.getDay()||7));const n=e.getTime();return e.setMonth(0),e.setDate(1),Math.floor(Math.round((n-e.getTime())/864e5)/7)+1}}class ot{constructor(t){this.rows=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepMonth={years:1},this.datePicker.setRefreshViewHandler((function(){const e=new Array(12),n=this.activeDate.getFullYear();let a;for(let t=0;t<12;t++)a=new Date(n,t,1),a=this.fixTimeZone(a),e[t]=this.createDateObject(a,this.formatMonth),e[t].uid=this.uniqueId+"-"+t;t.title=this.dateFilter(this.activeDate,this.formatMonthTitle),t.rows=this.split(e,t.datePicker.monthColLimit)}),"month"),this.datePicker.setCompareHandler((function(t,e){const n=new Date(t.getFullYear(),t.getMonth()),a=new Date(e.getFullYear(),e.getMonth());return n.getTime()-a.getTime()}),"month"),this.datePicker.refreshView()}}class lt{constructor(t){this.rows=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepYear={years:this.datePicker.yearRange},this.datePicker.setRefreshViewHandler((function(){const e=new Array(this.yearRange);let n;const a=t.getStartingYear(this.activeDate.getFullYear());for(let t=0;t<this.yearRange;t++)n=new Date(a+t,0,1),n=this.fixTimeZone(n),e[t]=this.createDateObject(n,this.formatYear),e[t].uid=this.uniqueId+"-"+t;t.title=[e[0].label,e[this.yearRange-1].label].join(" - "),t.rows=this.split(e,t.datePicker.yearColLimit)}),"year"),this.datePicker.setCompareHandler((function(t,e){return t.getFullYear()-e.getFullYear()}),"year"),this.datePicker.refreshView()}getStartingYear(t){return(t-1)/this.datePicker.yearRange*this.datePicker.yearRange+1}}class dt{static forRoot(){return{ngModule:dt,providers:[it]}}}},im1V:function(t,e,n){var a=n("Q7RW"),r=n("KNDS");t.exports=function(t){return null!=t&&r(t.length)&&!a(t)}},insk:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");n("20UP");class r{constructor(t,e,n){this.sanitizer=t,this.settingsService=e,this.i18n=n,this.grafanaExist=!1,this.mode="&kiosk",this.loading=!0,this.styles={},this.dashboardExist=!0,this.icons=a.a,this.DEFAULT_TIME="from=now-1h&to=now",this.grafanaTimes=[{name:this.i18n("Last 5 minutes"),value:"from=now-5m&to=now"},{name:this.i18n("Last 15 minutes"),value:"from=now-15m&to=now"},{name:this.i18n("Last 30 minutes"),value:"from=now-30m&to=now"},{name:this.i18n("Last 1 hour (Default)"),value:"from=now-1h&to=now"},{name:this.i18n("Last 3 hours"),value:"from=now-3h&to=now"},{name:this.i18n("Last 6 hours"),value:"from=now-6h&to=now"},{name:this.i18n("Last 12 hours"),value:"from=now-12h&to=now"},{name:this.i18n("Last 24 hours"),value:"from=now-24h&to=now"},{name:this.i18n("Yesterday"),value:"from=now-1d%2Fd&to=now-1d%2Fd"},{name:this.i18n("Today so far"),value:"from=now%2Fd&to=now"},{name:this.i18n("Day before yesterday"),value:"from=now-2d%2Fd&to=now-2d%2Fd"},{name:this.i18n("Last 2 days"),value:"from=now-2d&to=now"},{name:this.i18n("This day last week"),value:"from=now-7d%2Fd&to=now-7d%2Fd"},{name:this.i18n("Previous week"),value:"from=now-1w%2Fw&to=now-1w%2Fw"},{name:this.i18n("This week so far"),value:"from=now%2Fw&to=now"},{name:this.i18n("Last 7 days"),value:"from=now-7d&to=now"},{name:this.i18n("Previous month"),value:"from=now-1M%2FM&to=now-1M%2FM"},{name:this.i18n("This month so far"),value:"from=now%2FM&to=now"},{name:this.i18n("Last 30 days"),value:"from=now-30d&to=now"},{name:this.i18n("Last 90 days"),value:"from=now-90d&to=now"},{name:this.i18n("Last 6 months"),value:"from=now-6M&to=now"},{name:this.i18n("Last 1 year"),value:"from=now-1y&to=now"},{name:this.i18n("Previous year"),value:"from=now-1y%2Fy&to=now-1y%2Fy"},{name:this.i18n("This year so far"),value:"from=now%2Fy&to=now"},{name:this.i18n("Last 2 years"),value:"from=now-2y&to=now"},{name:this.i18n("Last 5 years"),value:"from=now-5y&to=now"}]}ngOnInit(){this.time=this.DEFAULT_TIME,this.styles={one:"grafana_one",two:"grafana_two",three:"grafana_three",four:"grafana_four"},this.settingsService.ifSettingConfigured("api/grafana/url",t=>{this.grafanaExist=!0,this.loading=!1,this.baseUrl=t+"/d/",this.getFrame()}),this.panelStyle=this.styles[this.grafanaStyle]}getFrame(){this.settingsService.validateGrafanaDashboardUrl(this.uid).subscribe(t=>this.dashboardExist=200===t),this.url=this.baseUrl+this.uid+"/"+this.grafanaPath+"&refresh=2s"+this.mode+"&"+this.time,this.grafanaSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.url)}onTimepickerChange(){this.grafanaExist&&this.getFrame()}reset(){this.time=this.DEFAULT_TIME,this.grafanaExist&&this.getFrame()}ngOnChanges(){this.grafanaExist&&this.getFrame()}}},ioe2:function(t,e,n){var a=n("xAZD");t.exports=function(t,e){return a(e,(function(e){return t[e]}))}},iqWW:function(t,e,n){"use strict";var a=n("ZUd8").charAt;t.exports=function(t,e,n){return e+(n?a(t,e).length:1)}},isl5:function(t,e,n){var a=n("Wa4q");t.exports=a["__core-js_shared__"]},iutN:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("FE24"),i=n("GS7A"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function u(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[],[[2,"dropup",null],[2,"dropdown",null],[2,"show",null],[2,"open",null]],null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){var n=e.component;t(e,0,0,"up"===n.direction,"down"===n.direction,n.isOpen,n.isOpen)}))}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-dropdown-container",[["style","display:block;position: absolute;"]],null,null,null,u,s)),a["ɵdid"](1,180224,null,0,r.b,[r.f,a.ChangeDetectorRef,a.Renderer2,a.ElementRef,i.b],null,null)],null,null)}var l=a["ɵccf"]("bs-dropdown-container",r.b,o,{},{},["*"])},j09V:function(t,e,n){(function(t){var a=n("Wa4q"),r=e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,s=i&&i.exports===r?a.Buffer:void 0,u=s?s.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,a=u?u(n):new t.constructor(n);return t.copy(a),a}}).call(this,n("YuTi")(t))},j8L6:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("25BL"),i=n("uIqm"),s=n("DqMs"),u=n("/NlG"),o=n("GiVz"),l=n("o4+5"),d=n("aXbf"),c=n("SVse");n("b5OY"),n("pxLl"),n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return b}));var f=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function h(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," "," "])),a["ɵppd"](1,1)],null,(function(t,e){var n=a["ɵunv"](e,0,0,t(e,1,0,a["ɵnov"](e.parent.parent,0),e.context.row.value));t(e,0,0,n,e.context.row.unit)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.getCounters(n)&&a),a}),r.b,r.a)),a["ɵdid"](1,2867200,null,0,i.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoSave:[3,"autoSave"]},{fetchData:"fetchData"}),(t()(),a["ɵand"](0,[[1,2],["valueTpl",2]],null,0,null,h))],(function(t,e){var n=e.component;t(e,1,0,n.counters,n.columns,"flex",!1)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,u.a,[o.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Performance counters not available"]))],(function(t,e){t(e,1,0,"warning")}),null)}function b(t){return a["ɵvid"](0,[a["ɵpid"](0,l.a,[d.a]),a["ɵqud"](671088640,1,{valueTpl:0}),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](3,16384,null,0,c.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["warning",2]],null,0,null,p))],(function(t,e){t(e,3,0,e.component.counters,a["ɵnov"](e,4))}),null)}},"jKX/":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));class a{constructor(t=[]){["read","create","update","delete"].forEach(e=>this[e]=t.includes(e))}}class r{constructor(t){this.hosts=new a(t.hosts),this.configOpt=new a(t["config-opt"]),this.pool=new a(t.pool),this.osd=new a(t.osd),this.monitor=new a(t.monitor),this.rbdImage=new a(t["rbd-image"]),this.iscsi=new a(t.iscsi),this.rbdMirroring=new a(t["rbd-mirroring"]),this.rgw=new a(t.rgw),this.cephfs=new a(t.cephfs),this.manager=new a(t.manager),this.log=new a(t.log),this.user=new a(t.user),this.grafana=new a(t.grafana),this.prometheus=new a(t.prometheus),this.nfs=new a(t["nfs-ganesha"])}}},jNLg:function(t,e,n){var a=n("hmSm"),r=n("QpVZ"),i=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,o=/^0o[0-7]+$/i,l=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(r(t))return NaN;if(a(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=a(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(i,"");var n=u.test(t);return n||o.test(t)?l(t.slice(2),n?2:8):s.test(t)?NaN:+t}},jUeY:function(t,e,n){!function(t){"use strict";t.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(t,e){return t?"string"==typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(t,e,n){return t>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(t){return"μ"===(t+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,e){var n,a=this._calendarEl[t],r=e&&e.hours();return((n=a)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(a=a.apply(e)),a.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("wd/R"))},jV1L:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({selector:"tree-node-expander",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <span\n        *ngIf="node.hasChildren"\n        [class.toggle-children-wrapper-expanded]="node.isExpanded"\n        [class.toggle-children-wrapper-collapsed]="node.isCollapsed"\n        class="toggle-children-wrapper"\n        (click)="node.mouseAction(\'expanderClick\', $event)"\n      >\n        <span class="toggle-children"></span>\n      </span>\n      <span *ngIf="!node.hasChildren" class="toggle-children-placeholder">\n      </span>\n    </ng-container>\n  '})],t)}()},jVDg:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n){this.poolName=t,this.namespace=e,this.imageName=n}static fromString(t){const e=t.split("/");return new this(e[0],e.length>=3?e[1]:null,e.length>=3?e[2]:e[1])}getNameSpace(){return this.namespace?this.namespace+"/":""}toString(){return`${this.poolName}/${this.getNameSpace()}${this.imageName}`}toStringEncoded(){return encodeURIComponent(`${this.poolName}/${this.getNameSpace()}${this.imageName}`)}}},jVdC:function(t,e,n){!function(t){"use strict";var e="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function a(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function r(t,e,n){var r=t+" ";switch(n){case"ss":return r+(a(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return r+(a(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return r+(a(t)?"godziny":"godzin");case"MM":return r+(a(t)?"miesiące":"miesięcy");case"yy":return r+(a(t)?"lata":"lat")}}t.defineLocale("pl",{months:function(t,a){return t?""===a?"("+n[t.month()]+"|"+e[t.month()]+")":/D MMMM/.test(a)?n[t.month()]:e[t.month()]:e},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},jZKg:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("HDdC"),r=n("quSY");function i(t,e){return new a.a(n=>{const a=new r.a;let i=0;return a.add(e.schedule((function(){i!==t.length?(n.next(t[i++]),n.closed||a.add(this.schedule())):n.complete()}))),a})}},jfSC:function(t,e,n){!function(t){"use strict";var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};t.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(t){return/بعد از ظهر/.test(t)},meridiem:function(t,e,n){return t<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(t){return t.replace(/[۰-۹]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("wd/R"))},jnO4:function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(t){return function(e,n,i,s){var u=a(e),o=r[t][a(e)];return 2===u&&(o=o[n?0:1]),o.replace(/%d/i,e)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];t.defineLocale("ar",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},jqoL:function(t,e,n){var a=n("+NyF"),r=n("RvDp");t.exports=function(t,e){return null!=t&&r(t,e,a)}},jqst:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="id-ID">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Pengalih navigasi</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dasbor</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klaster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hos</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Layanan</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfigurasi</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>peta CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Modul Ceph Manajer</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Log</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blok</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Pencerminan</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemfile</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Pengguna</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Buket</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Pilih bahasa</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Memuat data panel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Pemilih Waktu Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Reset Pengaturan</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Kembali</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Gagal memuat data.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>dipilih</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>ditemukan</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nama</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Deskripsi</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Deskripsi lengkap</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Bawaan</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon bawaan</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Nilai</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Simpan</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Penampil peta CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Memuat...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nama hos</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Isian ini tidak boleh kosong.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ya, saya yakin.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Batal</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Tutup</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Daftar Hos</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performa Keseluruhan</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Entri tidak ditemukan</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Log Klaster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Log Audit</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Memuat konfigurasi...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Konfigurasi tidak dapat dimuat.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edit modul Ceph Manajer</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Nilai yang dimasukkan bukan UUID yang valid, cth: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Nilai yang dimasukkan harus alamat IP yang valid.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Nilai yang dimasukkan harus berupa angka.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Nilai yang dimasukkan harus berupa angka atau desimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Perbarui</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID Klaster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap diubah</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kuorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kuorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con yang dibutuhkan</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon yang dibutuhkan</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Memenuhi Kuorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Tidak dalam Kuorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Tambah</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fitur</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD Klaster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Kirim</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Tingkat lanjut...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioritas pemulihan OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioritas</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Ubah nilai prioritas</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Isian ini harus diisi!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Nilai harus antara 0 dan 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ubah bobot</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Dalam } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {dalam } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Daftar OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Nilai</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edit</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Hapus</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Kesehatan</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistik </target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klien</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Semua klien dapat mengakses</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Alamat</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Wajib diisi</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Harus mengandung satu atau lebih nilai yang dipisahkan koma</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Contoh:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipe Akses</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Tambah klien</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Klaster tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Pilih klaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Tambah daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend Penyimpanan</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Tidak ada pool data tersedia --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Pilih backend penyimpanan --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Pengguna Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Pengguna tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Pilih pengguna gerbang objek --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID Pengguna CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Klien tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Pilih klien cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nama CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Label Keamanan</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Aktifkan label keamanan</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS Path</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Lintasan atau path harus dimulai dengan \'/\' dan diikuti dengan kata</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Direktori baru akan dibuat</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Path</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Path hanya boleh berupa \'/\' atau kata</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Buket baru akan dibuat</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protokol NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klien mungkin tidak dapat mount subdirektori (cth. jika Tag = foo, klien mungkin tidak bisa mount foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Dengan menggunakan opsi Tag yang berbeda, Path yang sama akan diekspor beberapa kali.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Dengan menggunakan opsi Pseudo yang berbeda, Path yang sama akan diekspor beberapa kali.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Tipe akses tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Pilih tipe akses --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Squash tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Pilih jenis squashing id pengguna yang akan dilakukan --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protokol Transport</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Selamat datang di Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nama pengguna harus diisi</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Kata sandi harus diisi</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Masuk</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Maaf, pengguna tidak terdaftar di Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Terlarang</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Maaf, Anda tidak dizinkan melihat hal yang Anda inginkan.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Konfigurasi RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Menghapus nilai konfigurasi lokal. Nilai konfigurasi induk akan diturun dan digunakan.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Nilai minimum adalah 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Daftar pool</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nama hanya boleh terdiri dari alfanumerik, tanda hubung, dan garis bawah.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Nama profil erasure code sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Pecahan data (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Harus sama dengan atau lebih dari 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Pecahan Coding (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Harus sama dengan atau lebih dari 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Penduga daya tahan (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalitas (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domain kegagalan Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalitas Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Tidak ada</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Teknik</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Ukuran paket</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush root</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Kelas perangkat Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>apa saja</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Direktori</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nama...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Nama pool Ceph yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Jenis pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Pilih jenis pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grup penempatan</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Dibutuhkan setidaknya satu grup penempatan!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Klaster Anda tidak dapat menangani PG sebanyak ini. Mohon hitung ulang jumlah PG yang dibutuhkan.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Bantuan penghitungan</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Jumlah replikasi</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flag</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC Overwrites</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplikasi</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil erasure code</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Tidak ada profil erasure code --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Pilih profil erasure code --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Aturan CRUSH</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Pilih aturan crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Aturan crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush steps</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Kompresi</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Mode</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritma</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Tidak ada algoritma pengompresian erasure --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Ukuran blob minimum</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>cth. 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Nilai harus lebih besar dari 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Ukuran maksimum blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>cth. 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Nilai harus lebih besar dari ukuran minimum blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rasio</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rasio kompresi</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Nilai harus antara 0.0 dan 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>cth. 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detail</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detail Performa</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detil Cache Bertingkat</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Pindahkan image ke tempat sampah</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Proteksi berakhir pada</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>TIDAK DIPROTEKSI</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Format tanggal salah. Mohon gunakan "TTTT-BB-HH JJ:mm:dd".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Proteksi telah kedaluarsa. Mohon pilih tanggal masa mendatang atau kosongkan.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Pindahkan Image</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Ikhtisar</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Target</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Otentikasi Discovery</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Pengguna</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nama pengguna harus terdiri dari 8 hingga 64 karakter dan\nhanya boleh mengandung huruf, \'.\', \'@\', \'-\', \'_\' atau \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Kata sandi</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Pengguna Bersama</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Kata sandi bersama</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informasi tersedia:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI Target tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool Data</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Dibuat</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Ukuran</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objek</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Ukuran objek</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Disiapkan</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total disiapkan</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unit setrip</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Jumlah setrip</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Induk</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Awalan nama blok</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Urutan</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshot</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Pengaturan ini akan membatalkan nilai global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Ini adalah nilai global. Tidak ada nilai yang diset untuk image ini.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' dan \'@\' tidak diperbolehkan.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Tidak ada pool rbd tersedia --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pilih pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Gunakan pool data terdedikasi</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool data</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool terdedikasi yang menyimpan data-objek dari RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Anda harus menaikkan ukuran.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Tingkat lanjut</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Setrip</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unit setrip</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Pilih ukuran setrip --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Isian ini harus diisi karena jumlah setrip telah ditentukan!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Unit setrip lebih besar dari ukuran objek.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Jumlah setrip</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Isian wajib diisi karena unit setrip didefinisikan!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Jumlah setrip harus lebih besar dari 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Anda akan mengembalikan semula</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Kosongkan Tempah Sampah</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Semua</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nama Pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Pulihkan Image</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Untuk memulihkan</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>ketik nama baru image dan pilih</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nama Baru</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Kedaluwarsa pada</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Diproteksi hingga</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologi iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Mengganti parameter ini dari nilai bawaan biasanya tidak diperlukan.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Pengaturan</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Konfirmasi</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pengaturan Lanjut</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Target IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Pola IQN salah.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Contoh: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Informasi lainnya</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Pengaturan lanjutan target ini telah dimodifikasi.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portal</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Tambahkan portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Pengaturan Image ini telah dimodifikasi.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Tambahkan image</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Otentikasi ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inisiator</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inisiator</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Klien IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Inisiator IQN harus unik.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nama pengguna harus terdiri atas 8 hingga 64 karakter dan\nhanya boleh mengandung huruf, \'.\', \'@\', \'-\', \'_\' atau \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Inisiator termasuk ke dalam grup. Image akan dikonfigurasi di dalam grup.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Tidak ada yang ditambahkan.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Tambahkan inisiator</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grup</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grup</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Tambahkan grup</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Tempat sampah</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Masalah</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Menyinkronkan</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Siap</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Edit mode pencerminan pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Klaster mitra harus dihapus sebelum menonaktfikan pencerminan.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Tambah} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nama Klaster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Nama klaster tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Alamat Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Alamat dengan pemisah-koma...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Alamat monitor tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX Key</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-encoded key...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Kunci CephX harus base64 encoded.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Penghitung kinerja tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Daftar Daemon</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Penghitung Performa</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Memuat data buket...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Id</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Nilai tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Nama yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Pemilik</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Pilih pengguna --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Diaktifkan</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Jenis indeks</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Aturan penempatan</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Penanda</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Penanda maksimum</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versi</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versi Master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Modifikasi waktu</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Zona grup</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kuota Buket</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Ukuran maksimum</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Objek maksimum</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nama pengguna</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Pilih nama pengguna --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Kunci otomatis-dibuat</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Kunci akses</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Kunci rahasia</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nama lengkap</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Alamat email</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Dihentikan</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistem</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Buket maksimum</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subpengguna</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Kemampuan</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kuota pengguna</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Tampilkan</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Kunci</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipe</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Pilih tipe --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Izin</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Pilih izin --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subpengguna</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>ID subpengguna sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>baca, tulis</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>penuh</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Kunci Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Sandi otomatis-dibuat</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Memuat data pengguna...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Data pengguna tidak dapat dimuat.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>ID pengguna yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ini bukan alamat email yang valid.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Alamat email yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Maks. buket</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Dimatikan</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Ubahsuai</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Kunci S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Tidak ada sub-pengguna.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Kunci tidak ditemukan.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Kemampuan tidak ada.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Ukuran tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Ukuran maks.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objek tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Objek maks.</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Nilai yang dimasukkan harus &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Deskripsi...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Izin</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Peran</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Konfirmasi kata sandi</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Konfirmasi kata sandi tidak sesuai dengan kata sandi.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Email</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Email tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Anda akan menghapus izin "pengguna baca / perbarui" dari diri Anda sendiri.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Jika melanjutkan, Anda tidak akan lagi dapat menambahkan atau menghapus peran dari pengguna manapun.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Anda yakin ingin melanjutkan?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Bantuan</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentasi </target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Tentang</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Pengaturan Dasbor</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Manajemen Pengguna</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Pengguna masuk</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Keluar</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atribut (peta OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadata tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadata</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Penghitung kinerja</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Tulis</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Baca</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Nilai saat ini</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Maks</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Sumber</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Level</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Boleh diperbarui saat dijalankan (bisa diedit)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tag</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Nilai Enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Lihat juga</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status Klaster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manajer Daemon</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Server Metadata</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Gateway iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS klien</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Throughput Pengguna</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Baca/Tulis Klien</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Scrub</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Kinerja</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Kapasitas mentah</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PG per OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapasitas</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Peringkat</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Terkini</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Otentikasi penemuan telah diperbarui</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Tidak ada portal yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Tidak ada image yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Tidak ada image yang tersedia. Mohon pastikan Anda telah menambahkan image ke target.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Tidak ada inisiator tersedia. Mohon pastikan Anda telah menambahkan inisiator ke target.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Target</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Keadaan</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Baca Bytes</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Tulis Bytes</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Ops Baca</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Ops Tulis</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Sejak</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Isu</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Kemajuan</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode Edit</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Tambahkan Mitra</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Edit Mitra</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Hapus Mitra</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Pemimpin</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Lokal</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Jauh</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>mitra pencerminan</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Kunci</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Perataan mendalam</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Lapisan</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Kunci eksklusif</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Peta objek (butuh kunci-eksklusif)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Penjurnalan (membutuhkan kunci-eksklusif)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>TIDAK DIPROTEKSI</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Kembalikan snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Kembalikan</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Dihapus pada</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipe</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>keadaan</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versi</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Hos</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>induk</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon siaga</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Peringkat</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivitas</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Penggunaan</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Diperbarui</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Nilai dapat diperbarui saat runtime.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemon/klien tidak dapat mengambil nilai dari\nbasis data konfigurasi monitor. Kami tidak mengizinkan mengubah ini dari \'ceph config\nset ...\'. Pilihan ini harus dikonfigurasi melalui ceph.conf atau CLI.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Pilihan hanya dapat bekerja selama daemon dimulai.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Pilihan hanya berpengaruh pada pembuatan klaster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Pilihan hanya berpengaruh pada pembuatan daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Layanan</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Nilai saat ini</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Dapat diedit</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Aktifkan</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Nonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Menghubungkan kembali, mohon tunggu...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Alamat Publik</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Buka Sesi</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Tidak boleh Masuk</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD yang telah ditandai keluar tidak akan ditandai masuk saat mereka menyala</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Tidak boleh Keluar</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD tidak akan otomatis ditandai keluar setelah interval dikonfigurasi</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Tidak Nyala</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD tidak diizinkan menyala</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Tidak Mati</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Laporan kegagalan OSD sedang diabaikan sehingga monitor tidak akan menandai OSD mati</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Jeda</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Jeda baca dan tulis</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nonaktifkan Scrub</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Scrubbing dinonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nonaktifkan Deep Scrub</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Deep Scrubing dinonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Tidak ada Penambalan</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Penambalan PG dihentikan</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Tidak ada Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Pemulihan PG dihentikan</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Urutan Bitwise</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Gunakan urutan bitwise</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Buang Snapdirs</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD memiliki snapset yang dikonversi</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Pulihkan yang telah dihapus</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Penghapusan dilakukan saat pemulihan bukan saat bermitra</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Batas Maks Log PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Taruh batas maks pada panjang log pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flag OSD diperbarui</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>keluar</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>masuk</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>gugur</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Tandai</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD hilang</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>ditandai hilang</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Buang</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>dibuang</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>hancurkan</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>dihancurkan</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>hapus</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bita baca</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bita tulis</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Ops baca</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Ops tulis</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Maks Penambalan</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Maks Pemulihan Aktif</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Maks Menjalankan Pemulihan Tunggal</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Jeda Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Tugas</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Keparahan</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Dimulai</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Terpakai</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Tersedia</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Bersih</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Bekerja</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Peringatan</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Tidak diketahui</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>nyala</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>tidak ada filesistem</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktif</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>siaga</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon aktif</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kuorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Layanan NFS Ganesha belum dikonfigurasi.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Pengguna CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Filesistem CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(diturunkan dari konfig global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>diturunkan dari konfig global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Pilih jenis squashing id pengguna yang akan dilakukan --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Tidak ada daemon tersedia.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Mode Cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min Waktu Usir</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min Waktu Buang</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Target Maks Bita</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Target Maks Objek</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Tidak ada aplikasi ditambahkan</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Batas aplikasi tercapai</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Sebuah pool hanya dapat memiliki empat definisi aplikasi.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Karakter diperbolehkan \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Panjang maksimum 128 karakter</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Saring atau tambah aplikasi</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Tambah aplikasi</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil erasure code</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Ukuran Replikasi</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Perubahan Terakhir</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil Erasure Code</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Aturan Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>buket</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>buket</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>pengguna</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>pengguna</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Cakupan</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Baca</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Buat</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Peran Sistem</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Perbarui pengguna</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Lanjutkan</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Anda dikeluarkan otomatis karena peran Anda telah berubah.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Tiap objek dipecah dalam pecahan-data, masing-masing disimpan pada OSD yang berbeda.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Hitung pecahan coding untuk tiap objek dan simpan pada OSD yang berbeda.\nJumlah pecahan data juga menjadi jumlah OSD yang diperbolehkan mati tanpa kehilangan data.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Plugin jerasure merupakan plugin paling umum dan fleksibel,\nserta merupakan plugin bawaan Ceph untuk pool erasure code.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Teknik yang lebih fleksibel yaitu reed_sol_van : cukup mengeset k\ndan m. Teknik cauchy_good bisa lebih cepat, namun Anda harus memilih ukuran paket\ndengan seksama. Semua reed_sol_r6_op, liberation, blaum_roth, liber8tion setara dengan RAID6\ndalam hal mereka hanya bisa diatur dengan m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Penyandian dilakukan setiap saat pada ukuran bita paket.\nSulit untuk menentukan ukuran paket yang tepat.\nSilakan cek dokumentasi jerasure untuk informasi lebih mendalam.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Pada plugin jerasure, saat objek dengan erasure code disimpan pada\nbanyak OSD, pemulihan dari OSD yang hilang membutuhkan akses dari OSD lainnya.\nContoh, saat jerasure dikonfigurasi dengan k=8 dan m=4, saat satu OSD mati, maka pemulihan akan membutuhkan pembacaan dari tujuh OSD lainnya.\n\nPlugin lrc erasure code membuat pecahan paritas lokal agar dapat memulihkan \ndengan OSD yang lebih sedikit. Contoh, jika lrc dikonfigurasi dengan k=8, m=4, dan l=4, maka lrc akan\nmembuat pecahan paritas tambahan tiap empat OSD. Saat satu OSD mati, maka pemulihan dapat dilakukan hanya dengan 4 OSD, alih-alih 7 OSD.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Kelompokkan pecahan data dan coding ke dalam ukuran lokalitas. Controh\nuntuk k=4 dan m=2, saat lokalitas=3 dua grup dari tiga akan dibuat. Setiap set akan\ndipulihkan tanpa membaca pecahan dari set lainnya.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Tipe buket crush setiap set pecahan yang didefinisikan oleh l  \nakan disimpan. Contoh, jika diset pada rak, tiap grup pecahan l akan \nditempatkan pada rak berbeda. Ini akan digunakan pada aturan step CRUSH yaitu \nmemilih tiap rak. Jika tidak diset, tidak akan ada pengelompokkan.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Plugin isa menghimpun perpustakaan ISA. Hanya dapat berjalan pada prosesor Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Plugin ISA memiliki dua jenis Reed Solomon.\nJika reed_sol_van diset, maka menjadi Vandermonde, jika cauchy diset, maka menjadi Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Plugin shec mengenkapsulasi banyak pustaka SHEC.\nHal ini agar ceph dapat dipulihkan dengan lebih efisien dari kode Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Jumlah potongan paritas yang masing-masing mencakup setiap potongan data \ndalam rentang perhitungannya. Nilai ini digunakan untuk perkiraan daya tahan. Contoh, jika c=2, \n2 OSD dapat mati tanpa kehilangan data.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nama buket crush digunakan sebagai langkah pertama dari aturan CRUSH.\nContoh diambil langkah bawaan.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Memastikan tidak ada pecahan data berada pada buket dengan domain kegagalan\nyang sama. Contoh, saat domain gagal adalah hos, maka tidak ada pecahan data yang akan disimpan \npada hos yang sama. Aturan CRUSH seperti step chooseleaf hos akan digunakan untuk hal tersebut.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Batasi penempatan ke perangkat dengan kelas tertentu\n(cth. ssd atau hdd), menggunakan nama kelas perangkat crush pada peta CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Set nama direktori empat plugin erasure code akan dimuat.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Izinkan semua operasi</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Izinkan hanya untuk operasi yang tidak mengubah server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Tidak diizinkan untuk operasi baca dan tulis, namun izinkan operasi lainnya</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Tidak diizinkan untuk baca, tulis, atau operasi lainnya yang mengubah atribut berkas atau konten direktori</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Tidak diizinkan untuk semua hal</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Pilih prioritas --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Rendah</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Tinggi</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informasi</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>5 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>15 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>30 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>1 Jam Terakhir (Bawaan)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>3 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>6 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>12 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>24 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Kemarin</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hari ini</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Sejauh hari ini</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Kemarin dulu</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>2 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Hari ini minggu lalu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Minggu lalu</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Minggu ini</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Sejauh minggu ini</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>7 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Bulan lalu</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Bulan ini</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Sejauh bulan ini</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>30 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>90 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>6 bulan terakhir</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>1 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Tahun lalu</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Tahun ini</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Sejauh tahun ini</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>2 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>5 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Tidak ada yang dipilih.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Batalkan memilih untuk memilih ulang</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Batas pemilihan tercapai</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tanda penyaringan</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Tambahkan lencana</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Tidak ada yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klon</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Salin</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Deep Scrub</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Hancurkan</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Ratakan</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Tandai Gugur</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Tandai Masuk</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Tandai Hilang</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Tandai Keluar</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteksi</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Ubah nama</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Pulihkan</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Pindahkan ke Tempat Sampah</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Tidak diproteksi</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Dihapus</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Diklon</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Disalin</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Diratakan</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Dibuang</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Dipulihkan</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Dikembalikan</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ya</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Tidak</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kualitas Layanan atau QoS</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Limit IO bytes per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Limit operasi IO per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limit Baca BPS </target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Limit byte baca per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limit IOPS Baca</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Limit operasi baca per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit Tulis BPS</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Limit tulis byte per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit IOPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Limit operasi tulis per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Letupan BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari IO byte.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Letupan IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst operasi IO.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Letupan Baca BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari baca byte.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Letupan IOPS Baca</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst operasi baca.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Letupan BPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari tulis byte.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Letupan IOPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari operasi baca.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Mengeksekusi</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>eksekusi</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Dieksekusi</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tugas tak diketahui</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Membuat</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>buat</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Memperbarui</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>perbarui</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Menghapus</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Pengklonan</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klon</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Menyalin</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>salin</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Meratakan</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>ratakan</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Mengembalikan</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>kembalikan</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Memindahkan</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>pindah</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>dipindahkan</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Tidak dapat menemukan image.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Memulihkan</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>pulihkan</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Membuang</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>buang</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>semua pool</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Gagal menonaktifkan pencerminan karena sedang bermitra.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},jtHE:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("XNiG"),r=n("qgXg"),i=n("quSY"),s=n("pxpQ"),u=n("9ppp"),o=n("Ylt2");class l extends a.a{constructor(t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,n){super(),this.scheduler=n,this._events=[],this._infiniteTimeWindow=!1,this._bufferSize=t<1?1:t,this._windowTime=e<1?1:e,e===Number.POSITIVE_INFINITY?(this._infiniteTimeWindow=!0,this.next=this.nextInfiniteTimeWindow):this.next=this.nextTimeWindow}nextInfiniteTimeWindow(t){const e=this._events;e.push(t),e.length>this._bufferSize&&e.shift(),super.next(t)}nextTimeWindow(t){this._events.push(new d(this._getNow(),t)),this._trimBufferThenGetEvents(),super.next(t)}_subscribe(t){const e=this._infiniteTimeWindow,n=e?this._events:this._trimBufferThenGetEvents(),a=this.scheduler,r=n.length;let l;if(this.closed)throw new u.a;if(this.isStopped||this.hasError?l=i.a.EMPTY:(this.observers.push(t),l=new o.a(this,t)),a&&t.add(t=new s.a(t,a)),e)for(let i=0;i<r&&!t.closed;i++)t.next(n[i]);else for(let i=0;i<r&&!t.closed;i++)t.next(n[i].value);return this.hasError?t.error(this.thrownError):this.isStopped&&t.complete(),l}_getNow(){return(this.scheduler||r.a).now()}_trimBufferThenGetEvents(){const t=this._getNow(),e=this._bufferSize,n=this._windowTime,a=this._events,r=a.length;let i=0;for(;i<r&&!(t-a[i].time<n);)i++;return r>e&&(i=Math.max(i,r-e)),i>0&&a.splice(0,i),a}}class d{constructor(t,e){this.time=t,this.value=e}}},jy8Y:function(t,e){t.exports=function(t){return this.__data__.has(t)}},"k9+3":function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},kA6G:function(t,e){t.exports=function(){return[]}},kEOa:function(t,e,n){!function(t){"use strict";var e={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};t.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(t){return t.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(t,e){return 12===t&&(t=0),"রাত"===e&&t>=4||"দুপুর"===e&&t<5||"বিকাল"===e?t+12:t},meridiem:function(t,e,n){return t<4?"রাত":t<10?"সকাল":t<17?"দুপুর":t<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("wd/R"))},kGkW:function(t,e,n){var a=n("rk81"),r=n("uy3s");t.exports=function(t,e,n,i){var s=n.length,u=s,o=!i;if(null==t)return!u;for(t=Object(t);s--;){var l=n[s];if(o&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++s<u;){var d=(l=n[s])[0],c=t[d],f=l[1];if(o&&l[2]){if(void 0===c&&!(d in t))return!1}else{var h=new a;if(i)var g=i(c,f,d,t,e,h);if(!(void 0===g?r(f,c,3,i,h):g))return!1}}return!0}},kJI8:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},kJWO:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")()},kOOl:function(t,e,n){var a=n("4zBA"),r=0,i=Math.random(),s=a(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+s(++r+i,36)}},kOpN:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("wd/R"))},kRJp:function(t,e,n){var a=n("g6v/"),r=n("m/L8"),i=n("XGwC");t.exports=a?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},kXVT:function(t,e,n){var a=n("hmSm");t.exports=function(t){return t==t&&!a(t)}},kmMV:function(t,e,n){"use strict";var a,r,i=n("xluM"),s=n("4zBA"),u=n("V37c"),o=n("rW0t"),l=n("n3/R"),d=n("VpIT"),c=n("fHMY"),f=n("afO8").get,h=n("/OPJ"),g=n("EHx7"),p=d("native-string-replace",String.prototype.replace),b=RegExp.prototype.exec,m=b,y=s("".charAt),v=s("".indexOf),x=s("".replace),_=s("".slice),T=(r=/b*/g,i(b,a=/a/,"a"),i(b,r,"a"),0!==a.lastIndex||0!==r.lastIndex),w=l.BROKEN_CARET,O=void 0!==/()??/.exec("")[1];(T||O||w||h||g)&&(m=function(t){var e,n,a,r,s,l,d,h=this,g=f(h),S=u(t),I=g.raw;if(I)return I.lastIndex=h.lastIndex,e=i(m,I,S),h.lastIndex=I.lastIndex,e;var N=g.groups,C=w&&h.sticky,R=i(o,h),A=h.source,k=0,E=S;if(C&&(R=x(R,"y",""),-1===v(R,"g")&&(R+="g"),E=_(S,h.lastIndex),h.lastIndex>0&&(!h.multiline||h.multiline&&"\n"!==y(S,h.lastIndex-1))&&(A="(?: "+A+")",E=" "+E,k++),n=new RegExp("^(?:"+A+")",R)),O&&(n=new RegExp("^"+A+"$(?!\\s)",R)),T&&(a=h.lastIndex),r=i(b,C?n:h,E),C?r?(r.input=_(r.input,k),r[0]=_(r[0],k),r.index=h.lastIndex,h.lastIndex+=r[0].length):h.lastIndex=0:T&&r&&(h.lastIndex=h.global?r.index+r[0].length:a),O&&r&&r.length>1&&i(p,r[0],n,(function(){for(s=1;s<arguments.length-2;s++)void 0===arguments[s]&&(r[s]=void 0)})),r&&N)for(r.groups=l=c(null),s=0;s<N.length;s++)l[(d=N[s])[0]]=r[d[1]];return r}),t.exports=m},"kn/O":function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("HDdC"),r=n("mtw6"),i=n("G1I9"),s=n("QTAa"),u=n("9nlD"),o=n("mSOc"),l=n("VXsX"),d=n("ufoC"),c=n("8Y7J");let f=(()=>{class t{constructor(t,e,n,a){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.taskManagerService=a}wrapTaskAroundCall({task:t,call:e}){return new a.a(n=>{e.subscribe(e=>{202===e.status?this._handleExecutingTasks(t):(this.summaryService.refresh(),t.success=!0,this.notificationService.notifyTask(t))},e=>{t.success=!1,t.exception=e.error,n.error(e)},()=>{n.complete()})})}_handleExecutingTasks(t){const e=new i.b(r.a.info,this.taskMessageService.getRunningTitle(t));e.isFinishedTask=!0,this.notificationService.show(e);const n=new s.a(t.name,t.metadata);this.summaryService.addRunningTask(n),this.taskManagerService.subscribe(n.name,n.metadata,t=>{this.notificationService.notifyTask(t)})}}return t.ngInjectableDef=c["ɵɵdefineInjectable"]({factory:function(){return new t(c["ɵɵinject"](u.a),c["ɵɵinject"](o.a),c["ɵɵinject"](d.a),c["ɵɵinject"](l.a))},token:t,providedIn:"root"}),t})()},kna9:function(t,e,n){var a=n("MOZO"),r=n("gBXJ"),i=n("BVkS"),s=n("Wv1A");t.exports=function(t,e){return e=a(e,t),null==(t=i(t,e))||delete t[s(r(e))]}},ktBm:function(t,e,n){var a=n("JEWA");t.exports=function(t,e){for(var n=t.length;n--;)if(a(t[n][0],e))return n;return-1}},kvvV:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("t/zF");class r extends a.a{}},l2xC:function(t,e){t.exports=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}},l5ep:function(t,e,n){!function(t){"use strict";t.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(t){var e="";return t>20?e=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(e=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][t]),t+e},week:{dow:1,doy:4}})}(n("wd/R"))},l7GE:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");class r extends a.a{notifyNext(t,e,n,a,r){this.destination.next(e)}notifyError(t,e){this.destination.error(t)}notifyComplete(t){this.destination.complete()}}},l9nr:function(t,e,n){var a=n("QjCD"),r=n("NtIB"),i=n("aHcz"),s=n("0GLT"),u=n("MaPG");t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?s(t)?r(t[0],t[1]):a(t):u(t)}},lEOU:function(t,e,n){var a=n("CNUl");t.exports=function(t,e){var n=e?a(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}},lJxs:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){return function(n){if("function"!=typeof t)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return n.lift(new i(t,e))}}class i{constructor(t,e){this.project=t,this.thisArg=e}call(t,e){return e.subscribe(new s(t,this.project,this.thisArg))}}class s extends a.a{constructor(t,e,n){super(t),this.project=e,this.count=0,this.thisArg=n||this}_next(t){let e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}},lMq5:function(t,e,n){var a=n("0Dky"),r=n("Fib7"),i=/#|\.prototype\./,s=function(t,e){var n=o[u(t)];return n==d||n!=l&&(r(e)?a(e):!!e)},u=s.normalize=function(t){return String(t).replace(i,".").toLowerCase()},o=s.data={},l=s.NATIVE="N",d=s.POLYFILL="P";t.exports=s},"lOp/":function(t,e,n){"use strict";var a=n("PqYM"),r=n("pxpQ"),i=n("eIep"),s=n("jtHE"),u=n("D0XW"),o=n("8Y7J");class l{constructor(t){this.zone=t,this.scheduler=u.a}now(){return this.scheduler.now()}}let d=(()=>{class t extends l{constructor(t){super(t)}schedule(...t){return this.zone.runOutsideAngular(()=>this.scheduler.schedule.apply(this.scheduler,t))}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](o.NgZone))},token:t,providedIn:"root"}),t})(),c=(()=>{class t extends l{constructor(t){super(t)}schedule(...t){return this.zone.run(()=>this.scheduler.schedule.apply(this.scheduler,t))}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](o.NgZone))},token:t,providedIn:"root"}),t})(),f=(()=>{class t{constructor(t,e){this.leave=t,this.enter=e}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](d),o["ɵɵinject"](c))},token:t,providedIn:"root"}),t})();n.d(e,"a",(function(){return h}));let h=(()=>{class t{constructor(t){this.ngZone=t,this.DEFAULT_REFRESH_INTERVAL=5e3,this.DEFAULT_DUE_TIME=0}get(t,e=this.DEFAULT_REFRESH_INTERVAL,n=this.DEFAULT_DUE_TIME){return Object(a.a)(n,e,this.ngZone.leave).pipe(Object(r.b)(this.ngZone.enter),Object(i.a)(t),function(t,e,n){let a;return a=t&&"object"==typeof t?t:{bufferSize:t,windowTime:void 0,refCount:!1,scheduler:void 0},t=>t.lift(function({bufferSize:t=Number.POSITIVE_INFINITY,windowTime:e=Number.POSITIVE_INFINITY,refCount:n,scheduler:a}){let r,i,u=0,o=!1,l=!1;return function(d){u++,r&&!o||(o=!1,r=new s.a(t,e,a),i=d.subscribe({next(t){r.next(t)},error(t){o=!0,r.error(t)},complete(){l=!0,i=void 0,r.complete()}}));const c=r.subscribe(this);this.add(()=>{u--,c.unsubscribe(),i&&!l&&n&&0===u&&(i.unsubscribe(),i=void 0,r=void 0)})}}(a))}({refCount:!0,bufferSize:1}))}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](f))},token:t,providedIn:"root"}),t})()},lPUB:function(t,e,n){var a=n("Ytn0");t.exports=function(t){return a(this,t).get(t)}},lXzo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"минута":"минуту":t+" "+(a=+t,r={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];t.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:e,m:e,mm:e,h:"час",hh:e,d:"день",dd:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(t){return/^(дня|вечера)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночи":t<12?"утра":t<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-й";case"D":return t+"-го";case"w":case"W":return t+"-я";default:return t}},week:{dow:1,doy:4}})}(n("wd/R"))},lYtQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){switch(n){case"s":return e?"хэдхэн секунд":"хэдхэн секундын";case"ss":return t+(e?" секунд":" секундын");case"m":case"mm":return t+(e?" минут":" минутын");case"h":case"hh":return t+(e?" цаг":" цагийн");case"d":case"dd":return t+(e?" өдөр":" өдрийн");case"M":case"MM":return t+(e?" сар":" сарын");case"y":case"yy":return t+(e?" жил":" жилийн");default:return t}}t.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(t){return"ҮХ"===t},meridiem:function(t,e,n){return t<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" өдөр";default:return t}}})}(n("wd/R"))},lgnt:function(t,e,n){!function(t){"use strict";var e={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};t.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},lsW8:function(t,e,n){(function(t){var a;(function(){var r="Expected a function",i="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],u="[object Arguments]",o="[object Array]",l="[object Boolean]",d="[object Date]",c="[object Error]",f="[object Function]",h="[object GeneratorFunction]",g="[object Map]",p="[object Number]",b="[object Object]",m="[object RegExp]",y="[object Set]",v="[object String]",x="[object Symbol]",_="[object WeakMap]",T="[object ArrayBuffer]",w="[object DataView]",O="[object Float32Array]",S="[object Float64Array]",I="[object Int8Array]",N="[object Int16Array]",C="[object Int32Array]",R="[object Uint8Array]",A="[object Uint16Array]",k="[object Uint32Array]",E=/\b__p \+= '';/g,L=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,M=/[&<>"']/g,q=RegExp(P.source),j=RegExp(M.source),F=/<%-([\s\S]+?)%>/g,V=/<%([\s\S]+?)%>/g,G=/<%=([\s\S]+?)%>/g,B=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,z=/^\w*$/,Y=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,H=/[\\^$.*+?()[\]{}|]/g,U=RegExp(H.source),W=/^\s+|\s+$/g,K=/^\s+/,$=/\s+$/,J=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Z=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,X=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,at=/^[-+]0x[0-9a-f]+$/i,rt=/^0b[01]+$/i,it=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,ut=/^(?:0|[1-9]\d*)$/,ot=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt=/($^)/,dt=/['\n\r\u2028\u2029\\]/g,ct="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ft="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ht="["+ft+"]",gt="["+ct+"]",pt="\\d+",bt="[a-z\\xdf-\\xf6\\xf8-\\xff]",mt="[^\\ud800-\\udfff"+ft+pt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",yt="\\ud83c[\\udffb-\\udfff]",vt="[^\\ud800-\\udfff]",xt="(?:\\ud83c[\\udde6-\\uddff]){2}",_t="[\\ud800-\\udbff][\\udc00-\\udfff]",Tt="[A-Z\\xc0-\\xd6\\xd8-\\xde]",wt="(?:"+bt+"|"+mt+")",Ot="(?:"+Tt+"|"+mt+")",St="(?:"+gt+"|"+yt+")?",It="[\\ufe0e\\ufe0f]?"+St+"(?:\\u200d(?:"+[vt,xt,_t].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*",Nt="(?:"+["[\\u2700-\\u27bf]",xt,_t].join("|")+")"+It,Ct="(?:"+[vt+gt+"?",gt,xt,_t,"[\\ud800-\\udfff]"].join("|")+")",Rt=RegExp("['’]","g"),At=RegExp(gt,"g"),kt=RegExp(yt+"(?="+yt+")|"+Ct+It,"g"),Et=RegExp([Tt+"?"+bt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ht,Tt,"$"].join("|")+")",Ot+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ht,Tt+wt,"$"].join("|")+")",Tt+"?"+wt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Tt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",pt,Nt].join("|"),"g"),Lt=RegExp("[\\u200d\\ud800-\\udfff"+ct+"\\ufe0e\\ufe0f]"),Dt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Mt=-1,qt={};qt[O]=qt[S]=qt[I]=qt[N]=qt[C]=qt[R]=qt["[object Uint8ClampedArray]"]=qt[A]=qt[k]=!0,qt[u]=qt[o]=qt[T]=qt[l]=qt[w]=qt[d]=qt[c]=qt[f]=qt[g]=qt[p]=qt[b]=qt[m]=qt[y]=qt[v]=qt[_]=!1;var jt={};jt[u]=jt[o]=jt[T]=jt[w]=jt[l]=jt[d]=jt[O]=jt[S]=jt[I]=jt[N]=jt[C]=jt[g]=jt[p]=jt[b]=jt[m]=jt[y]=jt[v]=jt[x]=jt[R]=jt["[object Uint8ClampedArray]"]=jt[A]=jt[k]=!0,jt[c]=jt[f]=jt[_]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Vt=parseFloat,Gt=parseInt,Bt="object"==typeof global&&global&&global.Object===Object&&global,zt="object"==typeof self&&self&&self.Object===Object&&self,Yt=Bt||zt||Function("return this")(),Ht=e&&!e.nodeType&&e,Ut=Ht&&"object"==typeof t&&t&&!t.nodeType&&t,Wt=Ut&&Ut.exports===Ht,Kt=Wt&&Bt.process,$t=function(){try{return Ut&&Ut.require&&Ut.require("util").types||Kt&&Kt.binding&&Kt.binding("util")}catch(t){}}(),Jt=$t&&$t.isArrayBuffer,Zt=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,te=$t&&$t.isSet,ee=$t&&$t.isTypedArray;function ne(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function ae(t,e,n,a){for(var r=-1,i=null==t?0:t.length;++r<i;){var s=t[r];e(a,s,n(s),t)}return a}function re(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}function ie(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function se(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}function ue(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}function oe(t,e){return!(null==t||!t.length)&&ye(t,e,0)>-1}function le(t,e,n){for(var a=-1,r=null==t?0:t.length;++a<r;)if(n(e,t[a]))return!0;return!1}function de(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}function ce(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}function fe(t,e,n,a){var r=-1,i=null==t?0:t.length;for(a&&i&&(n=t[++r]);++r<i;)n=e(n,t[r],r,t);return n}function he(t,e,n,a){var r=null==t?0:t.length;for(a&&r&&(n=t[--r]);r--;)n=e(n,t[r],r,t);return n}function ge(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}var pe=Te("length");function be(t,e,n){var a;return n(t,(function(t,n,r){if(e(t,n,r))return a=n,!1})),a}function me(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}function ye(t,e,n){return e==e?function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}(t,e,n):me(t,xe,n)}function ve(t,e,n,a){for(var r=n-1,i=t.length;++r<i;)if(a(t[r],e))return r;return-1}function xe(t){return t!=t}function _e(t,e){var n=null==t?0:t.length;return n?Se(t,e)/n:NaN}function Te(t){return function(e){return null==e?void 0:e[t]}}function we(t){return function(e){return null==t?void 0:t[e]}}function Oe(t,e,n,a,r){return r(t,(function(t,r,i){n=a?(a=!1,t):e(n,t,r,i)})),n}function Se(t,e){for(var n,a=-1,r=t.length;++a<r;){var i=e(t[a]);void 0!==i&&(n=void 0===n?i:n+i)}return n}function Ie(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}function Ne(t){return function(e){return t(e)}}function Ce(t,e){return de(e,(function(e){return t[e]}))}function Re(t,e){return t.has(e)}function Ae(t,e){for(var n=-1,a=t.length;++n<a&&ye(e,t[n],0)>-1;);return n}function ke(t,e){for(var n=t.length;n--&&ye(e,t[n],0)>-1;);return n}function Ee(t,e){for(var n=t.length,a=0;n--;)t[n]===e&&++a;return a}var Le=we({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),De=we({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function Pe(t){return"\\"+Ft[t]}function Me(t){return Lt.test(t)}function qe(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}function je(t,e){return function(n){return t(e(n))}}function Fe(t,e){for(var n=-1,a=t.length,r=0,s=[];++n<a;){var u=t[n];u!==e&&u!==i||(t[n]=i,s[r++]=n)}return s}function Ve(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}function Ge(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=[t,t]})),n}function Be(t){return Me(t)?function(t){for(var e=kt.lastIndex=0;kt.test(t);)++e;return e}(t):pe(t)}function ze(t){return Me(t)?function(t){return t.match(kt)||[]}(t):function(t){return t.split("")}(t)}var Ye=we({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),He=function t(e){var n,a=(e=null==e?Yt:He.defaults(Yt.Object(),e,He.pick(Yt,Pt))).Array,ct=e.Date,ft=e.Error,ht=e.Function,gt=e.Math,pt=e.Object,bt=e.RegExp,mt=e.String,yt=e.TypeError,vt=a.prototype,xt=pt.prototype,_t=e["__core-js_shared__"],Tt=ht.prototype.toString,wt=xt.hasOwnProperty,Ot=0,St=(n=/[^.]+$/.exec(_t&&_t.keys&&_t.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",It=xt.toString,Nt=Tt.call(pt),Ct=Yt._,kt=bt("^"+Tt.call(wt).replace(H,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Lt=Wt?e.Buffer:void 0,Ft=e.Symbol,Bt=e.Uint8Array,zt=Lt?Lt.allocUnsafe:void 0,Ht=je(pt.getPrototypeOf,pt),Ut=pt.create,Kt=xt.propertyIsEnumerable,$t=vt.splice,pe=Ft?Ft.isConcatSpreadable:void 0,we=Ft?Ft.iterator:void 0,Ue=Ft?Ft.toStringTag:void 0,We=function(){try{var t=Zr(pt,"defineProperty");return t({},"",{}),t}catch(e){}}(),Ke=e.clearTimeout!==Yt.clearTimeout&&e.clearTimeout,$e=ct&&ct.now!==Yt.Date.now&&ct.now,Je=e.setTimeout!==Yt.setTimeout&&e.setTimeout,Ze=gt.ceil,Qe=gt.floor,Xe=pt.getOwnPropertySymbols,tn=Lt?Lt.isBuffer:void 0,en=e.isFinite,nn=vt.join,an=je(pt.keys,pt),rn=gt.max,sn=gt.min,un=ct.now,on=e.parseInt,ln=gt.random,dn=vt.reverse,cn=Zr(e,"DataView"),fn=Zr(e,"Map"),hn=Zr(e,"Promise"),gn=Zr(e,"Set"),pn=Zr(e,"WeakMap"),bn=Zr(pt,"create"),mn=pn&&new pn,yn={},vn=Ii(cn),xn=Ii(fn),_n=Ii(hn),Tn=Ii(gn),wn=Ii(pn),On=Ft?Ft.prototype:void 0,Sn=On?On.valueOf:void 0,In=On?On.toString:void 0;function Nn(t){if(zs(t)&&!Es(t)&&!(t instanceof kn)){if(t instanceof An)return t;if(wt.call(t,"__wrapped__"))return Ni(t)}return new An(t)}var Cn=function(){function t(){}return function(e){if(!Bs(e))return{};if(Ut)return Ut(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Rn(){}function An(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function kn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function En(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Ln(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Dn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Pn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Dn;++e<n;)this.add(t[e])}function Mn(t){var e=this.__data__=new Ln(t);this.size=e.size}function qn(t,e){var n=Es(t),a=!n&&ks(t),r=!n&&!a&&Ms(t),i=!n&&!a&&!r&&Zs(t),s=n||a||r||i,u=s?Ie(t.length,mt):[],o=u.length;for(var l in t)!e&&!wt.call(t,l)||s&&("length"==l||r&&("offset"==l||"parent"==l)||i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||ri(l,o))||u.push(l);return u}function jn(t){var e=t.length;return e?t[Da(0,e-1)]:void 0}function Fn(t,e){return _i(pr(t),Kn(e,0,t.length))}function Vn(t){return _i(pr(t))}function Gn(t,e,n){(void 0!==n&&!Cs(t[e],n)||void 0===n&&!(e in t))&&Un(t,e,n)}function Bn(t,e,n){var a=t[e];wt.call(t,e)&&Cs(a,n)&&(void 0!==n||e in t)||Un(t,e,n)}function zn(t,e){for(var n=t.length;n--;)if(Cs(t[n][0],e))return n;return-1}function Yn(t,e,n,a){return Xn(t,(function(t,r,i){e(a,t,n(t),i)})),a}function Hn(t,e){return t&&br(e,vu(e),t)}function Un(t,e,n){"__proto__"==e&&We?We(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Wn(t,e){for(var n=-1,r=e.length,i=a(r),s=null==t;++n<r;)i[n]=s?void 0:gu(t,e[n]);return i}function Kn(t,e,n){return t==t&&(void 0!==n&&(t=t<=n?t:n),void 0!==e&&(t=t>=e?t:e)),t}function $n(t,e,n,a,r,i){var s,o=1&e,c=2&e,_=4&e;if(n&&(s=r?n(t,a,r,i):n(t)),void 0!==s)return s;if(!Bs(t))return t;var E=Es(t);if(E){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&wt.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!o)return pr(t,s)}else{var L=ti(t),D=L==f||L==h;if(Ms(t))return lr(t,o);if(L==b||L==u||D&&!r){if(s=c||D?{}:ni(t),!o)return c?function(t,e){return br(t,Xr(t),e)}(t,function(t,e){return t&&br(e,xu(e),t)}(s,t)):function(t,e){return br(t,Qr(t),e)}(t,Hn(s,t))}else{if(!jt[L])return r?t:{};s=function(t,e,n){var a=t.constructor;switch(e){case T:return dr(t);case l:case d:return new a(+t);case w:return function(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case O:case S:case I:case N:case C:case R:case"[object Uint8ClampedArray]":case A:case k:return cr(t,n);case g:return new a;case p:case v:return new a(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new a;case x:return Sn?pt(Sn.call(t)):{}}}(t,L,o)}}i||(i=new Mn);var P=i.get(t);if(P)return P;i.set(t,s),Ks(t)?t.forEach((function(a){s.add($n(a,e,n,a,t,i))})):Ys(t)&&t.forEach((function(a,r){s.set(r,$n(a,e,n,r,t,i))}));var M=E?void 0:(_?c?Yr:zr:c?xu:vu)(t);return re(M||t,(function(a,r){M&&(a=t[r=a]),Bn(s,r,$n(a,e,n,r,t,i))})),s}function Jn(t,e,n){var a=n.length;if(null==t)return!a;for(t=pt(t);a--;){var r=n[a],i=t[r];if(void 0===i&&!(r in t)||!(0,e[r])(i))return!1}return!0}function Zn(t,e,n){if("function"!=typeof t)throw new yt(r);return mi((function(){t.apply(void 0,n)}),e)}function Qn(t,e,n,a){var r=-1,i=oe,s=!0,u=t.length,o=[],l=e.length;if(!u)return o;n&&(e=de(e,Ne(n))),a?(i=le,s=!1):e.length>=200&&(i=Re,s=!1,e=new Pn(e));t:for(;++r<u;){var d=t[r],c=null==n?d:n(d);if(d=a||0!==d?d:0,s&&c==c){for(var f=l;f--;)if(e[f]===c)continue t;o.push(d)}else i(e,c,a)||o.push(d)}return o}Nn.templateSettings={escape:F,evaluate:V,interpolate:G,variable:"",imports:{_:Nn}},(Nn.prototype=Rn.prototype).constructor=Nn,(An.prototype=Cn(Rn.prototype)).constructor=An,(kn.prototype=Cn(Rn.prototype)).constructor=kn,En.prototype.clear=function(){this.__data__=bn?bn(null):{},this.size=0},En.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},En.prototype.get=function(t){var e=this.__data__;if(bn){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return wt.call(e,t)?e[t]:void 0},En.prototype.has=function(t){var e=this.__data__;return bn?void 0!==e[t]:wt.call(e,t)},En.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=bn&&void 0===e?"__lodash_hash_undefined__":e,this},Ln.prototype.clear=function(){this.__data__=[],this.size=0},Ln.prototype.delete=function(t){var e=this.__data__,n=zn(e,t);return!(n<0||(n==e.length-1?e.pop():$t.call(e,n,1),--this.size,0))},Ln.prototype.get=function(t){var e=this.__data__,n=zn(e,t);return n<0?void 0:e[n][1]},Ln.prototype.has=function(t){return zn(this.__data__,t)>-1},Ln.prototype.set=function(t,e){var n=this.__data__,a=zn(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new En,map:new(fn||Ln),string:new En}},Dn.prototype.delete=function(t){var e=$r(this,t).delete(t);return this.size-=e?1:0,e},Dn.prototype.get=function(t){return $r(this,t).get(t)},Dn.prototype.has=function(t){return $r(this,t).has(t)},Dn.prototype.set=function(t,e){var n=$r(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this},Pn.prototype.add=Pn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.clear=function(){this.__data__=new Ln,this.size=0},Mn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Mn.prototype.get=function(t){return this.__data__.get(t)},Mn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Ln){var a=n.__data__;if(!fn||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new Dn(a)}return n.set(t,e),this.size=n.size,this};var Xn=vr(ua),ta=vr(oa,!0);function ea(t,e){var n=!0;return Xn(t,(function(t,a,r){return n=!!e(t,a,r)})),n}function na(t,e,n){for(var a=-1,r=t.length;++a<r;){var i=t[a],s=e(i);if(null!=s&&(void 0===u?s==s&&!Js(s):n(s,u)))var u=s,o=i}return o}function aa(t,e){var n=[];return Xn(t,(function(t,a,r){e(t,a,r)&&n.push(t)})),n}function ra(t,e,n,a,r){var i=-1,s=t.length;for(n||(n=ai),r||(r=[]);++i<s;){var u=t[i];e>0&&n(u)?e>1?ra(u,e-1,n,a,r):ce(r,u):a||(r[r.length]=u)}return r}var ia=xr(),sa=xr(!0);function ua(t,e){return t&&ia(t,e,vu)}function oa(t,e){return t&&sa(t,e,vu)}function la(t,e){return ue(e,(function(e){return Fs(t[e])}))}function da(t,e){for(var n=0,a=(e=ir(e,t)).length;null!=t&&n<a;)t=t[Si(e[n++])];return n&&n==a?t:void 0}function ca(t,e,n){var a=e(t);return Es(t)?a:ce(a,n(t))}function fa(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Ue&&Ue in pt(t)?function(t){var e=wt.call(t,Ue),n=t[Ue];try{t[Ue]=void 0;var a=!0}catch(i){}var r=It.call(t);return a&&(e?t[Ue]=n:delete t[Ue]),r}(t):function(t){return It.call(t)}(t)}function ha(t,e){return t>e}function ga(t,e){return null!=t&&wt.call(t,e)}function pa(t,e){return null!=t&&e in pt(t)}function ba(t,e,n){for(var r=n?le:oe,i=t[0].length,s=t.length,u=s,o=a(s),l=1/0,d=[];u--;){var c=t[u];u&&e&&(c=de(c,Ne(e))),l=sn(c.length,l),o[u]=!n&&(e||i>=120&&c.length>=120)?new Pn(u&&c):void 0}c=t[0];var f=-1,h=o[0];t:for(;++f<i&&d.length<l;){var g=c[f],p=e?e(g):g;if(g=n||0!==g?g:0,!(h?Re(h,p):r(d,p,n))){for(u=s;--u;){var b=o[u];if(!(b?Re(b,p):r(t[u],p,n)))continue t}h&&h.push(p),d.push(g)}}return d}function ma(t,e,n){var a=null==(t=hi(t,e=ir(e,t)))?t:t[Si(ji(e))];return null==a?void 0:ne(a,t,n)}function ya(t){return zs(t)&&fa(t)==u}function va(t,e,n,a,r){return t===e||(null==t||null==e||!zs(t)&&!zs(e)?t!=t&&e!=e:function(t,e,n,a,r,i){var s=Es(t),f=Es(e),h=s?o:ti(t),_=f?o:ti(e),O=(h=h==u?b:h)==b,S=(_=_==u?b:_)==b,I=h==_;if(I&&Ms(t)){if(!Ms(e))return!1;s=!0,O=!1}if(I&&!O)return i||(i=new Mn),s||Zs(t)?Gr(t,e,n,a,r,i):function(t,e,n,a,r,i,s){switch(n){case w:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case T:return!(t.byteLength!=e.byteLength||!i(new Bt(t),new Bt(e)));case l:case d:case p:return Cs(+t,+e);case c:return t.name==e.name&&t.message==e.message;case m:case v:return t==e+"";case g:var u=qe;case y:if(u||(u=Ve),t.size!=e.size&&!(1&a))return!1;var o=s.get(t);if(o)return o==e;a|=2,s.set(t,e);var f=Gr(u(t),u(e),a,r,i,s);return s.delete(t),f;case x:if(Sn)return Sn.call(t)==Sn.call(e)}return!1}(t,e,h,n,a,r,i);if(!(1&n)){var N=O&&wt.call(t,"__wrapped__"),C=S&&wt.call(e,"__wrapped__");if(N||C){var R=N?t.value():t,A=C?e.value():e;return i||(i=new Mn),r(R,A,n,a,i)}}return!!I&&(i||(i=new Mn),function(t,e,n,a,r,i){var s=1&n,u=zr(t),o=u.length;if(o!=zr(e).length&&!s)return!1;for(var l=o;l--;){var d=u[l];if(!(s?d in e:wt.call(e,d)))return!1}var c=i.get(t),f=i.get(e);if(c&&f)return c==e&&f==t;var h=!0;i.set(t,e),i.set(e,t);for(var g=s;++l<o;){var p=t[d=u[l]],b=e[d];if(a)var m=s?a(b,p,d,e,t,i):a(p,b,d,t,e,i);if(!(void 0===m?p===b||r(p,b,n,a,i):m)){h=!1;break}g||(g="constructor"==d)}if(h&&!g){var y=t.constructor,v=e.constructor;y==v||!("constructor"in t)||!("constructor"in e)||"function"==typeof y&&y instanceof y&&"function"==typeof v&&v instanceof v||(h=!1)}return i.delete(t),i.delete(e),h}(t,e,n,a,r,i))}(t,e,n,a,va,r))}function xa(t,e,n,a){var r=n.length,i=r,s=!a;if(null==t)return!i;for(t=pt(t);r--;){var u=n[r];if(s&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++r<i;){var o=(u=n[r])[0],l=t[o],d=u[1];if(s&&u[2]){if(void 0===l&&!(o in t))return!1}else{var c=new Mn;if(a)var f=a(l,d,o,t,e,c);if(!(void 0===f?va(d,l,3,a,c):f))return!1}}return!0}function _a(t){return!(!Bs(t)||(e=t,St&&St in e))&&(Fs(t)?kt:it).test(Ii(t));var e}function Ta(t){return"function"==typeof t?t:null==t?Hu:"object"==typeof t?Es(t)?Na(t[0],t[1]):Ia(t):to(t)}function wa(t){if(!li(t))return an(t);var e=[];for(var n in pt(t))wt.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Oa(t,e){return t<e}function Sa(t,e){var n=-1,r=Ds(t)?a(t.length):[];return Xn(t,(function(t,a,i){r[++n]=e(t,a,i)})),r}function Ia(t){var e=Jr(t);return 1==e.length&&e[0][2]?ci(e[0][0],e[0][1]):function(n){return n===t||xa(n,t,e)}}function Na(t,e){return si(t)&&di(e)?ci(Si(t),e):function(n){var a=gu(n,t);return void 0===a&&a===e?pu(n,t):va(e,a,3)}}function Ca(t,e,n,a,r){t!==e&&ia(e,(function(i,s){if(r||(r=new Mn),Bs(i))!function(t,e,n,a,r,i,s){var u=pi(t,n),o=pi(e,n),l=s.get(o);if(l)Gn(t,n,l);else{var d=i?i(u,o,n+"",t,e,s):void 0,c=void 0===d;if(c){var f=Es(o),h=!f&&Ms(o),g=!f&&!h&&Zs(o);d=o,f||h||g?Es(u)?d=u:Ps(u)?d=pr(u):h?(c=!1,d=lr(o,!0)):g?(c=!1,d=cr(o,!0)):d=[]:Us(o)||ks(o)?(d=u,ks(u)?d=iu(u):Bs(u)&&!Fs(u)||(d=ni(o))):c=!1}c&&(s.set(o,d),r(d,o,a,i,s),s.delete(o)),Gn(t,n,d)}}(t,e,s,n,Ca,a,r);else{var u=a?a(pi(t,s),i,s+"",t,e,r):void 0;void 0===u&&(u=i),Gn(t,s,u)}}),xu)}function Ra(t,e){var n=t.length;if(n)return ri(e+=e<0?n:0,n)?t[e]:void 0}function Aa(t,e,n){e=e.length?de(e,(function(t){return Es(t)?function(e){return da(e,1===t.length?t[0]:t)}:t})):[Hu];var a=-1;return e=de(e,Ne(Kr())),function(t,e){var a=t.length;for(t.sort((function(t,e){return function(t,e,n){for(var a=-1,r=t.criteria,i=e.criteria,s=r.length,u=n.length;++a<s;){var o=fr(r[a],i[a]);if(o)return a>=u?o:o*("desc"==n[a]?-1:1)}return t.index-e.index}(t,e,n)}));a--;)t[a]=t[a].value;return t}(Sa(t,(function(t,n,r){return{criteria:de(e,(function(e){return e(t)})),index:++a,value:t}})))}function ka(t,e,n){for(var a=-1,r=e.length,i={};++a<r;){var s=e[a],u=da(t,s);n(u,s)&&Fa(i,ir(s,t),u)}return i}function Ea(t,e,n,a){var r=a?ve:ye,i=-1,s=e.length,u=t;for(t===e&&(e=pr(e)),n&&(u=de(t,Ne(n)));++i<s;)for(var o=0,l=e[i],d=n?n(l):l;(o=r(u,d,o,a))>-1;)u!==t&&$t.call(u,o,1),$t.call(t,o,1);return t}function La(t,e){for(var n=t?e.length:0,a=n-1;n--;){var r=e[n];if(n==a||r!==i){var i=r;ri(r)?$t.call(t,r,1):Za(t,r)}}return t}function Da(t,e){return t+Qe(ln()*(e-t+1))}function Pa(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=Qe(e/2))&&(t+=t)}while(e);return n}function Ma(t,e){return yi(fi(t,e,Hu),t+"")}function qa(t){return jn(Cu(t))}function ja(t,e){var n=Cu(t);return _i(n,Kn(e,0,n.length))}function Fa(t,e,n,a){if(!Bs(t))return t;for(var r=-1,i=(e=ir(e,t)).length,s=i-1,u=t;null!=u&&++r<i;){var o=Si(e[r]),l=n;if("__proto__"===o||"constructor"===o||"prototype"===o)return t;if(r!=s){var d=u[o];void 0===(l=a?a(d,o,u):void 0)&&(l=Bs(d)?d:ri(e[r+1])?[]:{})}Bn(u,o,l),u=u[o]}return t}var Va=mn?function(t,e){return mn.set(t,e),t}:Hu,Ga=We?function(t,e){return We(t,"toString",{configurable:!0,enumerable:!1,value:Bu(e),writable:!0})}:Hu;function Ba(t){return _i(Cu(t))}function za(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var s=a(i);++r<i;)s[r]=t[r+e];return s}function Ya(t,e){var n;return Xn(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}function Ha(t,e,n){var a=0,r=null==t?a:t.length;if("number"==typeof e&&e==e&&r<=2147483647){for(;a<r;){var i=a+r>>>1,s=t[i];null!==s&&!Js(s)&&(n?s<=e:s<e)?a=i+1:r=i}return r}return Ua(t,e,Hu,n)}function Ua(t,e,n,a){var r=0,i=null==t?0:t.length;if(0===i)return 0;for(var s=(e=n(e))!=e,u=null===e,o=Js(e),l=void 0===e;r<i;){var d=Qe((r+i)/2),c=n(t[d]),f=void 0!==c,h=null===c,g=c==c,p=Js(c);if(s)var b=a||g;else b=l?g&&(a||f):u?g&&f&&(a||!h):o?g&&f&&!h&&(a||!p):!h&&!p&&(a?c<=e:c<e);b?r=d+1:i=d}return sn(i,4294967294)}function Wa(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var s=t[n],u=e?e(s):s;if(!n||!Cs(u,o)){var o=u;i[r++]=0===s?0:s}}return i}function Ka(t){return"number"==typeof t?t:Js(t)?NaN:+t}function $a(t){if("string"==typeof t)return t;if(Es(t))return de(t,$a)+"";if(Js(t))return In?In.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ja(t,e,n){var a=-1,r=oe,i=t.length,s=!0,u=[],o=u;if(n)s=!1,r=le;else if(i>=200){var l=e?null:Pr(t);if(l)return Ve(l);s=!1,r=Re,o=new Pn}else o=e?[]:u;t:for(;++a<i;){var d=t[a],c=e?e(d):d;if(d=n||0!==d?d:0,s&&c==c){for(var f=o.length;f--;)if(o[f]===c)continue t;e&&o.push(c),u.push(d)}else r(o,c,n)||(o!==u&&o.push(c),u.push(d))}return u}function Za(t,e){return null==(t=hi(t,e=ir(e,t)))||delete t[Si(ji(e))]}function Qa(t,e,n,a){return Fa(t,e,n(da(t,e)),a)}function Xa(t,e,n,a){for(var r=t.length,i=a?r:-1;(a?i--:++i<r)&&e(t[i],i,t););return n?za(t,a?0:i,a?i+1:r):za(t,a?i+1:0,a?r:i)}function tr(t,e){var n=t;return n instanceof kn&&(n=n.value()),fe(e,(function(t,e){return e.func.apply(e.thisArg,ce([t],e.args))}),n)}function er(t,e,n){var r=t.length;if(r<2)return r?Ja(t[0]):[];for(var i=-1,s=a(r);++i<r;)for(var u=t[i],o=-1;++o<r;)o!=i&&(s[i]=Qn(s[i]||u,t[o],e,n));return Ja(ra(s,1),e,n)}function nr(t,e,n){for(var a=-1,r=t.length,i=e.length,s={};++a<r;)n(s,t[a],a<i?e[a]:void 0);return s}function ar(t){return Ps(t)?t:[]}function rr(t){return"function"==typeof t?t:Hu}function ir(t,e){return Es(t)?t:si(t,e)?[t]:Oi(su(t))}var sr=Ma;function ur(t,e,n){var a=t.length;return n=void 0===n?a:n,!e&&n>=a?t:za(t,e,n)}var or=Ke||function(t){return Yt.clearTimeout(t)};function lr(t,e){if(e)return t.slice();var n=t.length,a=zt?zt(n):new t.constructor(n);return t.copy(a),a}function dr(t){var e=new t.constructor(t.byteLength);return new Bt(e).set(new Bt(t)),e}function cr(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function fr(t,e){if(t!==e){var n=void 0!==t,a=null===t,r=t==t,i=Js(t),s=void 0!==e,u=null===e,o=e==e,l=Js(e);if(!u&&!l&&!i&&t>e||i&&s&&o&&!u&&!l||a&&s&&o||!n&&o||!r)return 1;if(!a&&!i&&!l&&t<e||l&&n&&r&&!a&&!i||u&&n&&r||!s&&r||!o)return-1}return 0}function hr(t,e,n,r){for(var i=-1,s=t.length,u=n.length,o=-1,l=e.length,d=rn(s-u,0),c=a(l+d),f=!r;++o<l;)c[o]=e[o];for(;++i<u;)(f||i<s)&&(c[n[i]]=t[i]);for(;d--;)c[o++]=t[i++];return c}function gr(t,e,n,r){for(var i=-1,s=t.length,u=-1,o=n.length,l=-1,d=e.length,c=rn(s-o,0),f=a(c+d),h=!r;++i<c;)f[i]=t[i];for(var g=i;++l<d;)f[g+l]=e[l];for(;++u<o;)(h||i<s)&&(f[g+n[u]]=t[i++]);return f}function pr(t,e){var n=-1,r=t.length;for(e||(e=a(r));++n<r;)e[n]=t[n];return e}function br(t,e,n,a){var r=!n;n||(n={});for(var i=-1,s=e.length;++i<s;){var u=e[i],o=a?a(n[u],t[u],u,n,t):void 0;void 0===o&&(o=t[u]),r?Un(n,u,o):Bn(n,u,o)}return n}function mr(t,e){return function(n,a){var r=Es(n)?ae:Yn,i=e?e():{};return r(n,t,Kr(a,2),i)}}function yr(t){return Ma((function(e,n){var a=-1,r=n.length,i=r>1?n[r-1]:void 0,s=r>2?n[2]:void 0;for(i=t.length>3&&"function"==typeof i?(r--,i):void 0,s&&ii(n[0],n[1],s)&&(i=r<3?void 0:i,r=1),e=pt(e);++a<r;){var u=n[a];u&&t(e,u,a,i)}return e}))}function vr(t,e){return function(n,a){if(null==n)return n;if(!Ds(n))return t(n,a);for(var r=n.length,i=e?r:-1,s=pt(n);(e?i--:++i<r)&&!1!==a(s[i],i,s););return n}}function xr(t){return function(e,n,a){for(var r=-1,i=pt(e),s=a(e),u=s.length;u--;){var o=s[t?u:++r];if(!1===n(i[o],o,i))break}return e}}function _r(t){return function(e){var n=Me(e=su(e))?ze(e):void 0,a=n?n[0]:e.charAt(0),r=n?ur(n,1).join(""):e.slice(1);return a[t]()+r}}function Tr(t){return function(e){return fe(Fu(ku(e).replace(Rt,"")),t,"")}}function wr(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=Cn(t.prototype),a=t.apply(n,e);return Bs(a)?a:n}}function Or(t){return function(e,n,a){var r=pt(e);if(!Ds(e)){var i=Kr(n,3);e=vu(e),n=function(t){return i(r[t],t,r)}}var s=t(e,n,a);return s>-1?r[i?e[s]:s]:void 0}}function Sr(t){return Br((function(e){var n=e.length,a=n,i=An.prototype.thru;for(t&&e.reverse();a--;){var s=e[a];if("function"!=typeof s)throw new yt(r);if(i&&!u&&"wrapper"==Ur(s))var u=new An([],!0)}for(a=u?a:n;++a<n;){var o=Ur(s=e[a]),l="wrapper"==o?Hr(s):void 0;u=l&&ui(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?u[Ur(l[0])].apply(u,l[3]):1==s.length&&ui(s)?u[o]():u.thru(s)}return function(){var t=arguments,a=t[0];if(u&&1==t.length&&Es(a))return u.plant(a).value();for(var r=0,i=n?e[r].apply(this,t):a;++r<n;)i=e[r].call(this,i);return i}}))}function Ir(t,e,n,r,i,s,u,o,l,d){var c=128&e,f=1&e,h=2&e,g=24&e,p=512&e,b=h?void 0:wr(t);return function m(){for(var y=arguments.length,v=a(y),x=y;x--;)v[x]=arguments[x];if(g)var _=Wr(m),T=Ee(v,_);if(r&&(v=hr(v,r,i,g)),s&&(v=gr(v,s,u,g)),y-=T,g&&y<d){var w=Fe(v,_);return Lr(t,e,Ir,m.placeholder,n,v,w,o,l,d-y)}var O=f?n:this,S=h?O[t]:t;return y=v.length,o?v=gi(v,o):p&&y>1&&v.reverse(),c&&l<y&&(v.length=l),this&&this!==Yt&&this instanceof m&&(S=b||wr(S)),S.apply(O,v)}}function Nr(t,e){return function(n,a){return function(t,e,n,a){return ua(t,(function(t,r,i){e(a,n(t),r,i)})),a}(n,t,e(a),{})}}function Cr(t,e){return function(n,a){var r;if(void 0===n&&void 0===a)return e;if(void 0!==n&&(r=n),void 0!==a){if(void 0===r)return a;"string"==typeof n||"string"==typeof a?(n=$a(n),a=$a(a)):(n=Ka(n),a=Ka(a)),r=t(n,a)}return r}}function Rr(t){return Br((function(e){return e=de(e,Ne(Kr())),Ma((function(n){var a=this;return t(e,(function(t){return ne(t,a,n)}))}))}))}function Ar(t,e){var n=(e=void 0===e?" ":$a(e)).length;if(n<2)return n?Pa(e,t):e;var a=Pa(e,Ze(t/Be(e)));return Me(e)?ur(ze(a),0,t).join(""):a.slice(0,t)}function kr(t){return function(e,n,r){return r&&"number"!=typeof r&&ii(e,n,r)&&(n=r=void 0),e=eu(e),void 0===n?(n=e,e=0):n=eu(n),function(t,e,n,r){for(var i=-1,s=rn(Ze((e-t)/(n||1)),0),u=a(s);s--;)u[r?s:++i]=t,t+=n;return u}(e,n,r=void 0===r?e<n?1:-1:eu(r),t)}}function Er(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=ru(e),n=ru(n)),t(e,n)}}function Lr(t,e,n,a,r,i,s,u,o,l){var d=8&e;e|=d?32:64,4&(e&=~(d?64:32))||(e&=-4);var c=[t,e,r,d?i:void 0,d?s:void 0,d?void 0:i,d?void 0:s,u,o,l],f=n.apply(void 0,c);return ui(t)&&bi(f,c),f.placeholder=a,vi(f,t,e)}function Dr(t){var e=gt[t];return function(t,n){if(t=ru(t),(n=null==n?0:sn(nu(n),292))&&en(t)){var a=(su(t)+"e").split("e");return+((a=(su(e(a[0]+"e"+(+a[1]+n)))+"e").split("e"))[0]+"e"+(+a[1]-n))}return e(t)}}var Pr=gn&&1/Ve(new gn([,-0]))[1]==1/0?function(t){return new gn(t)}:Ju;function Mr(t){return function(e){var n=ti(e);return n==g?qe(e):n==y?Ge(e):function(t,e){return de(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function qr(t,e,n,s,u,o,l,d){var c=2&e;if(!c&&"function"!=typeof t)throw new yt(r);var f=s?s.length:0;if(f||(e&=-97,s=u=void 0),l=void 0===l?l:rn(nu(l),0),d=void 0===d?d:nu(d),f-=u?u.length:0,64&e){var h=s,g=u;s=u=void 0}var p=c?void 0:Hr(t),b=[t,e,n,s,u,h,g,o,l,d];if(p&&function(t,e){var n=t[1],a=e[1],r=n|a;if(!(r<131||128==a&&8==n||128==a&&256==n&&t[7].length<=e[8]||384==a&&e[7].length<=e[8]&&8==n))return t;1&a&&(t[2]=e[2],r|=1&n?0:4);var s=e[3];if(s){var u=t[3];t[3]=u?hr(u,s,e[4]):s,t[4]=u?Fe(t[3],i):e[4]}(s=e[5])&&(t[5]=(u=t[5])?gr(u,s,e[6]):s,t[6]=u?Fe(t[5],i):e[6]),(s=e[7])&&(t[7]=s),128&a&&(t[8]=null==t[8]?e[8]:sn(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=r}(b,p),t=b[0],e=b[1],n=b[2],s=b[3],u=b[4],!(d=b[9]=void 0===b[9]?c?0:t.length:rn(b[9]-f,0))&&24&e&&(e&=-25),e&&1!=e)m=8==e||16==e?function(t,e,n){var r=wr(t);return function i(){for(var s=arguments.length,u=a(s),o=s,l=Wr(i);o--;)u[o]=arguments[o];var d=s<3&&u[0]!==l&&u[s-1]!==l?[]:Fe(u,l);if((s-=d.length)<n)return Lr(t,e,Ir,i.placeholder,void 0,u,d,void 0,void 0,n-s);var c=this&&this!==Yt&&this instanceof i?r:t;return ne(c,this,u)}}(t,e,d):32!=e&&33!=e||u.length?Ir.apply(void 0,b):function(t,e,n,r){var i=1&e,s=wr(t);return function e(){for(var u=-1,o=arguments.length,l=-1,d=r.length,c=a(d+o),f=this&&this!==Yt&&this instanceof e?s:t;++l<d;)c[l]=r[l];for(;o--;)c[l++]=arguments[++u];return ne(f,i?n:this,c)}}(t,e,n,s);else var m=function(t,e,n){var a=1&e,r=wr(t);return function e(){var i=this&&this!==Yt&&this instanceof e?r:t;return i.apply(a?n:this,arguments)}}(t,e,n);return vi((p?Va:bi)(m,b),t,e)}function jr(t,e,n,a){return void 0===t||Cs(t,xt[n])&&!wt.call(a,n)?e:t}function Fr(t,e,n,a,r,i){return Bs(t)&&Bs(e)&&(i.set(e,t),Ca(t,e,void 0,Fr,i),i.delete(e)),t}function Vr(t){return Us(t)?void 0:t}function Gr(t,e,n,a,r,i){var s=1&n,u=t.length,o=e.length;if(u!=o&&!(s&&o>u))return!1;var l=i.get(t),d=i.get(e);if(l&&d)return l==e&&d==t;var c=-1,f=!0,h=2&n?new Pn:void 0;for(i.set(t,e),i.set(e,t);++c<u;){var g=t[c],p=e[c];if(a)var b=s?a(p,g,c,e,t,i):a(g,p,c,t,e,i);if(void 0!==b){if(b)continue;f=!1;break}if(h){if(!ge(e,(function(t,e){if(!Re(h,e)&&(g===t||r(g,t,n,a,i)))return h.push(e)}))){f=!1;break}}else if(g!==p&&!r(g,p,n,a,i)){f=!1;break}}return i.delete(t),i.delete(e),f}function Br(t){return yi(fi(t,void 0,Li),t+"")}function zr(t){return ca(t,vu,Qr)}function Yr(t){return ca(t,xu,Xr)}var Hr=mn?function(t){return mn.get(t)}:Ju;function Ur(t){for(var e=t.name+"",n=yn[e],a=wt.call(yn,e)?n.length:0;a--;){var r=n[a],i=r.func;if(null==i||i==t)return r.name}return e}function Wr(t){return(wt.call(Nn,"placeholder")?Nn:t).placeholder}function Kr(){var t=Nn.iteratee||Uu;return t=t===Uu?Ta:t,arguments.length?t(arguments[0],arguments[1]):t}function $r(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function Jr(t){for(var e=vu(t),n=e.length;n--;){var a=e[n],r=t[a];e[n]=[a,r,di(r)]}return e}function Zr(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return _a(n)?n:void 0}var Qr=Xe?function(t){return null==t?[]:(t=pt(t),ue(Xe(t),(function(e){return Kt.call(t,e)})))}:ao,Xr=Xe?function(t){for(var e=[];t;)ce(e,Qr(t)),t=Ht(t);return e}:ao,ti=fa;function ei(t,e,n){for(var a=-1,r=(e=ir(e,t)).length,i=!1;++a<r;){var s=Si(e[a]);if(!(i=null!=t&&n(t,s)))break;t=t[s]}return i||++a!=r?i:!!(r=null==t?0:t.length)&&Gs(r)&&ri(s,r)&&(Es(t)||ks(t))}function ni(t){return"function"!=typeof t.constructor||li(t)?{}:Cn(Ht(t))}function ai(t){return Es(t)||ks(t)||!!(pe&&t&&t[pe])}function ri(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&ut.test(t))&&t>-1&&t%1==0&&t<e}function ii(t,e,n){if(!Bs(n))return!1;var a=typeof e;return!!("number"==a?Ds(n)&&ri(e,n.length):"string"==a&&e in n)&&Cs(n[e],t)}function si(t,e){if(Es(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Js(t))||z.test(t)||!B.test(t)||null!=e&&t in pt(e)}function ui(t){var e=Ur(t),n=Nn[e];if("function"!=typeof n||!(e in kn.prototype))return!1;if(t===n)return!0;var a=Hr(n);return!!a&&t===a[0]}(cn&&ti(new cn(new ArrayBuffer(1)))!=w||fn&&ti(new fn)!=g||hn&&"[object Promise]"!=ti(hn.resolve())||gn&&ti(new gn)!=y||pn&&ti(new pn)!=_)&&(ti=function(t){var e=fa(t),n=e==b?t.constructor:void 0,a=n?Ii(n):"";if(a)switch(a){case vn:return w;case xn:return g;case _n:return"[object Promise]";case Tn:return y;case wn:return _}return e});var oi=_t?Fs:ro;function li(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||xt)}function di(t){return t==t&&!Bs(t)}function ci(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in pt(n))}}function fi(t,e,n){return e=rn(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,s=rn(r.length-e,0),u=a(s);++i<s;)u[i]=r[e+i];i=-1;for(var o=a(e+1);++i<e;)o[i]=r[i];return o[e]=n(u),ne(t,this,o)}}function hi(t,e){return e.length<2?t:da(t,za(e,0,-1))}function gi(t,e){for(var n=t.length,a=sn(e.length,n),r=pr(t);a--;){var i=e[a];t[a]=ri(i,n)?r[i]:void 0}return t}function pi(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var bi=xi(Va),mi=Je||function(t,e){return Yt.setTimeout(t,e)},yi=xi(Ga);function vi(t,e,n){var a=e+"";return yi(t,function(t,e){var n=e.length;if(!n)return t;var a=n-1;return e[a]=(n>1?"& ":"")+e[a],e=e.join(n>2?", ":" "),t.replace(J,"{\n/* [wrapped with "+e+"] */\n")}(a,function(t,e){return re(s,(function(n){var a="_."+n[0];e&n[1]&&!oe(t,a)&&t.push(a)})),t.sort()}(function(t){var e=t.match(Z);return e?e[1].split(Q):[]}(a),n)))}function xi(t){var e=0,n=0;return function(){var a=un(),r=16-(a-n);if(n=a,r>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function _i(t,e){var n=-1,a=t.length,r=a-1;for(e=void 0===e?a:e;++n<e;){var i=Da(n,r),s=t[i];t[i]=t[n],t[n]=s}return t.length=e,t}var Ti,wi,Oi=(Ti=Ts((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Y,(function(t,n,a,r){e.push(a?r.replace(tt,"$1"):n||t)})),e}),(function(t){return 500===wi.size&&wi.clear(),t})),wi=Ti.cache,Ti);function Si(t){if("string"==typeof t||Js(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ii(t){if(null!=t){try{return Tt.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function Ni(t){if(t instanceof kn)return t.clone();var e=new An(t.__wrapped__,t.__chain__);return e.__actions__=pr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Ci=Ma((function(t,e){return Ps(t)?Qn(t,ra(e,1,Ps,!0)):[]})),Ri=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),Kr(n,2)):[]})),Ai=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),void 0,n):[]}));function ki(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:nu(n);return r<0&&(r=rn(a+r,0)),me(t,Kr(e,3),r)}function Ei(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a-1;return void 0!==n&&(r=nu(n),r=n<0?rn(a+r,0):sn(r,a-1)),me(t,Kr(e,3),r,!0)}function Li(t){return null!=t&&t.length?ra(t,1):[]}function Di(t){return t&&t.length?t[0]:void 0}var Pi=Ma((function(t){var e=de(t,ar);return e.length&&e[0]===t[0]?ba(e):[]})),Mi=Ma((function(t){var e=ji(t),n=de(t,ar);return e===ji(n)?e=void 0:n.pop(),n.length&&n[0]===t[0]?ba(n,Kr(e,2)):[]})),qi=Ma((function(t){var e=ji(t),n=de(t,ar);return(e="function"==typeof e?e:void 0)&&n.pop(),n.length&&n[0]===t[0]?ba(n,void 0,e):[]}));function ji(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}var Fi=Ma(Vi);function Vi(t,e){return t&&t.length&&e&&e.length?Ea(t,e):t}var Gi=Br((function(t,e){var n=null==t?0:t.length,a=Wn(t,e);return La(t,de(e,(function(t){return ri(t,n)?+t:t})).sort(fr)),a}));function Bi(t){return null==t?t:dn.call(t)}var zi=Ma((function(t){return Ja(ra(t,1,Ps,!0))})),Yi=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),Ja(ra(t,1,Ps,!0),Kr(e,2))})),Hi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,Ja(ra(t,1,Ps,!0),void 0,e)}));function Ui(t){if(!t||!t.length)return[];var e=0;return t=ue(t,(function(t){if(Ps(t))return e=rn(t.length,e),!0})),Ie(e,(function(e){return de(t,Te(e))}))}function Wi(t,e){if(!t||!t.length)return[];var n=Ui(t);return null==e?n:de(n,(function(t){return ne(e,void 0,t)}))}var Ki=Ma((function(t,e){return Ps(t)?Qn(t,e):[]})),$i=Ma((function(t){return er(ue(t,Ps))})),Ji=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),er(ue(t,Ps),Kr(e,2))})),Zi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,er(ue(t,Ps),void 0,e)})),Qi=Ma(Ui),Xi=Ma((function(t){var e=t.length,n=e>1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Wi(t,n)}));function ts(t){var e=Nn(t);return e.__chain__=!0,e}function es(t,e){return e(t)}var ns=Br((function(t){var e=t.length,n=e?t[0]:0,a=this.__wrapped__,r=function(e){return Wn(e,t)};return!(e>1||this.__actions__.length)&&a instanceof kn&&ri(n)?((a=a.slice(n,+n+(e?1:0))).__actions__.push({func:es,args:[r],thisArg:void 0}),new An(a,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(r)})),as=mr((function(t,e,n){wt.call(t,n)?++t[n]:Un(t,n,1)})),rs=Or(ki),is=Or(Ei);function ss(t,e){return(Es(t)?re:Xn)(t,Kr(e,3))}function us(t,e){return(Es(t)?ie:ta)(t,Kr(e,3))}var os=mr((function(t,e,n){wt.call(t,n)?t[n].push(e):Un(t,n,[e])})),ls=Ma((function(t,e,n){var r=-1,i="function"==typeof e,s=Ds(t)?a(t.length):[];return Xn(t,(function(t){s[++r]=i?ne(e,t,n):ma(t,e,n)})),s})),ds=mr((function(t,e,n){Un(t,n,e)}));function cs(t,e){return(Es(t)?de:Sa)(t,Kr(e,3))}var fs=mr((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]})),hs=Ma((function(t,e){if(null==t)return[];var n=e.length;return n>1&&ii(t,e[0],e[1])?e=[]:n>2&&ii(e[0],e[1],e[2])&&(e=[e[0]]),Aa(t,ra(e,1),[])})),gs=$e||function(){return Yt.Date.now()};function ps(t,e,n){return e=n?void 0:e,qr(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function bs(t,e){var n;if("function"!=typeof e)throw new yt(r);return t=nu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var ms=Ma((function(t,e,n){var a=1;if(n.length){var r=Fe(n,Wr(ms));a|=32}return qr(t,a,e,n,r)})),ys=Ma((function(t,e,n){var a=3;if(n.length){var r=Fe(n,Wr(ys));a|=32}return qr(e,a,t,n,r)}));function vs(t,e,n){var a,i,s,u,o,l,d=0,c=!1,f=!1,h=!0;if("function"!=typeof t)throw new yt(r);function g(e){var n=a,r=i;return a=i=void 0,d=e,u=t.apply(r,n)}function p(t){return d=t,o=mi(m,e),c?g(t):u}function b(t){var n=t-l;return void 0===l||n>=e||n<0||f&&t-d>=s}function m(){var t=gs();if(b(t))return y(t);o=mi(m,function(t){var n=e-(t-l);return f?sn(n,s-(t-d)):n}(t))}function y(t){return o=void 0,h&&a?g(t):(a=i=void 0,u)}function v(){var t=gs(),n=b(t);if(a=arguments,i=this,l=t,n){if(void 0===o)return p(l);if(f)return or(o),o=mi(m,e),g(l)}return void 0===o&&(o=mi(m,e)),u}return e=ru(e)||0,Bs(n)&&(c=!!n.leading,s=(f="maxWait"in n)?rn(ru(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h),v.cancel=function(){void 0!==o&&or(o),d=0,a=l=i=o=void 0},v.flush=function(){return void 0===o?u:y(gs())},v}var xs=Ma((function(t,e){return Zn(t,1,e)})),_s=Ma((function(t,e,n){return Zn(t,ru(e)||0,n)}));function Ts(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new yt(r);var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(Ts.Cache||Dn),n}function ws(t){if("function"!=typeof t)throw new yt(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ts.Cache=Dn;var Os=sr((function(t,e){var n=(e=1==e.length&&Es(e[0])?de(e[0],Ne(Kr())):de(ra(e,1),Ne(Kr()))).length;return Ma((function(a){for(var r=-1,i=sn(a.length,n);++r<i;)a[r]=e[r].call(this,a[r]);return ne(t,this,a)}))})),Ss=Ma((function(t,e){return qr(t,32,void 0,e,Fe(e,Wr(Ss)))})),Is=Ma((function(t,e){return qr(t,64,void 0,e,Fe(e,Wr(Is)))})),Ns=Br((function(t,e){return qr(t,256,void 0,void 0,void 0,e)}));function Cs(t,e){return t===e||t!=t&&e!=e}var Rs=Er(ha),As=Er((function(t,e){return t>=e})),ks=ya(function(){return arguments}())?ya:function(t){return zs(t)&&wt.call(t,"callee")&&!Kt.call(t,"callee")},Es=a.isArray,Ls=Jt?Ne(Jt):function(t){return zs(t)&&fa(t)==T};function Ds(t){return null!=t&&Gs(t.length)&&!Fs(t)}function Ps(t){return zs(t)&&Ds(t)}var Ms=tn||ro,qs=Zt?Ne(Zt):function(t){return zs(t)&&fa(t)==d};function js(t){if(!zs(t))return!1;var e=fa(t);return e==c||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Us(t)}function Fs(t){if(!Bs(t))return!1;var e=fa(t);return e==f||e==h||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Vs(t){return"number"==typeof t&&t==nu(t)}function Gs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function Bs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function zs(t){return null!=t&&"object"==typeof t}var Ys=Qt?Ne(Qt):function(t){return zs(t)&&ti(t)==g};function Hs(t){return"number"==typeof t||zs(t)&&fa(t)==p}function Us(t){if(!zs(t)||fa(t)!=b)return!1;var e=Ht(t);if(null===e)return!0;var n=wt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Nt}var Ws=Xt?Ne(Xt):function(t){return zs(t)&&fa(t)==m},Ks=te?Ne(te):function(t){return zs(t)&&ti(t)==y};function $s(t){return"string"==typeof t||!Es(t)&&zs(t)&&fa(t)==v}function Js(t){return"symbol"==typeof t||zs(t)&&fa(t)==x}var Zs=ee?Ne(ee):function(t){return zs(t)&&Gs(t.length)&&!!qt[fa(t)]},Qs=Er(Oa),Xs=Er((function(t,e){return t<=e}));function tu(t){if(!t)return[];if(Ds(t))return $s(t)?ze(t):pr(t);if(we&&t[we])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[we]());var e=ti(t);return(e==g?qe:e==y?Ve:Cu)(t)}function eu(t){return t?(t=ru(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function nu(t){var e=eu(t),n=e%1;return e==e?n?e-n:e:0}function au(t){return t?Kn(nu(t),0,4294967295):0}function ru(t){if("number"==typeof t)return t;if(Js(t))return NaN;if(Bs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Bs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(W,"");var n=rt.test(t);return n||st.test(t)?Gt(t.slice(2),n?2:8):at.test(t)?NaN:+t}function iu(t){return br(t,xu(t))}function su(t){return null==t?"":$a(t)}var uu=yr((function(t,e){if(li(e)||Ds(e))br(e,vu(e),t);else for(var n in e)wt.call(e,n)&&Bn(t,n,e[n])})),ou=yr((function(t,e){br(e,xu(e),t)})),lu=yr((function(t,e,n,a){br(e,xu(e),t,a)})),du=yr((function(t,e,n,a){br(e,vu(e),t,a)})),cu=Br(Wn),fu=Ma((function(t,e){t=pt(t);var n=-1,a=e.length,r=a>2?e[2]:void 0;for(r&&ii(e[0],e[1],r)&&(a=1);++n<a;)for(var i=e[n],s=xu(i),u=-1,o=s.length;++u<o;){var l=s[u],d=t[l];(void 0===d||Cs(d,xt[l])&&!wt.call(t,l))&&(t[l]=i[l])}return t})),hu=Ma((function(t){return t.push(void 0,Fr),ne(Tu,void 0,t)}));function gu(t,e,n){var a=null==t?void 0:da(t,e);return void 0===a?n:a}function pu(t,e){return null!=t&&ei(t,e,pa)}var bu=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),t[e]=n}),Bu(Hu)),mu=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),wt.call(t,e)?t[e].push(n):t[e]=[n]}),Kr),yu=Ma(ma);function vu(t){return Ds(t)?qn(t):wa(t)}function xu(t){return Ds(t)?qn(t,!0):function(t){if(!Bs(t))return function(t){var e=[];if(null!=t)for(var n in pt(t))e.push(n);return e}(t);var e=li(t),n=[];for(var a in t)("constructor"!=a||!e&&wt.call(t,a))&&n.push(a);return n}(t)}var _u=yr((function(t,e,n){Ca(t,e,n)})),Tu=yr((function(t,e,n,a){Ca(t,e,n,a)})),wu=Br((function(t,e){var n={};if(null==t)return n;var a=!1;e=de(e,(function(e){return e=ir(e,t),a||(a=e.length>1),e})),br(t,Yr(t),n),a&&(n=$n(n,7,Vr));for(var r=e.length;r--;)Za(n,e[r]);return n})),Ou=Br((function(t,e){return null==t?{}:function(t,e){return ka(t,e,(function(e,n){return pu(t,n)}))}(t,e)}));function Su(t,e){if(null==t)return{};var n=de(Yr(t),(function(t){return[t]}));return e=Kr(e),ka(t,n,(function(t,n){return e(t,n[0])}))}var Iu=Mr(vu),Nu=Mr(xu);function Cu(t){return null==t?[]:Ce(t,vu(t))}var Ru=Tr((function(t,e,n){return e=e.toLowerCase(),t+(n?Au(e):e)}));function Au(t){return ju(su(t).toLowerCase())}function ku(t){return(t=su(t))&&t.replace(ot,Le).replace(At,"")}var Eu=Tr((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Lu=Tr((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Du=_r("toLowerCase"),Pu=Tr((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()})),Mu=Tr((function(t,e,n){return t+(n?" ":"")+ju(e)})),qu=Tr((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),ju=_r("toUpperCase");function Fu(t,e,n){return t=su(t),void 0===(e=n?void 0:e)?function(t){return Dt.test(t)}(t)?function(t){return t.match(Et)||[]}(t):function(t){return t.match(X)||[]}(t):t.match(e)||[]}var Vu=Ma((function(t,e){try{return ne(t,void 0,e)}catch(n){return js(n)?n:new ft(n)}})),Gu=Br((function(t,e){return re(e,(function(e){e=Si(e),Un(t,e,ms(t[e],t))})),t}));function Bu(t){return function(){return t}}var zu=Sr(),Yu=Sr(!0);function Hu(t){return t}function Uu(t){return Ta("function"==typeof t?t:$n(t,1))}var Wu=Ma((function(t,e){return function(n){return ma(n,t,e)}})),Ku=Ma((function(t,e){return function(n){return ma(t,n,e)}}));function $u(t,e,n){var a=vu(e),r=la(e,a);null!=n||Bs(e)&&(r.length||!a.length)||(n=e,e=t,t=this,r=la(e,vu(e)));var i=!(Bs(n)&&"chain"in n&&!n.chain),s=Fs(t);return re(r,(function(n){var a=e[n];t[n]=a,s&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),r=n.__actions__=pr(this.__actions__);return r.push({func:a,args:arguments,thisArg:t}),n.__chain__=e,n}return a.apply(t,ce([this.value()],arguments))})})),t}function Ju(){}var Zu=Rr(de),Qu=Rr(se),Xu=Rr(ge);function to(t){return si(t)?Te(Si(t)):function(t){return function(e){return da(e,t)}}(t)}var eo=kr(),no=kr(!0);function ao(){return[]}function ro(){return!1}var io,so=Cr((function(t,e){return t+e}),0),uo=Dr("ceil"),oo=Cr((function(t,e){return t/e}),1),lo=Dr("floor"),co=Cr((function(t,e){return t*e}),1),fo=Dr("round"),ho=Cr((function(t,e){return t-e}),0);return Nn.after=function(t,e){if("function"!=typeof e)throw new yt(r);return t=nu(t),function(){if(--t<1)return e.apply(this,arguments)}},Nn.ary=ps,Nn.assign=uu,Nn.assignIn=ou,Nn.assignInWith=lu,Nn.assignWith=du,Nn.at=cu,Nn.before=bs,Nn.bind=ms,Nn.bindAll=Gu,Nn.bindKey=ys,Nn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Es(t)?t:[t]},Nn.chain=ts,Nn.chunk=function(t,e,n){e=(n?ii(t,e,n):void 0===e)?1:rn(nu(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,s=0,u=a(Ze(r/e));i<r;)u[s++]=za(t,i,i+=e);return u},Nn.compact=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r},Nn.concat=function(){var t=arguments.length;if(!t)return[];for(var e=a(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return ce(Es(n)?pr(n):[n],ra(e,1))},Nn.cond=function(t){var e=null==t?0:t.length,n=Kr();return t=e?de(t,(function(t){if("function"!=typeof t[1])throw new yt(r);return[n(t[0]),t[1]]})):[],Ma((function(n){for(var a=-1;++a<e;){var r=t[a];if(ne(r[0],this,n))return ne(r[1],this,n)}}))},Nn.conforms=function(t){return function(t){var e=vu(t);return function(n){return Jn(n,t,e)}}($n(t,1))},Nn.constant=Bu,Nn.countBy=as,Nn.create=function(t,e){var n=Cn(t);return null==e?n:Hn(n,e)},Nn.curry=function t(e,n,a){var r=qr(e,8,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.curryRight=function t(e,n,a){var r=qr(e,16,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.debounce=vs,Nn.defaults=fu,Nn.defaultsDeep=hu,Nn.defer=xs,Nn.delay=_s,Nn.difference=Ci,Nn.differenceBy=Ri,Nn.differenceWith=Ai,Nn.drop=function(t,e,n){var a=null==t?0:t.length;return a?za(t,(e=n||void 0===e?1:nu(e))<0?0:e,a):[]},Nn.dropRight=function(t,e,n){var a=null==t?0:t.length;return a?za(t,0,(e=a-(e=n||void 0===e?1:nu(e)))<0?0:e):[]},Nn.dropRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0,!0):[]},Nn.dropWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0):[]},Nn.fill=function(t,e,n,a){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&ii(t,e,n)&&(n=0,a=r),function(t,e,n,a){var r=t.length;for((n=nu(n))<0&&(n=-n>r?0:r+n),(a=void 0===a||a>r?r:nu(a))<0&&(a+=r),a=n>a?0:au(a);n<a;)t[n++]=e;return t}(t,e,n,a)):[]},Nn.filter=function(t,e){return(Es(t)?ue:aa)(t,Kr(e,3))},Nn.flatMap=function(t,e){return ra(cs(t,e),1)},Nn.flatMapDeep=function(t,e){return ra(cs(t,e),1/0)},Nn.flatMapDepth=function(t,e,n){return n=void 0===n?1:nu(n),ra(cs(t,e),n)},Nn.flatten=Li,Nn.flattenDeep=function(t){return null!=t&&t.length?ra(t,1/0):[]},Nn.flattenDepth=function(t,e){return null!=t&&t.length?ra(t,e=void 0===e?1:nu(e)):[]},Nn.flip=function(t){return qr(t,512)},Nn.flow=zu,Nn.flowRight=Yu,Nn.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,a={};++e<n;){var r=t[e];a[r[0]]=r[1]}return a},Nn.functions=function(t){return null==t?[]:la(t,vu(t))},Nn.functionsIn=function(t){return null==t?[]:la(t,xu(t))},Nn.groupBy=os,Nn.initial=function(t){return null!=t&&t.length?za(t,0,-1):[]},Nn.intersection=Pi,Nn.intersectionBy=Mi,Nn.intersectionWith=qi,Nn.invert=bu,Nn.invertBy=mu,Nn.invokeMap=ls,Nn.iteratee=Uu,Nn.keyBy=ds,Nn.keys=vu,Nn.keysIn=xu,Nn.map=cs,Nn.mapKeys=function(t,e){var n={};return e=Kr(e,3),ua(t,(function(t,a,r){Un(n,e(t,a,r),t)})),n},Nn.mapValues=function(t,e){var n={};return e=Kr(e,3),ua(t,(function(t,a,r){Un(n,a,e(t,a,r))})),n},Nn.matches=function(t){return Ia($n(t,1))},Nn.matchesProperty=function(t,e){return Na(t,$n(e,1))},Nn.memoize=Ts,Nn.merge=_u,Nn.mergeWith=Tu,Nn.method=Wu,Nn.methodOf=Ku,Nn.mixin=$u,Nn.negate=ws,Nn.nthArg=function(t){return t=nu(t),Ma((function(e){return Ra(e,t)}))},Nn.omit=wu,Nn.omitBy=function(t,e){return Su(t,ws(Kr(e)))},Nn.once=function(t){return bs(2,t)},Nn.orderBy=function(t,e,n,a){return null==t?[]:(Es(e)||(e=null==e?[]:[e]),Es(n=a?void 0:n)||(n=null==n?[]:[n]),Aa(t,e,n))},Nn.over=Zu,Nn.overArgs=Os,Nn.overEvery=Qu,Nn.overSome=Xu,Nn.partial=Ss,Nn.partialRight=Is,Nn.partition=fs,Nn.pick=Ou,Nn.pickBy=Su,Nn.property=to,Nn.propertyOf=function(t){return function(e){return null==t?void 0:da(t,e)}},Nn.pull=Fi,Nn.pullAll=Vi,Nn.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,Kr(n,2)):t},Nn.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,void 0,n):t},Nn.pullAt=Gi,Nn.range=eo,Nn.rangeRight=no,Nn.rearg=Ns,Nn.reject=function(t,e){return(Es(t)?ue:aa)(t,ws(Kr(e,3)))},Nn.remove=function(t,e){var n=[];if(!t||!t.length)return n;var a=-1,r=[],i=t.length;for(e=Kr(e,3);++a<i;){var s=t[a];e(s,a,t)&&(n.push(s),r.push(a))}return La(t,r),n},Nn.rest=function(t,e){if("function"!=typeof t)throw new yt(r);return Ma(t,e=void 0===e?e:nu(e))},Nn.reverse=Bi,Nn.sampleSize=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:nu(e),(Es(t)?Fn:ja)(t,e)},Nn.set=function(t,e,n){return null==t?t:Fa(t,e,n)},Nn.setWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Fa(t,e,n,a)},Nn.shuffle=function(t){return(Es(t)?Vn:Ba)(t)},Nn.slice=function(t,e,n){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&ii(t,e,n)?(e=0,n=a):(e=null==e?0:nu(e),n=void 0===n?a:nu(n)),za(t,e,n)):[]},Nn.sortBy=hs,Nn.sortedUniq=function(t){return t&&t.length?Wa(t):[]},Nn.sortedUniqBy=function(t,e){return t&&t.length?Wa(t,Kr(e,2)):[]},Nn.split=function(t,e,n){return n&&"number"!=typeof n&&ii(t,e,n)&&(e=n=void 0),(n=void 0===n?4294967295:n>>>0)?(t=su(t))&&("string"==typeof e||null!=e&&!Ws(e))&&!(e=$a(e))&&Me(t)?ur(ze(t),0,n):t.split(e,n):[]},Nn.spread=function(t,e){if("function"!=typeof t)throw new yt(r);return e=null==e?0:rn(nu(e),0),Ma((function(n){var a=n[e],r=ur(n,0,e);return a&&ce(r,a),ne(t,this,r)}))},Nn.tail=function(t){var e=null==t?0:t.length;return e?za(t,1,e):[]},Nn.take=function(t,e,n){return t&&t.length?za(t,0,(e=n||void 0===e?1:nu(e))<0?0:e):[]},Nn.takeRight=function(t,e,n){var a=null==t?0:t.length;return a?za(t,(e=a-(e=n||void 0===e?1:nu(e)))<0?0:e,a):[]},Nn.takeRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!1,!0):[]},Nn.takeWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3)):[]},Nn.tap=function(t,e){return e(t),t},Nn.throttle=function(t,e,n){var a=!0,i=!0;if("function"!=typeof t)throw new yt(r);return Bs(n)&&(a="leading"in n?!!n.leading:a,i="trailing"in n?!!n.trailing:i),vs(t,e,{leading:a,maxWait:e,trailing:i})},Nn.thru=es,Nn.toArray=tu,Nn.toPairs=Iu,Nn.toPairsIn=Nu,Nn.toPath=function(t){return Es(t)?de(t,Si):Js(t)?[t]:pr(Oi(su(t)))},Nn.toPlainObject=iu,Nn.transform=function(t,e,n){var a=Es(t),r=a||Ms(t)||Zs(t);if(e=Kr(e,4),null==n){var i=t&&t.constructor;n=r?a?new i:[]:Bs(t)&&Fs(i)?Cn(Ht(t)):{}}return(r?re:ua)(t,(function(t,a,r){return e(n,t,a,r)})),n},Nn.unary=function(t){return ps(t,1)},Nn.union=zi,Nn.unionBy=Yi,Nn.unionWith=Hi,Nn.uniq=function(t){return t&&t.length?Ja(t):[]},Nn.uniqBy=function(t,e){return t&&t.length?Ja(t,Kr(e,2)):[]},Nn.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Ja(t,void 0,e):[]},Nn.unset=function(t,e){return null==t||Za(t,e)},Nn.unzip=Ui,Nn.unzipWith=Wi,Nn.update=function(t,e,n){return null==t?t:Qa(t,e,rr(n))},Nn.updateWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Qa(t,e,rr(n),a)},Nn.values=Cu,Nn.valuesIn=function(t){return null==t?[]:Ce(t,xu(t))},Nn.without=Ki,Nn.words=Fu,Nn.wrap=function(t,e){return Ss(rr(e),t)},Nn.xor=$i,Nn.xorBy=Ji,Nn.xorWith=Zi,Nn.zip=Qi,Nn.zipObject=function(t,e){return nr(t||[],e||[],Bn)},Nn.zipObjectDeep=function(t,e){return nr(t||[],e||[],Fa)},Nn.zipWith=Xi,Nn.entries=Iu,Nn.entriesIn=Nu,Nn.extend=ou,Nn.extendWith=lu,$u(Nn,Nn),Nn.add=so,Nn.attempt=Vu,Nn.camelCase=Ru,Nn.capitalize=Au,Nn.ceil=uo,Nn.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=ru(n))==n?n:0),void 0!==e&&(e=(e=ru(e))==e?e:0),Kn(ru(t),e,n)},Nn.clone=function(t){return $n(t,4)},Nn.cloneDeep=function(t){return $n(t,5)},Nn.cloneDeepWith=function(t,e){return $n(t,5,e="function"==typeof e?e:void 0)},Nn.cloneWith=function(t,e){return $n(t,4,e="function"==typeof e?e:void 0)},Nn.conformsTo=function(t,e){return null==e||Jn(t,e,vu(e))},Nn.deburr=ku,Nn.defaultTo=function(t,e){return null==t||t!=t?e:t},Nn.divide=oo,Nn.endsWith=function(t,e,n){t=su(t),e=$a(e);var a=t.length,r=n=void 0===n?a:Kn(nu(n),0,a);return(n-=e.length)>=0&&t.slice(n,r)==e},Nn.eq=Cs,Nn.escape=function(t){return(t=su(t))&&j.test(t)?t.replace(M,De):t},Nn.escapeRegExp=function(t){return(t=su(t))&&U.test(t)?t.replace(H,"\\$&"):t},Nn.every=function(t,e,n){var a=Es(t)?se:ea;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.find=rs,Nn.findIndex=ki,Nn.findKey=function(t,e){return be(t,Kr(e,3),ua)},Nn.findLast=is,Nn.findLastIndex=Ei,Nn.findLastKey=function(t,e){return be(t,Kr(e,3),oa)},Nn.floor=lo,Nn.forEach=ss,Nn.forEachRight=us,Nn.forIn=function(t,e){return null==t?t:ia(t,Kr(e,3),xu)},Nn.forInRight=function(t,e){return null==t?t:sa(t,Kr(e,3),xu)},Nn.forOwn=function(t,e){return t&&ua(t,Kr(e,3))},Nn.forOwnRight=function(t,e){return t&&oa(t,Kr(e,3))},Nn.get=gu,Nn.gt=Rs,Nn.gte=As,Nn.has=function(t,e){return null!=t&&ei(t,e,ga)},Nn.hasIn=pu,Nn.head=Di,Nn.identity=Hu,Nn.includes=function(t,e,n,a){t=Ds(t)?t:Cu(t),n=n&&!a?nu(n):0;var r=t.length;return n<0&&(n=rn(r+n,0)),$s(t)?n<=r&&t.indexOf(e,n)>-1:!!r&&ye(t,e,n)>-1},Nn.indexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:nu(n);return r<0&&(r=rn(a+r,0)),ye(t,e,r)},Nn.inRange=function(t,e,n){return e=eu(e),void 0===n?(n=e,e=0):n=eu(n),function(t,e,n){return t>=sn(e,n)&&t<rn(e,n)}(t=ru(t),e,n)},Nn.invoke=yu,Nn.isArguments=ks,Nn.isArray=Es,Nn.isArrayBuffer=Ls,Nn.isArrayLike=Ds,Nn.isArrayLikeObject=Ps,Nn.isBoolean=function(t){return!0===t||!1===t||zs(t)&&fa(t)==l},Nn.isBuffer=Ms,Nn.isDate=qs,Nn.isElement=function(t){return zs(t)&&1===t.nodeType&&!Us(t)},Nn.isEmpty=function(t){if(null==t)return!0;if(Ds(t)&&(Es(t)||"string"==typeof t||"function"==typeof t.splice||Ms(t)||Zs(t)||ks(t)))return!t.length;var e=ti(t);if(e==g||e==y)return!t.size;if(li(t))return!wa(t).length;for(var n in t)if(wt.call(t,n))return!1;return!0},Nn.isEqual=function(t,e){return va(t,e)},Nn.isEqualWith=function(t,e,n){var a=(n="function"==typeof n?n:void 0)?n(t,e):void 0;return void 0===a?va(t,e,void 0,n):!!a},Nn.isError=js,Nn.isFinite=function(t){return"number"==typeof t&&en(t)},Nn.isFunction=Fs,Nn.isInteger=Vs,Nn.isLength=Gs,Nn.isMap=Ys,Nn.isMatch=function(t,e){return t===e||xa(t,e,Jr(e))},Nn.isMatchWith=function(t,e,n){return n="function"==typeof n?n:void 0,xa(t,e,Jr(e),n)},Nn.isNaN=function(t){return Hs(t)&&t!=+t},Nn.isNative=function(t){if(oi(t))throw new ft("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return _a(t)},Nn.isNil=function(t){return null==t},Nn.isNull=function(t){return null===t},Nn.isNumber=Hs,Nn.isObject=Bs,Nn.isObjectLike=zs,Nn.isPlainObject=Us,Nn.isRegExp=Ws,Nn.isSafeInteger=function(t){return Vs(t)&&t>=-9007199254740991&&t<=9007199254740991},Nn.isSet=Ks,Nn.isString=$s,Nn.isSymbol=Js,Nn.isTypedArray=Zs,Nn.isUndefined=function(t){return void 0===t},Nn.isWeakMap=function(t){return zs(t)&&ti(t)==_},Nn.isWeakSet=function(t){return zs(t)&&"[object WeakSet]"==fa(t)},Nn.join=function(t,e){return null==t?"":nn.call(t,e)},Nn.kebabCase=Eu,Nn.last=ji,Nn.lastIndexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a;return void 0!==n&&(r=(r=nu(n))<0?rn(a+r,0):sn(r,a-1)),e==e?function(t,e,n){for(var a=n+1;a--;)if(t[a]===e)return a;return a}(t,e,r):me(t,xe,r,!0)},Nn.lowerCase=Lu,Nn.lowerFirst=Du,Nn.lt=Qs,Nn.lte=Xs,Nn.max=function(t){return t&&t.length?na(t,Hu,ha):void 0},Nn.maxBy=function(t,e){return t&&t.length?na(t,Kr(e,2),ha):void 0},Nn.mean=function(t){return _e(t,Hu)},Nn.meanBy=function(t,e){return _e(t,Kr(e,2))},Nn.min=function(t){return t&&t.length?na(t,Hu,Oa):void 0},Nn.minBy=function(t,e){return t&&t.length?na(t,Kr(e,2),Oa):void 0},Nn.stubArray=ao,Nn.stubFalse=ro,Nn.stubObject=function(){return{}},Nn.stubString=function(){return""},Nn.stubTrue=function(){return!0},Nn.multiply=co,Nn.nth=function(t,e){return t&&t.length?Ra(t,nu(e)):void 0},Nn.noConflict=function(){return Yt._===this&&(Yt._=Ct),this},Nn.noop=Ju,Nn.now=gs,Nn.pad=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;if(!e||a>=e)return t;var r=(e-a)/2;return Ar(Qe(r),n)+t+Ar(Ze(r),n)},Nn.padEnd=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;return e&&a<e?t+Ar(e-a,n):t},Nn.padStart=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;return e&&a<e?Ar(e-a,n)+t:t},Nn.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),on(su(t).replace(K,""),e||0)},Nn.random=function(t,e,n){if(n&&"boolean"!=typeof n&&ii(t,e,n)&&(e=n=void 0),void 0===n&&("boolean"==typeof e?(n=e,e=void 0):"boolean"==typeof t&&(n=t,t=void 0)),void 0===t&&void 0===e?(t=0,e=1):(t=eu(t),void 0===e?(e=t,t=0):e=eu(e)),t>e){var a=t;t=e,e=a}if(n||t%1||e%1){var r=ln();return sn(t+r*(e-t+Vt("1e-"+((r+"").length-1))),e)}return Da(t,e)},Nn.reduce=function(t,e,n){var a=Es(t)?fe:Oe,r=arguments.length<3;return a(t,Kr(e,4),n,r,Xn)},Nn.reduceRight=function(t,e,n){var a=Es(t)?he:Oe,r=arguments.length<3;return a(t,Kr(e,4),n,r,ta)},Nn.repeat=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:nu(e),Pa(su(t),e)},Nn.replace=function(){var t=arguments,e=su(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Nn.result=function(t,e,n){var a=-1,r=(e=ir(e,t)).length;for(r||(r=1,t=void 0);++a<r;){var i=null==t?void 0:t[Si(e[a])];void 0===i&&(a=r,i=n),t=Fs(i)?i.call(t):i}return t},Nn.round=fo,Nn.runInContext=t,Nn.sample=function(t){return(Es(t)?jn:qa)(t)},Nn.size=function(t){if(null==t)return 0;if(Ds(t))return $s(t)?Be(t):t.length;var e=ti(t);return e==g||e==y?t.size:wa(t).length},Nn.snakeCase=Pu,Nn.some=function(t,e,n){var a=Es(t)?ge:Ya;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.sortedIndex=function(t,e){return Ha(t,e)},Nn.sortedIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2))},Nn.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var a=Ha(t,e);if(a<n&&Cs(t[a],e))return a}return-1},Nn.sortedLastIndex=function(t,e){return Ha(t,e,!0)},Nn.sortedLastIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2),!0)},Nn.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var n=Ha(t,e,!0)-1;if(Cs(t[n],e))return n}return-1},Nn.startCase=Mu,Nn.startsWith=function(t,e,n){return t=su(t),n=null==n?0:Kn(nu(n),0,t.length),e=$a(e),t.slice(n,n+e.length)==e},Nn.subtract=ho,Nn.sum=function(t){return t&&t.length?Se(t,Hu):0},Nn.sumBy=function(t,e){return t&&t.length?Se(t,Kr(e,2)):0},Nn.template=function(t,e,n){var a=Nn.templateSettings;n&&ii(t,e,n)&&(e=void 0),t=su(t),e=lu({},e,a,jr);var r,i,s=lu({},e.imports,a.imports,jr),u=vu(s),o=Ce(s,u),l=0,d=e.interpolate||lt,c="__p += '",f=bt((e.escape||lt).source+"|"+d.source+"|"+(d===G?et:lt).source+"|"+(e.evaluate||lt).source+"|$","g"),h="//# sourceURL="+(wt.call(e,"sourceURL")?(e.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Mt+"]")+"\n";t.replace(f,(function(e,n,a,s,u,o){return a||(a=s),c+=t.slice(l,o).replace(dt,Pe),n&&(r=!0,c+="' +\n__e("+n+") +\n'"),u&&(i=!0,c+="';\n"+u+";\n__p += '"),a&&(c+="' +\n((__t = ("+a+")) == null ? '' : __t) +\n'"),l=o+e.length,e})),c+="';\n";var g=wt.call(e,"variable")&&e.variable;g||(c="with (obj) {\n"+c+"\n}\n"),c=(i?c.replace(E,""):c).replace(L,"$1").replace(D,"$1;"),c="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(r?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+c+"return __p\n}";var p=Vu((function(){return ht(u,h+"return "+c).apply(void 0,o)}));if(p.source=c,js(p))throw p;return p},Nn.times=function(t,e){if((t=nu(t))<1||t>9007199254740991)return[];var n=4294967295,a=sn(t,4294967295);t-=4294967295;for(var r=Ie(a,e=Kr(e));++n<t;)e(n);return r},Nn.toFinite=eu,Nn.toInteger=nu,Nn.toLength=au,Nn.toLower=function(t){return su(t).toLowerCase()},Nn.toNumber=ru,Nn.toSafeInteger=function(t){return t?Kn(nu(t),-9007199254740991,9007199254740991):0===t?t:0},Nn.toString=su,Nn.toUpper=function(t){return su(t).toUpperCase()},Nn.trim=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace(W,"");if(!t||!(e=$a(e)))return t;var a=ze(t),r=ze(e);return ur(a,Ae(a,r),ke(a,r)+1).join("")},Nn.trimEnd=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace($,"");if(!t||!(e=$a(e)))return t;var a=ze(t);return ur(a,0,ke(a,ze(e))+1).join("")},Nn.trimStart=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace(K,"");if(!t||!(e=$a(e)))return t;var a=ze(t);return ur(a,Ae(a,ze(e))).join("")},Nn.truncate=function(t,e){var n=30,a="...";if(Bs(e)){var r="separator"in e?e.separator:r;n="length"in e?nu(e.length):n,a="omission"in e?$a(e.omission):a}var i=(t=su(t)).length;if(Me(t)){var s=ze(t);i=s.length}if(n>=i)return t;var u=n-Be(a);if(u<1)return a;var o=s?ur(s,0,u).join(""):t.slice(0,u);if(void 0===r)return o+a;if(s&&(u+=o.length-u),Ws(r)){if(t.slice(u).search(r)){var l,d=o;for(r.global||(r=bt(r.source,su(nt.exec(r))+"g")),r.lastIndex=0;l=r.exec(d);)var c=l.index;o=o.slice(0,void 0===c?u:c)}}else if(t.indexOf($a(r),u)!=u){var f=o.lastIndexOf(r);f>-1&&(o=o.slice(0,f))}return o+a},Nn.unescape=function(t){return(t=su(t))&&q.test(t)?t.replace(P,Ye):t},Nn.uniqueId=function(t){var e=++Ot;return su(t)+e},Nn.upperCase=qu,Nn.upperFirst=ju,Nn.each=ss,Nn.eachRight=us,Nn.first=Di,$u(Nn,(io={},ua(Nn,(function(t,e){wt.call(Nn.prototype,e)||(io[e]=t)})),io),{chain:!1}),Nn.VERSION="4.17.20",re(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Nn[t].placeholder=Nn})),re(["drop","take"],(function(t,e){kn.prototype[t]=function(n){n=void 0===n?1:rn(nu(n),0);var a=this.__filtered__&&!e?new kn(this):this.clone();return a.__filtered__?a.__takeCount__=sn(n,a.__takeCount__):a.__views__.push({size:sn(n,4294967295),type:t+(a.__dir__<0?"Right":"")}),a},kn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),re(["filter","map","takeWhile"],(function(t,e){var n=e+1,a=1==n||3==n;kn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Kr(t,3),type:n}),e.__filtered__=e.__filtered__||a,e}})),re(["head","last"],(function(t,e){var n="take"+(e?"Right":"");kn.prototype[t]=function(){return this[n](1).value()[0]}})),re(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");kn.prototype[t]=function(){return this.__filtered__?new kn(this):this[n](1)}})),kn.prototype.compact=function(){return this.filter(Hu)},kn.prototype.find=function(t){return this.filter(t).head()},kn.prototype.findLast=function(t){return this.reverse().find(t)},kn.prototype.invokeMap=Ma((function(t,e){return"function"==typeof t?new kn(this):this.map((function(n){return ma(n,t,e)}))})),kn.prototype.reject=function(t){return this.filter(ws(Kr(t)))},kn.prototype.slice=function(t,e){t=nu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new kn(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=nu(e))<0?n.dropRight(-e):n.take(e-t)),n)},kn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},kn.prototype.toArray=function(){return this.take(4294967295)},ua(kn.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),a=/^(?:head|last)$/.test(e),r=Nn[a?"take"+("last"==e?"Right":""):e],i=a||/^find/.test(e);r&&(Nn.prototype[e]=function(){var e=this.__wrapped__,s=a?[1]:arguments,u=e instanceof kn,o=s[0],l=u||Es(e),d=function(t){var e=r.apply(Nn,ce([t],s));return a&&c?e[0]:e};l&&n&&"function"==typeof o&&1!=o.length&&(u=l=!1);var c=this.__chain__,f=!!this.__actions__.length,h=i&&!c,g=u&&!f;if(!i&&l){e=g?e:new kn(this);var p=t.apply(e,s);return p.__actions__.push({func:es,args:[d],thisArg:void 0}),new An(p,c)}return h&&g?t.apply(this,s):(p=this.thru(d),h?a?p.value()[0]:p.value():p)})})),re(["pop","push","shift","sort","splice","unshift"],(function(t){var e=vt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",a=/^(?:pop|shift)$/.test(t);Nn.prototype[t]=function(){var t=arguments;if(a&&!this.__chain__){var r=this.value();return e.apply(Es(r)?r:[],t)}return this[n]((function(n){return e.apply(Es(n)?n:[],t)}))}})),ua(kn.prototype,(function(t,e){var n=Nn[e];if(n){var a=n.name+"";wt.call(yn,a)||(yn[a]=[]),yn[a].push({name:e,func:n})}})),yn[Ir(void 0,2).name]=[{name:"wrapper",func:void 0}],kn.prototype.clone=function(){var t=new kn(this.__wrapped__);return t.__actions__=pr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=pr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=pr(this.__views__),t},kn.prototype.reverse=function(){if(this.__filtered__){var t=new kn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},kn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Es(t),a=e<0,r=n?t.length:0,i=function(t,e,n){for(var a=-1,r=n.length;++a<r;){var i=n[a],s=i.size;switch(i.type){case"drop":t+=s;break;case"dropRight":e-=s;break;case"take":e=sn(e,t+s);break;case"takeRight":t=rn(t,e-s)}}return{start:t,end:e}}(0,r,this.__views__),s=i.start,u=i.end,o=u-s,l=a?u:s-1,d=this.__iteratees__,c=d.length,f=0,h=sn(o,this.__takeCount__);if(!n||!a&&r==o&&h==o)return tr(t,this.__actions__);var g=[];t:for(;o--&&f<h;){for(var p=-1,b=t[l+=e];++p<c;){var m=d[p],y=m.type,v=(0,m.iteratee)(b);if(2==y)b=v;else if(!v){if(1==y)continue t;break t}}g[f++]=b}return g},Nn.prototype.at=ns,Nn.prototype.chain=function(){return ts(this)},Nn.prototype.commit=function(){return new An(this.value(),this.__chain__)},Nn.prototype.next=function(){void 0===this.__values__&&(this.__values__=tu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},Nn.prototype.plant=function(t){for(var e,n=this;n instanceof Rn;){var a=Ni(n);a.__index__=0,a.__values__=void 0,e?r.__wrapped__=a:e=a;var r=a;n=n.__wrapped__}return r.__wrapped__=t,e},Nn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof kn){var e=t;return this.__actions__.length&&(e=new kn(this)),(e=e.reverse()).__actions__.push({func:es,args:[Bi],thisArg:void 0}),new An(e,this.__chain__)}return this.thru(Bi)},Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return tr(this.__wrapped__,this.__actions__)},Nn.prototype.first=Nn.prototype.head,we&&(Nn.prototype[we]=function(){return this}),Nn}();Yt._=He,void 0===(a=(function(){return He}).call(e,n,e,t))||(t.exports=a)}).call(this)}).call(this,n("YuTi")(t))},lyxo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=" ";return(t%100>=20||t>=100&&t%100==0)&&(a=" de "),t+a+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}t.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:e,m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})}(n("wd/R"))},"m/L8":function(t,e,n){var a=n("2oRo"),r=n("g6v/"),i=n("DPsx"),s=n("glrk"),u=n("oEtG"),o=a.TypeError,l=Object.defineProperty;e.f=r?l:function(t,e,n){if(s(t),e=u(e),s(n),i)try{return l(t,e,n)}catch(a){}if("get"in n||"set"in n)throw o("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},mCNh:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("KqfI");function r(...t){return i(t)}function i(t){return t?1===t.length?t[0]:function(e){return t.reduce((t,e)=>e(t),e)}:a.a}},mOnh:function(t,e,n){var a=n("nTk+"),r=n("Z2DA"),i=n("MBcj");t.exports=function(t){return a(t,i,r)}},mSOc:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("LvDl"),r=n("2Vo4"),i=n("pLZG"),s=n("SxV6"),u=n("lOp/"),o=n("8Y7J"),l=n("IheW");let d=(()=>{class t{constructor(t,e){this.http=t,this.timerService=e,this.REFRESH_INTERVAL=5e3,this.summaryDataSource=new r.a(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/summary")}retrieveSummaryObserver(){return t=>{this.summaryDataSource.next(t)}}subscribeOnce(t,e){return this.summaryData$.pipe(Object(i.a)(t=>!!t),Object(s.a)()).subscribe(t,e)}subscribe(t,e){return this.summaryData$.pipe(Object(i.a)(t=>!!t)).subscribe(t,e)}addRunningTask(t){const e=this.summaryDataSource.getValue();e&&(a.isArray(e.executing_tasks)?e.executing_tasks.find(e=>e.name===t.name&&a.isEqual(e.metadata,t.metadata))||e.executing_tasks.push(t):e.executing_tasks=[t],this.summaryDataSource.next(e))}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](l.c),o["ɵɵinject"](u.a))},token:t,providedIn:"root"}),t})()},"mWP/":function(t,e,n){var a=n("ktBm");t.exports=function(t){var e=this.__data__,n=a(e,t);return n<0?void 0:e[n][1]}},mXUL:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return c}));var a=n("8Y7J"),r=n("+gVj"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:[".invalid-feedback[_ngcontent-%COMP%], .valid-feedback[_ngcontent-%COMP%] {\n        display: block;\n      }"],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){t(e,2,0,e.component.className)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function o(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](1,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,e.component.messages())}),null)}var l=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bfv-messages",[],null,null,null,o,s)),a["ɵdid"](1,49152,null,0,r.e,[r.a],{messages:[0,"messages"]},null)],(function(t,e){t(e,1,0,e.component.messages)}),null)}function c(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,!e.component.messagesBlock)}),null)}},mfoh:function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return p}));var a,r=n("CFvb"),i=n("8rQ2"),s=n.n(i),u=n("eQba"),o=n.n(u),l=n("CUJ1"),d=n.n(l),c=n("h7vy"),f=n.n(c),h={TOGGLE_ACTIVE:function(t,e,n){return e&&e.toggleActivated()},TOGGLE_ACTIVE_MULTI:function(t,e,n){return e&&e.toggleActivated(!0)},TOGGLE_SELECTED:function(t,e,n){return e&&e.toggleSelected()},ACTIVATE:function(t,e,n){return e.setIsActive(!0)},DEACTIVATE:function(t,e,n){return e.setIsActive(!1)},SELECT:function(t,e,n){return e.setIsSelected(!0)},DESELECT:function(t,e,n){return e.setIsSelected(!1)},FOCUS:function(t,e,n){return e.focus()},TOGGLE_EXPANDED:function(t,e,n){return e.hasChildren&&e.toggleExpanded()},EXPAND:function(t,e,n){return e.expand()},COLLAPSE:function(t,e,n){return e.collapse()},DRILL_DOWN:function(t,e,n){return t.focusDrillDown()},DRILL_UP:function(t,e,n){return t.focusDrillUp()},NEXT_NODE:function(t,e,n){return t.focusNextNode()},PREVIOUS_NODE:function(t,e,n){return t.focusPreviousNode()},MOVE_NODE:function(t,e,n,a){var r=a.from,i=a.to;n.ctrlKey?t.copyNode(r,i):t.moveNode(r,i)}},g={mouse:{click:h.TOGGLE_ACTIVE,dblClick:null,contextMenu:null,expanderClick:h.TOGGLE_EXPANDED,checkboxClick:h.TOGGLE_SELECTED,drop:h.MOVE_NODE},keys:(a={},a[r.a.RIGHT]=h.DRILL_DOWN,a[r.a.LEFT]=h.DRILL_UP,a[r.a.DOWN]=h.NEXT_NODE,a[r.a.UP]=h.PREVIOUS_NODE,a[r.a.SPACE]=h.TOGGLE_ACTIVE,a[r.a.ENTER]=h.TOGGLE_ACTIVE,a)},p=function(){function t(t){void 0===t&&(t={}),this.options=t,this.actionMapping=s()({},this.options.actionMapping,g),t.rtl&&(this.actionMapping.keys[r.a.RIGHT]=o()(t,["actionMapping","keys",r.a.RIGHT])||h.DRILL_UP,this.actionMapping.keys[r.a.LEFT]=o()(t,["actionMapping","keys",r.a.LEFT])||h.DRILL_DOWN)}return Object.defineProperty(t.prototype,"hasChildrenField",{get:function(){return this.options.hasChildrenField||"hasChildren"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"childrenField",{get:function(){return this.options.childrenField||"children"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"displayField",{get:function(){return this.options.displayField||"name"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"idField",{get:function(){return this.options.idField||"id"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isExpandedField",{get:function(){return this.options.isExpandedField||"isExpanded"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"getChildren",{get:function(){return this.options.getChildren},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"levelPadding",{get:function(){return this.options.levelPadding||0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useVirtualScroll",{get:function(){return this.options.useVirtualScroll},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateExpand",{get:function(){return this.options.animateExpand},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateSpeed",{get:function(){return this.options.animateSpeed||1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateAcceleration",{get:function(){return this.options.animateAcceleration||1.2},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollOnActivate",{get:function(){return void 0===this.options.scrollOnActivate||this.options.scrollOnActivate},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rtl",{get:function(){return!!this.options.rtl},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rootId",{get:function(){return this.options.rootId},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useCheckbox",{get:function(){return this.options.useCheckbox},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useTriState",{get:function(){return void 0===this.options.useTriState||this.options.useTriState},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollContainer",{get:function(){return this.options.scrollContainer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allowDragoverStyling",{get:function(){return void 0===this.options.allowDragoverStyling||this.options.allowDragoverStyling},enumerable:!0,configurable:!0}),t.prototype.getNodeClone=function(t){return this.options.getNodeClone?this.options.getNodeClone(t):d()(Object.assign({},t.data),["id"])},t.prototype.allowDrop=function(t,e,n){return this.options.allowDrop instanceof Function?this.options.allowDrop(t,e,n):void 0===this.options.allowDrop||this.options.allowDrop},t.prototype.allowDrag=function(t){return this.options.allowDrag instanceof Function?this.options.allowDrag(t):this.options.allowDrag},t.prototype.nodeClass=function(t){return this.options.nodeClass?this.options.nodeClass(t):""},t.prototype.nodeHeight=function(t){if(t.data.virtual)return 0;var e=this.options.nodeHeight||22;return"function"==typeof e&&(e=e(t)),e+(0===t.index?2:1)*this.dropSlotHeight},Object.defineProperty(t.prototype,"dropSlotHeight",{get:function(){return f()(this.options.dropSlotHeight)?this.options.dropSlotHeight:2},enumerable:!0,configurable:!0}),t}()},"mh/w":function(t,e,n){var a=n("2oRo"),r=n("xluM"),i=n("We1y"),s=n("glrk"),u=n("DVFp"),o=n("NaFW"),l=a.TypeError;t.exports=function(t,e){var n=arguments.length<2?o(t):e;if(i(n))return s(r(n,t));throw l(u(t)+" is not iterable")}},moLw:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("8Y7J"),s=n("SVse");e.ClickOutsideDirective=function(){function t(t,e,n){this._el=t,this._ngZone=e,this.platformId=n,this.clickOutsideEnabled=!0,this.attachOutsideOnClick=!1,this.delayClickOutsideInit=!1,this.emitOnBlur=!1,this.exclude="",this.excludeBeforeClick=!1,this.clickOutsideEvents="",this.clickOutside=new i.EventEmitter,this._nodesExcluded=[],this._events=["click"],this._initOnClickBody=this._initOnClickBody.bind(this),this._onClickBody=this._onClickBody.bind(this),this._onWindowBlur=this._onWindowBlur.bind(this)}return t.prototype.ngOnInit=function(){s.isPlatformBrowser(this.platformId)&&this._init()},t.prototype.ngOnDestroy=function(){s.isPlatformBrowser(this.platformId)&&(this._removeClickOutsideListener(),this._removeAttachOutsideOnClickListener(),this._removeWindowBlurListener())},t.prototype.ngOnChanges=function(t){s.isPlatformBrowser(this.platformId)&&(t.attachOutsideOnClick||t.exclude||t.emitOnBlur)&&this._init()},t.prototype._init=function(){""!==this.clickOutsideEvents&&(this._events=this.clickOutsideEvents.split(",").map((function(t){return t.trim()}))),this._excludeCheck(),this.attachOutsideOnClick?this._initAttachOutsideOnClickListener():this._initOnClickBody(),this.emitOnBlur&&this._initWindowBlurListener()},t.prototype._initOnClickBody=function(){this.delayClickOutsideInit?setTimeout(this._initClickOutsideListener.bind(this)):this._initClickOutsideListener()},t.prototype._excludeCheck=function(){if(this.exclude)try{var t=Array.from(document.querySelectorAll(this.exclude));t&&(this._nodesExcluded=t)}catch(e){console.error("[ng-click-outside] Check your exclude selector syntax.",e)}},t.prototype._onClickBody=function(t){this.clickOutsideEnabled&&(this.excludeBeforeClick&&this._excludeCheck(),this._el.nativeElement.contains(t.target)||this._shouldExclude(t.target)||(this._emit(t),this.attachOutsideOnClick&&this._removeClickOutsideListener()))},t.prototype._onWindowBlur=function(t){var e=this;setTimeout((function(){document.hidden||e._emit(t)}))},t.prototype._emit=function(t){var e=this;this.clickOutsideEnabled&&this._ngZone.run((function(){return e.clickOutside.emit(t)}))},t.prototype._shouldExclude=function(t){for(var e=0,n=this._nodesExcluded;e<n.length;e++)if(n[e].contains(t))return!0;return!1},t.prototype._initClickOutsideListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return document.addEventListener(e,t._onClickBody)}))}))},t.prototype._removeClickOutsideListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return document.removeEventListener(e,t._onClickBody)}))}))},t.prototype._initAttachOutsideOnClickListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return t._el.nativeElement.addEventListener(e,t._initOnClickBody)}))}))},t.prototype._removeAttachOutsideOnClickListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return t._el.nativeElement.removeEventListener(e,t._initOnClickBody)}))}))},t.prototype._initWindowBlurListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){window.addEventListener("blur",t._onWindowBlur)}))},t.prototype._removeWindowBlurListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){window.removeEventListener("blur",t._onWindowBlur)}))},a([i.Input(),r("design:type",Boolean)],t.prototype,"clickOutsideEnabled",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"attachOutsideOnClick",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"delayClickOutsideInit",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"emitOnBlur",void 0),a([i.Input(),r("design:type",String)],t.prototype,"exclude",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"excludeBeforeClick",void 0),a([i.Input(),r("design:type",String)],t.prototype,"clickOutsideEvents",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"clickOutside",void 0),a([i.Injectable(),i.Directive({selector:"[clickOutside]"})],t)}()},mrSG:function(t,e,n){"use strict";n.r(e),n.d(e,"__extends",(function(){return r})),n.d(e,"__assign",(function(){return i})),n.d(e,"__rest",(function(){return s})),n.d(e,"__decorate",(function(){return u})),n.d(e,"__param",(function(){return o})),n.d(e,"__metadata",(function(){return l})),n.d(e,"__awaiter",(function(){return d})),n.d(e,"__generator",(function(){return c})),n.d(e,"__exportStar",(function(){return f})),n.d(e,"__values",(function(){return h})),n.d(e,"__read",(function(){return g})),n.d(e,"__spread",(function(){return p})),n.d(e,"__spreadArrays",(function(){return b})),n.d(e,"__await",(function(){return m})),n.d(e,"__asyncGenerator",(function(){return y})),n.d(e,"__asyncDelegator",(function(){return v})),n.d(e,"__asyncValues",(function(){return x})),n.d(e,"__makeTemplateObject",(function(){return _})),n.d(e,"__importStar",(function(){return T})),n.d(e,"__importDefault",(function(){return w})),n.d(e,"__classPrivateFieldGet",(function(){return O})),n.d(e,"__classPrivateFieldSet",(function(){return S}));var a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function r(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function s(t,e){var n={};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&e.indexOf(a)<0&&(n[a]=t[a]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(t);r<a.length;r++)e.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(t,a[r])&&(n[a[r]]=t[a[r]])}return n}function u(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}function o(t,e){return function(n,a){e(n,a,t)}}function l(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function d(t,e,n,a){return new(n||(n=Promise))((function(r,i){function s(t){try{o(a.next(t))}catch(e){i(e)}}function u(t){try{o(a.throw(t))}catch(e){i(e)}}function o(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,u)}o((a=a.apply(t,e||[])).next())}))}function c(t,e){var n,a,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,a&&(r=2&i[0]?a.return:i[0]?a.throw||((r=a.return)&&r.call(a),0):a.next)&&!(r=r.call(a,i[1])).done)return r;switch(a=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,a=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){s.label=i[1];break}if(6===i[0]&&s.label<r[1]){s.label=r[1],r=i;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(i);break}r[2]&&s.ops.pop(),s.trys.pop();continue}i=e.call(t,s)}catch(u){i=[6,u],a=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}function f(t,e){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}function h(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],a=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(u){r={error:u}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function p(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(g(arguments[e]));return t}function b(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var a=Array(t),r=0;for(e=0;e<n;e++)for(var i=arguments[e],s=0,u=i.length;s<u;s++,r++)a[r]=i[s];return a}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function y(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a,r=n.apply(t,e||[]),i=[];return a={},s("next"),s("throw"),s("return"),a[Symbol.asyncIterator]=function(){return this},a;function s(t){r[t]&&(a[t]=function(e){return new Promise((function(n,a){i.push([t,e,n,a])>1||u(t,e)}))})}function u(t,e){try{!function(t){t.value instanceof m?Promise.resolve(t.value.v).then(o,l):d(i[0][2],t)}(r[t](e))}catch(n){d(i[0][3],n)}}function o(t){u("next",t)}function l(t){u("throw",t)}function d(t,e){t(e),i.shift(),i.length&&u(i[0][0],i[0][1])}}function v(t){var e,n;return e={},a("next"),a("throw",(function(t){throw t})),a("return"),e[Symbol.iterator]=function(){return this},e;function a(a,r){e[a]=t[a]?function(e){return(n=!n)?{value:m(t[a](e)),done:"return"===a}:r?r(e):e}:r}}function x(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=h(t),e={},a("next"),a("throw"),a("return"),e[Symbol.asyncIterator]=function(){return this},e);function a(n){e[n]=t[n]&&function(e){return new Promise((function(a,r){!function(t,e,n,a){Promise.resolve(a).then((function(e){t({value:e,done:n})}),e)}(a,r,(e=t[n](e)).done,e.value)}))}}}function _(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function T(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function w(t){return t&&t.__esModule?t:{default:t}}function O(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function S(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}},mtw6:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t[t.error=0]="error",t[t.info=1]="info",t[t.success=2]="success",t}({})},"n/D3":function(t,e,n){"use strict";n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return c}));var a=n("cp0P"),r=(n("SgmB"),n("ZDA6"),n("+fVR")),i=n("0+/T"),s=n("Rf2I"),u=(n("sne2"),n("x38r")),o=n("oxzT"),l=n("mtw6"),d=n("vCyI");n("nSDx"),n("aexS"),n("9nlD");const c=new(n("EgGo").a)("user-management/roles");class f extends r.a{constructor(t,e,n,a,r,i,s,u,l){super(),this.roleService=t,this.scopeService=e,this.emptyPipe=n,this.authStorageService=a,this.modalService=r,this.notificationService=i,this.i18n=s,this.urlBuilder=u,this.actionLabels=l,this.selection=new d.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:o.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"create",icon:o.a.clone,name:this.actionLabels.CLONE,disable:()=>!this.selection.hasSingleSelection,click:()=>this.cloneRole()},{permission:"update",icon:o.a.edit,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().name),name:this.actionLabels.EDIT},{permission:"delete",icon:o.a.destroy,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,click:()=>this.deleteRoleModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:3},{name:this.i18n("Description"),prop:"description",flexGrow:5,pipe:this.emptyPipe},{name:this.i18n("System Role"),prop:"system",cellClass:"text-center",flexGrow:1,cellTransformation:u.a.checkIcon}]}getRoles(){Object(a.a)([this.roleService.list(),this.scopeService.list()]).subscribe(t=>{this.roles=t[0],this.scopes=t[1]})}updateSelection(t){this.selection=t}deleteRole(t){this.roleService.delete(t).subscribe(()=>{this.getRoles(),this.modalRef.hide(),this.notificationService.show(l.a.success,this.i18n("Deleted role '{{role_name}}'",{role_name:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}deleteRoleModal(){const t=this.selection.first().name;this.modalRef=this.modalService.show(i.a,{initialState:{itemDescription:"Role",itemNames:[t],submitAction:()=>this.deleteRole(t)}})}cloneRole(){const t=this.selection.first().name;this.modalRef=this.modalService.show(s.a,{initialState:{fields:[{type:"text",name:"newName",value:t+"_clone",label:this.i18n("New name"),required:!0}],titleText:this.i18n("Clone Role"),submitButtonText:this.i18n("Clone Role"),onSubmit:e=>{this.roleService.clone(t,e.newName).subscribe(()=>{this.getRoles(),this.notificationService.show(l.a.success,this.i18n("Cloned role '{{dst_name}}' from '{{src_name}}'",{src_name:t,dst_name:e.newName}))})}}})}}},"n3/R":function(t,e,n){var a=n("0Dky"),r=n("2oRo").RegExp,i=a((function(){var t=r("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),s=i||a((function(){return!r("a","y").sticky})),u=i||a((function(){var t=r("^r","gy");return t.lastIndex=2,null!=t.exec("str")}));t.exports={BROKEN_CARET:u,MISSED_STICKY:s,UNSUPPORTED_Y:i}},n6bG:function(t,e,n){"use strict";function a(t){return"function"==typeof t}n.d(e,"a",(function(){return a}))},n9Vz:function(t,e,n){var a=n("Yj/I")(n("xdB7"));t.exports=a},nC65:function(t,e,n){var a=n("kXVT"),r=n("FGWQ");t.exports=function(t){for(var e=r(t),n=e.length;n--;){var i=e[n],s=t[i];e[n]=[i,s,a(s)]}return e}},nSDx:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t){return a.isUndefined(t)||a.isNull(t)?"-":t}}},"nTk+":function(t,e,n){var a=n("vJUC"),r=n("0GLT");t.exports=function(t,e,n){var i=e(t);return r(t)?i:a(i,n(t))}},nYR2:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("7o/Q"),r=n("quSY");function i(t){return e=>e.lift(new s(t))}class s{constructor(t){this.callback=t}call(t,e){return e.subscribe(new u(t,this.callback))}}class u extends a.a{constructor(t,e){super(t),this.add(new r.a(e))}}},ngJS:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=t=>e=>{for(let n=0,a=t.length;n<a&&!e.closed;n++)e.next(t[n]);e.complete()}},ntOU:function(t,e,n){"use strict";var a=n("rpNk").IteratorPrototype,r=n("fHMY"),i=n("XGwC"),s=n("1E5z"),u=n("P4y1"),o=function(){return this};t.exports=function(t,e,n,l){var d=e+" Iterator";return t.prototype=r(a,{next:i(+!l,n)}),s(t,d,!1,!0),u[d]=o,t}},ntis:function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},nyYc:function(t,e,n){!function(t){"use strict";t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},o1bE:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(n("wd/R"))},o3PY:function(t,e){t.exports=function(){this.__data__=[],this.size=0}},"o4+5":function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1e3,["","k","M","G","T","P","E","Z","Y"])}}},o8EM:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("PhyI"),r=n("8Y7J"),i=n("GiVz");let s=(()=>{class t{constructor(t){this.i18n=t,this.sections=[{heading:this.i18n("Quality of Service"),class:"quality-of-service",options:[{name:"rbd_qos_bps_limit",displayName:this.i18n("BPS Limit"),description:this.i18n("The desired limit of IO bytes per second."),type:a.b.bps},{name:"rbd_qos_iops_limit",displayName:this.i18n("IOPS Limit"),description:this.i18n("The desired limit of IO operations per second."),type:a.b.iops},{name:"rbd_qos_read_bps_limit",displayName:this.i18n("Read BPS Limit"),description:this.i18n("The desired limit of read bytes per second."),type:a.b.bps},{name:"rbd_qos_read_iops_limit",displayName:this.i18n("Read IOPS Limit"),description:this.i18n("The desired limit of read operations per second."),type:a.b.iops},{name:"rbd_qos_write_bps_limit",displayName:this.i18n("Write BPS Limit"),description:this.i18n("The desired limit of write bytes per second."),type:a.b.bps},{name:"rbd_qos_write_iops_limit",displayName:this.i18n("Write IOPS Limit"),description:this.i18n("The desired limit of write operations per second."),type:a.b.iops},{name:"rbd_qos_bps_burst",displayName:this.i18n("BPS Burst"),description:this.i18n("The desired burst limit of IO bytes."),type:a.b.bps},{name:"rbd_qos_iops_burst",displayName:this.i18n("IOPS Burst"),description:this.i18n("The desired burst limit of IO operations."),type:a.b.iops},{name:"rbd_qos_read_bps_burst",displayName:this.i18n("Read BPS Burst"),description:this.i18n("The desired burst limit of read bytes."),type:a.b.bps},{name:"rbd_qos_read_iops_burst",displayName:this.i18n("Read IOPS Burst"),description:this.i18n("The desired burst limit of read operations."),type:a.b.iops},{name:"rbd_qos_write_bps_burst",displayName:this.i18n("Write BPS Burst"),description:this.i18n("The desired burst limit of write bytes."),type:a.b.bps},{name:"rbd_qos_write_iops_burst",displayName:this.i18n("Write IOPS Burst"),description:this.i18n("The desired burst limit of write operations."),type:a.b.iops}]}]}static getOptionsFromSections(t){return t.map(t=>t.options).reduce((t,e)=>t.concat(e))}filterConfigOptionsByName(e){return t.getOptionsFromSections(this.sections).filter(t=>t.name===e)}getOptionValueByName(t,e,n=""){const a=this.filterConfigOptionsByName(t);return 1===a.length?a.pop()[e]:n}getWritableSections(){return this.sections.map(t=>(t.options=t.options.filter(t=>!t.readOnly),t))}getOptionFields(){return t.getOptionsFromSections(this.sections)}getWritableOptionFields(){return t.getOptionsFromSections(this.getWritableSections())}getOptionByName(t){return this.filterConfigOptionsByName(t).pop()}getDisplayName(t){return this.getOptionValueByName(t,"displayName")}getDescription(t){return this.getOptionValueByName(t,"description")}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.a))},token:t,providedIn:"root"}),t})()},oEtG:function(t,e,n){var a=n("wE6v"),r=n("2bX/");t.exports=function(t){var e=a(t,"string");return r(e)?e:e+""}},oMSZ:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.pwdExpirationSpan=0,this.pwdExpirationSpan=t.user_pwd_expiration_span,this.pwdExpirationWarning1=t.user_pwd_expiration_warning_1,this.pwdExpirationWarning2=t.user_pwd_expiration_warning_2}}},oRml:function(t,e,n){var a=n("LaC8"),r=n("KNDS"),i=n("x3F9"),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&r(t.length)&&!!s[a(t)]}},oxzT:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t.add="fa fa-plus",t.addCircle="fa fa-plus-circle",t.minusCircle="fa fa-minus-circle",t.edit="fa fa-pencil",t.destroy="fa fa-times",t.destroyCircle="fa fa-times-circle",t.exchange="fa fa-exchange",t.copy="fa fa-copy",t.clipboard="fa fa-clipboard",t.flatten="fa fa-chain-broken",t.trash="fa fa-trash-o",t.lock="fa fa-lock",t.unlock="fa fa-unlock",t.clone="fa fa-clone",t.undo="fa fa-undo",t.search="fa fa-search",t.start="fa fa-play",t.stop="fa fa-stop",t.analyse="fa fa-stethoscope",t.deepCheck="fa fa-cog",t.reweight="fa fa-balance-scale",t.left="fa fa-arrow-left",t.right="fa fa-arrow-right",t.down="fa fa-arrow-down",t.erase="fa fa-eraser",t.user="fa fa-user",t.users="fa fa-users",t.share="fa fa-share-alt",t.key="fa fa-key-modern",t.warning="fa fa-exclamation-triangle",t.info="fa fa-info",t.infoCircle="fa fa-info-circle",t.questionCircle="fa fa-question-circle-o",t.check="fa fa-check",t.show="fa fa-eye",t.paragraph="fa fa-paragraph",t.terminal="fa fa-terminal",t.magic="fa fa-magic",t.hourglass="fa fa-hourglass-o",t.filledHourglass="fa fa-hourglass",t.table="fa fa-table",t.spinner="fa fa-spinner",t.refresh="fa fa-refresh",t.bullseye="fa fa-bullseye",t.disk="fa fa-hdd-o",t.server="fa fa-server",t.filter="fa fa-filter",t.lineChart="fa fa-line-chart",t.signOut="fa fa-sign-out",t.health="fa fa-heartbeat",t.circle="fa fa-circle",t.bell="fa fa-bell",t.tag="fa fa-tag",t.leftArrow="fa fa-angle-left",t.rightArrow="fa fa-angle-right",t.leftArrowDouble="fa fa-angle-double-left",t.rightArrowDouble="fa fa-angle-double-right",t.flag="fa fa-flag",t.clearFilters="fa fa-window-close",t.download="fa fa-download",t.upload="fa fa-upload",t.large="fa fa-lg",t.large2x="fa fa-2x",t.large3x="fa fa-3x",t.stack="fa fa-stack",t.stack1x="fa fa-stack-1x",t.stack2x="fa fa-stack-2x",t.pulse="fa fa-pulse",t.spin="fa fa-spin",t.inverse="fa fa-inverse",t}({})},"p/rL":function(t,e,n){!function(t){"use strict";t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("wd/R"))},p33Q:function(t,e,n){var a=n("5itS"),r=n("qeWI"),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!a(t))return r(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},p4Cf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");class r{constructor(){this.icons=a.a}}},pKUh:function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return l}));var a=n("8Y7J"),r=n("2ZVE"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:["[_nghost-%COMP%]   .nav-tabs[_ngcontent-%COMP%]   .nav-item.disabled[_ngcontent-%COMP%]   a.disabled[_ngcontent-%COMP%]{cursor:default}"],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","bs-remove-tab"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(n.preventDefault(),a=!1!==r.removeTab(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),a["ɵted"](-1,null,[" ❌"]))],null,null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,"li",[],[[2,"active",null],[2,"disabled",null]],[[null,"keydown"]],(function(t,e,n){var a=!0;return"keydown"===e&&(a=!1!==t.component.keyNavActions(n,t.context.index)&&a),a}),null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,2),(t()(),a["ɵeld"](4,0,null,null,5,"a",[["class","nav-link"],["href","javascript:void(0);"],["role","tab"]],[[1,"aria-controls",0],[1,"aria-selected",0],[1,"id",0],[2,"active",null],[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=0!=(t.context.$implicit.active=!0)&&a),a}),null,null)),(t()(),a["ɵeld"](5,16777216,null,null,2,"span",[],null,null,null,null,null)),a["ɵdid"](6,16384,null,0,r.a,[a.ViewContainerRef],{ngTransclude:[0,"ngTransclude"]},null),(t()(),a["ɵted"](7,null,["",""])),(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](9,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=t(e,3,0,"nav-item",e.context.$implicit.customClass||"");t(e,2,0,n),t(e,6,0,e.context.$implicit.headingRef),t(e,9,0,e.context.$implicit.removable)}),(function(t,e){t(e,0,0,e.context.$implicit.active,e.context.$implicit.disabled),t(e,4,0,e.context.$implicit.id?e.context.$implicit.id:"",!!e.context.$implicit.active,e.context.$implicit.id?e.context.$implicit.id+"-link":"",e.context.$implicit.active,e.context.$implicit.disabled),t(e,7,0,e.context.$implicit.heading)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"ul",[["class","nav"],["role","tablist"]],[[1,"aria-label",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a}),null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](4,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](5,0,null,null,1,"div",[["class","tab-content"]],null,null,null,null,null)),a["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"nav",n.classMap),t(e,4,0,n.tabs)}),(function(t,e){t(e,0,0,e.component.ariaLabel)}))}},pL04:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},pLZG:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){return function(n){return n.lift(new i(t,e))}}class i{constructor(t,e){this.predicate=t,this.thisArg=e}call(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg))}}class s extends a.a{constructor(t,e,n){super(t),this.predicate=e,this.thisArg=n,this.count=0}_next(t){let e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}e&&this.destination.next(t)}}},pMcL:function(t,e,n){var a=n("Wa4q");t.exports=a.Symbol},pMnS:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("iInd"),i=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),a["ɵdid"](1,212992,null,0,r.r,[r.b,a.ViewContainerRef,a.ComponentFactoryResolver,[8,null],a.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"ng-component",[],null,null,null,s,i)),a["ɵdid"](1,49152,null,0,r.F,[],null,null)],null,null)}var o=a["ɵccf"]("ng-component",r.F,u,{},{},[])},pYKc:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("WiuZ"),s=n("wnGv"),u=n("GiVz");n("ppaS"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return d}));var o=a["ɵcrt"]({encapsulation:0,styles:[[".badge-remove[_ngcontent-%COMP%]{color:#fff}i.fa-pencil[_ngcontent-%COMP%]{font-size:1.1rem}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"span",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,7,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"span",[["class","mr-2"]],null,null,null,null,null)),(t()(),a["ɵted"](3,null,["",""])),(t()(),a["ɵeld"](4,0,null,null,4,"a",[["class","badge-remove"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t.parent,2).removeItem(t.context.$implicit)&&r),r}),null,null)),(t()(),a["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](7,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](8,1)],(function(t,e){var n=t(e,8,0,e.component.icons.destroy);t(e,7,0,n)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function d(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{cdSelect:0}),(t()(),a["ɵeld"](1,0,null,null,5,"cd-select",[["elemClass","mr-2 select-menu-edit"]],null,[[null,"selection"]],(function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.selection.emit(n)&&a),a}),i.b,i.a)),a["ɵdid"](2,638976,[[1,4],["cdSelect",4]],0,s.a,[u.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"],selectionLimit:[4,"selectionLimit"],customBadges:[5,"customBadges"],customBadgeValidators:[6,"customBadgeValidators"]},{selection:"selection"}),(t()(),a["ɵeld"](3,0,null,0,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,1),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](8,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"mr-2 select-menu-edit",n.data,n.options,n.messages,n.selectionLimit,n.customBadges,n.customBadgeValidators);var a=t(e,6,0,n.icons.edit);t(e,5,0,a),t(e,8,0,n.data)}),null)}},pYe4:function(t,e,n){var a=n("77kF"),r=n("MBcj");t.exports=function(t,e){return t&&a(e,r(e),t)}},pcHL:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"tree-node-children",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div\n        [class.tree-children]="true"\n        [class.tree-children-no-padding]="node.options.levelPadding"\n        *treeAnimateOpen="\n          node.isExpanded;\n          speed: node.options.animateSpeed;\n          acceleration: node.options.animateAcceleration;\n          enabled: node.options.animateExpand\n        "\n      >\n        <tree-node-collection\n          *ngIf="node.children"\n          [nodes]="node.children"\n          [templates]="templates"\n          [treeModel]="node.treeModel"\n        >\n        </tree-node-collection>\n        <tree-loading-component\n          [style.padding-left]="node.getNodePadding()"\n          class="tree-node-loading"\n          *ngIf="!node.children"\n          [template]="templates.loadingTemplate"\n          [node]="node"\n        ></tree-loading-component>\n      </div>\n    </ng-container>\n  '})],t)}()},pcUq:function(t,e,n){var a=n("R6RA"),r=n("+FhV"),i=n("5itS");t.exports=function(t){return"function"!=typeof t.constructor||i(t)?{}:a(r(t))}},pkCn:function(t,e,n){"use strict";var a=n("0Dky");t.exports=function(t,e){var n=[][t];return!!n&&a((function(){n.call(null,e||function(){throw 1},1)}))}},pmjB:function(t,e,n){var a=n("RBUI"),r=n("PHub"),i=n("0GLT"),s=n("y/5f"),u=n("Uies"),o=n("uPDw"),l=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=i(t),d=!n&&r(t),c=!n&&!d&&s(t),f=!n&&!d&&!c&&o(t),h=n||d||c||f,g=h?a(t.length,String):[],p=g.length;for(var b in t)!e&&!l.call(t,b)||h&&("length"==b||c&&("offset"==b||"parent"==b)||f&&("buffer"==b||"byteLength"==b||"byteOffset"==b)||u(b,p))||g.push(b);return g}},ppaS:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("oxzT"),i=n("DNAf");n("wnGv");class s{constructor(t){this.i18n=t,this.data=[],this.options=[],this.messages=new i.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.icons=r.a}}},pxLl:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("mrSG"),r=n("IheW"),i=n("LRne"),s=n("5+tZ"),u=n("xTzq"),o=n("8Y7J"),l=n("pL04");let d=(()=>{let t=class{constructor(t){this.http=t,this.url="api/perf_counters"}list(){return this.http.get(this.url)}get(t,e){return this.http.get(`${this.url}/${t}/${e}`).pipe(Object(s.a)(t=>Object(i.a)(t.counters)))}};return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](r.c))},token:t,providedIn:l.a}),t=a.__decorate([u.a,a.__metadata("design:paramtypes",[r.c])],t),t})()},pxpQ:function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return u}));var a=n("7o/Q"),r=n("WMd4");function i(t,e=0){return function(n){return n.lift(new s(t,e))}}class s{constructor(t,e=0){this.scheduler=t,this.delay=e}call(t,e){return e.subscribe(new u(t,this.scheduler,this.delay))}}class u extends a.a{constructor(t,e,n=0){super(t),this.scheduler=e,this.delay=n}static dispatch(t){const{notification:e,destination:n}=t;e.observe(n),this.unsubscribe()}scheduleMessage(t){this.destination.add(this.scheduler.schedule(u.dispatch,this.delay,new o(t,this.destination)))}_next(t){this.scheduleMessage(r.a.createNext(t))}_error(t){this.scheduleMessage(r.a.createError(t)),this.unsubscribe()}_complete(){this.scheduleMessage(r.a.createComplete()),this.unsubscribe()}}class o{constructor(t,e){this.notification=t,this.destination=e}}},qG07:function(t,e,n){var a=n("bWnS"),r=n("ntis"),i=n("U02d"),s=n("XFPk"),u=n("J3wx");function o(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}o.prototype.clear=a,o.prototype.delete=r,o.prototype.get=i,o.prototype.has=s,o.prototype.set=u,t.exports=o},qN6l:function(t,e,n){var a=n("KFwg")(Object,"create");t.exports=a},qeWI:function(t,e,n){var a=n("IMTC")(Object.keys,Object);t.exports=a},qgXg:function(t,e,n){"use strict";var a=n("3N8a");class r extends a.a{constructor(t,e){super(t,e),this.scheduler=t,this.work=e}schedule(t,e=0){return e>0?super.schedule(t,e):(this.delay=e,this.state=t,this.scheduler.flush(this),this)}execute(t,e){return e>0||this.closed?super.execute(t,e):this._execute(t,e)}requestAsyncId(t,e,n=0){return null!==n&&n>0||null===n&&this.delay>0?super.requestAsyncId(t,e,n):t.flush(this)}}var i=n("IjjT");class s extends i.a{}n.d(e,"a",(function(){return u}));const u=new s(r)},qjN6:function(t,e,n){var a=n("KFwg")(n("Wa4q"),"Set");t.exports=a},qjUL:function(t,e,n){var a=n("M+Mf"),r=n("ZY2H")((function(t,e,n,r){a(t,e,n,r)}));t.exports=r},quSY:function(t,e,n){"use strict";var a=n("DH7j"),r=n("XoHu"),i=n("n6bG");const s=(()=>{function t(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((t,e)=>`${e+1}) ${t.toString()}`).join("\n  ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return t.prototype=Object.create(Error.prototype),t})();n.d(e,"a",(function(){return u}));let u=(()=>{class t{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}unsubscribe(){let e;if(this.closed)return;let{_parentOrParents:n,_unsubscribe:u,_subscriptions:l}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof t)n.remove(this);else if(null!==n)for(let t=0;t<n.length;++t)n[t].remove(this);if(Object(i.a)(u))try{u.call(this)}catch(d){e=d instanceof s?o(d.errors):[d]}if(Object(a.a)(l)){let t=-1,n=l.length;for(;++t<n;){const n=l[t];if(Object(r.a)(n))try{n.unsubscribe()}catch(d){e=e||[],d instanceof s?e=e.concat(o(d.errors)):e.push(d)}}}if(e)throw new s(e)}add(e){let n=e;if(!e)return t.EMPTY;switch(typeof e){case"function":n=new t(e);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof t)){const e=n;n=new t,n._subscriptions=[e]}break;default:throw new Error("unrecognized teardown "+e+" added to Subscription.")}let{_parentOrParents:a}=n;if(null===a)n._parentOrParents=this;else if(a instanceof t){if(a===this)return n;n._parentOrParents=[a,this]}else{if(-1!==a.indexOf(this))return n;a.push(this)}const r=this._subscriptions;return null===r?this._subscriptions=[n]:r.push(n),n}remove(t){const e=this._subscriptions;if(e){const n=e.indexOf(t);-1!==n&&e.splice(n,1)}}}var e;return t.EMPTY=((e=new t).closed=!0,e),t})();function o(t){return t.reduce((t,e)=>t.concat(e instanceof s?e.errors:e),[])}},"qwH+":function(t,e,n){var a=n("dX5L"),r=n("Gf4A"),i=n("BJMh"),s=n("qjN6"),u=n("0BcO"),o=n("LaC8"),l=n("+xYL"),d=l(a),c=l(r),f=l(i),h=l(s),g=l(u),p=o;(a&&"[object DataView]"!=p(new a(new ArrayBuffer(1)))||r&&"[object Map]"!=p(new r)||i&&"[object Promise]"!=p(i.resolve())||s&&"[object Set]"!=p(new s)||u&&"[object WeakMap]"!=p(new u))&&(p=function(t){var e=o(t),n="[object Object]"==e?t.constructor:void 0,a=n?l(n):"";if(a)switch(a){case d:return"[object DataView]";case c:return"[object Map]";case f:return"[object Promise]";case h:return"[object Set]";case g:return"[object WeakMap]"}return e}),t.exports=p},qzZ1:function(t,e){var n="object"==typeof global&&global&&global.Object===Object&&global;t.exports=n},"r2+u":function(t,e,n){var a=n("qwH+"),r=n("x3F9");t.exports=function(t){return r(t)&&"[object Map]"==a(t)}},r467:function(t,e,n){var a=n("Q7RW"),r=n("JTPl"),i=n("hmSm"),s=n("+xYL"),u=/^\[object .+?Constructor\]$/,o=RegExp("^"+Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||r(t))&&(a(t)?o:u).test(s(t))}},rB9j:function(t,e,n){"use strict";var a=n("I+eb"),r=n("kmMV");a({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},rKzb:function(t,e,n){"use strict";var a=n("4zBA"),r=n("4syw"),i=n("8YOa").getWeakData,s=n("glrk"),u=n("hh1v"),o=n("GarU"),l=n("ImZN"),d=n("tycR"),c=n("Gi26"),f=n("afO8"),h=f.set,g=f.getterFor,p=d.find,b=d.findIndex,m=a([].splice),y=0,v=function(t){return t.frozen||(t.frozen=new x)},x=function(){this.entries=[]},_=function(t,e){return p(t.entries,(function(t){return t[0]===e}))};x.prototype={get:function(t){var e=_(this,t);if(e)return e[1]},has:function(t){return!!_(this,t)},set:function(t,e){var n=_(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=b(this.entries,(function(e){return e[0]===t}));return~e&&m(this.entries,e,1),!!~e}},t.exports={getConstructor:function(t,e,n,a){var d=t((function(t,r){o(t,f),h(t,{type:e,id:y++,frozen:void 0}),null!=r&&l(r,t[a],{that:t,AS_ENTRIES:n})})),f=d.prototype,p=g(e),b=function(t,e,n){var a=p(t),r=i(s(e),!0);return!0===r?v(a).set(e,n):r[a.id]=n,t};return r(f,{delete:function(t){var e=p(this);if(!u(t))return!1;var n=i(t);return!0===n?v(e).delete(t):n&&c(n,e.id)&&delete n[e.id]},has:function(t){var e=p(this);if(!u(t))return!1;var n=i(t);return!0===n?v(e).has(t):n&&c(n,e.id)}}),r(f,n?{get:function(t){var e=p(this);if(u(t)){var n=i(t);return!0===n?v(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return b(this,t,e)}}:{add:function(t){return b(this,t,!0)}}),d}}},rW0t:function(t,e,n){"use strict";var a=n("glrk");t.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},rZud:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",a.TemplateRef)],t.prototype,"template",void 0),i([Object(a.Component)({selector:"tree-node-content",encapsulation:a.ViewEncapsulation.None,template:'\n  <span *ngIf="!template">{{ node.displayField }}</span>\n  <ng-container\n    [ngTemplateOutlet]="template"\n    [ngTemplateOutletContext]="{ $implicit: node, node: node, index: index }">\n  </ng-container>'})],t)}()},raLr:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"хвилина":"хвилину":"h"===n?e?"година":"годину":t+" "+(a=+t,r={ss:e?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:e?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:e?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}function n(t){return function(){return t+"о"+(11===this.hours()?"б":"")+"] LT"}}t.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(t,e){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===t?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):t?n[/(\[[ВвУу]\]) ?dddd/.test(e)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:e,m:e,mm:e,h:"годину",hh:e,d:"день",dd:e,M:"місяць",MM:e,y:"рік",yy:e},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(t){return/^(дня|вечора)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночі":t<12?"ранку":t<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-й";case"D":return t+"-го";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},rk81:function(t,e,n){var a=n("aT2Y"),r=n("vDHD"),i=n("EWmY"),s=n("cjaf"),u=n("2oum"),o=n("gHid");function l(t){var e=this.__data__=new a(t);this.size=e.size}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=s,l.prototype.has=u,l.prototype.set=o,t.exports=l},rpNk:function(t,e,n){"use strict";var a,r,i,s=n("0Dky"),u=n("Fib7"),o=n("fHMY"),l=n("4WOD"),d=n("busE"),c=n("tiKp"),f=n("xDBR"),h=c("iterator"),g=!1;[].keys&&("next"in(i=[].keys())?(r=l(l(i)))!==Object.prototype&&(a=r):g=!0),null==a||s((function(){var t={};return a[h].call(t)!==t}))?a={}:f&&(a=o(a)),u(a[h])||d(a,h,(function(){return this})),t.exports={IteratorPrototype:a,BUGGY_SAFARI_ITERATORS:g}},"s+uk":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"s4/e":function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}},s7LF:function(t,e,n){"use strict";n.d(e,"C",(function(){return Tt})),n.d(e,"G",(function(){return gt})),n.d(e,"D",(function(){return R})),n.d(e,"E",(function(){return pt})),n.d(e,"F",(function(){return F})),n.d(e,"c",(function(){return l})),n.d(e,"d",(function(){return h})),n.d(e,"p",(function(){return o})),n.d(e,"b",(function(){return d})),n.d(e,"e",(function(){return c})),n.d(e,"q",(function(){return p})),n.d(e,"r",(function(){return m})),n.d(e,"s",(function(){return y})),n.d(e,"t",(function(){return ut})),n.d(e,"u",(function(){return ht})),n.d(e,"w",(function(){return C})),n.d(e,"x",(function(){return A})),n.d(e,"j",(function(){return xt})),n.d(e,"l",(function(){return bt})),n.d(e,"g",(function(){return yt})),n.d(e,"m",(function(){return mt})),n.d(e,"v",(function(){return q})),n.d(e,"A",(function(){return M})),n.d(e,"z",(function(){return _t})),n.d(e,"h",(function(){return wt})),n.d(e,"a",(function(){return nt})),n.d(e,"f",(function(){return it})),n.d(e,"i",(function(){return at})),n.d(e,"k",(function(){return rt})),n.d(e,"o",(function(){return x})),n.d(e,"B",(function(){return T})),n.d(e,"n",(function(){return Ot})),n.d(e,"y",(function(){return St}));var a=n("8Y7J"),r=n("cUpR"),i=n("cp0P"),s=n("Cfvw"),u=n("lJxs");const o=new a.InjectionToken("NgValueAccessor");class l{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"checked",t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}const d=new a.InjectionToken("CompositionEventMode");class c{constructor(t,e,n){this._renderer=t,this._elementRef=e,this._compositionMode=n,this.onChange=t=>{},this.onTouched=()=>{},this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const t=Object(r.q)()?Object(r.q)().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}class f{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}reset(t){this.control&&this.control.reset(t)}hasError(t,e){return!!this.control&&this.control.hasError(t,e)}getError(t,e){return this.control?this.control.getError(t,e):null}}class h extends f{get formDirective(){return null}get path(){return null}}function g(){throw new Error("unimplemented")}class p extends f{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null,this._rawValidators=[],this._rawAsyncValidators=[]}get validator(){return g()}get asyncValidator(){return g()}}class b{constructor(t){this._cd=t}get ngClassUntouched(){return!!this._cd.control&&this._cd.control.untouched}get ngClassTouched(){return!!this._cd.control&&this._cd.control.touched}get ngClassPristine(){return!!this._cd.control&&this._cd.control.pristine}get ngClassDirty(){return!!this._cd.control&&this._cd.control.dirty}get ngClassValid(){return!!this._cd.control&&this._cd.control.valid}get ngClassInvalid(){return!!this._cd.control&&this._cd.control.invalid}get ngClassPending(){return!!this._cd.control&&this._cd.control.pending}}class m extends b{constructor(t){super(t)}}class y extends b{constructor(t){super(t)}}function v(t){return null==t||0===t.length}const x=new a.InjectionToken("NgValidators"),_=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class T{static min(t){return e=>{if(v(e.value)||v(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n<t?{min:{min:t,actual:e.value}}:null}}static max(t){return e=>{if(v(e.value)||v(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n>t?{max:{max:t,actual:e.value}}:null}}static required(t){return v(t.value)?{required:!0}:null}static requiredTrue(t){return!0===t.value?null:{required:!0}}static email(t){return v(t.value)||_.test(t.value)?null:{email:!0}}static minLength(t){return e=>{if(v(e.value))return null;const n=e.value?e.value.length:0;return n<t?{minlength:{requiredLength:t,actualLength:n}}:null}}static maxLength(t){return e=>{const n=e.value?e.value.length:0;return n>t?{maxlength:{requiredLength:t,actualLength:n}}:null}}static pattern(t){if(!t)return T.nullValidator;let e,n;return"string"==typeof t?(n="","^"!==t.charAt(0)&&(n+="^"),n+=t,"$"!==t.charAt(t.length-1)&&(n+="$"),e=new RegExp(n)):(n=t.toString(),e=t),t=>{if(v(t.value))return null;const a=t.value;return e.test(a)?null:{pattern:{requiredPattern:n,actualValue:a}}}}static nullValidator(t){return null}static compose(t){if(!t)return null;const e=t.filter(w);return 0==e.length?null:function(t){return S(function(t,e){return e.map(e=>e(t))}(t,e))}}static composeAsync(t){if(!t)return null;const e=t.filter(w);return 0==e.length?null:function(t){const n=function(t,e){return e.map(e=>e(t))}(t,e).map(O);return Object(i.a)(n).pipe(Object(u.a)(S))}}}function w(t){return null!=t}function O(t){const e=Object(a["ɵisPromise"])(t)?Object(s.a)(t):t;if(!Object(a["ɵisObservable"])(e))throw new Error("Expected validator to return Promise or Observable.");return e}function S(t){const e=t.reduce((t,e)=>null!=e?Object.assign({},t,e):t,{});return 0===Object.keys(e).length?null:e}function I(t){return t.validate?e=>t.validate(e):t}function N(t){return t.validate?e=>t.validate(e):t}class C{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}class R{constructor(){this._accessors=[]}add(t,e){this._accessors.push([t,e])}remove(t){for(let e=this._accessors.length-1;e>=0;--e)if(this._accessors[e][1]===t)return void this._accessors.splice(e,1)}select(t){this._accessors.forEach(e=>{this._isSameGroup(e,t)&&e[1]!==t&&e[1].fireUncheck(t.value)})}_isSameGroup(t,e){return!!t[0].control&&t[0]._parent===e._control._parent&&t[1].name===e.name}}class A{constructor(t,e,n,a){this._renderer=t,this._elementRef=e,this._registry=n,this._injector=a,this.onChange=()=>{},this.onTouched=()=>{}}ngOnInit(){this._control=this._injector.get(p),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(t){this._state=t===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)}registerOnChange(t){this._fn=t,this.onChange=()=>{t(this.value),this._registry.select(this)}}fireUncheck(t){this.writeValue(t)}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_checkName(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)}_throwNameError(){throw new Error('\n      If you define both a name and a formControlName attribute on your radio button, their values\n      must match. Ex: <input type="radio" formControlName="food" name="food">\n    ')}}const k='\n    <div [formGroup]="myGroup">\n      <input formControlName="firstName">\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       firstName: new FormControl()\n    });',E='\n    <div [formGroup]="myGroup">\n       <div formGroupName="person">\n          <input formControlName="firstName">\n       </div>\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       person: new FormGroup({ firstName: new FormControl() })\n    });',L='\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>';class D{static controlParentException(){throw new Error("formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+k)}static ngModelGroupException(){throw new Error(`formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n       that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n       Option 1:  Update the parent to be formGroupName (reactive form strategy)\n\n        ${E}\n\n        Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n        ${L}`)}static missingFormException(){throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       "+k)}static groupParentException(){throw new Error("formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup\n      directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+E)}static arrayParentException(){throw new Error('formArrayName must be used with a parent formGroup directive.  You\'ll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n        Example:\n\n        \n    <div [formGroup]="myGroup">\n      <div formArrayName="cities">\n        <div *ngFor="let city of cityArray.controls; index as i">\n          <input [formControlName]="i">\n        </div>\n      </div>\n    </div>\n\n    In your class:\n\n    this.cityArray = new FormArray([new FormControl(\'SF\')]);\n    this.myGroup = new FormGroup({\n      cities: this.cityArray\n    });')}static disabledAttrWarning(){console.warn("\n      It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n      you. We recommend using this approach to avoid 'changed after checked' errors.\n       \n      Example: \n      form = new FormGroup({\n        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n        last: new FormControl('Drew', Validators.required)\n      });\n    ")}static ngModelWarning(t){console.warn(`\n    It looks like you're using ngModel on the same form field as ${t}. \n    Support for using the ngModel input property and ngModelChange event with \n    reactive form directives has been deprecated in Angular v6 and will be removed \n    in Angular v7.\n    \n    For more information on this, see our API docs here:\n    https://angular.io/api/forms/${"formControl"===t?"FormControlDirective":"FormControlName"}#use-with-ngmodel\n    `)}}function P(t,e){return null==t?""+e:(e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class M{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=a["ɵlooseIdentical"]}set compareWith(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t}writeValue(t){this.value=t;const e=this._getOptionId(t);null==e&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);const n=P(e,t);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)}registerOnChange(t){this.onChange=e=>{this.value=this._getOptionValue(e),t(this.value)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(){return(this._idCounter++).toString()}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e),t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e):t}}class q{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption())}set ngValue(t){null!=this._select&&(this._select._optionMap.set(this.id,t),this._setElementValue(P(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._setElementValue(t),this._select&&this._select.writeValue(this._select.value)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}function j(t,e){return null==t?""+e:("string"==typeof e&&(e=`'${e}'`),e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class F{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption(this))}set ngValue(t){null!=this._select&&(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._select?(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}_setSelected(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}function V(t,e){return[...e.path,t]}function G(t,e){t||H(e,"Cannot find control with"),e.valueAccessor||H(e,"No value accessor for form control with"),t.validator=T.compose([t.validator,e.validator]),t.asyncValidator=T.composeAsync([t.asyncValidator,e.asyncValidator]),e.valueAccessor.writeValue(t.value),function(t,e){e.valueAccessor.registerOnChange(n=>{t._pendingValue=n,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&B(t,e)})}(t,e),function(t,e){t.registerOnChange((t,n)=>{e.valueAccessor.writeValue(t),n&&e.viewToModelUpdate(t)})}(t,e),function(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&B(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),e.valueAccessor.setDisabledState&&t.registerOnDisabledChange(t=>{e.valueAccessor.setDisabledState(t)}),e._rawValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())}),e._rawAsyncValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())})}function B(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function z(t,e){null==t&&H(e,"Cannot find control with"),t.validator=T.compose([t.validator,e.validator]),t.asyncValidator=T.composeAsync([t.asyncValidator,e.asyncValidator])}function Y(t){return H(t,"There is no FormControl instance attached to form control element with")}function H(t,e){let n;throw n=t.path.length>1?`path: '${t.path.join(" -> ")}'`:t.path[0]?`name: '${t.path}'`:"unspecified name attribute",new Error(`${e} ${n}`)}function U(t){return null!=t?T.compose(t.map(I)):null}function W(t){return null!=t?T.composeAsync(t.map(N)):null}function K(t,e){if(!t.hasOwnProperty("model"))return!1;const n=t.model;return!!n.isFirstChange()||!Object(a["ɵlooseIdentical"])(e,n.currentValue)}const $=[l,class{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(t))}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}},C,M,class{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=a["ɵlooseIdentical"]}set compareWith(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t}writeValue(t){let e;if(this.value=t,Array.isArray(t)){const n=t.map(t=>this._getOptionId(t));e=(t,e)=>{t._setSelected(n.indexOf(e.toString())>-1)}}else e=(t,e)=>{t._setSelected(!1)};this._optionMap.forEach(e)}registerOnChange(t){this.onChange=e=>{const n=[];if(e.hasOwnProperty("selectedOptions")){const t=e.selectedOptions;for(let e=0;e<t.length;e++){const a=t.item(e),r=this._getOptionValue(a.value);n.push(r)}}else{const t=e.options;for(let e=0;e<t.length;e++){const a=t.item(e);if(a.selected){const t=this._getOptionValue(a.value);n.push(t)}}}this.value=n,t(n)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(t){const e=(this._idCounter++).toString();return this._optionMap.set(e,t),e}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e)._value,t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e)._value:t}},A];function J(t,e){t._syncPendingControls(),e.forEach(t=>{const e=t.control;"submit"===e.updateOn&&e._pendingChange&&(t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1)})}function Z(t,e){if(!e)return null;Array.isArray(e)||H(t,"Value accessor was not provided as an array for form control with");let n=void 0,a=void 0,r=void 0;return e.forEach(e=>{var i;e.constructor===c?n=e:(i=e,$.some(t=>i.constructor===t)?(a&&H(t,"More than one built-in value accessor matches form control with"),a=e):(r&&H(t,"More than one custom value accessor matches form control with"),r=e))}),r||a||n||(H(t,"No valid value accessor for form control with"),null)}function Q(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}function X(t){const e=et(t)?t.validators:t;return Array.isArray(e)?U(e):e||null}function tt(t,e){const n=et(e)?e.asyncValidators:t;return Array.isArray(n)?W(n):n||null}function et(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class nt{constructor(t,e){this.validator=t,this.asyncValidator=e,this._onCollectionChange=()=>{},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}get parent(){return this._parent}get valid(){return"VALID"===this.status}get invalid(){return"INVALID"===this.status}get pending(){return"PENDING"==this.status}get disabled(){return"DISABLED"===this.status}get enabled(){return"DISABLED"!==this.status}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this.validator=X(t)}setAsyncValidators(t){this.asyncValidator=tt(t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(t=>t.markAllAsTouched())}markAsUntouched(t={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}markAsDirty(t={}){this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)}markAsPristine(t={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}markAsPending(t={}){this.status="PENDING",!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)}disable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="DISABLED",this.errors=null,this._forEachChild(e=>{e.disable(Object.assign({},t,{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign({},t,{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!0))}enable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="VALID",this._forEachChild(e=>{e.enable(Object.assign({},t,{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(Object.assign({},t,{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!1))}_updateAncestors(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(t){this._parent=t}updateValueAndValidity(t={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this.status||this._runAsyncValidator(t.emitEvent)),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(t)}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t){if(this.asyncValidator){this.status="PENDING";const e=O(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(e=>this.setErrors(e,{emitEvent:t}))}}_cancelExistingSubscription(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)}get(t){return function(t,e,n){return null==e?null:(e instanceof Array||(e=e.split(".")),e instanceof Array&&0===e.length?null:e.reduce((t,e)=>t instanceof rt?t.controls.hasOwnProperty(e)?t.controls[e]:null:t instanceof it&&t.at(e)||null,t))}(this,t)}getError(t,e){const n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)}_initObservables(){this.valueChanges=new a.EventEmitter,this.statusChanges=new a.EventEmitter}_calculateStatus(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t={}){this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}_updateTouched(t={}){this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}_isBoxedValue(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){et(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){return!t&&this._parent&&this._parent.dirty&&!this._parent._anyControlsDirty()}}class at extends nt{constructor(t=null,e,n){super(X(e),tt(n,e)),this._onChange=[],this._applyFormState(t),this._setUpdateStrategy(e),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),this._initObservables()}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(t=>t(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=null,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_clearChangeFns(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=()=>{}}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_forEachChild(t){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(t){this._isBoxedValue(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}}class rt extends nt{constructor(t,e,n){super(X(e),tt(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}removeControl(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){this._checkAllValuesPresent(t),Object.keys(t).forEach(n=>{this._throwIfControlMissing(n),this.controls[n].setValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){Object.keys(t).forEach(n=>{this.controls[n]&&this.controls[n].patchValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t={},e={}){this._forEachChild((n,a)=>{n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(t,e,n)=>(t[n]=e instanceof at?e.value:e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(t,e)=>!!e._syncPendingControls()||t);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!Object.keys(this.controls).length)throw new Error("\n        There are no form controls registered with this group yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[t])throw new Error(`Cannot find form control with name: ${t}.`)}_forEachChild(t){Object.keys(this.controls).forEach(e=>t(this.controls[e],e))}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){let e=!1;return this._forEachChild((n,a)=>{e=e||this.contains(a)&&t(n)}),e}_reduceValue(){return this._reduceChildren({},(t,e,n)=>((e.enabled||this.disabled)&&(t[n]=e.value),t))}_reduceChildren(t,e){let n=t;return this._forEachChild((t,a)=>{n=e(n,t,a)}),n}_allControlsDisabled(){for(const t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control with name: '${n}'.`)})}}class it extends nt{constructor(t,e,n){super(X(e),tt(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}at(t){return this.controls[t]}push(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()}insert(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()}removeAt(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),this.updateValueAndValidity()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){this._checkAllValuesPresent(t),t.forEach((t,n)=>{this._throwIfControlMissing(n),this.at(n).setValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t.forEach((t,n)=>{this.at(n)&&this.at(n).patchValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t=[],e={}){this._forEachChild((n,a)=>{n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(t=>t instanceof at?t.value:t.getRawValue())}clear(){this.controls.length<1||(this._forEachChild(t=>t._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity())}_syncPendingControls(){let t=this.controls.reduce((t,e)=>!!e._syncPendingControls()||t,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(t))throw new Error("Cannot find form control at index "+t)}_forEachChild(t){this.controls.forEach((e,n)=>{t(e,n)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control at index: ${n}.`)})}_allControlsDisabled(){for(const t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}}const st=(()=>Promise.resolve(null))();class ut extends h{constructor(t,e){super(),this.submitted=!1,this._directives=[],this.ngSubmit=new a.EventEmitter,this.form=new rt({},U(t),W(e))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(t){st.then(()=>{const e=this._findContainer(t.path);t.control=e.registerControl(t.name,t.control),G(t.control,t),t.control.updateValueAndValidity({emitEvent:!1}),this._directives.push(t)})}getControl(t){return this.form.get(t.path)}removeControl(t){st.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name),Q(this._directives,t)})}addFormGroup(t){st.then(()=>{const e=this._findContainer(t.path),n=new rt({});z(n,t),e.registerControl(t.name,n),n.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(t){st.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name)})}getFormGroup(t){return this.form.get(t.path)}updateModel(t,e){st.then(()=>{this.form.get(t.path).setValue(e)})}setValue(t){this.control.setValue(t)}onSubmit(t){return this.submitted=!0,J(this.form,this._directives),this.ngSubmit.emit(t),!1}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(t){return t.pop(),t.length?this.form.get(t):this.form}}class ot{static modelParentException(){throw new Error(`\n      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using\n      formGroup's partner directive "formControlName" instead.  Example:\n\n      ${k}\n\n      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n      Example:\n\n      \n    <div [formGroup]="myGroup">\n       <input formControlName="firstName">\n       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">\n    </div>\n  `)}static formGroupNameException(){throw new Error(`\n      ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n      Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n      ${E}\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      ${L}`)}static missingNameException(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n      control must be defined as \'standalone\' in ngModelOptions.\n\n      Example 1: <input [(ngModel)]="person.firstName" name="first">\n      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">')}static modelGroupParentException(){throw new Error(`\n      ngModelGroup cannot be used with a parent formGroup directive.\n\n      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n      ${E}\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      ${L}`)}static ngFormWarning(){console.warn("\n    It looks like you're using 'ngForm'.\n\n    Support for using the 'ngForm' element selector has been deprecated in Angular v6 and will be removed\n    in Angular v9.\n\n    Use 'ng-form' instead.\n\n    Before:\n    <ngForm #myForm=\"ngForm\">\n\n    After:\n    <ng-form #myForm=\"ngForm\">\n    ")}}const lt=new a.InjectionToken("NgFormSelectorWarning");class dt extends h{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return V(this.name,this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._validators)}get asyncValidator(){return W(this._asyncValidators)}_checkParentType(){}}class ct extends dt{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){this._parent instanceof ct||this._parent instanceof ut||ot.modelGroupParentException()}}const ft=(()=>Promise.resolve(null))();class ht extends p{constructor(t,e,n,r){super(),this.control=new at,this._registered=!1,this.update=new a.EventEmitter,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=Z(this,r)}ngOnChanges(t){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in t&&this._updateDisabled(t),K(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?V(this.name,this._parent):[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._rawValidators)}get asyncValidator(){return W(this._rawAsyncValidators)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){G(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){!(this._parent instanceof ct)&&this._parent instanceof dt?ot.formGroupNameException():this._parent instanceof ct||this._parent instanceof ut||ot.modelParentException()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||ot.missingNameException()}_updateValue(t){ft.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1})})}_updateDisabled(t){const e=t.isDisabled.currentValue,n=""===e||e&&"false"!==e;ft.then(()=>{n&&!this.control.disabled?this.control.disable():!n&&this.control.disabled&&this.control.enable()})}}class gt{}const pt=new a.InjectionToken("NgModelWithFormControlWarning");class bt extends h{constructor(t,e){super(),this._validators=t,this._asyncValidators=e,this.submitted=!1,this.directives=[],this.form=null,this.ngSubmit=new a.EventEmitter}ngOnChanges(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(t){const e=this.form.get(t.path);return G(e,t),e.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),e}getControl(t){return this.form.get(t.path)}removeControl(t){Q(this.directives,t)}addFormGroup(t){const e=this.form.get(t.path);z(e,t),e.updateValueAndValidity({emitEvent:!1})}removeFormGroup(t){}getFormGroup(t){return this.form.get(t.path)}addFormArray(t){const e=this.form.get(t.path);z(e,t),e.updateValueAndValidity({emitEvent:!1})}removeFormArray(t){}getFormArray(t){return this.form.get(t.path)}updateModel(t,e){this.form.get(t.path).setValue(e)}onSubmit(t){return this.submitted=!0,J(this.form,this.directives),this.ngSubmit.emit(t),!1}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_updateDomValue(){this.directives.forEach(t=>{const e=this.form.get(t.path);t.control!==e&&(function(t,e){e.valueAccessor.registerOnChange(()=>Y(e)),e.valueAccessor.registerOnTouched(()=>Y(e)),e._rawValidators.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),e._rawAsyncValidators.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),t&&t._clearChangeFns()}(t.control,t),e&&G(e,t),t.control=e)}),this.form._updateTreeValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(()=>this._updateDomValue()),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{}),this._oldForm=this.form}_updateValidators(){const t=U(this._validators);this.form.validator=T.compose([this.form.validator,t]);const e=W(this._asyncValidators);this.form.asyncValidator=T.composeAsync([this.form.asyncValidator,e])}_checkFormPresent(){this.form||D.missingFormException()}}class mt extends dt{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){vt(this._parent)&&D.groupParentException()}}class yt extends h{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return V(this.name,this._parent)}get validator(){return U(this._validators)}get asyncValidator(){return W(this._asyncValidators)}_checkParentType(){vt(this._parent)&&D.arrayParentException()}}function vt(t){return!(t instanceof mt||t instanceof bt||t instanceof yt)}let xt=(()=>{class t extends p{constructor(t,e,n,r,i){super(),this._ngModelWarningConfig=i,this._added=!1,this.update=new a.EventEmitter,this._ngModelWarningSent=!1,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=Z(this,r)}set isDisabled(t){D.disabledAttrWarning()}ngOnChanges(e){var n,r;this._added||this._setUpControl(),K(e,this.viewModel)&&("formControlName",n=t,this,r=this._ngModelWarningConfig,Object(a.isDevMode)()&&"never"!==r&&((null!==r&&"once"!==r||n._ngModelWarningSentOnce)&&("always"!==r||this._ngModelWarningSent)||(D.ngModelWarning("formControlName"),n._ngModelWarningSentOnce=!0,this._ngModelWarningSent=!0)),this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}get path(){return V(this.name,this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._rawValidators)}get asyncValidator(){return W(this._rawAsyncValidators)}_checkParentType(){!(this._parent instanceof mt)&&this._parent instanceof dt?D.ngModelGroupException():this._parent instanceof mt||this._parent instanceof bt||this._parent instanceof yt||D.controlParentException()}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0}}return t._ngModelWarningSentOnce=!1,t})();class _t{get required(){return this._required}set required(t){this._required=null!=t&&!1!==t&&""+t!="false",this._onChange&&this._onChange()}validate(t){return this.required?T.required(t):null}registerOnValidatorChange(t){this._onChange=t}}class Tt{}class wt{group(t,e=null){const n=this._reduceControls(t);let a=null,r=null,i=void 0;return null!=e&&(function(t){return void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn}(e)?(a=null!=e.validators?e.validators:null,r=null!=e.asyncValidators?e.asyncValidators:null,i=null!=e.updateOn?e.updateOn:void 0):(a=null!=e.validator?e.validator:null,r=null!=e.asyncValidator?e.asyncValidator:null)),new rt(n,{asyncValidators:r,updateOn:i,validators:a})}control(t,e,n){return new at(t,e,n)}array(t,e,n){const a=t.map(t=>this._createControl(t));return new it(a,e,n)}_reduceControls(t){const e={};return Object.keys(t).forEach(n=>{e[n]=this._createControl(t[n])}),e}_createControl(t){return t instanceof at||t instanceof rt||t instanceof it?t:Array.isArray(t)?this.control(t[0],t.length>1?t[1]:null,t.length>2?t[2]:null):this.control(t)}}class Ot{static withConfig(t){return{ngModule:Ot,providers:[{provide:lt,useValue:t.warnOnDeprecatedNgFormSelector}]}}}class St{static withConfig(t){return{ngModule:St,providers:[{provide:pt,useValue:t.warnOnNgModelWithFormControl}]}}}},sA22:function(t,e,n){var a=n("pMcL"),r=Object.prototype,i=r.hasOwnProperty,s=r.toString,u=a?a.toStringTag:void 0;t.exports=function(t){var e=i.call(t,u),n=t[u];try{t[u]=void 0;var a=!0}catch(o){}var r=s.call(t);return a&&(e?t[u]=n:delete t[u]),r}},sEFX:function(t,e,n){"use strict";var a=n("AO7/"),r=n("9d/t");t.exports=a?{}.toString:function(){return"[object "+r(this)+"]"}},sEik:function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},sLuX:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("25BL"),i=n("uIqm");n("FSuO"),n("a0VL"),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return u}));var s=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function u(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{table:0}),(t()(),a["ɵeld"](1,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,r.b,r.a)),a["ɵdid"](2,2867200,[[1,4],["table",4]],0,i.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],header:[4,"header"],footer:[5,"footer"],limit:[6,"limit"],autoReload:[7,"autoReload"],autoSave:[8,"autoSave"],customCss:[9,"customCss"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.tableData,n.columns,"flex",!1,!1,!1,0,n.autoReload,!1,n.customCss)}),null)}},sMBO:function(t,e,n){var a=n("g6v/"),r=n("Xnc8").EXISTS,i=n("4zBA"),s=n("m/L8").f,u=Function.prototype,o=i(u.toString),l=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,d=i(l.exec);a&&!r&&s(u,"name",{configurable:!0,get:function(){try{return d(l,o(this))[1]}catch(t){return""}}})},sVev:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return t.prototype=Object.create(Error.prototype),t})()},sb0X:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("s7LF"),i=n("oxzT"),s=n("LvDl");class u{constructor(t){this.elRef=t,this.type="submit",this.disabled=!1,this.submitAction=new a.EventEmitter,this.loading=!1,this.icons=i.a}ngOnInit(){this.form.statusChanges.subscribe(()=>{s.has(this.form.errors,"cdSubmitButton")&&(this.loading=!1,s.unset(this.form.errors,"cdSubmitButton"),this.form instanceof r.a&&this.form.updateValueAndValidity())})}submit(t){this.focusButton(),this.form instanceof r.l&&this.form.onSubmit(t),this.form.invalid?this.focusInvalid():(this.loading=!0,this.submitAction.emit())}focusButton(){this.elRef.nativeElement.offsetParent.querySelector(`button[type="${this.type}"]`).focus()}focusInvalid(){const t=this.elRef.nativeElement.offsetParent.querySelector("input.ng-invalid, select.ng-invalid");t&&t.focus()}}},sne2:function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"e",(function(){return s})),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return o})),n.d(e,"d",(function(){return l}));var a=n("8Y7J"),r=n("GiVz");let i=(()=>{class t{}return t.organization="ceph",t.projectName="Ceph Dashboard",t.license="Free software (LGPL 2.1).",t})();var s=function(t){return t.CREATE="create",t.EDIT="edit",t.UPDATE="update",t.REMOVE="remove",t.DELETE="delete",t.ADD="add",t.COPY="copy",t.CLONE="clone",t.RECREATE="recreate",t.EXPIRE="expire",t}({}),u=function(t){return t.CREATE="Create",t.DELETE="Delete",t.ADD="Add",t.REMOVE="Remove",t.EDIT="Edit",t.CANCEL="Cancel",t.COPY="Copy",t.CLONE="Clone",t.UPDATE="Update",t.EVICT="Evict",t.SHOW="Show",t.RECREATE="Recreate",t.EXPIRE="Expire",t}({});let o=(()=>{class t{constructor(t){this.i18n=t,this.CREATE=this.i18n("Create"),this.DELETE=this.i18n("Delete"),this.ADD=this.i18n("Add"),this.SET=this.i18n("Set"),this.REMOVE=this.i18n("Remove"),this.UNSET=this.i18n("Unset"),this.EDIT=this.i18n("Edit"),this.UPDATE=this.i18n("Update"),this.CANCEL=this.i18n("Cancel"),this.CLONE=this.i18n("Clone"),this.COPY=this.i18n("Copy"),this.DEEP_SCRUB=this.i18n("Deep Scrub"),this.DESTROY=this.i18n("Destroy"),this.EVICT=this.i18n("Evict"),this.FLATTEN=this.i18n("Flatten"),this.MARK_DOWN=this.i18n("Mark Down"),this.MARK_IN=this.i18n("Mark In"),this.MARK_LOST=this.i18n("Mark Lost"),this.MARK_OUT=this.i18n("Mark Out"),this.PROTECT=this.i18n("Protect"),this.PURGE=this.i18n("Purge"),this.RENAME=this.i18n("Rename"),this.RESTORE=this.i18n("Restore"),this.REWEIGHT=this.i18n("Reweight"),this.ROLLBACK=this.i18n("Rollback"),this.SCRUB=this.i18n("Scrub"),this.SHOW=this.i18n("Show"),this.TRASH=this.i18n("Move to Trash"),this.UNPROTECT=this.i18n("Unprotect"),this.CHANGE=this.i18n("Change"),this.FLAGS=this.i18n("Flags"),this.RECREATE=this.i18n("Recreate"),this.EXPIRE=this.i18n("Expire")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})(),l=(()=>{class t{constructor(t){this.i18n=t,this.CREATED=this.i18n("Created"),this.DELETED=this.i18n("Deleted"),this.ADDED=this.i18n("Added"),this.REMOVED=this.i18n("Removed"),this.EDITED=this.i18n("Edited"),this.CANCELED=this.i18n("Canceled"),this.CLONED=this.i18n("Cloned"),this.COPIED=this.i18n("Copied"),this.DEEP_SCRUBBED=this.i18n("Deep Scrubbed"),this.DESTROYED=this.i18n("Destroyed"),this.FLATTENED=this.i18n("Flattened"),this.MARKED_DOWN=this.i18n("Marked Down"),this.MARKED_IN=this.i18n("Marked In"),this.MARKED_LOST=this.i18n("Marked Lost"),this.MARKED_OUT=this.i18n("Marked Out"),this.PROTECTED=this.i18n("Protected"),this.PURGED=this.i18n("Purged"),this.RENAMED=this.i18n("Renamed"),this.RESTORED=this.i18n("Restored"),this.REWEIGHTED=this.i18n("Reweighted"),this.ROLLED_BACK=this.i18n("Rolled back"),this.SCRUBBED=this.i18n("Scrubbed"),this.SHOWED=this.i18n("Showed"),this.TRASHED=this.i18n("Moved to Trash"),this.UNPROTECTED=this.i18n("Unprotected"),this.CHANGE=this.i18n("Change"),this.RECREATED=this.i18n("Recreated"),this.EXPIRED=this.i18n("Expired")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})()},sp3z:function(t,e,n){!function(t){"use strict";t.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(t){return"ຕອນແລງ"===t},meridiem:function(t,e,n){return t<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(t){return"ທີ່"+t}})}(n("wd/R"))},"t/zF":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e){this.name=t,this.metadata=e}}},tAZD:function(t,e,n){var a,r,i;!function(s){if("object"==typeof t.exports){var u=s(0,e);void 0!==u&&(t.exports=u)}else r=[n,e],void 0===(i="function"==typeof(a=s)?a.apply(e,r):a)||(t.exports=i)}((function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=void 0;e.default=["en",[["a","p"],["AM","PM"],n],[["AM","PM"],n,n],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],n,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],n,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",n,"{1} 'at' {0}",n],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"$","US Dollar",{},function(t){var e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}]}))},tGlX:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},tT3J:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("wd/R"))},tUCv:function(t,e,n){!function(t){"use strict";t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("wd/R"))},tiKp:function(t,e,n){var a=n("2oRo"),r=n("VpIT"),i=n("Gi26"),s=n("kOOl"),u=n("STAE"),o=n("/b8u"),l=r("wks"),d=a.Symbol,c=d&&d.for,f=o?d:d&&d.withoutSetter||s;t.exports=function(t){if(!i(l,t)||!u&&"string"!=typeof l[t]){var e="Symbol."+t;l[t]=u&&i(d,t)?d[t]:o&&c?c(e):f(e)}return l[t]}},tpUd:function(t,e,n){var a=n("CslI");t.exports=function(t){return a(t)?void 0:t}},tycR:function(t,e,n){var a=n("A2ZE"),r=n("4zBA"),i=n("RK3t"),s=n("ewvW"),u=n("B/qT"),o=n("ZfDv"),l=r([].push),d=function(t){var e=1==t,n=2==t,r=3==t,d=4==t,c=6==t,f=7==t,h=5==t||c;return function(g,p,b,m){for(var y,v,x=s(g),_=i(x),T=a(p,b),w=u(_),O=0,S=m||o,I=e?S(g,w):n||f?S(g,0):void 0;w>O;O++)if((h||O in _)&&(v=T(y=_[O],O,x),t))if(e)I[O]=v;else if(v)switch(t){case 3:return!0;case 5:return y;case 6:return O;case 2:l(I,y)}else switch(t){case 4:return!1;case 7:l(I,y)}return c?-1:r||d?d:I}};t.exports={forEach:d(0),map:d(1),filter:d(2),some:d(3),every:d(4),find:d(5),findIndex:d(6),filterReject:d(7)}},tz6c:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("2Vo4"),r=n("pLZG"),i=n("lJxs"),s=n("SxV6"),u=n("+0ag"),o=n("mSOc"),l=n("8Y7J");let d=(()=>{class t{constructor(t,e){this.summaryservice=t,this.cephReleaseNamePipe=e,this.releaseDataSource=new a.a(null),this.releaseData$=this.releaseDataSource.asObservable(),this.summaryservice.subscribeOnce(t=>{const e=this.cephReleaseNamePipe.transform(t.version);this.releaseDataSource.next(e)})}urlGenerator(t,e){const n=`http://docs.ceph.com/docs/${t}/`;return{iscsi:n+"mgr/dashboard/#enabling-iscsi-management",prometheus:n+"mgr/dashboard/#enabling-prometheus-alerting","nfs-ganesha":n+"mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard","rgw-nfs":n+"radosgw/nfs",rgw:n+"mgr/dashboard/#enabling-the-object-gateway-management-frontend",dashboard:n+"mgr/dashboard",grafana:n+"mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards",orch:n+"mgr/orchestrator",pgs:"http://ceph.com/pgcalc"}[e]}subscribeOnce(t,e,n){return this.releaseData$.pipe(Object(r.a)(t=>!!t),Object(i.a)(e=>this.urlGenerator(e,t)),Object(s.a)()).subscribe(e,n)}}return t.ngInjectableDef=l["ɵɵdefineInjectable"]({factory:function(){return new t(l["ɵɵinject"](o.a),l["ɵɵinject"](u.a))},token:t,providedIn:"root"}),t})()},u3GI:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uEye:function(t,e,n){!function(t){"use strict";t.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uIqm:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("w9WL"),i=n("LvDl"),s=n("PqYM"),u=n("HDdC"),o=n("oxzT"),l=n("x38r");class d{constructor(t){this.errorConfig={resetData:!0,displayError:!0},this.error=t}}var c=n("vCyI");n.d(e,"a",(function(){return f}));class f{constructor(t,e){this.ngZone=t,this.cdRef=e,this.columnMode="flex",this.onlyActionHeader=!1,this.toolHeader=!0,this.searchField=!0,this.header=!0,this.footer=!0,this.limit=10,this.hasDetails=!1,this.autoReload=5e3,this.identifier="id",this.forceIdentifier=!1,this.selectionType=void 0,this.updateSelectionOnRefresh="onChange",this.updateExpandedOnRefresh="onChange",this.autoSave=!0,this.searchableObjects=!1,this.extraFilterableColumns=[],this.fetchData=new a.EventEmitter,this.updateSelection=new a.EventEmitter,this.setExpandedRow=new a.EventEmitter,this.columnFiltersChanged=new a.EventEmitter,this.selection=new c.a,this.expanded=void 0,this.icons=o.a,this.cellTemplates={},this.search="",this.rows=[],this.loadingIndicator=!0,this.loadingError=!1,this.paginationClasses={pagerLeftArrow:o.a.leftArrowDouble,pagerRightArrow:o.a.rightArrowDouble,pagerPrevious:o.a.leftArrow,pagerNext:o.a.rightArrow},this.userConfig={},this.localStorage=window.localStorage,this.updating=!1,this.columnFilters=[]}get columnFiltered(){return i.some(this.columnFilters,t=>void 0!==t.value)}static prepareSearch(t){return(t=t.toLowerCase().replace(/,/g,"")).match(/['"][^'"]+['"]/)&&(t=t.replace(/['"][^'"]+['"]/g,t=>t.replace(/(['"])([^'"]+)(['"])/g,"$2").replace(/ /g,"+"))),t.split(" ").filter(t=>t)}ngOnInit(){if(this.table.element.addEventListener("mouseenter",t=>t.stopPropagation(),!0),this._addTemplates(),!this.sorts){const t=-1!==i.findIndex(this.columns,["prop",this.identifier]);this.sorts=this.createSortingDefinition(t?this.identifier:this.columns[0].prop+""),t||this.forceIdentifier||(this.identifier=this.columns[0].prop+"")}this.initUserConfig(),this.columns.forEach(t=>{t.cellTransformation&&(t.cellTemplate=this.cellTemplates[t.cellTransformation]),t.flexGrow||(t.flexGrow=t.prop+""===this.identifier?1:2),t.resizeable||(t.resizeable=!1)}),this.initExpandCollapseColumn(),this.initCheckboxColumn(),this.filterHiddenColumns(),this.initColumnFilters(),this.updateColumnFilterOptions(),this.fetchData.observers.length>0&&(this.loadingIndicator=!0),i.isInteger(this.autoReload)&&this.autoReload>0?this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=Object(s.a)(0,this.autoReload).subscribe(()=>{this.ngZone.run(()=>this.reloadData())})}):this.autoReload?this.useData():this.reloadData()}initUserConfig(){this.autoSave&&(this.tableName=this._calculateUniqueTableName(this.columns),this._loadUserConfig(),this._initUserConfigAutoSave()),this.userConfig.limit||(this.userConfig.limit=this.limit),this.userConfig.sorts||(this.userConfig.sorts=this.sorts),this.userConfig.columns?this.userConfig.columns.forEach(t=>{for(let e=0;e<this.columns.length;e++)this.columns[e].prop===t.prop&&(this.columns[e].isHidden=t.isHidden)}):this.updateUserColumns()}_calculateUniqueTableName(t){const e=t=>{if(!i.isString(t))return 0;let e=0;for(let n=0;n<t.length;n++)e+=t.charCodeAt(n)*n;return e};return t.reduce((t,n,a)=>(e(n.prop)+e(n.name))*(a+1)+t,0).toString()}_loadUserConfig(){const t=this.localStorage.getItem(this.tableName);t&&(this.userConfig=JSON.parse(t))}_initUserConfigAutoSave(){const t=u.a.create(this._initUserConfigProxy.bind(this));this.saveSubscriber=t.subscribe(this._saveUserConfig.bind(this))}_initUserConfigProxy(t){this.userConfig=new Proxy(this.userConfig,{set:(e,n,a)=>(e[n]=a,t.next(e),!0)})}_saveUserConfig(t){this.localStorage.setItem(this.tableName,JSON.stringify(t))}updateUserColumns(){this.userConfig.columns=this.columns.map(t=>({prop:t.prop,name:t.name,isHidden:!!t.isHidden}))}initCheckboxColumn(){"multiClick"===this.selectionType&&this.columns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,checkboxable:!0,canAutoResize:!1,cellClass:"cd-datatable-checkbox",width:30})}initExpandCollapseColumn(){this.hasDetails&&this.columns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,isHidden:!1,canAutoResize:!1,cellClass:"cd-datatable-expand-collapse",width:40,cellTemplate:this.rowDetailsTpl})}filterHiddenColumns(){this.tableColumns=this.columns.filter(t=>!t.isHidden)}initColumnFilters(){let t=i.filter(this.columns,{filterable:!0});t=[...t,...this.extraFilterableColumns],this.columnFilters=t.map(t=>({column:t,options:[],value:t.filterInitValue?this.createColumnFilterOption(t.filterInitValue,t.pipe):void 0})),this.selectedFilter=i.first(this.columnFilters)}createColumnFilterOption(t,e){return{raw:i.toString(t),formatted:e?e.transform(t):i.toString(t)}}updateColumnFilterOptions(){this.columnFilters.forEach(t=>{let e=[];if(i.isUndefined(t.column.filterOptions)){const n=i.filter(i.map(this.data,t.column.prop),t=>i.isString(t)&&""!==t||i.isBoolean(t)||i.isFinite(t)||i.isDate(t));e=i.sortedUniq(n.sort())}else e=t.column.filterOptions;const n=e.map(e=>this.createColumnFilterOption(e,t.column.pipe));t.value&&i.isUndefined(i.find(n,{raw:t.value.raw}))&&(t.value=void 0),t.options=n})}onSelectFilter(t){this.selectedFilter=t}onChangeFilter(t,e){t.value=i.isEqual(t.value,e)?void 0:e,this.updateFilter()}doColumnFiltering(){const t=[];let e=[...this.data],n=[];return this.columnFilters.forEach(a=>{if(void 0===a.value)return;t.push({name:a.column.name,prop:a.column.prop,value:a.value});const s=i.partition(e,t=>{const e=Object(r.C)(a.column.prop)(t,a.column.prop);return i.isUndefined(a.column.filterPredicate)?""+e===a.value.raw:a.column.filterPredicate(t,a.value.raw)});e=s[0],n=[...n,...s[1]]}),this.columnFiltersChanged.emit({filters:t,data:e,dataOut:n}),i.forEach(this.selection.selected,t=>{void 0===i.find(e,{[this.identifier]:t[this.identifier]})&&(this.selection=new c.a,this.onSelect(this.selection))}),e}ngOnDestroy(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe(),this.saveSubscriber&&this.saveSubscriber.unsubscribe()}ngAfterContentChecked(){this.table&&this.table.element.clientWidth!==this.currentWidth&&(this.currentWidth=this.table.element.clientWidth,this.table.recalculate(),i.get(this.table,"cd").markForCheck())}_addTemplates(){this.cellTemplates.bold=this.tableCellBoldTpl,this.cellTemplates.checkIcon=this.checkIconTpl,this.cellTemplates.sparkline=this.sparklineTpl,this.cellTemplates.routerLink=this.routerLinkTpl,this.cellTemplates.perSecond=this.perSecondTpl,this.cellTemplates.executing=this.executingTpl,this.cellTemplates.classAdding=this.classAddingTpl,this.cellTemplates.badge=this.badgeTpl,this.cellTemplates.map=this.mapTpl,this.cellTemplates.truncate=this.truncateTpl}useCustomClass(t){if(!this.customCss)throw new Error("Custom classes are not set!");const e=Object.keys(this.customCss),n=Object.values(this.customCss).map((n,a)=>(i.isFunction(n)&&n(t)||n===t)&&e[a]).filter(t=>t).join(" ");return i.isEmpty(n)?void 0:n}ngOnChanges(t){t.data&&t.data.currentValue&&this.useData()}setLimit(t){const e=parseInt(t.target.value,10);e>0&&(this.userConfig.limit=e)}reloadData(){if(!this.updating){this.loadingError=!1;const t=new d(()=>{this.loadingError=t.errorConfig.displayError,t.errorConfig.resetData&&(this.data=[]),this.useData()});this.fetchData.emit(t),this.updating=!0}}refreshBtn(){this.loadingIndicator=!0,this.reloadData()}rowIdentity(){return t=>{const e=t[this.identifier];if(i.isUndefined(e))throw new Error(`Wrong identifier "${this.identifier}" -> "${e}"`);return e}}useData(){this.data&&(this.updateColumnFilterOptions(),this.updateFilter(),this.reset(),this.updateSelected(),this.updateExpanded())}reset(){this.loadingIndicator=!1,this.updating=!1}updateSelected(){if("never"===this.updateSelectionOnRefresh)return;const t=[];this.selection.selected.forEach(e=>{for(const n of this.data)e[this.identifier]===n[this.identifier]&&t.push(n)}),"onChange"===this.updateSelectionOnRefresh&&i.isEqual(this.selection.selected,t)||(this.selection.selected=t,this.onSelect(this.selection))}updateExpanded(){if(i.isUndefined(this.expanded)||"never"===this.updateExpandedOnRefresh)return;const t=this.expanded[this.identifier],e=i.find(this.data,e=>t===e[this.identifier]);"onChange"===this.updateExpandedOnRefresh&&i.isEqual(this.expanded,e)||(this.expanded=e,this.setExpandedRow.emit(e))}onSelect(t){i.has(t,"selected")&&(this.selection.selected=t.selected),this.updateSelection.emit(i.clone(this.selection))}toggleColumn(t){const e=t.target.name,n=!t.target.checked;n&&1===this.tableColumns.length?t.target.checked=!0:(i.find(this.columns,t=>t.prop===e).isHidden=n,this.updateColumns())}updateColumns(){this.updateUserColumns(),this.filterHiddenColumns();const t=this.userConfig.sorts[0].prop;i.find(this.tableColumns,e=>e.prop===t)||(this.userConfig.sorts=this.createSortingDefinition(this.tableColumns[0].prop)),this.table.recalculate(),this.cdRef.detectChanges()}createSortingDefinition(t){return[{prop:t,dir:r.A.asc}]}changeSorting({sorts:t}){this.userConfig.sorts=t}onClearSearch(){this.search="",this.updateFilter()}onClearFilters(){this.columnFilters.forEach(t=>{t.value=void 0}),this.selectedFilter=i.first(this.columnFilters),this.updateFilter()}updateFilter(){let t=0!==this.columnFilters.length?this.doColumnFiltering():this.data;if(this.search.length>0&&t){const e=this.columns.filter(t=>t.cellTransformation!==l.a.sparkline);t=this.subSearch(t,f.prepareSearch(this.search),e),this.table.offset=0}this.rows=t}subSearch(t,e,n){if(0===e.length||0===t.length)return t;const a=e.pop().replace(/\+/g," ").split(":"),r=[...n];return 2===a.length&&(n=r.filter(t=>-1!==t.name.toLowerCase().indexOf(a[0]))),t=this.basicDataSearch(i.last(a),t,n),this.subSearch(t,e,r)}basicDataSearch(t,e,n){return 0===t.length?e:e.filter(e=>n.filter(n=>{let a=i.get(e,n.prop);if(i.isUndefined(n.pipe)||(a=n.pipe.transform(a)),i.isUndefined(a)||i.isNull(a))return!1;if(i.isArray(a)?a=a.join(" "):(i.isNumber(a)||i.isBoolean(a))&&(a=a.toString()),i.isObjectLike(a)){if(!this.searchableObjects)return!1;a=JSON.stringify(a)}return-1!==a.toLowerCase().indexOf(t)}).length>0)}getRowClass(){return()=>({clickable:!i.isUndefined(this.selectionType)})}toggleExpandRow(t,e,n){n.stopPropagation(),e?(this.expanded=void 0,this.setExpandedRow.emit(void 0)):(this.expanded=t,this.table.rowDetail.collapseAllRows(),this.setExpandedRow.emit(t)),this.table.rowDetail.toggleExpandRow(t)}}},uNpg:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({selector:"tree-node-checkbox",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <input\n        class="tree-node-checkbox"\n        type="checkbox"\n        (click)="node.mouseAction(\'checkboxClick\', $event)"\n        [checked]="node.isSelected"\n        [indeterminate]="node.isPartiallySelected"\n      />\n    </ng-container>\n  '})],t)}()},uPDw:function(t,e,n){var a=n("oRml"),r=n("0nKi"),i=n("L0Z1"),s=i&&i.isTypedArray,u=s?r(s):a;t.exports=u},uXwI:function(t,e,n){!function(t){"use strict";var e={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(t,e,n){return n?e%10==1&&e%100!=11?t[2]:t[3]:e%10==1&&e%100!=11?t[0]:t[1]}function a(t,a,r){return t+" "+n(e[r],t,a)}function r(t,a,r){return n(e[r],t,a)}t.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(t,e){return e?"dažas sekundes":"dažām sekundēm"},ss:a,m:r,mm:a,h:r,hh:a,d:r,dd:a,M:r,MM:a,y:r,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uYzU:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(){}transform(t){switch(t){case"user:rbd":return"user:rbd (tcmu-runner)";default:return t}}}},ufoC:function(t,e,n){"use strict";var a=function(t){return t.auth="Login",t.cephfs="CephFS",t.rbd="RBD",t.pool="Pool",t.osd="OSD",t.role="Role",t.user="User",t}({}),r=n("jVDg"),i=n("8Y7J"),s=n("GiVz");n.d(e,"a",(function(){return l}));class u{constructor(t,e,n){this.running=t,this.failure=e,this.success=n}}class o{failure(t){return this.i18n("Failed to {{failure}} {{metadata}}",{failure:this.operation.failure,metadata:this.involves(t)})}running(t){return`${this.operation.running} ${this.involves(t)}`}success(t){return`${this.operation.success} ${this.involves(t)}`}constructor(t,e,n,a){this.i18n=t,this.operation=e,this.involves=n,this.errors=a||(()=>({}))}}let l=(()=>{class t{constructor(t){this.i18n=t,this.defaultMessage=this.newTaskMessage(new u(this.i18n("Executing"),this.i18n("execute"),this.i18n("Executed")),t=>t&&(a[t.component]||t.component)||this.i18n("unknown task"),()=>({})),this.commonOperations={create:new u(this.i18n("Creating"),this.i18n("create"),this.i18n("Created")),update:new u(this.i18n("Updating"),this.i18n("update"),this.i18n("Updated")),delete:new u(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),add:new u(this.i18n("Adding"),this.i18n("add"),this.i18n("Added")),remove:new u(this.i18n("Removing"),this.i18n("remove"),this.i18n("Removed")),import:new u(this.i18n("Importing"),this.i18n("import"),this.i18n("Imported"))},this.rbd={default:t=>this.i18n("RBD '{{id}}'",{id:""+t.image_spec}),create:t=>{const e=new r.a(t.pool_name,t.namespace,t.image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},child:t=>{const e=new r.a(t.child_pool_name,t.child_namespace,t.child_image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},destination:t=>{const e=new r.a(t.dest_pool_name,t.dest_namespace,t.dest_image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},snapshot:t=>this.i18n("RBD snapshot '{{id}}'",{id:`${t.image_spec}@${t.snapshot_name}`})},this.rbd_mirroring={site_name:()=>this.i18n("mirroring site name"),bootstrap:()=>this.i18n("bootstrap token"),pool:t=>this.i18n("mirror mode for pool '{{id}}'",{id:""+t.pool_name}),pool_peer:t=>this.i18n("mirror peer for pool '{{id}}'",{id:""+t.pool_name})},this.grafana={update_dashboards:()=>this.i18n("all dashboards")},this.messages={"host/create":this.newTaskMessage(this.commonOperations.create,t=>this.host(t)),"host/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.host(t)),"osd/create":this.newTaskMessage(this.commonOperations.create,t=>this.i18n("OSDs (DriveGroups: {{tracking_id}})",{tracking_id:t.tracking_id})),"osd/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.osd(t)),"pool/create":this.newTaskMessage(this.commonOperations.create,t=>this.pool(t),t=>({17:this.i18n("Name is already used by {{pool_name}}.",{pool_name:this.pool(t)})})),"pool/edit":this.newTaskMessage(this.commonOperations.update,t=>this.pool(t),t=>({17:this.i18n("Name is already used by {{pool_name}}.",{pool_name:this.pool(t)})})),"pool/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.pool(t)),"ecp/create":this.newTaskMessage(this.commonOperations.create,t=>this.ecp(t),t=>({17:this.i18n("Name is already used by {{name}}.",{name:this.ecp(t)})})),"ecp/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.ecp(t)),"crushRule/create":this.newTaskMessage(this.commonOperations.create,t=>this.crushRule(t),t=>({17:this.i18n("Name is already used by {{name}}.",{name:this.crushRule(t)})})),"crushRule/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.crushRule(t)),"rbd/create":this.newTaskMessage(this.commonOperations.create,this.rbd.create,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.create(t)})})),"rbd/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.default,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.default(t)})})),"rbd/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.default,t=>({16:this.i18n("{{rbd_name}} is busy.",{rbd_name:this.rbd.default(t)}),39:this.i18n("{{rbd_name}} contains snapshots.",{rbd_name:this.rbd.default(t)})})),"rbd/clone":this.newTaskMessage(new u(this.i18n("Cloning"),this.i18n("clone"),this.i18n("Cloned")),this.rbd.child,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.child(t)}),22:this.i18n("Snapshot of {{rbd_name}} must be protected.",{rbd_name:this.rbd.child(t)})})),"rbd/copy":this.newTaskMessage(new u(this.i18n("Copying"),this.i18n("copy"),this.i18n("Copied")),this.rbd.destination,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.destination(t)})})),"rbd/flatten":this.newTaskMessage(new u(this.i18n("Flattening"),this.i18n("flatten"),this.i18n("Flattened")),this.rbd.default),"rbd/snap/create":this.newTaskMessage(this.commonOperations.create,this.rbd.snapshot,t=>({17:this.i18n("Name is already used by {{snap_name}}.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.snapshot,t=>({16:this.i18n("Cannot unprotect {{snap_name}} because it contains child images.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.snapshot,t=>({16:this.i18n("Cannot delete {{snap_name}} because it's protected.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/rollback":this.newTaskMessage(new u(this.i18n("Rolling back"),this.i18n("rollback"),this.i18n("Rolled back")),this.rbd.snapshot),"rbd/trash/move":this.newTaskMessage(new u(this.i18n("Moving"),this.i18n("move"),this.i18n("Moved")),t=>this.i18n("image '{{id}}' to trash",{id:t.image_spec}),()=>({2:this.i18n("Could not find image.")})),"rbd/trash/restore":this.newTaskMessage(new u(this.i18n("Restoring"),this.i18n("restore"),this.i18n("Restored")),t=>this.i18n("image '{{id}}' into '{{new_id}}'",{id:t.image_id_spec,new_id:t.new_image_name}),t=>({17:this.i18n("Image name '{{id}}' is already in use.",{id:t.new_image_name})})),"rbd/trash/remove":this.newTaskMessage(new u(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),t=>this.i18n("image '{{id}}'",{id:""+t.image_id_spec})),"rbd/trash/purge":this.newTaskMessage(new u(this.i18n("Purging"),this.i18n("purge"),this.i18n("Purged")),t=>{let e=this.i18n("all pools");return t.pool_name&&(e=`'${t.pool_name}'`),this.i18n("images from {{message}}",{message:e})}),"rbd/mirroring/site_name/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.site_name,()=>({})),"rbd/mirroring/bootstrap/create":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/bootstrap/import":this.newTaskMessage(this.commonOperations.import,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/pool/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool,()=>({16:this.i18n("Cannot disable mirroring because it contains a peer.")})),"rbd/mirroring/peer/add":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd_mirroring.pool_peer,()=>({})),"iscsi/target/create":this.newTaskMessage(this.commonOperations.create,t=>this.iscsiTarget(t)),"iscsi/target/edit":this.newTaskMessage(this.commonOperations.update,t=>this.iscsiTarget(t)),"iscsi/target/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.iscsiTarget(t)),"nfs/create":this.newTaskMessage(this.commonOperations.create,t=>this.nfs(t)),"nfs/edit":this.newTaskMessage(this.commonOperations.update,t=>this.nfs(t)),"nfs/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.nfs(t)),"grafana/dashboards/update":this.newTaskMessage(this.commonOperations.update,this.grafana.update_dashboards,()=>({})),"orchestrator/identify_device":this.newTaskMessage(new u(this.i18n("Identifying"),this.i18n("identify"),this.i18n("Identified")),t=>this.i18n("device '{{device}}' on host '{{hostname}}'",t)),"service/create":this.newTaskMessage(this.commonOperations.create,t=>this.service(t)),"service/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.service(t))}}newTaskMessage(t,e,n){return new o(this.i18n,t,e,n)}host(t){return this.i18n("host '{{hostname}}'",{hostname:t.hostname})}osd(t){return this.i18n("OSD '{{svc_id}}'",{svc_id:t.svc_id})}pool(t){return this.i18n("pool '{{pool_name}}'",{pool_name:t.pool_name})}ecp(t){return this.i18n("erasure code profile '{{name}}'",{name:t.name})}crushRule(t){return this.i18n("crush rule '{{name}}'",{name:t.name})}iscsiTarget(t){return this.i18n("target '{{target_iqn}}'",{target_iqn:t.target_iqn})}nfs(t){return this.i18n("NFS {{nfs_id}}",{nfs_id:`'${t.cluster_id}:${t.export_id?t.export_id:t.path}'`})}service(t){return this.i18n("Service '{{service_name}}'",{service_name:t.service_name})}_getTaskTitle(t){return t.name&&t.name.startsWith("progress/")?this.newTaskMessage(new u(t.name.replace("progress/",""),"",t.name.replace("progress/","")),t=>""):this.messages[t.name]||this.defaultMessage}getSuccessTitle(t){return this._getTaskTitle(t).success(t.metadata)}getErrorMessage(t){return this._getTaskTitle(t).errors(t.metadata)[t.exception.code]||t.exception.detail}getErrorTitle(t){return this._getTaskTitle(t).failure(t.metadata)}getRunningTitle(t){return this._getTaskTitle(t).running(t.metadata)}getRunningText(t){return this._getTaskTitle(t).operation.running}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.a))},token:t,providedIn:"root"}),t})()},uy3s:function(t,e,n){var a=n("+GvH"),r=n("x3F9");t.exports=function t(e,n,i,s,u){return e===n||(null==e||null==n||!r(e)&&!r(n)?e!=e&&n!=n:a(e,n,i,s,t,u))}},uy83:function(t,e,n){var a=n("0Dky");t.exports=!a((function(){return Object.isExtensible(Object.preventExtensions({}))}))},uyHG:function(t,e){var n,a=/^\[object .+?Constructor\]$/,r="object"==typeof global&&global&&global.Object===Object&&global,i="object"==typeof self&&self&&self.Object===Object&&self,s=r||i||Function("return this")(),u=Array.prototype,o=Function.prototype,l=Object.prototype,d=s["__core-js_shared__"],c=(n=/[^.]+$/.exec(d&&d.keys&&d.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",f=o.toString,h=l.hasOwnProperty,g=l.toString,p=RegExp("^"+f.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),b=u.splice,m=O(s,"Map"),y=O(Object,"create");function v(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function x(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function _(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function T(t,e){for(var n,a,r=t.length;r--;)if((n=t[r][0])===(a=e)||n!=n&&a!=a)return r;return-1}function w(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function O(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return function(t){return!(!I(t)||(e=t,c&&c in e))&&(function(t){var e=I(t)?g.call(t):"";return"[object Function]"==e||"[object GeneratorFunction]"==e}(t)||function(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(n){}return e}(t)?p:a).test(function(t){if(null!=t){try{return f.call(t)}catch(e){}try{return t+""}catch(e){}}return""}(t));var e}(n)?n:void 0}function S(t,e){if("function"!=typeof t||e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s),s};return n.cache=new(S.Cache||_),n}function I(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}v.prototype.clear=function(){this.__data__=y?y(null):{}},v.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},v.prototype.get=function(t){var e=this.__data__;if(y){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return h.call(e,t)?e[t]:void 0},v.prototype.has=function(t){var e=this.__data__;return y?void 0!==e[t]:h.call(e,t)},v.prototype.set=function(t,e){return this.__data__[t]=y&&void 0===e?"__lodash_hash_undefined__":e,this},x.prototype.clear=function(){this.__data__=[]},x.prototype.delete=function(t){var e=this.__data__,n=T(e,t);return!(n<0||(n==e.length-1?e.pop():b.call(e,n,1),0))},x.prototype.get=function(t){var e=this.__data__,n=T(e,t);return n<0?void 0:e[n][1]},x.prototype.has=function(t){return T(this.__data__,t)>-1},x.prototype.set=function(t,e){var n=this.__data__,a=T(n,t);return a<0?n.push([t,e]):n[a][1]=e,this},_.prototype.clear=function(){this.__data__={hash:new v,map:new(m||x),string:new v}},_.prototype.delete=function(t){return w(this,t).delete(t)},_.prototype.get=function(t){return w(this,t).get(t)},_.prototype.has=function(t){return w(this,t).has(t)},_.prototype.set=function(t,e){return w(this,t).set(t,e),this},S.Cache=_,t.exports=S},vCyI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this._selected=[],t&&(this._selected=t),this.update()}update(){this.hasSelection=this._selected.length>0,this.hasSingleSelection=1===this._selected.length,this.hasMultiSelection=this._selected.length>1}set selected(t){this._selected=t,this.update()}get selected(){return this._selected}add(t){this._selected.push(t),this.update()}first(){return this.hasSelection?this._selected[0]:null}}},vDHD:function(t,e,n){var a=n("aT2Y");t.exports=function(){this.__data__=new a,this.size=0}},vIot:function(t,e){t.exports=function(t){return t!=t}},vJUC:function(t,e){t.exports=function(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}},vkgz:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("KqfI"),i=n("n6bG");function s(t,e,n){return function(a){return a.lift(new u(t,e,n))}}class u{constructor(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}call(t,e){return e.subscribe(new o(t,this.nextOrObserver,this.error,this.complete))}}class o extends a.a{constructor(t,e,n,a){super(t),this._tapNext=r.a,this._tapError=r.a,this._tapComplete=r.a,this._tapError=n||r.a,this._tapComplete=a||r.a,Object(i.a)(e)?(this._context=this,this._tapNext=e):e&&(this._context=e,this._tapNext=e.next||r.a,this._tapError=e.error||r.a,this._tapComplete=e.complete||r.a)}_next(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)}_error(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)}_complete(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()}}},"w/8D":function(t,e,n){var a=n("KFwg"),r=function(){try{var t=a(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();t.exports=r},w4fU:function(t,e,n){var a=n("pMcL"),r=n("XhiP"),i=n("JEWA"),s=n("ezUo"),u=n("s4/e"),o=n("cRL0"),l=a?a.prototype:void 0,d=l?l.valueOf:void 0;t.exports=function(t,e,n,a,l,c,f){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!c(new r(t),new r(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var h=u;case"[object Set]":if(h||(h=o),t.size!=e.size&&!(1&a))return!1;var g=f.get(t);if(g)return g==e;a|=2,f.set(t,e);var p=s(h(t),h(e),a,l,c,f);return f.delete(t),p;case"[object Symbol]":if(d)return d.call(t)==d.call(e)}return!1}},w9WL:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("XNiG"),i=n("xgIS"),s=n("2Vo4"),u=n("l7GE"),o=n("ZUHj");function l(t){return e=>e.lift(new d(t))}class d{constructor(t){this.notifier=t}call(t,e){const n=new c(t),a=Object(o.a)(n,this.notifier);return a&&!n.seenValue?(n.add(a),e.subscribe(n)):n}}class c extends u.a{constructor(t){super(t),this.seenValue=!1}notifyNext(t,e,n,a,r){this.seenValue=!0,this.complete()}notifyComplete(){}}var f=n("mrSG");n.d(e,"a",(function(){return p})),n.d(e,"b",(function(){return pt})),n.d(e,"c",(function(){return tt})),n.d(e,"d",(function(){return ht})),n.d(e,"e",(function(){return D})),n.d(e,"f",(function(){return lt})),n.d(e,"g",(function(){return b})),n.d(e,"h",(function(){return ot})),n.d(e,"i",(function(){return et})),n.d(e,"j",(function(){return dt})),n.d(e,"k",(function(){return gt})),n.d(e,"l",(function(){return mt})),n.d(e,"m",(function(){return xt})),n.d(e,"n",(function(){return ut})),n.d(e,"o",(function(){return q})),n.d(e,"p",(function(){return M})),n.d(e,"q",(function(){return P})),n.d(e,"r",(function(){return g})),n.d(e,"s",(function(){return y})),n.d(e,"t",(function(){return _})),n.d(e,"u",(function(){return _t})),n.d(e,"v",(function(){return x})),n.d(e,"w",(function(){return ct})),n.d(e,"x",(function(){return v})),n.d(e,"y",(function(){return h})),n.d(e,"z",(function(){return T})),n.d(e,"A",(function(){return it})),n.d(e,"B",(function(){return m})),n.d(e,"C",(function(){return O}));class h{constructor(t){this.document=t,this.width=this.getWidth()}getWidth(){const t=this.document.createElement("div");t.style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",this.document.body.appendChild(t);const e=t.offsetWidth;t.style.overflow="scroll";const n=this.document.createElement("div");n.style.width="100%",t.appendChild(n);const a=n.offsetWidth;return t.parentNode.removeChild(t),e-a}}class g{getDimensions(t){return t.getBoundingClientRect()}}class p{constructor(){this.columnInputChanges=new r.a}get columnInputChanges$(){return this.columnInputChanges.asObservable()}onInputChange(){this.columnInputChanges.next()}}class b{constructor(t){this.template=t}}class m{constructor(t,e){this.element=t,this.zone=e,this.isVisible=!1,this.visible=new a.EventEmitter}ngOnInit(){this.runCheck()}ngOnDestroy(){clearTimeout(this.timeout)}onVisibilityChange(){this.zone.run(()=>{this.isVisible=!0,this.visible.emit(!0)})}runCheck(){const t=()=>{const{offsetHeight:e,offsetWidth:n}=this.element.nativeElement;e&&n?(clearTimeout(this.timeout),this.onVisibilityChange()):(clearTimeout(this.timeout),this.zone.runOutsideAngular(()=>{this.timeout=setTimeout(()=>t(),50)}))};this.timeout=setTimeout(()=>t())}}class y{constructor(t){this.dragX=!0,this.dragY=!0,this.dragStart=new a.EventEmitter,this.dragging=new a.EventEmitter,this.dragEnd=new a.EventEmitter,this.isDragging=!1,this.element=t.nativeElement}ngOnChanges(t){t.dragEventTarget&&t.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(t.dragEventTarget.currentValue)}ngOnDestroy(){this._destroySubscription()}onMouseup(t){this.isDragging&&(this.isDragging=!1,this.element.classList.remove("dragging"),this.subscription&&(this._destroySubscription(),this.dragEnd.emit({event:t,element:this.element,model:this.dragModel})))}onMousedown(t){if(t.target.classList.contains("draggable")&&(this.dragX||this.dragY)){t.preventDefault(),this.isDragging=!0;const e={x:t.clientX,y:t.clientY},n=Object(i.a)(document,"mouseup");this.subscription=n.subscribe(t=>this.onMouseup(t));const a=Object(i.a)(document,"mousemove").pipe(l(n)).subscribe(t=>this.move(t,e));this.subscription.add(a),this.dragStart.emit({event:t,element:this.element,model:this.dragModel})}}move(t,e){if(!this.isDragging)return;const n=t.clientY-e.y;this.dragX&&(this.element.style.left=t.clientX-e.x+"px"),this.dragY&&(this.element.style.top=n+"px"),this.element.classList.add("dragging"),this.dragging.emit({event:t,element:this.element,model:this.dragModel})}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}"undefined"!=typeof window&&window||global,"undefined"!=typeof window&&window||global,"undefined"!=typeof window&&window||global;class v{constructor(t,e){this.renderer=e,this.resizeEnabled=!0,this.resize=new a.EventEmitter,this.resizing=!1,this.element=t.nativeElement}ngAfterViewInit(){const t=this.renderer;this.resizeHandle=t.createElement("span"),t.addClass(this.resizeHandle,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),t.appendChild(this.element,this.resizeHandle)}ngOnDestroy(){this._destroySubscription(),this.renderer.destroyNode?this.renderer.destroyNode(this.resizeHandle):this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle),this.resizeHandle)}onMouseup(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))}onMousedown(t){const e=t.target.classList.contains("resize-handle"),n=this.element.clientWidth,a=t.screenX;if(e){t.stopPropagation(),this.resizing=!0;const e=Object(i.a)(document,"mouseup");this.subscription=e.subscribe(t=>this.onMouseup());const r=Object(i.a)(document,"mousemove").pipe(l(e)).subscribe(t=>this.move(t,n,a));this.subscription.add(r)}}move(t,e,n){const a=e+(t.screenX-n);(!this.minWidth||a>=this.minWidth)&&(!this.maxWidth||a<=this.maxWidth)&&(this.element.style.width=a+"px")}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}class x{constructor(t,e){this.document=e,this.reorder=new a.EventEmitter,this.targetChanged=new a.EventEmitter,this.differ=t.find({}).create()}ngAfterContentInit(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))}ngOnDestroy(){this.draggables.forEach(t=>{t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe()})}updateSubscriptions(){const t=this.differ.diff(this.createMapDiffs());if(t){const e=({currentValue:t,previousValue:e})=>{n({previousValue:e}),t&&(t.dragStart.subscribe(this.onDragStart.bind(this)),t.dragging.subscribe(this.onDragging.bind(this)),t.dragEnd.subscribe(this.onDragEnd.bind(this)))},n=({previousValue:t})=>{t&&(t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe())};t.forEachAddedItem(e),t.forEachRemovedItem(n)}}onDragStart(){this.positions={};let t=0;for(const e of this.draggables.toArray()){const n=e.element,a=parseInt(n.offsetLeft.toString(),0);this.positions[e.dragModel.prop]={left:a,right:a+parseInt(n.offsetWidth.toString(),0),index:t++,element:n}}}onDragging({model:t,event:e}){const n=this.positions[t.prop],a=this.isTarget(t,e);a?this.lastDraggingIndex!==a.i&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,newIndex:a.i,initialIndex:n.index}),this.lastDraggingIndex=a.i):this.lastDraggingIndex!==n.index&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,initialIndex:n.index}),this.lastDraggingIndex=n.index)}onDragEnd({element:t,model:e,event:n}){const a=this.positions[e.prop],r=this.isTarget(e,n);r&&this.reorder.emit({prevIndex:a.index,newIndex:r.i,model:e}),this.lastDraggingIndex=void 0,t.style.left="auto"}isTarget(t,e){let n=0;const a=this.document.elementsFromPoint(e.x||e.clientX,e.y||e.clientY);for(const r in this.positions){const e=this.positions[r];if(t.prop!==r&&a.find(t=>t===e.element))return{pos:e,i:n};n++}}createMapDiffs(){return this.draggables.toArray().reduce((t,e)=>(t[e.dragModel.$$id]=e,t),{})}}class _{constructor(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new a.EventEmitter,this.longPressing=new a.EventEmitter,this.longPressEnd=new a.EventEmitter,this.mouseX=0,this.mouseY=0}get press(){return this.pressing}get isLongPress(){return this.isLongPressing}onMouseDown(t){if(1!==t.which||!this.pressEnabled)return;if(t.target.classList.contains("resize-handle"))return;this.mouseX=t.clientX,this.mouseY=t.clientY,this.pressing=!0,this.isLongPressing=!1;const e=Object(i.a)(document,"mouseup");this.subscription=e.subscribe(t=>this.onMouseup()),this.timeout=setTimeout(()=>{this.isLongPressing=!0,this.longPressStart.emit({event:t,model:this.pressModel}),this.subscription.add(Object(i.a)(document,"mousemove").pipe(l(e)).subscribe(t=>this.onMouseMove(t))),this.loop(t)},this.duration),this.loop(t)}onMouseMove(t){if(this.pressing&&!this.isLongPressing){const e=Math.abs(t.clientX-this.mouseX)>10,n=Math.abs(t.clientY-this.mouseY)>10;(e||n)&&this.endPress()}}loop(t){this.isLongPressing&&(this.timeout=setTimeout(()=>{this.longPressing.emit({event:t,model:this.pressModel}),this.loop(t)},50))}endPress(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})}onMouseup(){this.endPress()}ngOnDestroy(){this._destroySubscription()}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}class T{constructor(t,e,n){this.ngZone=t,this.renderer=n,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new a.EventEmitter,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this._scrollEventListener=null,this.element=e.nativeElement}ngOnInit(){if(this.scrollbarV||this.scrollbarH){const t=this.renderer;this.parentElement=t.parentNode(t.parentNode(this.element)),this._scrollEventListener=this.onScrolled.bind(this),this.parentElement.addEventListener("scroll",this._scrollEventListener)}}ngOnDestroy(){this._scrollEventListener&&(this.parentElement.removeEventListener("scroll",this._scrollEventListener),this._scrollEventListener=null)}setOffset(t){this.parentElement&&(this.parentElement.scrollTop=t)}onScrolled(t){const e=t.currentTarget;requestAnimationFrame(()=>{this.scrollYPos=e.scrollTop,this.scrollXPos=e.scrollLeft,this.updateOffset()})}updateOffset(){let t;this.scrollYPos<this.prevScrollYPos?t="down":this.scrollYPos>this.prevScrollYPos&&(t="up"),this.scroll.emit({direction:t,scrollYPos:this.scrollYPos,scrollXPos:this.scrollXPos}),this.prevScrollYPos=this.scrollYPos,this.prevScrollXPos=this.scrollXPos}}function w(){return""}function O(t){return null==t?w:"number"==typeof t?S:-1!==t.indexOf(".")?N:I}function S(t,e){if(null==t)return"";if(!t||null==e)return t;const n=t[e];return null==n?"":n}function I(t,e){if(null==t)return"";if(!t||!e)return t;const n=t[e];return null==n?"":n}function N(t,e){if(null==t)return"";if(!t||!e)return t;let n=t[e];if(void 0!==n)return n;n=t;const a=e.split(".");if(a.length)for(let r=0;r<a.length;r++)if(n=n[a[r]],null==n)return"";return n}function C(t){return t&&(e=>O(t)(e,t))}function R(t,e,n){if(e&&n){const a={},r=t.length;let i=null;a[0]=new A;const s=t.reduce((t,e)=>{const a=n(e);return-1===t.indexOf(a)&&t.push(a),t},[]);for(let e=0;e<r;e++)a[n(t[e])]=new A(t[e]);for(let o=0;o<r;o++){i=a[n(t[o])];let r=0;const u=e(i.row);u&&s.indexOf(u)>-1&&(r=u),i.parent=a[r],i.row.level=i.parent.row.level+1,i.parent.children.push(i)}let u=[];return a[0].flatten((function(){u=[...u,this.row]}),!0),u}return t}class A{constructor(t=null){t||(t={level:-1,treeStatus:"expanded"}),this.row=t,this.parent=null,this.children=[]}flatten(t,e){if("expanded"===this.row.treeStatus)for(let n=0,a=this.children.length;n<a;n++){const a=this.children[n];t.apply(a,Array.prototype.slice.call(arguments,2)),e&&a.flatten.apply(a,arguments)}}}function k(t){return(t=(t=(t=t.replace(/[^a-zA-Z0-9 ]/g," ")).replace(/([a-z](?=[A-Z]))/g,"$1 ")).replace(/([^a-zA-Z0-9 ])|^[0-9]+/g,"").trim().toLowerCase()).replace(/([ 0-9]+)([a-zA-Z])/g,(function(t,e,n){return e.trim()+n.toUpperCase()}))}function E(t){if(!t)return;let e=!1;for(const n of t)n.$$id||(n.$$id=("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)),L(n.prop)&&n.name&&(n.prop=k(n.name)),n.$$valueGetter||(n.$$valueGetter=O(n.prop)),!L(n.prop)&&L(n.name)&&(n.name=String(n.prop).replace(/([A-Z])/g,t=>" "+t).replace(/^./,t=>t.toUpperCase())),L(n.prop)&&L(n.name)&&(n.name=""),n.hasOwnProperty("resizeable")||(n.resizeable=!0),n.hasOwnProperty("sortable")||(n.sortable=!0),n.hasOwnProperty("draggable")||(n.draggable=!0),n.hasOwnProperty("canAutoResize")||(n.canAutoResize=!0),n.hasOwnProperty("width")||(n.width=150),n.hasOwnProperty("isTreeColumn")&&n.isTreeColumn&&!e?e=!0:n.isTreeColumn=!1}function L(t){return null==t}class D{constructor(t){this.template=t}}class P{constructor(t){this.template=t}}class M{constructor(){this.rowHeight=0,this.toggle=new a.EventEmitter}get template(){return this._templateInput||this._templateQuery}toggleExpandRow(t){this.toggle.emit({type:"row",value:t})}expandAllRows(){this.toggle.emit({type:"all",value:!0})}collapseAllRows(){this.toggle.emit({type:"all",value:!1})}}class q{get template(){return this._templateInput||this._templateQuery}}function j(t){const e={left:[],center:[],right:[]};if(t)for(const n of t)n.frozenLeft?e.left.push(n):n.frozenRight?e.right.push(n):e.center.push(n);return e}function F(t,e){return{left:V(t.left),center:V(t.center),right:V(t.right),total:Math.floor(V(e))}}function V(t,e){let n=0;if(t)for(const a of t)n+=parseFloat(e&&a[e]?a[e]:a.width);return n}function G(t){const e=[],n=j(t);return e.push({type:"left",columns:n.left}),e.push({type:"center",columns:n.center}),e.push({type:"right",columns:n.right}),e}class B{constructor(){this.treeArray=[]}clearCache(){this.treeArray=[]}initCache(t){const{rows:e,rowHeight:n,detailRowHeight:a,externalVirtual:r,rowCount:i,rowIndexes:s,rowExpansions:u}=t,o="function"==typeof n,l="function"==typeof a;if(!o&&isNaN(n))throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n        valid number or function value: (${n}) when 'scrollbarV' is enabled.`);if(!l&&isNaN(a))throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n        valid number or function value: (${a}) when 'scrollbarV' is enabled.`);const d=r?i:e.length;this.treeArray=new Array(d);for(let c=0;c<d;++c)this.treeArray[c]=0;for(let c=0;c<d;++c){const t=e[c];let r=n;o&&(r=n(t));const i=u.has(t);t&&i&&(r+=l?a(t,s.get(t)):a),this.update(c,r)}}getRowIndex(t){return 0===t?0:this.calcRowIndex(t)}update(t,e){if(!this.treeArray.length)throw new Error(`Update at index ${t} with value ${e} failed:\n        Row Height cache not initialized.`);const n=this.treeArray.length;for(t|=0;t<n;)this.treeArray[t]+=e,t|=t+1}query(t){if(!this.treeArray.length)throw new Error(`query at index ${t} failed: Fenwick tree array not initialized.`);let e=0;for(t|=0;t>=0;)e+=this.treeArray[t],t=(t&t+1)-1;return e}queryBetween(t,e){return this.query(e)-this.query(t-1)}calcRowIndex(t){if(!this.treeArray.length)return 0;let e=-1;const n=this.treeArray.length;for(let a=Math.pow(2,n.toString(2).length-1);0!==a;a>>=1){const r=e+a;r<n&&t>=this.treeArray[r]&&(t-=this.treeArray[r],e=r)}return e+1}}const z={},Y="undefined"!=typeof document?document.createElement("div").style:void 0,H=function(){const t="undefined"!=typeof window?window.getComputedStyle(document.documentElement,""):void 0,e=void 0!==t?Array.prototype.slice.call(t).join("").match(/-(moz|webkit|ms)-/):null,n=null!==e?e[1]:void 0,a=void 0!==n?"WebKit|Moz|MS|O".match(new RegExp("("+n+")","i"))[1]:void 0;return a?{dom:a,lowercase:n,css:`-${n}-`,js:n[0].toUpperCase()+n.substr(1)}:void 0}();function U(t){const e=k(t);return z[e]||(void 0!==H&&void 0!==Y[H.css+t]?z[e]=H.css+t:void 0!==Y[t]&&(z[e]=t)),z[e]}const W="undefined"!=typeof window?U("transform"):void 0,K="undefined"!=typeof window?U("backfaceVisibility"):void 0,$="undefined"!=typeof window?!!U("transform"):void 0,J="undefined"!=typeof window?!!U("perspective"):void 0,Z="undefined"!=typeof window?window.navigator.userAgent:"Chrome",Q=/Safari\//.test(Z)&&!/Chrome\//.test(Z);function X(t,e,n){void 0!==W&&$?!Q&&J?(t[W]=`translate3d(${e}px, ${n}px, 0)`,t[K]="hidden"):t[k(W)]=`translate(${e}px, ${n}px)`:(t.top=n+"px",t.left=e+"px")}class tt{constructor(t){this.cd=t,this.selected=[],this.scroll=new a.EventEmitter,this.page=new a.EventEmitter,this.activate=new a.EventEmitter,this.select=new a.EventEmitter,this.detailToggle=new a.EventEmitter,this.rowContextmenu=new a.EventEmitter(!1),this.treeAction=new a.EventEmitter,this.rowHeightsCache=new B,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new Map,this.rowExpansions=[],this.getDetailRowHeight=(t,e)=>{if(!this.rowDetail)return 0;const n=this.rowDetail.rowHeight;return"function"==typeof n?n(t,e):n},this.rowTrackingFn=(t,e)=>{const n=this.getRowIndex(e);return this.trackByProp?e[this.trackByProp]:n}}set pageSize(t){this._pageSize=t,this.recalcLayout()}get pageSize(){return this._pageSize}set rows(t){this._rows=t,this.recalcLayout()}get rows(){return this._rows}set columns(t){this._columns=t;const e=j(t);this.columnGroupWidths=F(e,t)}get columns(){return this._columns}set offset(t){this._offset=t,(!this.scrollbarV||this.scrollbarV&&!this.virtualization)&&this.recalcLayout()}get offset(){return this._offset}set rowCount(t){this._rowCount=t,this.recalcLayout()}get rowCount(){return this._rowCount}get bodyWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}set bodyHeight(t){this._bodyHeight=this.scrollbarV?t+"px":"auto",this.recalcLayout()}get bodyHeight(){return this._bodyHeight}get selectEnabled(){return!!this.selectionType}get scrollHeight(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)}ngOnInit(){this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(({type:t,value:e})=>{"row"===t&&this.toggleRowExpansion(e),"all"===t&&this.toggleAllRows(e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(({type:t,value:e})=>{"group"===t&&this.toggleRowExpansion(e),"all"===t&&this.toggleAllRows(e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()}))}ngOnDestroy(){(this.rowDetail||this.groupHeader)&&this.listener.unsubscribe()}updateOffsetY(t){this.scroller&&(this.scrollbarV&&this.virtualization&&t?t=this.rowHeightsCache.query(this.pageSize*t-1):this.scrollbarV&&!this.virtualization&&(t=0),this.scroller.setOffset(t||0))}onBodyScroll(t){const e=t.scrollYPos,n=t.scrollXPos;this.offsetY===e&&this.offsetX===n||this.scroll.emit({offsetY:e,offsetX:n}),this.offsetY=e,this.offsetX=n,this.updateIndexes(),this.updatePage(t.direction),this.updateRows()}updatePage(t){let e=this.indexes.first/this.pageSize;"up"===t?e=Math.ceil(e):"down"===t&&(e=Math.floor(e)),void 0===t||isNaN(e)||this.page.emit({offset:e})}updateRows(){const{first:t,last:e}=this.indexes;let n=t,a=0;const r=[];if(this.rowIndexes.clear(),this.groupedRows){let t=3;for(1===this.groupedRows.length&&(t=this.groupedRows[0].value.length);n<e&&n<this.groupedRows.length;)r[a]=this.groupedRows[n],a++,n++}else for(;n<e&&n<this.rowCount;){const t=this.rows[n];t&&(this.rowIndexes.set(t,n),r[a]=t),a++,n++}this.temp=r}getRowHeight(t){return"function"==typeof this.rowHeight?this.rowHeight(t):this.rowHeight}getGroupHeight(t){let e=0;if(t.value)for(let n=0;n<t.value.length;n++)e+=this.getRowAndDetailHeight(t.value[n]);return e}getRowAndDetailHeight(t){let e=this.getRowHeight(t);return this.getRowExpanded(t)&&(e+=this.getDetailRowHeight(t)),e}getRowsStyles(t){const e={};if(this.groupedRows&&(e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){let n=0;if(this.groupedRows){const e=t[t.length-1];n=e?this.getRowIndex(e):0}else n=this.getRowIndex(t);X(e,0,this.rowHeightsCache.query(n-1))}return e}getBottomSummaryRowStyles(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;const t={position:"absolute"};return X(t,0,this.rowHeightsCache.query(this.rows.length-1)),t}hideIndicator(){setTimeout(()=>this.loadingIndicator=!1,500)}updateIndexes(){let t=0,e=0;if(this.scrollbarV)if(this.virtualization){const n=parseInt(this.bodyHeight,0);t=this.rowHeightsCache.getRowIndex(this.offsetY),e=this.rowHeightsCache.getRowIndex(n+this.offsetY)+1}else t=0,e=this.rowCount;else this.externalPaging||(t=Math.max(this.offset*this.pageSize,0)),e=Math.min(t+this.pageSize,this.rowCount);this.indexes={first:t,last:e}}refreshRowHeightCache(){if(this.scrollbarV&&(!this.scrollbarV||this.virtualization)&&(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length)){const t=new Set;for(const e of this.rows)this.getRowExpanded(e)&&t.add(e);this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:t})}}getAdjustedViewPortIndex(){const t=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(t-1)<=this.offsetY?t-1:t}toggleRowExpansion(t){const e=this.getAdjustedViewPortIndex(),n=this.getRowExpandedIdx(t,this.rowExpansions),a=n>-1;if(this.scrollbarV&&this.virtualization){const e=this.getDetailRowHeight(t)*(a?-1:1),n=this.getRowIndex(t);this.rowHeightsCache.update(n,e)}a?this.rowExpansions.splice(n,1):this.rowExpansions.push(t),this.detailToggle.emit({rows:[t],currentIndex:e})}toggleAllRows(t){this.rowExpansions=[];const e=this.getAdjustedViewPortIndex();if(t)for(const n of this.rows)this.rowExpansions.push(n);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:e})}recalcLayout(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()}columnTrackingFn(t,e){return e.$$id}stylesByGroup(t){const e=this.columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)X(a,n,0);else if("right"===t){const t=parseInt(this.innerWidth+"",0);X(a,-1*(e.total-t-n),0)}return a}getRowExpanded(t){if(0===this.rowExpansions.length&&this.groupExpansionDefault)for(const e of this.groupedRows)this.rowExpansions.push(e);return this.getRowExpandedIdx(t,this.rowExpansions)>-1}getRowExpandedIdx(t,e){if(!e||!e.length)return-1;const n=this.rowIdentity(t);return e.findIndex(t=>this.rowIdentity(t)===n)}getRowIndex(t){return this.rowIndexes.get(t)||0}onTreeAction(t){this.treeAction.emit({row:t})}}class et{constructor(t){this.cd=t,this.sort=new a.EventEmitter,this.reorder=new a.EventEmitter,this.resize=new a.EventEmitter,this.select=new a.EventEmitter,this.columnContextmenu=new a.EventEmitter(!1),this._columnGroupWidths={total:100},this._styleByGroup={left:{},center:{},right:{}},this.destroyed=!1}set innerWidth(t){this._innerWidth=t,setTimeout(()=>{if(this._columns){const t=j(this._columns);this._columnGroupWidths=F(t,this._columns),this.setStylesByGroup()}})}get innerWidth(){return this._innerWidth}set headerHeight(t){this._headerHeight="auto"!==t?t+"px":t}get headerHeight(){return this._headerHeight}set columns(t){this._columns=t;const e=j(t);this._columnsByPin=G(t),setTimeout(()=>{this._columnGroupWidths=F(e,t),this.setStylesByGroup()})}get columns(){return this._columns}set offsetX(t){this._offsetX=t,this.setStylesByGroup()}get offsetX(){return this._offsetX}ngOnDestroy(){this.destroyed=!0}onLongPressStart({event:t,model:e}){e.dragging=!0,this.dragEventTarget=t}onLongPressEnd({event:t,model:e}){this.dragEventTarget=t,setTimeout(()=>{const t=this._columns.find(t=>t.$$id===e.$$id);t&&(t.dragging=!1)},5)}get headerWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}trackByGroups(t,e){return e.type}columnTrackingFn(t,e){return e.$$id}onColumnResized(t,e){t<=e.minWidth?t=e.minWidth:t>=e.maxWidth&&(t=e.maxWidth),this.resize.emit({column:e,prevValue:e.width,newValue:t})}onColumnReordered({prevIndex:t,newIndex:e,model:n}){const a=this.getColumn(e);a.isTarget=!1,a.targetMarkerContext=void 0,this.reorder.emit({column:n,prevValue:t,newValue:e})}onTargetChanged({prevIndex:t,newIndex:e,initialIndex:n}){if(t||0===t){const e=this.getColumn(t);e.isTarget=!1,e.targetMarkerContext=void 0}if(e||0===e){const t=this.getColumn(e);t.isTarget=!0,n!==e&&(t.targetMarkerContext={class:"targetMarker ".concat(n>e?"dragFromRight":"dragFromLeft")})}}getColumn(t){const e=this._columnsByPin[0].columns.length;if(t<e)return this._columnsByPin[0].columns[t];const n=this._columnsByPin[1].columns.length;return t<e+n?this._columnsByPin[1].columns[t-e]:this._columnsByPin[2].columns[t-e-n]}onSort({column:t,prevValue:e,newValue:n}){if(t.dragging)return;const a=this.calcNewSorts(t,e,n);this.sort.emit({sorts:a,column:t,prevValue:e,newValue:n})}calcNewSorts(t,e,n){let a=0;this.sorts||(this.sorts=[]);const r=this.sorts.map((e,n)=>((e=Object.assign({},e)).prop===t.prop&&(a=n),e));return void 0===n?r.splice(a,1):e?r[a].dir=n:("single"===this.sortType&&r.splice(0,this.sorts.length),r.push({dir:n,prop:t.prop})),r}setStylesByGroup(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.destroyed||this.cd.detectChanges()}calcStylesByGroup(t){const e=this._columnGroupWidths,n={width:e[t]+"px"};return"center"===t?X(n,-1*this.offsetX,0):"right"===t&&X(n,-1*(e.total-this.innerWidth),0),n}}function nt(t,e,n){let a,r,i;n=n||{};let s=null,u=0;function o(){u=!1===n.leading?0:+new Date,s=null,i=t.apply(a,r)}return function(){const l=+new Date;u||!1!==n.leading||(u=l);const d=e-(l-u);return a=this,r=arguments,d<=0?(clearTimeout(s),s=null,u=l,i=t.apply(a,r)):s||!1===n.trailing||(s=setTimeout(o,d)),i}}function at(t,e){for(const n of e){const e=t.indexOf(n);t.splice(e,1)}}function rt(t,e=300){let n=0;for(const a of t)n+=a.width||e;return n}const it={asc:"asc",desc:"desc"};function st(t,e){if(null==t&&(t=0),null==e&&(e=0),t instanceof Date&&e instanceof Date){if(t<e)return-1;if(t>e)return 1}else if(isNaN(parseFloat(t))||!isFinite(t)||isNaN(parseFloat(e))||!isFinite(e)){if(t=String(t),e=String(e),t.toLowerCase()<e.toLowerCase())return-1;if(t.toLowerCase()>e.toLowerCase())return 1}else{if(parseFloat(t)<parseFloat(e))return-1;if(parseFloat(t)>parseFloat(e))return 1}return 0}let ut=(()=>{class t{constructor(t,e,n,r,i,u,o){this.scrollbarHelper=t,this.dimensionsHelper=e,this.cd=n,this.columnChangesService=u,this.configuration=o,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode="standard",this.headerHeight=30,this.footerHeight=0,this.externalPaging=!1,this.externalSorting=!1,this.loadingIndicator=!1,this.reorderable=!0,this.swapColumns=!0,this.sortType="single",this.sorts=[],this.cssClasses={sortAscending:"datatable-icon-up",sortDescending:"datatable-icon-down",pagerLeftArrow:"datatable-icon-left",pagerRightArrow:"datatable-icon-right",pagerPrevious:"datatable-icon-prev",pagerNext:"datatable-icon-skip"},this.messages={emptyMessage:"No data to display",totalMessage:"total",selectedMessage:"selected"},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new a.EventEmitter,this.activate=new a.EventEmitter,this.select=new a.EventEmitter,this.sort=new a.EventEmitter,this.page=new a.EventEmitter,this.reorder=new a.EventEmitter,this.resize=new a.EventEmitter,this.tableContextmenu=new a.EventEmitter(!1),this.treeAction=new a.EventEmitter,this.rowCount=0,this._offsetX=new s.a(0),this._count=0,this._offset=0,this._subscriptions=[],this.rowIdentity=t=>this._groupRowsBy?t.key:t,this.element=r.nativeElement,this.rowDiffer=i.find({}).create(),this.configuration&&this.configuration.messages&&(this.messages=Object.assign({},this.configuration.messages))}set rows(t){this._rows=t,t&&(this._internalRows=[...t]),this.externalSorting||this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()}get rows(){return this._rows}set groupRowsBy(t){t&&(this._groupRowsBy=t,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))}get groupRowsBy(){return this._groupRowsBy}set columns(t){t&&(this._internalColumns=[...t],E(this._internalColumns),this.recalculateColumns()),this._columns=t}get columns(){return this._columns}set limit(t){this._limit=t,this.recalculate()}get limit(){return this._limit}set count(t){this._count=t,this.recalculate()}get count(){return this._count}set offset(t){this._offset=t}get offset(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)}get isFixedHeader(){const t=this.headerHeight;return"string"!=typeof t||"auto"!==t}get isFixedRow(){return"auto"!==this.rowHeight}get isVertScroll(){return this.scrollbarV}get isVirtualized(){return this.virtualization}get isHorScroll(){return this.scrollbarH}get isSelectable(){return void 0!==this.selectionType}get isCheckboxSelection(){return"checkbox"===this.selectionType}get isCellSelection(){return"cell"===this.selectionType}get isSingleSelection(){return"single"===this.selectionType}get isMultiSelection(){return"multi"===this.selectionType}get isMultiClickSelection(){return"multiClick"===this.selectionType}set columnTemplates(t){this._columnTemplates=t,this.translateColumns(t)}get columnTemplates(){return this._columnTemplates}get allRowsSelected(){let t=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.selectAllRowsOnPage){const e=this.bodyComponent.indexes;t=this.selected.length===e.last-e.first}return this.selected&&this.rows&&0!==this.rows.length&&t}ngOnInit(){this.recalculate()}ngAfterViewInit(){this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(()=>{this.recalculate(),this.externalPaging&&this.scrollbarV&&this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:0})})}ngAfterContentInit(){this.columnTemplates.changes.subscribe(t=>this.translateColumns(t)),this.listenForColumnInputChanges()}translateColumns(t){if(t){const e=t.toArray();e.length&&(this._internalColumns=function(t){const e=[];for(const n of t){const t={},a=Object.getOwnPropertyNames(n);for(const e of a)t[e]=n[e];n.headerTemplate&&(t.headerTemplate=n.headerTemplate),n.cellTemplate&&(t.cellTemplate=n.cellTemplate),n.summaryFunc&&(t.summaryFunc=n.summaryFunc),n.summaryTemplate&&(t.summaryTemplate=n.summaryTemplate),e.push(t)}return e}(e),E(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}}groupArrayBy(t,e){const n=new Map;return t.forEach(t=>{const a=t[e];n.has(a)?n.get(a).push(t):n.set(a,[t])}),Array.from(n,t=>({key:t[0],value:t[1]}))}ngDoCheck(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=[...this.rows]:this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())}recalculate(){this.recalculateDims(),this.recalculateColumns()}onWindowResize(){this.recalculate()}recalculateColumns(t=this._internalColumns,e=-1,n=this.scrollbarH){if(!t)return;let a=this._innerWidth;return this.scrollbarV&&(a-=this.scrollbarHelper.width),"force"===this.columnMode?function(t,e,n,a,r=300){const i=t.slice(n+1,t.length).filter(t=>!1!==t.canAutoResize);for(const c of i)c.$$oldWidth||(c.$$oldWidth=c.width);let s=0,u=!1,o=rt(t,r),l=e-o;const d=[];do{s=l/i.length,u=o>=e;for(const t of i){if(u&&a)t.width=t.$$oldWidth||t.width||r;else{const e=(t.width||r)+s;t.minWidth&&e<t.minWidth?(t.width=t.minWidth,d.push(t)):t.maxWidth&&e>t.maxWidth?(t.width=t.maxWidth,d.push(t)):t.width=e}t.width=Math.max(0,t.width)}o=rt(t),l=e-o,at(i,d)}while(l>1&&0!==i.length)}(t,a,e,n):"flex"===this.columnMode&&function(t,e){const n=function(t,e){let n=0;for(const a of t)n+=a.width;return n}(t),a=function(t){let e=0;for(const n of t)e+=n.flexGrow||0;return e}(t),r=j(t);n!==e&&function(t,e,n){for(const i in t)for(const a of t[i])a.canAutoResize?a.width=0:(e-=a.width,n-=a.flexGrow?a.flexGrow:0);const a={};let r=e;do{const e=r/n;r=0;for(const n in t)for(const i of t[n])if(i.canAutoResize&&!a[i.prop]){const t=i.width+i.flexGrow*e;void 0!==i.minWidth&&t<i.minWidth?(r+=t-i.minWidth,i.width=i.minWidth,a[i.prop]=!0):i.width=t}}while(0!==r)}(r,e,a)}(t,a),t}recalculateDims(){const t=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(t.width),this.scrollbarV){let e=t.height;this.headerHeight&&(e-=this.headerHeight),this.footerHeight&&(e-=this.footerHeight),this.bodyHeight=e}this.recalculatePages()}recalculatePages(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()}onBodyPage({offset:t}){this.externalPaging&&!this.virtualization||(this.offset=t,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))}onBodyScroll(t){this._offsetX.next(t.offsetX),this.scroll.emit(t),this.cd.detectChanges()}onFooterPage(t){this.offset=t.page-1,this.bodyComponent.updateOffsetY(this.offset),this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}),this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected}))}calcPageSize(t=this.rows){if(this.scrollbarV&&this.virtualization){const t=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(t,0)}return void 0!==this.limit?this.limit:t?t.length:0}calcRowCount(t=this.rows){return this.externalPaging?this.count:t?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:t.length:0}onColumnContextmenu({event:t,column:e}){this.tableContextmenu.emit({event:t,type:"header",content:e})}onRowContextmenu({event:t,row:e}){this.tableContextmenu.emit({event:t,type:"body",content:e})}onColumnResize({column:t,newValue:e}){if(void 0===t)return;let n;const a=this._internalColumns.map((a,r)=>((a=Object.assign({},a)).$$id===t.$$id&&(n=r,a.width=e,a.$$oldWidth=e),a));this.recalculateColumns(a,n),this._internalColumns=a,this.resize.emit({column:t,newValue:e})}onColumnReorder({column:t,newValue:e,prevValue:n}){const a=this._internalColumns.map(t=>Object.assign({},t));if(this.swapColumns){const r=a[e];a[e]=t,a[n]=r}else if(e>n){const t=a[n];for(let r=n;r<e;r++)a[r]=a[r+1];a[e]=t}else{const t=a[n];for(let r=n;r>e;r--)a[r]=a[r-1];a[e]=t}this._internalColumns=a,this.reorder.emit({column:t,newValue:e,prevValue:n})}onColumnSort(t){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=t.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(t)}onHeaderSelect(t){if(this.selectAllRowsOnPage){const t=this.bodyComponent.indexes.first,e=this.bodyComponent.indexes.last,n=this.selected.length===e-t;this.selected=[],n||this.selected.push(...this._internalRows.slice(t,e))}else{const t=this.selected.length===this.rows.length;this.selected=[],t||this.selected.push(...this.rows)}this.select.emit({selected:this.selected})}onBodySelect(t){this.select.emit(t)}onTreeAction(t){const e=t.row,n=this._rows.findIndex(e=>e[this.treeToRelation]===t.row[this.treeToRelation]);this.treeAction.emit({row:e,rowIndex:n})}ngOnDestroy(){this._subscriptions.forEach(t=>t.unsubscribe())}listenForColumnInputChanges(){this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(()=>{this.columnTemplates&&this.columnTemplates.notifyOnChanges()}))}sortInternalRows(){this._internalRows=function(t,e,n){if(!t)return[];if(!n||!n.length||!e)return[...t];const a=new Map;t.forEach((t,e)=>a.set(t,e));const r=[...t],i=e.reduce((t,e)=>(e.comparator&&"function"==typeof e.comparator&&(t[e.prop]=e.comparator),t),{}),s=n.map(t=>{const e=t.prop;return{prop:e,dir:t.dir,valueGetter:O(e),compareFn:i[e]||st}});return r.sort((function(t,e){for(const n of s){const{prop:a,valueGetter:r}=n,i=r(t,a),s=r(e,a),u=n.dir!==it.desc?n.compareFn(i,s,t,e,n.dir):-n.compareFn(i,s,t,e,n.dir);if(0!==u)return u}return a.has(t)&&a.has(e)?a.get(t)<a.get(e)?-1:1:0}))}(this._internalRows,this._internalColumns,this.sorts)}}return Object(f.__decorate)([function(t,e,n){return{configurable:!0,enumerable:n.enumerable,get:function(){return Object.defineProperty(this,e,{configurable:!0,enumerable:n.enumerable,value:nt(n.value,5,void 0)}),this[e]}}},Object(f.__metadata)("design:type",Function),Object(f.__metadata)("design:paramtypes",[]),Object(f.__metadata)("design:returntype",void 0)],t.prototype,"onWindowResize",null),t})();class ot{constructor(t){this.cd=t,this.sort=new a.EventEmitter,this.select=new a.EventEmitter,this.columnContextmenu=new a.EventEmitter(!1),this.sortFn=this.onSort.bind(this),this.selectFn=this.select.emit.bind(this.select),this.cellContext={column:this.column,sortDir:this.sortDir,sortFn:this.sortFn,allRowsSelected:this.allRowsSelected,selectFn:this.selectFn}}set allRowsSelected(t){this._allRowsSelected=t,this.cellContext.allRowsSelected=t}get allRowsSelected(){return this._allRowsSelected}set column(t){this._column=t,this.cellContext.column=t,this.cd.markForCheck()}get column(){return this._column}set sorts(t){this._sorts=t,this.sortDir=this.calcSortDir(t),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()}get sorts(){return this._sorts}get columnCssClasses(){let t="datatable-header-cell";if(this.column.sortable&&(t+=" sortable"),this.column.resizeable&&(t+=" resizeable"),this.column.headerClass)if("string"==typeof this.column.headerClass)t+=" "+this.column.headerClass;else if("function"==typeof this.column.headerClass){const e=this.column.headerClass({column:this.column});if("string"==typeof e)t+=e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=" "+a)}}const e=this.sortDir;return e&&(t+=" sort-active sort-"+e),t}get name(){return void 0===this.column.headerTemplate?this.column.name:void 0}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get width(){return this.column.width}get isCheckboxable(){return this.column.checkboxable&&this.column.headerCheckboxable&&"checkbox"===this.selectionType}onContextmenu(t){this.columnContextmenu.emit({event:t,column:this.column})}calcSortDir(t){if(t&&this.column){const e=t.find(t=>t.prop===this.column.prop);if(e)return e.dir}}onSort(){if(!this.column.sortable)return;const t=(e=this.sortDir,"single"===this.sortType?e===it.asc?it.desc:it.asc:e?e===it.asc?it.desc:void 0:it.asc);var e;this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:t})}calcSortClass(t){return t===it.asc?"sort-btn sort-asc "+this.sortAscendingIcon:t===it.desc?"sort-btn sort-desc "+this.sortDescendingIcon:"sort-btn"}}class lt{constructor(){this.selectedCount=0,this.page=new a.EventEmitter}get isVisible(){return this.rowCount/this.pageSize>1}get curPage(){return this.offset+1}}class dt{constructor(){this.change=new a.EventEmitter,this._count=0,this._page=1,this._size=0}set size(t){this._size=t,this.pages=this.calcPages()}get size(){return this._size}set count(t){this._count=t,this.pages=this.calcPages()}get count(){return this._count}set page(t){this._page=t,this.pages=this.calcPages()}get page(){return this._page}get totalPages(){const t=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(t||0,1)}canPrevious(){return this.page>1}canNext(){return this.page<this.totalPages}prevPage(){this.selectPage(this.page-1)}nextPage(){this.selectPage(this.page+1)}selectPage(t){t>0&&t<=this.totalPages&&t!==this.page&&(this.page=t,this.change.emit({page:t}))}calcPages(t){const e=[];let n=1,a=this.totalPages;t=t||this.page,5<this.totalPages&&(n=t-Math.floor(2.5),a=t+Math.floor(2.5),n<1?(n=1,a=Math.min(n+5-1,this.totalPages)):a>this.totalPages&&(n=Math.max(this.totalPages-5+1,1),a=this.totalPages));for(let r=n;r<=a;r++)e.push({number:r,text:r});return e}}class ct{}const ft=function(){var t={up:38,down:40,return:13,escape:27,left:37,right:39};return t[t.up]="up",t[t.down]="down",t[t.return]="return",t[t.escape]="escape",t[t.left]="left",t[t.right]="right",t}();class ht{constructor(t,e,n,r){this.differs=t,this.scrollbarHelper=e,this.cd=n,this.treeStatus="collapsed",this.activate=new a.EventEmitter,this.treeAction=new a.EventEmitter,this._groupStyles={left:{},center:{},right:{}},this._element=r.nativeElement,this._rowDiffer=t.find({}).create()}set columns(t){this._columns=t,this.recalculateColumns(t),this.buildStylesByGroup()}get columns(){return this._columns}set innerWidth(t){if(this._columns){const t=j(this._columns);this._columnGroupWidths=F(t,this._columns)}this._innerWidth=t,this.recalculateColumns(),this.buildStylesByGroup()}get innerWidth(){return this._innerWidth}set offsetX(t){this._offsetX=t,this.buildStylesByGroup()}get offsetX(){return this._offsetX}get cssClass(){let t="datatable-body-row";if(this.isSelected&&(t+=" active"),this.rowIndex%2!=0&&(t+=" datatable-row-odd"),this.rowIndex%2==0&&(t+=" datatable-row-even"),this.rowClass){const e=this.rowClass(this.row);if("string"==typeof e)t+=" "+e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=" "+a)}}return t}get columnsTotalWidths(){return this._columnGroupWidths.total}ngDoCheck(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()}trackByGroups(t,e){return e.type}columnTrackingFn(t,e){return e.$$id}buildStylesByGroup(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()}calcStylesByGroup(t){const e=this._columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)X(a,n,0);else if("right"===t){const t=parseInt(this.innerWidth+"",0);X(a,-1*(e.total-t-n+this.scrollbarHelper.width),0)}return a}onActivate(t,e){t.cellIndex=e,t.rowElement=this._element,this.activate.emit(t)}onKeyDown(t){const e=t.keyCode;(e===ft.return||e===ft.down||e===ft.up||e===ft.left||e===ft.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,rowElement:this._element}))}onMouseenter(t){this.activate.emit({type:"mouseenter",event:t,row:this.row,rowElement:this._element})}recalculateColumns(t=this.columns){this._columns=t;const e=j(this._columns);this._columnsByPin=G(this._columns),this._columnGroupWidths=F(e,this._columns)}onTreeAction(){this.treeAction.emit()}}class gt{constructor(t,e){this.cd=t,this.differs=e,this.rowContextmenu=new a.EventEmitter(!1),this.groupContext={group:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this.rowContext={row:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this._expanded=!1,this.rowDiffer=e.find({}).create()}set rowIndex(t){this._rowIndex=t,this.rowContext.rowIndex=t,this.groupContext.rowIndex=t,this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set expanded(t){this._expanded=t,this.groupContext.expanded=t,this.rowContext.expanded=t,this.cd.markForCheck()}get expanded(){return this._expanded}ngDoCheck(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())}onContextmenu(t){this.rowContextmenu.emit({event:t,row:this.row})}getGroupHeaderStyle(){const t={};return t.transform="translate3d("+this.offsetX+"px, 0px, 0px)",t["backface-visibility"]="hidden",t.width=this.innerWidth,t}}class pt{constructor(t,e){this.cd=e,this.activate=new a.EventEmitter,this.treeAction=new a.EventEmitter,this.isFocused=!1,this.onCheckboxChangeFn=this.onCheckboxChange.bind(this),this.activateFn=this.activate.emit.bind(this.activate),this.cellContext={onCheckboxChangeFn:this.onCheckboxChangeFn,activateFn:this.activateFn,row:this.row,group:this.group,value:this.value,column:this.column,rowHeight:this.rowHeight,isSelected:this.isSelected,rowIndex:this.rowIndex,treeStatus:this.treeStatus,onTreeAction:this.onTreeAction.bind(this)},this._element=t.nativeElement}set group(t){this._group=t,this.cellContext.group=t,this.checkValueUpdates(),this.cd.markForCheck()}get group(){return this._group}set rowHeight(t){this._rowHeight=t,this.cellContext.rowHeight=t,this.checkValueUpdates(),this.cd.markForCheck()}get rowHeight(){return this._rowHeight}set isSelected(t){this._isSelected=t,this.cellContext.isSelected=t,this.cd.markForCheck()}get isSelected(){return this._isSelected}set expanded(t){this._expanded=t,this.cellContext.expanded=t,this.cd.markForCheck()}get expanded(){return this._expanded}set rowIndex(t){this._rowIndex=t,this.cellContext.rowIndex=t,this.checkValueUpdates(),this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set column(t){this._column=t,this.cellContext.column=t,this.checkValueUpdates(),this.cd.markForCheck()}get column(){return this._column}set row(t){this._row=t,this.cellContext.row=t,this.checkValueUpdates(),this.cd.markForCheck()}get row(){return this._row}set sorts(t){this._sorts=t,this.calcSortDir=this.calcSortDir(t)}get sorts(){return this._sorts}set treeStatus(t){this._treeStatus="collapsed"!==t&&"expanded"!==t&&"loading"!==t&&"disabled"!==t?"collapsed":t,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()}get treeStatus(){return this._treeStatus}get columnCssClasses(){let t="datatable-body-cell";if(this.column.cellClass)if("string"==typeof this.column.cellClass)t+=" "+this.column.cellClass;else if("function"==typeof this.column.cellClass){const e=this.column.cellClass({row:this.row,group:this.group,column:this.column,value:this.value,rowHeight:this.rowHeight});if("string"==typeof e)t+=e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=" "+a)}}return this.sortDir||(t+=" sort-active"),this.isFocused&&(t+=" active"),this.sortDir===it.asc&&(t+=" sort-asc"),this.sortDir===it.desc&&(t+=" sort-desc"),t}get width(){return this.column.width}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get height(){const t=this.rowHeight;return isNaN(t)?t:t+"px"}ngDoCheck(){this.checkValueUpdates()}ngOnDestroy(){this.cellTemplate&&this.cellTemplate.clear()}checkValueUpdates(){let t="";if(this.row&&this.column){const e=this.column.$$valueGetter(this.row,this.column.prop),n=this.column.pipe;n?t=n.transform(e):void 0!==t&&(t=e)}else t="";this.value!==t&&(this.value=t,this.cellContext.value=t,this.sanitizedValue=null!=t?this.stripHtml(t):t,this.cd.markForCheck())}onFocus(){this.isFocused=!0}onBlur(){this.isFocused=!1}onClick(t){this.activate.emit({type:"click",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onDblClick(t){this.activate.emit({type:"dblclick",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onKeyDown(t){const e=t.keyCode;(e===ft.return||e===ft.down||e===ft.up||e===ft.left||e===ft.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element}))}onCheckboxChange(t){this.activate.emit({type:"checkbox",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element,treeStatus:"collapsed"})}calcSortDir(t){if(!t)return;const e=t.find(t=>t.prop===this.column.prop);return e?e.dir:void 0}stripHtml(t){return t.replace?t.replace(/<\/?[^>]+(>|$)/g,""):t}onTreeAction(){this.treeAction.emit(this.row)}calcLeftMargin(t,e){return t.isTreeColumn?e.level*(null!=t.treeLevelIndent?t.treeLevelIndent:50):0}}function bt(t,e,n){const a=n(e,t);return a>-1?t.splice(a,1):t.push(e),t}class mt{constructor(){this.activate=new a.EventEmitter,this.select=new a.EventEmitter}selectRow(t,e,n){if(!this.selectEnabled)return;const a="checkbox"===this.selectionType,r="multiClick"===this.selectionType;let i=[];i="multi"===this.selectionType||a||r?t.shiftKey?function(t,e,n,a,r){const i=n<a;for(let s=0;s<e.length;s++){const r=e[s],u=s>=a&&s<=n,o=s<=a&&s>=n;let l={start:0,end:0};l=i?{start:n,end:a}:{start:a,end:n+1},(i&&o||!i&&u)&&s>=l.start&&s<=l.end&&t.push(r)}return t}([],this.rows,e,this.prevIndex,this.getRowSelectedIdx.bind(this)):bt(t.ctrlKey||t.metaKey||r||a?[...this.selected]:[],n,this.getRowSelectedIdx.bind(this)):bt([],n,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(i=i.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),this.selected.push(...i),this.prevIndex=e,this.select.emit({selected:i})}onActivate(t,e){const{type:n,event:a,row:r}=t,i="checkbox"===this.selectionType;!i&&("click"===n||"dblclick"===n)||i&&"checkbox"===n?this.selectRow(a,e,r):"keydown"===n&&(a.keyCode===ft.return?this.selectRow(a,e,r):this.onKeyboardFocus(t)),this.activate.emit(t)}onKeyboardFocus(t){const{keyCode:e}=t.event;if(e===ft.up||e===ft.down||e===ft.right||e===ft.left){const n="cell"===this.selectionType;t.cellElement&&n?n&&this.focusCell(t.cellElement,t.rowElement,e,t.cellIndex):this.focusRow(t.rowElement,e)}}focusRow(t,e){const n=this.getPrevNextRow(t,e);n&&n.focus()}getPrevNextRow(t,e){const n=t.parentElement;if(n){let t;if(e===ft.up?t=n.previousElementSibling:e===ft.down&&(t=n.nextElementSibling),t&&t.children.length)return t.children[0]}}focusCell(t,e,n,a){let r;if(n===ft.left)r=t.previousElementSibling;else if(n===ft.right)r=t.nextElementSibling;else if(n===ft.up||n===ft.down){const t=this.getPrevNextRow(e,n);if(t){const e=t.getElementsByClassName("datatable-body-cell");e.length&&(r=e[a])}}r&&r.focus()}getRowSelected(t){return this.getRowSelectedIdx(t,this.selected)>-1}getRowSelectedIdx(t,e){if(!e||!e.length)return-1;const n=this.rowIdentity(t);return e.findIndex(t=>this.rowIdentity(t)===n)}}function yt(t){const e=t.filter(t=>!!t);return e.length?e.some(t=>"number"!=typeof t)?null:e.reduce((t,e)=>t+e):null}function vt(t){return null}class xt{constructor(){this.summaryRow={}}ngOnChanges(){this.columns&&this.rows&&(this.updateInternalColumns(),this.updateValues())}updateInternalColumns(){this._internalColumns=this.columns.map(t=>Object.assign({},t,{cellTemplate:t.summaryTemplate}))}updateValues(){this.summaryRow={},this.columns.filter(t=>!t.summaryTemplate).forEach(t=>{const e=this.rows.map(e=>e[t.prop]),n=this.getSummaryFunction(t);this.summaryRow[t.prop]=t.pipe?t.pipe.transform(n(e)):n(e)})}getSummaryFunction(t){return void 0===t.summaryFunc?yt:null===t.summaryFunc?vt:t.summaryFunc}}class _t{static forRoot(t){return{ngModule:_t,providers:[{provide:"configuration",useValue:t}]}}}"undefined"==typeof document||document.elementsFromPoint||(document.elementsFromPoint=function(t,e){const n=[],a=[];let r,i,s;for(;(r=document.elementFromPoint(t,e))&&-1===n.indexOf(r)&&null!=r;)n.push(r),a.push({value:r.style.getPropertyValue("pointer-events"),priority:r.style.getPropertyPriority("pointer-events")}),r.style.setProperty("pointer-events","none","important");for(i=a.length;s=a[--i];)n[i].style.setProperty("pointer-events",s.value?s.value:"",s.priority);return n})},wE6v:function(t,e,n){var a=n("2oRo"),r=n("xluM"),i=n("hh1v"),s=n("2bX/"),u=n("3Eq5"),o=n("SFrS"),l=n("tiKp"),d=a.TypeError,c=l("toPrimitive");t.exports=function(t,e){if(!i(t)||s(t))return t;var n,a=u(t,c);if(a){if(void 0===e&&(e="default"),n=r(a,t,e),!i(n)||s(n))return n;throw d("Can't convert object to primitive value")}return void 0===e&&(e="number"),o(t,e)}},wQk9:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("wd/R"))},"wd/R":function(t,e,n){(function(t){t.exports=function(){"use strict";var e,a;function r(){return e.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function s(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function u(t){return void 0===t}function o(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function d(t,e){var n,a=[];for(n=0;n<t.length;++n)a.push(e(t[n],n));return a}function c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function f(t,e){for(var n in e)c(e,n)&&(t[n]=e[n]);return c(e,"toString")&&(t.toString=e.toString),c(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,n,a){return we(t,e,n,a,!0).utc()}function g(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function p(t){if(null==t._isValid){var e=g(t),n=a.call(e.parsedDateParts,(function(t){return null!=t})),r=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(r=r&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return r;t._isValid=r}return t._isValid}function b(t){var e=h(NaN);return null!=t?f(g(e),t):g(e).userInvalidated=!0,e}a=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,a=0;a<n;a++)if(a in e&&t.call(this,e[a],a,e))return!0;return!1};var m=r.momentProperties=[];function y(t,e){var n,a,r;if(u(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),u(e._i)||(t._i=e._i),u(e._f)||(t._f=e._f),u(e._l)||(t._l=e._l),u(e._strict)||(t._strict=e._strict),u(e._tzm)||(t._tzm=e._tzm),u(e._isUTC)||(t._isUTC=e._isUTC),u(e._offset)||(t._offset=e._offset),u(e._pf)||(t._pf=g(e)),u(e._locale)||(t._locale=e._locale),m.length>0)for(n=0;n<m.length;n++)u(r=e[a=m[n]])||(t[a]=r);return t}var v=!1;function x(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,r.updateOffset(this),v=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function T(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=T(e)),n}function O(t,e,n){var a,r=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),s=0;for(a=0;a<r;a++)(n&&t[a]!==e[a]||!n&&w(t[a])!==w(e[a]))&&s++;return s+i}function S(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function I(t,e){var n=!0;return f((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){for(var a,i=[],s=0;s<arguments.length;s++){if(a="","object"==typeof arguments[s]){for(var u in a+="\n["+s+"] ",arguments[0])a+=u+": "+arguments[0][u]+", ";a=a.slice(0,-2)}else a=arguments[s];i.push(a)}S(t+"\nArguments: "+Array.prototype.slice.call(i).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var N,C={};function R(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),C[t]||(S(e),C[t]=!0)}function A(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function k(t,e){var n,a=f({},t);for(n in e)c(e,n)&&(s(t[n])&&s(e[n])?(a[n]={},f(a[n],t[n]),f(a[n],e[n])):null!=e[n]?a[n]=e[n]:delete a[n]);for(n in t)c(t,n)&&!c(e,n)&&s(t[n])&&(a[n]=f({},a[n]));return a}function E(t){null!=t&&this.set(t)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,N=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)c(t,e)&&n.push(e);return n};var L={};function D(t,e){var n=t.toLowerCase();L[n]=L[n+"s"]=L[e]=t}function P(t){return"string"==typeof t?L[t]||L[t.toLowerCase()]:void 0}function M(t){var e,n,a={};for(n in t)c(t,n)&&(e=P(n))&&(a[e]=t[n]);return a}var q={};function j(t,e){q[t]=e}function F(t,e,n){var a=""+Math.abs(t);return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-a.length)).toString().substr(1)+a}var V=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,B={},z={};function Y(t,e,n,a){var r=a;"string"==typeof a&&(r=function(){return this[a]()}),t&&(z[t]=r),e&&(z[e[0]]=function(){return F(r.apply(this,arguments),e[1],e[2])}),n&&(z[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function H(t,e){return t.isValid()?(e=U(e,t.localeData()),B[e]=B[e]||function(t){var e,n,a,r=t.match(V);for(e=0,n=r.length;e<n;e++)r[e]=z[r[e]]?z[r[e]]:(a=r[e]).match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"");return function(e){var a,i="";for(a=0;a<n;a++)i+=A(r[a])?r[a].call(e,t):r[a];return i}}(e),B[e](t)):t.localeData().invalidDate()}function U(t,e){var n=5;function a(t){return e.longDateFormat(t)||t}for(G.lastIndex=0;n>=0&&G.test(t);)t=t.replace(G,a),G.lastIndex=0,n-=1;return t}var W=/\d/,K=/\d\d/,$=/\d{3}/,J=/\d{4}/,Z=/[+-]?\d{6}/,Q=/\d\d?/,X=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,at=/[+-]?\d{1,6}/,rt=/\d+/,it=/[+-]?\d+/,st=/Z|[+-]\d\d:?\d\d/gi,ut=/Z|[+-]\d\d(?::?\d\d)?/gi,ot=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,lt={};function dt(t,e,n){lt[t]=A(e)?e:function(t,a){return t&&n?n:e}}function ct(t,e){return c(lt,t)?lt[t](e._strict,e._locale):new RegExp(ft(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,a,r){return e||n||a||r}))))}function ft(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ht={};function gt(t,e){var n,a=e;for("string"==typeof t&&(t=[t]),o(e)&&(a=function(t,n){n[e]=w(t)}),n=0;n<t.length;n++)ht[t[n]]=a}function pt(t,e){gt(t,(function(t,n,a,r){a._w=a._w||{},e(t,a._w,a,r)}))}function bt(t,e,n){null!=e&&c(ht,t)&&ht[t](e,n._a,n,t)}function mt(t){return yt(t)?366:365}function yt(t){return t%4==0&&t%100!=0||t%400==0}Y("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),Y(0,["YY",2],0,(function(){return this.year()%100})),Y(0,["YYYY",4],0,"year"),Y(0,["YYYYY",5],0,"year"),Y(0,["YYYYYY",6,!0],0,"year"),D("year","y"),j("year",1),dt("Y",it),dt("YY",Q,K),dt("YYYY",nt,J),dt("YYYYY",at,Z),dt("YYYYYY",at,Z),gt(["YYYYY","YYYYYY"],0),gt("YYYY",(function(t,e){e[0]=2===t.length?r.parseTwoDigitYear(t):w(t)})),gt("YY",(function(t,e){e[0]=r.parseTwoDigitYear(t)})),gt("Y",(function(t,e){e[0]=parseInt(t,10)})),r.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var vt,xt=_t("FullYear",!0);function _t(t,e){return function(n){return null!=n?(wt(this,t,n),r.updateOffset(this,e),this):Tt(this,t)}}function Tt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function wt(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&yt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),Ot(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function Ot(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?yt(t)?29:28:31-n%7%2}vt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},Y("M",["MM",2],"Mo",(function(){return this.month()+1})),Y("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),Y("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),D("month","M"),j("month",8),dt("M",Q),dt("MM",Q,K),dt("MMM",(function(t,e){return e.monthsShortRegex(t)})),dt("MMMM",(function(t,e){return e.monthsRegex(t)})),gt(["M","MM"],(function(t,e){e[1]=w(t)-1})),gt(["MMM","MMMM"],(function(t,e,n,a){var r=n._locale.monthsParse(t,a,n._strict);null!=r?e[1]=r:g(n).invalidMonth=t}));var St=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,It="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Nt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ct(t,e,n){var a,r,i,s=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)i=h([2e3,a]),this._shortMonthsParse[a]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(r=vt.call(this._shortMonthsParse,s))?r:null:-1!==(r=vt.call(this._longMonthsParse,s))?r:null:"MMM"===e?-1!==(r=vt.call(this._shortMonthsParse,s))||-1!==(r=vt.call(this._longMonthsParse,s))?r:null:-1!==(r=vt.call(this._longMonthsParse,s))||-1!==(r=vt.call(this._shortMonthsParse,s))?r:null}function Rt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=w(e);else if(!o(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),Ot(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function At(t){return null!=t?(Rt(this,t),r.updateOffset(this,!0),this):Tt(this,"Month")}var kt=ot,Et=ot;function Lt(){function t(t,e){return e.length-t.length}var e,n,a=[],r=[],i=[];for(e=0;e<12;e++)n=h([2e3,e]),a.push(this.monthsShort(n,"")),r.push(this.months(n,"")),i.push(this.months(n,"")),i.push(this.monthsShort(n,""));for(a.sort(t),r.sort(t),i.sort(t),e=0;e<12;e++)a[e]=ft(a[e]),r[e]=ft(r[e]);for(e=0;e<24;e++)i[e]=ft(i[e]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Dt(t,e,n,a,r,i,s){var u;return t<100&&t>=0?(u=new Date(t+400,e,n,a,r,i,s),isFinite(u.getFullYear())&&u.setFullYear(t)):u=new Date(t,e,n,a,r,i,s),u}function Pt(t){var e;if(t<100&&t>=0){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Mt(t,e,n){var a=7+e-n;return-(7+Pt(t,0,a).getUTCDay()-e)%7+a-1}function qt(t,e,n,a,r){var i,s,u=1+7*(e-1)+(7+n-a)%7+Mt(t,a,r);return u<=0?s=mt(i=t-1)+u:u>mt(t)?(i=t+1,s=u-mt(t)):(i=t,s=u),{year:i,dayOfYear:s}}function jt(t,e,n){var a,r,i=Mt(t.year(),e,n),s=Math.floor((t.dayOfYear()-i-1)/7)+1;return s<1?a=s+Ft(r=t.year()-1,e,n):s>Ft(t.year(),e,n)?(a=s-Ft(t.year(),e,n),r=t.year()+1):(r=t.year(),a=s),{week:a,year:r}}function Ft(t,e,n){var a=Mt(t,e,n),r=Mt(t+1,e,n);return(mt(t)-a+r)/7}function Vt(t,e){return t.slice(e,7).concat(t.slice(0,e))}Y("w",["ww",2],"wo","week"),Y("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),j("week",5),j("isoWeek",5),dt("w",Q),dt("ww",Q,K),dt("W",Q),dt("WW",Q,K),pt(["w","ww","W","WW"],(function(t,e,n,a){e[a.substr(0,1)]=w(t)})),Y("d",0,"do","day"),Y("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),Y("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),Y("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),Y("e",0,0,"weekday"),Y("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),dt("d",Q),dt("e",Q),dt("E",Q),dt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),dt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),dt("dddd",(function(t,e){return e.weekdaysRegex(t)})),pt(["dd","ddd","dddd"],(function(t,e,n,a){var r=n._locale.weekdaysParse(t,a,n._strict);null!=r?e.d=r:g(n).invalidWeekday=t})),pt(["d","e","E"],(function(t,e,n,a){e[a]=w(t)}));var Gt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Bt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),zt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Yt(t,e,n){var a,r,i,s=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)i=h([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(r=vt.call(this._weekdaysParse,s))?r:null:"ddd"===e?-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:null:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:"dddd"===e?-1!==(r=vt.call(this._weekdaysParse,s))||-1!==(r=vt.call(this._shortWeekdaysParse,s))||-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:"ddd"===e?-1!==(r=vt.call(this._shortWeekdaysParse,s))||-1!==(r=vt.call(this._weekdaysParse,s))||-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:-1!==(r=vt.call(this._minWeekdaysParse,s))||-1!==(r=vt.call(this._weekdaysParse,s))||-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:null}var Ht=ot,Ut=ot,Wt=ot;function Kt(){function t(t,e){return e.length-t.length}var e,n,a,r,i,s=[],u=[],o=[],l=[];for(e=0;e<7;e++)n=h([2e3,1]).day(e),a=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),i=this.weekdays(n,""),s.push(a),u.push(r),o.push(i),l.push(a),l.push(r),l.push(i);for(s.sort(t),u.sort(t),o.sort(t),l.sort(t),e=0;e<7;e++)u[e]=ft(u[e]),o[e]=ft(o[e]),l[e]=ft(l[e]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function $t(){return this.hours()%12||12}function Jt(t,e){Y(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Zt(t,e){return e._meridiemParse}Y("H",["HH",2],0,"hour"),Y("h",["hh",2],0,$t),Y("k",["kk",2],0,(function(){return this.hours()||24})),Y("hmm",0,0,(function(){return""+$t.apply(this)+F(this.minutes(),2)})),Y("hmmss",0,0,(function(){return""+$t.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)})),Y("Hmm",0,0,(function(){return""+this.hours()+F(this.minutes(),2)})),Y("Hmmss",0,0,(function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)})),Jt("a",!0),Jt("A",!1),D("hour","h"),j("hour",13),dt("a",Zt),dt("A",Zt),dt("H",Q),dt("h",Q),dt("k",Q),dt("HH",Q,K),dt("hh",Q,K),dt("kk",Q,K),dt("hmm",X),dt("hmmss",tt),dt("Hmm",X),dt("Hmmss",tt),gt(["H","HH"],3),gt(["k","kk"],(function(t,e,n){var a=w(t);e[3]=24===a?0:a})),gt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),gt(["h","hh"],(function(t,e,n){e[3]=w(t),g(n).bigHour=!0})),gt("hmm",(function(t,e,n){var a=t.length-2;e[3]=w(t.substr(0,a)),e[4]=w(t.substr(a)),g(n).bigHour=!0})),gt("hmmss",(function(t,e,n){var a=t.length-4,r=t.length-2;e[3]=w(t.substr(0,a)),e[4]=w(t.substr(a,2)),e[5]=w(t.substr(r)),g(n).bigHour=!0})),gt("Hmm",(function(t,e,n){var a=t.length-2;e[3]=w(t.substr(0,a)),e[4]=w(t.substr(a))})),gt("Hmmss",(function(t,e,n){var a=t.length-4,r=t.length-2;e[3]=w(t.substr(0,a)),e[4]=w(t.substr(a,2)),e[5]=w(t.substr(r))}));var Qt,Xt=_t("Hours",!0),te={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:It,monthsShort:Nt,week:{dow:0,doy:6},weekdays:Gt,weekdaysMin:zt,weekdaysShort:Bt,meridiemParse:/[ap]\.?m?\.?/i},ee={},ne={};function ae(t){return t?t.toLowerCase().replace("_","-"):t}function re(e){var a=null;if(!ee[e]&&void 0!==t&&t&&t.exports)try{a=Qt._abbr,n("RnhZ")("./"+e),ie(a)}catch(r){}return ee[e]}function ie(t,e){var n;return t&&((n=u(e)?ue(t):se(t,e))?Qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Qt._abbr}function se(t,e){if(null!==e){var n,a=te;if(e.abbr=t,null!=ee[t])R("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),a=ee[t]._config;else if(null!=e.parentLocale)if(null!=ee[e.parentLocale])a=ee[e.parentLocale]._config;else{if(null==(n=re(e.parentLocale)))return ne[e.parentLocale]||(ne[e.parentLocale]=[]),ne[e.parentLocale].push({name:t,config:e}),null;a=n._config}return ee[t]=new E(k(a,e)),ne[t]&&ne[t].forEach((function(t){se(t.name,t.config)})),ie(t),ee[t]}return delete ee[t],null}function ue(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Qt;if(!i(t)){if(e=re(t))return e;t=[t]}return function(t){for(var e,n,a,r,i=0;i<t.length;){for(e=(r=ae(t[i]).split("-")).length,n=(n=ae(t[i+1]))?n.split("-"):null;e>0;){if(a=re(r.slice(0,e).join("-")))return a;if(n&&n.length>=e&&O(r,n,!0)>=e-1)break;e--}i++}return Qt}(t)}function oe(t){var e,n=t._a;return n&&-2===g(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>Ot(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,g(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),g(t)._overflowWeeks&&-1===e&&(e=7),g(t)._overflowWeekday&&-1===e&&(e=8),g(t).overflow=e),t}function le(t,e,n){return null!=t?t:null!=e?e:n}function de(t){var e,n,a,i,s,u=[];if(!t._d){for(a=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,a,r,i,s,u,o;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)i=1,s=4,n=le(e.GG,t._a[0],jt(Oe(),1,4).year),a=le(e.W,1),((r=le(e.E,1))<1||r>7)&&(o=!0);else{i=t._locale._week.dow,s=t._locale._week.doy;var l=jt(Oe(),i,s);n=le(e.gg,t._a[0],l.year),a=le(e.w,l.week),null!=e.d?((r=e.d)<0||r>6)&&(o=!0):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(o=!0)):r=i}a<1||a>Ft(n,i,s)?g(t)._overflowWeeks=!0:null!=o?g(t)._overflowWeekday=!0:(u=qt(n,a,r,i,s),t._a[0]=u.year,t._dayOfYear=u.dayOfYear)}(t),null!=t._dayOfYear&&(s=le(t._a[0],a[0]),(t._dayOfYear>mt(s)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),n=Pt(s,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=u[e]=a[e];for(;e<7;e++)t._a[e]=u[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Pt:Dt).apply(null,u),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(g(t).weekdayMismatch=!0)}}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fe=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/Z|[+-]\d\d(?::?\d\d)?/,ge=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],be=/^\/?Date\((\-?\d+)/i;function me(t){var e,n,a,r,i,s,u=t._i,o=ce.exec(u)||fe.exec(u);if(o){for(g(t).iso=!0,e=0,n=ge.length;e<n;e++)if(ge[e][1].exec(o[1])){r=ge[e][0],a=!1!==ge[e][2];break}if(null==r)return void(t._isValid=!1);if(o[3]){for(e=0,n=pe.length;e<n;e++)if(pe[e][1].exec(o[3])){i=(o[2]||" ")+pe[e][0];break}if(null==i)return void(t._isValid=!1)}if(!a&&null!=i)return void(t._isValid=!1);if(o[4]){if(!he.exec(o[4]))return void(t._isValid=!1);s="Z"}t._f=r+(i||"")+(s||""),_e(t)}else t._isValid=!1}var ye=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ve={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function xe(t){var e,n,a,r,i,s,u,o,l=ye.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){var d=(e=l[3],n=l[2],a=l[5],r=l[6],i=l[7],s=[(u=l[4],o=parseInt(u,10),o<=49?2e3+o:o<=999?1900+o:o),Nt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)],i&&s.push(parseInt(i,10)),s);if(!function(t,e,n){return!t||Bt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(g(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],d,t))return;t._a=d,t._tzm=function(t,e,n){if(t)return ve[t];if(e)return 0;var a=parseInt(n,10),r=a%100;return(a-r)/100*60+r}(l[8],l[9],l[10]),t._d=Pt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),g(t).rfc2822=!0}else t._isValid=!1}function _e(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],g(t).empty=!0;var e,n,a,i,s,u=""+t._i,o=u.length,l=0;for(a=U(t._f,t._locale).match(V)||[],e=0;e<a.length;e++)(n=(u.match(ct(i=a[e],t))||[])[0])&&((s=u.substr(0,u.indexOf(n))).length>0&&g(t).unusedInput.push(s),u=u.slice(u.indexOf(n)+n.length),l+=n.length),z[i]?(n?g(t).empty=!1:g(t).unusedTokens.push(i),bt(i,n,t)):t._strict&&!n&&g(t).unusedTokens.push(i);g(t).charsLeftOver=o-l,u.length>0&&g(t).unusedInput.push(u),t._a[3]<=12&&!0===g(t).bigHour&&t._a[3]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var a;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((a=t.isPM(n))&&e<12&&(e+=12),a||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),de(t),oe(t)}else xe(t);else me(t)}function Te(t){var e=t._i,n=t._f;return t._locale=t._locale||ue(t._l),null===e||void 0===n&&""===e?b({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),_(e)?new x(oe(e)):(l(e)?t._d=e:i(n)?function(t){var e,n,a,r,i;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(r=0;r<t._f.length;r++)i=0,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[r],_e(e),p(e)&&(i+=g(e).charsLeftOver,i+=10*g(e).unusedTokens.length,g(e).score=i,(null==a||i<a)&&(a=i,n=e));f(t,n||e)}(t):n?_e(t):function(t){var e=t._i;u(e)?t._d=new Date(r.now()):l(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=be.exec(t._i);null===e?(me(t),!1===t._isValid&&(delete t._isValid,xe(t),!1===t._isValid&&(delete t._isValid,r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):i(e)?(t._a=d(e.slice(0),(function(t){return parseInt(t,10)})),de(t)):s(e)?function(t){if(!t._d){var e=M(t._i);t._a=d([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),de(t)}}(t):o(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),p(t)||(t._d=null),t))}function we(t,e,n,a,r){var u,o={};return!0!==n&&!1!==n||(a=n,n=void 0),(s(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||i(t)&&0===t.length)&&(t=void 0),o._isAMomentObject=!0,o._useUTC=o._isUTC=r,o._l=n,o._i=t,o._f=e,o._strict=a,(u=new x(oe(Te(o))))._nextDay&&(u.add(1,"d"),u._nextDay=void 0),u}function Oe(t,e,n,a){return we(t,e,n,a,!1)}r.createFromInputFallback=I("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Se=I("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Oe.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:b()})),Ie=I("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Oe.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:b()}));function Ne(t,e){var n,a;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return Oe();for(n=e[0],a=1;a<e.length;++a)e[a].isValid()&&!e[a][t](n)||(n=e[a]);return n}var Ce=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Re(t){var e=M(t),n=e.year||0,a=e.quarter||0,r=e.month||0,i=e.week||e.isoWeek||0,s=e.day||0,u=e.hour||0,o=e.minute||0,l=e.second||0,d=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===vt.call(Ce,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,a=0;a<Ce.length;++a)if(t[Ce[a]]){if(n)return!1;parseFloat(t[Ce[a]])!==w(t[Ce[a]])&&(n=!0)}return!0}(e),this._milliseconds=+d+1e3*l+6e4*o+1e3*u*60*60,this._days=+s+7*i,this._months=+r+3*a+12*n,this._data={},this._locale=ue(),this._bubble()}function Ae(t){return t instanceof Re}function ke(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ee(t,e){Y(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+F(~~(t/60),2)+e+F(~~t%60,2)}))}Ee("Z",":"),Ee("ZZ",""),dt("Z",ut),dt("ZZ",ut),gt(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=De(ut,t)}));var Le=/([\+\-]|\d\d)/gi;function De(t,e){var n=(e||"").match(t);if(null===n)return null;var a=((n[n.length-1]||[])+"").match(Le)||["-",0,0],r=60*a[1]+w(a[2]);return 0===r?0:"+"===a[0]?r:-r}function Pe(t,e){var n,a;return e._isUTC?(n=e.clone(),a=(_(t)||l(t)?t.valueOf():Oe(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):Oe(t).local()}function Me(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function qe(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var je=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Fe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ve(t,e){var n,a,r,i,s,u,l=t,d=null;return Ae(t)?l={ms:t._milliseconds,d:t._days,M:t._months}:o(t)?(l={},e?l[e]=t:l.milliseconds=t):(d=je.exec(t))?(n="-"===d[1]?-1:1,l={y:0,d:w(d[2])*n,h:w(d[3])*n,m:w(d[4])*n,s:w(d[5])*n,ms:w(ke(1e3*d[6]))*n}):(d=Fe.exec(t))?l={y:Ge(d[2],n="-"===d[1]?-1:1),M:Ge(d[3],n),w:Ge(d[4],n),d:Ge(d[5],n),h:Ge(d[6],n),m:Ge(d[7],n),s:Ge(d[8],n)}:null==l?l={}:"object"==typeof l&&("from"in l||"to"in l)&&(i=Oe(l.from),s=Oe(l.to),r=i.isValid()&&s.isValid()?(s=Pe(s,i),i.isBefore(s)?u=Be(i,s):((u=Be(s,i)).milliseconds=-u.milliseconds,u.months=-u.months),u):{milliseconds:0,months:0},(l={}).ms=r.milliseconds,l.M=r.months),a=new Re(l),Ae(t)&&c(t,"_locale")&&(a._locale=t._locale),a}function Ge(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Be(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function ze(t,e){return function(n,a){var r;return null===a||isNaN(+a)||(R(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=a,a=r),Ye(this,Ve(n="string"==typeof n?+n:n,a),t),this}}function Ye(t,e,n,a){var i=e._milliseconds,s=ke(e._days),u=ke(e._months);t.isValid()&&(a=null==a||a,u&&Rt(t,Tt(t,"Month")+u*n),s&&wt(t,"Date",Tt(t,"Date")+s*n),i&&t._d.setTime(t._d.valueOf()+i*n),a&&r.updateOffset(t,s||u))}Ve.fn=Re.prototype,Ve.invalid=function(){return Ve(NaN)};var He=ze(1,"add"),Ue=ze(-1,"subtract");function We(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),a=t.clone().add(n,"months");return-(n+(e-a<0?(e-a)/(a-t.clone().add(n-1,"months")):(e-a)/(t.clone().add(n+1,"months")-a)))||0}function Ke(t){var e;return void 0===t?this._locale._abbr:(null!=(e=ue(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var $e=I("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function Je(){return this._locale}function Ze(t,e){return(t%e+e)%e}function Qe(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-126227808e5:new Date(t,e,n).valueOf()}function Xe(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-126227808e5:Date.UTC(t,e,n)}function tn(t,e){Y(0,[t,t.length],0,e)}function en(t,e,n,a,r){var i;return null==t?jt(this,a,r).year:(e>(i=Ft(t,a,r))&&(e=i),nn.call(this,t,e,n,a,r))}function nn(t,e,n,a,r){var i=qt(t,e,n,a,r),s=Pt(i.year,0,i.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}Y(0,["gg",2],0,(function(){return this.weekYear()%100})),Y(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),j("weekYear",1),j("isoWeekYear",1),dt("G",it),dt("g",it),dt("GG",Q,K),dt("gg",Q,K),dt("GGGG",nt,J),dt("gggg",nt,J),dt("GGGGG",at,Z),dt("ggggg",at,Z),pt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,a){e[a.substr(0,2)]=w(t)})),pt(["gg","GG"],(function(t,e,n,a){e[a]=r.parseTwoDigitYear(t)})),Y("Q",0,"Qo","quarter"),D("quarter","Q"),j("quarter",7),dt("Q",W),gt("Q",(function(t,e){e[1]=3*(w(t)-1)})),Y("D",["DD",2],"Do","date"),D("date","D"),j("date",9),dt("D",Q),dt("DD",Q,K),dt("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),gt(["D","DD"],2),gt("Do",(function(t,e){e[2]=w(t.match(Q)[0])}));var an=_t("Date",!0);Y("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),j("dayOfYear",4),dt("DDD",et),dt("DDDD",$),gt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=w(t)})),Y("m",["mm",2],0,"minute"),D("minute","m"),j("minute",14),dt("m",Q),dt("mm",Q,K),gt(["m","mm"],4);var rn=_t("Minutes",!1);Y("s",["ss",2],0,"second"),D("second","s"),j("second",15),dt("s",Q),dt("ss",Q,K),gt(["s","ss"],5);var sn,un=_t("Seconds",!1);for(Y("S",0,0,(function(){return~~(this.millisecond()/100)})),Y(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),Y(0,["SSS",3],0,"millisecond"),Y(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),Y(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),Y(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),Y(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),Y(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),Y(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),D("millisecond","ms"),j("millisecond",16),dt("S",et,W),dt("SS",et,K),dt("SSS",et,$),sn="SSSS";sn.length<=9;sn+="S")dt(sn,rt);function on(t,e){e[6]=w(1e3*("0."+t))}for(sn="S";sn.length<=9;sn+="S")gt(sn,on);var ln=_t("Milliseconds",!1);Y("z",0,0,"zoneAbbr"),Y("zz",0,0,"zoneName");var dn=x.prototype;function cn(t){return t}dn.add=He,dn.calendar=function(t,e){var n=t||Oe(),a=Pe(n,this).startOf("day"),i=r.calendarFormat(this,a)||"sameElse",s=e&&(A(e[i])?e[i].call(this,n):e[i]);return this.format(s||this.localeData().calendar(i,this,Oe(n)))},dn.clone=function(){return new x(this)},dn.diff=function(t,e,n){var a,r,i;if(!this.isValid())return NaN;if(!(a=Pe(t,this)).isValid())return NaN;switch(r=6e4*(a.utcOffset()-this.utcOffset()),e=P(e)){case"year":i=We(this,a)/12;break;case"month":i=We(this,a);break;case"quarter":i=We(this,a)/3;break;case"second":i=(this-a)/1e3;break;case"minute":i=(this-a)/6e4;break;case"hour":i=(this-a)/36e5;break;case"day":i=(this-a-r)/864e5;break;case"week":i=(this-a-r)/6048e5;break;default:i=this-a}return n?i:T(i)},dn.endOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Xe:Qe;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-Ze(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-Ze(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-Ze(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},dn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=H(this,t);return this.localeData().postformat(e)},dn.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Oe(t).isValid())?Ve({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},dn.fromNow=function(t){return this.from(Oe(),t)},dn.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Oe(t).isValid())?Ve({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},dn.toNow=function(t){return this.to(Oe(),t)},dn.get=function(t){return A(this[t=P(t)])?this[t]():this},dn.invalidAt=function(){return g(this).overflow},dn.isAfter=function(t,e){var n=_(t)?t:Oe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},dn.isBefore=function(t,e){var n=_(t)?t:Oe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},dn.isBetween=function(t,e,n,a){var r=_(t)?t:Oe(t),i=_(e)?e:Oe(e);return!!(this.isValid()&&r.isValid()&&i.isValid())&&("("===(a=a||"()")[0]?this.isAfter(r,n):!this.isBefore(r,n))&&(")"===a[1]?this.isBefore(i,n):!this.isAfter(i,n))},dn.isSame=function(t,e){var n,a=_(t)?t:Oe(t);return!(!this.isValid()||!a.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()===a.valueOf():(n=a.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},dn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},dn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},dn.isValid=function(){return p(this)},dn.lang=$e,dn.locale=Ke,dn.localeData=Je,dn.max=Ie,dn.min=Se,dn.parsingFlags=function(){return f({},g(this))},dn.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:q[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=M(t)),a=0;a<n.length;a++)this[n[a].unit](t[n[a].unit]);else if(A(this[t=P(t)]))return this[t](e);return this},dn.startOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Xe:Qe;switch(t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=Ze(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=Ze(e,6e4);break;case"second":e=this._d.valueOf(),e-=Ze(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},dn.subtract=Ue,dn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},dn.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},dn.toDate=function(){return new Date(this.valueOf())},dn.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||n.year()>9999?H(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):A(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},dn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";return this.format(n+a+"-MM-DD[T]HH:mm:ss.SSS"+e+'[")]')},dn.toJSON=function(){return this.isValid()?this.toISOString():null},dn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},dn.unix=function(){return Math.floor(this.valueOf()/1e3)},dn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},dn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},dn.year=xt,dn.isLeapYear=function(){return yt(this.year())},dn.weekYear=function(t){return en.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},dn.isoWeekYear=function(t){return en.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},dn.quarter=dn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},dn.month=At,dn.daysInMonth=function(){return Ot(this.year(),this.month())},dn.week=dn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},dn.isoWeek=dn.isoWeeks=function(t){var e=jt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},dn.weeksInYear=function(){var t=this.localeData()._week;return Ft(this.year(),t.dow,t.doy)},dn.isoWeeksInYear=function(){return Ft(this.year(),1,4)},dn.date=an,dn.day=dn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},dn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},dn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},dn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},dn.hour=dn.hours=Xt,dn.minute=dn.minutes=rn,dn.second=dn.seconds=un,dn.millisecond=dn.milliseconds=ln,dn.utcOffset=function(t,e,n){var a,i=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=De(ut,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(a=Me(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),i!==t&&(!e||this._changeInProgress?Ye(this,Ve(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Me(this)},dn.utc=function(t){return this.utcOffset(0,t)},dn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Me(this),"m")),this},dn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=De(st,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},dn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Oe(t).utcOffset():0,(this.utcOffset()-t)%60==0)},dn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},dn.isLocal=function(){return!!this.isValid()&&!this._isUTC},dn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},dn.isUtc=qe,dn.isUTC=qe,dn.zoneAbbr=function(){return this._isUTC?"UTC":""},dn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},dn.dates=I("dates accessor is deprecated. Use date instead.",an),dn.months=I("months accessor is deprecated. Use month instead",At),dn.years=I("years accessor is deprecated. Use year instead",xt),dn.zone=I("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),dn.isDSTShifted=I("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!u(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Te(t))._a){var e=t._isUTC?h(t._a):Oe(t._a);this._isDSTShifted=this.isValid()&&O(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var fn=E.prototype;function hn(t,e,n,a){var r=ue(),i=h().set(a,e);return r[n](i,t)}function gn(t,e,n){if(o(t)&&(e=t,t=void 0),t=t||"",null!=e)return hn(t,e,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=hn(t,a,n,"month");return r}function pn(t,e,n,a){"boolean"==typeof t?(o(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,o(e)&&(n=e,e=void 0),e=e||"");var r,i=ue(),s=t?i._week.dow:0;if(null!=n)return hn(e,(n+s)%7,a,"day");var u=[];for(r=0;r<7;r++)u[r]=hn(e,(r+s)%7,a,"day");return u}fn.calendar=function(t,e,n){var a=this._calendar[t]||this._calendar.sameElse;return A(a)?a.call(e,n):a},fn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},fn.invalidDate=function(){return this._invalidDate},fn.ordinal=function(t){return this._ordinal.replace("%d",t)},fn.preparse=cn,fn.postformat=cn,fn.relativeTime=function(t,e,n,a){var r=this._relativeTime[n];return A(r)?r(t,e,n,a):r.replace(/%d/i,t)},fn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return A(n)?n(e):n.replace(/%s/i,e)},fn.set=function(t){var e,n;for(n in t)A(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},fn.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||St).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},fn.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[St.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},fn.monthsParse=function(t,e,n){var a,r,i;if(this._monthsParseExact)return Ct.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),a=0;a<12;a++){if(r=h([2e3,a]),n&&!this._longMonthsParse[a]&&(this._longMonthsParse[a]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[a]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),n||this._monthsParse[a]||(i="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[a]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[a].test(t))return a;if(n&&"MMM"===e&&this._shortMonthsParse[a].test(t))return a;if(!n&&this._monthsParse[a].test(t))return a}},fn.monthsRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||Lt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Et),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},fn.monthsShortRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||Lt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=kt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},fn.week=function(t){return jt(t,this._week.dow,this._week.doy).week},fn.firstDayOfYear=function(){return this._week.doy},fn.firstDayOfWeek=function(){return this._week.dow},fn.weekdays=function(t,e){var n=i(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Vt(n,this._week.dow):t?n[t.day()]:n},fn.weekdaysMin=function(t){return!0===t?Vt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},fn.weekdaysShort=function(t){return!0===t?Vt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},fn.weekdaysParse=function(t,e,n){var a,r,i;if(this._weekdaysParseExact)return Yt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(r=h([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[a]||(i="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[a]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[a].test(t))return a;if(n&&"ddd"===e&&this._shortWeekdaysParse[a].test(t))return a;if(n&&"dd"===e&&this._minWeekdaysParse[a].test(t))return a;if(!n&&this._weekdaysParse[a].test(t))return a}},fn.weekdaysRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ht),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},fn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},fn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Wt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},fn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},fn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ie("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=I("moment.lang is deprecated. Use moment.locale instead.",ie),r.langData=I("moment.langData is deprecated. Use moment.localeData instead.",ue);var bn=Math.abs;function mn(t,e,n,a){var r=Ve(e,n);return t._milliseconds+=a*r._milliseconds,t._days+=a*r._days,t._months+=a*r._months,t._bubble()}function yn(t){return t<0?Math.floor(t):Math.ceil(t)}function vn(t){return 4800*t/146097}function xn(t){return 146097*t/4800}function _n(t){return function(){return this.as(t)}}var Tn=_n("ms"),wn=_n("s"),On=_n("m"),Sn=_n("h"),In=_n("d"),Nn=_n("w"),Cn=_n("M"),Rn=_n("Q"),An=_n("y");function kn(t){return function(){return this.isValid()?this._data[t]:NaN}}var En=kn("milliseconds"),Ln=kn("seconds"),Dn=kn("minutes"),Pn=kn("hours"),Mn=kn("days"),qn=kn("months"),jn=kn("years"),Fn=Math.round,Vn={ss:44,s:45,m:45,h:22,d:26,M:11};function Gn(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}var Bn=Math.abs;function zn(t){return(t>0)-(t<0)||+t}function Yn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Bn(this._milliseconds)/1e3,a=Bn(this._days),r=Bn(this._months);t=T(n/60),e=T(t/60),n%=60,t%=60;var i=T(r/12),s=r%=12,u=a,o=e,l=t,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",c=this.asSeconds();if(!c)return"P0D";var f=c<0?"-":"",h=zn(this._months)!==zn(c)?"-":"",g=zn(this._days)!==zn(c)?"-":"",p=zn(this._milliseconds)!==zn(c)?"-":"";return f+"P"+(i?h+i+"Y":"")+(s?h+s+"M":"")+(u?g+u+"D":"")+(o||l||d?"T":"")+(o?p+o+"H":"")+(l?p+l+"M":"")+(d?p+d+"S":"")}var Hn=Re.prototype;return Hn.isValid=function(){return this._isValid},Hn.abs=function(){var t=this._data;return this._milliseconds=bn(this._milliseconds),this._days=bn(this._days),this._months=bn(this._months),t.milliseconds=bn(t.milliseconds),t.seconds=bn(t.seconds),t.minutes=bn(t.minutes),t.hours=bn(t.hours),t.months=bn(t.months),t.years=bn(t.years),this},Hn.add=function(t,e){return mn(this,t,e,1)},Hn.subtract=function(t,e){return mn(this,t,e,-1)},Hn.as=function(t){if(!this.isValid())return NaN;var e,n,a=this._milliseconds;if("month"===(t=P(t))||"quarter"===t||"year"===t)switch(n=this._months+vn(e=this._days+a/864e5),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(xn(this._months)),t){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hour":return 24*e+a/36e5;case"minute":return 1440*e+a/6e4;case"second":return 86400*e+a/1e3;case"millisecond":return Math.floor(864e5*e)+a;default:throw new Error("Unknown unit "+t)}},Hn.asMilliseconds=Tn,Hn.asSeconds=wn,Hn.asMinutes=On,Hn.asHours=Sn,Hn.asDays=In,Hn.asWeeks=Nn,Hn.asMonths=Cn,Hn.asQuarters=Rn,Hn.asYears=An,Hn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Hn._bubble=function(){var t,e,n,a,r,i=this._milliseconds,s=this._days,u=this._months,o=this._data;return i>=0&&s>=0&&u>=0||i<=0&&s<=0&&u<=0||(i+=864e5*yn(xn(u)+s),s=0,u=0),o.milliseconds=i%1e3,t=T(i/1e3),o.seconds=t%60,e=T(t/60),o.minutes=e%60,n=T(e/60),o.hours=n%24,s+=T(n/24),u+=r=T(vn(s)),s-=yn(xn(r)),a=T(u/12),u%=12,o.days=s,o.months=u,o.years=a,this},Hn.clone=function(){return Ve(this)},Hn.get=function(t){return t=P(t),this.isValid()?this[t+"s"]():NaN},Hn.milliseconds=En,Hn.seconds=Ln,Hn.minutes=Dn,Hn.hours=Pn,Hn.days=Mn,Hn.weeks=function(){return T(this.days()/7)},Hn.months=qn,Hn.years=jn,Hn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var a=Ve(t).abs(),r=Fn(a.as("s")),i=Fn(a.as("m")),s=Fn(a.as("h")),u=Fn(a.as("d")),o=Fn(a.as("M")),l=Fn(a.as("y")),d=r<=Vn.ss&&["s",r]||r<Vn.s&&["ss",r]||i<=1&&["m"]||i<Vn.m&&["mm",i]||s<=1&&["h"]||s<Vn.h&&["hh",s]||u<=1&&["d"]||u<Vn.d&&["dd",u]||o<=1&&["M"]||o<Vn.M&&["MM",o]||l<=1&&["y"]||["yy",l];return d[2]=e,d[3]=+t>0,d[4]=n,Gn.apply(null,d)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Hn.toISOString=Yn,Hn.toString=Yn,Hn.toJSON=Yn,Hn.locale=Ke,Hn.localeData=Je,Hn.toIsoString=I("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Yn),Hn.lang=$e,Y("X",0,0,"unix"),Y("x",0,0,"valueOf"),dt("x",it),dt("X",/[+-]?\d+(\.\d{1,3})?/),gt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),gt("x",(function(t,e,n){n._d=new Date(w(t))})),r.version="2.24.0",e=Oe,r.fn=dn,r.min=function(){var t=[].slice.call(arguments,0);return Ne("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return Ne("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=h,r.unix=function(t){return Oe(1e3*t)},r.months=function(t,e){return gn(t,e,"months")},r.isDate=l,r.locale=ie,r.invalid=b,r.duration=Ve,r.isMoment=_,r.weekdays=function(t,e,n){return pn(t,e,n,"weekdays")},r.parseZone=function(){return Oe.apply(null,arguments).parseZone()},r.localeData=ue,r.isDuration=Ae,r.monthsShort=function(t,e){return gn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return pn(t,e,n,"weekdaysMin")},r.defineLocale=se,r.updateLocale=function(t,e){if(null!=e){var n,a,r=te;null!=(a=re(t))&&(r=a._config),(n=new E(e=k(r,e))).parentLocale=ee[t],ee[t]=n,ie(t)}else null!=ee[t]&&(null!=ee[t].parentLocale?ee[t]=ee[t].parentLocale:null!=ee[t]&&delete ee[t]);return ee[t]},r.locales=function(){return N(ee)},r.weekdaysShort=function(t,e,n){return pn(t,e,n,"weekdaysShort")},r.normalizeUnits=P,r.relativeTimeRounding=function(t){return void 0===t?Fn:"function"==typeof t&&(Fn=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Vn[t]&&(void 0===e?Vn[t]:(Vn[t]=e,"s"===t&&(Vn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=dn,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},wg0c:function(t,e,n){var a=n("2oRo"),r=n("0Dky"),i=n("4zBA"),s=n("V37c"),u=n("WKiH").trim,o=n("WJkJ"),l=a.parseInt,d=a.Symbol,c=d&&d.iterator,f=/^[+-]?0x/i,h=i(f.exec),g=8!==l(o+"08")||22!==l(o+"0x16")||c&&!r((function(){l(Object(c))}));t.exports=g?function(t,e){var n=u(s(t));return l(n,e>>>0||(h(f,n)?16:10))}:l},wgvl:function(t,e,n){var a=n("Ytn0");t.exports=function(t,e){var n=a(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}},wnGv:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("s7LF"),i=n("LvDl"),s=n("oxzT"),u=n("QFaf"),o=n("DNAf"),l=n("a96k");class d{constructor(t){this.i18n=t,this.data=[],this.options=[],this.messages=new o.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.Object=Object,this.filteredOptions=[],this.icons=s.a}ngOnInit(){this.initFilter(),this.data.length>0&&this.initMissingOptions(),this.options=i.sortBy(this.options,["name"]),this.updateOptions()}initFilter(){this.filter=new r.i("",{validators:this.customBadgeValidators}),this.form=new u.a({filter:this.filter}),this.filteredOptions=[...this.options||[]]}initMissingOptions(){const t=this.options.map(t=>t.name);this.data.filter(e=>-1===t.indexOf(e)).forEach(t=>this.addOption(t)),this.forceOptionsToReflectData()}addOption(t){this.options.push(new l.a(!1,t,"")),this.options=i.sortBy(this.options,["name"]),this.triggerSelection(this.options.find(e=>e.name===t))}triggerSelection(t){!t||this.selectionLimit&&!t.selected&&this.data.length>=this.selectionLimit||(t.selected=!t.selected,this.updateOptions(),this.selection.emit({option:t}))}updateOptions(){this.data.splice(0,this.data.length),this.options.forEach(t=>{t.selected&&this.data.push(t.name)}),this.updateFilter()}updateFilter(){this.filteredOptions=this.options.filter(t=>t.name.includes(this.filter.value))}forceOptionsToReflectData(){this.options.forEach(t=>{-1!==this.data.indexOf(t.name)&&(t.selected=!0)})}ngOnChanges(){this.filter&&this.updateFilter(),this.options&&this.data&&0!==this.data.length&&this.forceOptionsToReflectData()}selectOption(){0===this.filteredOptions.length?this.addCustomOption():(this.triggerSelection(this.filteredOptions[0]),this.resetFilter())}addCustomOption(){this.isCreatable()&&(this.addOption(this.filter.value),this.resetFilter())}isCreatable(){return this.customBadges&&this.filter.valid&&this.filter.value.length>0&&this.filteredOptions.every(t=>t.name!==this.filter.value)}resetFilter(){this.filter.setValue(""),this.updateFilter()}removeItem(t){this.triggerSelection(this.options.find(e=>e.name===t&&e.selected))}}},woSy:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return t.prototype.onDrop=function(t){this.node.mouseAction("drop",t.event,{from:t.element,to:{parent:this.node,index:this.dropIndex}})},t.prototype.allowDrop=function(t,e){return this.node.options.allowDrop(t,{parent:this.node,index:this.dropIndex},e)},i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"dropIndex",void 0),i([Object(a.Component)({selector:"TreeNodeDropSlot, tree-node-drop-slot",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <div\n      class="node-drop-slot"\n      (treeDrop)="onDrop($event)"\n      [treeAllowDrop]="allowDrop.bind(this)"\n      [allowDragoverStyling]="true">\n    </div>\n  '})],t)}()},x38r:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t.bold="bold",t.sparkline="sparkline",t.perSecond="perSecond",t.checkIcon="checkIcon",t.routerLink="routerLink",t.executing="executing",t.classAdding="classAdding",t.badge="badge",t.map="map",t.truncate="truncate",t}({})},x3F9:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},x6pH:function(t,e,n){!function(t){"use strict";t.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(t){return 2===t?"שעתיים":t+" שעות"},d:"יום",dd:function(t){return 2===t?"יומיים":t+" ימים"},M:"חודש",MM:function(t){return 2===t?"חודשיים":t+" חודשים"},y:"שנה",yy:function(t){return 2===t?"שנתיים":t%10==0&&10!==t?t+" שנה":t+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(t){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(t)},meridiem:function(t,e,n){return t<5?"לפנות בוקר":t<10?"בבוקר":t<12?n?'לפנה"צ':"לפני הצהריים":t<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("wd/R"))},xAZD:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}},xDBR:function(t,e){t.exports=!1},xOlK:function(t,e,n){var a=n("77kF"),r=n("FGWQ");t.exports=function(t,e){return t&&a(e,r(e),t)}},xSw7:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("Fgil"),i=n("aXbf"),s=n("o4+5"),u=n("SVse"),o=n("978R"),l=n("z/SZ"),d=n("2uy1");n("GgAd"),n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return h}));var c=a["ɵcrt"]({encapsulation:0,styles:[[".bg-info[_ngcontent-%COMP%]{background-color:#2b99a8!important}.bg-freespace[_ngcontent-%COMP%]{background-color:#d1d1d1!important}.progress[_ngcontent-%COMP%]{height:20px;position:relative;margin-bottom:0}.progress[_ngcontent-%COMP%]   div.progress-bar[_ngcontent-%COMP%]{position:static}.progress[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{position:absolute;display:block;width:100%;color:#000;font-weight:400}"]],data:{}});function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"table",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Used: "])),(t()(),a["ɵeld"](4,0,null,null,4,"td",[["class","text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,3,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,[" ",""])),a["ɵppd"](7,1),a["ɵppd"](8,1),(t()(),a["ɵeld"](9,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](10,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Free: "])),(t()(),a["ɵeld"](12,0,null,null,4,"td",[["class","'text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](13,0,null,null,3,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](14,null,["",""])),a["ɵppd"](15,1),a["ɵppd"](16,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,6,0,n.isBinary?t(e,7,0,a["ɵnov"](e.parent,0),n.used):t(e,8,0,a["ɵnov"](e.parent,1),n.used));t(e,6,0,r);var i=a["ɵunv"](e,14,0,n.isBinary?t(e,15,0,a["ɵnov"](e.parent,0),n.total-n.used):t(e,16,0,a["ɵnov"](e.parent,1),n.total-n.used));t(e,14,0,i)}))}function h(t){return a["ɵvid"](0,[a["ɵpid"](0,r.a,[i.a]),a["ɵpid"](0,s.a,[i.a]),a["ɵpid"](0,u.DecimalPipe,[a.LOCALE_ID]),(t()(),a["ɵand"](0,[["usageTooltipTpl",2]],null,0,null,f)),(t()(),a["ɵeld"](4,16777216,null,null,6,"div",[["class","progress"],["data-placement","left"]],null,null,null,null,null)),a["ɵdid"](5,212992,null,0,o.c,[a.ViewContainerRef,l.a,o.a,a.ElementRef,a.Renderer2,d.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"div",[["class","progress-bar bg-info"],["role","progressbar"]],[[4,"width",null]],null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](8,null,["","%"])),a["ɵppd"](9,2),(t()(),a["ɵeld"](10,0,null,null,0,"div",[["class","progress-bar bg-freespace"],["role","progressbar"]],[[4,"width",null]],null,null,null,null))],(function(t,e){t(e,5,0,a["ɵnov"](e,3),"left")}),(function(t,e){var n=e.component;t(e,6,0,n.usedPercentage+"%");var r=a["ɵunv"](e,8,0,t(e,9,0,a["ɵnov"](e,2),n.usedPercentage,"1.0-"+n.decimals));t(e,8,0,r),t(e,10,0,n.freePercentage+"%")}))}},xT5m:function(t,e,n){var a=n("SQuY"),r=n("7Igq"),i=n("jy8Y");function s(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new a;++e<n;)this.add(t[e])}s.prototype.add=s.prototype.push=r,s.prototype.has=i,t.exports=s},xTzq:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("LvDl");function r(...t){switch(t.length){case 1:return s.apply(void 0,t);case 3:return u.apply(void 0,t);default:throw new Error}}function i(t,e,n){const a="__ignore_"+e;Array.isArray(t[a])?t[a].push(n):t[a]=[n]}function s(t){for(const e of Object.getOwnPropertyNames(t.prototype)){const n=Object.getOwnPropertyDescriptor(t.prototype,e),a="constructor"===e;n.value instanceof Function&&!a&&(u(t.prototype,e,n),Object.defineProperty(t.prototype,e,n))}}function u(t,e,n){void 0===n&&(n=Object.getOwnPropertyDescriptor(t,e));const r=n.value;n.value=function(){const n="__ignore_"+e,i=t[n]||[],s=[];for(let t=0;t<arguments.length;t++)s[t]=a.isString(arguments[t])&&-1===i.indexOf(t)?encodeURIComponent(arguments[t]):arguments[t];const u=r.apply(this,s);return u}}},xbPD:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t=null){return e=>e.lift(new i(t))}class i{constructor(t){this.defaultValue=t}call(t,e){return e.subscribe(new s(t,this.defaultValue))}}class s extends a.a{constructor(t,e){super(t),this.defaultValue=e,this.isEmpty=!0}_next(t){this.isEmpty=!1,this.destination.next(t)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}},xdB7:function(t,e,n){var a=n("bX23"),r=n("l9nr"),i=n("H+zY"),s=Math.max;t.exports=function(t,e,n){var u=null==t?0:t.length;if(!u)return-1;var o=null==n?0:i(n);return o<0&&(o=s(u+o,0)),a(t,r(e,3),o)}},xgIS:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("HDdC"),r=n("DH7j"),i=n("n6bG"),s=n("lJxs");function u(t,e,n,o){return Object(i.a)(n)&&(o=n,n=void 0),o?u(t,e,n).pipe(Object(s.a)(t=>Object(r.a)(t)?o(...t):o(t))):new a.a(a=>{!function t(e,n,a,r,i){let s;if(function(t){return t&&"function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener}(e)){const t=e;e.addEventListener(n,a,i),s=()=>t.removeEventListener(n,a,i)}else if(function(t){return t&&"function"==typeof t.on&&"function"==typeof t.off}(e)){const t=e;e.on(n,a),s=()=>t.off(n,a)}else if(function(t){return t&&"function"==typeof t.addListener&&"function"==typeof t.removeListener}(e)){const t=e;e.addListener(n,a),s=()=>t.removeListener(n,a)}else{if(!e||!e.length)throw new TypeError("Invalid event target");for(let s=0,u=e.length;s<u;s++)t(e[s],n,a,r,i)}r.add(s)}(t,e,(function(t){a.next(arguments.length>1?Array.prototype.slice.call(arguments):t)}),a,n)})}},"xj/R":function(t,e,n){"use strict";function a(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function r(t){return"string"==typeof t}function i(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t){return t&&t.getTime&&!isNaN(t.getTime())}function u(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function o(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function f(t){return void 0===t}function h(t){const e=+t;let n=0;return 0!==e&&isFinite(e)&&(n=a(e)),n}n.d(e,"a",(function(){return Je})),n.d(e,"b",(function(){return Qe})),n.d(e,"c",(function(){return Qt})),n.d(e,"d",(function(){return Tt})),n.d(e,"e",(function(){return an})),n.d(e,"f",(function(){return _e})),n.d(e,"g",(function(){return rn})),n.d(e,"h",(function(){return R})),n.d(e,"i",(function(){return L})),n.d(e,"j",(function(){return E})),n.d(e,"k",(function(){return Xt})),n.d(e,"l",(function(){return k})),n.d(e,"m",(function(){return sn})),n.d(e,"n",(function(){return Ae})),n.d(e,"o",(function(){return l})),n.d(e,"p",(function(){return ke})),n.d(e,"q",(function(){return i})),n.d(e,"r",(function(){return s})),n.d(e,"s",(function(){return Ee})),n.d(e,"t",(function(){return D})),n.d(e,"u",(function(){return Le})),n.d(e,"v",(function(){return q})),n.d(e,"w",(function(){return P})),n.d(e,"x",(function(){return M})),n.d(e,"y",(function(){return un})),n.d(e,"z",(function(){return on})),n.d(e,"A",(function(){return ln})),n.d(e,"B",(function(){return Ne})),n.d(e,"C",(function(){return gn})),n.d(e,"D",(function(){return pn})),n.d(e,"E",(function(){return bt})),n.d(e,"F",(function(){return pt})),n.d(e,"G",(function(){return _t})),n.d(e,"H",(function(){return Ce})),n.d(e,"I",(function(){return bn}));const g={},p={date:"day",hour:"hours",minute:"minutes",second:"seconds",millisecond:"milliseconds"};function b(t,e){const n=t.toLowerCase();let a=t;n in p&&(a=p[n]),g[n]=g[n+"s"]=g[e]=a}function m(t){return r(t)?g[t]||g[t.toLowerCase()]:void 0}function y(t,e,n){const a=""+Math.abs(t);return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-a.length)).toString().substr(1)+a}let v={},x={};const _=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;function T(t,e,n,a){t&&(x[t]=a),e&&(x[e[0]]=function(){return y(a.apply(null,arguments),e[1],e[2])}),n&&(x[n]=function(e,n){return n.locale.ordinal(a.apply(null,arguments),t)})}function w(t,e,n){const a=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(t),a}function O(t,e=0,n=1,a=0,r=0,i=0,s=0){const u=new Date(t,e,n,a,r,i,s);return t<100&&t>=0&&isFinite(u.getFullYear())&&u.setFullYear(t),u}function S(t,e=!1){return e?t.getUTCHours():t.getHours()}function I(t,e=!1){return e?t.getUTCMinutes():t.getMinutes()}function N(t,e=!1){return e?t.getUTCSeconds():t.getSeconds()}function C(t,e=!1){return e?t.getUTCMilliseconds():t.getMilliseconds()}function R(t,e=!1){return e?t.getUTCDay():t.getDay()}function A(t,e=!1){return e?t.getUTCDate():t.getDate()}function k(t,e=!1){return e?t.getUTCMonth():t.getMonth()}function E(t,e=!1){return e?t.getUTCFullYear():t.getFullYear()}function L(t){return O(t.getFullYear(),t.getMonth(),1,t.getHours(),t.getMinutes(),t.getSeconds())}function D(t,e){return t.getDay()===e}function P(t,e){return!(!t||!e)&&M(t,e)&&k(t)===k(e)}function M(t,e){return!(!t||!e)&&E(t)===E(e)}function q(t,e){return!(!t||!e)&&M(t,e)&&P(t,e)&&A(t)===A(e)}const j=/\d/,F=/\d\d/,V=/\d{3}/,G=/\d{4}/,B=/[+-]?\d{6}/,z=/\d\d?/,Y=/\d\d\d\d?/,H=/\d\d\d\d\d\d?/,U=/\d{1,3}/,W=/\d{1,4}/,K=/[+-]?\d{1,6}/,$=/\d+/,J=/[+-]?\d+/,Z=/Z|[+-]\d\d(?::?\d\d)?/gi,Q=/[+-]?\d+(\.\d{1,3})?/,X=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,tt={};function et(t,e,n){tt[t]=u(e)?e:function(t,a){return t&&n?n:e}}function nt(t,e){return d(tt,t)?tt[t](!1,e):new RegExp(at(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(t,e,n,a,r)=>e||n||a||r)))}function at(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}const rt={};function it(t,e){const n=r(t)?[t]:t;let a=e;if(o(e)&&(a=function(t,n,a){return n[e]=h(t),a}),l(n)&&u(a)){let t;for(t=0;t<n.length;t++)rt[n[t]]=a}}function st(t,e){it(t,(function(t,n,a,r){return a._w=a._w||{},e(t,a._w,a,r)}))}function ut(t,e,n){return null!=e&&d(rt,t)&&rt[t](e,n._a,n,t),n}function ot(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function lt(t,e){return E(t,e.isUTC).toString()}function dt(t){return h(t)+(h(t)>68?1900:2e3)}function ct(t){return ft(t)?366:365}function ft(t){return t%4==0&&t%100!=0||t%400==0}function ht(t,e){if(isNaN(t)||isNaN(e))return NaN;const n=(e%12+12)%12;return 1===n?ft(t+(e-n)/12)?29:28:31-n%7%2}const gt={year:0,month:0,day:0,hour:0,minute:0,seconds:0};function pt(t,e){const n=Object.assign({},gt,e),a=t.getFullYear()+(n.year||0),r=t.getMonth()+(n.month||0);let i=t.getDate()+(n.day||0);return n.month&&!n.day&&(i=Math.min(i,ht(a,r))),O(a,r,i,t.getHours()+(n.hour||0),t.getMinutes()+(n.minute||0),t.getSeconds()+(n.seconds||0))}function bt(t,e){return O(mt(t.getFullYear(),e.year),mt(t.getMonth(),e.month),1,mt(t.getHours(),e.hour),mt(t.getMinutes(),e.minute),mt(t.getSeconds(),e.seconds),mt(t.getMilliseconds(),e.milliseconds))}function mt(t,e){return o(e)?e:t}function yt(t,e,n){const a=Math.min(A(t),ht(E(t),e));return n?t.setUTCMonth(e,a):t.setMonth(e,a),t}function vt(t,e,n){return n?t.setUTCDate(e):t.setDate(e),t}function xt(t){return new Date(t.getTime())}function _t(t,e,n){const a=xt(t);switch(e){case"year":yt(a,0,n);case"quarter":case"month":vt(a,1,n);case"week":case"isoWeek":case"day":case"date":!function(t,e,n){n?t.setUTCHours(0):t.setHours(0)}(a,0,n);case"hours":!function(t,e,n){n?t.setUTCMinutes(0):t.setMinutes(0)}(a,0,n);case"minutes":!function(t,e,n){n?t.setUTCSeconds(0):t.setSeconds(0)}(a,0,n);case"seconds":!function(t,e,n){n?t.setUTCMilliseconds(0):t.setMilliseconds(0)}(a,0,n)}return"week"===e&&function(t,e,n={}){Fe(t,0-ze(t,n.locale,n.isUTC),"day")}(a,0,{isUTC:n}),"isoWeek"===e&&function(t,e,n={}){const a=function(t,e=Xt()){return r(t)?e.weekdaysParse(t)%7||7:o(t)&&isNaN(t)?null:t}(1,n.locale);Ge(t,Be(t)%7?a:a-7)}(a),"quarter"===e&&yt(a,3*Math.floor(k(a,n)/3),n),a}function Tt(t,e,n){let a=e;return"date"===a&&(a="day"),function(t,e,n,a){return Ve(t,Me(1,"milliseconds"),-1,a)}(Fe(_t(t,a,n),1,"isoWeek"===a?"week":a,n),0,0,n)}function wt(t,e){const n=+_t(t,"day",e),a=+_t(t,"year",e);return Math.round((n-a)/864e5)+1}function Ot(t,e,n){const a=e-n+7;return-(w(t,0,a).getUTCDay()-e+7)%7+a-1}function St(t,e,n,a){const r=Ot(E(t,a),e,n),i=Math.floor((wt(t,a)-r-1)/7)+1;let s,u;return i<1?(u=E(t,a)-1,s=i+It(u,e,n)):i>It(E(t,a),e,n)?(s=i-It(E(t,a),e,n),u=E(t,a)+1):(u=E(t,a),s=i),{week:s,year:u}}function It(t,e,n){const a=Ot(t,e,n),r=Ot(t+1,e,n);return(ct(t)-a+r)/7}const Nt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ct="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Rt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),At="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),kt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Et="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Lt={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Dt=X,Pt=X;class Mt{constructor(t){t&&this.set(t)}set(t){let e;for(e in t){if(!t.hasOwnProperty(e))continue;const n=t[e];this[u(n)?e:"_"+e]=n}this._config=t}calendar(t,e,n){const a=this._calendar[t]||this._calendar.sameElse;return u(a)?a.call(null,e,n):a}longDateFormat(t){const e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])}get invalidDate(){return this._invalidDate}set invalidDate(t){this._invalidDate=t}ordinal(t,e){return this._ordinal.replace("%d",t.toString(10))}preparse(t){return t}preinput(t){return t}postvalue(t){return t}postformat(t){return t}relativeTime(t,e,n,a){const r=this._relativeTime[n];return u(r)?r(t,e,n,a):r.replace(/%d/i,t.toString(10))}pastFuture(t,e){const n=this._relativeTime[t>0?"future":"past"];return u(n)?n(e):n.replace(/%s/i,e)}months(t,e,n=!1){if(!t)return l(this._months)?this._months:this._months.standalone;if(l(this._months))return this._months[k(t,n)];const a=(this._months.isFormat||Nt).test(e)?"format":"standalone";return this._months[a][k(t,n)]}monthsShort(t,e,n=!1){if(!t)return l(this._monthsShort)?this._monthsShort:this._monthsShort.standalone;if(l(this._monthsShort))return this._monthsShort[k(t,n)];const a=Nt.test(e)?"format":"standalone";return this._monthsShort[a][k(t,n)]}monthsParse(t,e,n){let a,r,i;if(this._monthsParseExact)return this.handleMonthStrictParse(t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=new Date(Date.UTC(2e3,i)),n&&!this._longMonthsParse[i]){const t=this.months(a,"",!0).replace(".",""),e=this.monthsShort(a,"",!0).replace(".","");this._longMonthsParse[i]=new RegExp(`^${t}$`,"i"),this._shortMonthsParse[i]=new RegExp(`^${e}$`,"i")}if(n||this._monthsParse[i]||(r=`^${this.months(a,"",!0)}|^${this.monthsShort(a,"",!0)}`,this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[i].test(t))return i;if(n&&"MMM"===e&&this._shortMonthsParse[i].test(t))return i;if(!n&&this._monthsParse[i].test(t))return i}}monthsRegex(t){return this._monthsParseExact?(d(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=Pt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)}monthsShortRegex(t){return this._monthsParseExact?(d(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Dt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)}week(t,e){return St(t,this._week.dow,this._week.doy,e).week}firstDayOfWeek(){return this._week.dow}firstDayOfYear(){return this._week.doy}weekdays(t,e,n){if(!t)return l(this._weekdays)?this._weekdays:this._weekdays.standalone;if(l(this._weekdays))return this._weekdays[R(t,n)];const a=this._weekdays.isFormat.test(e)?"format":"standalone";return this._weekdays[a][R(t,n)]}weekdaysMin(t,e,n){return t?this._weekdaysMin[R(t,n)]:this._weekdaysMin}weekdaysShort(t,e,n){return t?this._weekdaysShort[R(t,n)]:this._weekdaysShort}weekdaysParse(t,e,n){let a,r;if(this._weekdaysParseExact)return this.handleWeekStrictParse(t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){const i=Ge(new Date(Date.UTC(2e3,1)),a,null,!0);if(n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp(`^${this.weekdays(i,"",!0).replace(".",".?")}$`,"i"),this._shortWeekdaysParse[a]=new RegExp(`^${this.weekdaysShort(i,"",!0).replace(".",".?")}$`,"i"),this._minWeekdaysParse[a]=new RegExp(`^${this.weekdaysMin(i,"",!0).replace(".",".?")}$`,"i")),this._weekdaysParse[a]||(r=`^${this.weekdays(i,"",!0)}|^${this.weekdaysShort(i,"",!0)}|^${this.weekdaysMin(i,"",!0)}`,this._weekdaysParse[a]=new RegExp(r.replace(".",""),"i")),!(l(this._fullWeekdaysParse)&&l(this._shortWeekdaysParse)&&l(this._minWeekdaysParse)&&l(this._weekdaysParse)))return;if(n&&"dddd"===e&&this._fullWeekdaysParse[a].test(t))return a;if(n&&"ddd"===e&&this._shortWeekdaysParse[a].test(t))return a;if(n&&"dd"===e&&this._minWeekdaysParse[a].test(t))return a;if(!n&&this._weekdaysParse[a].test(t))return a}}weekdaysRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=X),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}weekdaysShortRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=X),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}weekdaysMinRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=X),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}isPM(t){return"p"===t.toLowerCase().charAt(0)}meridiem(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}formatLongDate(t){this._longDateFormat=this._longDateFormat?this._longDateFormat:Lt;const e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,t=>t.slice(1)),this._longDateFormat[t])}handleMonthStrictParse(t,e,n){const a=t.toLocaleLowerCase();let r,i,s;if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)s=new Date(2e3,r),this._shortMonthsParse[r]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(s,"").toLocaleLowerCase();return n?"MMM"===e?(i=this._shortMonthsParse.indexOf(a),-1!==i?i:null):(i=this._longMonthsParse.indexOf(a),-1!==i?i:null):"MMM"===e?(i=this._shortMonthsParse.indexOf(a),-1!==i?i:(i=this._longMonthsParse.indexOf(a),-1!==i?i:null)):(i=this._longMonthsParse.indexOf(a),-1!==i?i:(i=this._shortMonthsParse.indexOf(a),-1!==i?i:null))}handleWeekStrictParse(t,e,n){let a;const r=t.toLocaleLowerCase();if(!this._weekdaysParse){let t;for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],t=0;t<7;++t){const e=Ge(new Date(Date.UTC(2e3,1)),t,null,!0);this._minWeekdaysParse[t]=this.weekdaysMin(e).toLocaleLowerCase(),this._shortWeekdaysParse[t]=this.weekdaysShort(e).toLocaleLowerCase(),this._weekdaysParse[t]=this.weekdays(e,"").toLocaleLowerCase()}}if(l(this._weekdaysParse)&&l(this._shortWeekdaysParse)&&l(this._minWeekdaysParse))return n?"dddd"===e?(a=this._weekdaysParse.indexOf(r),-1!==a?a:null):"ddd"===e?(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:null):(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null):"dddd"===e?(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null))):"ddd"===e?(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null))):(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:null)))}computeMonthsParse(){const t=[],e=[],n=[];let a,r;for(r=0;r<12;r++)a=new Date(2e3,r),t.push(this.monthsShort(a,"")),e.push(this.months(a,"")),n.push(this.months(a,"")),n.push(this.monthsShort(a,""));for(t.sort(qt),e.sort(qt),n.sort(qt),r=0;r<12;r++)t[r]=at(t[r]),e[r]=at(e[r]);for(r=0;r<24;r++)n[r]=at(n[r]);this._monthsRegex=new RegExp(`^(${n.join("|")})`,"i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(`^(${e.join("|")})`,"i"),this._monthsShortStrictRegex=new RegExp(`^(${t.join("|")})`,"i")}computeWeekdaysParse(){const t=[],e=[],n=[],a=[];let r;for(r=0;r<7;r++){const i=Ge(new Date(Date.UTC(2e3,1)),r,null,!0),s=this.weekdaysMin(i),u=this.weekdaysShort(i),o=this.weekdays(i);t.push(s),e.push(u),n.push(o),a.push(s),a.push(u),a.push(o)}for(t.sort(qt),e.sort(qt),n.sort(qt),a.sort(qt),r=0;r<7;r++)e[r]=at(e[r]),n[r]=at(n[r]),a[r]=at(a[r]);this._weekdaysRegex=new RegExp(`^(${a.join("|")})`,"i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(`^(${n.join("|")})`,"i"),this._weekdaysShortStrictRegex=new RegExp(`^(${e.join("|")})`,"i"),this._weekdaysMinStrictRegex=new RegExp(`^(${t.join("|")})`,"i")}}function qt(t,e){return e.length-t.length}const jt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:Lt,invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ct,monthsShort:Rt,week:{dow:0,doy:6},weekdays:At,weekdaysMin:Et,weekdaysShort:kt,meridiemParse:/[ap]\.?m?\.?/i};function Ft(t,e,n){const a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length);let i,s=0;for(i=0;i<a;i++)(n&&t[i]!==e[i]||!n&&h(t[i])!==h(e[i]))&&s++;return s+r}function Vt(t,e){T(null,[t,t.length,!1],null,e)}function Gt(t,e){return zt(t,e.locale).toString()}function Bt(t){return Yt(t).toString()}function zt(t,e=Xt(),n){return St(t,e.firstDayOfWeek(),e.firstDayOfYear(),n).year}function Yt(t,e){return St(t,1,4,e).year}function Ht(t,e){T(t,null,null,(function(t,n){let a=function(t,e={}){return e._isUTC?e._offset||0:function(t){return 15*-Math.round(t.getTimezoneOffset()/15)}(t)}(t,{_isUTC:n.isUTC,_offset:n.offset}),r="+";return a<0&&(a=-a,r="-"),r+y(~~(a/60),2)+e+y(~~a%60,2)}))}const Ut=/([\+\-]|\d\d)/gi,Wt={},Kt={};let $t;function Jt(t){return t?t.toLowerCase().replace("_","-"):t}function Zt(t,e){let n;return t&&(f(e)?n=Xt(t):r(t)&&(n=Qt(t,e)),n&&($t=n)),$t&&$t._abbr}function Qt(t,e){if(null===e)return delete Wt[t],$t=Xt("en"),null;if(!e)return;let n=jt;if(e.abbr=t,null!=e.parentLocale){if(null==Wt[e.parentLocale])return Kt[e.parentLocale]||(Kt[e.parentLocale]=[]),Kt[e.parentLocale].push({name:t,config:e}),null;n=Wt[e.parentLocale]._config}return Wt[t]=new Mt(function(t,e){const n=Object.assign({},t);for(const a in e)d(e,a)&&(c(t[a])&&c(e[a])?(n[a]={},Object.assign(n[a],t[a]),Object.assign(n[a],e[a])):null!=e[a]?n[a]=e[a]:delete n[a]);for(const a in t)d(t,a)&&!d(e,a)&&c(t[a])&&(n[a]=Object.assign({},n[a]));return n}(n,e)),Kt[t]&&Kt[t].forEach((function(t){Qt(t.name,t.config)})),Zt(t),Wt[t]}function Xt(t){return Wt.en||(Zt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal(t){const e=t%10;return t+(1===h(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),T("w",["ww",2,!1],"wo",(function(t,e){return function(t,e=Xt(),n){return e.week(t,void 0)}(t,e.locale).toString(10)})),T("W",["WW",2,!1],"Wo",(function(t){return function(t,e){return St(t,1,4,void 0).week}(t).toString(10)})),b("week","w"),b("isoWeek","W"),et("w",z),et("ww",z,F),et("W",z),et("WW",z,F),st(["w","ww","W","WW"],(function(t,e,n,a){return e[a.substr(0,1)]=h(t),n})),T(null,["gg",2,!1],null,(function(t,e){return(zt(t,e.locale)%100).toString()})),T(null,["GG",2,!1],null,(function(t){return(Yt(t)%100).toString()})),Vt("gggg",Gt),Vt("ggggg",Gt),Vt("GGGG",Bt),Vt("GGGGG",Bt),b("weekYear","gg"),b("isoWeekYear","GG"),et("G",J),et("g",J),et("GG",z,F),et("gg",z,F),et("GGGG",W,G),et("gggg",W,G),et("GGGGG",K,B),et("ggggg",K,B),st(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,a){return e[a.substr(0,2)]=h(t),n})),st(["gg","GG"],(function(t,e,n,a){return e[a]=dt(t),n})),T("Y",null,null,(function(t,e){const n=E(t,e.isUTC);return n<=9999?n.toString(10):"+"+n})),T(null,["YY",2,!1],null,(function(t,e){return(E(t,e.isUTC)%100).toString(10)})),T(null,["YYYY",4,!1],null,lt),T(null,["YYYYY",5,!1],null,lt),T(null,["YYYYYY",6,!0],null,lt),b("year","y"),et("Y",J),et("YY",z,F),et("YYYY",W,G),et("YYYYY",K,B),et("YYYYYY",K,B),it(["YYYYY","YYYYYY"],0),it("YYYY",(function(t,e,n){return e[0]=2===t.length?dt(t):h(t),n})),it("YY",(function(t,e,n){return e[0]=dt(t),n})),it("Y",(function(t,e,n){return e[0]=parseInt(t,10),n})),T("z",null,null,(function(t,e){return e.isUTC?"UTC":""})),T("zz",null,null,(function(t,e){return e.isUTC?"Coordinated Universal Time":""})),T("X",null,null,(function(t){return function(t){return Math.floor(t.valueOf()/1e3)}(t).toString(10)})),T("x",null,null,(function(t){return t.valueOf().toString(10)})),et("x",J),et("X",Q),it("X",(function(t,e,n){return n._d=new Date(1e3*parseFloat(t)),n})),it("x",(function(t,e,n){return n._d=new Date(h(t)),n})),T("s",["ss",2,!1],null,(function(t,e){return N(t,e.isUTC).toString(10)})),b("second","s"),et("s",z),et("ss",z,F),it(["s","ss"],5),T("Q",null,"Qo",(function(t,e){return function(t,e=!1){return Math.ceil((k(t,e)+1)/3)}(t,e.isUTC).toString(10)})),b("quarter","Q"),et("Q",j),it("Q",(function(t,e,n){return e[1]=3*(h(t)-1),n})),Ht("Z",":"),Ht("ZZ",""),et("Z",Z),et("ZZ",Z),it(["Z","ZZ"],(function(t,e,n){return n._useUTC=!0,n._tzm=function(t,e){const n=(e||"").match(t);if(null===n)return null;const a=n[n.length-1].match(Ut)||["-","0","0"],r=60*parseInt(a[1],10)+h(a[2]);return 0===r?0:"+"===a[0]?r:-r}(Z,t),n})),T("M",["MM",2,!1],"Mo",(function(t,e){return(k(t,e.isUTC)+1).toString(10)})),T("MMM",null,null,(function(t,e){return e.locale.monthsShort(t,e.format,e.isUTC)})),T("MMMM",null,null,(function(t,e){return e.locale.months(t,e.format,e.isUTC)})),b("month","M"),et("M",z),et("MM",z,F),et("MMM",(function(t,e){return e.monthsShortRegex(t)})),et("MMMM",(function(t,e){return e.monthsRegex(t)})),it(["M","MM"],(function(t,e,n){return e[1]=h(t)-1,n})),it(["MMM","MMMM"],(function(t,e,n,a){const r=n._locale.monthsParse(t,a,n._strict);return null!=r?e[1]=r:ot(n).invalidMonth=!!t,n})),T("m",["mm",2,!1],null,(function(t,e){return I(t,e.isUTC).toString(10)})),b("minute","m"),et("m",z),et("mm",z,F),it(["m","mm"],4),function(){let t;for(T("S",null,null,(function(t,e){return(~~(C(t,e.isUTC)/100)).toString(10)})),T(null,["SS",2,!1],null,(function(t,e){return(~~(C(t,e.isUTC)/10)).toString(10)})),T(null,["SSS",3,!1],null,(function(t,e){return C(t,e.isUTC).toString(10)})),T(null,["SSSS",4,!1],null,(function(t,e){return(10*C(t,e.isUTC)).toString(10)})),T(null,["SSSSS",5,!1],null,(function(t,e){return(100*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSS",6,!1],null,(function(t,e){return(1e3*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSS",7,!1],null,(function(t,e){return(1e4*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSSS",8,!1],null,(function(t,e){return(1e5*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSSSS",9,!1],null,(function(t,e){return(1e6*C(t,e.isUTC)).toString(10)})),b("millisecond","ms"),et("S",U,j),et("SS",U,F),et("SSS",U,V),t="SSSS";t.length<=9;t+="S")et(t,$);function e(t,e,n){return e[6]=h(1e3*parseFloat("0."+t)),n}for(t="S";t.length<=9;t+="S")it(t,e)}(),function(){function t(t,e){return S(t,e)%12||12}function e(t,e){T(t,null,null,(function(t,n){return n.locale.meridiem(S(t,n.isUTC),I(t,n.isUTC),e)}))}function n(t,e){return e._meridiemParse}T("H",["HH",2,!1],null,(function(t,e){return S(t,e.isUTC).toString(10)})),T("h",["hh",2,!1],null,(function(e,n){return t(e,n.isUTC).toString(10)})),T("k",["kk",2,!1],null,(function(t,e){return function(t,e){return S(t,e)||24}(t,e.isUTC).toString(10)})),T("hmm",null,null,(function(e,n){return`${t(e,n.isUTC)}${y(I(e,n.isUTC),2)}`})),T("hmmss",null,null,(function(e,n){return`${t(e,n.isUTC)}${y(I(e,n.isUTC),2)}${y(N(e,n.isUTC),2)}`})),T("Hmm",null,null,(function(t,e){return`${S(t,e.isUTC)}${y(I(t,e.isUTC),2)}`})),T("Hmmss",null,null,(function(t,e){return`${S(t,e.isUTC)}${y(I(t,e.isUTC),2)}${y(N(t,e.isUTC),2)}`})),e("a",!0),e("A",!1),b("hour","h"),et("a",n),et("A",n),et("H",z),et("h",z),et("k",z),et("HH",z,F),et("hh",z,F),et("kk",z,F),et("hmm",Y),et("hmmss",H),et("Hmm",Y),et("Hmmss",H),it(["H","HH"],3),it(["k","kk"],(function(t,e,n){const a=h(t);return e[3]=24===a?0:a,n})),it(["a","A"],(function(t,e,n){return n._isPm=n._locale.isPM(t),n._meridiem=t,n})),it(["h","hh"],(function(t,e,n){return e[3]=h(t),ot(n).bigHour=!0,n})),it("hmm",(function(t,e,n){const a=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a)),ot(n).bigHour=!0,n})),it("hmmss",(function(t,e,n){const a=t.length-4,r=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a,2)),e[5]=h(t.substr(r)),ot(n).bigHour=!0,n})),it("Hmm",(function(t,e,n){const a=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a)),n})),it("Hmmss",(function(t,e,n){const a=t.length-4,r=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a,2)),e[5]=h(t.substr(r)),n}))}(),T("DDD",["DDDD",3,!1],"DDDo",(function(t){return wt(t).toString(10)})),b("dayOfYear","DDD"),et("DDD",U),et("DDDD",V),it(["DDD","DDDD"],(function(t,e,n){return n._dayOfYear=h(t),n})),T("d",null,"do",(function(t,e){return R(t,e.isUTC).toString(10)})),T("dd",null,null,(function(t,e){return e.locale.weekdaysMin(t,e.format,e.isUTC)})),T("ddd",null,null,(function(t,e){return e.locale.weekdaysShort(t,e.format,e.isUTC)})),T("dddd",null,null,(function(t,e){return e.locale.weekdays(t,e.format,e.isUTC)})),T("e",null,null,(function(t,e){return ze(t,e.locale,e.isUTC).toString(10)})),T("E",null,null,(function(t,e){return function(t,e){return R(t,e)||7}(t,e.isUTC).toString(10)})),b("day","d"),b("weekday","e"),b("isoWeekday","E"),et("d",z),et("e",z),et("E",z),et("dd",(function(t,e){return e.weekdaysMinRegex(t)})),et("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),et("dddd",(function(t,e){return e.weekdaysRegex(t)})),st(["dd","ddd","dddd"],(function(t,e,n,a){const r=n._locale.weekdaysParse(t,a,n._strict);return null!=r?e.d=r:ot(n).invalidWeekday=!!t,n})),st(["d","e","E"],(function(t,e,n,a){return e[a]=h(t),n})),T("D",["DD",2,!1],"Do",(function(t,e){return A(t,e.isUTC).toString(10)})),b("date","D"),et("D",z),et("DD",z,F),et("Do",(function(t,e){return e._dayOfMonthOrdinalParse||e._ordinalParse})),it(["D","DD"],2),it("Do",(function(t,e,n){return e[2]=h(t.match(z)[0]),n}))),t?function(t){let e,n,a=0;for(;a<t.length;){const i=Jt(t[a]).split("-");let s=i.length;for(e=Jt(t[a+1]),e=e?e.split("-"):null;s>0;){if(r=i.slice(0,s).join("-"),Wt[r]||console.error(`Khronos locale error: please load locale "${r}" before using it`),n=Wt[r],n)return n;if(e&&e.length>=s&&Ft(i,e,!0)>=s-1)break;s--}a++}var r;return null}(l(t)?t:[t]):$t}const te=["year","quarter","month","week","day","hours","minutes","seconds","milliseconds"],ee=te.reduce((t,e)=>(t[e]=!0,t),{});function ne(t){return t<0?Math.floor(t):Math.ceil(t)}function ae(t){return 4800*t/146097}function re(t){return 146097*t/4800}let ie=Math.round;function se(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}class ue{constructor(t,e={}){this._data={},this._locale=Xt(),this._locale=e&&e._locale||Xt();const n=t.year||0,r=t.quarter||0,i=t.month||0,s=t.week||0,u=t.day||0,o=t.hours||0,l=t.minutes||0,d=t.seconds||0,c=t.milliseconds||0;return this._isValid=function(t){if(Object.keys(t).some(e=>e in ee&&null===t[e]||isNaN(t[e])))return!1;let e=!1;for(let n=0;n<te.length;++n)if(t[te[n]]){if(e)return!1;t[te[n]]!==h(t[te[n]])&&(e=!0)}return!0}(t),this._milliseconds=+c+1e3*d+60*l*1e3+1e3*o*60*60,this._days=+u+7*s,this._months=+i+3*r+12*n,function(t){let e=t._milliseconds,n=t._days,r=t._months;const i=t._data;e>=0&&n>=0&&r>=0||e<=0&&n<=0&&r<=0||(e+=864e5*ne(re(r)+n),n=0,r=0),i.milliseconds=e%1e3;const s=a(e/1e3);i.seconds=s%60;const u=a(s/60);i.minutes=u%60;const o=a(u/60);i.hours=o%24,n+=a(o/24);const l=a(ae(n));r+=l,n-=ne(re(l));const d=a(r/12);return r%=12,i.day=n,i.month=r,i.year=d,t}(this)}isValid(){return this._isValid}humanize(t){if(!this.isValid())return this.localeData().invalidDate;const e=this.localeData();let n=function(t,e,n){const a=Me(t).abs(),r=ie(a.as("s")),i=ie(a.as("m")),s=ie(a.as("h")),u=ie(a.as("d")),o=ie(a.as("M")),l=ie(a.as("y")),d=r<=44&&["s",r]||r<45&&["ss",r]||i<=1&&["m"]||i<45&&["mm",i]||s<=1&&["h"]||s<22&&["hh",s]||u<=1&&["d"]||u<26&&["dd",u]||o<=1&&["M"]||o<11&&["MM",o]||l<=1&&["y"]||["yy",l];return se.apply(null,[d[0],d[1],e,+t>0,n])}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}localeData(){return this._locale}locale(t){return t?(this._locale=Xt(t)||this._locale,this):this._locale._abbr}abs(){const t=Math.abs,e=this._data;return this._milliseconds=t(this._milliseconds),this._days=t(this._days),this._months=t(this._months),e.milliseconds=t(e.milliseconds),e.seconds=t(e.seconds),e.minutes=t(e.minutes),e.hours=t(e.hours),e.month=t(e.month),e.year=t(e.year),this}as(t){if(!this.isValid())return NaN;let e,n;const a=this._milliseconds,r=m(t);if("month"===r||"year"===r)return e=this._days+a/864e5,n=this._months+ae(e),"month"===r?n:n/12;switch(e=this._days+Math.round(re(this._months)),r){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hours":return 24*e+a/36e5;case"minutes":return 1440*e+a/6e4;case"seconds":return 86400*e+a/1e3;case"milliseconds":return Math.floor(864e5*e)+a;default:throw new Error("Unknown unit "+r)}}valueOf(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*h(this._months/12):NaN}}function oe(t){if(null==t._isValid){const e=ot(t),n=Array.prototype.some.call(e.parsedDateParts,(function(t){return null!=t}));let a=!isNaN(t._d&&t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(a=a&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return a;t._isValid=a}return t._isValid}function le(t,e){return t._d=new Date(NaN),Object.assign(ot(t),e||{userInvalidated:!0}),t}const de=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fe=/Z|[+-]\d\d(?::?\d\d)?/,he=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/,!0],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/,!0],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/,!0],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/,!0],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/,!0],["YYYYMMDD",/\d{8}/,!0],["GGGG[W]WWE",/\d{4}W\d{3}/,!0],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/,!0]],ge=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pe=/^\/?Date\((\-?\d+)/i,be={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480},me=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function ye(t){if(!r(t._i))return t;const e=t._i,n=de.exec(e)||ce.exec(e);let a,i,s,u,o,l;if(!n)return t._isValid=!1,t;for(o=0,l=he.length;o<l;o++)if(he[o][1].exec(n[1])){i=he[o][0],a=!1!==he[o][2];break}if(null==i)return t._isValid=!1,t;if(n[3]){for(o=0,l=ge.length;o<l;o++)if(ge[o][1].exec(n[3])){s=(n[2]||" ")+ge[o][0];break}if(null==s)return t._isValid=!1,t}if(!a&&null!=s)return t._isValid=!1,t;if(n[4]){if(!fe.exec(n[4]))return t._isValid=!1,t;u="Z"}return t._f=i+(s||"")+(u||""),Ie(t)}function ve(t){const e=parseInt(t,10);return e<=49?e+2e3:e}function xe(t){if(!r(t._i))return t;const e=me.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(!e)return function(t){return t._isValid=!1,t}(t);const n=function(t,e,n,a,r,i){const s=[ve(t),Rt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)];return i&&s.push(parseInt(i,10)),s}(e[4],e[3],e[2],e[5],e[6],e[7]);return function(t,e,n){return!t||kt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(ot(n).weekdayMismatch=!0,n._isValid=!1,!1)}(e[1],n,t)?(t._a=n,t._tzm=function(t,e,n){if(t)return be[t];if(e)return 0;{const t=parseInt(n,10),e=t%100;return(t-e)/100*60+e}}(e[8],e[9],e[10]),t._d=w.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),ot(t).rfc2822=!0,t):t}function _e(t,e,n,a,r=0){const i=Xt(n||"en");if(!i)throw new Error(`Locale "${n}" is not defined, please add it with "defineLocale(...)"`);const o=function(t,e,n,a,r=0){if(!s(t))return n.invalidDate;const i=Te(e,n);return v[i]=v[i]||function(t){const e=t.match(_),n=e.length,a=new Array(n);for(let i=0;i<n;i++)a[i]=x[e[i]]?x[e[i]]:(r=e[i]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");var r;return function(e,r,i,s=0){const o=r.postvalue(e);let l="";for(let d=0;d<n;d++)l+=u(a[d])?a[d].call(null,o,{format:t,locale:r,isUTC:i,offset:s}):a[d];return l}}(i),v[i](t,n,a,r)}(t,e||(a?"YYYY-MM-DDTHH:mm:ss[Z]":"YYYY-MM-DDTHH:mm:ssZ"),i,a,r);return o?i.postformat(o):o}function Te(t,e){let n=t,a=5;const r=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,i=t=>e.formatLongDate(t)||t;for(r.lastIndex=0;a>=0&&r.test(n);)n=n.replace(r,i),r.lastIndex=0,a-=1;return n}function we(t,e,n){return null!=t?t:null!=e?e:n}function Oe(t){const e=[];let n,a,r,i,s;if(t._d)return t;for(r=function(t){const e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){let e,n,a,r,i,s,u,o;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)i=1,s=4,n=we(e.GG,t._a[0],St(new Date,1,4).year),a=we(e.W,1),r=we(e.E,1),(r<1||r>7)&&(o=!0);else{i=t._locale._week.dow,s=t._locale._week.doy;const u=St(new Date,i,s);n=we(e.gg,t._a[0],u.year),a=we(e.w,u.week),null!=e.d?(r=e.d,(r<0||r>6)&&(o=!0)):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(o=!0)):r=i}a<1||a>It(n,i,s)?ot(t)._overflowWeeks=!0:null!=o?ot(t)._overflowWeekday=!0:(u=function(t,e,n,a,r){const i=1+7*(e-1)+(7+n-a)%7+Ot(t,a,r);let s,u;return i<=0?(s=t-1,u=ct(s)+i):i>ct(t)?(s=t+1,u=i-ct(t)):(s=t,u=i),{year:s,dayOfYear:u}}(n,a,r,i,s),t._a[0]=u.year,t._dayOfYear=u.dayOfYear)}(t),null!=t._dayOfYear&&(s=we(t._a[0],r[0]),(t._dayOfYear>ct(s)||0===t._dayOfYear)&&(ot(t)._overflowDayOfYear=!0),a=new Date(Date.UTC(s,0,t._dayOfYear)),t._a[1]=a.getUTCMonth(),t._a[2]=a.getUTCDate()),n=0;n<3&&null==t._a[n];++n)t._a[n]=e[n]=r[n];for(;n<7;n++)t._a[n]=e[n]=null==t._a[n]?2===n?1:0:t._a[n];return 24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?w:O).apply(null,e),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(ot(t).weekdayMismatch=!0),t}function Se(t){let e;const n=t._a;return n&&-2===ot(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>ht(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,ot(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),ot(t)._overflowWeeks&&-1===e&&(e=7),ot(t)._overflowWeekday&&-1===e&&(e=8),ot(t).overflow=e),t}function Ie(t){if("ISO_8601"===t._f)return ye(t);if("RFC_2822"===t._f)return xe(t);if(t._a=[],ot(t).empty=!0,l(t._f)||!t._i&&0!==t._i)return t;let e=t._i.toString(),n=0;const a=e.length,r=Te(t._f,t._locale).match(_)||[];let i,s,u,o;for(i=0;i<r.length;i++)s=r[i],u=(e.match(nt(s,t._locale))||[])[0],u&&(o=e.substr(0,e.indexOf(u)),o.length>0&&ot(t).unusedInput.push(o),e=e.slice(e.indexOf(u)+u.length),n+=u.length),x[s]?(u?ot(t).empty=!1:ot(t).unusedTokens.push(s),ut(s,u,t)):t._strict&&!u&&ot(t).unusedTokens.push(s);return ot(t).charsLeftOver=a-n,e.length>0&&ot(t).unusedInput.push(e),t._a[3]<=12&&!0===ot(t).bigHour&&t._a[3]>0&&(ot(t).bigHour=void 0),ot(t).parsedDateParts=t._a.slice(0),ot(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){let a=e;if(null==n)return a;if(null!=t.meridiemHour)return t.meridiemHour(a,n);if(null==t.isPM)return a;const r=t.isPM(n);return r&&a<12&&(a+=12),r||12!==a||(a=0),a}(t._locale,t._a[3],t._meridiem),Oe(t),Se(t)}function Ne(t,e,n,a,s){return i(t)?t:function(t,e,n,a,s){const u={};let h=t;return(c(h)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;let e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(h)||l(h)&&0===h.length)&&(h=void 0),u._useUTC=u._isUTC=s,u._l=n,u._i=h,u._f=e,u._strict=a,function(t){const e=Se(function(t){let e=t._i;const n=t._f;return t._locale=t._locale||Xt(t._l),null===e||void 0===n&&""===e?le(t,{nullInput:!0}):(r(e)&&(t._i=e=t._locale.preparse(e)),i(e)?(t._d=xt(e),t):(l(n)?function(t){let e,n,a,r,i;if(!t._f||0===t._f.length)return ot(t).invalidFormat=!0,le(t);for(i=0;i<t._f.length;i++)r=0,e=Object.assign({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],Ie(e),oe(e)&&(r+=ot(e).charsLeftOver,r+=10*ot(e).unusedTokens.length,ot(e).score=r,(null==a||r<a)&&(a=r,n=e));Object.assign(t,n||e)}(t):n?Ie(t):function(t){const e=t._i;if(f(e))t._d=new Date;else if(i(e))t._d=xt(e);else if(r(e))!function(t){if(!r(t._i))return t;const e=pe.exec(t._i);null!==e?t._d=new Date(+e[1]):(ye(t),!1!==t._isValid||(delete t._isValid,xe(t),!1!==t._isValid||(delete t._isValid,le(t))))}(t);else if(l(e)&&e.length){const n=e.slice(0);t._a=n.map(t=>r(t)?parseInt(t,10):t),Oe(t)}else if(c(e))!function(t){if(t._d)return t;const e=t._i;if(c(e)){const n=function(t){const e={};let n,a;for(a in t)d(t,a)&&(n=m(a),n&&(e[n]=t[a]));return e}(e);t._a=[n.year,n.month,n.day,n.hours,n.minutes,n.seconds,n.milliseconds].map(t=>r(t)?parseInt(t,10):t)}Oe(t)}(t);else{if(!o(e))return le(t);t._d=new Date(e)}}(t),oe(t)||(t._d=null),t))}(t));return e._d=new Date(null!=e._d?e._d.getTime():NaN),oe(Object.assign({},e,{_isValid:null}))||(e._d=new Date(NaN)),e}(u)}(t,e,n,a,s)._d}function Ce(t){return t instanceof Date?new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()):null}function Re(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ae(t,e,n="milliseconds"){return!(!t||!e)&&("milliseconds"===n?t.valueOf()>e.valueOf():e.valueOf()<_t(t,n).valueOf())}function ke(t,e,n="milliseconds"){return!(!t||!e)&&("milliseconds"===n?t.valueOf()<e.valueOf():Tt(t,n).valueOf()<e.valueOf())}function Ee(t,e){return!(void 0===e||!e||!e.length)&&e.some(e=>e===t.getDay())}function Le(t,e,n="milliseconds"){if(!t||!e)return!1;if("milliseconds"===n)return t.valueOf()===e.valueOf();const a=e.valueOf();return _t(t,n).valueOf()<=a&&a<=Tt(t,n).valueOf()}const De=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Pe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Me(t,e,n={}){const a=function(t,e){if(null==t)return{};if(t instanceof ue)return{milliseconds:t._milliseconds,day:t._days,month:t._months};if(o(t))return e?{[e]:t}:{milliseconds:t};if(r(t)){let e=De.exec(t);if(e){const t="-"===e[1]?-1:1;return{year:0,day:h(e[2])*t,hours:h(e[3])*t,minutes:h(e[4])*t,seconds:h(e[5])*t,milliseconds:h(Re(1e3*h(e[6])))*t}}if(e=Pe.exec(t),e){const t="-"===e[1]?-1:1;return{year:qe(e[2],t),month:qe(e[3],t),week:qe(e[4],t),day:qe(e[5],t),hours:qe(e[6],t),minutes:qe(e[7],t),seconds:qe(e[8],t)}}}if(c(t)&&("from"in t||"to"in t)){const e=function(t,e){if(!s(t)||!s(e))return{milliseconds:0,months:0};let n;const a=function(t,e,n={}){if(!n._isUTC)return t;const a=xt(e),r=6e4*(n._offset||0),i=t.valueOf()-a.valueOf()+r;return a.setTime(a.valueOf()+i),a}(e,t,{_offset:t.getTimezoneOffset()});return ke(t,a)?n=je(t,a):(n=je(a,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n}(Ne(t.from),Ne(t.to));return{milliseconds:e.milliseconds,month:e.months}}return t}(t,e);return new ue(a,n)}function qe(t,e){const n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function je(t,e){const n={milliseconds:0,months:0};return n.months=k(e)-k(t)+12*(E(e)-E(t)),Ae(Fe(xt(t),n.months,"month"),e)&&--n.months,n.milliseconds=+e-+Fe(xt(t),n.months,"month"),n}function Fe(t,e,n,a){return Ve(t,Me(e,n),1,a)}function Ve(t,e,n,a){const r=e._milliseconds,i=Re(e._days),s=Re(e._months);return s&&yt(t,k(t,a)+s*n,a),i&&vt(t,A(t,a)+i*n,a),r&&function(t,e){t.setTime(e)}(t,function(t){return t.getTime()}(t)+r*n),xt(t)}function Ge(t,e,n=Xt(),a){const i=R(t,a);return Fe(t,function(t,e){if(!r(t))return t;const n=parseInt(t,10);if(!isNaN(n))return n;const a=e.weekdaysParse(t);return o(a)?a:null}(e,n)-i,"day")}function Be(t,e){return R(t,e)}function ze(t,e=Xt(),n){return(R(t,n)+7-e.firstDayOfWeek())%7}const Ye="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),He="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");function Ue(t){return t>1&&t<5&&1!=~~(t/10)}function We(t,e,n,a){const r=t+" ";switch(n){case"s":return e||a?"pár sekund":"pár sekundami";case"ss":return e||a?r+(Ue(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(Ue(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(Ue(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(Ue(t)?"dny":"dní"):r+"dny";case"M":return e||a?"měsíc":"měsícem";case"MM":return e||a?r+(Ue(t)?"měsíce":"měsíců"):r+"měsíci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(Ue(t)?"roky":"let"):r+"lety"}}const Ke=function(t){let e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n},$e=function(t){let e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n},Je={abbr:"cs",months:Ye,monthsShort:He,monthsParse:function(t,e){let n,a=[];for(n=0;n<12;n++)a[n]=new RegExp("^"+t[n]+"$|^"+e[n]+"$","i");return a}(Ye,He),shortMonthsParse:Ke(He),longMonthsParse:$e(Ye),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek(t){switch(Be(t)){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek(t){switch(Be(t)){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:We,ss:We,m:We,mm:We,h:We,hh:We,d:We,dd:We,M:We,MM:We,y:We,yy:We},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};function Ze(t,e,n,a){const r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}const Qe={abbr:"de",months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ze,mm:"%d Minuten",h:Ze,hh:"%d Stunden",d:Ze,dd:Ze,M:Ze,MM:Ze,y:Ze,yy:Ze},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};let Xe="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),tn="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),en=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],nn=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;const an={abbr:"es",months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:(t,e,n)=>t?/-MMM-/.test(e)?tn[k(t,n)]:Xe[k(t,n)]:Xe,monthsRegex:nn,monthsShortRegex:nn,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:en,longMonthsParse:en,shortMonthsParse:en,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:t=>"[hoy a la"+(1!==S(t)?"s":"")+"] LT",nextDay:t=>"[mañana a la"+(1!==S(t)?"s":"")+"] LT",nextWeek:t=>"dddd [a la"+(1!==S(t)?"s":"")+"] LT",lastDay:t=>"[ayer a la"+(1!==S(t)?"s":"")+"] LT",lastWeek:t=>"[el] dddd [pasado a la"+(1!==S(t)?"s":"")+"] LT",sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}},rn={abbr:"fr",months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal(t,e){const n=Number(t);switch(e){case"D":return n+(1===n?"er":"");default:case"M":case"Q":case"DDD":case"d":return n+(1===n?"er":"e");case"w":case"W":return n+(1===n?"re":"e")}},week:{dow:1,doy:4}},sn={abbr:"id",months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:(t,e)=>(12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0),meridiem:(t,e,n)=>t<11?"pagi":t<15?"siang":t<19?"sore":"malam",calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}},un={abbr:"it",months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek(t){switch(Be(t)){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:t=>(/^[0-9].+$/.test(t.toString(10))?"tra":"in")+" "+t,past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}},on={abbr:"ja",months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 HH:mm dddd",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日 HH:mm dddd"},meridiemParse:/午前|午後/i,isPM:t=>"午後"===t,meridiem:(t,e,n)=>t<12?"午前":"午後",calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t.toString(10)}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}},ln={abbr:"ko",months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t.toString(10)}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}};let dn="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),cn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function fn(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function hn(t,e,n){let a=t+" ";switch(n){case"ss":return a+(fn(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return a+(fn(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return a+(fn(t)?"godziny":"godzin");case"MM":return a+(fn(t)?"miesiące":"miesięcy");case"yy":return a+(fn(t)?"lata":"lat")}}const gn={abbr:"pl",months:(t,e,n)=>t?""===e?"("+cn[k(t,n)]+"|"+dn[k(t,n)]+")":/D MMMM/.test(e)?cn[k(t,n)]:dn[k(t,n)]:dn,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek(t){switch(Be(t)){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 5:return"[W piątek o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek(t){switch(Be(t)){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 4:return"[W zeszłą czwartek o] LT";case 5:return"[W zeszłą piątek o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:hn,m:hn,mm:hn,h:hn,hh:hn,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:hn,y:"rok",yy:hn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}},pn={abbr:"pt-br",months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:t=>0===Be(t)||6===Be(t)?"[Último] dddd [às] LT":"[Última] dddd [às] LT",sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"},bn={abbr:"zh-cn",months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:(t,e)=>(12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12),meridiem(t,e,n){let a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal(t,e){const n=Number(t);switch(e){case"d":case"D":case"DDD":return n+"日";case"M":return n+"月";case"w":case"W":return n+"周";default:return n.toString()}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}}},xluM:function(t,e){var n=Function.prototype.call;t.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},xrYK:function(t,e,n){var a=n("4zBA"),r=a({}.toString),i=a("".slice);t.exports=function(t){return i(r(t),8,-1)}},xs3f:function(t,e,n){var a=n("2oRo"),r=n("zk60"),i=a["__core-js_shared__"]||r("__core-js_shared__",{});t.exports=i},"y/5f":function(t,e,n){(function(t){var a=n("Wa4q"),r=n("KQir"),i=e&&!e.nodeType&&e,s=i&&"object"==typeof t&&t&&!t.nodeType&&t,u=s&&s.exports===i?a.Buffer:void 0;t.exports=(u?u.isBuffer:void 0)||r}).call(this,n("YuTi")(t))},yCtX:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("HDdC"),r=n("ngJS"),i=n("jZKg");function s(t,e){return e?Object(i.a)(t,e):new a.a(Object(r.a)(t))}},yGOH:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},yJti:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t[t.ValueOk=0]="ValueOk",t[t.ValueStale=1]="ValueStale",t[t.ValueNone=2]="ValueNone",t[t.ValueException=3]="ValueException",t}({})},yPMs:function(t,e,n){!function(t){"use strict";t.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(t){return"M"===t.charAt(0)},meridiem:function(t,e,n){return t<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},yT6U:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e=!1){let n=t;return(!a.isArray(t)||a.isArray(t)&&e)&&(n=[t]),n}}},yYhs:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("CoVI"),s=n("mfoh"),u=(n("CFvb"),n("MP8s"),n("f95s"),n("gk6K")),o=(n("dApe"),n("ZhuC")),l=n("fxL3"),d=n("TNUL"),c=n("rZud"),f=n("woSy"),h=n("jV1L"),g=n("pcHL"),p=n("WaXT"),b=n("OIDT"),m=n("HIU9"),y=n("uNpg"),v=n("Fwy9"),x=n("C523"),_=n("4Dmd");n("14R3"),n.d(e,"b",(function(){return T})),n.d(e,"a",(function(){return s.a}));var T=function(){function t(){}var e;return e=t,t.forRoot=function(){return{ngModule:e,providers:[u.a]}},e=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.NgModule)({declarations:[l.a,d.a,c.a,o.a,v.a,x.a,h.a,g.a,f.a,p.a,m.a,b.a,y.a,_.a,i.a],exports:[l.a,d.a,c.a,o.a,v.a,x.a,h.a,g.a,f.a,p.a,m.a,b.a,y.a,_.a,i.a],imports:[r.CommonModule],providers:[]})],t)}()},"yb/u":function(t,e,n){var a=n("ioe2"),r=n("FGWQ");t.exports=function(t){return null==t?[]:a(t,r(t))}},yoRg:function(t,e,n){var a=n("4zBA"),r=n("Gi26"),i=n("/GqU"),s=n("TWQb").indexOf,u=n("0BK2"),o=a([].push);t.exports=function(t,e){var n,a=i(t),l=0,d=[];for(n in a)!r(u,n)&&r(a,n)&&o(d,n);for(;e.length>l;)r(a,n=e[l++])&&(~s(d,n)||o(d,n));return d}},"yt+r":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="es-ES">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Alternar navegación</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Consola</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Clúster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servicios</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuración</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mapa de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Módulos de gestor</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Registros</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Repositorios</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloque</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Imágenes</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Duplicación</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemas de archivos</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Usuarios</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Papeleras</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Seleccione un idioma</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Cargando datos del panel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Selector de hora de Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Restablecer ajustes</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Atrás</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Error al cargar los datos.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>seleccionados</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>encontrados</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nombre</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descripción</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descripción larga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Opción por defecto</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon por defecto</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valores</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Guardar</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visor del mapa de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Cargando...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nombre de host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo es obligatorio.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sí, seguro.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Cerrar</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Rendimiento general</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>No se encuentra ninguna entrada</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Registros del clúster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de auditoría</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Cargando configuración...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>No es posible cargar la configuración.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Módulo del gestor de edición</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>El valor introducido no es un UUID válido, por ejemplo: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>El valor introducido debe ser una dirección IP válida.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>El valor introducido debe ser un número.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>El valor introducido debe ser un número o un decimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Actualizar</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID de clúster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Mapa de supervisión modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>Época de mapa de supervisión</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quórum de con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quórum de mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con requerido</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon requerido</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Con quórum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Sin quórum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Añadir</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Características</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Indicadores OSD de todo el clúster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzado...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridad de recuperación de OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioridad</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizar valores de prioridad</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Este campo es obligatorio.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>El valor debe estar entre 0 y 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Reequilibrar peso</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profundo} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profundo} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista de OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Editar</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Suprimir</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estadísticas</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clientes</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Cualquier cliente puede acceder</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Destinatarios</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo requerido</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Debe contener uno o varios valores separados por comas</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Por ejemplo:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo de acceso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Reducir privilegios</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Añadir clientes</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- No hay ningún clúster disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Seleccione el clúster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Añadir daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Motor de almacenamiento</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- No hay ningún repositorio de datos disponible --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Seleccione el motor de almacenamiento --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Usuario de Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- No hay ningún usuario disponible --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Seleccione el usuario de Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID de usuario de CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- No hay ningún cliente disponible --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Seleccione el cliente de CephX --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nombre de CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etiqueta de seguridad</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar etiqueta de seguridad</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Ruta de CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>La ruta debe empezar por "/" y puede ir seguida de una palabra</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Se creará un directorio nuevo</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Ruta</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>La ruta solo puede ser una "/" o una palabra</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Se creará una papelera nueva</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocolo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Etiqueta NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Puede que los clientes no monten subdirectorios (es decir, si Etiqueta = foo, el cliente puede que no monte foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Al usar distintas opciones de Etiqueta, la misma Ruta se puede exportar varias veces.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Al usar distintas opciones de Pseudo, la misma Ruta se puede exportar varias veces.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- No hay ningún tipo de acceso disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Seleccione el tipo de acceso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- No hay ninguna reducción de privilegios disponible --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Seleccione el tipo de reducción de privilegios de ID de usuario que se va a realizar --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocolo de transporte</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>¡Bienvenidos a Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>El nombre de usuario es obligatorio</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>La contraseña es obligatoria</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Entrada</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Lo sentimos. El usuario no existe en Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Prohibido</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Lo sentimos. No tiene permiso para ver lo que busca.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuración de RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Elimina el valor de configuración local. Se heredará y usará en su lugar el valor de configuración padre.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>El valor mínimo es 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista de repositorios</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>El nombre solo puede tener caracteres alfanuméricos, guiones y guiones bajos.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>El nombre del perfil de código de borrado que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Complemento</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Porciones de datos (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Debe ser igual o mayor que 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Porciones de código (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Debe ser igual o mayor que 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimador de durabilidad (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localización (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dominio de error de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localización de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Ninguna</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Técnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tamaño del paquete</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Raíz de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Clase de dispositivo de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>cualquiera</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Directorio</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nombre...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>El nombre del repositorio de Ceph que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo de repositorio</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Seleccione un tipo de repositorio --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de colocación</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Se necesita al menos un grupo de colocación.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>El clúster no puede gestionar tantos grupos de colocación. Vuelva a calcular la cantidad que necesita.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ayuda para el cálculo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tamaño replicado</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Indicadores</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sustituciones de códigos de borrado</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- No hay ningún perfil de código de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Seleccione un perfil de código de borrado --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Conjunto de reglas de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Seleccione una regla de CRUSH --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regla de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Pasos de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compresión</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modo</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- No hay ningún algoritmo de compresión de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamaño de Blob mínimo</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>p. ej. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>El valor debe ser mayor que 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamaño de Blob máximo</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>p. ej. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>El valor debe ser mayor que el tamaño de Blob mínimo</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Relación</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Relación de compresión</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>El valor debe estar entre 0,0 y 1,0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ej.: 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detalles</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalles de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalles de niveles de caché</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Mover una imagen a la papelera</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protección caduca a las</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>SIN PROTECCIÓN</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato de fecha erróneo. Use el formato "AAAA-MM-DD HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protección ya ha caducado. Seleccione una fecha del futuro o deje el campo vacío.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Mover imagen</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Resumen</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinos</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticación de descubrimiento</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuario</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Los nombres de usuario deben tener entre 8 y 64 caracteres y\n                        solo pueden incluir letras y estos caracteres: ".", "@", "-", "_" o ":".</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Contraseña</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usuario mutuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Contraseña mutua</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Información disponible:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI no disponibles</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Repositorio</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Repositorio de datos</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Creados</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tamaño</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tamaño del objeto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Aprovisionados</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/D</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unidad de repartición</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Recuento de repartición</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Padre</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefijo de nombre de bloque</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Orden</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantáneas</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagen</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Este ajuste sustituye al valor global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Este es el valor global. No se ha definido ningún valor para esta opción para esta imagen.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>No se permiten los caracteres "/" ni "@".</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- No hay ningún repositorio RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Seleccione un repositorio --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Usar un repositorio dedicado para datos</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Repositorio de datos</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Repositorio dedicado para almacenar los datos de objeto de RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Debe aumentar el tamaño.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanzado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Repartición</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidad de repartición</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Seleccione la unidad de repartición --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Este campo es obligatorio porque se ha definido el recuento de repartición.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>La unidad de repartición es mayor que el tamaño del objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Recuento de repartición</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Este campo es obligatorio porque se ha definido la unidad de repartición.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>El recuento de repartición debe ser mayor que 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Se dispone a revertir</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vaciar papelera</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Todas</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Repositorio:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nombre del repositorio...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar imágenes</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Para restaurar</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>escriba el nombre nuevo de la imagen y haga clic en</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nombre nuevo</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Caducó a las</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protección hasta</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topología iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Normalmente no es necesario cambiar los valores por defecto de estos parámetros.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ajustes</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Almacén</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Ajustes avanzados</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN de destino</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>El IQN tiene un patrón erróneo.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Por ejemplo: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Más información</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Este destino tiene ajustes avanzados modificados.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portales</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Añadir portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagen tiene ajustes modificados.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Añadir imagen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticación de ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciadores</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciador</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN del cliente</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>El IQN del iniciador debe ser exclusivo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Los nombres de usuario deben tener entre 8 y 64 caracteres y\n                        solo pueden incluir letras y estos caracteres: ".", "@", "-", "_" o ":".</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>El iniciador pertenece a un grupo. Las imágenes se configurarán en el grupo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>No se ha añadido ningún elemento.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Añadir iniciador</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupos</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Añadir grupo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Papelera</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemas</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizando</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Listo</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Editar modo de duplicación de repositorio</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Los clústeres de par deben eliminarse antes de inhabilitar la duplicación.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Editar} other {Añadir} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nombre del clúster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>El nombre del clúster no es válido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID de CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID de CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>El ID de CephX no es válido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Direcciones de monitores</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Direcciones delimitadas por comas...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>La dirección del monitor no es válida.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Clave de CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Clave con cifrado base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La clave de CephX debe tener cifrado base64</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Los contadores de rendimiento no están disponibles</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contadores de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Cargando datos de la papelera...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>El valor no es válido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>El nombre que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propietario</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Seleccione un usuario --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Habilitado</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo de índice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regla de colocación</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marcador</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marcador máximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versión</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versión maestra</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Hora de modificación</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Grupo de zona</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Cuota de papelera</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamaño máximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Sin límite</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Número máximo de objetos</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nombre de usuario</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Seleccione un nombre de usuario --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Autogenerar clave</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clave de acceso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clave secreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nombre completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Dirección de correo electrónico</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendido</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Número máximo de papeleras</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusuarios</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacidades</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cuota de usuario</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Claves</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Seleccione un tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Permiso</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Seleccione un permiso --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusuario</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>El ID de subusuario que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lectura, escritura</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>todos</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Clave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Autogenerar secreto</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Cargando datos del usuario...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>No es posible cargar los datos del usuario.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>El ID de usuario que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Esta dirección no es válida.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>La dirección de correo electrónico que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Máx. papeleras</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Inhabilitado</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizar</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>No hay ningún subusuario.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>No hay ninguna clave.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>No hay ninguna capacidad</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tamaño ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tamaño máx.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objetos ilimitados</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Objetos máx.</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>El valor introducido debe ser mayor o igual que 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descripción...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permisos</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Funciones</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar contraseña</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Las contraseñas no coinciden.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Correo electrónico</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Correo electrónico no válido.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Se dispone a eliminar los permisos "lectura/actualización de usuario" de su propio usuario.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Si continúa, no podrá añadir ni eliminar funciones en ningún usuario.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>¿Seguro que desea continuar?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Ayuda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentación</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Acerca de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Ajustes de la consola</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestión del usuario</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usuario que ha entrado</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Salir</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributos (mapa de OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Los metadatos no están disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadatos</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contandor de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Escrituras</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lecturas</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histograma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valores actuales</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Mín.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Máx.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origen</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Nivel</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Se puede actualizar en el tiempo de ejecución (editable)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Etiquetas</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valores Enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Véase también</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Estado del clúster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons de gestor</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Instancias de Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Servidores de metadatos</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Puertas de enlace iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS de cliente</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Rendimiento del cliente</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectura/escritura de cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Rendimiento de recuperación</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Depuración</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Rendimiento</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacidad en bruto</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Grupos de colocación por OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Estado del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacidad</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Clasificaciones</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Actual</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticación de descubrimiento actualizada</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>No hay ningún portal disponible.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>No hay ninguna imagen disponible.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>No hay ninguna imagen disponible. Asegúrese de añadir una imagen al destino.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>No hay ningún iniciador disponible. Asegúrese de añadir un iniciador al destino.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destino</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes de lectura</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operaciones de lectura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operaciones de escritura</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O desde</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instancia</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Progreso</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Editar modo</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Añadir par</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Editar par</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Suprimir par</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Líder</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>N.º locales</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>N.º remotos</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>duplicar par</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Clave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Aplanamiento profundo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>En capas</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Bloqueo exclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa de objetos (requiere bloqueo exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>En diario (requiere bloqueo exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>SIN PROTECCIÓN</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Reversión de instantánea RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revertir</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instantánea RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Suprimido a las</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>estado</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versión</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>raíz</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de reserva</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Clasificación</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Actividad</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodos</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Uso</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Actualizado</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>El valor se puede actualizar en el tiempo de ejecución.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Los daemons/clientes no extraen este valor de la\n      base de datos de configuración del monitor. No se recomienda definir esta opción con "ceph config\n      set ...". Esta opción se debe configurar mediante ceph.conf o a través\n      de la línea de comandos.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>La opción solo surte efecto durante el inicio del daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>La opción solo afecta a la creación del clúster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>La opción solo afecta a la creación del daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servicio</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valor actual</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Editable</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Habilitar</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Inhabilitar</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Conectando de nuevo. Espere...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Dirección pública</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sesiones abiertas</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>No incluir</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Los OSD que se excluyeron anteriormente no se volverán a incluir cuando se inicien</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>No excluir</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Los OSD no se excluirán automáticamente después del intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>No activar</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>No se permite que los OSD se inicien</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>No desactivar</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Se ignoran los informes de error de OSD, de forma que los monitores no desactivarán los OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pausa</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pone en pausa las lecturas y escrituras</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>No depurar</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>La depuración está inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>No depuración profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>La depuración profunda está inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>No reponer</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>La reposición de grupos de colocación se suspende</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>No recuperar</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La recuperación de los grupos de colocación se suspende</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Orden bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar orden bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdir limpiados</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Los OSD tienen snapset convertidos</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Supresiones de recuperación</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Supresiones realizadas durante la recuperación, en lugar de emparejamientos</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Límite estricto de registro del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Establece un límite estricto para la longitud del registro del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Indicadores de OSD actualizados</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>Incluir</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>desactivar</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marcar</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdido</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marcado como perdido</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Limpiar</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>limpiado</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>destruir</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>destruido</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>suprimir</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Grupos de colocación</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes de lectura</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operaciones de lectura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operaciones de escritura</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Número máximo de reposiciones</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Máximo de recuperaciones activas</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Máximo de recuperaciones de inicio único</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Reposo de recuperación</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Trabajo</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravedad</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Iniciado</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Usado</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispon.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Limpio</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>En curso</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Advertencia</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Desconocido</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>activo</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>sin sistemas de archivos</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>activo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>reserva</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/d</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon activo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quórum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>El servicio NFS Ganesha no está configurado.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transportar</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Usuario de CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Sistemas de archivos CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(se hereda de la configuración global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>se hereda de la configuración global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Seleccione el tipo de reducción de privilegios de ID de usuario que se va a realizar --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>No hay ningún daemon disponible.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de caché</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Antigüedad mínima de expulsión</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Antigüedad mínima de vaciado</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Número máximo de bytes de destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Número máximo de objetos de destino</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>No se ha añadido ninguna aplicación</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Se ha alcanzado el límite de aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Un repositorio solo puede tener hasta cuatro definiciones de aplicaciones.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caracteres permitidos: _, a-z, A-Z y 0-9</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La longitud máxima es 128 caracteres</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrar o añadir aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Añadir aplicación</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamaño de réplica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Último cambio</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Conjunto de reglas de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>papelera</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>papeleras</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usuario</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuarios</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Ámbito</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lectura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crear</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Función del sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Actualizar usuario</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuar</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>La sesión se ha cerrado automáticamente porque sus funciones han cambiado.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Cada objeto se divide en porciones de datos, cada una almacenada en un OSD distinto.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcula las porciones de código para cada objeto y las almacena en distintos OSD.\n      El número de porciones de código es también el número de OSD que pueden estar inactivos sin que se pierdan datos.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>El complemento jerasure es el más genérico y flexible,\n          y también el complemento por defecto para los repositorios de código de borrado de Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La técnica más flexible es reed_sol_van: basta con definir k y m.\n          La técnica cauchy_good puede ser más rápida, pero hay que elegir con cuidado el tamaño\n          del paquete. reed_sol_r6_op, liberation, blaum_roth y liber8tion son todas equivalentes a RAID6\n          en el sentido de que solo se pueden configurar con m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>La codificación se realizará según el tamaño de los paquetes de bytes de uno en uno.\n          Elegir el tamaño correcto es difícil.\n          La documentación de jerasure incluye información completa sobre el tema.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Con el complemento jerasure, cuando un objeto de código de borrado se almacena\n          en varios OSD, para recuperarse de la pérdida de un OSD es necesario leer de todos los demás.\n          Por ejemplo, si jerasure está configurado con k=8 y m=4, cuando se pierde un OSD es necesario leer\n          de los otros once para repararlo.\n\n          El complemento de código de borrado lrc crea porciones de paridad local para poder realizar la recuperación con\n          menos OSDs. Por ejemplo, is lrc está configurado con k=8, m=4 y l=4, creará\n          una porción de paridad adicional para cada cuatro OSDs. Si se pierde un solo OSD, se puede recuperar\n          solo con cuatro OSD, en lugar de con once.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Agrupa las porciones de código y de datos en localizaciones de conjuntos de tamaño. Por ejemplo,\n          para k=4 y m=2, si locality=3, se crean dos grupos de tres. Cada conjunto\n          se puede recuperar sin leer porciones de otro conjunto.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>El tipo de papelera de CRUSH en el que se almacenará cada\n          conjunto de porciones definido por l. Por ejemplo, si se define como bastidor, cada grupo de l porciones\n          se colocará en un bastidor distinto. Se usa para crear un paso de regla de CRUSH, por ejemplo, "step choose\n          rack". Si no se define, no se realiza este tipo de agrupamiento.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>El complemento isa encapsula la biblioteca ISA. Solo funciona en procesadores Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>El complemento ISA viene en dos formatos de Reed Solomon.\n          Si se define reed_sol_van, se trata de Vandermonde; si se define cauchy, se trata de Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>El complemento shec encapsula las distintas bibliotecas SHEC.\n          Permite a Ceph recuperar datos de forma más eficiente que los códigos de Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>El número de porciones de paridad. Cada uno de ellas incluye cada porción de datos\n           en su intervalo de cálculo. El número se usa como estimador de durabilidad. Por ejemplo, si c=2,\n          2 OSD pueden estar inactivos sin que se pierdan datos.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>El nombre de la papelera de CRUSH usado para el primer paso de la regla de CRUSH.\n      Por ejemplo, "step take default".</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Asegúrese de que no hay dos porciones en una papelera con el mismo\n      dominio de error. Por ejemplo, si el dominio de error es host, no debe haber dos porciones almacenadas en el mismo\n      host. Se usa para crear un paso de regla de CRUSH, por ejemplo, "step chooseleaf host".</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restringe la colocación a dispositivos de una clase concreta\n      (p.ej., ssd o hdd) usando los nombre de clase de dispositivo CRUSH en el mapa de CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Define el nombre de directorio del que se cargará el complemento de código de borrado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas las operaciones</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Permite solo las operaciones que no modifican el servidor</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>No permite operaciones de lectura o escritura, pero sí cualquier otra</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>No permite operaciones de lectura o escritura, ni ninguna otra que modifique los atributos del archivo o el contenido del directorio</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>No permite ningún tipo de acceso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Seleccione la prioridad --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Baja</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Información</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Últimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Últimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Últimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Última hora (opción por defecto)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Últimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Últimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Últimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Últimas 24 horas</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ayer</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hoy</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Hoy hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Anteayer</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Los últimos 2 días</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este día la semana pasada</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>La semana pasada</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Esta semana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Esta semana hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Los últimos 7 días</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>El mes pasado</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este mes</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Este mes hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Los últimos 30 días</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Los últimos 90 días</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Los últimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>El último año</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>El año pasado</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este año</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Este año hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Los últimos 2 años</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Los últimos 5 años</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>No se ha seleccionado ningún elemento.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Deseleccione el elemento para volver a seleccionarlo</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Se ha alcanzado el límite de selección</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrar etiquetas</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Añadir insignia</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>No hay ningún elemento disponible.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copiar</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Depuración profunda</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplanar</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marcar para desactivar</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marcar para incluir</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marcar como perdido</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar para excluir</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renombrar</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurar</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Mover a la papelera</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Desproteger</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Suprimido</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Aplanado</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Limpiado</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Revertido</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sí</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>No</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Calidad del servicio</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Límite de BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>El límite deseado de bytes de E/S por segundo.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Límite de IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>El límite deseado de operaciones de E/S por segundo.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Límite de BPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>El límite deseado de bytes de lectura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Límite de IOPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>El límite deseado de operaciones de lectura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Límite de BPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>El límite deseado de bytes de escritura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Límite de IOPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>El límite deseado de operaciones de escritura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Ráfaga de BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de E/S.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Ráfaga de IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de E/S.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Ráfaga de BPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de lectura.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Ráfaga de IOPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de lectura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Ráfaga de BPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de escritura.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Ráfaga de IOPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de escritura.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Ejecutando</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ejecutar</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ejecutado</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tarea desconocida</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Creando</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>crear</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Actualizando</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>actualizar</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Suprimiendo</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonando</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clonar</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copiando</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copiar</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Aplanando</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>aplanar</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Revirtiendo</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>revertir</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Moviendo</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>mover</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Movido</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>No se encuentra la imagen.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Restaurando</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurar</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Limpiando</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>limpiar</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>todos los repositorios</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>No es posible inhabilitar la duplicación porque contiene un par</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"z+Ro":function(t,e,n){"use strict";function a(t){return t&&"function"==typeof t.schedule}n.d(e,"a",(function(){return a}))},"z/SZ":function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("hpHm");class i{constructor(t,e,n){this.nodes=t,this.viewRef=e,this.componentRef=n}}class s{constructor(t,e,n,r,i,s,u,o){this._viewContainerRef=t,this._renderer=e,this._elementRef=n,this._injector=r,this._componentFactoryResolver=i,this._ngZone=s,this._applicationRef=u,this._posService=o,this.onBeforeShow=new a.EventEmitter,this.onShown=new a.EventEmitter,this.onBeforeHide=new a.EventEmitter,this.onHidden=new a.EventEmitter,this._providers=[],this._isHiding=!1,this.containerDefaultSelector="body",this._listenOpts={},this._globalListener=Function.prototype}get isShown(){return!this._isHiding&&!!this._componentRef}attach(t){return this._componentFactory=this._componentFactoryResolver.resolveComponentFactory(t),this}to(t){return this.container=t||this.container,this}position(t){return this.attachment=t.attachment||this.attachment,this._elementRef=t.target||this._elementRef,this}provide(t){return this._providers.push(t),this}show(t={}){if(this._subscribePositioning(),this._innerComponent=null,!this._componentRef){this.onBeforeShow.emit(),this._contentRef=this._getContentRef(t.content,t.context,t.initialState);const e=a.Injector.create({providers:this._providers,parent:this._injector});this._componentRef=this._componentFactory.create(e,this._contentRef.nodes),this._applicationRef.attachView(this._componentRef.hostView),this.instance=this._componentRef.instance,Object.assign(this._componentRef.instance,t),this.container instanceof a.ElementRef&&this.container.nativeElement.appendChild(this._componentRef.location.nativeElement),"string"==typeof this.container&&"undefined"!=typeof document&&(document.querySelector(this.container)||document.querySelector(this.containerDefaultSelector)).appendChild(this._componentRef.location.nativeElement),!this.container&&this._elementRef&&this._elementRef.nativeElement.parentElement&&this._elementRef.nativeElement.parentElement.appendChild(this._componentRef.location.nativeElement),this._contentRef.componentRef&&(this._innerComponent=this._contentRef.componentRef.instance,this._contentRef.componentRef.changeDetectorRef.markForCheck(),this._contentRef.componentRef.changeDetectorRef.detectChanges()),this._componentRef.changeDetectorRef.markForCheck(),this._componentRef.changeDetectorRef.detectChanges(),this.onShown.emit(this._componentRef.instance)}return this._registerOutsideClick(),this._componentRef}hide(){if(!this._componentRef)return this;this._posService.deletePositionElement(this._componentRef.location),this.onBeforeHide.emit(this._componentRef.instance);const t=this._componentRef.location.nativeElement;return t.parentNode.removeChild(t),this._contentRef.componentRef&&this._contentRef.componentRef.destroy(),this._componentRef.destroy(),this._viewContainerRef&&this._contentRef.viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef)),this._contentRef.viewRef&&this._contentRef.viewRef.destroy(),this._contentRef=null,this._componentRef=null,this._removeGlobalListener(),this.onHidden.emit(),this}toggle(){this.isShown?this.hide():this.show()}dispose(){this.isShown&&this.hide(),this._unsubscribePositioning(),this._unregisterListenersFn&&this._unregisterListenersFn()}listen(t){this.triggers=t.triggers||this.triggers,this._listenOpts.outsideClick=t.outsideClick,this._listenOpts.outsideEsc=t.outsideEsc,t.target=t.target||this._elementRef.nativeElement;const e=this._listenOpts.hide=()=>t.hide?t.hide():void this.hide(),n=this._listenOpts.show=e=>{t.show?t.show(e):this.show(e),e()};return this._unregisterListenersFn=Object(r.e)(this._renderer,{target:t.target,triggers:t.triggers,show:n,hide:e,toggle:t=>{this.isShown?e():n(t)}}),this}_removeGlobalListener(){this._globalListener&&(this._globalListener(),this._globalListener=null)}attachInline(t,e){return this._inlineViewRef=t.createEmbeddedView(e),this}_registerOutsideClick(){if(this._componentRef&&this._componentRef.location){if(this._listenOpts.outsideClick){const t=this._componentRef.location.nativeElement;setTimeout(()=>{this._globalListener=Object(r.h)(this._renderer,{targets:[t,this._elementRef.nativeElement],outsideClick:this._listenOpts.outsideClick,hide:()=>this._listenOpts.hide()})})}if(this._listenOpts.outsideEsc){const t=this._componentRef.location.nativeElement;this._globalListener=Object(r.g)(this._renderer,{targets:[t,this._elementRef.nativeElement],outsideEsc:this._listenOpts.outsideEsc,hide:()=>this._listenOpts.hide()})}}}getInnerComponent(){return this._innerComponent}_subscribePositioning(){!this._zoneSubscription&&this.attachment&&(this.onShown.subscribe(()=>{this._posService.position({element:this._componentRef.location,target:this._elementRef,attachment:this.attachment,appendToBody:"body"===this.container})}),this._zoneSubscription=this._ngZone.onStable.subscribe(()=>{this._componentRef&&this._posService.calcPosition()}))}_unsubscribePositioning(){this._zoneSubscription&&(this._zoneSubscription.unsubscribe(),this._zoneSubscription=null)}_getContentRef(t,e,n){if(!t)return new i([]);if(t instanceof a.TemplateRef){if(this._viewContainerRef){const n=this._viewContainerRef.createEmbeddedView(t,e);return n.markForCheck(),new i([n.rootNodes],n)}const n=t.createEmbeddedView({});return this._applicationRef.attachView(n),new i([n.rootNodes],n)}if("function"==typeof t){const e=this._componentFactoryResolver.resolveComponentFactory(t),r=a.Injector.create({providers:this._providers,parent:this._injector}),s=e.create(r);return Object.assign(s.instance,n),this._applicationRef.attachView(s.hostView),new i([[s.location.nativeElement]],s.hostView,s)}return new i([[this._renderer.createText(""+t)]])}}class u{constructor(t,e,n,a,r){this._componentFactoryResolver=t,this._ngZone=e,this._injector=n,this._posService=a,this._applicationRef=r}createLoader(t,e,n){return new s(e,n,t,this._injector,this._componentFactoryResolver,this._ngZone,this._applicationRef,this._posService)}}},z1FC:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["viensas secunds","'iensas secunds"],ss:[t+" secunds",t+" secunds"],m:["'n míut","'iens míut"],mm:[t+" míuts",t+" míuts"],h:["'n þora","'iensa þora"],hh:[t+" þoras",t+" þoras"],d:["'n ziua","'iensa ziua"],dd:[t+" ziuas",t+" ziuas"],M:["'n mes","'iens mes"],MM:[t+" mesen",t+" mesen"],y:["'n ar","'iens ar"],yy:[t+" ars",t+" ars"]};return a||e?r[n][0]:r[n][1]}t.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(t){return"d'o"===t.toLowerCase()},meridiem:function(t,e,n){return t>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z3Vd:function(t,e,n){!function(t){"use strict";var e="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(t,n,a,r){var i=function(t){var n=Math.floor(t%1e3/100),a=Math.floor(t%100/10),r=t%10,i="";return n>0&&(i+=e[n]+"vatlh"),a>0&&(i+=(""!==i?" ":"")+e[a]+"maH"),r>0&&(i+=(""!==i?" ":"")+e[r]),""===i?"pagh":i}(t);switch(a){case"ss":return i+" lup";case"mm":return i+" tup";case"hh":return i+" rep";case"dd":return i+" jaj";case"MM":return i+" jar";case"yy":return i+" DIS"}}t.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==t.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==t.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"},past:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"Hu’":-1!==t.indexOf("jar")?e.slice(0,-3)+"wen":-1!==t.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z5nN:function(t,e,n){"use strict";n.d(e,"b",(function(){return o})),n.d(e,"a",(function(){return f}));var a=n("8Y7J"),r=n("LqlI"),i=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["role","document"]],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","modal-content"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){var n=e.component;t(e,0,0,"modal-dialog"+(n.config.class?" "+n.config.class:""))}))}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"modal-container",[["class","modal"],["role","dialog"],["tabindex","-1"]],[[1,"aria-modal",0]],[[null,"mousedown"],[null,"mouseup"],["window","keydown.esc"]],(function(t,e,n){var r=!0;return"mousedown"===e&&(r=!1!==a["ɵnov"](t,1).onClickStarted(n)&&r),"mouseup"===e&&(r=!1!==a["ɵnov"](t,1).onClickStop(n)&&r),"window:keydown.esc"===e&&(r=!1!==a["ɵnov"](t,1).onEsc(n)&&r),r}),s,i)),a["ɵdid"](1,245760,null,0,r.d,[r.f,a.ElementRef,a.Renderer2],null,null)],(function(t,e){t(e,1,0)}),(function(t,e){t(e,0,0,!0)}))}var o=a["ɵccf"]("modal-container",r.d,u,{},{},["*"]),l=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function d(t){return a["ɵvid"](0,[],null,null)}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-modal-backdrop",[["class","modal-backdrop"]],null,null,null,d,l)),a["ɵdid"](1,114688,null,0,r.c,[a.ElementRef,a.Renderer2],null,null)],(function(t,e){t(e,1,0)}),null)}var f=a["ɵccf"]("bs-modal-backdrop",r.c,c,{},{},[])},z6cu:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("HDdC");function r(t,e){return new a.a(e?n=>e.schedule(i,0,{error:t,subscriber:n}):e=>e.error(t))}function i({error:t,subscriber:e}){e.error(t)}},zAeO:function(t,e,n){var a=n("SQuY");function r(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(r.Cache||a),n}r.Cache=a,t.exports=r},zBJ4:function(t,e,n){var a=n("2oRo"),r=n("hh1v"),i=a.document,s=r(i)&&r(i.createElement);t.exports=function(t){return s?i.createElement(t):{}}},zDBQ:function(t,e,n){var a=n("IeEY");t.exports=function(t){return null!=t&&t.length?a(t,1):[]}},zKZe:function(t,e,n){var a=n("I+eb"),r=n("YNrV");a({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},zUnb:function(t,e,n){"use strict";n.r(e);var a=n("tAZD"),r=n.n(a),i=n("SVse"),s=n("8Y7J");const u=t=>{t=t||"en-US";try{return n("F+uO")(`./messages.${t}.xlf`).default}catch(e){return[]}};class o{}class l{constructor(){}}var d=n("EApP"),c=s["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"flyInOut",definitions:[{type:0,name:"inactive",styles:{type:6,styles:{opacity:0},offset:null},options:void 0},{type:0,name:"active",styles:{type:6,styles:{opacity:1},offset:null},options:void 0},{type:0,name:"removed",styles:{type:6,styles:{opacity:0},offset:null},options:void 0},{type:1,expr:"inactive => active",animation:{type:4,styles:null,timings:"{{ easeTime }}ms {{ easing }}"},options:null},{type:1,expr:"active => removed",animation:{type:4,styles:null,timings:"{{ easeTime }}ms {{ easing }}"},options:null}],options:{}}]}});function f(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"button",[["aria-label","Close"],["class","toast-close-button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.remove()&&a),a}),null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"]))],null,null)}function h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](1,null,["[","]"]))],null,(function(t,e){t(e,1,0,e.component.duplicatesCount+1)}))}function g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,h)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,3,0,e.component.duplicatesCount)}),(function(t,e){var n=e.component;t(e,0,0,n.options.titleClass,n.title),t(e,1,0,n.title)}))}function p(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.options.messageClass,n.message)}))}function b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,n.options.messageClass,n.message),t(e,1,0,n.message)}))}function m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"div",[["class","toast-progress"]],[[4,"width",null]],null,null,null,null))],null,(function(t,e){t(e,1,0,e.component.width+"%")}))}function y(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,f)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,g)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,p)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,b)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,m)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.options.closeButton),t(e,3,0,n.title),t(e,5,0,n.message&&n.options.enableHtml),t(e,7,0,n.message&&!n.options.enableHtml),t(e,9,0,n.options.progressBar)}),null)}function v(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["toast-component",""]],[[8,"className",0],[40,"@flyInOut",0],[4,"display",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).tapToast()&&a),"mouseenter"===e&&(a=!1!==s["ɵnov"](t,1).stickAround()&&a),"mouseleave"===e&&(a=!1!==s["ɵnov"](t,1).delayedHideToast()&&a),a}),y,c)),s["ɵdid"](1,180224,null,0,d.c,[d.j,d.g,s.NgZone],null,null)],null,(function(t,e){t(e,0,0,s["ɵnov"](e,1).toastClasses,s["ɵnov"](e,1).state,s["ɵnov"](e,1).displayStyle)}))}var x=s["ɵccf"]("[toast-component]",d.c,v,{},{},[]),_=n("pMnS"),T=n("jtHE");let w=(()=>{class t{}return t.START="start",t.STOP="stop",t.UPDATE="update",t.RESET="reset",t.UNSUBSCRIBE="unsubscribe",t})();class O{constructor(){this.blockUISettings={},this.blockUIInstances={},this.blockUISubject=new T.a,this.blockUIObservable=this.blockUISubject.asObservable(),this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this))}getSettings(){return this.blockUISettings}updateSettings(t={}){this.blockUISettings=Object.assign({},this.blockUISettings,t)}decorate(t="block-ui-main"){const e={name:t,isActive:!1,blockCount:0,start:this.dispatch(this.blockUISubject,w.START,t),update:this.dispatch(this.blockUISubject,w.UPDATE,t),stop:this.dispatch(this.blockUISubject,w.STOP,t),reset:this.dispatch(this.blockUISubject,w.RESET,t),unsubscribe:this.dispatch(this.blockUISubject,w.UNSUBSCRIBE,t)};return this.blockUIInstances[t]=this.blockUIInstances[t]||e,e}observe(){return this.blockUIObservable}blockUIMiddleware({action:t,name:e}){let n=null;switch(t){case w.START:n=!0;break;case w.STOP:case w.RESET:n=!1}null!==n&&(this.blockUIInstances[e].isActive=n)}dispatch(t,e,n="block-ui-main"){return a=>{t.next({name:n,action:e,message:a})}}}class S{constructor(t){this.blockUI=t}ngOnInit(){this.name=this.name||"block-ui-main",this.template=this.template||this.blockUI.blockUISettings.template}}class I{constructor(t,e,n){this.blockUI=t,this.resolver=e,this.changeDetectionRef=n,this.name="block-ui-main",this.delayStart=0,this.delayStop=0,this.state={startTimeout:null,stopTimeout:null,blockCount:0},this.active=!1}ngOnInit(){this.settings=this.blockUI.getSettings(),this.blockUISubscription=this.subscribeToBlockUI(this.blockUI.observe())}ngAfterViewInit(){try{if(!this.templateCmp)return!1;if(this.templateCmp instanceof s.TemplateRef)this.templateOutlet.createEmbeddedView(this.templateCmp);else{const t=this.resolver.resolveComponentFactory(this.templateCmp);this.templateCompRef=this.templateOutlet.createComponent(t),this.updateBlockTemplate(this.message)}}catch(t){console.error("ng-block-ui:",t)}}ngAfterViewChecked(){this.detectChanges()}subscribeToBlockUI(t){return t.subscribe(t=>this.onDispatchedEvent(t))}onDispatchedEvent(t){switch(t.action){case w.START:this.onStart(t);break;case w.STOP:this.onStop(t);break;case w.UPDATE:this.onUpdate(t);break;case w.RESET:this.onReset();break;case w.UNSUBSCRIBE:this.onStop(t),this.onUnsubscribe(t.name)}}onStart({name:t,message:e}){if(t===this.name){const t=this.delayStart||this.settings.delayStart||0;null===this.state.startTimeout&&(0===t?this.showBlock(e):this.state.startTimeout=setTimeout(()=>{this.showBlock(e)},t)),this.state.blockCount++,this.updateInstanceBlockCount()}}onStop({name:t}){if(t===this.name){const t=this.delayStop||this.settings.delayStop||0;this.state.blockCount>1?this.state.blockCount--:this.active?null===this.state.stopTimeout&&(0===t?this.hideBlock():this.state.stopTimeout=setTimeout(()=>{this.hideBlock()},t)):this.clearState(),this.updateInstanceBlockCount()}}onReset(){this.hideBlock()}onUpdate({name:t,message:e}){if(t===this.name){const t=this.delayStart||this.settings.delayStart||0;0===t?this.updateMessage(e):setTimeout(()=>{this.updateMessage(e)},t)}}updateMessage(t){this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}showBlock(t){this.active=!0,this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}hideBlock(){this.clearState(),this.active=!1,this.detectChanges()}clearState(){null!=this.state.startTimeout&&clearTimeout(this.state.startTimeout),null!=this.state.stopTimeout&&clearTimeout(this.state.stopTimeout),this.state.blockCount=0,this.state.startTimeout=null,this.state.stopTimeout=null,this.updateInstanceBlockCount()}updateBlockTemplate(t){this.templateCompRef&&this.templateCompRef instanceof s.ComponentRef&&(this.templateCompRef.instance.message=t)}onUnsubscribe(t){this.blockUISubscription&&t===this.name&&this.blockUISubscription.unsubscribe()}updateInstanceBlockCount(){this.blockUI.blockUIInstances[this.name]&&(this.blockUI.blockUIInstances[this.name].blockCount=this.state.blockCount)}detectChanges(){this.changeDetectionRef.destroyed||this.changeDetectionRef.detectChanges()}ngOnDestroy(){this.onUnsubscribe(this.name)}}class N{constructor(t){this.blockUIInstance=t}start(t,e){this.dispatch(t,w.START,e)}stop(t){this.dispatch(t,w.STOP)}reset(t){this.dispatch(t,w.RESET)}unsubscribe(t){this.dispatch(t,w.UNSUBSCRIBE)}isActive(t=null){const e=t?this.toArray(t):null,n=this.blockUIInstance.blockUIInstances;return Object.keys(n).some(t=>e?e.indexOf(n[t].name)>=0&&n[t].isActive:n[t].isActive)}dispatch(t=[],e,n){this.toArray(t).forEach(t=>this.blockUIInstance.decorate(t)[e](n))}toArray(t=[]){return"string"==typeof t?[t]:t}}const C=new O,R=new s.InjectionToken("BlockUIModuleSettings");function A(t){return C.updateSettings(t),C}class k{static forRoot(t={}){return{ngModule:k,providers:[{provide:R,useValue:t},{provide:O,useFactory:A,deps:[R]},N]}}}function E(t){return function(e,n,a){e[n]=C.decorate(t)}}var L=s["ɵcrt"]({encapsulation:2,styles:[],data:{}});function D(t){return s["ɵvid"](0,[s["ɵncd"](null,0),(t()(),s["ɵeld"](1,0,null,null,1,"block-ui-content",[],null,null,null,B,q)),s["ɵdid"](2,12828672,null,0,I,[O,s.ComponentFactoryResolver,s.ChangeDetectorRef],{name:[0,"name"],delayStart:[1,"delayStart"],delayStop:[2,"delayStop"],defaultMessage:[3,"defaultMessage"],templateCmp:[4,"templateCmp"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.name,n.delayStart,n.delayStop,n.message,n.template)}),null)}function P(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"block-ui",[],null,null,null,D,L)),s["ɵdid"](1,114688,null,0,S,[O],null,null)],(function(t,e){t(e,1,0)}),null)}var M=s["ɵccf"]("block-ui",S,P,{name:"name",message:"message",delayStart:"delayStart",delayStop:"delayStop",template:"template"},{},["*"]),q=s["ɵcrt"]({encapsulation:2,styles:["\n.block-ui-wrapper {\n  display: none;\n  position: fixed;\n  height: 100%;\n  width: 100%;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.70);\n  z-index: 30000;\n  cursor: wait;\n}\n\n.block-ui-wrapper.block-ui-wrapper--element {\n  position: absolute;\n}\n\n.block-ui-wrapper.active {\n  display: block;\n}\n\n.block-ui-wrapper.block-ui-main {\n  position: fixed;\n}\n\n.block-ui-spinner,\n.block-ui-template {\n  position: absolute;\n  top: 40%;\n  margin: 0 auto;\n  left: 0;\n  right: 0;\n  transform: translateY(-50%);\n}\n\n.block-ui-spinner > .message {\n  font-size: 1.3em;\n  text-align: center;\n  color: #fff;\n}\n\n.block-ui__element {\n  position: relative;\n}\n\n.loader,\n.loader:after {\n  border-radius: 50%;\n  width: 10em;\n  height: 10em;\n}\n.loader {\n  margin: 7px auto;\n  font-size: 5px;\n  position: relative;\n  text-indent: -9999em;\n  border-top: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-right: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-left: 1.1em solid #ffffff;\n  -webkit-transform: translateZ(0);\n  -ms-transform: translateZ(0);\n  transform: translateZ(0);\n  -webkit-animation: load8 1.1s infinite linear;\n  animation: load8 1.1s infinite linear;\n}\n\n@-webkit-keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n"],data:{}});function j(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,1,0,n.message||n.defaultMessage)}))}function F(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","block-ui-spinner"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"div",[["class","loader"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,j)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.message||n.defaultMessage)}),null)}function V(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function G(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,[[1,3],["templateOutlet",2]],null,0,null,V)),(t()(),s["ɵand"](0,null,null,0))],null,null)}function B(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{templateOutlet:0}),(t()(),s["ɵeld"](1,0,null,null,7,"div",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](4,{active:0}),(t()(),s["ɵand"](16777216,null,null,1,null,F)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,G)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=s["ɵinlineInterpolate"](2,"block-ui-wrapper ",n.name," ",n.className,""),r=t(e,4,0,n.active);t(e,3,0,a,r),t(e,6,0,!n.templateCmp),t(e,8,0,n.templateCmp)}),null)}function z(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"block-ui-content",[],null,null,null,B,q)),s["ɵdid"](1,12828672,null,0,I,[O,s.ComponentFactoryResolver,s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}var Y=s["ɵccf"]("block-ui-content",I,z,{name:"name",delayStart:"delayStart",delayStop:"delayStop",defaultMessage:"message",templateCmp:"template"},{},[]),H=n("FE24"),U=n("z/SZ"),W=n("GS7A"),K=n("s7LF"),$=n("ANnk"),J=n("f/UV"),Z=n("aexS"),Q=n("+gVj"),X=n("LvDl"),tt=n("xj/R"),et=n("IheW");let nt=(()=>{class t{constructor(t,e){this.http=t,this.localeId=e}getLocale(){return this.localeId||"en-US"}setLocale(t){document.cookie="cd-lang="+t}getLanguages(){return this.http.get("ui-api/langs")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](s.LOCALE_ID))},token:t,providedIn:"root"}),t})();var at=function(t){return t.cs="Čeština",t["de-DE"]="Deutsch",t["en-US"]="English",t["es-ES"]="Español",t["fr-FR"]="Français",t["id-ID"]="Bahasa Indonesia",t["it-IT"]="Italiano",t["ja-JP"]="日本語",t["ko-KR"]="한국어",t["pl-PL"]="Polski",t["pt-BR"]="Português (brasileiro)",t["zh-CN"]="中文 (简体)",t["zh-TW"]="中文 (繁體)",t}({});let rt={cs:tt.a,de:tt.b,es:tt.e,fr:tt.g,id:tt.m,it:tt.y,ja:tt.z,ko:tt.A,pl:tt.C,pt:tt.D,zh:tt.I};class it{constructor(t,e){this.localeService=t,this.languageService=e,this.isDropdown=!0,this.supportedLanguages=at}ngOnInit(){this.selectedLanguage=this.languageService.getLocale(),this.defineUsedLanguage(),this.languageService.getLanguages().subscribe(t=>{this.supportedLanguages=X.pick(this.supportedLanguages,t)})}defineUsedLanguage(){const t=this.selectedLanguage.slice(0,2);t in rt&&(Object(tt.c)(t,rt[t]),this.localeService.use(t))}reloadWindow(){window.location.reload()}changeLanguage(t){this.languageService.setLocale(t),this.reloadWindow()}}var st=n("ienR"),ut=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ot(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.changeLanguage(t.context.$implicit.key)&&a),a}),null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.value)}))}function lt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,ot)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,2,0,s["ɵunv"](e,2,0,s["ɵnov"](e,3).transform(n.supportedLanguages)))}),null)}function dt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,7,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,H.f,H.f,[]),s["ɵdid"](2,212992,null,0,H.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,H.f,H.a,W.b],null,null),(t()(),s["ɵeld"](3,0,null,null,2,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Select a Language"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,H.g,[s.ChangeDetectorRef,H.c,s.ElementRef,s.Renderer2,H.f],null,null),(t()(),s["ɵted"](5,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,lt)),s["ɵdid"](7,16384,null,0,H.d,[H.f,s.ViewContainerRef,s.TemplateRef],null,null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen),t(e,5,0,n.supportedLanguages[n.selectedLanguage])}))}function ct(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.key),t(e,2,0,e.context.$implicit.key)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function ft(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"select",[["class","form-control custom-select"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"change"===e&&(a=!1!==r.changeLanguage(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedLanguage=n)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](3,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](5,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](6,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](7,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵand"](16777216,null,null,2,null,ct)),s["ɵdid"](9,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,3,0,n.selectedLanguage),t(e,9,0,s["ɵunv"](e,9,0,s["ɵnov"](e,10).transform(n.supportedLanguages)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass)}))}function ht(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,dt)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ft)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.isDropdown),t(e,3,0,!n.isDropdown)}),null)}var gt=n("quSY"),pt=n("oxzT"),bt=n("9nlD"),mt=n("mSOc");class yt{constructor(t,e){this.notificationService=t,this.summaryService=e,this.icons=pt.a,this.hasRunningTasks=!1,this.hasNotifications=!1,this.subs=new gt.a}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{this.hasRunningTasks=t.executing_tasks.length>0})),this.subs.add(this.notificationService.data$.subscribe(t=>{this.hasNotifications=t.length>0}))}ngOnDestroy(){this.subs.unsubscribe()}toggleSidebar(){this.notificationService.toggleSidebar()}}var vt=s["ɵcrt"]({encapsulation:0,styles:[[".running[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{color:#2b99a8}.running[_ngcontent-%COMP%]:hover   i[_ngcontent-%COMP%]{color:#fff}a[_ngcontent-%COMP%]   .dot[_ngcontent-%COMP%]{background-color:#2b99a8;border:2px solid #374249;border-radius:50%;height:11px;position:absolute;right:17px;top:10px;width:10px}a[_ngcontent-%COMP%]:hover   .dot[_ngcontent-%COMP%]{background-color:#fff;border-color:#2b99a8}"]],data:{}});function xt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"span",[["class","dot"]],null,null,null,null,null))],null,null)}function _t(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"a",[["title","Tasks and Notifications"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSidebar()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](3,{running:0}),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵand"](16777216,null,null,1,null,xt)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](10,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tasks and Notifications"]))],(function(t,e){var n=e.component,a=t(e,3,0,n.hasRunningTasks);t(e,2,0,a);var r=t(e,7,0,n.icons.bell);t(e,6,0,r),t(e,9,0,n.hasNotifications)}),null)}var Tt=n("tz6c"),wt=n("e0ae"),Ot=n("Mxhz"),St=n("sne2");class It{constructor(t,e,n,a){this.modalRef=t,this.summaryService=e,this.userService=n,this.authStorageService=a,this.userPermission=this.authStorageService.getPermissions().user}ngOnInit(){this.copyright="Copyright(c) 2022 Ceph contributors.",this.projectConstants=St.c,this.hostAddr=window.location.hostname,this.modalVariables=this.setVariables(),this.subs=this.summaryService.subscribe(t=>{const e=t.version.replace("ceph version ","").split(" ");this.hostAddr=t.mgr_host.replace(/(^\w+:|^)\/\//,"").replace(/\/$/,""),this.versionNumber=e[0],this.versionHash=e[1],this.versionName=e.slice(2,e.length).join(" ")})}ngOnDestroy(){this.subs.unsubscribe()}setVariables(){const t={};t.user=localStorage.getItem("dashboard_username"),t.role="user",this.userPermission.read&&this.userService.get(t.user).subscribe(e=>{t.role=e.roles});const e=Object(wt.a)();return t.browserName=e&&e.name?e.name:"Not detected",t.browserVersion=e&&e.version?e.version:"Not detected",t.browserOS=e&&e.os?e.os:"Not detected",t}}class Nt{constructor(t,e){this.modalService=t,this.docService=e,this.icons=pt.a}ngOnInit(){this.docService.subscribeOnce("dashboard",t=>{this.docsUrl=t})}openAboutModal(){this.modalRef=this.modalService.show(It),this.modalRef.setClass("modal-lg")}}var Ct=n("LqlI"),Rt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function At(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"a",[["class","dropdown-item text-capitalize"],["target","_blank"]],[[8,"href",4]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](5,{disabled:0}),(t()(),s["ɵted"](-1,null,["documentation"])),(t()(),s["ɵeld"](7,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["class","dropdown-item"],["href","/docs"],["target","_blank"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["API"])),(t()(),s["ɵeld"](10,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.openAboutModal()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["About"]))],(function(t,e){var n=t(e,5,0,!e.component.docsUrl);t(e,4,0,"dropdown-item text-capitalize",n)}),(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function kt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,H.f,H.f,[]),s["ɵdid"](2,212992,null,0,H.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,H.f,H.a,W.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Help"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,H.g,[s.ChangeDetectorRef,H.c,s.ElementRef,s.Renderer2,H.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Help"])),(t()(),s["ɵand"](16777216,null,null,1,null,At)),s["ɵdid"](12,16384,null,0,H.d,[H.f,s.ViewContainerRef,s.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.questionCircle);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}var Et=n("iInd");class Lt{constructor(t){this.authStorageService=t,this.icons=pt.a;const e=this.authStorageService.getPermissions();this.userPermission=e.user,this.configOptPermission=e.configOpt}ngOnInit(){}}var Dt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Pt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/user-management"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["User management"]))],(function(t,e){t(e,2,0,"/user-management")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function Mt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/telemetry"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Telemetry configuration"]))],(function(t,e){t(e,2,0,"/telemetry")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function qt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Pt)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mt)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.userPermission.read),t(e,4,0,n.configOptPermission.read)}),null)}function jt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,H.f,H.f,[]),s["ɵdid"](2,212992,null,0,H.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,H.f,H.a,W.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Dashboard Settings"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,H.g,[s.ChangeDetectorRef,H.c,s.ElementRef,s.Renderer2,H.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Dashboard Settings"])),(t()(),s["ɵand"](16777216,null,null,1,null,qt)),s["ɵdid"](12,16384,null,0,H.d,[H.f,s.ViewContainerRef,s.TemplateRef],null,null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.deepCheck);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}function Ft(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,jt)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.userPermission.read)}),null)}var Vt=n("DSvg");class Gt{constructor(t,e){this.authStorageService=t,this.authService=e,this.icons=pt.a}ngOnInit(){this.username=this.authStorageService.getUsername(),this.sso=this.authStorageService.isSSO()}logout(){this.authService.logout()}}var Bt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function zt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"a",[["class","dropdown-item"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](5,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](6,1),(t()(),s["ɵeld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Change password"]))],(function(t,e){var n=e.component;t(e,2,0,"/user-profile/edit");var a=t(e,6,0,n.icons.lock);t(e,5,0,a)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function Yt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"li",[["class","disabled"],["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"a",[["class","dropdown-item disabled"],["href","#"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Signed in as "])),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,0,"li",[["class","dropdown-divider"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,zt)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,null,7,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,6,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.logout()&&a),a}),null,null)),(t()(),s["ɵeld"](11,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](13,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](14,1),(t()(),s["ɵeld"](15,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sign out"]))],(function(t,e){var n=e.component;t(e,8,0,!n.sso);var a=t(e,14,0,n.icons.signOut);t(e,13,0,a)}),(function(t,e){t(e,5,0,e.component.username)}))}function Ht(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,H.f,H.f,[]),s["ɵdid"](2,212992,null,0,H.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,H.f,H.a,W.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Logged in user"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,H.g,[s.ChangeDetectorRef,H.c,s.ElementRef,s.Renderer2,H.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Logged in user"])),(t()(),s["ɵand"](16777216,null,null,1,null,Yt)),s["ɵdid"](12,16384,null,0,H.d,[H.f,s.ViewContainerRef,s.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.user);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}const Ut=[Object(W.h)({height:0,visibility:"hidden"}),Object(W.e)("400ms cubic-bezier(0.4,0.0,0.2,1)",Object(W.h)({height:"*",visibility:"visible"}))],Wt=[Object(W.h)({height:"*",visibility:"visible"}),Object(W.e)("400ms cubic-bezier(0.4,0.0,0.2,1)",Object(W.h)({height:0,visibility:"hidden"}))];class Kt{constructor(t,e,n){this._el=t,this._renderer=e,this.collapsed=new s.EventEmitter,this.collapses=new s.EventEmitter,this.expanded=new s.EventEmitter,this.expands=new s.EventEmitter,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapse=!0,this.isCollapsing=!1,this.isAnimated=!1,this._display="block",this._stylesLoaded=!1,this._COLLAPSE_ACTION_NAME="collapse",this._EXPAND_ACTION_NAME="expand",this._factoryCollapseAnimation=n.build(Wt),this._factoryExpandAnimation=n.build(Ut)}set display(t){this.isAnimated?(this._display=t,"none"!==t?this.show():this.hide()):this._renderer.setStyle(this._el.nativeElement,"display",t)}set collapse(t){this._player&&!this._isAnimationDone||(this.isExpanded=t,this.toggle())}get collapse(){return this.isExpanded}ngAfterViewChecked(){this._stylesLoaded=!0,this._player&&this._isAnimationDone&&(this._player.reset(),this._renderer.setStyle(this._el.nativeElement,"height","*"))}toggle(){this.isExpanded?this.hide():this.show()}hide(){this.isCollapsing=!0,this.isExpanded=!1,this.isCollapsed=!0,this.isCollapsing=!1,this.collapses.emit(this),this._isAnimationDone=!1,this.animationRun(this.isAnimated,this._COLLAPSE_ACTION_NAME)(()=>{this._isAnimationDone=!0,this.collapsed.emit(this),this._renderer.setStyle(this._el.nativeElement,"display","none")})}show(){this._renderer.setStyle(this._el.nativeElement,"display",this._display),this.isCollapsing=!0,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapsing=!1,this.expands.emit(this),this._isAnimationDone=!1,this.animationRun(this.isAnimated,this._EXPAND_ACTION_NAME)(()=>{this._isAnimationDone=!0,this.expanded.emit(this)})}animationRun(t,e){if(!t||!this._stylesLoaded)return t=>t();this._renderer.setStyle(this._el.nativeElement,"overflow","hidden"),this._renderer.addClass(this._el.nativeElement,"collapse");const n=e===this._EXPAND_ACTION_NAME?this._factoryExpandAnimation:this._factoryCollapseAnimation;return this._player&&this._player.destroy(),this._player=n.create(this._el.nativeElement),this._player.play(),t=>this._player.onDone(t)}}class $t{static forRoot(){return{ngModule:$t,providers:[]}}}class Jt{transform(t){return"HEALTH_OK"===t?{color:"#00bb00"}:"HEALTH_WARN"===t?{color:"#ffa500"}:"HEALTH_ERR"===t?{color:"#ff0000"}:null}}var Zt=n("DqMs"),Qt=n("/NlG"),Xt=n("GiVz"),te=n("20UP"),ee=n("oMSZ");class ne{constructor(t,e){this.settingsService=t,this.authStorageService=e,this.displayNotification=!1}ngOnInit(){this.settingsService.getStandardSettings().subscribe(t=>{this.pwdExpirationSettings=new ee.a(t);const e=this.authStorageService.getPwdExpirationDate();e&&(this.expirationDays=this.getExpirationDays(e),this.alertType=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning2?"danger":"warning",this.displayNotification=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning1,this.authStorageService.isPwdDisplayedSource.next(this.displayNotification))})}ngOnDestroy(){this.authStorageService.isPwdDisplayedSource.next(!1)}getExpirationDays(t){const e=new Date,n=new Date(1e3*t);return Math.floor((n.valueOf()-e.valueOf())/864e5)}onDismissed(){this.authStorageService.isPwdDisplayedSource.next(!1),this.displayNotification=!1}}var ae=s["ɵcrt"]({encapsulation:0,styles:[[".no-margin-bottom[_ngcontent-%COMP%]     .alert{margin-bottom:0}"]],data:{}});function re(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Your password will expire in "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["less than 1"])),(t()(),s["ɵted"](-1,null,[" day. Click "])),(t()(),s["ɵeld"](5,0,null,null,2,"a",[["class","alert-link"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to change it now."]))],(function(t,e){t(e,6,0,"/user-profile/edit")}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function ie(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Your password will expire in "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""])),(t()(),s["ɵted"](-1,null,[" day(s). Click "])),(t()(),s["ɵeld"](5,0,null,null,2,"a",[["class","alert-link"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to change it now."]))],(function(t,e){t(e,6,0,"/user-profile/edit")}),(function(t,e){t(e,3,0,e.component.expirationDays),t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function se(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["class","no-margin-bottom"],["size","slim"]],null,[[null,"dismissed"]],(function(t,e,n){var a=!0;return"dismissed"===e&&(a=!1!==t.component.onDismissed()&&a),a}),Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"],size:[1,"size"],showTitle:[2,"showTitle"],dismissible:[3,"dismissible"]},{dismissed:"dismissed"}),(t()(),s["ɵand"](16777216,null,0,1,null,re)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ie)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.alertType,"slim",!1,"danger"!==n.alertType),t(e,3,0,0===n.expirationDays),t(e,5,0,n.expirationDays>0)}),null)}function ue(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,se)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.displayNotification)}),null)}var oe=n("pL04");let le=(()=>{class t{constructor(t){this.http=t,this.url="api/mgr/module"}list(){return this.http.get(""+this.url)}getConfig(t){return this.http.get(`${this.url}/${t}`)}updateConfig(t,e){return this.http.put(`${this.url}/${t}`,{config:e})}enable(t){return this.http.post(`${this.url}/${t}/enable`,null)}disable(t){return this.http.post(`${this.url}/${t}/disable`,null)}getOptions(t){return this.http.get(`${this.url}/${t}/options`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t})();var de=n("mtw6");let ce=(()=>{class t{constructor(){this.visible=!1,this.update=new s.EventEmitter}setVisibility(t){this.visible=t,this.update.emit(t)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();class fe{constructor(t,e,n,a,r){this.mgrModuleService=t,this.authStorageService=e,this.notificationService=n,this.telemetryNotificationService=a,this.i18n=r,this.displayNotification=!1,this.notificationSeverity="warning"}ngOnInit(){if(this.telemetryNotificationService.update.subscribe(t=>{this.displayNotification=t}),!this.isNotificationHidden()){const t=this.authStorageService.getPermissions().configOpt;X.every(Object.values(t))&&this.mgrModuleService.getConfig("telemetry").subscribe(t=>{t.enabled||this.telemetryNotificationService.setVisibility(!0)})}}ngOnDestroy(){this.telemetryNotificationService.setVisibility(!1)}isNotificationHidden(){return"true"===localStorage.getItem("telemetry_notification_hidden")}onDismissed(){this.telemetryNotificationService.setVisibility(!1),localStorage.setItem("telemetry_notification_hidden","true"),this.notificationService.show(de.a.success,this.i18n("Telemetry activation reminder muted"),this.i18n("You can activate the module on the Telemetry configuration page (<b>Dashboard Settings</b> -> <b>Telemetry configuration</b>) at any time."))}}var he=s["ɵcrt"]({encapsulation:0,styles:[[".no-margin-bottom[_ngcontent-%COMP%]     .alert{margin-bottom:0}.activate-button[_ngcontent-%COMP%]{background-color:#fcecba;border:.5px solid #495057;border-radius:10%;padding:.1rem .4rem}.activate-text[_ngcontent-%COMP%]{color:#495057;font-weight:700}"]],data:{}});function ge(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"cd-alert-panel",[["class","no-margin-bottom"],["size","slim"]],null,[[null,"dismissed"]],(function(t,e,n){var a=!0;return"dismissed"===e&&(a=!1!==t.component.onDismissed()&&a),a}),Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"],size:[1,"size"],showTitle:[2,"showTitle"],dismissible:[3,"dismissible"]},{dismissed:"dismissed"}),(t()(),s["ɵeld"](2,0,null,0,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The Ceph community needs your help to continue improving: please "])),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","btn activate-button alert-link activate-text"],["routerLink","/telemetry"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Activate"])),(t()(),s["ɵted"](-1,null,[" the "])),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["href","https://docs.ceph.com/en/latest/mgr/telemetry/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Telemetry"])),(t()(),s["ɵted"](-1,null,[" module."]))],(function(t,e){var n=e.component;t(e,1,0,n.notificationSeverity,"slim",!1,"danger"!==n.notificationSeverity),t(e,5,0,"/telemetry")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function pe(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ge)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.displayNotification)}),null)}var be=n("Yrry"),me=n("cUpR"),ye=n("2Vo4"),ve=n("LRne"),xe=n("EY2u"),_e=n("5+tZ"),Te=n("JIr8"),we=n("vkgz"),Oe=n("D0XW"),Se=n("7o/Q"),Ie=n("WMd4");function Ne(t,e=Oe.a){var n;const a=(n=t)instanceof Date&&!isNaN(+n)?+t-e.now():Math.abs(t);return t=>t.lift(new Ce(a,e))}class Ce{constructor(t,e){this.delay=t,this.scheduler=e}call(t,e){return e.subscribe(new Re(t,this.delay,this.scheduler))}}class Re extends Se.a{constructor(t,e,n){super(t),this.delay=e,this.scheduler=n,this.queue=[],this.active=!1,this.errored=!1}static dispatch(t){const e=t.source,n=e.queue,a=t.scheduler,r=t.destination;for(;n.length>0&&n[0].time-a.now()<=0;)n.shift().notification.observe(r);if(n.length>0){const e=Math.max(0,n[0].time-a.now());this.schedule(t,e)}else this.unsubscribe(),e.active=!1}_schedule(t){this.active=!0,this.destination.add(t.schedule(Re.dispatch,this.delay,{source:this,destination:this.destination,scheduler:t}))}scheduleNotification(t){if(!0===this.errored)return;const e=this.scheduler,n=new Ae(e.now()+this.delay,t);this.queue.push(n),!1===this.active&&this._schedule(e)}_next(t){this.scheduleNotification(Ie.a.createNext(t))}_error(t){this.errored=!0,this.queue=[],this.destination.error(t),this.unsubscribe()}_complete(){this.scheduleNotification(Ie.a.createComplete()),this.unsubscribe()}}class Ae{constructor(t,e){this.time=t,this.notification=e}}class ke{constructor(t,e){this.count=t,this.source=e}call(t,e){return e.subscribe(new Ee(t,this.count,this.source))}}class Ee extends Se.a{constructor(t,e,n){super(t),this.count=e,this.source=n}complete(){if(!this.isStopped){const{source:t,count:e}=this;if(0===e)return super.complete();e>-1&&(this.count=e-1),t.subscribe(this._unsubscribeAndRecycle())}}}let Le=(()=>{class t{constructor(t){this.http=t,this.url="ui-api/motd"}get(){return this.http.get(this.url)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:"root"}),t})(),De=(()=>{class t{constructor(t){this.motdService=t,this.motdSource=new ye.a(null),this.localStorageKey="dashboard_motd_hidden",this.motd$=this.motdSource.asObservable(),this.subscription=Object(ve.a)(!0).pipe(Object(_e.a)(()=>this.motdService.get()),Object(Te.a)(t=>(X.isFunction(t.preventDefault)&&t.preventDefault(),xe.a)),Object(we.a)(t=>this.processResponse(t)),Ne(6e4),function(t=-1){return e=>0===t?Object(xe.b)():e.lift(new ke(t<0?-1:t-1,e))}()).subscribe()}ngOnDestroy(){this.subscription.unsubscribe()}hide(){const t=this.motdSource.getValue();if(t){const e=`${t.severity}:${t.md5}`;switch(t.severity){case"info":localStorage.setItem(this.localStorageKey,e),sessionStorage.removeItem(this.localStorageKey);break;case"warning":sessionStorage.setItem(this.localStorageKey,e),localStorage.removeItem(this.localStorageKey)}}this.motdSource.next(null)}processResponse(t){const e=sessionStorage.getItem(this.localStorageKey)||localStorage.getItem(this.localStorageKey);let n=X.isNull(e);if(!n&&t){const[a,r]=e.split(":");a===t.severity&&r===t.md5||(n=!0,sessionStorage.removeItem(this.localStorageKey),localStorage.removeItem(this.localStorageKey))}n&&this.motdSource.next(t)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Le))},token:t,providedIn:"root"}),t})();class Pe{constructor(t){this.motdNotificationService=t,this.motd=void 0}ngOnInit(){this.subscription=this.motdNotificationService.motd$.subscribe(t=>{this.motd=t})}ngOnDestroy(){this.subscription.unsubscribe()}onDismissed(){this.motdNotificationService.hide()}}var Me=s["ɵcrt"]({encapsulation:0,styles:[[".no-margin-bottom[_ngcontent-%COMP%]     .alert{margin-bottom:0}"]],data:{}});function qe(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-alert-panel",[["class","no-margin-bottom"],["size","slim"]],null,[[null,"dismissed"]],(function(t,e,n){var a=!0;return"dismissed"===e&&(a=!1!==t.component.onDismissed()&&a),a}),Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"],size:[1,"size"],showTitle:[2,"showTitle"],dismissible:[3,"dismissible"]},{dismissed:"dismissed"}),(t()(),s["ɵeld"](2,0,null,0,1,"span",[],[[8,"innerHTML",1]],null,null,null,null)),s["ɵppd"](3,1)],(function(t,e){var n=e.component;t(e,1,0,n.motd.severity,"slim",!1,"danger"!==n.motd.severity)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.motd.message));t(e,2,0,a)}))}function je(t){return s["ɵvid"](0,[s["ɵpid"](0,be.a,[me.b]),(t()(),s["ɵand"](16777216,null,null,1,null,qe)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.component.motd)}),null)}var Fe=n("7qid"),Ve=n("38Bd"),Ge=n("wd/R");class Be{transform(t,e=!1){return e?Ge(t).fromNow():this._forHumans(t)}_forHumans(t){const e=[[""+Math.floor(t/31536e3),"years"],[""+Math.floor(t%31536e3/86400),"days"],[""+Math.floor(t%86400/3600),"hours"],[""+Math.floor(t%3600/60),"minutes"],[""+Math.floor(t%60),"seconds"]];let n="";for(let a=0,r=e.length;a<r;a++)"0"!==e[a][0]&&(n+=" "+e[a][0]+" "+("1"===e[a][0]?e[a][1].substr(0,e[a][1].length-1):e[a][1]));return n.trim()||"1 second"}}var ze=n("a0VL"),Ye=n("moLw"),He=n("WF9J"),Ue=s["ɵcrt"]({encapsulation:2,styles:["[data-simplebar]{position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;flex-wrap:wrap;-webkit-box-pack:start;justify-content:flex-start;align-content:flex-start;-webkit-box-align:start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;visibility:visible;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;-webkit-box-flex:inherit;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;-webkit-transition:opacity linear;transition:opacity linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}","ngx-simplebar{display:block}"],data:{}});function We(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","simplebar-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"div",[["class","simplebar-height-auto-observer-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"div",[["class","simplebar-height-auto-observer"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,4,"div",[["class","simplebar-mask"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"div",[["class","simplebar-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"div",[["class","simplebar-content-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"div",[["class","simplebar-content"]],null,null,null,null,null)),s["ɵncd"](null,0),(t()(),s["ɵeld"](8,0,null,null,0,"div",[["class","simplebar-placeholder"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"div",[["class","simplebar-track simplebar-horizontal"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"div",[["class","simplebar-scrollbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"div",[["class","simplebar-track simplebar-vertical"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,0,"div",[["class","simplebar-scrollbar"]],null,null,null,null,null))],null,null)}var Ke=n("O9Tv"),$e=n("G1I9"),Je=n("lJxs");let Ze=(()=>{class t{constructor(t,e){this.http=t,this.settingsService=e,this.baseURL="api/prometheus",this.settingsKey={alertmanager:"api/settings/alertmanager-api-host",prometheus:"api/settings/prometheus-api-host"}}ifAlertmanagerConfigured(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.alertmanager,t,e)}disableAlertmanagerConfig(){this.settingsService.disableSetting(this.settingsKey.alertmanager)}ifPrometheusConfigured(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.prometheus,t,e)}disablePrometheusConfig(){this.settingsService.disableSetting(this.settingsKey.prometheus)}getAlerts(t={}){return this.http.get(this.baseURL,{params:t})}getSilences(t={}){return this.http.get(this.baseURL+"/silences",{params:t})}getRules(t="all"){return this.http.get(this.baseURL+"/rules").pipe(Object(Je.a)(e=>(["alerting","rewrites"].includes(t)&&e.groups.map(e=>{e.rules=e.rules.filter(e=>e.type===t)}),e)))}setSilence(t){return this.http.post(this.baseURL+"/silence",t,{observe:"response"})}expireSilence(t){return this.http.delete(`${this.baseURL}/silence/${t}`,{observe:"response"})}getNotifications(t){return this.http.get(`${this.baseURL}/notifications?from=${t&&t.id?t.id:"last"}`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](te.a))},token:t,providedIn:oe.a}),t})(),Qe=(()=>{class t{constructor(t){this.notificationService=t}sendNotifications(t){t.forEach(t=>this.notificationService.show(t))}convertToCustomAlerts(t){return X.uniqWith(t.map(t=>({status:X.isObject(t.status)?t.status.state:this.getPrometheusNotificationStatus(t),name:t.labels.alertname,url:t.generatorURL,description:t.annotations.description,fingerprint:X.isObject(t.status)&&t.fingerprint})),X.isEqual)}getPrometheusNotificationStatus(t){const e=t.status;return"firing"===e?"active":e}convertAlertToNotification(t){return new $e.b(this.formatType(t.status),`${t.name} (${t.status})`,this.appendSourceLink(t,t.description),void 0,"Prometheus")}formatType(t){return de.a[X.findKey({error:["firing","active"],info:["suppressed","unprocessed"],success:["resolved"]},e=>e.includes(t))]}appendSourceLink(t,e){return`${e} <a href="${t.url}" target="_blank"><i class="${pt.a.lineChart}"></i></a>`}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](bt.a))},token:t,providedIn:"root"}),t})(),Xe=(()=>{class t{constructor(t,e){this.alertFormatter=t,this.prometheusService=e,this.canAlertsBeNotified=!1,this.alerts=[],this.rules=[]}getAlerts(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getAlerts().subscribe(t=>this.handleAlerts(t),t=>{[404,504].includes(t.status)&&this.prometheusService.disableAlertmanagerConfig()})})}getRules(){this.prometheusService.ifPrometheusConfigured(()=>{this.prometheusService.getRules("alerting").subscribe(t=>{this.rules=t.groups.reduce((t,e)=>t.concat(e.rules.map(t=>(t.group=e.name,t))),[])})})}refresh(){this.getAlerts(),this.getRules()}handleAlerts(t){this.canAlertsBeNotified&&this.notifyOnAlertChanges(t,this.alerts),this.activeAlerts=X.reduce(this.alerts,(t,e)=>"active"===e.status.state?++t:t,0),this.alerts=t,this.canAlertsBeNotified=!0}notifyOnAlertChanges(t,e){const n=this.getChangedAlerts(this.alertFormatter.convertToCustomAlerts(t),this.alertFormatter.convertToCustomAlerts(e)).map(t=>this.alertFormatter.convertAlertToNotification(t));this.alertFormatter.sendNotifications(n)}getChangedAlerts(t,e){return X.differenceWith(t,e,X.isEqual).concat(this.getVanishedAlerts(t,e))}getVanishedAlerts(t,e){return X.differenceWith(e,t,(t,e)=>t.fingerprint===e.fingerprint).map(t=>(t.status="resolved",t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Qe),s["ɵɵinject"](Ze))},token:t,providedIn:"root"}),t})(),tn=(()=>{class t{constructor(t,e){this.alertFormatter=t,this.prometheusService=e,this.backendFailure=!1,this.notifications=[]}refresh(){this.backendFailure||this.prometheusService.getNotifications(X.last(this.notifications)).subscribe(t=>this.handleNotifications(t),()=>this.backendFailure=!0)}handleNotifications(t){0!==t.length&&(this.notifications.length>0&&this.alertFormatter.sendNotifications(X.flatten(t.map(t=>this.formatNotification(t)))),this.notifications=this.notifications.concat(t))}formatNotification(t){return this.alertFormatter.convertToCustomAlerts(t.alerts).map(t=>this.alertFormatter.convertAlertToNotification(t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Qe),s["ɵɵinject"](Ze))},token:t,providedIn:"root"}),t})();var en=n("ufoC");class nn{constructor(t,e,n,a,r,i,s,u){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.prometheusNotificationService=a,this.authStorageService=r,this.prometheusAlertService=i,this.ngZone=s,this.cdRef=u,this.isSidebarOpened=!1,this.executingTasks=[],this.subs=new gt.a,this.icons=pt.a,this.last_task="",this.mutex=new Ke.Mutex,this.simplebar={autoHide:!1},this.notifications=[]}ngOnDestroy(){window.clearInterval(this.interval),window.clearTimeout(this.timeout),this.subs.unsubscribe()}ngOnInit(){this.last_task=window.localStorage.getItem("last_task");const t=this.authStorageService.getPermissions();t.prometheus.read&&t.configOpt.read&&(this.triggerPrometheusAlerts(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.triggerPrometheusAlerts()})},5e3)})),this.subs.add(this.notificationService.data$.subscribe(t=>{this.notifications=X.orderBy(t,["timestamp"],["desc"]),this.cdRef.detectChanges()})),this.subs.add(this.notificationService.sidebarSubject.subscribe(t=>{this.isSidebarOpened=!t&&!this.isSidebarOpened,window.clearTimeout(this.timeout),this.timeout=window.setTimeout(()=>{this.cdRef.detectChanges()},0)})),this.subs.add(this.summaryService.subscribe(t=>{this._handleTasks(t.executing_tasks),this.mutex.acquire().then(e=>{X.filter(t.finished_tasks,t=>!this.last_task||Ge(t.end_time).isAfter(this.last_task)).forEach(t=>{const e=this.notificationService.finishedTaskToNotification(t,t.success),n=new $e.a(e);n.timestamp=t.end_time,n.duration=t.duration,this.last_task&&!Ge(t.end_time).isAfter(this.last_task)||(this.last_task=t.end_time,window.localStorage.setItem("last_task",this.last_task)),this.notificationService.save(n)}),this.cdRef.detectChanges(),e()})}))}_handleTasks(t){for(const e of t)e.description=this.taskMessageService.getRunningTitle(e);this.executingTasks=t}triggerPrometheusAlerts(){this.prometheusAlertService.refresh(),this.prometheusNotificationService.refresh()}removeAll(){this.notificationService.removeAll()}remove(t){this.notificationService.remove(t)}closeSidebar(){this.isSidebarOpened=!1}trackByFn(t){return t}}var an=s["ɵcrt"]({encapsulation:0,styles:[["[_nghost-%COMP%]{position:fixed;top:53px;bottom:10px;right:-350px;width:350px;max-width:90vw;z-index:9;transition:all .6s}.active[_nghost-%COMP%]{right:20px}.card[_ngcontent-%COMP%]{height:100%}ngx-simplebar[_ngcontent-%COMP%]{height:calc(100% - 42.2px)}.separator[_ngcontent-%COMP%]{padding:5px 12px;color:#90949c;background-color:#eee;font-size:12px}.btn-link[_ngcontent-%COMP%]   .fa-trash-o[_ngcontent-%COMP%]{color:#000}table[_ngcontent-%COMP%]{width:100%}.row[_ngcontent-%COMP%]{margin-left:0;margin-right:0}"]],data:{}});function rn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,27,"div",[["class","card tc_task border-0 mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,26,"div",[["class","row no-gutters"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,12,"div",[["class","col-md-3 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,11,"span",[["class","text-info"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](7,2),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,2),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,4),(t()(),s["ɵeld"](16,0,null,null,12,"div",[["class","col-md-9"]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,11,"div",[["class","card-body p-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,1,"h6",[["class","card-title bold"]],null,null,null,null,null)),(t()(),s["ɵted"](19,null,["",""])),(t()(),s["ɵeld"](20,0,null,null,2,"div",[["class","progress mb-1"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,1,"progressbar",[["class","progress-striped active"],["max","100"]],[[1,"max",0],[2,"progress",null]],null,null,Fe.b,Fe.a)),s["ɵdid"](22,49152,null,0,Ve.b,[Ve.c],{animate:[0,"animate"],striped:[1,"striped"],value:[2,"value"],max:[3,"max"]},null),(t()(),s["ɵeld"](23,0,null,null,5,"p",[["class","card-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,2,"small",[["class","date float-left"]],null,null,null,null,null)),(t()(),s["ɵted"](25,null,[" "," "])),s["ɵppd"](26,1),(t()(),s["ɵeld"](27,0,null,null,1,"span",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵted"](28,null,[" "," % "])),(t()(),s["ɵeld"](29,0,null,null,0,"hr",[],null,null,null,null,null))],(function(t,e){var n=e.component,a=t(e,7,0,n.icons.stack,n.icons.large2x);t(e,6,0,"text-info",a);var r=t(e,11,0,n.icons.stack2x,n.icons.circle);t(e,10,0,r);var i=t(e,15,0,n.icons.stack1x,n.icons.spinner,n.icons.spin,n.icons.inverse);t(e,14,0,i),t(e,22,0,!0,!0,e.context.$implicit.progress,"100")}),(function(t,e){t(e,19,0,e.context.$implicit.description),t(e,21,0,s["ɵnov"](e,22).max,s["ɵnov"](e,22).addClass);var n=s["ɵunv"](e,25,0,t(e,26,0,s["ɵnov"](e.parent.parent,0),e.context.$implicit.begin_time));t(e,25,0,n),t(e,28,0,e.context.$implicit.progress||0)}))}function sn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,rn)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.executingTasks,n.trackByFn)}),null)}function un(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"small",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Duration:"])),(t()(),s["ɵted"](4,null,[" "," "])),s["ɵpid"](0,Be,[]),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(e.parent.context.$implicit.duration)))}))}function on(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,37,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,35,"div",[["class","card tc_notification border-0 mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,34,"div",[["class","row no-gutters"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,12,"div",[["class","col-md-3 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,11,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,3),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,2),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,3),(t()(),s["ɵeld"](16,0,null,null,20,"div",[["class","col-md-9"]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,19,"div",[["class","card-body p-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,4,"button",[["class","btn btn-link float-right mt-0 pt-0"],["title","Remove notification"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.remove(t.context.index),a=!1!==n.stopPropagation()&&a),a}),null,null)),(t()(),s["ɵeld"](19,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](21,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](22,1),(t()(),s["ɵeld"](23,0,null,null,1,"h6",[["class","card-title bold"]],null,null,null,null,null)),(t()(),s["ɵted"](24,null,["",""])),(t()(),s["ɵeld"](25,0,null,null,0,"p",[["class","card-text"]],[[8,"innerHTML",1]],null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,10,"p",[["class","card-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,un)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](29,0,null,null,3,"small",[["class","date"]],[[8,"title",0]],null,null,null,null)),s["ɵppd"](30,1),(t()(),s["ɵted"](31,null,["",""])),s["ɵpid"](0,Be,[]),(t()(),s["ɵeld"](33,0,null,null,3,"i",[["class","float-right custom-icon"]],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](35,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](36,1),(t()(),s["ɵeld"](37,0,null,null,0,"hr",[],null,null,null,null,null))],(function(t,e){var n=e.component,a=t(e,7,0,n.icons.stack,n.icons.large2x,e.context.$implicit.textClass);t(e,6,0,a);var r=t(e,11,0,n.icons.circle,n.icons.stack2x);t(e,10,0,r);var i=t(e,15,0,n.icons.stack1x,n.icons.inverse,e.context.$implicit.iconClass);t(e,14,0,i);var s=t(e,22,0,n.icons.trash);t(e,21,0,s),t(e,28,0,e.context.$implicit.duration);var u=t(e,36,0,e.context.$implicit.applicationClass);t(e,35,0,"float-right custom-icon",u)}),(function(t,e){t(e,24,0,e.context.$implicit.title),t(e,25,0,e.context.$implicit.message);var n=s["ɵunv"](e,29,0,t(e,30,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.timestamp));t(e,29,0,n),t(e,31,0,s["ɵunv"](e,31,0,s["ɵnov"](e,32).transform(e.context.$implicit.timestamp,!0))),t(e,33,0,e.context.$implicit.application)}))}function ln(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"button",[["class","btn btn-light btn-block"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.removeAll(),a=!1!==n.stopPropagation()&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵted"](-1,null,["   "])),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clear notifications"])),(t()(),s["ɵeld"](9,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,on)),s["ɵdid"](11,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,5,0,n.icons.trash);t(e,4,0,a),t(e,11,0,n.notifications)}),null)}function dn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ln)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.notifications.length>0)}),null)}function cn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"div",[["class","message text-center"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["There are no notifications."]))],null,null)}function fn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,cn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,0===n.notifications.length&&0===n.executingTasks.length)}),null)}function hn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function gn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function pn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function bn(t){return s["ɵvid"](2,[s["ɵpid"](0,ze.a,[i.DatePipe]),(t()(),s["ɵand"](0,[["tasksTpl",2]],null,0,null,sn)),(t()(),s["ɵand"](0,[["notificationsTpl",2]],null,0,null,dn)),(t()(),s["ɵand"](0,[["emptyTpl",2]],null,0,null,fn)),(t()(),s["ɵeld"](4,0,null,null,16,"div",[["class","card"]],null,[[null,"clickOutside"]],(function(t,e,n){var a=!0;return"clickOutside"===e&&(a=!1!==t.component.closeSidebar()&&a),a}),null,null)),s["ɵdid"](5,737280,null,0,Ye.ClickOutsideDirective,[s.ElementRef,s.NgZone,s.PLATFORM_ID],{clickOutsideEnabled:[0,"clickOutsideEnabled"]},{clickOutside:"clickOutside"}),(t()(),s["ɵeld"](6,0,null,null,5,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tasks and Notifications"])),(t()(),s["ɵeld"](9,0,null,null,2,"button",[["class","close float-right"],["tabindex","-1"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.closeSidebar()&&a),a}),null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](12,0,null,null,8,"ngx-simplebar",[["data-simplebar","init"]],null,null,null,We,Ue)),s["ɵdid"](13,4440064,null,0,He.a,[s.ElementRef],{options:[0,"options"]},null),(t()(),s["ɵeld"](14,0,null,0,6,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,hn)),s["ɵdid"](16,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gn)),s["ɵdid"](18,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pn)),s["ɵdid"](20,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.isSidebarOpened),t(e,13,0,n.simplebar),t(e,16,0,s["ɵnov"](e,1)),t(e,18,0,s["ɵnov"](e,2)),t(e,20,0,s["ɵnov"](e,3))}),null)}var mn=n("ej+x");class yn{constructor(t,e,n,a,r,i){this.authStorageService=t,this.summaryService=e,this.featureToggles=n,this.telemetryNotificationService=a,this.prometheusAlertService=r,this.motdNotificationService=i,this.notifications=[],this.icons=pt.a,this.rightSidebarOpen=!1,this.showMenuSidebar=!0,this.displayedSubMenu="",this.simplebar={autoHide:!1},this.subs=new gt.a,this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}get class(){return"top-notification-"+this.notifications.length}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{this.summaryData=t})),this.subs.add(this.authStorageService.isPwdDisplayed$.subscribe(t=>{this.showTopNotification("isPwdDisplayed",t)})),this.subs.add(this.telemetryNotificationService.update.subscribe(t=>{this.showTopNotification("telemetryNotificationEnabled",t)})),this.subs.add(this.motdNotificationService.motd$.subscribe(t=>{this.showTopNotification("motdNotificationEnabled",X.isPlainObject(t))}))}ngOnDestroy(){this.subs.unsubscribe()}blockHealthColor(){if(this.summaryData&&this.summaryData.rbd_mirroring){if(this.summaryData.rbd_mirroring.errors>0)return{color:"#d9534f"};if(this.summaryData.rbd_mirroring.warnings>0)return{color:"#f0ad4e"}}}toggleSubMenu(t){this.displayedSubMenu=this.displayedSubMenu===t?"":t}toggleRightSidebar(){this.rightSidebarOpen=!this.rightSidebarOpen}showTopNotification(t,e){if(e)this.notifications.includes(t)||this.notifications.push(t);else{const e=this.notifications.indexOf(t);e>=0&&this.notifications.splice(e,1)}}}var vn=s["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.cd-navbar-main[_ngcontent-%COMP%]{display:flex;flex:1;flex-direction:column;height:100%}  .cd-navbar-top .cd-navbar-brand{background:#374249;border-top:4px solid #2b99a8}  .cd-navbar-top .cd-navbar-brand .navbar-brand,   .cd-navbar-top .cd-navbar-brand .navbar-brand:hover{color:#eee;height:auto;padding:0}  .cd-navbar-top .cd-navbar-brand .navbar-brand>img{height:25px}  .cd-navbar-top .cd-navbar-brand .navbar-toggler{border:0}  .cd-navbar-top .cd-navbar-brand .navbar-toggler:focus,   .cd-navbar-top .cd-navbar-brand .navbar-toggler:hover{outline:0}  .cd-navbar-top .cd-navbar-brand .navbar-toggler .fa-navicon{color:#eee}  .cd-navbar-top .cd-navbar-brand .navbar-collapse{padding:0}  .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>.active>a{color:#eee;background-color:#2b99a8}  .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a,   .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:focus,   .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}  .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown]>a,   .cd-navbar-top .navbar-nav>li>.cd-navbar>a,   .cd-navbar-top .navbar-nav>li>a{color:#eee;line-height:1;padding:13.5px 18px!important;position:relative;display:block;text-decoration:none}  .cd-navbar-top .navbar-nav .nav-link,   .cd-navbar-top .navbar-nav .nav-link:hover{color:#eee}  .cd-navbar-top .navbar-nav>li:hover,   .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown].open>a,   .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown]>a:hover,   .cd-navbar-top .navbar-nav>li>.cd-navbar>a:hover,   .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}  .cd-navbar-top .navbar-nav>.open>.cd-navbar>[dropdown]>a,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>[dropdown]>a:hover,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:focus,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:hover,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>li>a:focus,   .cd-navbar-top .navbar-nav>.open>a,   .cd-navbar-top .navbar-nav>.open>a:focus,   .cd-navbar-top .navbar-nav>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}@media (min-width:768px){  .cd-navbar-top .cd-navbar-utility{border-bottom:0;position:absolute;right:0;top:0;font-size:1.1rem}}@media (max-width:calc(768px - 1px)){  .cd-navbar-top .navbar-nav{margin:0}  .cd-navbar-top .navbar-nav .fa{margin-right:.5em}  .cd-navbar-top .navbar-nav .open .dropdown-menu{border:0;padding-top:0;padding-bottom:0;background-color:#2b99a8}  .cd-navbar-top .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 35px;color:#eee}  .cd-navbar-top .navbar-nav .open .dropdown-menu>.active>a{background-color:#2b99a8}  .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}}.cd-navbar-primary[_ngcontent-%COMP%]   .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:focus, .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:hover{color:#eee!important;background-color:#2b99a8!important;border:0!important}.wrapper[_ngcontent-%COMP%]{display:flex;height:100%;width:100%}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]{width:200px;background:#374249;overflow-y:auto;position:relative;bottom:0;left:0;z-index:999;color:#fff;height:auto;transition:all .3s}.wrapper[_ngcontent-%COMP%]   #sidebar.active[_ngcontent-%COMP%]{margin-left:-200px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul.component[_ngcontent-%COMP%]{padding:20px 0;margin:0}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{color:#fff;padding:10px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{padding:10px;font-size:1.1em;display:block;color:#fff;text-decoration:none}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover{color:#fff;background:#2b99a8}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] > .badge[_ngcontent-%COMP%]{margin-left:5px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li.active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]   a[aria-expanded=true][_ngcontent-%COMP%]{color:#fff}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]{position:relative}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]::after{position:absolute;right:20px;content:"";font-family:ForkAwesome;border:0;font-size:1rem;transition:transform .3s ease-in-out}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[aria-expanded=true][_ngcontent-%COMP%]::after{transform:rotate(90deg)}.wrapper[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{font-size:.9em!important;padding-left:30px!important;background:#4d5c66}.wrapper[_ngcontent-%COMP%]   .cd-navbar-primary[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:focus{outline:0}.wrapper[_ngcontent-%COMP%]   ngx-simplebar[_ngcontent-%COMP%]{height:100%}#content[_ngcontent-%COMP%]{width:calc(100% - 200px);transition:all .3s;position:relative;bottom:0;right:0}#content.active[_ngcontent-%COMP%]{width:100vw}']],data:{}});function xn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function _n(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Tn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"li",[["class","nav-item"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"cd-language-selector",[["class","cd-navbar"]],null,null,null,ht,ut)),s["ɵdid"](2,114688,null,0,it,[st.l,nt],null,null),(t()(),s["ɵeld"](3,0,null,null,2,"li",[["class","nav-item"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"cd-notifications",[["class","cd-navbar"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleRightSidebar()&&a),a}),_t,vt)),s["ɵdid"](5,245760,null,0,yt,[bt.a,mt.a],null,null),(t()(),s["ɵeld"](6,0,null,null,2,"li",[["class","nav-item"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"cd-dashboard-help",[["class","cd-navbar"]],null,null,null,kt,Rt)),s["ɵdid"](8,114688,null,0,Nt,[Ct.b,Tt.a],null,null),(t()(),s["ɵeld"](9,0,null,null,2,"li",[["class","nav-item"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"cd-administration",[["class","cd-navbar"]],null,null,null,Ft,Dt)),s["ɵdid"](11,114688,null,0,Lt,[Z.a],null,null),(t()(),s["ɵeld"](12,0,null,null,2,"li",[["class","nav-item"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"cd-identity",[["class","cd-navbar"]],null,null,null,Ht,Bt)),s["ɵdid"](14,114688,null,0,Gt,[Z.a,Vt.a],null,null)],(function(t,e){t(e,2,0),t(e,5,0),t(e,8,0),t(e,11,0),t(e,14,0)}),null)}function wn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_hosts"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,5,{links:1}),s["ɵqud"](603979776,6,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/hosts"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[6,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Hosts"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/hosts")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function On(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_inventory"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,7,{links:1}),s["ɵqud"](603979776,8,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/inventory"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[8,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Inventory"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/inventory")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Sn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_monitor"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,9,{links:1}),s["ɵqud"](603979776,10,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/monitor/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[10,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Monitors"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/monitor/")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function In(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_services"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,11,{links:1}),s["ɵqud"](603979776,12,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/services/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[12,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Services"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/services/")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Nn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_osds"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,13,{links:1}),s["ɵqud"](603979776,14,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/osd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[14,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["OSDs"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/osd")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Cn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_configuration"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,15,{links:1}),s["ɵqud"](603979776,16,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/configuration"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[16,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Configuration"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/configuration")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Rn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_crush"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,17,{links:1}),s["ɵqud"](603979776,18,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/crush-map"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[18,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["CRUSH map"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/crush-map")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function An(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_modules"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,19,{links:1}),s["ɵqud"](603979776,20,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/mgr-modules"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[20,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Manager Modules"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/mgr-modules")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function kn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_log"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,21,{links:1}),s["ɵqud"](603979776,22,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[22,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Logs"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/logs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function En(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-danger"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.prometheusAlertService.activeAlerts)}))}function Ln(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"li",[["class","tc_submenuitem tc_submenuitem_monitoring"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,23,{links:1}),s["ɵqud"](603979776,24,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,5,"a",[["routerLink","/monitoring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[24,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Monitoring"])),(t()(),s["ɵand"](16777216,null,null,1,null,En)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,5,0,"/monitoring"),t(e,9,0,n.prometheusAlertService.activeAlerts>0)}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Dn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,"li",[["class","nav-item tc_menuitem_cluster"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,3,{links:1}),s["ɵqud"](603979776,4,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("cluster")&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster"])),(t()(),s["ɵeld"](7,0,null,null,21,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](8,8404992,null,0,Kt,[s.ElementRef,s.Renderer2,W.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wn)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,On)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sn)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,In)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nn)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cn)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rn)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,An)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kn)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ln)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,8,0,!0,"cluster"!==n.displayedSubMenu),t(e,10,0,n.permissions.hosts.read),t(e,12,0,n.permissions.hosts.read),t(e,14,0,n.permissions.monitor.read),t(e,16,0,n.permissions.hosts.read),t(e,18,0,n.permissions.osd.read),t(e,20,0,n.permissions.configOpt.read),t(e,22,0,n.permissions.osd.read),t(e,24,0,n.permissions.configOpt.read),t(e,26,0,n.permissions.log.read),t(e,28,0,n.permissions.prometheus.read)}),(function(t,e){t(e,4,0,"cluster"==e.component.displayedSubMenu),t(e,7,0,s["ɵnov"](e,8).isCollapse,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isCollapsed,s["ɵnov"](e,8).isCollapsing)}))}function Pn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_pool"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,25,{links:1}),s["ɵqud"](603979776,26,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/pool"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[26,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Pools"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/pool")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Mn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_block_images"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,29,{links:1}),s["ɵqud"](603979776,30,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/block/rbd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[30,4],[28,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Images"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/rbd")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function qn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-warning"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)}))}function jn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-danger"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors)}))}function Fn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"li",[["class","tc_submenuitem tc_submenuitem_block_mirroring"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,31,{links:1}),s["ɵqud"](603979776,32,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,7,"a",[["routerLink","/block/mirroring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[32,4],[28,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Mirroring"])),(t()(),s["ɵand"](16777216,null,null,1,null,qn)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jn)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,5,0,"/block/mirroring"),t(e,9,0,0!==(null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)),t(e,11,0,0!==(null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors))}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Vn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_block_iscsi"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,33,{links:1}),s["ɵqud"](603979776,34,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/block/iscsi"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[34,4],[28,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["iSCSI"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/iscsi")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Gn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"li",[["class","nav-item tc_menuitem_block"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,27,{links:1}),s["ɵqud"](603979776,28,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,4,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("block")&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Block"])),(t()(),s["ɵeld"](9,0,null,null,7,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](10,8404992,null,0,Kt,[s.ElementRef,s.Renderer2,W.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mn)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fn)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vn)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,6,0,n.blockHealthColor()),t(e,10,0,!0,"block"!==n.displayedSubMenu),t(e,12,0,n.permissions.rbdImage.read&&e.parent.context.ngIf.rbd),t(e,14,0,n.permissions.rbdMirroring.read&&e.parent.context.ngIf.mirroring),t(e,16,0,n.permissions.iscsi.read&&e.parent.context.ngIf.iscsi)}),(function(t,e){t(e,4,0,"block"==e.component.displayedSubMenu),t(e,9,0,s["ɵnov"](e,10).isCollapse,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isCollapsed,s["ɵnov"](e,10).isCollapsing)}))}function Bn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_nfs"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,35,{links:1}),s["ɵqud"](603979776,36,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/nfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[36,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["NFS"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/nfs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function zn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_cephfs"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,37,{links:1}),s["ɵqud"](603979776,38,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/cephfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[38,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Filesystems"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/cephfs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Yn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"li",[["class","nav-item tc_menuitem_rgw"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,39,{links:1}),s["ɵqud"](603979776,40,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("rgw")&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway"])),(t()(),s["ɵeld"](7,0,null,null,22,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](8,8404992,null,0,Kt,[s.ElementRef,s.Renderer2,W.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵeld"](9,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_daemons"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](10,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,41,{links:1}),s["ɵqud"](603979776,42,{linksWithHrefs:1}),(t()(),s["ɵeld"](13,0,null,null,2,"a",[["routerLink","/rgw/daemon"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,14).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](14,671744,[[42,4],[40,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Daemons"])),(t()(),s["ɵeld"](16,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_users"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](17,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,43,{links:1}),s["ɵqud"](603979776,44,{linksWithHrefs:1}),(t()(),s["ɵeld"](20,0,null,null,2,"a",[["routerLink","/rgw/user"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,21).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](21,671744,[[44,4],[40,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Users"])),(t()(),s["ɵeld"](23,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_buckets"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](24,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,45,{links:1}),s["ɵqud"](603979776,46,{linksWithHrefs:1}),(t()(),s["ɵeld"](27,0,null,null,2,"a",[["routerLink","/rgw/bucket"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,28).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](28,671744,[[46,4],[40,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Buckets"]))],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,8,0,!0,"rgw"!==n.displayedSubMenu),t(e,10,0,"active"),t(e,14,0,"/rgw/daemon"),t(e,17,0,"active"),t(e,21,0,"/rgw/user"),t(e,24,0,"active"),t(e,28,0,"/rgw/bucket")}),(function(t,e){t(e,4,0,"rgw"==e.component.displayedSubMenu),t(e,7,0,s["ɵnov"](e,8).isCollapse,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isCollapsed,s["ɵnov"](e,8).isCollapsing),t(e,13,0,s["ɵnov"](e,14).target,s["ɵnov"](e,14).href),t(e,20,0,s["ɵnov"](e,21).target,s["ɵnov"](e,21).href),t(e,27,0,s["ɵnov"](e,28).target,s["ɵnov"](e,28).href)}))}function Hn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,15,"li",[["class","nav-item tc_menuitem_dashboard"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](2,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,1,{links:1}),s["ɵqud"](603979776,2,{linksWithHrefs:1}),(t()(),s["ɵeld"](5,0,null,null,11,"a",[["class","nav-link"],["routerLink","/dashboard"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,[[2,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Dashboard"])),(t()(),s["ɵted"](-1,null,["  "])),(t()(),s["ɵeld"](10,0,null,null,6,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](12,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](13,1),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](15,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](16,1),(t()(),s["ɵand"](16777216,null,null,1,null,Dn)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pn)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gn)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bn)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zn)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yn)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,"active"),t(e,6,0,"/dashboard");var a=t(e,13,0,n.icons.health);t(e,12,0,a);var r=s["ɵunv"](e,15,0,t(e,16,0,s["ɵnov"](e.parent.parent,0),null==n.summaryData?null:n.summaryData.health_status));t(e,15,0,r),t(e,18,0,n.permissions.hosts.read||n.permissions.monitor.read||n.permissions.osd.read||n.permissions.configOpt.read||n.permissions.log.read||n.permissions.prometheus.read),t(e,20,0,n.permissions.pool.read),t(e,22,0,(n.permissions.rbdImage.read||n.permissions.rbdMirroring.read||n.permissions.iscsi.read)&&(e.context.ngIf.rbd||e.context.ngIf.mirroring||e.context.ngIf.iscsi)),t(e,24,0,n.permissions.nfs.read&&e.context.ngIf.nfs),t(e,26,0,n.permissions.cephfs.read&&e.context.ngIf.cephfs),t(e,28,0,n.permissions.rgw.read&&e.context.ngIf.rgw)}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function Un(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,2,null,Hn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](131072,i.AsyncPipe,[s.ChangeDetectorRef]),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,s["ɵunv"](e,1,0,s["ɵnov"](e,2).transform(n.enabledFeature$)))}),null)}function Wn(t){return s["ɵvid"](0,[s["ɵpid"](0,Jt,[]),(t()(),s["ɵeld"](1,0,null,null,43,"div",[["class","cd-navbar-main"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"cd-pwd-expiration-notification",[],null,null,null,ue,ae)),s["ɵdid"](3,245760,null,0,ne,[te.a,Z.a],null,null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-telemetry-notification",[],null,null,null,pe,he)),s["ɵdid"](5,245760,null,0,fe,[le,Z.a,bt.a,ce,Xt.a],null,null),(t()(),s["ɵeld"](6,0,null,null,1,"cd-motd",[],null,null,null,je,Me)),s["ɵdid"](7,245760,null,0,Pe,[De],null,null),(t()(),s["ɵeld"](8,0,null,null,1,"cd-notifications-sidebar",[],[[2,"active",null]],null,null,bn,an)),s["ɵdid"](9,245760,null,0,nn,[bt.a,mt.a,en.a,tn,Z.a,Xe,s.NgZone,s.ChangeDetectorRef],null,null),(t()(),s["ɵeld"](10,0,null,null,17,"div",[["class","cd-navbar-top"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,16,"nav",[["class","navbar navbar-expand-md navbar-dark cd-navbar-brand"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"button",[["class","btn btn-link py-0"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=0!=(r.showMenuSidebar=!r.showMenuSidebar)&&a),a}),null,null)),(t()(),s["ɵeld"](13,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-bars fa-2x"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"a",[["class","navbar-brand ml-2"],["href","#"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,0,"img",[["alt","Ceph"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,4,"button",[["class","navbar-toggler"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleRightSidebar()&&a),a}),null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Toggle navigation"])),(t()(),s["ɵeld"](19,0,null,null,1,"span",[["class",""]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,0,"i",[["class","fa fa-navicon fa-lg"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,6,"div",[["class","collapse navbar-collapse"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](23,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](24,{show:0}),(t()(),s["ɵeld"](25,0,null,null,2,"ul",[["class","nav navbar-nav cd-navbar-utility my-2 my-md-0"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,xn)),s["ɵdid"](27,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](28,0,null,null,14,"div",[["class","wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](29,0,null,null,8,"nav",[["id","sidebar"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](31,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](32,{active:0}),(t()(),s["ɵeld"](33,0,null,null,4,"ngx-simplebar",[["data-simplebar","init"]],null,null,null,We,Ue)),s["ɵdid"](34,4440064,null,0,He.a,[s.ElementRef],{options:[0,"options"]},null),(t()(),s["ɵeld"](35,0,null,0,2,"ul",[["class","list-unstyled components cd-navbar-primary"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_n)),s["ɵdid"](37,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](38,0,null,null,4,"div",[["id","content"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](40,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](41,{active:0}),s["ɵncd"](null,0),(t()(),s["ɵand"](0,[["cd_utilities",2]],null,0,null,Tn)),(t()(),s["ɵand"](0,[["cd_menu",2]],null,0,null,Un))],(function(t,e){var n=e.component;t(e,3,0),t(e,5,0),t(e,7,0),t(e,9,0);var a=t(e,24,0,n.rightSidebarOpen);t(e,23,0,"collapse navbar-collapse",a),t(e,27,0,s["ɵnov"](e,43));var r=t(e,32,0,!n.showMenuSidebar);t(e,31,0,r),t(e,34,0,n.simplebar),t(e,37,0,s["ɵnov"](e,44));var i=t(e,41,0,!n.showMenuSidebar);t(e,40,0,i)}),(function(t,e){t(e,8,0,s["ɵnov"](e,9).isSidebarOpened)}))}var Kn=n("HDdC"),$n=n("Cfvw"),Jn=n("pLZG"),Zn=n("l7GE"),Qn=n("ZUHj");class Xn{constructor(t,e){this.keySelector=t,this.flushes=e}call(t,e){return e.subscribe(new ta(t,this.keySelector,this.flushes))}}class ta extends Zn.a{constructor(t,e,n){super(t),this.keySelector=e,this.values=new Set,n&&this.add(Object(Qn.a)(this,n))}notifyNext(t,e,n,a,r){this.values.clear()}notifyError(t,e){this._error(t)}_next(t){this.keySelector?this._useKeySelector(t):this._finalizeNext(t,t)}_useKeySelector(t){let e;const{destination:n}=this;try{e=this.keySelector(t)}catch(a){return void n.error(a)}this._finalizeNext(e,t)}_finalizeNext(t,e){const{values:n}=this;n.has(t)||(n.add(t),this.destination.next(e))}}var ea=n("128B");function na(t,e,n){return 0===n?[e]:(t.push(e),t)}function aa(){return Object(ea.a)(na,[])}var ra=n("SxV6"),ia=n("GyhO");class sa{resolve(t){const e=t.routeConfig.data,n=null===e.path?null:this.getFullPath(t),a=[{text:"string"==typeof e.breadcrumbs?e.breadcrumbs:e.breadcrumbs.text||e.text||n,path:n}];return Object(ve.a)(a)}getFullPath(t){return t.pathFromRoot.reduce((t,e)=>t+e.url.reduce((t,e)=>t+"/"+e.path,""),"")}}class ua{constructor(t,e){this.router=t,this.injector=e,this.crumbs=[],this.finished=!1,this.defaultResolver=new sa,this.subscription=this.router.events.pipe(Object(Jn.a)(t=>t instanceof Et.e)).subscribe(()=>{this.finished=!1}),this.subscription=this.router.events.pipe(Object(Jn.a)(t=>t instanceof Et.d)).subscribe(()=>{var e;this._resolveCrumbs(t.routerState.snapshot.root).pipe(Object(_e.a)(t=>t),(e=t=>t.text,t=>t.lift(new Xn(e,void 0))),aa(),Object(_e.a)(t=>{const e=this.postProcess(t);return this.wrapIntoObservable(e).pipe(Object(ra.a)())})).subscribe(t=>{this.finished=!0,this.crumbs=t})})}ngOnDestroy(){this.subscription.unsubscribe()}_resolveCrumbs(t){let e;const n=t.routeConfig&&t.routeConfig.data;if(n&&n.breadcrumbs){let a;a=n.breadcrumbs.prototype instanceof sa?this.injector.get(n.breadcrumbs):this.defaultResolver;const r=a.resolve(t);e=this.wrapIntoObservable(r).pipe(Object(ra.a)())}else e=Object(ve.a)([]);return t.firstChild&&(e=e.pipe(function(...t){return e=>e.lift.call(Object(ia.a)(e,...t))}(this._resolveCrumbs(t.firstChild)))),e}postProcess(t){const e=[];return t.forEach(t=>{const n=t.text.split("/");if(n.length>1){t.text=n[n.length-1];for(let t=0;t<n.length-1;t++)e.push({text:n[t],path:null})}e.push(t)}),e}isPromise(t){return t&&"function"==typeof t.then}wrapIntoObservable(t){return t instanceof Kn.a?t:this.isPromise(t)?Object($n.a)(Promise.resolve(t)):Object(ve.a)(t)}}var oa=s["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.breadcrumb[_ngcontent-%COMP%]{padding:8px 0;background-color:transparent;border-radius:0;margin-top:8px}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]:before{padding:0 5px 0 7px;color:#474544;font-family:ForkAwesome;content:""}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:#474544}']],data:{}});function la(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"a",[["preserveFragment",""]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),s["ɵted"](2,null,["",""]))],(function(t,e){t(e,1,0,"",e.parent.context.$implicit.path)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,2,0,e.parent.context.$implicit.text)}))}function da(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.text)}))}function ca(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"li",[["class","breadcrumb-item"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](3,{active:0}),(t()(),s["ɵand"](16777216,null,null,1,null,la)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,da)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=t(e,3,0,e.context.last&&e.component.finished);t(e,2,0,"breadcrumb-item",n),t(e,5,0,!e.context.last&&null!==e.context.$implicit.path),t(e,7,0,e.context.last||null===e.context.$implicit.path)}),null)}function fa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"ol",[["class","breadcrumb"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ca)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.crumbs)}),null)}function ha(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,fa)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.crumbs.length)}),null)}var ga=n("978R"),pa=n("VXsX");const ba=()=>Object.assign(new ga.a,{container:"body"});class ma{constructor(t,e,n){this.router=t,this.summaryService=e,this.taskManagerService=n,this.subs=new gt.a}ngOnInit(){this.subs.add(this.summaryService.startPolling()),this.subs.add(this.taskManagerService.init(this.summaryService))}ngOnDestroy(){this.subs.unsubscribe()}isDashboardPage(){return"/dashboard"===this.router.url}}var ya=s["ɵcrt"]({encapsulation:0,styles:[[".dashboard[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;padding:0}.container-fluid[_ngcontent-%COMP%]{overflow:auto;position:absolute}  #toast-container{margin-top:2vw}@media (max-width:1600px){  #toast-container{margin-top:2.5vw}}@media (max-width:calc(992px - 1px)){  #toast-container{margin-top:9vw}}@media (max-width:900px){  #toast-container{margin-top:10vw}}@media (max-width:319px){  #toast-container{margin-top:11vw}}@media (max-width:260px){  #toast-container{margin-top:14vw}}"]],data:{}});function va(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"block-ui",[],null,null,null,D,L)),s["ɵdid"](1,114688,null,0,S,[O],null,null),(t()(),s["ɵeld"](2,0,null,0,9,"cd-navigation",[],[[8,"className",0]],null,null,Wn,vn)),s["ɵdid"](3,245760,null,0,yn,[Z.a,mt.a,mn.a,ce,Xe,De],null,null),(t()(),s["ɵeld"](4,0,null,0,7,"div",[["class","container-fluid h-100"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{dashboard:0}),(t()(),s["ɵeld"](8,0,null,null,1,"cd-breadcrumbs",[],null,null,null,ha,oa)),s["ɵdid"](9,180224,null,0,ua,[Et.m,s.Injector],null,null),(t()(),s["ɵeld"](10,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](11,212992,null,0,Et.r,[Et.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){var n=e.component;t(e,1,0),t(e,3,0);var a=t(e,7,0,n.isDashboardPage());t(e,6,0,"container-fluid h-100",a),t(e,11,0)}),(function(t,e){t(e,2,0,s["ɵnov"](e,3).class)}))}function xa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-workbench-layout",[],null,null,null,va,ya)),s["ɵprd"](5120,null,ga.a,ba,[]),s["ɵdid"](2,245760,null,0,ma,[Et.m,mt.a,pa.a],null,null)],(function(t,e){t(e,2,0)}),null)}var _a=s["ɵccf"]("cd-workbench-layout",ma,xa,{},{},[]),Ta=n("pKUh"),wa=n("2ZVE"),Oa=n("KOzp"),Sa=n("2uy1");class Ia{constructor(){this.cardClass=""}}var Na=s["ɵcrt"]({encapsulation:0,styles:[[".card[_ngcontent-%COMP%]{height:100%;border:.5px solid #ddd;border-radius:3px;box-shadow:0 1px 1px rgba(3,3,3,.175);font-size:12px}@media screen and (min-width:320px){.card[_ngcontent-%COMP%]{font-size:calc(12px + 9 * ((100vw - 320px)/ 1728))}}@media screen and (min-width:2048px){.card[_ngcontent-%COMP%]{font-size:21px}}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]{padding-top:40px!important}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]   .card-title[_ngcontent-%COMP%]{left:-.6rem;position:absolute;top:-.3rem}.no-center[_ngcontent-%COMP%]{position:unset;top:unset;left:unset;transform:unset}.content-highlight[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function Ca(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](2,null,["",""]))],(function(t,e){t(e,1,0,e.component.link)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,2,0,n.cardTitle)}))}function Ra(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" "," "]))],null,(function(t,e){t(e,0,0,e.component.cardTitle)}))}function Aa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"div",[["class","card"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),s["ɵeld"](3,0,null,null,8,"div",[["class","card-body d-flex align-items-center justify-content-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"h4",[["class","card-title m-4"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ca)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noLinkTitle",2]],null,0,null,Ra)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-text text-center"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"card",n.cardClass),t(e,6,0,n.link,s["ɵnov"](e,7)),t(e,10,0,"card-text text-center",n.contentClass)}),null)}class ka{}var Ea=s["ɵcrt"]({encapsulation:0,styles:[[".info-group-title[_ngcontent-%COMP%]{margin:0 0 .5vw .5vw;font-size:21px}"]],data:{}});function La(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","info-group-title"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),(t()(),s["ɵeld"](3,0,null,null,1,"div",[["class","row"]],null,null,null,null,null)),s["ɵncd"](null,0)],null,(function(t,e){t(e,2,0,e.component.groupTitle)}))}var Da=n("hrfs"),Pa=n("MO+k"),Ma=n("NEZu"),qa=n("Fgil"),ja=n("o4+5");class Fa{constructor(t,e){this.dimlessBinary=t,this.dimless=e,this.config={},this.isBytesData=!1,this.showLabelAsTooltip=!1,this.prepareFn=new s.EventEmitter,this.chartConfig={chartType:"doughnut",dataset:[{label:null,borderWidth:0}],colors:[{backgroundColor:["--color-green","--color-yellow","--color-orange","--color-red","--color-blue"]}],options:{cutoutPercentage:90,events:["click","mouseout","touchstart"],legend:{display:!0,position:"right",labels:{boxWidth:10,usePointStyle:!1}},plugins:{center_text:!0},tooltips:{enabled:!0,displayColors:!1,backgroundColor:"rgba(0,0,0,0.8)",cornerRadius:0,bodyFontSize:14,bodyFontStyle:"600",position:"nearest",xPadding:12,yPadding:12,callbacks:{label:(t,e)=>{let n=e.labels[t.index];return n.includes("%")||(n=`${n} (${e.datasets[t.datasetIndex].data[t.index]}%)`),n}}},title:{display:!1}}},this.doughnutChartPlugins=[{id:"center_text",beforeDraw(t){const e="Helvetica Neue, Helvetica, Arial, sans-serif";Pa.defaults.global.defaultFontFamily=e;const n=t.ctx;if(!t.options.plugins.center_text||!t.data.datasets[0].label)return;n.save();const a=t.data.datasets[0].label.split("\n"),r=(t.chartArea.left+t.chartArea.right)/2,i=(t.chartArea.top+t.chartArea.bottom)/2;n.textAlign="center",n.textBaseline="middle",n.font="24px "+e,n.fillStyle="#151515",n.fillText(a[0],r,i-10),a.length>1&&(n.font="14px "+e,n.fillStyle="#72767B",n.fillText(a[1],r,i+10)),n.restore()}}]}ngOnInit(){new Ma.a(this.chartCanvasRef,this.chartTooltipRef,(t,e)=>e+t.caretX+"px",(t,e)=>e+t.caretY-t.height-10+"px").getBody=t=>this.getChartTooltipBody(t),X.merge(this.chartConfig,this.config),this.setColorsFromCssVars(),this.prepareFn.emit([this.chartConfig,this.data])}ngOnChanges(){this.prepareFn.emit([this.chartConfig,this.data]),this.setChartSliceBorderWidth()}setColorsFromCssVars(){this.chartConfig.colors.forEach((t,e)=>{t.backgroundColor.forEach((t,n)=>{t.startsWith("--")&&(this.chartConfig.colors[e].backgroundColor[n]=this.getCssVar(t))})})}getCssVar(t){return getComputedStyle(document.querySelector(".chart-container")).getPropertyValue(t)}getChartTooltipBody(t){const e=t[0].split(": ");return this.showLabelAsTooltip?e[0]:(e[1]=this.isBytesData?this.dimlessBinary.transform(e[1]):this.dimless.transform(e[1]),e.join(": "))}setChartSliceBorderWidth(){let t=0;X.forEach(this.chartConfig.dataset[0].data,(function(e){e>0&&(t+=1)})),this.chartConfig.dataset[0].borderWidth=t>1?1:0}}var Va=s["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto;cursor:pointer;overflow:visible;--color-red:#c9190b;--color-blue:#06c;--color-orange:#ef9234;--color-yellow:#f6d173;--color-magenta:#009596;--color-green:#7cc674;--color-gray:#ededed;--color-light-blue:#519de9;--color-light-yellow:#f9e0a2;--color-cyan:#73c5c5;--color-purple:#3c3d99;position:unset;width:100%;height:100%}.chart-canvas[_ngcontent-%COMP%]{position:unset;width:100%;height:100%;margin-left:auto;margin-right:auto;max-width:100%;max-height:100%}']],data:{}});function Ga(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{chartCanvasRef:0}),s["ɵqud"](402653184,2,{chartTooltipRef:0}),(t()(),s["ɵeld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""],["class","chart-canvas"]],null,null,null,null,null)),s["ɵdid"](4,999424,null,0,Da.a,[s.ElementRef,Da.c],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"],plugins:[5,"plugins"]},null),(t()(),s["ɵeld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.chartConfig.dataset,n.chartConfig.labels,n.chartConfig.options,n.chartConfig.chartType,n.chartConfig.colors,n.doughnutChartPlugins)}),null)}class Ba{constructor(t){this.i18n=t}transform(t){return t?`${t.monmap.mons.length.toString()} (${this.i18n("quorum")} ${t.quorum.join(", ")})`:""}}class za{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e=0,n=0;X.each(t.osds,t=>{t.in&&e++,t.up&&n++});const a=[{content:`${t.osds.length} ${this.i18n("total")}`,class:""}];a.push({content:"",class:"card-text-line-break"}),a.push({content:`${n} ${this.i18n("up")}, ${e} ${this.i18n("in")}`,class:""});const r=t.osds.length-n,i=t.osds.length-e;if(r>0||i>0){a.push({content:"",class:"card-text-line-break"});const t=r>0?`${r} ${this.i18n("down")}`:"",e=r>0&&i>0?", ":"",n=i>0?`${i} ${this.i18n("out")}`:"";a.push({content:`${t}${e}${n}`,class:"card-text-error"})}return a}}class Ya{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e=this.i18n("n/a");const n=X.isUndefined(t.active_name)?"":`${this.i18n("active daemon")}: ${t.active_name}`;n.length>0&&(e="1");const a=t.standbys.map(t=>t.name).join(", "),r=a?`${this.i18n("standby daemons")}: ${a}`:"",i=t.standbys.length,s=[{content:`${e} ${this.i18n("active")}`,class:"popover-info",titleText:n}];return s.push({content:"",class:"card-text-line-break",titleText:""}),s.push({content:`${i} ${this.i18n("standby")}`,class:"popover-info",titleText:r}),s}}class Ha{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e="",n="",a=0,r=0,i=0;X.each(t.standbys,()=>{a+=1}),t.standbys&&!t.filesystems?(e=`${a} ${this.i18n("up")}`,n=this.i18n("no filesystems")):0===t.filesystems.length?e=this.i18n("no filesystems"):(X.each(t.filesystems,t=>{X.each(t.mdsmap.info,t=>{"up:standby-replay"===t.state?i+=1:r+=1})}),e=`${r} ${this.i18n("active")}`,n=`${a+i} ${this.i18n("standby")}`);const s=t.standbys.map(t=>t.name).join(", "),u=s?`${this.i18n("standby daemons")}: ${s}`:"",o=t.filesystems?t.filesystems.length:0,l=Object.values(o>0?t.filesystems[0].mdsmap.info:{}).map(t=>t.name).join(", ");let d=l?`${this.i18n("active daemon")}: ${l}`:"";!r&&o>0&&(d=`${i} ${this.i18n("standbyReplay")}`);const c=[{content:e,class:"popover-info",titleText:d}];return n&&(c.push({content:"",class:"card-text-line-break",titleText:""}),c.push({content:n,class:"popover-info",titleText:u})),c}}var Ua=n("aXbf");let Wa=(()=>{class t{constructor(t){this.http=t}getFullHealth(){return this.http.get("api/health/full")}getMinimalHealth(){return this.http.get("api/health/minimal")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t})();var Ka=n("Y7HM");function $a(t){const{subscriber:e,counter:n,period:a}=t;e.next(n),this.schedule({subscriber:e,counter:n+1,period:a},a)}let Ja=(()=>{class t{constructor(t){this.ngZone=t,this.intervalDataSource=new ye.a(null),this.intervalData$=this.intervalDataSource.asObservable();const e=parseInt(sessionStorage.getItem("dashboard_interval"),10)||5e3;this.setRefreshInterval(e)}setRefreshInterval(t){this.intervalTime=t,sessionStorage.setItem("dashboard_interval",t.toString()),this.intervalSubscription&&this.intervalSubscription.unsubscribe(),this.ngZone.runOutsideAngular(()=>{this.intervalSubscription=function(t=0,e=Oe.a){return(!Object(Ka.a)(t)||t<0)&&(t=0),e&&"function"==typeof e.schedule||(e=Oe.a),new Kn.a(n=>(n.add(e.schedule($a,t,{subscriber:n,counter:0,period:t})),n))}(this.intervalTime).subscribe(()=>this.ngZone.run(()=>{this.intervalDataSource.next(this.intervalTime)}))})}getRefreshInterval(){return this.intervalTime}ngOnDestroy(){this.intervalSubscription&&this.intervalSubscription.unsubscribe()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](s.NgZone))},token:t,providedIn:"root"}),t})();var Za=n("d+Og");class Qa{constructor(t,e,n,a,r,i,s,u){this.healthService=t,this.i18n=e,this.authStorageService=n,this.pgCategoryService=a,this.featureToggles=r,this.refreshIntervalService=i,this.dimlessBinary=s,this.dimless=u,this.interval=new gt.a,this.icons=pt.a,this.clientStatsConfig={colors:[{backgroundColor:["--color-cyan","--color-purple"]}]},this.rawCapacityChartConfig={colors:[{backgroundColor:["--color-blue","--color-gray"]}]},this.pgStatusChartConfig={options:{events:[""]}},this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}ngOnInit(){this.getHealth(),this.interval=this.refreshIntervalService.intervalData$.subscribe(()=>{this.getHealth()})}ngOnDestroy(){this.interval.unsubscribe()}getHealth(){this.healthService.getMinimalHealth().subscribe(t=>{this.healthData=t})}prepareReadWriteRatio(t){const e=[],n=[],a=this.healthData.client_perf.write_op_per_sec+this.healthData.client_perf.read_op_per_sec;e.push(`${this.i18n("Reads")}: ${this.dimless.transform(this.healthData.client_perf.read_op_per_sec)} ${this.i18n("/s")}`),n.push(this.calcPercentage(this.healthData.client_perf.read_op_per_sec,a)),e.push(`${this.i18n("Writes")}: ${this.dimless.transform(this.healthData.client_perf.write_op_per_sec)} ${this.i18n("/s")}`),n.push(this.calcPercentage(this.healthData.client_perf.write_op_per_sec,a)),t.labels=e,t.dataset[0].data=n,t.dataset[0].label=`${this.dimless.transform(a)}\n${this.i18n("IOPS")}`}prepareClientThroughput(t){const e=[],n=[],a=this.healthData.client_perf.read_bytes_sec+this.healthData.client_perf.write_bytes_sec;e.push(`${this.i18n("Reads")}: ${this.dimlessBinary.transform(this.healthData.client_perf.read_bytes_sec)}${this.i18n("/s")}`),n.push(this.calcPercentage(this.healthData.client_perf.read_bytes_sec,a)),e.push(`${this.i18n("Writes")}: ${this.dimlessBinary.transform(this.healthData.client_perf.write_bytes_sec)}${this.i18n("/s")}`),n.push(this.calcPercentage(this.healthData.client_perf.write_bytes_sec,a)),t.labels=e,t.dataset[0].data=n,t.dataset[0].label=`${this.dimlessBinary.transform(a).replace(" ","\n")}${this.i18n("/s")}`}prepareRawUsage(t,e){const n=this.calcPercentage(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes,e.df.stats.total_bytes),a=this.calcPercentage(e.df.stats.total_used_raw_bytes,e.df.stats.total_bytes);t.dataset[0].data=[a,n],t.labels=[`${this.i18n("Used")}: ${this.dimlessBinary.transform(e.df.stats.total_used_raw_bytes)}`,`${this.i18n("Avail.")}: ${this.dimlessBinary.transform(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes)}`],t.dataset[0].label=`${a}%\nof ${this.dimlessBinary.transform(e.df.stats.total_bytes)}`}preparePgStatus(t,e){const n={};let a=0;X.forEach(e.pg_info.statuses,(t,e)=>{const r=this.pgCategoryService.getTypeByStates(e);X.isUndefined(n[r])&&(n[r]=0),n[r]+=t,a+=t});for(const r of this.pgCategoryService.getAllTypes())X.isUndefined(n[r])&&(n[r]=0);t.dataset[0].data=this.pgCategoryService.getAllTypes().map(t=>this.calcPercentage(n[t],a)),t.labels=[`${this.i18n("Clean")}: ${this.dimless.transform(n.clean)}`,`${this.i18n("Working")}: ${this.dimless.transform(n.working)}`,`${this.i18n("Warning")}: ${this.dimless.transform(n.warning)}`,`${this.i18n("Unknown")}: ${this.dimless.transform(n.unknown)}`],t.dataset[0].label=`${a}\n${this.i18n("PGs")}`}prepareObjects(t,e){const n=e.pg_info.object_stats.num_object_copies,a=this.calcPercentage(n-e.pg_info.object_stats.num_objects_misplaced-e.pg_info.object_stats.num_objects_degraded-e.pg_info.object_stats.num_objects_unfound,n),r=this.calcPercentage(e.pg_info.object_stats.num_objects_misplaced,n),i=this.calcPercentage(e.pg_info.object_stats.num_objects_degraded,n),s=this.calcPercentage(e.pg_info.object_stats.num_objects_unfound,n);t.labels=[`${this.i18n("Healthy")}: ${a}%`,`${this.i18n("Misplaced")}: ${r}%`,`${this.i18n("Degraded")}: ${i}%`,`${this.i18n("Unfound")}: ${s}%`],t.dataset[0].data=[a,r,i,s],t.dataset[0].label=`${this.dimless.transform(e.pg_info.object_stats.num_objects)}\n${this.i18n("objects")}`}isClientReadWriteChartShowable(){return(this.healthData.client_perf.read_op_per_sec||0)+(this.healthData.client_perf.write_op_per_sec||0)>0}calcPercentage(t,e){return X.isNumber(t)&&X.isNumber(e)&&0!==e?Math.round(t/e*100):0}}var Xa=s["ɵcrt"]({encapsulation:0,styles:[['cd-info-card[_ngcontent-%COMP%]{padding:0 .5vw}  .pg-status-popover-wrapper{position:relative}  .pg-status-popover-wrapper .popover{position:absolute;width:116%;max-height:20vh;min-width:unset!important;max-width:unset!important}  .pg-status-popover-wrapper .popover .popover-body{max-width:100%;max-height:19vh;font-size:12px}.logs-link[_ngcontent-%COMP%]{text-align:center}.card-text-error[_ngcontent-%COMP%]{display:inline;color:red}.card-text-line-break[_ngcontent-%COMP%]:after{content:"\\a";white-space:pre}.popover-info[_ngcontent-%COMP%]:hover{cursor:pointer}']],data:{}});function tr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function er(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](4,1),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵted"](6,null,[": "," "]))],(function(t,e){var n=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent.parent.parent.parent,0),e.context.$implicit.severity));t(e,3,0,n)}),(function(t,e){t(e,5,0,e.context.$implicit.type),t(e,6,0,e.context.$implicit.summary.message)}))}function nr(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,tr)),s["ɵdid"](1,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](2,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,er)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e.parent.parent.parent.parent,7)),t(e,4,0,n.healthData.health.checks)}),null)}function ar(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"i",[["class","fa fa-exclamation-triangle"]],null,null,null,null,null))],null,null)}function rr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,null,null,null,null,null,null,null)),(t()(),s["ɵand"](0,[["healthChecks",2]],null,0,null,nr)),(t()(),s["ɵeld"](2,16777216,null,null,7,"div",[["class","info-card-content-clickable"],["container","body"],["containerClass","info-card-popover-cluster-status"],["placement","bottom"],["triggers",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).toggle()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](5,1),s["ɵdid"](6,212992,[["healthChecksTarget",4]],0,Oa.c,[Oa.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,Sa.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"],container:[3,"container"],containerClass:[4,"containerClass"]},null),(t()(),s["ɵted"](7,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,ar)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,4,0,a),t(e,6,0,s["ɵnov"](e,1),"bottom","","body","info-card-popover-cluster-status"),t(e,9,0,"HEALTH_OK"!=(null==n.healthData.health?null:n.healthData.health.status))}),(function(t,e){t(e,7,0,e.component.healthData.health.status)}))}function ir(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](4,1),(t()(),s["ɵted"](5,null,[" "," "]))],(function(t,e){var n=e.component,a=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,3,0,a)}),(function(t,e){t(e,5,0,e.component.healthData.health.status)}))}function sr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-info-card",[["cardTitle","Cluster Status"],["class","cd-status-card"],["contentClass","content-highlight"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,rr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ir)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Cluster Status","content-highlight"),t(e,3,0,(null==n.healthData.health||null==n.healthData.health.checks?null:n.healthData.health.checks.length)>0),t(e,5,0,!(null!=n.healthData.health&&null!=n.healthData.health.checks&&n.healthData.health.checks.length))}),null)}function ur(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Hosts"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/hosts"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "]))],(function(t,e){t(e,1,0,"Hosts","/hosts","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.hosts)}))}function or(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Monitors"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/monitor"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Monitors","/monitor","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,1),n.healthData.mon_status));t(e,2,0,a)}))}function lr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,3,0,e.context.$implicit.content)}))}function dr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","OSDs"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/osd"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,lr)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,"OSDs","/osd","content-highlight"),t(e,3,0,e.context.ngIf)}),null)}function cr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,3,0,e.context.$implicit.content)}))}function fr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"cd-info-card",[["cardTitle","Managers"],["class","cd-status-card"],["contentClass","content-highlight"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,cr)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵppd"](4,1)],(function(t,e){var n=e.component;t(e,1,0,"Managers","content-highlight");var a=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent,3),n.healthData.mgr_map));t(e,3,0,a)}),null)}function hr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Object Gateways"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/rgw/daemon"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "]))],(function(t,e){t(e,1,0,"Object Gateways","/rgw/daemon","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.rgw)}))}function gr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,3,0,e.context.$implicit.content)}))}function pr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Metadata Servers"],["class","cd-status-card"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,gr)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,"Metadata Servers",(e.context.ngIf.length>1?"text-area-size-2":"")+" content-highlight"),t(e,3,0,e.context.ngIf)}),null)}function br(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"cd-info-card",[["cardTitle","iSCSI Gateways"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/block/iscsi"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "])),(t()(),s["ɵeld"](3,0,null,0,0,"span",[["class","card-text-line-break"]],null,null,null,null,null)),(t()(),s["ɵted"](4,0,[" "," up, "])),(t()(),s["ɵeld"](5,0,null,0,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](8,{"card-text-error":0}),(t()(),s["ɵted"](9,null,[""," down"]))],(function(t,e){var n=e.component;t(e,1,0,"iSCSI Gateways","/block/iscsi","content-highlight");var a=t(e,8,0,n.healthData.iscsi_daemons.down>0);t(e,7,0,a)}),(function(t,e){var n=e.component;t(e,2,0,n.healthData.iscsi_daemons.up+n.healthData.iscsi_daemons.down),t(e,4,0,n.healthData.iscsi_daemons.up),t(e,9,0,n.healthData.iscsi_daemons.down)}))}function mr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,19,"cd-info-group",[["groupTitle","Status"]],null,null,null,La,Ea)),s["ɵdid"](1,49152,null,0,ka,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,sr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ur)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,or)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,dr)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](10,1),(t()(),s["ɵand"](16777216,null,0,1,null,fr)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,hr)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,pr)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](17,1),(t()(),s["ɵand"](16777216,null,0,1,null,br)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Status"),t(e,3,0,null==n.healthData.health?null:n.healthData.health.status),t(e,5,0,null!=n.healthData.hosts),t(e,7,0,n.healthData.mon_status);var a=s["ɵunv"](e,9,0,t(e,10,0,s["ɵnov"](e.parent.parent,2),n.healthData.osd_map));t(e,9,0,a),t(e,12,0,n.healthData.mgr_map),t(e,14,0,e.parent.context.ngIf.rgw&&null!=n.healthData.rgw);var r=s["ɵunv"](e,16,0,t(e,17,0,s["ɵnov"](e.parent.parent,4),e.parent.context.ngIf.cephfs&&n.healthData.fs_map));t(e,16,0,r),t(e,19,0,e.parent.context.ngIf.iscsi&&null!=n.healthData.iscsi_daemons)}),null)}function yr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Raw Capacity"],["class","cd-capacity-card cd-chart-card"],["contentClass","content-chart"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareRawUsage(n[0],n[1])&&a),a}),Ga,Va)),s["ɵdid"](3,638976,null,0,Fa,[qa.a,ja.a],{data:[0,"data"],config:[1,"config"],isBytesData:[2,"isBytesData"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Raw Capacity","content-chart"),t(e,3,0,n.healthData,n.rawCapacityChartConfig,!0)}),null)}function vr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Objects"],["class","cd-capacity-card cd-chart-card"],["contentClass","content-chart"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareObjects(n[0],n[1])&&a),a}),Ga,Va)),s["ɵdid"](3,638976,null,0,Fa,[qa.a,ja.a],{data:[0,"data"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Objects","content-chart"),t(e,3,0,n.healthData)}),null)}function xr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function _r(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": "," "]))],null,(function(t,e){t(e,1,0,e.context.$implicit.key,e.context.$implicit.value)}))}function Tr(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,xr)),s["ɵdid"](1,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](2,0,null,null,3,"ul",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,_r)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e.parent.parent.parent,7)),t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(n.healthData.pg_info.statuses)))}),null)}function wr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"cd-info-card",[["cardTitle","PG Status"],["class","cd-capacity-card cd-chart-card"],["contentClass","content-chart"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).toggle()&&a),a}),Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](0,[["pgStatus",2]],0,0,null,Tr)),(t()(),s["ɵeld"](3,0,null,0,4,"div",[["class","pg-status-popover-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,16777216,null,null,3,"div",[["placement","bottom"],["triggers",""]],null,null,null,null,null)),s["ɵdid"](5,212992,[["pgStatusTarget",4]],0,Oa.c,[Oa.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,Sa.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"]},null),(t()(),s["ɵeld"](6,0,null,null,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.preparePgStatus(n[0],n[1])&&a),a}),Ga,Va)),s["ɵdid"](7,638976,null,0,Fa,[qa.a,ja.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"PG Status","content-chart"),t(e,5,0,s["ɵnov"](e,2),"bottom",""),t(e,7,0,n.healthData,n.pgStatusChartConfig)}),null)}function Or(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Pools"],["class","cd-capacity-card"],["contentClass","content-highlight"],["link","/pool"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "]))],(function(t,e){t(e,1,0,"Pools","/pool","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.pools.length)}))}function Sr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","PGs per OSD"],["class","cd-capacity-card"],["contentClass","content-highlight"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"PGs per OSD","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,5),n.healthData.pg_info.pgs_per_osd));t(e,2,0,a)}))}function Ir(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"cd-info-group",[["groupTitle","Capacity"]],null,null,null,La,Ea)),s["ɵdid"](1,49152,null,0,ka,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,yr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,vr)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,wr)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Or)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Sr)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Capacity"),t(e,3,0,n.healthData.df),t(e,5,0,null!=(null==n.healthData.pg_info||null==n.healthData.pg_info.object_stats?null:n.healthData.pg_info.object_stats.num_objects)),t(e,7,0,n.healthData.pg_info),t(e,9,0,n.healthData.pools),t(e,11,0,n.healthData.pg_info)}),null)}function Nr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Client Read/Write"],["class","cd-performance-card cd-chart-card"],["contentClass","content-chart"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareReadWriteRatio(n[0],n[1])&&a),a}),Ga,Va)),s["ɵdid"](3,638976,null,0,Fa,[qa.a,ja.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Client Read/Write","content-chart"),t(e,3,0,n.healthData,n.clientStatsConfig)}),null)}function Cr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Client Throughput"],["class","cd-performance-card cd-chart-card"],["contentClass","content-chart"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareClientThroughput(n[0],n[1])&&a),a}),Ga,Va)),s["ɵdid"](3,638976,null,0,Fa,[qa.a,ja.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Client Throughput","content-chart"),t(e,3,0,n.healthData,n.clientStatsConfig)}),null)}function Rr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Recovery Throughput"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Recovery Throughput","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,6),n.healthData.client_perf.recovering_bytes_per_sec))+"/s";t(e,2,0,a)}))}function Ar(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Scrubbing"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,Aa,Na)),s["ɵdid"](1,49152,null,0,Ia,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "]))],(function(t,e){t(e,1,0,"Scrubbing","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.scrub_status)}))}function kr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"cd-info-group",[["groupTitle","Performance"]],null,null,null,La,Ea)),s["ɵdid"](1,49152,null,0,ka,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Nr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Cr)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Rr)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ar)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance"),t(e,3,0,n.healthData.client_perf),t(e,5,0,n.healthData.client_perf),t(e,7,0,n.healthData.client_perf),t(e,9,0,n.healthData.scrub_status)}),null)}function Er(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"p",[["class","logs-link"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵted"](-1,null,[" See "])),(t()(),s["ɵeld"](7,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,8).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](8,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Logs"])),(t()(),s["ɵted"](-1,null,[" for more details."]))],(function(t,e){var n=t(e,5,0,e.component.icons.infoCircle);t(e,4,0,n),t(e,8,0,"/logs")}),(function(t,e){t(e,7,0,s["ɵnov"](e,8).target,s["ɵnov"](e,8).href)}))}function Lr(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Er)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.permissions.log.read)}),null)}function Dr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"div",[["class","container-fluid"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,mr)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ir)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kr)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["logsLink",2]],null,0,null,Lr))],(function(t,e){var n=e.component;t(e,2,0,(null==n.healthData.health?null:n.healthData.health.status)||n.healthData.mon_status||n.healthData.osd_map||n.healthData.mgr_map||null!=n.healthData.hosts||null!=n.healthData.rgw||n.healthData.fs_map||null!=n.healthData.iscsi_daemons),t(e,4,0,n.healthData.pools||n.healthData.df||n.healthData.pg_info),t(e,6,0,n.healthData.client_perf||n.healthData.scrub_status)}),null)}function Pr(t){return s["ɵvid"](0,[s["ɵpid"](0,Jt,[]),s["ɵpid"](0,Ba,[Xt.a]),s["ɵpid"](0,za,[Xt.a]),s["ɵpid"](0,Ya,[Xt.a]),s["ɵpid"](0,Ha,[Xt.a]),s["ɵpid"](0,ja.a,[Ua.a]),s["ɵpid"](0,qa.a,[Ua.a]),(t()(),s["ɵand"](16777216,null,null,2,null,Dr)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](131072,i.AsyncPipe,[s.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,8,0,s["ɵunv"](e,8,0,s["ɵnov"](e,9).transform(n.healthData&&n.enabledFeature$)))}),null)}class Mr{constructor(t){this.refreshIntervalService=t,this.intervalList={"5 s":5e3,"10 s":1e4,"15 s":15e3,"30 s":3e4,"1 min":6e4,"3 min":18e4,"5 min":3e5},this.intervalKeys=Object.keys(this.intervalList)}ngOnInit(){this.selectedInterval=this.refreshIntervalService.getRefreshInterval()||5e3}changeRefreshInterval(t){this.refreshIntervalService.setRefreshInterval(t)}}var qr=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function jr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){var n=e.component;t(e,1,0,n.intervalList[e.context.$implicit]),t(e,2,0,n.intervalList[e.context.$implicit])}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Fr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,13,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,12,"div",[["class","float-right d-inline-flex"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"label",[["class","col-form-label my-0 mx-2"],["for","refreshInterval"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Refresh"])),(t()(),s["ɵeld"](5,0,null,null,9,"select",[["class","form-control custom-select"],["id","refreshInterval"],["name","refreshInterval"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,6).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,6).onTouched()&&a),"change"===e&&(a=!1!==r.changeRefreshInterval(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedInterval=n)&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](8,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](10,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](11,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](12,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,jr)),s["ɵdid"](14,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,8,0,"refreshInterval",n.selectedInterval),t(e,14,0,n.intervalKeys)}),(function(t,e){t(e,5,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending,s["ɵnov"](e,12).validClass,s["ɵnov"](e,12).invalidClass)}))}class Vr{constructor(){this.hasGrafana=!1}ngOnInit(){}}var Gr=s["ɵcrt"]({encapsulation:0,styles:[["div[_ngcontent-%COMP%]{padding-top:20px}"]],data:{}});function Br(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-health",[],null,null,null,Pr,Xa)),s["ɵdid"](5,245760,null,0,Qa,[Wa,Xt.a,Z.a,Za.a,mn.a,Ja,qa.a,ja.a],null,null),(t()(),s["ɵeld"](6,0,null,0,1,"tab",[["heading","Statistics"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null)],(function(t,e){t(e,3,0,"Health"),t(e,5,0),t(e,7,0,"Statistics")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby)}))}function zr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-health",[],null,null,null,Pr,Xa)),s["ɵdid"](1,245760,null,0,Qa,[Wa,Xt.a,Z.a,Za.a,mn.a,Ja,qa.a,ja.a],null,null)],(function(t,e){t(e,1,0)}),null)}function Yr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"cd-refresh-selector",[],null,null,null,Fr,qr)),s["ɵdid"](2,114688,null,0,Mr,[Ja],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Br)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zr)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0,n.hasGrafana),t(e,6,0,!n.hasGrafana)}),null)}function Hr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-dashboard",[],null,null,null,Yr,Gr)),s["ɵdid"](1,114688,null,0,Vr,[],null,null)],(function(t,e){t(e,1,0)}),null)}var Ur=s["ɵccf"]("cd-dashboard",Vr,Hr,{},{},[]),Wr=n("a278"),Kr=n("insk"),$r=n("25BL"),Jr=n("uIqm"),Zr=n("NUGo"),Qr=n("S7zO"),Xr=n("i4WA"),ti=n("6qls");class ei{}var ni=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ai(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Orchestrator is not available. Please consult the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","orch"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](4,114688,null,0,ti.a,[Tt.a,Xt.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,[" on how to configure and enable the functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"orch")}),null)}let ri=(()=>{class t{constructor(t){this.http=t,this.url="api/orchestrator"}status(){return this.http.get(this.url+"/status")}identifyDevice(t,e,n){return this.http.post(this.url+"/identify_device",{hostname:t,device:e,duration:n})}inventoryList(t,e){let n=new et.h;return t&&(n=n.append("hostname",t)),e&&(n=n.append("refresh",X.toString(e))),this.http.get(this.url+"/inventory",{params:n})}inventoryDeviceList(t,e){return this.inventoryList(t,e).pipe(Object(_e.a)(t=>{const e=X.flatMap(t,t=>t.devices.map(e=>(e.hostname=t.name,e.uid=e.device_id?e.device_id:`${e.hostname}-${e.path}`,e)));return Object(ve.a)(e)}))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t})();var ii=n("Rf2I"),si=n("x38r"),ui=n("vCyI");class oi{constructor(t,e,n,a,r,i){this.authStorageService=t,this.dimlessBinary=e,this.i18n=n,this.modalService=a,this.notificationService=r,this.orchService=i,this.devices=[],this.hiddenColumns=[],this.filterColumns=["hostname","human_readable_type","available","sys_api.vendor","sys_api.model","sys_api.size"],this.selectionType=void 0,this.filterChange=new s.EventEmitter,this.fetchInventory=new s.EventEmitter,this.icons=pt.a,this.columns=[],this.selection=new ui.a}ngOnInit(){this.permission=this.authStorageService.getPermissions().osd,this.tableActions=[{permission:"update",icon:pt.a.show,click:()=>this.identifyDevice(),name:this.i18n("Identify"),disable:()=>!this.selection.hasSingleSelection,canBePrimary:t=>!t.hasSingleSelection,visible:()=>X.isString(this.selectionType)}];const t=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Device path"),prop:"path",flexGrow:1},{name:this.i18n("Type"),prop:"human_readable_type",flexGrow:1,cellTransformation:si.a.badge,customTemplateConfig:{map:{hdd:{value:"HDD",class:"badge-hdd"},ssd:{value:"SSD",class:"badge-ssd"}}}},{name:this.i18n("Available"),prop:"available",flexGrow:1,cellClass:"text-center",cellTransformation:si.a.checkIcon},{name:this.i18n("Vendor"),prop:"sys_api.vendor",flexGrow:1},{name:this.i18n("Model"),prop:"sys_api.model",flexGrow:1},{name:this.i18n("Size"),prop:"sys_api.size",flexGrow:1,pipe:this.dimlessBinary},{name:this.i18n("OSDs"),prop:"osd_ids",flexGrow:1,cellTransformation:si.a.badge,customTemplateConfig:{class:"badge-dark",prefix:"osd."}}];this.columns=t.filter(t=>!this.hiddenColumns.includes(t.prop)),X.forEach(this.filterColumns,t=>{const e=X.find(this.columns,{prop:t});e&&(e.filterable=!0)}),this.fetchInventory.observers.length>0&&(this.fetchInventorySub=this.table.fetchData.subscribe(()=>{this.fetchInventory.emit()}))}ngOnDestroy(){this.fetchInventorySub&&this.fetchInventorySub.unsubscribe()}onColumnFiltersChanged(t){this.filterChange.emit(t)}updateSelection(t){this.selection=t}identifyDevice(){const t=this.selection.first(),e=t.hostname,n=t.path||t.device_id;this.modalService.show(ii.a,{initialState:{titleText:this.i18n("Identify device {{device}}",{device:n}),message:this.i18n("Please enter the duration how long to blink the LED."),fields:[{type:"select",name:"duration",value:300,required:!0,typeConfig:{options:[{text:this.i18n("1 minute"),value:60},{text:this.i18n("2 minutes"),value:120},{text:this.i18n("5 minutes"),value:300},{text:this.i18n("10 minutes"),value:600},{text:this.i18n("15 minutes"),value:900}]}}],submitButtonText:this.i18n("Execute"),onSubmit:t=>{this.orchService.identifyDevice(e,n,t.duration).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n("Identifying '{{device}}' started on host '{{hostname}}'",{hostname:e,device:n}))})}}})}}var li=s["ɵcrt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}"]],data:{}});function di(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),(t()(),s["ɵeld"](1,0,null,null,3,"cd-table",[["columnMode","flex"],["identifier","uid"]],null,[[null,"updateSelection"],[null,"columnFiltersChanged"]],(function(t,e,n){var a=!0,r=t.component;return"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"columnFiltersChanged"===e&&(a=!1!==r.onColumnFiltersChanged(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](2,2867200,[[1,4]],0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],searchField:[3,"searchField"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],forceIdentifier:[6,"forceIdentifier"],selectionType:[7,"selectionType"]},{updateSelection:"updateSelection",columnFiltersChanged:"columnFiltersChanged"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](4,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.devices,n.columns,"flex",!1,!1,"uid",!0,n.selectionType),t(e,4,0,n.permission,n.selection,n.tableActions)}),null)}var ci=n("PqYM");class fi{constructor(t,e){this.orchService=t,this.ngZone=e,this.reloadInterval=5e3,this.firstRefresh=!0,this.icons=pt.a,this.hasOrchestrator=!1,this.showDocPanel=!1,this.devices=[]}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.showDocPanel=!t.available,t.available&&this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=Object(ci.a)(this.reloadInterval,this.reloadInterval).subscribe(()=>{this.ngZone.run(()=>{this.getInventory(!1)})})})})}ngOnDestroy(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe()}ngOnChanges(){this.hasOrchestrator&&(this.devices=[],this.getInventory(!1))}getInventory(t){""!==this.hostname&&this.orchService.inventoryDeviceList(this.hostname,t).subscribe(t=>{this.devices=t},()=>{this.devices=[]})}refresh(){this.getInventory(!this.firstRefresh),this.firstRefresh=!1}}var hi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function gi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ai,ni)),s["ɵdid"](1,49152,null,0,ei,[],null,null)],null,null)}function pi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Devices"])),(t()(),s["ɵeld"](3,0,null,null,4,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"cd-inventory-devices",[["selectionType","single"]],null,[[null,"fetchInventory"]],(function(t,e,n){var a=!0;return"fetchInventory"===e&&(a=!1!==t.component.refresh()&&a),a}),di,li)),s["ɵdid"](6,245760,null,0,oi,[Z.a,qa.a,Xt.a,Ct.b,bt.a,ri],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],selectionType:[2,"selectionType"]},{fetchInventory:"fetchInventory"}),s["ɵpad"](7,1)],(function(t,e){var n=e.component,a=n.devices,r=void 0===n.hostname?s["ɵEMPTY_ARRAY"]:t(e,7,0,"hostname");t(e,6,0,a,r,"single")}),null)}function bi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,gi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pi)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.showDocPanel),t(e,3,0,n.hasOrchestrator)}),null)}function mi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-inventory",[],null,null,null,bi,hi)),s["ɵdid"](1,770048,null,0,fi,[ri,s.NgZone],null,null)],(function(t,e){t(e,1,0)}),null)}var yi=s["ɵccf"]("cd-inventory",fi,mi,{hostname:"hostname"},{},[]);let vi=(()=>{class t{constructor(t){this.http=t,this.url="api/service"}list(t){const e=t?{params:(new et.h).set("service_name",t)}:{};return this.http.get(this.url,e)}getDaemons(t){return this.http.get(`${this.url}/${t}/daemons`)}create(t){return this.http.post(this.url,{service_name:t.service_id?`${t.service_type}.${t.service_id}`:t.service_type,service_spec:t},{observe:"response"})}delete(t){return this.http.delete(`${this.url}/${t}`,{observe:"response"})}getKnownTypes(){return this.http.get(this.url+"/known_types")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t})(),xi=(()=>{class t{constructor(){}calculateAdditionalData(t){if(!t.life_expectancy_min||!t.life_expectancy_max)return t.state="unknown",t;const e=t=>!!Number.parseFloat(t),n=(t,n)=>t&&n&&e(t)&&e(n)?Ge.duration(Ge(t).diff(Ge(n))).asWeeks():null,a=Ge.duration(Ge(Ge.now()).diff(Ge(t.life_expectancy_stamp))).asWeeks(),r=n(t.life_expectancy_max,t.life_expectancy_stamp),i=n(t.life_expectancy_min,t.life_expectancy_stamp);return t.state=a>1?"stale":null!==r&&r<=2?"bad":null!==i&&i<=4?"warning":"good",t.life_expectancy_weeks={max:null!==r?Math.round(r):null,min:null!==i?Math.round(i):null},t}readable(t){return t.readableDaemons=t.daemons.join(" "),t}prepareDevice(t){return this.readable(this.calculateAdditionalData(t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})(),_i=(()=>{class t{constructor(t,e){this.http=t,this.deviceService=e,this.baseURL="api/host"}list(){return this.http.get(this.baseURL)}create(t){return this.http.post(this.baseURL,{hostname:t},{observe:"response"})}delete(t){return this.http.delete(`${this.baseURL}/${t}`,{observe:"response"})}getDevices(t){return this.http.get(`${this.baseURL}/${t}/devices`).pipe(Object(Je.a)(t=>t.map(t=>this.deviceService.prepareDevice(t))))}getSmartData(t){return this.http.get(`${this.baseURL}/${t}/smart`)}getDaemons(t){return this.http.get(`${this.baseURL}/${t}/daemons`)}getLabels(){return this.http.get("ui-api/host/labels")}update(t,e){return this.http.put(`${this.baseURL}/${t}`,{labels:e})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](xi))},token:t,providedIn:oe.a}),t})();class Ti{constructor(t,e,n,a){this.i18n=t,this.hostService=e,this.cephServiceService=n,this.orchService=a,this.daemons=[],this.columns=[],this.hasOrchestrator=!1,this.showDocPanel=!1}ngOnInit(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1,filterable:!0},{name:this.i18n("Daemon type"),prop:"daemon_type",flexGrow:1,filterable:!0},{name:this.i18n("Daemon ID"),prop:"daemon_id",flexGrow:1,filterable:!0},{name:this.i18n("Container ID"),prop:"container_id",flexGrow:3,filterable:!0,cellTransformation:si.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Container Image name"),prop:"container_image_name",flexGrow:3,filterable:!0},{name:this.i18n("Container Image ID"),prop:"container_image_id",flexGrow:3,filterable:!0,cellTransformation:si.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Version"),prop:"version",flexGrow:1,filterable:!0},{name:this.i18n("Status"),prop:"status_desc",flexGrow:1,filterable:!0,cellTemplate:this.statusTpl},{name:this.i18n("Last Refreshed"),prop:"last_refresh",flexGrow:2}],this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.showDocPanel=!t.available})}ngOnChanges(){X.isUndefined(this.daemonsTable)||this.daemonsTable.reloadData()}ngAfterViewInit(){this.daemonsTableTplsSub=this.daemonsTableTpls.changes.subscribe(t=>{this.daemonsTable=t.first})}ngOnDestroy(){this.daemonsTableTplsSub&&this.daemonsTableTplsSub.unsubscribe()}getStatusClass(t){return X.get({"-1":"badge-danger",0:"badge-warning",1:"badge-success"},t,"badge-dark")}getDaemons(t){let e;if(this.hostname)e=this.hostService.getDaemons(this.hostname);else{if(!this.serviceName)return void(this.daemons=[]);e=this.cephServiceService.getDaemons(this.serviceName)}e.subscribe(t=>{this.daemons=t},()=>{this.daemons=[],t.error()})}}var wi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Oi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ai,ni)),s["ɵdid"](1,49152,null,0,ei,[],null,null)],null,null)}function Si(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.getDaemons(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](1,2867200,[[2,4],["daemonsTable",4]],0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,1,0,n.daemons,n.columns,"flex",5e3)}),null)}function Ii(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[["class","badge"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,"badge",e.component.getStatusClass(e.context.row.status))}),(function(t,e){t(e,3,0,e.context.row.status_desc)}))}function Ni(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{statusTpl:0}),s["ɵqud"](671088640,2,{daemonsTableTpls:1}),(t()(),s["ɵand"](16777216,null,null,1,null,Oi)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Si)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["statusTpl",2]],null,0,null,Ii))],(function(t,e){var n=e.component;t(e,3,0,n.showDocPanel),t(e,5,0,n.hasOrchestrator)}),null)}var Ci=n("sLuX"),Ri=n("FSuO"),Ai=n("QC43"),ki=n("XFyV"),Ei=n("zWsK");let Li=(()=>{class t{constructor(t,e,n){this.http=t,this.i18n=e,this.deviceService=n,this.path="api/osd",this.osdRecvSpeedModalPriorities={KNOWN_PRIORITIES:[{name:null,text:this.i18n("-- Select the priority --"),values:{osd_max_backfills:null,osd_recovery_max_active:null,osd_recovery_max_single_start:null,osd_recovery_sleep:null}},{name:"low",text:this.i18n("Low"),values:{osd_max_backfills:1,osd_recovery_max_active:1,osd_recovery_max_single_start:1,osd_recovery_sleep:.5}},{name:"default",text:this.i18n("Default"),values:{osd_max_backfills:1,osd_recovery_max_active:3,osd_recovery_max_single_start:1,osd_recovery_sleep:0}},{name:"high",text:this.i18n("High"),values:{osd_max_backfills:4,osd_recovery_max_active:4,osd_recovery_max_single_start:4,osd_recovery_sleep:0}}]}}create(t){const e={method:"drive_groups",data:t,tracking_id:X.join(X.map(t,"service_id"),", ")};return this.http.post(this.path,e,{observe:"response"})}getList(){return this.http.get(""+this.path)}getDetails(t){return this.http.get(`${this.path}/${t}`)}getSmartData(t){return this.http.get(`${this.path}/${t}/smart`)}scrub(t,e){return this.http.post(`${this.path}/${t}/scrub?deep=${e}`,null)}getFlags(){return this.http.get(this.path+"/flags")}updateFlags(t){return this.http.put(this.path+"/flags",{flags:t})}updateIndividualFlags(t,e){return this.http.put(this.path+"/flags/individual",{flags:t,ids:e})}markOut(t){return this.http.post(`${this.path}/${t}/mark_out`,null)}markIn(t){return this.http.post(`${this.path}/${t}/mark_in`,null)}markDown(t){return this.http.post(`${this.path}/${t}/mark_down`,null)}reweight(t,e){return this.http.post(`${this.path}/${t}/reweight`,{weight:e})}update(t,e){return this.http.put(`${this.path}/${t}`,{device_class:e})}markLost(t){return this.http.post(`${this.path}/${t}/mark_lost`,null)}purge(t){return this.http.post(`${this.path}/${t}/purge`,null)}destroy(t){return this.http.post(`${this.path}/${t}/destroy`,null)}delete(t,e,n){return this.http.delete(`${this.path}/${t}`,{observe:"response",params:{preserve_id:e?"true":"false",force:n?"true":"false"}})}safeToDestroy(t){return this.http.get(`${this.path}/safe_to_destroy?ids=${t}`)}safeToDelete(t){return this.http.get(`${this.path}/safe_to_delete?svc_ids=${t}`)}getDevices(t){return this.http.get(`${this.path}/${t}/devices`).pipe(Object(Je.a)(t=>t.map(t=>this.deviceService.prepareDevice(t))))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](Xt.a),s["ɵɵinject"](xi))},token:t,providedIn:oe.a}),t})();class Di{constructor(t,e,n){this.i18n=t,this.osdService=e,this.hostService=n,this.osdId=null,this.hostname=null,this.loading=!1,this.incompatible=!1,this.error=!1,this.data={},this.isEmpty=X.isEmpty}isSmartError(t){return void 0!==X.get(t,"error")}isNvmeSmartData(t){return"nvme"===X.get(t,"device.protocol","").toLowerCase()}isHddSmartData(t){return"ata"===X.get(t,"device.protocol","").toLowerCase()}fetchData(t){const e={};X.each(t,(t,n)=>{if(this.isSmartError(t)){let a="";a=this.i18n(-22===t.smartctl_error_code?"Smartctl has received an unknown argument (error code {{code}}). You may be using an incompatible version of smartmontools. Version >= 7.0 of smartmontools is required to successfully retrieve data.":"An error with error code {{code}} occurred.",{code:t.smartctl_error_code}),e[n]={error:t.error,smartctl_error_code:t.smartctl_error_code,smartctl_output:t.smartctl_output,userMessage:a,device:t.dev,identifier:t.nvme_vendor}}else 1!==t.json_format_version[0]?this.incompatible=!0:this.isHddSmartData(t)?e[n]=this.extractHddData(t):this.isNvmeSmartData(t)&&(e[n]=this.extractNvmeData(t))}),this.data=e,this.loading=!1}extractNvmeData(t){return{info:X.omitBy(t,(t,e)=>["nvme_smart_health_information_log"].includes(e)),smart:{nvmeData:t.nvme_smart_health_information_log},device:t.device.name,identifier:t.serial_number}}extractHddData(t){const e=X.omitBy(t,(t,e)=>["ata_smart_attributes","ata_smart_selective_self_test_log","ata_smart_data"].includes(e));return{info:e,smart:{attributes:t.ata_smart_attributes,data:t.ata_smart_data},device:e.device.name,identifier:e.serial_number}}updateData(){this.loading=!0,null!==this.osdId?this.osdService.getSmartData(this.osdId).subscribe(this.fetchData.bind(this),t=>{t.preventDefault(),this.error=t,this.loading=!1}):null!==this.hostname&&this.hostService.getSmartData(this.hostname).subscribe(this.fetchData.bind(this),t=>{t.preventDefault(),this.error=t,this.loading=!1})}ngOnInit(){this.smartDataColumns=[{prop:"id",name:this.i18n("ID")},{prop:"name",name:this.i18n("Name")},{prop:"raw.value",name:this.i18n("Raw")},{prop:"thresh",name:this.i18n("Threshold")},{prop:"value",name:this.i18n("Value")},{prop:"when_failed",name:this.i18n("When Failed")},{prop:"worst",name:this.i18n("Worst")}]}ngOnChanges(t){this.data={},t.osdId?this.osdId=t.osdId.currentValue:t.hostname&&(this.hostname=t.hostname.currentValue),this.updateData()}}var Pi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Mi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Failed to retrieve SMART data."]))],(function(t,e){t(e,1,0,"error")}),null)}function qi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The data received has the JSON format version 2.x and is currently incompatible with the dashboard."]))],(function(t,e){t(e,1,0,"warning")}),null)}function ji(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No SMART data available."]))],(function(t,e){t(e,1,0,"info")}),null)}function Fi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"cd-alert-panel",[["id","alert-error"],["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](2,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](3,0,["",""]))],(function(t,e){t(e,2,0,"warning")}),(function(t,e){t(e,3,0,e.parent.context.$implicit.value.userMessage)}))}function Vi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-unknown"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["unknown"]))],(function(t,e){t(e,1,0,"SMART overall-health self-assessment test result","warning","slim")}),null)}function Gi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-passed"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](2,114688,null,0,Qt.a,[Xt.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["passed"]))],(function(t,e){t(e,2,0,"SMART overall-health self-assessment test result","info","slim")}),null)}function Bi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-failed"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["failed"]))],(function(t,e){t(e,1,0,"SMART overall-health self-assessment test result","warning","slim")}),null)}function zi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Gi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["selfTestFailed",2]],null,0,null,Bi))],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.info.smart_status.passed,s["ɵnov"](e,2))}),null)}function Yi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,2,null,Vi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),s["ɵppd"](2,2),(t()(),s["ɵand"](0,[["hasSmartStatus",2]],null,0,null,zi))],(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent.parent.parent.parent,0),null==e.parent.context.$implicit.value.info?null:e.parent.context.$implicit.value.info.smart_status,n.isEmpty));t(e,1,0,a,s["ɵnov"](e,3))}),null)}function Hi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[],null,null,null,Ci.b,Ci.a)),s["ɵdid"](1,638976,null,0,Ri.a,[ze.a],{data:[0,"data"],renderObjects:[1,"renderObjects"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.info,!0)}),null)}function Ui(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-device-info-unavailable"],["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No device information available for this device."]))],(function(t,e){t(e,1,0,"info")}),null)}function Wi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[["updateSelectionOnRefresh","never"]],null,null,null,$r.b,$r.a)),s["ɵdid"](1,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],updateSelectionOnRefresh:[2,"updateSelectionOnRefresh"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.smart.attributes.table,e.component.smartDataColumns,"never")}),null)}function Ki(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["updateSelectionOnRefresh","never"]],null,null,null,Ci.b,Ci.a)),s["ɵdid"](1,638976,null,0,Ri.a,[ze.a],{data:[0,"data"],renderObjects:[1,"renderObjects"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.smart.nvmeData,!0)}),null)}function $i(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-device-smart-data-unavailable"],["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No SMART data available for this device."]))],(function(t,e){t(e,1,0,"info")}),null)}function Ji(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,[[1,4],["innerTabset",4]],0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,7,"tab",[["heading","Device Information"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,2,null,Hi)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](6,2),(t()(),s["ɵand"](16777216,null,null,2,null,Ui)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](9,2),(t()(),s["ɵeld"](10,0,null,0,7,"tab",[["heading","SMART"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](11,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wi)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ki)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$i)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Device Information");var a=!s["ɵunv"](e,5,0,t(e,6,0,s["ɵnov"](e.parent.parent.parent.parent.parent,0),e.parent.context.$implicit.value.info,n.isEmpty));t(e,5,0,a);var r=s["ɵunv"](e,8,0,t(e,9,0,s["ɵnov"](e.parent.parent.parent.parent.parent,0),e.parent.context.$implicit.value.info,n.isEmpty));t(e,8,0,r),t(e,11,0,"SMART"),t(e,13,0,null==e.parent.context.$implicit.value.smart?null:e.parent.context.$implicit.value.smart.attributes),t(e,15,0,null==e.parent.context.$implicit.value.smart?null:e.parent.context.$implicit.value.smart.nvmeData),t(e,17,0,!(null!=e.parent.context.$implicit.value.smart&&e.parent.context.$implicit.value.smart.attributes||null!=e.parent.context.$implicit.value.smart&&e.parent.context.$implicit.value.smart.nvmeData))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,10,0,s["ɵnov"](e,11).id,s["ɵnov"](e,11).active,s["ɵnov"](e,11).addClass,s["ɵnov"](e,11).role,s["ɵnov"](e,11).ariaLabelledby)}))}function Zi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fi)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noError",2]],null,0,null,Yi)),(t()(),s["ɵand"](16777216,null,null,3,null,Ji)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](7,2),s["ɵppd"](8,2)],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit.value.device+" ("+e.context.$implicit.value.identifier+")"),t(e,3,0,e.context.$implicit.value.error,s["ɵnov"](e,4));var a=!s["ɵunv"](e,6,0,t(e,7,0,s["ɵnov"](e.parent.parent.parent.parent,0),e.context.$implicit.value.info,n.isEmpty))||!s["ɵunv"](e,6,0,t(e,8,0,s["ɵnov"](e.parent.parent.parent.parent,0),e.context.$implicit.value.smart,n.isEmpty));t(e,6,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Qi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](2,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵand"](16777216,null,0,2,null,Zi)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(n.data)))}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).clazz)}))}function Xi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,ji)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](3,2),(t()(),s["ɵand"](16777216,null,null,2,null,Qi)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](6,2),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent,0),n.data,n.isEmpty));t(e,2,0,a);var r=!s["ɵunv"](e,5,0,t(e,6,0,s["ɵnov"](e.parent.parent,0),n.data,n.isEmpty));t(e,5,0,r)}),null)}function ts(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Mi)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qi)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xi)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.error),t(e,4,0,n.incompatible),t(e,6,0,!n.error&&!n.incompatible)}),null)}function es(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,49152,null,0,ki.a,[],null,null),(t()(),s["ɵted"](-1,0,["SMART data is loading."]))],null,null)}function ns(t){return s["ɵvid"](0,[s["ɵpid"](0,Ei.b,[]),s["ɵqud"](671088640,1,{innerTabset:0}),(t()(),s["ɵand"](16777216,null,null,1,null,ts)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["isLoading",2]],null,0,null,es))],(function(t,e){t(e,3,0,!e.component.loading,s["ɵnov"](e,4))}),null)}class as{constructor(t,e,n,a){this.hostService=t,this.i18n=e,this.datePipe=n,this.osdService=a,this.hostname="",this.osdId=null,this.devices=null,this.columns=[],this.translationMapping={"=1":"# week",other:"# weeks"}}ngOnInit(){this.columns=[{prop:"devid",name:this.i18n("Device ID"),minWidth:200},{prop:"state",name:this.i18n("State of Health"),flexGrow:1,cellTransformation:si.a.badge,customTemplateConfig:{map:{good:{value:this.i18n("Good"),class:"badge-success"},warning:{value:this.i18n("Warning"),class:"badge-warning"},bad:{value:this.i18n("Bad"),class:"badge-danger"},stale:{value:this.i18n("Stale"),class:"badge-info"},unknown:{value:this.i18n("Unknown"),class:"badge-dark"}}}},{prop:"life_expectancy_weeks",name:this.i18n("Life Expectancy"),cellTemplate:this.lifeExpectancyTemplate},{prop:"life_expectancy_stamp",name:this.i18n("Prediction Creation Date"),cellTemplate:this.lifeExpectancyTimestampTemplate,pipe:this.datePipe,isHidden:!0},{prop:"location",name:this.i18n("Device Name"),cellTemplate:this.locationTemplate},{prop:"readableDaemons",name:this.i18n("Daemons")}]}ngOnChanges(){const t=t=>this.devices=t;this.hostname?this.hostService.getDevices(this.hostname).subscribe(t):null!==this.osdId&&this.osdService.getDevices(this.osdId).subscribe(t)}}var rs=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function is(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[],null,null,null,$r.b,$r.a)),s["ɵdid"](1,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.devices,n.columns)}),null)}function ss(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Neither hostname nor OSD ID given"]))],(function(t,e){t(e,1,0,"warning")}),null)}function us(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit.dev)}))}function os(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,us)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function ls(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["> ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.min,n.translationMapping));t(e,1,0,a)}))}function ds(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["< ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.max,n.translationMapping));t(e,1,0,a)}))}function cs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[""," to ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=e.parent.context.value.min,r=s["ɵunv"](e,1,1,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.max,n.translationMapping));t(e,1,0,a,r)}))}function fs(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ls)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ds)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cs)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value.min&&!e.context.value.max),t(e,3,0,e.context.value.max&&!e.context.value.min),t(e,5,0,e.context.value.max&&e.context.value.min)}),null)}function hs(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" ","\n"]))],null,(function(t,e){t(e,0,0,e.context.value)}))}function gs(t){return s["ɵvid"](0,[s["ɵpid"](0,i.I18nPluralPipe,[i.NgLocalization]),s["ɵqud"](402653184,1,{locationTemplate:0}),s["ɵqud"](402653184,2,{lifeExpectancyTemplate:0}),s["ɵqud"](402653184,3,{lifeExpectancyTimestampTemplate:0}),(t()(),s["ɵand"](16777216,null,null,1,null,is)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ss)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["deviceLocation",2]],null,0,null,os)),(t()(),s["ɵand"](0,[[2,2],["lifeExpectancy",2]],null,0,null,fs)),(t()(),s["ɵand"](0,[[3,2],["lifeExpectancyTimestamp",2]],null,0,null,hs))],(function(t,e){var n=e.component;t(e,5,0,n.hostname||null!==n.osdId),t(e,7,0,""===n.hostname&&null===n.osdId)}),null)}n("jKX/");class ps{get selectedHostname(){return void 0!==this.selection?this.selection.hostname:null}constructor(){}}var bs=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ms(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Inventory"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-inventory",[],null,null,null,bi,hi)),s["ɵdid"](3,770048,null,0,fi,[ri,s.NgZone],{hostname:[0,"hostname"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Inventory"),t(e,3,0,n.selectedHostname)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function ys(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Daemons"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-service-daemon-list",[],null,null,null,Ni,wi)),s["ɵdid"](3,4964352,null,0,Ti,[Xt.a,_i,vi,ri],{hostname:[0,"hostname"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Daemons"),t(e,3,0,n.selectedHostname)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function vs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","four"],["uid","rtOg0AiWz"]],null,null,null,Wr.b,Wr.a)),s["ɵdid"](3,638976,null,0,Kr.a,[me.b,te.a,Xt.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"host-details?var-ceph_hosts="+n.selectedHostname,"four","rtOg0AiWz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function xs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-smart-list",[],null,null,null,ns,Pi)),s["ɵdid"](1,638976,null,0,Di,[Xt.a,Li,_i],{hostname:[0,"hostname"]},null)],(function(t,e){t(e,1,0,e.component.selectedHostname)}),null)}function _s(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,[[1,4]],0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Devices"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-device-list",[],null,null,null,gs,rs)),s["ɵdid"](5,638976,null,0,as,[_i,Xt.a,i.DatePipe,Li],{hostname:[0,"hostname"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ms)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ys)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,vs)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,3,"tab",[["heading","Device health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](13,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xs)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Devices"),t(e,5,0,n.selection.hostname),t(e,7,0,n.permissions.hosts.read),t(e,9,0,n.permissions.hosts.read),t(e,11,0,n.permissions.grafana.read),t(e,13,0,"Device health"),t(e,15,0,n.selectedHostname,s["ɵnov"](e.parent,3))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,12,0,s["ɵnov"](e,13).id,s["ɵnov"](e,13).active,s["ɵnov"](e,13).addClass,s["ɵnov"](e,13).role,s["ɵnov"](e,13).ariaLabelledby)}))}function Ts(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No hostname found."]))],(function(t,e){t(e,1,0,"error")}),null)}function ws(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tabsetChild:0}),(t()(),s["ɵand"](16777216,null,null,1,null,_s)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["noHostname",2]],null,0,null,Ts))],(function(t,e){t(e,2,0,e.component.selection)}),null)}var Os=n("EgGo"),Ss=n("+fVR"),Is=n("0+/T"),Ns=n("DNAf"),Cs=n("kvvV"),Rs=n("85J/");class As{constructor(t){this.bsModalRef=t}ngOnInit(){}onSubmit(){this.bsModalRef.hide()}}let ks=(()=>{class t{constructor(t,e){this.orchService=t,this.modalService=e}checkOrchestratorOrModal(t,e,n){this.orchService.status().subscribe(a=>{a.available?n():this.modalService.show(As,{initialState:{actionDescription:t,itemDescription:e}})})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](ri),s["ɵɵinject"](Ct.b))},token:t,providedIn:"root"}),t})();var Es=n("kn/O");const Ls=new Os.a("hosts");class Ds extends Ss.a{constructor(t,e,n,a,r,i,s,u,o,l,d){super(),this.authStorageService=t,this.hostService=e,this.cephShortVersionPipe=n,this.i18n=a,this.urlBuilder=r,this.actionLabels=i,this.modalService=s,this.taskWrapper=u,this.router=o,this.depCheckerService=l,this.notificationService=d,this.columns=[],this.hosts=[],this.isLoadingHosts=!1,this.cdParams={fromLink:"/hosts"},this.selection=new ui.a,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:pt.a.add,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.CREATE,this.i18n("Host"),()=>{this.router.navigate([this.urlBuilder.getCreate()])})}},{name:this.actionLabels.EDIT,permission:"update",icon:pt.a.edit,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.EDIT,this.i18n("Host"),()=>this.editAction())},disable:this.getEditDisableDesc.bind(this)},{name:this.actionLabels.DELETE,permission:"delete",icon:pt.a.destroy,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.DELETE,this.i18n("Host"),()=>this.deleteAction())},disable:this.getDeleteDisableDesc.bind(this)}]}ngOnInit(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Services"),prop:"services",flexGrow:3,cellTemplate:this.servicesTpl},{name:this.i18n("Labels"),prop:"labels",flexGrow:1,cellTransformation:si.a.badge,customTemplateConfig:{class:"badge-dark"}},{name:this.i18n("Version"),prop:"ceph_version",flexGrow:1,pipe:this.cephShortVersionPipe}]}updateSelection(t){this.selection=t}editAction(){this.hostService.getLabels().subscribe(t=>{const e=this.selection.first(),n=t.map(t=>({enabled:!0,name:t}));this.modalService.show(ii.a,{initialState:{titleText:this.i18n("Edit Host: {{hostname}}",e),fields:[{type:"select-badges",name:"labels",value:e.labels,label:this.i18n("Labels"),typeConfig:{customBadges:!0,options:n,messages:new Ns.a({empty:this.i18n("There are no labels."),filter:this.i18n("Filter or add labels"),add:this.i18n("Add label")},this.i18n)}}],submitButtonText:this.i18n("Edit Host"),onSubmit:t=>{this.hostService.update(e.hostname,t.labels).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n('Updated Host "{{hostname}}"',e)),this.table.refreshBtn()})}}})})}getEditDisableDesc(t){return!t||!t.hasSingleSelection||!t.first().sources.orchestrator&&this.i18n("Host editing is disabled because the selected host is not managed by Orchestrator.")}deleteAction(){const t=this.selection.first().hostname;this.modalRef=this.modalService.show(Is.a,{initialState:{itemDescription:"Host",itemNames:[t],actionDescription:"delete",submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new Cs.a("host/delete",{hostname:t}),call:this.hostService.delete(t)})}})}getDeleteDisableDesc(t){return!t||!t.hasSelection||!t.selected.every(t=>t.sources.orchestrator)&&this.i18n("Host deletion is disabled because a selected host is not managed by Orchestrator.")}getHosts(t){if(this.isLoadingHosts)return;const e={mds:"cephfs",mon:"monitor",osd:"osd",rgw:"rgw","rbd-mirror":"rbdMirroring",mgr:"manager","tcmu-runner":"iscsi"};this.isLoadingHosts=!0,this.hostService.list().subscribe(t=>{t.map(t=>(t.services.map(t=>{t.cdLink=`/perf_counters/${t.type}/${encodeURIComponent(t.id)}`;const n=this.permissions[e[t.type]];return t.canRead=!!n&&n.read,t}),t)),this.hosts=t,this.isLoadingHosts=!1},()=>{this.isLoadingHosts=!1,t.error()})}}var Ps=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ms(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"a",[["class","service-link"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),s["ɵpad"](2,1),(t()(),s["ɵted"](3,null,["",".",""]))],(function(t,e){var n=e.component.cdParams,a=t(e,2,0,e.parent.context.$implicit.cdLink);t(e,1,0,n,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,3,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)}))}function qs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ","."," "]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)}))}function js(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[", "]))],null,null)}function Fs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ms)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qs)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,js)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit.canRead),t(e,4,0,!e.context.$implicit.canRead),t(e,6,0,!e.context.last)}),null)}function Vs(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Fs)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function Gs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","y0KGL0iZz"]],null,null,null,Wr.b,Wr.a)),s["ɵdid"](3,638976,null,0,Kr.a,[me.b,te.a,Xt.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){t(e,1,0,"Overall Performance"),t(e,3,0,"host-overview?","two","y0KGL0iZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Bs(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),s["ɵqud"](402653184,2,{servicesTpl:0}),(t()(),s["ɵeld"](2,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](3,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](4,0,null,0,9,"tab",[["heading","Hosts List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](5,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](6,0,null,null,7,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getHosts(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](7,2867200,[[1,4]],0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](8,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"cd-table-actions",[["class","btn-group"],["id","host-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](10,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](0,[[2,2],["servicesTpl",2]],null,0,null,Vs)),(t()(),s["ɵeld"](12,0,null,3,1,"cd-host-details",[["cdTableDetail",""]],null,null,null,ws,bs)),s["ɵdid"](13,49152,null,0,ps,[],{permissions:[0,"permissions"],selection:[1,"selection"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Gs)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,"Hosts List"),t(e,7,0,n.hosts,n.columns,"flex",!0,"single"),t(e,10,0,n.permissions.hosts,n.selection,n.tableActions),t(e,13,0,n.permissions,n.expandedRow),t(e,15,0,n.permissions.grafana.read)}),(function(t,e){t(e,2,0,s["ɵnov"](e,3).clazz),t(e,4,0,s["ɵnov"](e,5).id,s["ɵnov"](e,5).active,s["ɵnov"](e,5).addClass,s["ɵnov"](e,5).role,s["ɵnov"](e,5).ariaLabelledby)}))}function zs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-hosts",[],null,null,null,Bs,Ps)),s["ɵprd"](256,null,Os.a,Ls,[]),s["ɵdid"](2,114688,null,0,Ds,[Z.a,_i,Rs.a,Xt.a,Os.a,St.b,Ct.b,Es.a,Et.m,ks,bt.a],null,null)],(function(t,e){t(e,2,0)}),null)}var Ys=s["ɵccf"]("cd-hosts",Ds,zs,{},{},[]),Hs=n("mXUL"),Us=n("IZUe"),Ws=n("gp3X"),Ks=n("sb0X"),$s=n("KVJa"),Js=n("Z21x"),Zs=n("8xTl"),Qs=n("QFaf"),Xs=n("1Ni5");class tu{constructor(t,e,n,a,r){this.router=t,this.i18n=e,this.actionLabels=n,this.hostService=a,this.taskWrapper=r,this.loading=!0,this.resource=this.i18n("host"),this.action=this.actionLabels.CREATE,this.createForm()}ngOnInit(){this.hostService.list().subscribe(t=>{this.hostnames=t.map(t=>t.hostname),this.loading=!1})}createForm(){this.hostForm=new Qs.a({hostname:new K.i("",{validators:[K.B.required,Xs.a.custom("uniqueName",t=>this.hostnames&&-1!==this.hostnames.indexOf(t))]})})}submit(){const t=this.hostForm.get("hostname").value;this.taskWrapper.wrapTaskAroundCall({task:new Cs.a("host/"+St.e.CREATE,{hostname:t}),call:this.hostService.create(t)}).subscribe(void 0,()=>{this.hostForm.setErrors({cdSubmitButton:!0})},()=>{this.router.navigate(["/hosts"])})}}var eu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function nu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,49152,null,0,ki.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading..."]))],null,null)}function au(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function ru(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The chosen hostname is already in use."]))],null,null)}function iu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,40,"form",[["name","hostForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,2).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,2).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.G,[],null,null),s["ɵdid"](2,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](4,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](5,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](6,0,null,null,34,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,[""," ",""])),s["ɵppd"](9,1),s["ɵppd"](10,1),(t()(),s["ɵeld"](11,0,null,null,20,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](13,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","hostname"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Hostname"])),(t()(),s["ɵeld"](18,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,8,"input",[["autofocus",""],["class","form-control"],["formControlName","hostname"],["id","hostname"],["name","hostname"],["placeholder","mon-123"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,22)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,22).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,22)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,22)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,Us.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](24,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](26,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,au)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ru)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](32,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](34,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](35,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](36,0,[""," ",""])),s["ɵppd"](37,1),s["ɵppd"](38,1),(t()(),s["ɵeld"](39,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](40,49152,null,0,Js.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,2,0,n.hostForm),t(e,5,0,n.hostForm),t(e,13,0),t(e,20,0,""),t(e,24,0,"hostname"),t(e,27,0,"hostname"),t(e,29,0,n.hostForm.showError("hostname",s["ɵnov"](e,2),"required")),t(e,31,0,n.hostForm.showError("hostname",s["ɵnov"](e,2),"uniqueName")),t(e,35,0,s["ɵnov"](e,2))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,4).ngClassUntouched,s["ɵnov"](e,4).ngClassTouched,s["ɵnov"](e,4).ngClassPristine,s["ɵnov"](e,4).ngClassDirty,s["ɵnov"](e,4).ngClassValid,s["ɵnov"](e,4).ngClassInvalid,s["ɵnov"](e,4).ngClassPending);var a=s["ɵunv"](e,8,0,t(e,9,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,8,1,t(e,10,0,s["ɵnov"](e.parent,1),n.resource));t(e,8,0,a,r),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,26).ngClassUntouched,s["ɵnov"](e,26).ngClassTouched,s["ɵnov"](e,26).ngClassPristine,s["ɵnov"](e,26).ngClassDirty,s["ɵnov"](e,26).ngClassValid,s["ɵnov"](e,26).ngClassInvalid,s["ɵnov"](e,26).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass);var i=s["ɵunv"](e,36,0,t(e,37,0,s["ɵnov"](e.parent,0),n.action)),u=s["ɵunv"](e,36,1,t(e,38,0,s["ɵnov"](e.parent,1),n.resource));t(e,36,0,i,u)}))}function su(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Zs.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,nu)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](4,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,iu)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.loading),t(e,6,0,!n.loading)}),null)}function uu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-host-form",[],null,null,null,su,eu)),s["ɵdid"](1,114688,null,0,tu,[Et.m,Xt.a,St.b,_i,Es.a],null,null)],(function(t,e){t(e,1,0)}),null)}var ou=s["ɵccf"]("cd-host-form",tu,uu,{},{},[]);let lu=(()=>{class t{constructor(t){this.http=t}getMonitor(){return this.http.get("api/monitor")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t})();class du{constructor(t,e){this.monitorService=t,this.i18n=e,this.inQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:si.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")},{prop:"cdOpenSessions",name:this.i18n("Open Sessions"),cellTransformation:si.a.sparkline,comparator:(t,e)=>{const n=X.last(t),a=X.last(e);return n&&a&&n!==a?n>a?1:-1:0}}]},this.notInQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:si.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")}]}}refresh(){this.monitorService.getMonitor().subscribe(t=>{t.in_quorum.map(t=>(t.cdOpenSessions=t.stats.num_sessions.map(t=>t[1]),t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t)),t.out_quorum.map(t=>(t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t)),this.inQuorum.data=[...t.in_quorum],this.notInQuorum.data=[...t.out_quorum],this.mon_status=t.mon_status})}}var cu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function fu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,35,"table",[["class","table table-striped"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster ID"])),(t()(),s["ɵeld"](4,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["monmap modified"])),(t()(),s["ɵeld"](9,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](10,null,["",""])),(t()(),s["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["monmap epoch"])),(t()(),s["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](15,null,["",""])),(t()(),s["ɵeld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["quorum con"])),(t()(),s["ɵeld"](19,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](20,null,["",""])),(t()(),s["ɵeld"](21,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["quorum mon"])),(t()(),s["ɵeld"](24,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](25,null,["",""])),(t()(),s["ɵeld"](26,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["required con"])),(t()(),s["ɵeld"](29,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](30,null,["",""])),(t()(),s["ɵeld"](31,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["required mon"])),(t()(),s["ɵeld"](34,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](35,null,["",""]))],null,(function(t,e){var n=e.component;t(e,5,0,n.mon_status.monmap.fsid),t(e,10,0,n.mon_status.monmap.modified),t(e,15,0,n.mon_status.monmap.epoch),t(e,20,0,n.mon_status.features.quorum_con),t(e,25,0,n.mon_status.features.quorum_mon),t(e,30,0,n.mon_status.features.required_con),t(e,35,0,n.mon_status.features.required_mon)}))}function hu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"div",[["class","col-lg-4"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Status"])),(t()(),s["ɵand"](16777216,null,null,1,null,fu)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](7,0,null,null,8,"div",[["class","col-lg-8"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"legend",[["class","in-quorum cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["In Quorum"])),(t()(),s["ɵeld"](10,0,null,null,1,"cd-table",[],null,null,null,$r.b,$r.a)),s["ɵdid"](11,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(t()(),s["ɵeld"](12,0,null,null,1,"legend",[["class","in-quorum cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Not In Quorum"])),(t()(),s["ɵeld"](14,0,null,null,1,"cd-table",[],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.refresh()&&a),a}),$r.b,$r.a)),s["ɵdid"](15,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,6,0,n.mon_status),t(e,11,0,n.inQuorum.data,n.inQuorum.columns),t(e,15,0,n.notInQuorum.data,n.notInQuorum.columns)}),null)}function gu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-monitor",[],null,null,null,hu,cu)),s["ɵdid"](1,49152,null,0,du,[lu,Xt.a],null,null)],null,null)}var pu=s["ɵccf"]("cd-monitor",du,gu,{},{},[]);class bu{constructor(){}ngOnInit(){}}var mu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function yu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,[[1,4]],0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Daemons"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-service-daemon-list",[],null,null,null,Ni,wi)),s["ɵdid"](5,4964352,null,0,Ti,[Xt.a,_i,vi,ri],{serviceName:[0,"serviceName"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Daemons"),t(e,5,0,n.selection.service_name)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function vu(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tabsetChild:0}),(t()(),s["ɵand"](16777216,null,null,1,null,yu)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.component.selection)}),null)}var xu=n("nYR2");class _u{constructor(t){this.i18n=t}transform(t){if(X.isUndefined(t))return this.i18n("no spec");if(X.get(t,"unmanaged",!1))return this.i18n("unmanaged");const e=[],n=X.get(t,"placement.hosts"),a=X.get(t,"placement.count"),r=X.get(t,"placement.label"),i=X.get(t,"placement.host_pattern");return X.isArray(n)&&e.push(...n),X.isNumber(a)&&e.push(this.i18n("count:{{count}}",{count:a})),X.isString(r)&&e.push(this.i18n("label:{{label}}",{label:r})),X.isString(i)&&e.push(i),e.join(";")}}const Tu=new Os.a("services");class wu extends Ss.a{constructor(t,e,n,a,r,i,s,u){super(),this.actionLabels=t,this.authStorageService=e,this.i18n=n,this.bsModalService=a,this.orchService=r,this.cephServiceService=i,this.taskWrapperService=s,this.urlBuilder=u,this.hiddenColumns=[],this.showDocPanel=!1,this.checkingOrchestrator=!0,this.hasOrchestrator=!1,this.columns=[],this.services=[],this.isLoadingServices=!1,this.selection=new ui.a,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:pt.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:t=>!t.hasSelection},{permission:"delete",icon:pt.a.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSingleSelection,name:this.actionLabels.DELETE}]}ngOnInit(){const t=[{name:this.i18n("Service"),prop:"service_name",flexGrow:1},{name:this.i18n("Container image name"),prop:"status.container_image_name",flexGrow:3},{name:this.i18n("Container image ID"),prop:"status.container_image_id",flexGrow:1.5,cellTransformation:si.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Placement"),prop:"",pipe:new _u(this.i18n),flexGrow:2},{name:this.i18n("Running"),prop:"status.running",flexGrow:1},{name:this.i18n("Size"),prop:"status.size",flexGrow:1},{name:this.i18n("Last Refreshed"),prop:"status.last_refresh",flexGrow:1}];this.columns=t.filter(t=>!this.hiddenColumns.includes(t.prop)),this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.showDocPanel=!t.available})}ngOnChanges(){this.hasOrchestrator&&(this.services=[],this.table.reloadData())}getServices(t){this.isLoadingServices||(this.isLoadingServices=!0,this.cephServiceService.list().subscribe(t=>{this.services=t,this.isLoadingServices=!1},()=>{this.isLoadingServices=!1,this.services=[],t.error()}))}updateSelection(t){this.selection=t}deleteAction(){const t=this.selection.first();this.bsModalService.show(Is.a,{initialState:{itemDescription:this.i18n("Service"),itemNames:[t.service_name],actionDescription:"delete",submitActionObservable:()=>this.taskWrapperService.wrapTaskAroundCall({task:new Cs.a("service/"+St.e.DELETE,{service_name:t.service_name}),call:this.cephServiceService.delete(t.service_name)}).pipe(Ne(2e3),Object(xu.a)(()=>{this.table.refreshBtn()}))}})}}var Ou=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Su(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ai,ni)),s["ɵdid"](1,49152,null,0,ei,[],null,null)],null,null)}function Iu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","service_name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getServices(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](2,2867200,[[1,4]],0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],forceIdentifier:[6,"forceIdentifier"],selectionType:[7,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](4,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](5,0,null,3,1,"cd-service-details",[["cdTableDetail",""]],null,null,null,vu,mu)),s["ɵdid"](6,114688,null,0,bu,[],{permissions:[0,"permissions"],selection:[1,"selection"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.services,n.columns,"flex",!0,5e3,"service_name","true","single"),t(e,4,0,n.permissions.hosts,n.selection,n.tableActions),t(e,6,0,n.permissions,n.expandedRow)}),null)}function Nu(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{table:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Su)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Iu)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.showDocPanel),t(e,4,0,n.hasOrchestrator)}),null)}function Cu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-services",[],null,null,null,Nu,Ou)),s["ɵprd"](256,null,Os.a,Tu,[]),s["ɵdid"](2,638976,null,0,wu,[St.b,Z.a,Xt.a,Ct.b,ri,vi,Es.a,Os.a],null,null)],(function(t,e){t(e,2,0)}),null)}var Ru=s["ɵccf"]("cd-services",wu,Cu,{hostname:"hostname",hiddenColumns:"hiddenColumns"},{},[]),Au=n("hpHm");function ku(t){return!!t&&(t instanceof Kn.a||"function"==typeof t.lift&&"function"==typeof t.subscribe)}function Eu(t,e=Oe.a){return n=>n.lift(new Lu(t,e))}class Lu{constructor(t,e){this.dueTime=t,this.scheduler=e}call(t,e){return e.subscribe(new Du(t,this.dueTime,this.scheduler))}}class Du extends Se.a{constructor(t,e,n){super(t),this.dueTime=e,this.scheduler=n,this.debouncedSubscription=null,this.lastValue=null,this.hasValue=!1}_next(t){this.clearDebounce(),this.lastValue=t,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(Pu,this.dueTime,this))}_complete(){this.debouncedNext(),this.destination.complete()}debouncedNext(){if(this.clearDebounce(),this.hasValue){const{lastValue:t}=this;this.lastValue=null,this.hasValue=!1,this.destination.next(t)}}clearDebounce(){const t=this.debouncedSubscription;null!==t&&(this.remove(t),t.unsubscribe(),this.debouncedSubscription=null)}}function Pu(t){t.debouncedNext()}var Mu=n("eIep");const qu={"Á":"A","Ă":"A","Ắ":"A","Ặ":"A","Ằ":"A","Ẳ":"A","Ẵ":"A","Ǎ":"A","Â":"A","Ấ":"A","Ậ":"A","Ầ":"A","Ẩ":"A","Ẫ":"A","Ä":"A","Ǟ":"A","Ȧ":"A","Ǡ":"A","Ạ":"A","Ȁ":"A","À":"A","Ả":"A","Ȃ":"A","Ā":"A","Ą":"A","Å":"A","Ǻ":"A","Ḁ":"A","Ⱥ":"A","Ã":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ḃ":"B","Ḅ":"B","Ɓ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ć":"C","Č":"C","Ç":"C","Ḉ":"C","Ĉ":"C","Ċ":"C","Ƈ":"C","Ȼ":"C","Ď":"D","Ḑ":"D","Ḓ":"D","Ḋ":"D","Ḍ":"D","Ɗ":"D","Ḏ":"D","Dz":"D","Dž":"D","Đ":"D","Ƌ":"D","DZ":"DZ","DŽ":"DZ","É":"E","Ĕ":"E","Ě":"E","Ȩ":"E","Ḝ":"E","Ê":"E","Ế":"E","Ệ":"E","Ề":"E","Ể":"E","Ễ":"E","Ḙ":"E","Ë":"E","Ė":"E","Ẹ":"E","Ȅ":"E","È":"E","Ẻ":"E","Ȇ":"E","Ē":"E","Ḗ":"E","Ḕ":"E","Ę":"E","Ɇ":"E","Ẽ":"E","Ḛ":"E","Ꝫ":"ET","Ḟ":"F","Ƒ":"F","Ǵ":"G","Ğ":"G","Ǧ":"G","Ģ":"G","Ĝ":"G","Ġ":"G","Ɠ":"G","Ḡ":"G","Ǥ":"G","Ḫ":"H","Ȟ":"H","Ḩ":"H","Ĥ":"H","Ⱨ":"H","Ḧ":"H","Ḣ":"H","Ḥ":"H","Ħ":"H","Í":"I","Ĭ":"I","Ǐ":"I","Î":"I","Ï":"I","Ḯ":"I","İ":"I","Ị":"I","Ȉ":"I","Ì":"I","Ỉ":"I","Ȋ":"I","Ī":"I","Į":"I","Ɨ":"I","Ĩ":"I","Ḭ":"I","Ꝺ":"D","Ꝼ":"F","Ᵹ":"G","Ꞃ":"R","Ꞅ":"S","Ꞇ":"T","Ꝭ":"IS","Ĵ":"J","Ɉ":"J","Ḱ":"K","Ǩ":"K","Ķ":"K","Ⱪ":"K","Ꝃ":"K","Ḳ":"K","Ƙ":"K","Ḵ":"K","Ꝁ":"K","Ꝅ":"K","Ĺ":"L","Ƚ":"L","Ľ":"L","Ļ":"L","Ḽ":"L","Ḷ":"L","Ḹ":"L","Ⱡ":"L","Ꝉ":"L","Ḻ":"L","Ŀ":"L","Ɫ":"L","Lj":"L","Ł":"L","LJ":"LJ","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ń":"N","Ň":"N","Ņ":"N","Ṋ":"N","Ṅ":"N","Ṇ":"N","Ǹ":"N","Ɲ":"N","Ṉ":"N","Ƞ":"N","Nj":"N","Ñ":"N","NJ":"NJ","Ó":"O","Ŏ":"O","Ǒ":"O","Ô":"O","Ố":"O","Ộ":"O","Ồ":"O","Ổ":"O","Ỗ":"O","Ö":"O","Ȫ":"O","Ȯ":"O","Ȱ":"O","Ọ":"O","Ő":"O","Ȍ":"O","Ò":"O","Ỏ":"O","Ơ":"O","Ớ":"O","Ợ":"O","Ờ":"O","Ở":"O","Ỡ":"O","Ȏ":"O","Ꝋ":"O","Ꝍ":"O","Ō":"O","Ṓ":"O","Ṑ":"O","Ɵ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Õ":"O","Ṍ":"O","Ṏ":"O","Ȭ":"O","Ƣ":"OI","Ꝏ":"OO","Ɛ":"E","Ɔ":"O","Ȣ":"OU","Ṕ":"P","Ṗ":"P","Ꝓ":"P","Ƥ":"P","Ꝕ":"P","Ᵽ":"P","Ꝑ":"P","Ꝙ":"Q","Ꝗ":"Q","Ŕ":"R","Ř":"R","Ŗ":"R","Ṙ":"R","Ṛ":"R","Ṝ":"R","Ȑ":"R","Ȓ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꜿ":"C","Ǝ":"E","Ś":"S","Ṥ":"S","Š":"S","Ṧ":"S","Ş":"S","Ŝ":"S","Ș":"S","Ṡ":"S","Ṣ":"S","Ṩ":"S","Ť":"T","Ţ":"T","Ṱ":"T","Ț":"T","Ⱦ":"T","Ṫ":"T","Ṭ":"T","Ƭ":"T","Ṯ":"T","Ʈ":"T","Ŧ":"T","Ɐ":"A","Ꞁ":"L","Ɯ":"M","Ʌ":"V","Ꜩ":"TZ","Ú":"U","Ŭ":"U","Ǔ":"U","Û":"U","Ṷ":"U","Ü":"U","Ǘ":"U","Ǚ":"U","Ǜ":"U","Ǖ":"U","Ṳ":"U","Ụ":"U","Ű":"U","Ȕ":"U","Ù":"U","Ủ":"U","Ư":"U","Ứ":"U","Ự":"U","Ừ":"U","Ử":"U","Ữ":"U","Ȗ":"U","Ū":"U","Ṻ":"U","Ų":"U","Ů":"U","Ũ":"U","Ṹ":"U","Ṵ":"U","Ꝟ":"V","Ṿ":"V","Ʋ":"V","Ṽ":"V","Ꝡ":"VY","Ẃ":"W","Ŵ":"W","Ẅ":"W","Ẇ":"W","Ẉ":"W","Ẁ":"W","Ⱳ":"W","Ẍ":"X","Ẋ":"X","Ý":"Y","Ŷ":"Y","Ÿ":"Y","Ẏ":"Y","Ỵ":"Y","Ỳ":"Y","Ƴ":"Y","Ỷ":"Y","Ỿ":"Y","Ȳ":"Y","Ɏ":"Y","Ỹ":"Y","Ź":"Z","Ž":"Z","Ẑ":"Z","Ⱬ":"Z","Ż":"Z","Ẓ":"Z","Ȥ":"Z","Ẕ":"Z","Ƶ":"Z","IJ":"IJ","Œ":"OE","ᴀ":"A","ᴁ":"AE","ʙ":"B","ᴃ":"B","ᴄ":"C","ᴅ":"D","ᴇ":"E","ꜰ":"F","ɢ":"G","ʛ":"G","ʜ":"H","ɪ":"I","ʁ":"R","ᴊ":"J","ᴋ":"K","ʟ":"L","ᴌ":"L","ᴍ":"M","ɴ":"N","ᴏ":"O","ɶ":"OE","ᴐ":"O","ᴕ":"OU","ᴘ":"P","ʀ":"R","ᴎ":"N","ᴙ":"R","ꜱ":"S","ᴛ":"T","ⱻ":"E","ᴚ":"R","ᴜ":"U","ᴠ":"V","ᴡ":"W","ʏ":"Y","ᴢ":"Z","á":"a","ă":"a","ắ":"a","ặ":"a","ằ":"a","ẳ":"a","ẵ":"a","ǎ":"a","â":"a","ấ":"a","ậ":"a","ầ":"a","ẩ":"a","ẫ":"a","ä":"a","ǟ":"a","ȧ":"a","ǡ":"a","ạ":"a","ȁ":"a","à":"a","ả":"a","ȃ":"a","ā":"a","ą":"a","ᶏ":"a","ẚ":"a","å":"a","ǻ":"a","ḁ":"a","ⱥ":"a","ã":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ḃ":"b","ḅ":"b","ɓ":"b","ḇ":"b","ᵬ":"b","ᶀ":"b","ƀ":"b","ƃ":"b","ɵ":"o","ć":"c","č":"c","ç":"c","ḉ":"c","ĉ":"c","ɕ":"c","ċ":"c","ƈ":"c","ȼ":"c","ď":"d","ḑ":"d","ḓ":"d","ȡ":"d","ḋ":"d","ḍ":"d","ɗ":"d","ᶑ":"d","ḏ":"d","ᵭ":"d","ᶁ":"d","đ":"d","ɖ":"d","ƌ":"d","ı":"i","ȷ":"j","ɟ":"j","ʄ":"j","dz":"dz","dž":"dz","é":"e","ĕ":"e","ě":"e","ȩ":"e","ḝ":"e","ê":"e","ế":"e","ệ":"e","ề":"e","ể":"e","ễ":"e","ḙ":"e","ë":"e","ė":"e","ẹ":"e","ȅ":"e","è":"e","ẻ":"e","ȇ":"e","ē":"e","ḗ":"e","ḕ":"e","ⱸ":"e","ę":"e","ᶒ":"e","ɇ":"e","ẽ":"e","ḛ":"e","ꝫ":"et","ḟ":"f","ƒ":"f","ᵮ":"f","ᶂ":"f","ǵ":"g","ğ":"g","ǧ":"g","ģ":"g","ĝ":"g","ġ":"g","ɠ":"g","ḡ":"g","ᶃ":"g","ǥ":"g","ḫ":"h","ȟ":"h","ḩ":"h","ĥ":"h","ⱨ":"h","ḧ":"h","ḣ":"h","ḥ":"h","ɦ":"h","ẖ":"h","ħ":"h","ƕ":"hv","í":"i","ĭ":"i","ǐ":"i","î":"i","ï":"i","ḯ":"i","ị":"i","ȉ":"i","ì":"i","ỉ":"i","ȋ":"i","ī":"i","į":"i","ᶖ":"i","ɨ":"i","ĩ":"i","ḭ":"i","ꝺ":"d","ꝼ":"f","ᵹ":"g","ꞃ":"r","ꞅ":"s","ꞇ":"t","ꝭ":"is","ǰ":"j","ĵ":"j","ʝ":"j","ɉ":"j","ḱ":"k","ǩ":"k","ķ":"k","ⱪ":"k","ꝃ":"k","ḳ":"k","ƙ":"k","ḵ":"k","ᶄ":"k","ꝁ":"k","ꝅ":"k","ĺ":"l","ƚ":"l","ɬ":"l","ľ":"l","ļ":"l","ḽ":"l","ȴ":"l","ḷ":"l","ḹ":"l","ⱡ":"l","ꝉ":"l","ḻ":"l","ŀ":"l","ɫ":"l","ᶅ":"l","ɭ":"l","ł":"l","lj":"lj","ſ":"s","ẜ":"s","ẛ":"s","ẝ":"s","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ᵯ":"m","ᶆ":"m","ń":"n","ň":"n","ņ":"n","ṋ":"n","ȵ":"n","ṅ":"n","ṇ":"n","ǹ":"n","ɲ":"n","ṉ":"n","ƞ":"n","ᵰ":"n","ᶇ":"n","ɳ":"n","ñ":"n","nj":"nj","ó":"o","ŏ":"o","ǒ":"o","ô":"o","ố":"o","ộ":"o","ồ":"o","ổ":"o","ỗ":"o","ö":"o","ȫ":"o","ȯ":"o","ȱ":"o","ọ":"o","ő":"o","ȍ":"o","ò":"o","ỏ":"o","ơ":"o","ớ":"o","ợ":"o","ờ":"o","ở":"o","ỡ":"o","ȏ":"o","ꝋ":"o","ꝍ":"o","ⱺ":"o","ō":"o","ṓ":"o","ṑ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","õ":"o","ṍ":"o","ṏ":"o","ȭ":"o","ƣ":"oi","ꝏ":"oo","ɛ":"e","ᶓ":"e","ɔ":"o","ᶗ":"o","ȣ":"ou","ṕ":"p","ṗ":"p","ꝓ":"p","ƥ":"p","ᵱ":"p","ᶈ":"p","ꝕ":"p","ᵽ":"p","ꝑ":"p","ꝙ":"q","ʠ":"q","ɋ":"q","ꝗ":"q","ŕ":"r","ř":"r","ŗ":"r","ṙ":"r","ṛ":"r","ṝ":"r","ȑ":"r","ɾ":"r","ᵳ":"r","ȓ":"r","ṟ":"r","ɼ":"r","ᵲ":"r","ᶉ":"r","ɍ":"r","ɽ":"r","ↄ":"c","ꜿ":"c","ɘ":"e","ɿ":"r","ś":"s","ṥ":"s","š":"s","ṧ":"s","ş":"s","ŝ":"s","ș":"s","ṡ":"s","ṣ":"s","ṩ":"s","ʂ":"s","ᵴ":"s","ᶊ":"s","ȿ":"s","ɡ":"g","ᴑ":"o","ᴓ":"o","ᴝ":"u","ť":"t","ţ":"t","ṱ":"t","ț":"t","ȶ":"t","ẗ":"t","ⱦ":"t","ṫ":"t","ṭ":"t","ƭ":"t","ṯ":"t","ᵵ":"t","ƫ":"t","ʈ":"t","ŧ":"t","ᵺ":"th","ɐ":"a","ᴂ":"ae","ǝ":"e","ᵷ":"g","ɥ":"h","ʮ":"h","ʯ":"h","ᴉ":"i","ʞ":"k","ꞁ":"l","ɯ":"m","ɰ":"m","ᴔ":"oe","ɹ":"r","ɻ":"r","ɺ":"r","ⱹ":"r","ʇ":"t","ʌ":"v","ʍ":"w","ʎ":"y","ꜩ":"tz","ú":"u","ŭ":"u","ǔ":"u","û":"u","ṷ":"u","ü":"u","ǘ":"u","ǚ":"u","ǜ":"u","ǖ":"u","ṳ":"u","ụ":"u","ű":"u","ȕ":"u","ù":"u","ủ":"u","ư":"u","ứ":"u","ự":"u","ừ":"u","ử":"u","ữ":"u","ȗ":"u","ū":"u","ṻ":"u","ų":"u","ᶙ":"u","ů":"u","ũ":"u","ṹ":"u","ṵ":"u","ᵫ":"ue","ꝸ":"um","ⱴ":"v","ꝟ":"v","ṿ":"v","ʋ":"v","ᶌ":"v","ⱱ":"v","ṽ":"v","ꝡ":"vy","ẃ":"w","ŵ":"w","ẅ":"w","ẇ":"w","ẉ":"w","ẁ":"w","ⱳ":"w","ẘ":"w","ẍ":"x","ẋ":"x","ᶍ":"x","ý":"y","ŷ":"y","ÿ":"y","ẏ":"y","ỵ":"y","ỳ":"y","ƴ":"y","ỷ":"y","ỿ":"y","ȳ":"y","ẙ":"y","ɏ":"y","ỹ":"y","ź":"z","ž":"z","ẑ":"z","ʑ":"z","ⱬ":"z","ż":"z","ẓ":"z","ȥ":"z","ẕ":"z","ᵶ":"z","ᶎ":"z","ʐ":"z","ƶ":"z","ɀ":"z","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ij":"ij","œ":"oe","st":"st","ₐ":"a","ₑ":"e","ᵢ":"i","ⱼ":"j","ₒ":"o","ᵣ":"r","ᵤ":"u","ᵥ":"v","ₓ":"x"};class ju{constructor(t,e=t,n=!1){this.item=t,this.value=e,this.header=n}isHeader(){return this.header}toString(){return this.value}}function Fu(t){return t?t.replace(/[^A-Za-z0-9\[\] ]/g,(function(t){return qu[t]||t})):""}function Vu(t,e=" ",n=""){const a=t.split(new RegExp(`(?:[${n}])([^${n}]+)(?:[${n}])|([^${e}]+)`,"g")),r=[],i=a.length;let s;const u=new RegExp(`[${n}]+`,"g");for(let o=0;o<i;o+=1)s=a[o],s&&s.length&&s!==e&&r.push(s.replace(u,""));return r}function Gu(t,e){if(!e||"object"!=typeof t)return t.toString();if(e.endsWith("()"))return t[e.slice(0,e.length-2)]().toString();const n=e.replace(/\[(\w+)\]/g,".$1").replace(/^\./,"").split(".");for(const a of n)a in t&&(t=t[a]);return t?t.toString():""}class Bu{constructor(t,e,n,a){this.positionService=t,this.renderer=e,this.element=n,this.changeDetectorRef=a,this.isFocused=!1,this.height=0,this._matches=[],this.isScrolledIntoView=function(t){const e=this.ulElement.nativeElement.scrollTop,n=e+Number(this.ulElement.nativeElement.offsetHeight),a=t.offsetTop;return a+t.offsetHeight<=n&&a>=e},this.positionServiceSubscription=this.positionService.event$.subscribe(()=>{if(this.isAnimated)return this.animationState=this.isTopPosition?"animated-up":"animated-down",void this.changeDetectorRef.detectChanges();this.animationState="unanimated",this.changeDetectorRef.detectChanges()})}get isBs4(){return!Object(Au.d)()}get active(){return this._active}get matches(){return this._matches}set matches(t){if(this.positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition}},allowedPositions:["top","bottom"]}),this._matches=t,this.needScrollbar=this.typeaheadScrollable&&this.typeaheadOptionsInScrollableView<this.matches.length,this.typeaheadScrollable&&setTimeout(()=>{this.setScrollableMode()}),this.typeaheadIsFirstItemActive&&this._matches.length>0&&(this._active=this._matches[0],this._active.isHeader()&&this.nextActiveMatch()),this._active&&!this.typeaheadIsFirstItemActive){const t=this._matches.find(t=>t.value===this._active.value);if(t)return void this.selectActive(t);this._active=null}}get isTopPosition(){return this.element.nativeElement.classList.contains("top")}get optionsListTemplate(){return this.parent?this.parent.optionsListTemplate:void 0}get isAnimated(){return!!this.parent&&this.parent.isAnimated}get adaptivePosition(){return!!this.parent&&this.parent.adaptivePosition}get typeaheadScrollable(){return!!this.parent&&this.parent.typeaheadScrollable}get typeaheadOptionsInScrollableView(){return this.parent?this.parent.typeaheadOptionsInScrollableView:5}get typeaheadIsFirstItemActive(){return!this.parent||this.parent.typeaheadIsFirstItemActive}get itemTemplate(){return this.parent?this.parent.typeaheadItemTemplate:void 0}selectActiveMatch(t){this._active&&this.parent.typeaheadSelectFirstItem&&this.selectMatch(this._active),!this.parent.typeaheadSelectFirstItem&&t&&this.selectMatch(this._active)}prevActiveMatch(){const t=this.matches.indexOf(this._active);this._active=this.matches[t-1<0?this.matches.length-1:t-1],this._active.isHeader()&&this.prevActiveMatch(),this.typeaheadScrollable&&this.scrollPrevious(t)}nextActiveMatch(){const t=this.matches.indexOf(this._active);this._active=this.matches[t+1>this.matches.length-1?0:t+1],this._active.isHeader()&&this.nextActiveMatch(),this.typeaheadScrollable&&this.scrollNext(t)}selectActive(t){this.isFocused=!0,this._active=t}highlight(t,e){let n,a,r=t.value,i=(this.parent&&this.parent.typeaheadLatinize?Fu(r):r).toLowerCase();if("object"==typeof e){const t=e.length;for(let s=0;s<t;s+=1)n=i.indexOf(e[s]),a=e[s].length,n>=0&&a>0&&(r=`${r.substring(0,n)}<strong>${r.substring(n,n+a)}</strong>`+r.substring(n+a),i=`${i.substring(0,n)}        ${" ".repeat(a)}         `+i.substring(n+a))}else e&&(n=i.indexOf(e),a=e.length,n>=0&&a>0&&(r=`${r.substring(0,n)}<strong>${r.substring(n,n+a)}</strong>`+r.substring(n+a)));return r}focusLost(){this.isFocused=!1}isActive(t){return this._active===t}selectMatch(t,e){return e&&(e.stopPropagation(),e.preventDefault()),this.parent.changeModel(t),setTimeout(()=>this.parent.typeaheadOnSelect.emit(t),0),!1}setScrollableMode(){if(this.ulElement||(this.ulElement=this.element),this.liElements.first){const t=Au.b.getStyles(this.ulElement.nativeElement),e=Au.b.getStyles(this.liElements.first.nativeElement),n=parseFloat((t["padding-bottom"]?t["padding-bottom"]:"").replace("px","")),a=parseFloat((t["padding-top"]?t["padding-top"]:"0").replace("px","")),r=parseFloat((e.height?e.height:"0").replace("px",""));this.guiHeight=this.typeaheadOptionsInScrollableView*r+a+n+"px"}this.renderer.setStyle(this.element.nativeElement,"visibility","visible")}scrollPrevious(t){if(0!==t){if(this.liElements){const e=this.liElements.toArray()[t-1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop)}}else this.scrollToBottom()}scrollNext(t){if(t+1>this.matches.length-1)this.scrollToTop();else if(this.liElements){const e=this.liElements.toArray()[t+1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop-Number(this.ulElement.nativeElement.offsetHeight)+Number(e.nativeElement.offsetHeight))}}ngOnDestroy(){this.positionServiceSubscription.unsubscribe()}scrollToBottom(){this.ulElement.nativeElement.scrollTop=this.ulElement.nativeElement.scrollHeight}scrollToTop(){this.ulElement.nativeElement.scrollTop=0}}class zu{constructor(){this.adaptivePosition=!1,this.isAnimated=!1,this.hideResultsOnBlur=!0,this.selectFirstItem=!0,this.isFirstItemActive=!0,this.minLength=1}}class Yu{constructor(t,e,n,a,r,i,u){this.changeDetection=n,this.element=a,this.ngControl=r,this.renderer=i,this.typeaheadMinLength=void 0,this.isAnimated=!1,this.typeaheadAsync=void 0,this.typeaheadLatinize=!0,this.typeaheadSingleWords=!0,this.typeaheadWordDelimiters=" ",this.typeaheadPhraseDelimiters="'\"",this.typeaheadScrollable=!1,this.typeaheadOptionsInScrollableView=5,this.typeaheadSelectFirstItem=!0,this.typeaheadIsFirstItemActive=!0,this.typeaheadLoading=new s.EventEmitter,this.typeaheadNoResults=new s.EventEmitter,this.typeaheadOnSelect=new s.EventEmitter,this.typeaheadOnBlur=new s.EventEmitter,this.dropup=!1,this.isActiveItemChanged=!1,this.isTypeaheadOptionsListActive=!1,this.keyUpEventEmitter=new s.EventEmitter,this.placement="bottom-left",this._subscriptions=[],this._typeahead=t.createLoader(a,u,i).provide({provide:zu,useValue:e}),Object.assign(this,{typeaheadHideResultsOnBlur:e.hideResultsOnBlur,typeaheadSelectFirstItem:e.selectFirstItem,typeaheadIsFirstItemActive:e.isFirstItemActive,typeaheadMinLength:e.minLength,adaptivePosition:e.adaptivePosition,isAnimated:e.isAnimated})}ngOnInit(){this.typeaheadOptionsLimit=this.typeaheadOptionsLimit||20,this.typeaheadMinLength=void 0===this.typeaheadMinLength?1:this.typeaheadMinLength,this.typeaheadWaitMs=this.typeaheadWaitMs||0,void 0!==this.typeaheadAsync||ku(this.typeahead)||(this.typeaheadAsync=!1),ku(this.typeahead)&&(this.typeaheadAsync=!0),this.typeaheadAsync?this.asyncActions():this.syncActions()}onInput(t){const e=void 0!==t.target.value?t.target.value:void 0!==t.target.textContent?t.target.textContent:t.target.innerText;null!=e&&e.trim().length>=this.typeaheadMinLength?(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(t.target.value)):(this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!1),this.hide())}onChange(t){if(this._container){if(27===t.keyCode||"Escape"===t.key)return void this.hide();if(38===t.keyCode||"ArrowUp"===t.key)return this.isActiveItemChanged=!0,void this._container.prevActiveMatch();if(40===t.keyCode||"ArrowDown"===t.key)return this.isActiveItemChanged=!0,void this._container.nextActiveMatch();if(13===t.keyCode||"Enter"===t.key)return void this._container.selectActiveMatch()}}onFocus(){0===this.typeaheadMinLength&&(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(this.element.nativeElement.value||""))}onBlur(){this._container&&!this._container.isFocused&&this.typeaheadOnBlur.emit(this._container.active)}onKeydown(t){if(this._container&&(9===t.keyCode||"Tab"===t.key||13===t.keyCode||"Enter"===t.key)){if(t.preventDefault(),this.typeaheadSelectFirstItem)return void this._container.selectActiveMatch();this.typeaheadSelectFirstItem||(this._container.selectActiveMatch(this.isActiveItemChanged),this.isActiveItemChanged=!1,this.hide())}}changeModel(t){const e=t.value;this.ngControl.viewToModelUpdate(e),this.ngControl.control.setValue(e),this.changeDetection.markForCheck(),this.hide()}get matches(){return this._matches}show(){this._typeahead.attach(Bu).to(this.container).position({attachment:(this.dropup?"top":"bottom")+" start"}).show({typeaheadRef:this,placement:this.placement,animation:!1,dropup:this.dropup}),this._outsideClickListener=this.renderer.listen("document","click",t=>{0===this.typeaheadMinLength&&this.element.nativeElement.contains(t.target)||this.typeaheadHideResultsOnBlur&&!this.element.nativeElement.contains(t.target)&&this.onOutsideClick()}),this._container=this._typeahead.instance,this._container.parent=this;const t=(this.typeaheadLatinize?Fu(this.ngControl.control.value):this.ngControl.control.value).toString().toLowerCase();this._container.query=this.typeaheadSingleWords?Vu(t,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):t,this._container.matches=this._matches,this.element.nativeElement.focus()}hide(){this._typeahead.isShown&&(this._typeahead.hide(),this._outsideClickListener(),this._container=null)}onOutsideClick(){this._container&&!this._container.isFocused&&this.hide()}ngOnDestroy(){for(const t of this._subscriptions)t.unsubscribe();this._typeahead.dispose()}asyncActions(){this._subscriptions.push(this.keyUpEventEmitter.pipe(Eu(this.typeaheadWaitMs),Object(Mu.a)(t=>this.typeahead.pipe(Object(Je.a)(e=>{const n=this.normalizeQuery(t);return e.filter(t=>t&&this.testMatch(this.normalizeOption(t),n))})))).subscribe(t=>{this.finalizeAsyncCall(t)}))}syncActions(){this._subscriptions.push(this.keyUpEventEmitter.pipe(Eu(this.typeaheadWaitMs),Object(_e.a)(t=>{const e=this.normalizeQuery(t);return Object($n.a)(this.typeahead).pipe(Object(Jn.a)(t=>t&&this.testMatch(this.normalizeOption(t),e)),aa())})).subscribe(t=>{this.finalizeAsyncCall(t)}))}normalizeOption(t){const e=Gu(t,this.typeaheadOptionField);return(this.typeaheadLatinize?Fu(e):e).toLowerCase()}normalizeQuery(t){let e=(this.typeaheadLatinize?Fu(t):t).toString().toLowerCase();return e=this.typeaheadSingleWords?Vu(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e,e}testMatch(t,e){let n;if("object"==typeof e){n=e.length;for(let a=0;a<n;a+=1)if(e[a].length>0&&t.indexOf(e[a])<0)return!1;return!0}return t.indexOf(e)>=0}finalizeAsyncCall(t){if(this.prepareMatches(t||[]),this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!this.hasMatches()),this.hasMatches())if(this._container){const t=((this.typeaheadLatinize?Fu(this.ngControl.control.value):this.ngControl.control.value)||"").toString().toLowerCase();this._container.query=this.typeaheadSingleWords?Vu(t,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):t,this._container.matches=this._matches}else this.show();else this.hide()}prepareMatches(t){const e=t.slice(0,this.typeaheadOptionsLimit);if(this.typeaheadGroupField){let t=[];e.map(t=>Gu(t,this.typeaheadGroupField)).filter((t,e,n)=>n.indexOf(t)===e).forEach(n=>{t.push(new ju(n,n,!0)),t=t.concat(e.filter(t=>Gu(t,this.typeaheadGroupField)===n).map(t=>new ju(t,Gu(t,this.typeaheadOptionField))))}),this._matches=t}else this._matches=e.map(t=>new ju(t,Gu(t,this.typeaheadOptionField)))}hasMatches(){return this._matches.length>0}}class Hu{static forRoot(){return{ngModule:Hu,providers:[U.a,Sa.a,zu]}}}var Uu=n("pYKc"),Wu=n("ppaS"),Ku=n("4HWh"),$u=n("p4Cf"),Ju=n("D4zM"),Zu=n("OcYo"),Qu=n("Ekvf"),Xu=n("a96k"),to=n("2EZI");class eo{constructor(t,e,n,a,r,i,s,u){this.actionLabels=t,this.cephServiceService=e,this.formBuilder=n,this.hostService=a,this.i18n=r,this.poolService=i,this.router=s,this.taskWrapperService=u,this.serviceTypes=[],this.searchLabels=new Kn.a(t=>{t.next(this.serviceForm.getValue("label"))}).pipe(Object(Je.a)(t=>this.labels.filter(e=>e.toLowerCase().indexOf(t.toLowerCase())>-1).slice(0,10))),this.resource=this.i18n("service"),this.hosts={options:[],messages:new Ns.a({empty:this.i18n("There are no hosts."),filter:this.i18n("Filter hosts")},this.i18n)},this.createForm()}createForm(){this.serviceForm=this.formBuilder.group({service_type:[null,[K.B.required]],service_id:[null,[Xs.a.requiredIf({service_type:"mds"}),Xs.a.requiredIf({service_type:"nfs"}),Xs.a.requiredIf({service_type:"iscsi"}),Xs.a.composeIf({service_type:"rgw"},[K.B.required,Xs.a.custom("rgwPattern",t=>!X.isEmpty(t)&&!/^[^.]+\.[^.]+(\.[^.]+)?$/.test(t))])]],placement:["hosts"],label:[null,[Xs.a.requiredIf({placement:"label",unmanaged:!1})]],hosts:[[]],count:[null,[Xs.a.number(!1),K.B.min(1)]],unmanaged:[!1],pool:[null,[Xs.a.requiredIf({service_type:"nfs",unmanaged:!1}),Xs.a.requiredIf({service_type:"iscsi",unmanaged:!1})]],namespace:[null],rgw_frontend_port:[null,[Xs.a.number(!1),K.B.min(1),K.B.max(65535)]],trusted_ip_list:[null],api_port:[null,[Xs.a.number(!1),K.B.min(1),K.B.max(65535)]],api_user:[null,[Xs.a.requiredIf({service_type:"iscsi",unmanaged:!1})]],api_password:[null,[Xs.a.requiredIf({service_type:"iscsi",unmanaged:!1})]],ssl:[!1],ssl_cert:["",[Xs.a.composeIf({service_type:"rgw",unmanaged:!1,ssl:!0},[K.B.required,Xs.a.sslCert()]),Xs.a.composeIf({service_type:"iscsi",unmanaged:!1,ssl:!0},[K.B.required,Xs.a.sslCert()])]],ssl_key:["",[Xs.a.composeIf({service_type:"rgw",unmanaged:!1,ssl:!0},[K.B.required,Xs.a.sslPrivKey()]),Xs.a.composeIf({service_type:"iscsi",unmanaged:!1,ssl:!0},[K.B.required,Xs.a.sslPrivKey()])]]})}ngOnInit(){this.action=this.actionLabels.CREATE,this.cephServiceService.getKnownTypes().subscribe(t=>{this.serviceTypes=X.difference(t,["osd"]).sort()}),this.hostService.list().subscribe(t=>{const e=[];X.forEach(t,t=>{if(X.get(t,"sources.orchestrator",!1)){const n=new Xu.a(!1,X.get(t,"hostname"),"");e.push(n)}}),this.hosts.options=[...e]}),this.hostService.getLabels().subscribe(t=>{this.labels=t}),this.poolService.getList().subscribe(t=>{this.pools=t})}goToListView(){this.router.navigate(["/services"])}fileUpload(t,e){const n=t[0],a=new FileReader;a.addEventListener("load",t=>{const n=this.serviceForm.get(e);n.setValue(t.target.result),n.markAsDirty(),n.markAsTouched(),n.updateValueAndValidity()}),a.readAsText(n,"utf8")}onSubmit(){const t=this,e=this.serviceForm.value,n=e.service_id,a=e.service_type,r={service_type:a,placement:{},unmanaged:e.unmanaged};let i=a;if(X.isString(n)&&!X.isEmpty(n)&&(i=`${a}.${n}`,r.service_id=n),!e.unmanaged){switch(e.placement){case"hosts":e.hosts.length>0&&(r.placement.hosts=e.hosts);break;case"label":r.placement.label=e.label}switch(X.isNumber(e.count)&&e.count>0&&(r.placement.count=e.count),a){case"nfs":r.pool=e.pool,X.isString(e.namespace)&&!X.isEmpty(e.namespace)&&(r.namespace=e.namespace);break;case"rgw":X.isNumber(e.rgw_frontend_port)&&e.rgw_frontend_port>0&&(r.rgw_frontend_port=e.rgw_frontend_port),r.ssl=e.ssl,e.ssl&&(r.rgw_frontend_ssl_certificate=e.ssl_cert.trim(),r.rgw_frontend_ssl_key=e.ssl_key.trim());break;case"iscsi":if(r.pool=e.pool,X.isString(e.trusted_ip_list)&&!X.isEmpty(e.trusted_ip_list)){let t=X.split(e.trusted_ip_list,",");t=X.map(t,X.trim),r.trusted_ip_list=t}X.isNumber(e.api_port)&&e.api_port>0&&(r.api_port=e.api_port),r.api_user=e.api_user,r.api_password=e.api_password,r.api_secure=e.ssl,e.ssl&&(r.ssl_cert=e.ssl_cert.trim(),r.ssl_key=e.ssl_key.trim())}}this.taskWrapperService.wrapTaskAroundCall({task:new Cs.a("service/"+St.e.CREATE,{service_name:i}),call:this.cephServiceService.create(r)}).subscribe({error(){t.serviceForm.setErrors({cdSubmitButton:!0})},complete(){t.goToListView()}})}}var no=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ao(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function ro(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function io(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function so(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value does not match the pattern "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["<realm_name>.<zone_name>[.<subcluster>]"])),(t()(),s["ɵted"](-1,null,["."]))],null,null)}function uo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","placement"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Placement"])),(t()(),s["ɵeld"](6,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","placement"],["id","placement"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](11,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](15,0,null,null,3,"option",[["value","hosts"]],null,null,null,null,null)),s["ɵdid"](16,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](17,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Hosts"])),(t()(),s["ɵeld"](19,0,null,null,3,"option",[["value","label"]],null,null,null,null,null)),s["ɵdid"](20,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](21,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Label"]))],(function(t,e){t(e,1,0),t(e,11,0,"placement"),t(e,14,0,"placement"),t(e,16,0,"hosts"),t(e,17,0,"hosts"),t(e,20,0,"label"),t(e,21,0,"label")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function oo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function lo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Label"])),(t()(),s["ɵeld"](6,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,8,"input",[["autocomplete","off"],["class","form-control"],["formControlName","label"],["id","label"],["type","text"],["typeaheadWaitMs","200"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,9)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,14).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,14).onKeydown(n)&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](11,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,212992,null,0,Yu,[U.a,zu,s.ChangeDetectorRef,s.ElementRef,K.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"],typeaheadWaitMs:[1,"typeaheadWaitMs"]},null),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,oo)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,11,0,"label"),t(e,14,0,n.searchLabels,"200"),t(e,15,0,"label"),t(e,17,0,n.serviceForm.showError("label",s["ɵnov"](e.parent,5),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass)}))}function co(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","hosts"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Hosts"])),(t()(),s["ɵeld"](6,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"cd-select-badges",[["id","hosts"]],null,null,null,Uu.b,Uu.a)),s["ɵdid"](8,49152,null,0,Wu.a,[Xt.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,8,0,n.serviceForm.controls.hosts.value,n.hosts.options,n.hosts.messages)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess)}))}function fo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value must be at least 1."]))],null,null)}function ho(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function go(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","count"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Count"])),(t()(),s["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](8,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](-1,0,["Only that number of daemons will be created."])),(t()(),s["ɵeld"](10,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,8,"input",[["class","form-control"],["formControlName","count"],["id","count"],["min","1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,13)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,13)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,13)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onTouched()&&a),a}),null,null)),s["ɵdid"](12,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](13,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](14,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](16,671744,[[13,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](18,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](19,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fo)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ho)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,16,0,"count"),t(e,19,0,"count"),t(e,21,0,n.serviceForm.showError("count",s["ɵnov"](e.parent,5),"min")),t(e,23,0,n.serviceForm.showError("count",s["ɵnov"](e.parent,5),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,18).ngClassUntouched,s["ɵnov"](e,18).ngClassTouched,s["ɵnov"](e,18).ngClassPristine,s["ɵnov"](e,18).ngClassDirty,s["ɵnov"](e,18).ngClassValid,s["ɵnov"](e,18).ngClassInvalid,s["ɵnov"](e,18).ngClassPending,s["ɵnov"](e,19).validClass,s["ɵnov"](e,19).invalidClass)}))}function po(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function bo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- No pools available --"]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function mo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select a pool --"]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function yo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.pool_name),t(e,2,0,e.context.$implicit.pool_name)}),(function(t,e){t(e,3,0,e.context.$implicit.pool_name)}))}function vo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function xo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,40,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","pool"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pool"])),(t()(),s["ɵeld"](7,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","pool"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,10).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,10).onTouched()&&a),a}),null,null)),s["ɵdid"](9,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](10,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](12,671744,[[15,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](14,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,po)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bo)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mo)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yo)),s["ɵdid"](23,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vo)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](27,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,17,{FormControlNames:1}),s["ɵqud"](603979776,18,{messagesBlock:0}),(t()(),s["ɵeld"](30,0,null,0,1,"label",[["class","cd-col-form-label"],["for","namespace"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Namespace"])),(t()(),s["ɵeld"](32,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,7,"input",[["class","form-control"],["formControlName","namespace"],["id","namespace"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,35)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,35).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,35)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,35)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](34,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](35,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](37,671744,[[17,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](39,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](40,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,12,0,"pool"),t(e,15,0,"pool"),t(e,17,0,null===n.pools),t(e,19,0,null!==n.pools&&0===n.pools.length),t(e,21,0,null!==n.pools&&n.pools.length>0),t(e,23,0,n.pools),t(e,25,0,n.serviceForm.showError("pool",s["ɵnov"](e.parent,5),"required")),t(e,27,0),t(e,37,0,"namespace"),t(e,40,0,"namespace")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,8,0,s["ɵnov"](e,14).ngClassUntouched,s["ɵnov"](e,14).ngClassTouched,s["ɵnov"](e,14).ngClassPristine,s["ɵnov"](e,14).ngClassDirty,s["ɵnov"](e,14).ngClassValid,s["ɵnov"](e,14).ngClassInvalid,s["ɵnov"](e,14).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass),t(e,26,0,s["ɵnov"](e,27).hasErrors,s["ɵnov"](e,27).hasSuccess),t(e,33,0,s["ɵnov"](e,39).ngClassUntouched,s["ɵnov"](e,39).ngClassTouched,s["ɵnov"](e,39).ngClassPristine,s["ɵnov"](e,39).ngClassDirty,s["ɵnov"](e,39).ngClassValid,s["ɵnov"](e,39).ngClassInvalid,s["ɵnov"](e,39).ngClassPending,s["ɵnov"](e,40).validClass,s["ɵnov"](e,40).invalidClass)}))}function _o(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function To(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value must be at least 1."]))],null,null)}function wo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value cannot exceed 65535."]))],null,null)}function Oo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,19,{FormControlNames:1}),s["ɵqud"](603979776,20,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"],["for","rgw_frontend_port"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Port"])),(t()(),s["ɵeld"](7,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,8,"input",[["class","form-control"],["formControlName","rgw_frontend_port"],["id","rgw_frontend_port"],["max","65535"],["min","1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,10)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,10).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,10)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,10)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,11).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,11).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,11).onTouched()&&a),a}),null,null)),s["ɵdid"](9,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](10,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](11,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](13,671744,[[19,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](15,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](16,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_o)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,To)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wo)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,13,0,"rgw_frontend_port"),t(e,16,0,"rgw_frontend_port"),t(e,18,0,n.serviceForm.showError("rgw_frontend_port",s["ɵnov"](e.parent,5),"pattern")),t(e,20,0,n.serviceForm.showError("rgw_frontend_port",s["ɵnov"](e.parent,5),"min")),t(e,22,0,n.serviceForm.showError("rgw_frontend_port",s["ɵnov"](e.parent,5),"max"))}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,8,0,s["ɵnov"](e,15).ngClassUntouched,s["ɵnov"](e,15).ngClassTouched,s["ɵnov"](e,15).ngClassPristine,s["ɵnov"](e,15).ngClassDirty,s["ɵnov"](e,15).ngClassValid,s["ɵnov"](e,15).ngClassInvalid,s["ɵnov"](e,15).ngClassPending,s["ɵnov"](e,16).validClass,s["ɵnov"](e,16).invalidClass)}))}function So(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function Io(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- No pools available --"]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function No(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select a pool --"]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function Co(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.pool_name),t(e,2,0,e.context.$implicit.pool_name)}),(function(t,e){t(e,3,0,e.context.$implicit.pool_name)}))}function Ro(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Ao(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function ko(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value must be at least 1."]))],null,null)}function Eo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value cannot exceed 65535."]))],null,null)}function Lo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Do(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Po(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,121,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,21,{FormControlNames:1}),s["ɵqud"](603979776,22,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","pool"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pool"])),(t()(),s["ɵeld"](7,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","pool"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,10).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,10).onTouched()&&a),a}),null,null)),s["ɵdid"](9,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](10,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](12,671744,[[21,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](14,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,So)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Io)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,No)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Co)),s["ɵdid"](23,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ro)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](27,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,23,{FormControlNames:1}),s["ɵqud"](603979776,24,{messagesBlock:0}),(t()(),s["ɵeld"](30,0,null,0,12,"label",[["class","cd-col-form-label"],["for","trusted_ip_list"]],null,null,null,null,null)),(t()(),s["ɵeld"](31,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Trusted IPs"])),(t()(),s["ɵeld"](33,0,null,null,9,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](34,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](35,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Comma separated list of IP addresses."])),(t()(),s["ɵeld"](37,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,0,4,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please add the "])),(t()(),s["ɵeld"](40,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ceph Manager"])),(t()(),s["ɵted"](-1,null,[" IP addresses here, otherwise the iSCSI gateways can't be reached."])),(t()(),s["ɵeld"](43,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,7,"input",[["class","form-control"],["formControlName","trusted_ip_list"],["id","trusted_ip_list"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,46)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,46).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,46)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,46)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](45,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](46,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](48,671744,[[23,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](50,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](51,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](52,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](53,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,25,{FormControlNames:1}),s["ɵqud"](603979776,26,{messagesBlock:0}),(t()(),s["ɵeld"](56,0,null,0,1,"label",[["class","cd-col-form-label"],["for","api_port"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Port"])),(t()(),s["ɵeld"](58,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,8,"input",[["class","form-control"],["formControlName","api_port"],["id","api_port"],["max","65535"],["min","1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,61)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,61).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,61)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,61)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,62).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,62).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,62).onTouched()&&a),a}),null,null)),s["ɵdid"](60,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](61,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](62,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](64,671744,[[25,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](66,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](67,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ao)),s["ɵdid"](69,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ko)),s["ɵdid"](71,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Eo)),s["ɵdid"](73,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](74,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](75,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,27,{FormControlNames:1}),s["ɵqud"](603979776,28,{messagesBlock:0}),(t()(),s["ɵeld"](78,0,null,0,5,"label",[["class","cd-col-form-label"],["for","api_user"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](80,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](81,1),s["ɵpod"](82,{required:0}),(t()(),s["ɵted"](-1,null,["User"])),(t()(),s["ɵeld"](84,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](85,0,null,null,7,"input",[["class","form-control"],["formControlName","api_user"],["id","api_user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,87)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,87).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,87)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,87)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](86,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](87,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](89,671744,[[27,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](91,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](92,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lo)),s["ɵdid"](94,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](95,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](96,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,29,{FormControlNames:1}),s["ɵqud"](603979776,30,{messagesBlock:0}),(t()(),s["ɵeld"](99,0,null,0,5,"label",[["class","cd-col-form-label"],["for","api_password"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](101,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](102,1),s["ɵpod"](103,{required:0}),(t()(),s["ɵted"](-1,null,["Password"])),(t()(),s["ɵeld"](105,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](106,0,null,null,15,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](107,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","api_password"],["id","api_password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,109)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,109).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,109)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,109)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](108,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](109,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](111,671744,[[29,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](113,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](114,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](115,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](116,0,null,null,1,"button",[["cdPasswordButton","api_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,117).onClick()&&a),a}),null,null)),s["ɵdid"](117,81920,null,0,Ju.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](118,0,null,null,1,"button",[["cdCopy2ClipboardButton","api_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,119).onClick()&&a),a}),null,null)),s["ɵdid"](119,81920,null,0,Zu.a,[s.ElementRef,s.Renderer2,d.j,Xt.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Do)),s["ɵdid"](121,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,12,0,"pool"),t(e,15,0,"pool"),t(e,17,0,null===n.pools),t(e,19,0,null!==n.pools&&0===n.pools.length),t(e,21,0,null!==n.pools&&n.pools.length>0),t(e,23,0,n.pools),t(e,25,0,n.serviceForm.showError("pool",s["ɵnov"](e.parent,5),"required")),t(e,27,0),t(e,48,0,"trusted_ip_list"),t(e,51,0,"trusted_ip_list"),t(e,53,0),t(e,64,0,"api_port"),t(e,67,0,"api_port"),t(e,69,0,n.serviceForm.showError("api_port",s["ɵnov"](e.parent,5),"pattern")),t(e,71,0,n.serviceForm.showError("api_port",s["ɵnov"](e.parent,5),"min")),t(e,73,0,n.serviceForm.showError("api_port",s["ɵnov"](e.parent,5),"max")),t(e,75,0);var a=t(e,82,0,t(e,81,0,"iscsi").includes(n.serviceForm.controls.service_type.value));t(e,80,0,"cd-col-form-label",a),t(e,89,0,"api_user"),t(e,92,0,"api_user"),t(e,94,0,n.serviceForm.showError("api_user",s["ɵnov"](e.parent,5),"required")),t(e,96,0);var r=t(e,103,0,t(e,102,0,"iscsi").includes(n.serviceForm.controls.service_type.value));t(e,101,0,"cd-col-form-label",r),t(e,111,0,"api_password"),t(e,114,0,"api_password"),t(e,117,0,"api_password"),t(e,119,0,"api_password"),t(e,121,0,n.serviceForm.showError("api_password",s["ɵnov"](e.parent,5),"required"))}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,8,0,s["ɵnov"](e,14).ngClassUntouched,s["ɵnov"](e,14).ngClassTouched,s["ɵnov"](e,14).ngClassPristine,s["ɵnov"](e,14).ngClassDirty,s["ɵnov"](e,14).ngClassValid,s["ɵnov"](e,14).ngClassInvalid,s["ɵnov"](e,14).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass),t(e,26,0,s["ɵnov"](e,27).hasErrors,s["ɵnov"](e,27).hasSuccess),t(e,44,0,s["ɵnov"](e,50).ngClassUntouched,s["ɵnov"](e,50).ngClassTouched,s["ɵnov"](e,50).ngClassPristine,s["ɵnov"](e,50).ngClassDirty,s["ɵnov"](e,50).ngClassValid,s["ɵnov"](e,50).ngClassInvalid,s["ɵnov"](e,50).ngClassPending,s["ɵnov"](e,51).validClass,s["ɵnov"](e,51).invalidClass),t(e,52,0,s["ɵnov"](e,53).hasErrors,s["ɵnov"](e,53).hasSuccess),t(e,59,0,s["ɵnov"](e,66).ngClassUntouched,s["ɵnov"](e,66).ngClassTouched,s["ɵnov"](e,66).ngClassPristine,s["ɵnov"](e,66).ngClassDirty,s["ɵnov"](e,66).ngClassValid,s["ɵnov"](e,66).ngClassInvalid,s["ɵnov"](e,66).ngClassPending,s["ɵnov"](e,67).validClass,s["ɵnov"](e,67).invalidClass),t(e,74,0,s["ɵnov"](e,75).hasErrors,s["ɵnov"](e,75).hasSuccess),t(e,85,0,s["ɵnov"](e,91).ngClassUntouched,s["ɵnov"](e,91).ngClassTouched,s["ɵnov"](e,91).ngClassPristine,s["ɵnov"](e,91).ngClassDirty,s["ɵnov"](e,91).ngClassValid,s["ɵnov"](e,91).ngClassInvalid,s["ɵnov"](e,91).ngClassPending,s["ɵnov"](e,92).validClass,s["ɵnov"](e,92).invalidClass),t(e,95,0,s["ɵnov"](e,96).hasErrors,s["ɵnov"](e,96).hasSuccess),t(e,107,0,s["ɵnov"](e,113).ngClassUntouched,s["ɵnov"](e,113).ngClassTouched,s["ɵnov"](e,113).ngClassPristine,s["ɵnov"](e,113).ngClassDirty,s["ɵnov"](e,113).ngClassValid,s["ɵnov"](e,113).ngClassInvalid,s["ɵnov"](e,113).ngClassPending,s["ɵnov"](e,114).validClass,s["ɵnov"](e,114).invalidClass)}))}function Mo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function qo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Invalid SSL certificate."]))],null,null)}function jo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,33,{FormControlNames:1}),s["ɵqud"](603979776,34,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","ssl_cert"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Certificate"])),(t()(),s["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](8,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](-1,0,["The SSL certificate in PEM format."])),(t()(),s["ɵeld"](10,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,7,"textarea",[["class","form-control resize-vertical text-monospace text-pre"],["formControlName","ssl_cert"],["id","ssl_cert"],["rows","5"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,12)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,12).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,12)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,12)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](14,671744,[[33,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](16,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](17,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["              "])),(t()(),s["ɵeld"](19,0,null,null,1,"input",[["type","file"]],null,[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.fileUpload(n.target.files,"ssl_cert")&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Mo)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qo)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,14,0,"ssl_cert"),t(e,17,0,"ssl_cert"),t(e,22,0,n.serviceForm.showError("ssl_cert",s["ɵnov"](e.parent.parent,5),"required")),t(e,24,0,n.serviceForm.showError("ssl_cert",s["ɵnov"](e.parent.parent,5),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending,s["ɵnov"](e,17).validClass,s["ɵnov"](e,17).invalidClass)}))}function Fo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Vo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Invalid SSL private key."]))],null,null)}function Go(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,35,{FormControlNames:1}),s["ɵqud"](603979776,36,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","ssl_key"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Private key"])),(t()(),s["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](8,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](-1,0,["The SSL private key in PEM format."])),(t()(),s["ɵeld"](10,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,7,"textarea",[["class","form-control resize-vertical text-monospace text-pre"],["formControlName","ssl_key"],["id","ssl_key"],["rows","5"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,12)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,12).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,12)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,12)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](14,671744,[[35,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](16,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](17,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["              "])),(t()(),s["ɵeld"](19,0,null,null,1,"input",[["type","file"]],null,[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.fileUpload(n.target.files,"ssl_key")&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Fo)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vo)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,14,0,"ssl_key"),t(e,17,0,"ssl_key"),t(e,22,0,n.serviceForm.showError("ssl_key",s["ɵnov"](e.parent.parent,5),"required")),t(e,24,0,n.serviceForm.showError("ssl_key",s["ɵnov"](e.parent.parent,5),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending,s["ɵnov"](e,17).validClass,s["ɵnov"](e,17).invalidClass)}))}function Bo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,31,{FormControlNames:1}),s["ɵqud"](603979776,32,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,11,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","ssl"],["id","ssl"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,9).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](11,671744,[[31,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](15,0,null,null,1,"label",[["class","custom-control-label"],["for","ssl"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["SSL"])),(t()(),s["ɵand"](16777216,null,null,1,null,jo)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Go)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0),t(e,11,0,"ssl"),t(e,14,0,"ssl"),t(e,18,0,n.serviceForm.controls.ssl.value),t(e,20,0,n.serviceForm.controls.ssl.value)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function zo(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Zs.a,[]),(t()(),s["ɵeld"](2,0,null,null,100,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,99,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,5).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit()&&a),a}),null,null)),s["ɵdid"](4,16384,null,0,K.G,[],null,null),s["ɵdid"](5,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](7,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](8,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](9,0,null,null,93,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](11,null,[""," ",""])),s["ɵppd"](12,1),s["ɵppd"](13,1),(t()(),s["ɵeld"](14,0,null,null,79,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](16,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](19,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","service_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type"])),(t()(),s["ɵeld"](21,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","service_type"],["id","service_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,24).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,24).onTouched()&&a),a}),null,null)),s["ɵdid"](23,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](24,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](26,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](28,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](29,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](30,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](31,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](32,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select a service type --"])),(t()(),s["ɵand"](16777216,null,null,1,null,ao)),s["ɵdid"](35,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ro)),s["ɵdid"](37,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](38,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](39,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](42,0,null,0,5,"label",[["class","cd-col-form-label"],["for","service_id"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](44,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](45,4),s["ɵpod"](46,{required:0}),(t()(),s["ɵted"](-1,null,["Id"])),(t()(),s["ɵeld"](48,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,7,"input",[["class","form-control"],["formControlName","service_id"],["id","service_id"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,51)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,51).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,51)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,51)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](50,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](51,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](53,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](55,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](56,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,io)),s["ɵdid"](58,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,so)),s["ɵdid"](60,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](61,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](62,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](65,0,null,0,11,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](66,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](67,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","unmanaged"],["id","unmanaged"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,69).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,69).onTouched()&&a),a}),null,null)),s["ɵdid"](68,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](69,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](71,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](73,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](74,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](75,0,null,null,1,"label",[["class","custom-control-label"],["for","unmanaged"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Unmanaged"])),(t()(),s["ɵand"](16777216,null,null,1,null,uo)),s["ɵdid"](78,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lo)),s["ɵdid"](80,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,co)),s["ɵdid"](82,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,go)),s["ɵdid"](84,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xo)),s["ɵdid"](86,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Oo)),s["ɵdid"](88,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Po)),s["ɵdid"](90,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,2,null,Bo)),s["ɵdid"](92,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](93,2),(t()(),s["ɵeld"](94,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](95,0,null,null,7,"div",[["class","text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](96,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](97,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](98,0,[""," "," "])),s["ɵppd"](99,1),s["ɵppd"](100,1),(t()(),s["ɵeld"](101,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](102,49152,null,0,Js.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,5,0,n.serviceForm),t(e,8,0,n.serviceForm),t(e,16,0),t(e,26,0,"service_type"),t(e,29,0,"service_type"),t(e,31,0,null),t(e,32,0,null),t(e,35,0,n.serviceTypes),t(e,37,0,n.serviceForm.showError("service_type",s["ɵnov"](e,5),"required")),t(e,39,0);var a=t(e,46,0,t(e,45,0,"mds","rgw","nfs","iscsi").includes(n.serviceForm.controls.service_type.value));t(e,44,0,"cd-col-form-label",a),t(e,53,0,"service_id"),t(e,56,0,"service_id"),t(e,58,0,n.serviceForm.showError("service_id",s["ɵnov"](e,5),"required")),t(e,60,0,n.serviceForm.showError("service_id",s["ɵnov"](e,5),"rgwPattern")),t(e,62,0),t(e,71,0,"unmanaged"),t(e,74,0,"unmanaged"),t(e,78,0,!n.serviceForm.controls.unmanaged.value),t(e,80,0,!n.serviceForm.controls.unmanaged.value&&"label"===n.serviceForm.controls.placement.value),t(e,82,0,!n.serviceForm.controls.unmanaged.value&&"hosts"===n.serviceForm.controls.placement.value),t(e,84,0,!n.serviceForm.controls.unmanaged.value),t(e,86,0,!n.serviceForm.controls.unmanaged.value&&"nfs"===n.serviceForm.controls.service_type.value),t(e,88,0,!n.serviceForm.controls.unmanaged.value&&"rgw"===n.serviceForm.controls.service_type.value),t(e,90,0,!n.serviceForm.controls.unmanaged.value&&"iscsi"===n.serviceForm.controls.service_type.value);var r=!n.serviceForm.controls.unmanaged.value&&t(e,93,0,"rgw","iscsi").includes(n.serviceForm.controls.service_type.value);t(e,92,0,r),t(e,97,0,n.serviceForm)}),(function(t,e){var n=e.component;t(e,3,0,s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending);var a=s["ɵunv"](e,11,0,t(e,12,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,11,1,t(e,13,0,s["ɵnov"](e,1),n.resource));t(e,11,0,a,r),t(e,15,0,s["ɵnov"](e,16).hasErrors,s["ɵnov"](e,16).hasSuccess),t(e,22,0,s["ɵnov"](e,28).ngClassUntouched,s["ɵnov"](e,28).ngClassTouched,s["ɵnov"](e,28).ngClassPristine,s["ɵnov"](e,28).ngClassDirty,s["ɵnov"](e,28).ngClassValid,s["ɵnov"](e,28).ngClassInvalid,s["ɵnov"](e,28).ngClassPending,s["ɵnov"](e,29).validClass,s["ɵnov"](e,29).invalidClass),t(e,38,0,s["ɵnov"](e,39).hasErrors,s["ɵnov"](e,39).hasSuccess),t(e,49,0,s["ɵnov"](e,55).ngClassUntouched,s["ɵnov"](e,55).ngClassTouched,s["ɵnov"](e,55).ngClassPristine,s["ɵnov"](e,55).ngClassDirty,s["ɵnov"](e,55).ngClassValid,s["ɵnov"](e,55).ngClassInvalid,s["ɵnov"](e,55).ngClassPending,s["ɵnov"](e,56).validClass,s["ɵnov"](e,56).invalidClass),t(e,61,0,s["ɵnov"](e,62).hasErrors,s["ɵnov"](e,62).hasSuccess),t(e,67,0,s["ɵnov"](e,73).ngClassUntouched,s["ɵnov"](e,73).ngClassTouched,s["ɵnov"](e,73).ngClassPristine,s["ɵnov"](e,73).ngClassDirty,s["ɵnov"](e,73).ngClassValid,s["ɵnov"](e,73).ngClassInvalid,s["ɵnov"](e,73).ngClassPending,s["ɵnov"](e,74).validClass,s["ɵnov"](e,74).invalidClass);var i=s["ɵunv"](e,98,0,t(e,99,0,s["ɵnov"](e,0),n.action)),u=s["ɵunv"](e,98,1,t(e,100,0,s["ɵnov"](e,1),n.resource));t(e,98,0,i,u)}))}function Yo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-service-form",[],null,null,null,zo,no)),s["ɵdid"](1,114688,null,0,eo,[St.b,vi,to.a,_i,Xt.a,Qu.a,Et.m,Es.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Ho=s["ɵccf"]("cd-service-form",eo,Yo,{},{},[]),Uo=n("xSw7"),Wo=n("GgAd"),Ko=n("FFMq"),$o=n("j8L6"),Jo=n("b5OY"),Zo=n("pxLl");class Qo{constructor(){this.last={}}ngOnChanges(){this.render()}hexdigits(t){const e=Math.floor(255*t).toString(16);return 1===e.length?"0"+e:e}hexcolor(t,e,n){return"#"+this.hexdigits(t)+this.hexdigits(e)+this.hexdigits(n)}render(){if(!this.histogram)return;let t=0;X.each(this.histogram.values,(e,n)=>{X.each(e,(e,a)=>{let r;r=this.last&&this.last[n]&&this.last[n][a]?e-this.last[n][a]:e,t=Math.max(t,r)})}),this.valuesStyle=this.histogram.values.map((e,n)=>e.map((e,a)=>{const r=t?(this.last&&this.last[n]&&this.last[n][a]?e-this.last[n][a]:e)/t:0;return{backgroundColor:this.hexcolor(1-r,r,0)}})),this.last=this.histogram.values}}var Xo=s["ɵcrt"]({encapsulation:0,styles:[["table[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]{height:10px}table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{width:10px;height:10px}"]],data:{}});function tl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function el(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,tl)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function nl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"table",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,el)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.valuesStyle)}),null)}class al{constructor(t,e){this.osdService=t,this.authStorageService=e,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){X.get(this,"osd.id")!==X.get(this,"selection.id")&&(this.osd=this.selection),X.isNumber(X.get(this,"osd.id"))&&this.refresh()}refresh(){this.osdService.getDetails(this.osd.id).subscribe(t=>{this.osd.details=t,this.osd.histogram_failed="",X.isObject(t.histogram)||(this.osd.histogram_failed=t.histogram,this.osd.details.histogram=void 0)})}}var rl=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function il(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.refresh()&&a),a}),Ci.b,Ci.a)),s["ɵdid"](1,638976,null,0,Ri.a,[ze.a],{data:[0,"data"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,1,0,null==n.osd||null==n.osd.details?null:n.osd.details.osd_metadata)}),null)}function sl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Metadata not available"]))],(function(t,e){t(e,1,0,"warning")}),null)}function ul(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-performance-counter",[["serviceType","osd"]],null,null,null,$o.b,$o.a)),s["ɵdid"](1,114688,null,0,Jo.a,[Zo.a,Xt.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],(function(t,e){var n=e.component;t(e,1,0,"osd",null==n.osd?null:n.osd.id)}),null)}function ol(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](2,0,["Histogram not available: ",""]))],(function(t,e){t(e,1,0,"warning")}),(function(t,e){t(e,2,0,e.component.osd.histogram_failed)}))}function ll(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Writes"])),(t()(),s["ɵeld"](4,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,nl,Xo)),s["ɵdid"](5,573440,null,0,Qo,[],{histogram:[0,"histogram"]},null),(t()(),s["ɵeld"](6,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Reads"])),(t()(),s["ɵeld"](9,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,nl,Xo)),s["ɵdid"](10,573440,null,0,Qo,[],{histogram:[0,"histogram"]},null)],(function(t,e){var n=e.component;t(e,5,0,null==n.osd||null==n.osd.details||null==n.osd.details.histogram||null==n.osd.details.histogram.osd?null:n.osd.details.histogram.osd.op_w_latency_in_bytes_histogram),t(e,10,0,null==n.osd||null==n.osd.details||null==n.osd.details.histogram||null==n.osd.details.histogram.osd?null:n.osd.details.histogram.osd.op_r_latency_out_bytes_histogram)}),null)}function dl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","CrAHE0iZz"]],null,null,null,Wr.b,Wr.a)),s["ɵdid"](3,638976,null,0,Kr.a,[me.b,te.a,Xt.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"osd-device-details?var-osd=osd."+n.osd.id,"three","CrAHE0iZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function cl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,30,"tabset",[["id","tabset-osd-details"]],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Devices"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-device-list",[],null,null,null,gs,rs)),s["ɵdid"](5,638976,null,0,as,[_i,Xt.a,i.DatePipe,Li],{osdId:[0,"osdId"]},null),(t()(),s["ɵeld"](6,0,null,0,3,"tab",[["heading","Attributes (OSD map)"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"cd-table-key-value",[],null,null,null,Ci.b,Ci.a)),s["ɵdid"](9,638976,null,0,Ri.a,[ze.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](10,0,null,0,4,"tab",[["heading","Metadata"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](11,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,il)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noMetaData",2]],null,0,null,sl)),(t()(),s["ɵeld"](15,0,null,0,3,"tab",[["heading","Device health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](16,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](17,0,null,null,1,"cd-smart-list",[],null,null,null,ns,Pi)),s["ɵdid"](18,638976,null,0,Di,[Xt.a,Li,_i],{osdId:[0,"osdId"]},null),(t()(),s["ɵeld"](19,0,null,0,3,"tab",[["heading","Performance counter"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](20,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ul)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](23,0,null,0,5,"tab",[["heading","Histogram"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](24,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ol)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ll)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,dl)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Devices"),t(e,5,0,null==n.osd?null:n.osd.id),t(e,7,0,"Attributes (OSD map)"),t(e,9,0,null==n.osd||null==n.osd.details?null:n.osd.details.osd_map),t(e,11,0,"Metadata"),t(e,13,0,null==n.osd||null==n.osd.details?null:n.osd.details.osd_metadata,s["ɵnov"](e,14)),t(e,16,0,"Device health"),t(e,18,0,null==n.osd?null:n.osd.id),t(e,20,0,"Performance counter"),t(e,22,0,null==n.osd?null:n.osd.details),t(e,24,0,"Histogram"),t(e,26,0,null==n.osd?null:n.osd.histogram_failed),t(e,28,0,null==n.osd||null==n.osd.details?null:n.osd.details.histogram),t(e,30,0,n.grafanaPermission.read)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby),t(e,10,0,s["ɵnov"](e,11).id,s["ɵnov"](e,11).active,s["ɵnov"](e,11).addClass,s["ɵnov"](e,11).role,s["ɵnov"](e,11).ariaLabelledby),t(e,15,0,s["ɵnov"](e,16).id,s["ɵnov"](e,16).active,s["ɵnov"](e,16).addClass,s["ɵnov"](e,16).role,s["ɵnov"](e,16).ariaLabelledby),t(e,19,0,s["ɵnov"](e,20).id,s["ɵnov"](e,20).active,s["ɵnov"](e,20).addClass,s["ɵnov"](e,20).role,s["ɵnov"](e,20).ariaLabelledby),t(e,23,0,s["ɵnov"](e,24).id,s["ɵnov"](e,24).active,s["ɵnov"](e,24).addClass,s["ɵnov"](e,24).role,s["ɵnov"](e,24).ariaLabelledby)}))}function fl(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,cl)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}function hl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-details",[],null,null,null,fl,rl)),s["ɵdid"](1,573440,null,0,al,[Li,Z.a],null,null)],null,null)}var gl=s["ɵccf"]("cd-osd-details",al,hl,{selection:"selection"},{},[]),pl=n("cp0P"),bl=n("OLbh");class ml{constructor(t,e,n,a,r){this.activeModal=t,this.authStorageService=e,this.osdService=n,this.notificationService=a,this.i18n=r,this.initialSelection=[],this.osdFlagsForm=new K.k({}),this.flags=[{code:"noup",name:this.i18n("No Up"),description:this.i18n("OSDs are not allowed to start"),value:!1,clusterWide:!1,indeterminate:!1},{code:"nodown",name:this.i18n("No Down"),description:this.i18n("OSD failure reports are being ignored, such that the monitors will not mark OSDs down"),value:!1,clusterWide:!1,indeterminate:!1},{code:"noin",name:this.i18n("No In"),description:this.i18n("OSDs that were previously marked out will not be marked back in when they start"),value:!1,clusterWide:!1,indeterminate:!1},{code:"noout",name:this.i18n("No Out"),description:this.i18n("OSDs will not automatically be marked out after the configured interval"),value:!1,clusterWide:!1,indeterminate:!1}],this.clusterWideTooltip=this.i18n("The flag has been enabled for the entire cluster."),this.permissions=this.authStorageService.getPermissions()}ngOnInit(){const t=this.selected.length;this.osdService.getFlags().subscribe(e=>{const n=this.getActivatedIndivFlags();this.flags.forEach(a=>{const r=n[a.code];e.includes(a.code)&&(a.clusterWide=!0),r===t?a.value=!0:r>0&&(a.indeterminate=!0)}),this.initialSelection=X.cloneDeep(this.flags)})}getActivatedIndivFlags(){const t={};return this.flags.forEach(e=>{t[e.code]=0}),[].concat(...this.selected.map(t=>t.state)).map(e=>{Object.keys(t).includes(e)&&(t[e]=t[e]+1)}),t}changeValue(t){t.value=!t.value,t.indeterminate=!1}resetSelection(){this.flags=X.cloneDeep(this.initialSelection)}submitAction(){const t={};this.flags.forEach(e=>{t[e.code]=e.indeterminate?null:e.value});const e=this.selected.map(t=>t.osd);this.osdService.updateIndividualFlags(t,e).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n("Updated OSD Flags")),this.activeModal.hide()},()=>{this.activeModal.hide()})}}class yl{constructor(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.osdService=n,this.notificationService=a,this.i18n=r,this.osdFlagsForm=new K.k({}),this.allFlags={noin:{code:"noin",name:this.i18n("No In"),value:!1,description:this.i18n("OSDs that were previously marked out will not be marked back in when they start")},noout:{code:"noout",name:this.i18n("No Out"),value:!1,description:this.i18n("OSDs will not automatically be marked out after the configured interval")},noup:{code:"noup",name:this.i18n("No Up"),value:!1,description:this.i18n("OSDs are not allowed to start")},nodown:{code:"nodown",name:this.i18n("No Down"),value:!1,description:this.i18n("OSD failure reports are being ignored, such that the monitors will not mark OSDs down")},pause:{code:"pause",name:this.i18n("Pause"),value:!1,description:this.i18n("Pauses reads and writes")},noscrub:{code:"noscrub",name:this.i18n("No Scrub"),value:!1,description:this.i18n("Scrubbing is disabled")},"nodeep-scrub":{code:"nodeep-scrub",name:this.i18n("No Deep Scrub"),value:!1,description:this.i18n("Deep Scrubbing is disabled")},nobackfill:{code:"nobackfill",name:this.i18n("No Backfill"),value:!1,description:this.i18n("Backfilling of PGs is suspended")},norebalance:{code:"norebalance",name:this.i18n("No Rebalance"),value:!1,description:this.i18n("OSD will choose not to backfill unless PG is also degraded")},norecover:{code:"norecover",name:this.i18n("No Recover"),value:!1,description:this.i18n("Recovery of PGs is suspended")},sortbitwise:{code:"sortbitwise",name:this.i18n("Bitwise Sort"),value:!1,description:this.i18n("Use bitwise sort"),disabled:!0},purged_snapdirs:{code:"purged_snapdirs",name:this.i18n("Purged Snapdirs"),value:!1,description:this.i18n("OSDs have converted snapsets"),disabled:!0},recovery_deletes:{code:"recovery_deletes",name:this.i18n("Recovery Deletes"),value:!1,description:this.i18n("Deletes performed during recovery instead of peering"),disabled:!0},pglog_hardlimit:{code:"pglog_hardlimit",name:this.i18n("PG Log Hard Limit"),value:!1,description:this.i18n("Puts a hard limit on pg log length"),disabled:!0}},this.unknownFlags=[],this.permissions=this.authStorageService.getPermissions()}ngOnInit(){this.osdService.getFlags().subscribe(t=>{t.forEach(t=>{this.allFlags[t]?this.allFlags[t].value=!0:this.unknownFlags.push(t)}),this.flags=X.toArray(this.allFlags)})}submitAction(){const t=this.flags.filter(t=>t.value).map(t=>t.code).concat(this.unknownFlags);this.osdService.updateFlags(t).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n("Updated OSD Flags")),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}var vl=n("MuvH");let xl=(()=>{class t{static getType(t){const e=X.find(this.knownTypes,e=>e.name===t);if(void 0!==e)return e;throw new Error('Found unknown type "'+t+'" for config option.')}static getTypeValidators(e){const n=t.getType(e.type);if("bool"===n.name||"str"===n.name)return;const a={validators:[],patternHelpText:n.patternHelpText};return n.isNumberType?(e.max&&""!==e.max&&(a.max=e.max,a.validators.push(K.B.max(e.max))),e.min&&""!==e.min?(a.min=e.min,a.validators.push(K.B.min(e.min))):"defaultMin"in n&&(a.min=n.defaultMin,a.validators.push(K.B.min(n.defaultMin))),a.validators.push("float"===e.type?Xs.a.decimalNumber():Xs.a.number(n.allowsNegative))):"addr"===e.type?a.validators=[Xs.a.ip()]:"uuid"===e.type&&(a.validators=[Xs.a.uuid()]),a}static getTypeStep(t,e){if(["uint","int","size","secs"].includes(t))return 1;if("float"===t){if(null!==e&&-1!==e.toString().indexOf(".")){const t=e.toString().split(".");return Math.pow(10,-t[1].length)}return.1}}}return t.knownTypes=[{name:"uint",inputType:"number",humanReadable:"Unsigned integer value",defaultMin:0,patternHelpText:"The entered value needs to be an unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"int",inputType:"number",humanReadable:"Integer value",patternHelpText:"The entered value needs to be a number.",isNumberType:!0,allowsNegative:!0},{name:"size",inputType:"number",humanReadable:"Unsigned integer value (>=16bit)",defaultMin:0,patternHelpText:"The entered value needs to be a unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"secs",inputType:"number",humanReadable:"Number of seconds",defaultMin:1,patternHelpText:"The entered value needs to be a number >= 1.",isNumberType:!0,allowsNegative:!1},{name:"float",inputType:"number",humanReadable:"Double value",patternHelpText:"The entered value needs to be a number or decimal.",isNumberType:!0,allowsNegative:!0},{name:"str",inputType:"text",humanReadable:"Text",isNumberType:!1},{name:"addr",inputType:"text",humanReadable:"IPv4 or IPv6 address",patternHelpText:"The entered value needs to be a valid IP address.",isNumberType:!1},{name:"uuid",inputType:"text",humanReadable:"UUID",patternHelpText:"The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8",isNumberType:!1},{name:"bool",inputType:"checkbox",humanReadable:"Boolean value",isNumberType:!1}],t})();class _l{constructor(t){this.configService=t,this.optionNames=[],this.optionsForm=new Qs.a({}),this.optionsFormDir=new K.t([],[]),this.optionsFormGroupName="",this.optionsFormShowReset=!0,this.icons=pt.a,this.options=[],this.optionsFormGroup=new Qs.a({})}static optionNameToText(t){const e=["mon","mgr","osd","mds","client"];return t.split("_").filter((t,n)=>0!==n||!e.includes(t)).map(t=>t.charAt(0).toUpperCase()+t.substring(1)).join(" ")}ngOnInit(){this.createForm(),this.loadStoredData()}createForm(){this.optionsForm.addControl(this.optionsFormGroupName,this.optionsFormGroup),this.optionNames.forEach(t=>{this.optionsFormGroup.addControl(t,new K.i(null))})}getStep(t,e){return xl.getTypeStep(t,e)}loadStoredData(){this.configService.filter(this.optionNames).subscribe(t=>{this.options=t.map(t=>{const e=this.optionsForm.get(t.name),n=xl.getTypeValidators(t);return t.additionalTypeInfo=xl.getType(t.type),t.text=_l.optionNameToText(t.name),t.value=X.find(t.value,t=>"osd"===t.section),t.value&&e.setValue("bool"===t.additionalTypeInfo.name?"true"===t.value.value:t.value.value),n&&(t.patternHelpText=n.patternHelpText,"max"in n&&""!==n.max&&(t.maxValue=n.max),"min"in n&&""!==n.min&&(t.minValue=n.min),e.setValidators(n.validators)),t})})}saveValues(){const t={};return this.optionNames.forEach(e=>{const n=this.optionsForm.getValue(e);null!==n&&""!==n&&(t[e]={section:"osd",value:n})}),this.configService.bulkCreate({options:t})}resetValue(t){this.configService.delete(t,"osd").subscribe(()=>{this.optionsForm.get(t).reset()})}}let Tl=(()=>{class t{}return t.basicOptions=["osd_scrub_during_recovery","osd_scrub_begin_hour","osd_scrub_end_hour","osd_scrub_begin_week_day","osd_scrub_end_week_day","osd_scrub_min_interval","osd_scrub_max_interval","osd_deep_scrub_interval","osd_scrub_auto_repair","osd_max_scrubs","osd_scrub_priority","osd_scrub_sleep"],t.advancedOptions=["osd_scrub_auto_repair_num_errors","osd_debug_deep_scrub_sleep","osd_deep_scrub_keys","osd_deep_scrub_large_omap_object_key_threshold","osd_deep_scrub_large_omap_object_value_sum_threshold","osd_deep_scrub_randomize_ratio","osd_deep_scrub_stride","osd_deep_scrub_update_digest_min_age","osd_requested_scrub_priority","osd_scrub_backoff_ratio","osd_scrub_chunk_max","osd_scrub_chunk_min","osd_scrub_cost","osd_scrub_interval_randomize_ratio","osd_scrub_invalid_stats","osd_scrub_load_threshold","osd_scrub_max_preemptions"],t})();class wl{constructor(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.notificationService=n,this.i18n=a,this.actionLabels=r,this.basicOptions=Tl.basicOptions,this.advancedOptions=Tl.advancedOptions,this.advancedEnabled=!1,this.osdPgScrubForm=new Qs.a({}),this.resource=this.i18n("PG scrub options"),this.action=this.actionLabels.EDIT,this.permissions=this.authStorageService.getPermissions()}submitAction(){const t=[this.basicOptionsValues.saveValues()];this.advancedOptionsValues&&t.push(this.advancedOptionsValues.saveValues()),Object(pl.a)(t).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n("Updated PG scrub options")),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}class Ol{constructor(t,e,n,a,r,i){this.bsModalRef=t,this.authStorageService=e,this.configService=n,this.notificationService=a,this.i18n=r,this.osdService=i,this.priorities=[],this.priorityAttrs={},this.permissions=this.authStorageService.getPermissions(),this.priorities=this.osdService.osdRecvSpeedModalPriorities.KNOWN_PRIORITIES,this.osdRecvSpeedForm=new Qs.a({priority:new K.i(null,{validators:[K.B.required]}),customizePriority:new K.i(!1)}),this.priorityAttrs={osd_max_backfills:{text:this.i18n("Max Backfills"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_active:{text:this.i18n("Recovery Max Active"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_single_start:{text:this.i18n("Recovery Max Single Start"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_sleep:{text:this.i18n("Recovery Sleep"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0}},Object.keys(this.priorityAttrs).forEach(t=>{this.osdRecvSpeedForm.addControl(t,new K.i(null,{validators:[K.B.required]}))})}ngOnInit(){this.configService.filter(Object.keys(this.priorityAttrs)).subscribe(t=>{const e=this.getCurrentValues(t);this.detectPriority(e.values,t=>{this.setPriority(t)}),this.setDescription(e.configOptions),this.setValidators(e.configOptions)})}detectPriority(t,e){const n=X.find(this.priorities,e=>X.isEqual(e.values,t));return this.osdRecvSpeedForm.controls.customizePriority.setValue(!1),n?e(n):4===Object.entries(t).length?(this.osdRecvSpeedForm.controls.customizePriority.setValue(!0),e(Object({name:"custom",text:this.i18n("Custom"),values:t}))):e(this.priorities[0])}getCurrentValues(t){const e={values:{},configOptions:[]};return t.forEach(t=>{e.configOptions.push(t),"value"in t?t.value.forEach(n=>{"osd"===n.section&&(e.values[t.name]=Number(n.value))}):"default"in t&&null!==t.default&&(e.values[t.name]=Number(t.default))}),e}setDescription(t){t.forEach(t=>{""!==t.desc&&(this.priorityAttrs[t.name].desc=t.desc)})}setPriority(t){const e=X.find(this.priorities,t=>"custom"===t.name);"custom"===t.name?e||this.priorities.push(t):e&&this.priorities.splice(this.priorities.indexOf(e),1),this.osdRecvSpeedForm.controls.priority.setValue(t.name),Object.entries(t.values).forEach(([t,e])=>{this.osdRecvSpeedForm.controls[t].setValue(e)})}setValidators(t){t.forEach(t=>{const e=xl.getTypeValidators(t);e?(e.validators.push(K.B.required),"max"in e&&""!==e.max&&(this.priorityAttrs[t.name].maxValue=e.max),"min"in e&&""!==e.min&&(this.priorityAttrs[t.name].minValue=e.min),this.priorityAttrs[t.name].patternHelpText=e.patternHelpText,this.osdRecvSpeedForm.controls[t.name].setValidators(e.validators)):this.osdRecvSpeedForm.controls[t.name].setValidators(K.B.required)})}onCustomizePriorityChange(){const t={};if(Object.keys(this.priorityAttrs).forEach(e=>{t[e]=this.osdRecvSpeedForm.getValue(e)}),this.osdRecvSpeedForm.getValue("customizePriority")){const e={name:"custom",text:this.i18n("Custom"),values:t};this.setPriority(e)}else this.detectPriority(t,t=>{this.setPriority(t)})}onPriorityChange(t){const e=X.find(this.priorities,e=>e.name===t)||this.priorities[0];this.osdRecvSpeedForm.get("customizePriority").setValue(!1),this.setPriority(e)}submitAction(){const t={};Object.keys(this.priorityAttrs).forEach(e=>{t[e]={section:"osd",value:this.osdRecvSpeedForm.getValue(e)}}),this.configService.bulkCreate({options:t}).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n('Updated OSD recovery speed priority "{{value}}"',{value:this.osdRecvSpeedForm.getValue("priority")})),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}class Sl{constructor(t,e,n){this.bsModalRef=t,this.osdService=e,this.fb=n,this.currentWeight=1}get weight(){return this.reweightForm.get("weight")}ngOnInit(){this.reweightForm=this.fb.group({weight:this.fb.control(this.currentWeight,[K.B.required,K.B.max(1),K.B.min(0)])})}reweight(){this.osdService.reweight(this.osdId,this.reweightForm.value.weight).subscribe(()=>this.bsModalRef.hide())}}class Il{constructor(t,e,n,a,r){this.bsModalRef=t,this.osdService=e,this.notificationService=n,this.i18n=a,this.joinPipe=r,this.selected=[]}ngOnInit(){this.scrubForm=new K.k({})}scrub(){Object(pl.a)(this.selected.map(t=>this.osdService.scrub(t,this.deep))).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n("{{operation}} was initialized in the following OSD(s): {{id}}",{operation:this.deep?"Deep scrub":"Scrub",id:this.joinPipe.transform(this.selected)})),this.bsModalRef.hide()},()=>this.bsModalRef.hide())}}const Nl=new Os.a("osd");class Cl extends Ss.a{constructor(t,e,n,a,r,i,s,u,o,l,d){super(),this.authStorageService=t,this.osdService=e,this.dimlessBinaryPipe=n,this.modalService=a,this.i18n=r,this.urlBuilder=i,this.router=s,this.depCheckerService=u,this.taskWrapper=o,this.actionLabels=l,this.notificationService=d,this.icons=pt.a,this.selection=new ui.a,this.osds=[],this.disabledFlags=["sortbitwise","purged_snapdirs","recovery_deletes","pglog_hardlimit"],this.indivFlagNames=["noup","nodown","noin","noout"],this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:pt.a.add,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.CREATE,this.i18n("OSD"),()=>{this.router.navigate([this.urlBuilder.getCreate()])})},canBePrimary:t=>!t.hasSelection},{name:this.actionLabels.EDIT,permission:"update",icon:pt.a.edit,click:()=>this.editAction()},{name:this.actionLabels.FLAGS,permission:"update",icon:pt.a.flag,click:()=>this.configureFlagsIndivAction(),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.SCRUB,permission:"update",icon:pt.a.analyse,click:()=>this.scrubAction(!1),disable:()=>!this.hasOsdSelected,canBePrimary:t=>t.hasSelection},{name:this.actionLabels.DEEP_SCRUB,permission:"update",icon:pt.a.deepCheck,click:()=>this.scrubAction(!0),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.REWEIGHT,permission:"update",click:()=>this.reweight(),disable:()=>!this.hasOsdSelected||!this.selection.hasSingleSelection,icon:pt.a.reweight},{name:this.actionLabels.MARK_OUT,permission:"update",click:()=>this.showConfirmationModal(this.i18n("out"),this.osdService.markOut),disable:()=>this.isNotSelectedOrInState("out"),icon:pt.a.left},{name:this.actionLabels.MARK_IN,permission:"update",click:()=>this.showConfirmationModal(this.i18n("in"),this.osdService.markIn),disable:()=>this.isNotSelectedOrInState("in"),icon:pt.a.right},{name:this.actionLabels.MARK_DOWN,permission:"update",click:()=>this.showConfirmationModal(this.i18n("down"),this.osdService.markDown),disable:()=>this.isNotSelectedOrInState("down"),icon:pt.a.down},{name:this.actionLabels.MARK_LOST,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("Mark"),this.i18n("OSD lost"),this.i18n("marked lost"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",this.osdService.markLost),disable:()=>this.isNotSelectedOrInState("up"),icon:pt.a.flatten},{name:this.actionLabels.PURGE,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("Purge"),this.i18n("OSD"),this.i18n("purged"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",t=>(this.selection=new ui.a,this.osdService.purge(t))),disable:()=>this.isNotSelectedOrInState("up"),icon:pt.a.erase},{name:this.actionLabels.DESTROY,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("destroy"),this.i18n("OSD"),this.i18n("destroyed"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",t=>(this.selection=new ui.a,this.osdService.destroy(t))),disable:()=>this.isNotSelectedOrInState("up"),icon:pt.a.destroyCircle},{name:this.actionLabels.DELETE,permission:"delete",click:()=>this.delete(),disable:()=>!this.hasOsdSelected,icon:pt.a.destroy}]}static collectStates(t){const e=[t.in?"in":"out"];return t.up?e.push("up"):t.state.includes("destroyed")?e.push("destroyed"):e.push("down"),e}ngOnInit(){this.clusterWideActions=[{name:this.i18n("Flags"),icon:pt.a.flag,click:()=>this.configureFlagsAction(),permission:"read",visible:()=>this.permissions.osd.read},{name:this.i18n("Recovery Priority"),icon:pt.a.deepCheck,click:()=>this.configureQosParamsAction(),permission:"read",visible:()=>this.permissions.configOpt.read},{name:this.i18n("PG scrub"),icon:pt.a.analyse,click:()=>this.configurePgScrubAction(),permission:"read",visible:()=>this.permissions.configOpt.read}],this.columns=[{prop:"host.name",name:this.i18n("Host")},{prop:"id",name:this.i18n("ID"),flexGrow:1,cellTransformation:si.a.bold},{prop:"collectedStates",name:this.i18n("Status"),flexGrow:1,cellTransformation:si.a.badge,customTemplateConfig:{map:{in:{class:"badge-success"},up:{class:"badge-success"},down:{class:"badge-danger"},out:{class:"badge-danger"},destroyed:{class:"badge-danger"}}}},{prop:"tree.device_class",name:this.i18n("Device class"),flexGrow:1,cellTransformation:si.a.badge,customTemplateConfig:{map:{hdd:{class:"badge-hdd"},ssd:{class:"badge-ssd"}}}},{prop:"stats.numpg",name:this.i18n("PGs"),flexGrow:1},{prop:"stats.stat_bytes",name:this.i18n("Size"),flexGrow:1,pipe:this.dimlessBinaryPipe},{prop:"state",name:this.i18n("Flags"),cellTemplate:this.flagsTpl},{prop:"stats.usage",name:this.i18n("Usage"),cellTemplate:this.osdUsageTpl},{prop:"stats_history.out_bytes",name:this.i18n("Read bytes"),cellTransformation:si.a.sparkline},{prop:"stats_history.in_bytes",name:this.i18n("Write bytes"),cellTransformation:si.a.sparkline},{prop:"stats.op_r",name:this.i18n("Read ops"),cellTransformation:si.a.perSecond},{prop:"stats.op_w",name:this.i18n("Write ops"),cellTransformation:si.a.perSecond}]}getSelectedOsdIds(){const t=this.osds.map(t=>t.id);return this.selection.selected.map(t=>t.id).filter(e=>t.includes(e))}getSelectedOsds(){return this.osds.filter(t=>!X.isUndefined(t)&&this.getSelectedOsdIds().includes(t.id))}get hasOsdSelected(){return this.getSelectedOsdIds().length>0}updateSelection(t){this.selection=t}isNotSelectedOrInState(t){const e=this.getSelectedOsds();if(0===e.length)return!0;switch(t){case"in":return e.some(t=>1===t.in);case"out":return e.some(t=>1!==t.in);case"down":return e.some(t=>1!==t.up);case"up":return e.some(t=>1===t.up)}}getOsdList(){const t=[this.osdService.getList(),this.osdService.getFlags()];Object(pl.a)(t).subscribe(t=>{this.osds=t[0].map(e=>(e.collectedStates=Cl.collectStates(e),e.stats_history.out_bytes=e.stats_history.op_out_bytes.map(t=>t[1]),e.stats_history.in_bytes=e.stats_history.op_in_bytes.map(t=>t[1]),e.stats.usage=e.stats.stat_bytes_used/e.stats.stat_bytes,e.cdIsBinary=!0,e.cdIndivFlags=e.state.filter(t=>this.indivFlagNames.includes(t)),e.cdClusterFlags=t[1].filter(t=>!this.disabledFlags.includes(t)),e))})}editAction(){const t=X.filter(this.osds,["id",this.selection.first().id]).pop();this.modalService.show(ii.a,{initialState:{titleText:this.i18n("Edit OSD: {{id}}",{id:t.id}),fields:[{type:"text",name:"deviceClass",value:t.tree.device_class,label:this.i18n("Device class"),required:!0}],submitButtonText:this.i18n("Edit OSD"),onSubmit:e=>{this.osdService.update(t.id,e.deviceClass).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n('Updated OSD "{{id}}"',{id:t.id})),this.getOsdList()})}}})}scrubAction(t){if(!this.hasOsdSelected)return;const e={selected:this.getSelectedOsdIds(),deep:t};this.bsModalRef=this.modalService.show(Il,{initialState:e})}configureFlagsAction(){this.bsModalRef=this.modalService.show(yl,{})}configureFlagsIndivAction(){const t={selected:this.getSelectedOsds()};this.bsModalRef=this.modalService.show(ml,{initialState:t})}showConfirmationModal(t,e){this.bsModalRef=this.modalService.show(bl.a,{initialState:{titleText:this.i18n("Mark OSD {{markAction}}",{markAction:t}),buttonText:this.i18n("Mark {{markAction}}",{markAction:t}),bodyTpl:this.markOsdConfirmationTpl,bodyContext:{markActionDescription:t},onSubmit:()=>{Object(pl.a)(this.getSelectedOsdIds().map(t=>e.call(this.osdService,t))).subscribe(()=>this.bsModalRef.hide())}}})}reweight(){const t=this.osds.filter(t=>t.id===this.selection.first().id).pop();this.modalService.show(Sl,{initialState:{currentWeight:t.weight,osdId:t.id}})}delete(){const t=new Qs.a({preserve:new K.i(!1)});this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.DELETE,this.i18n("OSD"),()=>{this.showCriticalConfirmationModal(this.i18n("delete"),this.i18n("OSD"),this.i18n("deleted"),t=>this.osdService.safeToDelete(JSON.stringify(t)),"is_safe_to_delete",e=>(this.selection=new ui.a,this.taskWrapper.wrapTaskAroundCall({task:new Cs.a("osd/"+St.e.DELETE,{svc_id:e}),call:this.osdService.delete(e,t.value.preserve,!0)})),!0,t,this.deleteOsdExtraTpl)})}showCriticalConfirmationModal(t,e,n,a,r,i,s=!1,u,o){a(this.getSelectedOsdIds()).subscribe(a=>{const l=this.modalService.show(Is.a,{initialState:{actionDescription:t,itemDescription:e,bodyTemplate:this.criticalConfirmationTpl,bodyContext:{safeToPerform:a[r],message:a.message,actionDescription:n,osdIds:this.getSelectedOsdIds()},childFormGroup:u,childFormGroupTemplate:o,submitAction:()=>{const t=Object(pl.a)(this.getSelectedOsdIds().map(t=>i.call(this.osdService,t)));s?t.subscribe(void 0,()=>{this.getOsdList(),l.hide()},()=>l.hide()):t.subscribe(()=>{this.getOsdList(),l.hide()},()=>l.hide())}}})})}configureQosParamsAction(){this.bsModalRef=this.modalService.show(Ol,{})}configurePgScrubAction(){this.bsModalRef=this.modalService.show(wl,{class:"modal-lg"})}}var Rl=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Al(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Uo.b,Uo.a)),s["ɵdid"](1,573440,null,0,Wo.a,[],{total:[0,"total"],used:[1,"used"]},null)],(function(t,e){t(e,1,0,e.context.row.stats.stat_bytes,e.context.row.stats.stat_bytes_used)}),null)}function kl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-hdd mr-1"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit)}))}function El(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-info mr-1"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit)}))}function Ll(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,kl)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,El)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.row.cdClusterFlags),t(e,3,0,e.context.row.cdIndivFlags)}),null)}function Dl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","four"],["uid","lo02I1Aiz"]],null,null,null,Wr.b,Wr.a)),s["ɵdid"](3,638976,null,0,Kr.a,[me.b,te.a,Xt.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){t(e,1,0,"Overall Performance"),t(e,3,0,"osd-overview?","four","lo02I1Aiz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Pl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["OSD(s) ",""])),s["ɵppd"](3,1),(t()(),s["ɵted"](-1,null,[" will be marked\n"])),(t()(),s["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵted"](-1,null,[" if you proceed."]))],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.getSelectedOsdIds()));t(e,2,0,a),t(e,6,0,e.context.markActionDescription)}))}function Ml(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["OSD is"]))],null,null)}function ql(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["OSDs are"]))],null,null)}function jl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","danger"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"cd-alert-panel",[["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](2,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The "])),(t()(),s["ɵeld"](4,0,null,0,5,null,null,null,null,null,null,null)),s["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ml)),s["ɵdid"](7,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ql)),s["ɵdid"](9,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](10,0,[" not safe to be ","! ",""]))],(function(t,e){var n=e.component;t(e,2,0,"warning"),t(e,5,0,n.selection.hasSingleSelection),t(e,7,0,"true"),t(e,9,0,"false")}),(function(t,e){t(e,10,0,e.parent.context.actionDescription,e.parent.context.message)}))}function Fl(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,jl)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](2,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](4,null,["OSD ",""])),s["ɵppd"](5,1),(t()(),s["ɵted"](-1,null,[" will be "])),(t()(),s["ɵeld"](7,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""])),(t()(),s["ɵted"](-1,null,[" if you proceed."]))],(function(t,e){t(e,1,0,!e.context.safeToPerform)}),(function(t,e){var n=s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent,0),e.context.osdIds));t(e,4,0,n),t(e,8,0,e.context.actionDescription)}))}function Vl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,null,null,null,null,(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,1).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,1).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,4).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,540672,null,0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](3,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](4,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](5,0,null,null,18,null,null,null,null,null,null,null)),s["ɵdid"](6,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](8,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](9,0,null,null,14,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](10,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](13,0,null,0,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","preserve"],["id","preserve"],["name","preserve"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,16).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),a}),null,null)),s["ɵdid"](15,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](16,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](18,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](20,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](21,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](22,0,null,null,1,"label",[["class","custom-control-label"],["for","preserve"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Preserve OSD ID(s) for replacement."]))],(function(t,e){t(e,1,0,e.context.form),t(e,4,0,e.context.form),t(e,6,0,"child"),t(e,10,0),t(e,18,0,"preserve"),t(e,21,0,"preserve")}),(function(t,e){t(e,9,0,s["ɵnov"](e,10).hasErrors,s["ɵnov"](e,10).hasSuccess),t(e,14,0,s["ɵnov"](e,20).ngClassUntouched,s["ɵnov"](e,20).ngClassTouched,s["ɵnov"](e,20).ngClassPristine,s["ɵnov"](e,20).ngClassDirty,s["ɵnov"](e,20).ngClassValid,s["ɵnov"](e,20).ngClassInvalid,s["ɵnov"](e,20).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass)}))}function Gl(t){return s["ɵvid"](0,[s["ɵpid"](0,Ko.a,[]),s["ɵqud"](402653184,1,{osdUsageTpl:0}),s["ɵqud"](402653184,2,{markOsdConfirmationTpl:0}),s["ɵqud"](402653184,3,{criticalConfirmationTpl:0}),s["ɵqud"](402653184,4,{tableComponent:0}),s["ɵqud"](671088640,5,{reweightBodyTpl:0}),s["ɵqud"](671088640,6,{safeToDestroyBodyTpl:0}),s["ɵqud"](671088640,7,{deleteOsdExtraTpl:0}),s["ɵqud"](402653184,8,{flagsTpl:0}),(t()(),s["ɵeld"](9,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](10,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](11,0,null,0,13,"tab",[["heading","OSDs List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](12,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](13,0,null,null,9,"cd-table",[["selectionType","multiClick"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getOsdList()&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](14,2867200,[[4,4]],0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"],updateSelectionOnRefresh:[4,"updateSelectionOnRefresh"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](15,0,null,1,5,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,1,"cd-table-actions",[["class","btn-group"],["id","osd-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](17,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](18,0,null,null,2,"cd-table-actions",[["btnColor","light"],["class","btn-group"],["dropDownOnly","Cluster-wide configuration"],["id","cluster-wide-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](19,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"],btnColor:[3,"btnColor"],dropDownOnly:[4,"dropDownOnly"]},null),s["ɵpod"](20,{read:0}),(t()(),s["ɵeld"](21,0,null,3,1,"cd-osd-details",[["cdTableDetail",""]],null,null,null,fl,rl)),s["ɵdid"](22,573440,null,0,al,[Li,Z.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[1,2],["osdUsageTpl",2]],null,0,null,Al)),(t()(),s["ɵand"](0,[[8,2],["flagsTpl",2]],null,0,null,Ll)),(t()(),s["ɵand"](16777216,null,0,1,null,Dl)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[2,2],["markOsdConfirmationTpl",2]],null,0,null,Pl)),(t()(),s["ɵand"](0,[[3,2],["criticalConfirmationTpl",2]],null,0,null,Fl)),(t()(),s["ɵand"](0,[[7,2],["deleteOsdExtraTpl",2]],null,0,null,Vl))],(function(t,e){var n=e.component;t(e,12,0,"OSDs List"),t(e,14,0,n.osds,n.columns,!0,"multiClick","never"),t(e,17,0,n.permissions.osd,n.selection,n.tableActions);var a=t(e,20,0,!0);t(e,19,0,a,n.selection,n.clusterWideActions,"light","Cluster-wide configuration"),t(e,22,0,n.expandedRow),t(e,26,0,n.permissions.grafana.read)}),(function(t,e){t(e,9,0,s["ɵnov"](e,10).clazz),t(e,11,0,s["ɵnov"](e,12).id,s["ɵnov"](e,12).active,s["ɵnov"](e,12).addClass,s["ɵnov"](e,12).role,s["ɵnov"](e,12).ariaLabelledby)}))}function Bl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-osd-list",[],null,null,null,Gl,Rl)),s["ɵprd"](256,null,Os.a,Nl,[]),s["ɵdid"](2,114688,null,0,Cl,[Z.a,Li,qa.a,Ct.b,Xt.a,Os.a,Et.m,ks,Es.a,St.b,bt.a],null,null)],(function(t,e){t(e,2,0)}),null)}var zl=s["ɵccf"]("cd-osd-list",Cl,Bl,{},{},[]);class Yl{constructor(t,e,n){this.formBuilder=t,this.bsModalRef=e,this.actionLabels=n,this.submitAction=new s.EventEmitter,this.icons=pt.a,this.filterColumns=[],this.devices=[],this.filteredDevices=[],this.capacity=0,this.canSubmit=!1,this.requiredFilters=[],this.action=n.ADD,this.createForm()}ngAfterViewInit(){const t=X.filter(this.inventoryDevices.columns,t=>this.filterColumns.includes(t.prop)&&"hostname"!==t.prop);this.requiredFilters=X.map(t,"name")}createForm(){this.formGroup=this.formBuilder.group({})}onFilterChange(t){if(this.capacity=0,this.canSubmit=!1,X.isEmpty(t.filters))this.filteredDevices=[],this.event=void 0;else{const e=t.filters.filter(t=>"hostname"!==t.prop);this.canSubmit=!X.isEmpty(e),this.filteredDevices=t.data,this.capacity=X.sumBy(this.filteredDevices,"sys_api.size"),this.event=t}}onSubmit(){this.submitAction.emit(this.event),this.bsModalRef.hide()}}class Hl{constructor(t,e){this.bsModalService=t,this.i18n=e,this.selected=new s.EventEmitter,this.cleared=new s.EventEmitter,this.icons=pt.a,this.devices=[],this.capacity=0,this.appliedFilters=[],this.tooltips={noAvailDevices:this.i18n("No available devices"),addPrimaryFirst:this.i18n("Please add primary devices first"),addByFilters:this.i18n("Add devices by using filters")}}ngOnInit(){this.updateAddButtonTooltip()}ngOnChanges(){this.updateAddButtonTooltip()}showSelectionModal(){let t=["human_readable_type","sys_api.vendor","sys_api.model","sys_api.size"];"data"===this.type&&(t=["hostname",...t]),this.bsModalService.show(Yl,{class:"modal-xl",initialState:{hostname:this.hostname,deviceType:this.name,devices:this.availDevices,filterColumns:t}}).content.submitAction.subscribe(t=>{this.devices=t.data,this.capacity=X.sumBy(this.devices,"sys_api.size"),this.appliedFilters=t.filters;const e=X.assign({type:this.type},t);this.selected.emit(e)})}updateAddButtonTooltip(){this.addButtonTooltip="data"===this.type&&0===this.availDevices.length?this.tooltips.noAvailDevices:this.canSelect?0===this.availDevices.length?this.tooltips.noAvailDevices:this.tooltips.addByFilters:this.tooltips.addPrimaryFirst}clearDevices(){const t={type:this.type,clearedDevices:[...this.devices]};this.devices=[],this.cleared.emit(t)}}var Ul=s["ɵcrt"]({encapsulation:0,styles:[[".tc_clearSelections[_ngcontent-%COMP%]{text-decoration:none}"]],data:{}});function Wl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The primary storage devices. These devices contain all OSD data."]))],null,null)}function Kl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device."]))],null,null)}function $l(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DB devices can be used for storing BlueStore’s internal metadata. It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD)."]))],null,null)}function Jl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"button",[["class","btn btn-light"],["data-toggle","tooltip"],["type","button"]],[[8,"title",0],[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showSelectionModal()&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add"]))],(function(t,e){var n=t(e,5,0,e.component.icons.add);t(e,4,0,n)}),(function(t,e){var n=e.component;t(e,1,0,n.addButtonTooltip,0===n.availDevices.length||!n.canSelect)}))}function Zl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",": ",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.name,e.context.$implicit.value.formatted)}))}function Ql(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["Raw capacity: ",""])),s["ɵppd"](3,1)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent,0),n.capacity));t(e,2,0,a)}))}function Xl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","pb-2 my-2 border-bottom"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Zl)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](3,0,null,null,6,"a",[["class","tc_clearSelections"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.clearDevices(),a=!1),a}),null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clear"])),(t()(),s["ɵeld"](10,0,null,null,3,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,2,"cd-inventory-devices",[],null,null,null,di,li)),s["ɵdid"](12,245760,null,0,oi,[Z.a,qa.a,Xt.a,Ct.b,bt.a,ri],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],filterColumns:[2,"filterColumns"]},null),s["ɵpad"](13,2),(t()(),s["ɵand"](16777216,null,null,1,null,Ql)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.appliedFilters);var a=t(e,7,0,n.icons.clearFilters);t(e,6,0,a);var r=n.devices,i=t(e,13,0,"available","osd_ids");t(e,12,0,r,i,s["ɵEMPTY_ARRAY"]),t(e,15,0,"data"===n.type)}),null)}function td(t){return s["ɵvid"](0,[s["ɵpid"](0,qa.a,[Ua.a]),(t()(),s["ɵeld"](1,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,10,"label",[["class","cd-col-form-label"],["for","createDeleteButton"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](7,null,[""," devices"])),(t()(),s["ɵeld"](8,0,null,null,7,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](9,49152,null,0,$u.a,[],null,null),(t()(),s["ɵand"](16777216,null,0,1,null,Wl)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Kl)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,$l)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](16,0,null,0,3,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Jl)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["blockClearDevices",2]],null,0,null,Xl))],(function(t,e){var n=e.component;t(e,2,0),t(e,11,0,"data"===n.type),t(e,13,0,"wal"===n.type),t(e,15,0,"db"===n.type),t(e,18,0,0===n.devices.length,s["ɵnov"](e,19))}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,n.name)}))}class ed{constructor(t,e,n,a,r){this.bsModalRef=t,this.actionLabels=e,this.formBuilder=n,this.osdService=a,this.taskWrapper=r,this.driveGroups=[],this.submitAction=new s.EventEmitter,this.action=e.CREATE,this.createForm()}ngOnInit(){}createForm(){this.formGroup=this.formBuilder.group({})}onSubmit(){this.taskWrapper.wrapTaskAroundCall({task:new Cs.a("osd/"+St.e.CREATE,{tracking_id:X.join(X.map(this.driveGroups,"service_id"),", ")}),call:this.osdService.create(this.driveGroups)}).subscribe(void 0,()=>{this.formGroup.setErrors({cdSubmitButton:!0})},()=>{this.submitAction.emit(),this.bsModalRef.hide()})}}class nd{constructor(){this.reset(),this.formatterService=new Ua.a,this.deviceSelectionAttrs={"sys_api.vendor":{name:"vendor"},"sys_api.model":{name:"model"},device_id:{name:"device_id"},human_readable_type:{name:"rotational",formatter:t=>"hdd"===t.toLowerCase()},"sys_api.size":{name:"size",formatter:t=>this.formatterService.format_number(t,1024,["B","KB","MB","GB","TB","PB"]).replace(" ","")}}}reset(){this.spec={service_type:"osd",service_id:"dashboard-"+X.now()}}setName(t){this.spec.service_id=t}setHostPattern(t){this.spec.host_pattern=t}setDeviceSelection(t,e){const n=t+"_devices";this.spec[n]={},e.forEach(t=>{const e=this.deviceSelectionAttrs[t.prop];e&&(this.spec[n][e.name]=e.formatter?e.formatter(t.value.raw):t.value.raw)})}clearDeviceSelection(t){delete this.spec[t+"_devices"]}setSlots(t,e){const n=t+"_slots";0===e?delete this.spec[n]:this.spec[n]=e}setFeature(t,e){e?this.spec[t]=!0:delete this.spec[t]}}class ad{constructor(t,e,n,a,r,i){this.actionLabels=t,this.authStorageService=e,this.i18n=n,this.orchService=a,this.router=r,this.bsModalService=i,this.icons=pt.a,this.columns=[],this.loading=!1,this.allDevices=[],this.availDevices=[],this.dataDeviceFilters=[],this.dbDeviceFilters=[],this.walDeviceFilters=[],this.hostname="",this.driveGroup=new nd,this.featureList=[],this.hasOrchestrator=!1,this.resource=this.i18n("OSDs"),this.action=this.actionLabels.CREATE,this.features={encrypted:{key:"encrypted",desc:this.i18n("Encryption")}},this.featureList=X.map(this.features,(t,e)=>Object.assign(t,{key:e})),this.createForm()}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.hasOrchestrator&&this.getDataDevices()}),this.form.get("walSlots").valueChanges.subscribe(t=>this.setSlots("wal",t)),this.form.get("dbSlots").valueChanges.subscribe(t=>this.setSlots("db",t)),X.each(this.features,t=>{this.form.get("features").get(t.key).valueChanges.subscribe(e=>this.featureFormUpdate(t.key,e))})}createForm(){this.form=new Qs.a({walSlots:new K.i(0,{validators:[K.B.min(0)]}),dbSlots:new K.i(0,{validators:[K.B.min(0)]}),features:new Qs.a(this.featureList.reduce((t,e)=>(t[e.key]=new K.i({value:!1,disabled:!0}),t),{}))})}getDataDevices(){this.loading||(this.loading=!0,this.orchService.inventoryDeviceList().subscribe(t=>{this.allDevices=X.filter(t,"available"),this.availDevices=[...this.allDevices],this.loading=!1},()=>{this.allDevices=[],this.availDevices=[],this.loading=!1}))}setSlots(t,e){"number"==typeof e&&e>=0&&this.driveGroup.setSlots(t,e)}featureFormUpdate(t,e){this.driveGroup.setFeature(t,e)}enableFeatures(){this.featureList.forEach(t=>{this.form.get(t.key).enable({emitEvent:!1})})}disableFeatures(){this.featureList.forEach(t=>{const e=this.form.get(t.key);e.disable({emitEvent:!1}),e.setValue(!1,{emitEvent:!1})})}onDevicesSelected(t){if(this.availDevices=t.dataOut,"data"===t.type){const e=X.find(t.filters,{prop:"hostname"});e?(this.hostname=e.value.raw,this.availDevices=t.dataOut.filter(t=>t.hostname===this.hostname),this.driveGroup.setHostPattern(this.hostname)):this.driveGroup.setHostPattern("*"),this.enableFeatures()}this.driveGroup.setDeviceSelection(t.type,t.filters)}onDevicesCleared(t){"data"===t.type?(this.availDevices=[...this.allDevices],this.walDeviceSelectionGroups.devices=[],this.dbDeviceSelectionGroups.devices=[],this.disableFeatures(),this.driveGroup.reset(),this.form.get("walSlots").setValue(0,{emitEvent:!1}),this.form.get("dbSlots").setValue(0,{emitEvent:!1})):(this.availDevices=[...this.availDevices,...t.clearedDevices],this.driveGroup.clearDeviceSelection(t.type),this.form.get(t.type+"Slots").setValue(0,{emitEvent:!1}))}submit(){const t=this.authStorageService.getUsername();this.driveGroup.setName(`dashboard-${t}-${X.now()}`),this.bsModalService.show(ed,{initialState:{driveGroups:[this.driveGroup.spec]}}).content.submitAction.subscribe(()=>{this.router.navigate(["/osd"])}),this.previewButton.loading=!1}}var rd=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function id(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ai,ni)),s["ɵdid"](1,49152,null,0,ei,[],null,null)],null,null)}function sd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value should be greater than or equal to 0"]))],null,null)}function ud(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,9,"label",[["class","cd-col-form-label"],["for","walSlots"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["WAL slots"])),(t()(),s["ɵeld"](7,0,null,null,6,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](8,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["How many OSDs per WAL device."])),(t()(),s["ɵeld"](11,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Specify 0 to let Orchestrator backend decide it."])),(t()(),s["ɵeld"](14,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,8,"input",[["class","form-control"],["formControlName","walSlots"],["id","walSlots"],["min","0"],["name","walSlots"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,17)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,17)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,17)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,18).onTouched()&&a),a}),null,null)),s["ɵdid"](16,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](17,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](18,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](20,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](22,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](23,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sd)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,20,0,"walSlots"),t(e,23,0,"walSlots"),t(e,25,0,n.form.showError("walSlots",s["ɵnov"](e.parent,3),"min"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,15,0,s["ɵnov"](e,22).ngClassUntouched,s["ɵnov"](e,22).ngClassTouched,s["ɵnov"](e,22).ngClassPristine,s["ɵnov"](e,22).ngClassDirty,s["ɵnov"](e,22).ngClassValid,s["ɵnov"](e,22).ngClassInvalid,s["ɵnov"](e,22).ngClassPending,s["ɵnov"](e,23).validClass,s["ɵnov"](e,23).invalidClass)}))}function od(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value should be greater than or equal to 0"]))],null,null)}function ld(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,9,"label",[["class","cd-col-form-label"],["for","dbSlots"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DB slots"])),(t()(),s["ɵeld"](7,0,null,null,6,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](8,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["How many OSDs per DB device."])),(t()(),s["ɵeld"](11,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Specify 0 to let Orchestrator backend decide it."])),(t()(),s["ɵeld"](14,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,8,"input",[["class","form-control"],["formControlName","dbSlots"],["id","dbSlots"],["min","0"],["name","dbSlots"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,17)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,17)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,17)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,18).onTouched()&&a),a}),null,null)),s["ɵdid"](16,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](17,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](18,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](20,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](22,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](23,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,od)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,20,0,"dbSlots"),t(e,23,0,"dbSlots"),t(e,25,0,n.form.showError("dbSlots",s["ɵnov"](e.parent,3),"min"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,15,0,s["ɵnov"](e,22).ngClassUntouched,s["ɵnov"](e,22).ngClassTouched,s["ɵnov"](e,22).ngClassPristine,s["ɵnov"](e,22).ngClassDirty,s["ɵnov"](e,22).ngClassValid,s["ɵnov"](e,22).ngClassInvalid,s["ɵnov"](e,22).ngClassPending,s["ɵnov"](e,23).validClass,s["ɵnov"](e,23).invalidClass)}))}function dd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](3,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](5,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](7,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](8,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](9,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](10,null,["",""]))],(function(t,e){t(e,5,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,"")),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""))}),(function(t,e){t(e,1,1,[s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""),s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,8).validClass,s["ɵnov"](e,8).invalidClass]),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,"")),t(e,10,0,e.context.$implicit.desc)}))}function cd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,48,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,47,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,41,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,[""," ",""])),s["ɵppd"](10,1),s["ɵppd"](11,1),(t()(),s["ɵeld"](12,0,null,null,29,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,2,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"cd-osd-devices-selection-groups",[["name","Primary"],["type","data"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),td,Ul)),s["ɵdid"](15,638976,[[1,4],["dataDeviceSelectionGroups",4]],0,Hl,[Ct.b,Xt.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵeld"](16,0,null,null,10,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Shared devices"])),(t()(),s["ɵeld"](19,0,null,null,1,"cd-osd-devices-selection-groups",[["name","WAL"],["type","wal"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),td,Ul)),s["ɵdid"](20,638976,[[2,4],["walDeviceSelectionGroups",4]],0,Hl,[Ct.b,Xt.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵand"](16777216,null,null,1,null,ud)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](23,0,null,null,1,"cd-osd-devices-selection-groups",[["name","DB"],["type","db"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),td,Ul)),s["ɵdid"](24,638976,[[3,4],["dbDeviceSelectionGroups",4]],0,Hl,[Ct.b,Xt.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵand"](16777216,null,null,1,null,ld)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](27,0,null,null,14,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Configuration"])),(t()(),s["ɵeld"](30,0,null,null,11,"div",[["class","form-group row"],["formGroupName","features"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](31,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](33,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](34,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](37,0,null,0,1,"label",[["class","cd-col-form-label"],["for","features"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Features"])),(t()(),s["ɵeld"](39,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,dd)),s["ɵdid"](41,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](42,0,null,null,6,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](45,114688,[[4,4],["previewButton",4]],0,Ks.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Preview"])),(t()(),s["ɵeld"](47,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](48,49152,null,0,Js.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,3,0,n.form),t(e,6,0,n.form),t(e,15,0,"data","Primary",n.availDevices,0!==n.availDevices.length),t(e,20,0,"wal","WAL",n.availDevices,0!==s["ɵnov"](e,15).devices.length),t(e,22,0,0!==s["ɵnov"](e,20).devices.length),t(e,24,0,"db","DB",n.availDevices,0!==s["ɵnov"](e,15).devices.length),t(e,26,0,0!==s["ɵnov"](e,24).devices.length),t(e,31,0,"features"),t(e,34,0),t(e,41,0,n.featureList),t(e,45,0,s["ɵnov"](e,3),0===s["ɵnov"](e,15).devices.length)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending);var a=s["ɵunv"](e,9,0,t(e,10,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,9,1,t(e,11,0,s["ɵnov"](e.parent,1),n.resource));t(e,9,0,a,r),t(e,30,0,s["ɵnov"](e,33).ngClassUntouched,s["ɵnov"](e,33).ngClassTouched,s["ɵnov"](e,33).ngClassPristine,s["ɵnov"](e,33).ngClassDirty,s["ɵnov"](e,33).ngClassValid,s["ɵnov"](e,33).ngClassInvalid,s["ɵnov"](e,33).ngClassPending,s["ɵnov"](e,34).hasErrors,s["ɵnov"](e,34).hasSuccess)}))}function fd(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Zs.a,[]),s["ɵqud"](671088640,1,{dataDeviceSelectionGroups:0}),s["ɵqud"](671088640,2,{walDeviceSelectionGroups:0}),s["ɵqud"](671088640,3,{dbDeviceSelectionGroups:0}),s["ɵqud"](671088640,4,{previewButton:0}),(t()(),s["ɵand"](16777216,null,null,1,null,id)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cd)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,7,0,!n.hasOrchestrator),t(e,9,0,!n.loading&&n.hasOrchestrator)}),null)}function hd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-form",[],null,null,null,fd,rd)),s["ɵdid"](1,114688,null,0,ad,[St.b,Z.a,Xt.a,ri,Et.m,Ct.b],null,null)],(function(t,e){t(e,1,0)}),null)}var gd=s["ɵccf"]("cd-osd-form",ad,hd,{},{},[]),pd=n("iExv");class bd{constructor(t){this.i18n=t,this.flags={runtime:this.i18n("The value can be updated at runtime."),no_mon_update:this.i18n("Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via 'ceph config\n      set ...'. This option should be configured via ceph.conf or via the\n      command line."),startup:this.i18n("Option takes effect only during daemon startup."),cluster_create:this.i18n("Option only affects cluster creation."),create:this.i18n("Option only affects daemon creation.")}}ngOnChanges(){this.selection&&(this.selection.services=X.split(this.selection.services,","))}}var md=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function yd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": ","",""])),(t()(),s["ɵeld"](2,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,1,0,e.context.$implicit.section,e.context.$implicit.value,e.context.last?"":",")}))}function vd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""])),s["ɵppd"](4,1)],null,(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](1,"",e.component.flags[e.context.$implicit],""));var n=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent,0),e.context.$implicit));t(e,3,0,n)}))}function xd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function _d(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,94,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,92,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,90,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,89,"tbody",[],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](9,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(t()(),s["ɵted"](10,null,["",""])),(t()(),s["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](15,null,["",""])),(t()(),s["ɵeld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Long description"])),(t()(),s["ɵeld"](19,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](20,null,["",""])),(t()(),s["ɵeld"](21,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Current values"])),(t()(),s["ɵeld"](24,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,yd)),s["ɵdid"](26,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](27,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Default"])),(t()(),s["ɵeld"](30,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](31,null,["",""])),(t()(),s["ɵeld"](32,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemon default"])),(t()(),s["ɵeld"](35,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](36,null,["",""])),(t()(),s["ɵeld"](37,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type"])),(t()(),s["ɵeld"](40,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](41,null,["",""])),(t()(),s["ɵeld"](42,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Min"])),(t()(),s["ɵeld"](45,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](46,null,["",""])),(t()(),s["ɵeld"](47,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Max"])),(t()(),s["ɵeld"](50,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](51,null,["",""])),(t()(),s["ɵeld"](52,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Flags"])),(t()(),s["ɵeld"](55,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,vd)),s["ɵdid"](57,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](58,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Services"])),(t()(),s["ɵeld"](61,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,xd)),s["ɵdid"](63,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](64,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](65,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Source"])),(t()(),s["ɵeld"](67,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](68,null,["",""])),(t()(),s["ɵeld"](69,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](70,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Level"])),(t()(),s["ɵeld"](72,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](73,null,["",""])),(t()(),s["ɵeld"](74,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Can be updated at runtime (editable)"])),(t()(),s["ɵeld"](77,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](78,null,["",""])),s["ɵppd"](79,1),(t()(),s["ɵeld"](80,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](81,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tags"])),(t()(),s["ɵeld"](83,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](84,null,["",""])),(t()(),s["ɵeld"](85,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](86,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Enum values"])),(t()(),s["ɵeld"](88,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](89,null,["",""])),(t()(),s["ɵeld"](90,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](91,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["See also"])),(t()(),s["ɵeld"](93,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](94,null,["",""]))],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,26,0,n.selection.value),t(e,57,0,n.selection.flags),t(e,63,0,n.selection.services)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,10,0,n.selection.name),t(e,15,0,n.selection.desc),t(e,20,0,n.selection.long_desc),t(e,31,0,n.selection.default),t(e,36,0,n.selection.daemon_default),t(e,41,0,n.selection.type),t(e,46,0,n.selection.min),t(e,51,0,n.selection.max),t(e,68,0,n.selection.source),t(e,73,0,n.selection.level);var a=s["ɵunv"](e,78,0,t(e,79,0,s["ɵnov"](e.parent,1),n.selection.can_update_at_runtime));t(e,78,0,a),t(e,84,0,n.selection.tags),t(e,89,0,n.selection.enum_values),t(e,94,0,n.selection.see_also)}))}function Td(t){return s["ɵvid"](0,[s["ɵpid"](0,i.UpperCasePipe,[]),s["ɵpid"](0,pd.a,[Xt.a]),(t()(),s["ɵand"](16777216,null,null,1,null,_d)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,3,0,e.component.selection)}),null)}class wd extends Ss.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.configurationService=e,this.i18n=n,this.actionLabels=a,this.data=[],this.icons=pt.a,this.selection=new ui.a,this.filters=[{name:this.i18n("Level"),prop:"level",filterOptions:["basic","advanced","dev"],filterInitValue:"basic",filterPredicate:(t,e)=>{let n;return function(t){t[t.basic=0]="basic",t[t.advanced=1]="advanced",t[t.dev=2]="dev"}(n||(n={})),n[t.level]<=n[e]}},{name:this.i18n("Service"),prop:"services",filterOptions:["mon","mgr","osd","mds","common","mds_client","rgw"],filterPredicate:(t,e)=>t.services.includes(e)},{name:this.i18n("Source"),prop:"source",filterOptions:["mon"],filterPredicate:(t,e)=>!!t.hasOwnProperty("source")&&t.source.includes(e)},{name:this.i18n("Modified"),prop:"modified",filterOptions:["yes","no"],filterPredicate:(t,e)=>!("yes"!==e||!t.hasOwnProperty("value"))||"no"===e&&!t.hasOwnProperty("value")}],this.permission=this.authStorageService.getPermissions().configOpt;const r=()=>this.selection.first()&&""+encodeURIComponent(this.selection.first().name);this.tableActions=[{permission:"update",icon:pt.a.edit,routerLink:()=>"/configuration/edit/"+r(),name:this.actionLabels.EDIT,disable:()=>!this.isEditable(this.selection)}]}ngOnInit(){this.columns=[{canAutoResize:!0,prop:"name",name:this.i18n("Name")},{prop:"desc",name:this.i18n("Description"),cellClass:"wrap"},{prop:"value",name:this.i18n("Current value"),cellClass:"wrap",cellTemplate:this.confValTpl},{prop:"default",name:this.i18n("Default"),cellClass:"wrap"},{prop:"can_update_at_runtime",name:this.i18n("Editable"),cellTransformation:si.a.checkIcon,flexGrow:.4,cellClass:"text-center"}]}updateSelection(t){this.selection=t}getConfigurationList(t){this.configurationService.getConfigData().subscribe(t=>{this.data=t},()=>{t.error()})}isEditable(t){return 1===t.selected.length&&t.selected[0].can_update_at_runtime}}var Od=s["ɵcrt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}  datatable-body-cell.wrap{word-break:break-all}"]],data:{}});function Sd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": ","",""])),(t()(),s["ɵeld"](2,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,1,0,e.context.$implicit.section,e.context.$implicit.value,e.context.last?"":",")}))}function Id(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Sd)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.parent.context.value)}),null)}function Nd(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Id)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function Cd(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{confValTpl:0}),s["ɵqud"](671088640,2,{confFlagTpl:0}),(t()(),s["ɵeld"](2,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getConfigurationList(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](3,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"],extraFilterableColumns:[4,"extraFilterableColumns"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](5,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](6,0,null,3,1,"cd-configuration-details",[["cdTableDetail",""]],null,null,null,Td,md)),s["ɵdid"](7,573440,null,0,bd,[Xt.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[1,2],["confValTpl",2]],null,0,null,Nd))],(function(t,e){var n=e.component;t(e,3,0,n.data,n.columns,!0,"single",n.filters),t(e,5,0,n.permission,n.selection,n.tableActions),t(e,7,0,n.expandedRow)}),null)}function Rd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-configuration",[],null,null,null,Cd,Od)),s["ɵdid"](1,114688,null,0,wd,[Z.a,vl.a,Xt.a,St.b],null,null)],(function(t,e){t(e,1,0)}),null)}var Ad=s["ɵccf"]("cd-configuration",wd,Rd,{},{},[]);class kd{constructor(){this.value=[]}}class Ed{constructor(t,e,n,a,r){this.route=t,this.router=e,this.configService=n,this.notificationService=a,this.i18n=r,this.availSections=["global","mon","mgr","osd","mds","client"],this.createForm()}createForm(){const t={name:new K.i({value:null}),desc:new K.i({value:null}),long_desc:new K.i({value:null}),values:new K.k({}),default:new K.i({value:null}),daemon_default:new K.i({value:null}),services:new K.i([])};this.availSections.forEach(e=>{t.values.addControl(e,new K.i(null))}),this.configForm=new Qs.a(t)}ngOnInit(){this.route.params.subscribe(t=>{this.configService.get(t.name).subscribe(t=>{this.setResponse(t)})})}getValidators(t){const e=xl.getTypeValidators(t);if(e)return this.patternHelpText=e.patternHelpText,"max"in e&&""!==e.max&&(this.maxValue=e.max),"min"in e&&""!==e.min&&(this.minValue=e.min),e.validators}getStep(t,e){return xl.getTypeStep(t,e)}setResponse(t){this.response=t;const e=this.getValidators(t);this.configForm.get("name").setValue(t.name),this.configForm.get("desc").setValue(t.desc),this.configForm.get("long_desc").setValue(t.long_desc),this.configForm.get("default").setValue(t.default),this.configForm.get("daemon_default").setValue(t.daemon_default),this.configForm.get("services").setValue(t.services),this.response.value&&this.response.value.forEach(t=>{let e=null;e="true"===t.value||"false"!==t.value&&t.value,this.configForm.get("values").get(t.section).setValue(e)}),this.availSections.forEach(t=>{this.configForm.get("values").get(t).setValidators(e)});const n=xl.getType(t.type);this.type=n.name,this.inputType=n.inputType,this.humanReadableType=n.humanReadable}createRequest(){const t=[];if(this.availSections.forEach(e=>{const n=this.configForm.getValue(e);null!==n&&""!==n&&t.push({section:e,value:n})}),!X.isEqual(this.response.value,t)){const e=new kd;return e.name=this.configForm.getValue("name"),e.value=t,e}return null}submit(){const t=this.createRequest();t&&this.configService.create(t).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n("Updated config option {{name}}",{name:t.name})),this.router.navigate(["/configuration"])},()=>{this.configForm.setErrors({cdSubmitButton:!0})}),this.router.navigate(["/configuration"])}}var Ld=s["ɵcrt"]({encapsulation:0,styles:[[".form-component-badge[_ngcontent-%COMP%]{height:34px;display:block}.form-component-badge[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{margin-top:7px}.resize-vertical[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function Dd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"textarea",[["class","form-control resize-vertical"],["formControlName","desc"],["id","desc"],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](10,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "]))],(function(t,e){t(e,1,0),t(e,10,0,"desc"),t(e,13,0,"desc")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Pd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Long description"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"textarea",[["class","form-control resize-vertical"],["formControlName","long_desc"],["id","long_desc"],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](10,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "]))],(function(t,e){t(e,1,0),t(e,10,0,"long_desc"),t(e,13,0,"long_desc")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Md(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Default"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","default"],["id","default"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,9)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](11,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,11,0,"default"),t(e,14,0,"default")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function qd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemon default"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","daemon_default"],["id","daemon_default"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,9)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](11,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,11,0,"daemon_default"),t(e,14,0,"daemon_default")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function jd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[["class","form-component-badge"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function Fd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Services"])),(t()(),s["ɵeld"](6,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,jd)),s["ɵdid"](8,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,8,0,n.configForm.getValue("services"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess)}))}function Vd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,0,20,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,19,"select",[["class","form-control custom-select"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](11,671744,[[13,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](15,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](16,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](17,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Default --"])),(t()(),s["ɵeld"](19,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](20,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](21,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["true"])),(t()(),s["ɵeld"](23,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](24,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](25,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["false"]))],(function(t,e){t(e,1,0),t(e,11,0,e.parent.context.$implicit),t(e,14,0,e.parent.context.$implicit),t(e,16,0,null),t(e,17,0,null),t(e,20,0,!0),t(e,21,0,!0),t(e,24,0,!1),t(e,25,0,!1)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit),t(e,5,0,e.parent.context.$implicit),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function Gd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.patternHelpText)}))}function Bd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.patternHelpText)}))}function zd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.component.maxValue)}))}function Yd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.component.minValue)}))}function Hd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"placeholder",0],[8,"step",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,9)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](11,671744,[[15,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gd)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bd)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zd)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yd)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,11,0,e.parent.context.$implicit),t(e,14,0,e.parent.context.$implicit),t(e,16,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"pattern")),t(e,18,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"invalidUuid")),t(e,20,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"max")),t(e,22,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit),t(e,5,0,e.parent.context.$implicit),t(e,7,1,[n.inputType,e.parent.context.$implicit,n.humanReadableType,n.getStep(n.type,n.configForm.getValue(e.parent.context.$implicit)),s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass])}))}function Ud(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Vd)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hd)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,"bool"===n.type),t(e,4,0,"bool"!==n.type)}),null)}function Wd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,53,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,52,"form",[["name","configForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,46,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Edit"])),(t()(),s["ɵted"](11,null,[" "," "])),(t()(),s["ɵeld"](12,0,null,null,33,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](14,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](19,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,7,"input",[["class","form-control"],["formControlName","name"],["id","name"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,22)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,22).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,22)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,22)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](24,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](26,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dd)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pd)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Md)),s["ɵdid"](33,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qd)),s["ɵdid"](35,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fd)),s["ɵdid"](37,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](38,0,null,null,7,"div",[["formGroupName","values"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](39,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](41,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](42,0,null,null,1,"h3",[["class","cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Values"])),(t()(),s["ɵand"](16777216,null,null,1,null,Ud)),s["ɵdid"](45,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](46,0,null,null,7,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](47,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](49,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](50,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Save"])),(t()(),s["ɵeld"](52,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](53,49152,null,0,Js.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,6,0,n.configForm),t(e,14,0),t(e,24,0,"name"),t(e,27,0,"name"),t(e,29,0,n.configForm.getValue("desc")),t(e,31,0,n.configForm.getValue("long_desc")),t(e,33,0,""!==n.configForm.getValue("default")),t(e,35,0,""!==n.configForm.getValue("daemon_default")),t(e,37,0,n.configForm.getValue("services").length>0),t(e,39,0,"values"),t(e,45,0,n.availSections),t(e,49,0,s["ɵnov"](e,3))}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,11,0,n.configForm.getValue("name")),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,20,0,s["ɵnov"](e,26).ngClassUntouched,s["ɵnov"](e,26).ngClassTouched,s["ɵnov"](e,26).ngClassPristine,s["ɵnov"](e,26).ngClassDirty,s["ɵnov"](e,26).ngClassValid,s["ɵnov"](e,26).ngClassInvalid,s["ɵnov"](e,26).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass),t(e,38,0,s["ɵnov"](e,41).ngClassUntouched,s["ɵnov"](e,41).ngClassTouched,s["ɵnov"](e,41).ngClassPristine,s["ɵnov"](e,41).ngClassDirty,s["ɵnov"](e,41).ngClassValid,s["ɵnov"](e,41).ngClassInvalid,s["ɵnov"](e,41).ngClassPending)}))}function Kd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-configuration-form",[],null,null,null,Wd,Ld)),s["ɵdid"](1,114688,null,0,Ed,[Et.a,Et.m,vl.a,bt.a,Xt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var $d=s["ɵccf"]("cd-configuration-form",Ed,Kd,{},{},[]),Jd=n("LOMR"),Zd=n("MP8s"),Qd=n("fxL3"),Xd=n("gk6K"),tc=n("mrSG"),ec=n("yYhs");class nc{constructor(t){this.healthService=t,this.icons=pt.a,this.loadingIndicator=!0,this.nodes=[],this.treeOptions={useVirtualScroll:!0,nodeHeight:22,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}},this.metadataKeyMap={}}ngOnInit(){this.healthService.getFullHealth().subscribe(t=>{this.loadingIndicator=!1,this.nodes=this.abstractTreeData(t)})}abstractTreeData(t){const e=t.osd_map.tree.nodes||[],n={};if(0===e.length)return[{name:"No nodes!"}];const a=[];return e.reverse().forEach(t=>{"root"===t.type&&a.push(t.id),n[t.id]=this.generateTreeLeaf(t,n)}),a.map(t=>n[t])}generateTreeLeaf(t,e){const n=t.id;this.metadataKeyMap[n]=t;const a=[],r={name:t.name+" ("+t.type+")",status:t.status,cdId:n,type:t.type};return t.children&&(t.children.sort().forEach(t=>{a.push(e[t])}),r.children=a),r}onNodeSelected(t,e){if(ec.a.ACTIVATE(t,e,!0),void 0!==e.data.cdId){const t=this.metadataKeyMap[e.data.cdId],{name:n,type:a}=t,r=tc.__rest(t,["name","type","status"]);this.metadata=r,this.metadataTitle=n+" ("+a+")"}else delete this.metadata,delete this.metadataTitle}onUpdateData(){this.tree.treeModel.expandAll()}}var ac=s["ɵcrt"]({encapsulation:0,styles:[[".tree-container[_ngcontent-%COMP%]{height:calc(100vh - 200px)}"]],data:{}});function rc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](3,3)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.large,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function ic(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[["class","badge"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](3,2),s["ɵpad"](4,3),s["ɵpod"](5,{"badge-success":0,"badge-danger":1}),(t()(),s["ɵted"](6,null,[" "," "]))],(function(t,e){var n=t(e,5,0,t(e,3,0,"in","up").includes(e.parent.context.$implicit.data.status),t(e,4,0,"down","out","destroyed").includes(e.parent.context.$implicit.data.status));t(e,2,0,"badge",n)}),(function(t,e){t(e,6,0,e.parent.context.$implicit.data.status)}))}function sc(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ic)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "])),(t()(),s["ɵeld"](4,0,null,null,3,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{"type-osd":0})],(function(t,e){t(e,1,0,e.context.$implicit.data.status);var n=t(e,7,0,"osd"===e.context.$implicit.data.type);t(e,6,0,"node-name",n)}),(function(t,e){t(e,4,0,e.context.$implicit.data.name)}))}function uc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[["class","col-sm-6 col-lg-6 metadata"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),(t()(),s["ɵeld"](3,0,null,null,1,"cd-table-key-value",[],null,null,null,Ci.b,Ci.a)),s["ɵdid"](4,638976,null,0,Ri.a,[ze.a],{data:[0,"data"]},null)],(function(t,e){t(e,4,0,e.component.metadata)}),(function(t,e){t(e,2,0,e.component.metadataTitle)}))}function oc(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tree:0}),(t()(),s["ɵeld"](1,0,null,null,19,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,18,"div",[["class","col-sm-12 col-lg-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,17,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CRUSH map viewer"])),(t()(),s["ɵeld"](6,0,null,null,14,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,10,"div",[["class","col-sm-6 col-lg-6 tree-container"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,rc)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](11,0,null,null,7,"tree-root",[],null,[[null,"updateData"],["body","keydown"],["body","mousedown"]],(function(t,e,n){var a=!0,r=t.component;return"body:keydown"===e&&(a=!1!==s["ɵnov"](t,13).onKeydown(n)&&a),"body:mousedown"===e&&(a=!1!==s["ɵnov"](t,13).onMousedown(n)&&a),"updateData"===e&&(a=!1!==r.onUpdateData()&&a),a}),Jd.b,Jd.a)),s["ɵprd"](131584,null,Zd.a,Zd.a,[]),s["ɵdid"](13,573440,[[1,4],["tree",4]],4,Qd.a,[Zd.a,Xd.a],{nodes:[0,"nodes"],options:[1,"options"]},{updateData:"updateData"}),s["ɵqud"](603979776,2,{loadingTemplate:0}),s["ɵqud"](603979776,3,{treeNodeTemplate:0}),s["ɵqud"](603979776,4,{treeNodeWrapperTemplate:0}),s["ɵqud"](603979776,5,{treeNodeFullTemplate:0}),(t()(),s["ɵand"](0,[[3,2],["treeNodeTemplate",2]],null,0,null,sc)),(t()(),s["ɵand"](16777216,null,null,1,null,uc)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,10,0,n.loadingIndicator),t(e,13,0,n.nodes,n.treeOptions),t(e,20,0,n.metadata)}),null)}function lc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-crushmap",[],null,null,null,oc,ac)),s["ɵdid"](1,114688,null,0,nc,[Wa],null,null)],(function(t,e){t(e,1,0)}),null)}var dc=s["ɵccf"]("cd-crushmap",nc,lc,{},{},[]),cc=n("AfCQ");let fc=(()=>{class t{writeValue(e){return{type:t.WRITE_VALUE,payload:e}}changeHours(e){return{type:t.CHANGE_HOURS,payload:e}}changeMinutes(e){return{type:t.CHANGE_MINUTES,payload:e}}changeSeconds(e){return{type:t.CHANGE_SECONDS,payload:e}}setTime(e){return{type:t.SET_TIME_UNIT,payload:e}}updateControls(e){return{type:t.UPDATE_CONTROLS,payload:e}}}return t.WRITE_VALUE="[timepicker] write value from ng model",t.CHANGE_HOURS="[timepicker] change hours",t.CHANGE_MINUTES="[timepicker] change minutes",t.CHANGE_SECONDS="[timepicker] change seconds",t.SET_TIME_UNIT="[timepicker] set time unit",t.UPDATE_CONTROLS="[timepicker] update controls",t})();function hc(t){return!!t&&!(t instanceof Date&&isNaN(t.getHours()))&&("string"!=typeof t||hc(new Date(t)))}function gc(t,e){return!(t.min&&e<t.min||t.max&&e>t.max)}function pc(t){return"number"==typeof t?t:parseInt(t,10)}function bc(t,e=!1){const n=pc(t);return isNaN(n)||n<0||n>(e?12:24)?NaN:n}function mc(t){const e=pc(t);return isNaN(e)||e<0||e>60?NaN:e}function yc(t){const e=pc(t);return isNaN(e)||e<0||e>60?NaN:e}function vc(t){return"string"==typeof t?new Date(t):t}function xc(t,e){if(!t)return xc(Tc(new Date,0,0,0),e);let n=t.getHours(),a=t.getMinutes(),r=t.getSeconds();return e.hour&&(n+=pc(e.hour)),e.minute&&(a+=pc(e.minute)),e.seconds&&(r+=pc(e.seconds)),Tc(t,n,a,r)}function _c(t,e){let n=bc(e.hour);const a=mc(e.minute),r=yc(e.seconds)||0;return e.isPM&&12!==n&&(n+=12),t?isNaN(n)||isNaN(a)?t:Tc(t,n,a,r):isNaN(n)||isNaN(a)?t:Tc(new Date,n,a,r)}function Tc(t,e,n,a){const r=new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,n,a,t.getMilliseconds());return r.setFullYear(t.getFullYear()),r.setMonth(t.getMonth()),r.setDate(t.getDate()),r}function wc(t){const e=t.toString();return e.length>1?e:"0"+e}function Oc(t,e){return!isNaN(bc(t,e))}function Sc(t){return!isNaN(mc(t))}function Ic(t){return!isNaN(yc(t))}function Nc(t,e="0",n="0",a){return Oc(t,a)&&Sc(e)&&Ic(n)}function Cc(t,e){if(t.readonlyInput||t.disabled)return!1;if(e){if("wheel"===e.source&&!t.mousewheel)return!1;if("key"===e.source&&!t.arrowkeys)return!1}return!0}function Rc(t){const{hourStep:e,minuteStep:n,secondsStep:a,readonlyInput:r,disabled:i,mousewheel:s,arrowkeys:u,showSpinners:o,showMeridian:l,showSeconds:d,meridians:c,min:f,max:h}=t;return{hourStep:e,minuteStep:n,secondsStep:a,readonlyInput:r,disabled:i,mousewheel:s,arrowkeys:u,showSpinners:o,showMeridian:l,showSeconds:d,meridians:c,min:f,max:h}}class Ac{constructor(){this.hourStep=1,this.minuteStep=5,this.secondsStep=10,this.showMeridian=!0,this.meridians=["AM","PM"],this.readonlyInput=!1,this.disabled=!1,this.mousewheel=!0,this.arrowkeys=!0,this.showSpinners=!0,this.showSeconds=!1,this.showMinutes=!0,this.hoursPlaceholder="HH",this.minutesPlaceholder="MM",this.secondsPlaceholder="SS",this.ariaLabelHours="hours",this.ariaLabelMinutes="minutes",this.ariaLabelSeconds="seconds"}}const kc={value:null,config:new Ac,controls:{canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0}};function Ec(t=kc,e){switch(e.type){case fc.WRITE_VALUE:return Object.assign({},t,{value:e.payload});case fc.CHANGE_HOURS:{if(!Cc(t.config,e.payload)||(a=t.controls,!(n=e.payload).step||n.step>0&&!a.canIncrementHours||n.step<0&&!a.canDecrementHours))return t;const r=xc(t.value,{hour:e.payload.step});return!t.config.max&&!t.config.min||gc(t.config,r)?Object.assign({},t,{value:r}):t}case fc.CHANGE_MINUTES:{if(!Cc(t.config,e.payload)||!function(t,e){return!(!t.step||t.step>0&&!e.canIncrementMinutes||t.step<0&&!e.canDecrementMinutes)}(e.payload,t.controls))return t;const n=xc(t.value,{minute:e.payload.step});return!t.config.max&&!t.config.min||gc(t.config,n)?Object.assign({},t,{value:n}):t}case fc.CHANGE_SECONDS:{if(!Cc(t.config,e.payload)||!function(t,e){return!(!t.step||t.step>0&&!e.canIncrementSeconds||t.step<0&&!e.canDecrementSeconds)}(e.payload,t.controls))return t;const n=xc(t.value,{seconds:e.payload.step});return!t.config.max&&!t.config.min||gc(t.config,n)?Object.assign({},t,{value:n}):t}case fc.SET_TIME_UNIT:{if(!Cc(t.config))return t;const n=_c(t.value,e.payload);return Object.assign({},t,{value:n})}case fc.UPDATE_CONTROLS:{const n=function(t,e){const{min:n,max:a,hourStep:r,minuteStep:i,secondsStep:s,showSeconds:u}=e,o={canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0};if(!t)return o;if(a){const e=xc(t,{hour:r});if(o.canIncrementHours=a>e,!o.canIncrementHours){const e=xc(t,{minute:i});o.canIncrementMinutes=u?a>e:a>=e}if(!o.canIncrementMinutes){const e=xc(t,{seconds:s});o.canIncrementSeconds=a>=e}t.getHours()<12&&(o.canToggleMeridian=xc(t,{hour:12})<a)}if(n){const e=xc(t,{hour:-r});if(o.canDecrementHours=n<e,!o.canDecrementHours){const e=xc(t,{minute:-i});o.canDecrementMinutes=u?n<e:n<=e}if(!o.canDecrementMinutes){const e=xc(t,{seconds:-s});o.canDecrementSeconds=n<=e}t.getHours()>=12&&(o.canToggleMeridian=xc(t,{hour:-12})>n)}return o}(t.value,e.payload),a={value:t.value,config:e.payload,controls:n};return t.config.showMeridian!==a.config.showMeridian&&t.value&&(a.value=new Date(t.value)),Object.assign({},t,a)}default:return t}var n,a}class Lc extends cc.b{constructor(){const t=new ye.a({type:"[mini-ngrx] dispatcher init"});super(t,Ec,new cc.a(kc,t,Ec))}}class Dc{constructor(t,e,n,a){this._cd=e,this._store=n,this._timepickerActions=a,this.isValid=new s.EventEmitter,this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1,this.onChange=Function.prototype,this.onTouched=Function.prototype,Object.assign(this,t),this.timepickerSub=n.select(t=>t.value).subscribe(t=>{this._renderTime(t),this.onChange(t),this._store.dispatch(this._timepickerActions.updateControls(Rc(this)))}),n.select(t=>t.controls).subscribe(t=>{this.isValid.emit(Nc(this.hours,this.minutes,this.seconds,this.isPM())),Object.assign(this,t),e.markForCheck()})}get isSpinnersVisible(){return this.showSpinners&&!this.readonlyInput}get isEditable(){return!(this.readonlyInput||this.disabled)}resetValidation(){this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1}isPM(){return this.showMeridian&&this.meridian===this.meridians[1]}prevDef(t){t.preventDefault()}wheelSign(t){return-1*Math.sign(t.deltaY)}ngOnChanges(t){this._store.dispatch(this._timepickerActions.updateControls(Rc(this)))}changeHours(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeHours({step:t,source:e}))}changeMinutes(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeMinutes({step:t,source:e}))}changeSeconds(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeSeconds({step:t,source:e}))}updateHours(t){if(this.resetValidation(),this.hours=t,!Oc(this.hours,this.isPM())||!this.isValidLimit())return this.invalidHours=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}updateMinutes(t){if(this.resetValidation(),this.minutes=t,!Sc(this.minutes)||!this.isValidLimit())return this.invalidMinutes=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}updateSeconds(t){if(this.resetValidation(),this.seconds=t,!Ic(this.seconds)||!this.isValidLimit())return this.invalidSeconds=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}isValidLimit(){return function(t,e,n){const a=_c(new Date,t);return!(e&&a>e||n&&a<n)}({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()},this.max,this.min)}_updateTime(){if(!Nc(this.hours,this.showMinutes?this.minutes:void 0,this.showSeconds?this.seconds:void 0,this.isPM()))return this.isValid.emit(!1),void this.onChange(null);this._store.dispatch(this._timepickerActions.setTime({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()}))}toggleMeridian(){this.showMeridian&&this.isEditable&&this._store.dispatch(this._timepickerActions.changeHours({step:12,source:""}))}writeValue(t){hc(t)?this._store.dispatch(this._timepickerActions.writeValue(vc(t))):null==t&&this._store.dispatch(this._timepickerActions.writeValue(null))}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.disabled=t,this._cd.markForCheck()}ngOnDestroy(){this.timepickerSub.unsubscribe()}_renderTime(t){if(!hc(t))return this.hours="",this.minutes="",this.seconds="",void(this.meridian=this.meridians[0]);const e=vc(t);let n=e.getHours();this.showMeridian&&(this.meridian=this.meridians[n>=12?1:0],n%=12,0===n&&(n=12)),this.hours=wc(n),this.minutes=wc(e.getMinutes()),this.seconds=wc(e.getUTCSeconds())}}class Pc{static forRoot(){return{ngModule:Pc,providers:[Ac,fc,Lc]}}}var Mc=s["ɵcrt"]({encapsulation:2,styles:["\n    .bs-chevron {\n      border-style: solid;\n      display: block;\n      width: 9px;\n      height: 9px;\n      position: relative;\n      border-width: 3px 0px 0 3px;\n    }\n\n    .bs-chevron-up {\n      -webkit-transform: rotate(45deg);\n      transform: rotate(45deg);\n      top: 2px;\n    }\n\n    .bs-chevron-down {\n      -webkit-transform: rotate(-135deg);\n      transform: rotate(-135deg);\n      top: -2px;\n    }\n\n    .bs-timepicker-field {\n      width: 50px;\n      padding: .375rem .55rem;\n    }\n  "],data:{}});function qc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function jc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeMinutes(r.minuteStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canIncrementMinutes||!n.isEditable)}))}function Fc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "]))],null,null)}function Vc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeSeconds(r.secondsStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canIncrementSeconds||!n.isEditable)}))}function Gc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function Bc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function zc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" : "]))],null,null)}function Yc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeMinutes(r.minuteStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeMinutes(r.minuteStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeMinutes(0-r.minuteStep,"key")&&a),"change"===e&&(a=!1!==r.updateMinutes(n.target.value)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.invalidMinutes),t(e,1,0,n.invalidMinutes,n.minutesPlaceholder,n.readonlyInput,n.disabled,n.minutes,n.labelMinutes)}))}function Hc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" : "]))],null,null)}function Uc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeSeconds(r.secondsStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeSeconds(r.secondsStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeSeconds(0-r.secondsStep,"key")&&a),"change"===e&&(a=!1!==r.updateSeconds(n.target.value)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.invalidSeconds),t(e,1,0,n.invalidSeconds,n.secondsPlaceholder,n.readonlyInput,n.disabled,n.seconds,n.labelSeconds)}))}function Wc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function Kc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-default text-center"],["type","button"]],[[8,"disabled",0],[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleMeridian()&&a),a}),null,null)),(t()(),s["ɵted"](2,null,[""," "]))],null,(function(t,e){var n=e.component;t(e,1,0,!n.isEditable||!n.canToggleMeridian,!n.isEditable||!n.canToggleMeridian),t(e,2,0,n.meridian)}))}function $c(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function Jc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeMinutes(0-r.minuteStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canDecrementMinutes||!n.isEditable)}))}function Zc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "]))],null,null)}function Qc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeSeconds(0-r.secondsStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canDecrementSeconds||!n.isEditable)}))}function Xc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function tf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function ef(t){return s["ɵvid"](2,[(t()(),s["ɵeld"](0,0,null,null,48,"table",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,47,"tbody",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeHours(r.hourStep)&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,qc)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jc)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fc)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vc)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gc)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bc)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,14,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeHours(r.hourStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeHours(r.hourStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeHours(0-r.hourStep,"key")&&a),"change"===e&&(a=!1!==r.updateHours(n.target.value)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,zc)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yc)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hc)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Uc)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wc)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kc)),s["ɵdid"](32,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](33,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),s["ɵeld"](34,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeHours(0-r.hourStep)&&a),a}),null,null)),(t()(),s["ɵeld"](36,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,$c)),s["ɵdid"](38,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jc)),s["ɵdid"](40,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zc)),s["ɵdid"](42,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qc)),s["ɵdid"](44,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xc)),s["ɵdid"](46,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tf)),s["ɵdid"](48,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,7,0,n.showMinutes),t(e,9,0,n.showMinutes),t(e,11,0,n.showSeconds),t(e,13,0,n.showSeconds),t(e,15,0,n.showMeridian),t(e,17,0,n.showMeridian),t(e,22,0,n.showMinutes),t(e,24,0,n.showMinutes),t(e,26,0,n.showSeconds),t(e,28,0,n.showSeconds),t(e,30,0,n.showMeridian),t(e,32,0,n.showMeridian),t(e,38,0,n.showMinutes),t(e,40,0,n.showMinutes),t(e,42,0,n.showSeconds),t(e,44,0,n.showSeconds),t(e,46,0,n.showMeridian),t(e,48,0,n.showMeridian)}),(function(t,e){var n=e.component;t(e,2,0,!n.showSpinners),t(e,4,0,!n.canIncrementHours||!n.isEditable),t(e,19,0,n.invalidHours),t(e,20,0,n.invalidHours,n.hoursPlaceholder,n.readonlyInput,n.disabled,n.hours,n.labelHours),t(e,33,0,!n.showSpinners),t(e,35,0,!n.canDecrementHours||!n.isEditable)}))}var nf=n("E2fk");let af=(()=>{class t{constructor(t){this.http=t}getLogs(){return this.http.get("api/logs/all")}validateDashboardUrl(t){return this.http.get("api/grafana/validation/"+t)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t})();class rf{constructor(t,e,n){this.logsService=t,this.datePipe=e,this.ngZone=n,this.icons=pt.a,this.bsConfig={dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default"},this.prioritys=[{name:"Info",value:"[INF]"},{name:"Warning",value:"[WRN]"},{name:"Error",value:"[ERR]"},{name:"All",value:"All"}],this.priority="All",this.search="",this.startTime=new Date,this.endTime=new Date,this.startTime.setHours(0,0),this.endTime.setHours(23,59)}ngOnInit(){this.getInfo(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.getInfo()})},5e3)})}ngOnDestroy(){clearInterval(this.interval)}getInfo(){this.logsService.getLogs().subscribe(t=>{this.contentData=t,this.filterLogs()})}abstractfilters(){const t=this.priority,e=this.search.toLowerCase().replace(/,/g,"");let n;if(this.selectedDate){const t=this.selectedDate.getMonth()+1,e=this.selectedDate.getDate();n=`${this.selectedDate.getFullYear().toString()}-${t<=9?"0"+t:""+t}-${e<=9?"0"+e:""+e}`}else n="";return{priority:t,key:e,yearMonthDay:n,sTime:60*(this.startTime?this.startTime.getHours():0)+(this.startTime?this.startTime.getMinutes():0),eTime:60*(this.endTime?this.endTime.getHours():23)+(this.endTime?this.endTime.getMinutes():59)}}filterExecutor(t,e){return t.filter(t=>{const n=this.datePipe.transform(t.stamp,"mediumTime"),a=parseInt(n.split(":")[0],10),r=parseInt(n.split(":")[1],10);let i,s,u;return i="All"===e.priority?t.priority:e.priority,s=e.yearMonthDay?e.yearMonthDay:t.stamp,u=60*a+r,t.priority===i&&-1!==t.message.toLowerCase().indexOf(e.key)&&-1!==t.stamp.indexOf(s)&&u>=e.sTime&&u<=e.eTime})}filterLogs(){const t=this.abstractfilters();this.clog=this.filterExecutor(this.contentData.clog,t),this.audit_log=this.filterExecutor(this.contentData.audit_log,t)}clearSearchKey(){this.search="",this.filterLogs()}clearDate(){this.selectedDate=null,this.filterLogs()}}var sf=s["ɵcrt"]({encapsulation:0,styles:[["p[_ngcontent-%COMP%]{font-family:monospace}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{display:flex}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.card[_ngcontent-%COMP%]   .timestamp[_ngcontent-%COMP%]{font-weight:700;flex-shrink:0}.card[_ngcontent-%COMP%]   .priority[_ngcontent-%COMP%]{margin-left:.5rem}.card[_ngcontent-%COMP%]   .message[_ngcontent-%COMP%]{margin-left:1rem}.card[_ngcontent-%COMP%]   .err[_ngcontent-%COMP%]{color:#a94442}.card[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{color:#ffc200}.card[_ngcontent-%COMP%]   .info[_ngcontent-%COMP%]{color:#2b99a8}  timepicker table tbody tr td input.bs-timepicker-field{width:3.5rem!important;font-size:1rem;padding:4px 6px}.middle[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function uf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function of(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),s["ɵppd"](3,1),(t()(),s["ɵeld"](4,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),s["ɵppd"](5,1),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""]))],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.stamp));t(e,2,0,n);var a=s["ɵinlineInterpolate"](1,"priority ",s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent,1),e.context.$implicit.priority)),"");t(e,4,0,a),t(e,6,0,e.context.$implicit.priority),t(e,8,0,e.context.$implicit.message)}))}function lf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["No entries found"]))],null,null)}function df(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","card bg-light mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,of)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lf)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.clog),t(e,5,0,0===n.contentData.clog.length)}),null)}function cf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),s["ɵppd"](3,1),(t()(),s["ɵeld"](4,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),s["ɵppd"](5,1),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""]))],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.stamp));t(e,2,0,n);var a=s["ɵinlineInterpolate"](1,"priority ",s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent,1),e.context.$implicit.priority)),"");t(e,4,0,a),t(e,6,0,e.context.$implicit.priority),t(e,8,0,e.context.$implicit.message)}))}function ff(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["No entries found"]))],null,null)}function hf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","card bg-light mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,cf)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ff)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.audit_log),t(e,5,0,0===n.contentData.audit_log.length)}),null)}function gf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,uf)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](3,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](4,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](5,0,null,0,3,"tab",[["heading","Cluster Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](6,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,df)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,0,3,"tab",[["heading","Audit Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](10,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hf)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,s["ɵnov"](e.parent,4)),t(e,6,0,"Cluster Logs"),t(e,8,0,n.clog),t(e,10,0,"Audit Logs"),t(e,12,0,n.audit_log)}),(function(t,e){t(e,3,0,s["ɵnov"](e,4).clazz),t(e,5,0,s["ɵnov"](e,6).id,s["ɵnov"](e,6).active,s["ɵnov"](e,6).addClass,s["ɵnov"](e,6).role,s["ɵnov"](e,6).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby)}))}function pf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function bf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,84,"div",[["class","form-inline"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Priority:"])),(t()(),s["ɵeld"](7,0,null,0,9,"select",[["class","form-control custom-select"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"ngModelChange"===e&&(a=!1!==(r.priority=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](11,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,pf)),s["ɵdid"](16,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](17,0,null,null,23,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](18,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](21,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Keyword:"])),(t()(),s["ɵeld"](23,0,null,0,17,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,5,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),s["ɵeld"](25,0,null,null,4,"span",[["class","input-group-text"]],null,null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](28,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](29,1),(t()(),s["ɵeld"](30,0,null,null,7,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,32)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,32).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,32)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,32)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.search=n)&&a),"keyup"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](31,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](32,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](34,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](36,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](37,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵeld"](38,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](39,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.clearSearchKey()&&a),a}),null,null)),(t()(),s["ɵeld"](40,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](41,0,null,null,20,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](42,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](45,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Date:"])),(t()(),s["ɵeld"](47,0,null,0,14,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](48,16777216,null,null,10,"input",[["bsDatepicker",""],["class","form-control"],["placeholder","Datepicker"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,50)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,50).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,50)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,50)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,52).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,52).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,52).onBlur()&&a),"ngModelChange"===e&&(a=!1!==(r.selectedDate=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](49,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](50,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](51,737280,null,0,st.c,[st.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](52,16384,null,0,st.f,[st.c,st.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[st.f]),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,st.f]),s["ɵdid"](55,671744,null,0,K.u,[[8,null],[6,K.o],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](57,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](58,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵeld"](59,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](60,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.clearDate()&&a),a}),null,null)),(t()(),s["ɵeld"](61,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](62,0,null,null,22,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](63,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](66,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Time range:"])),(t()(),s["ɵeld"](68,0,null,0,16,"div",[["class","d-inline-flex"]],null,null,null,null,null)),(t()(),s["ɵeld"](69,0,null,null,6,"timepicker",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"]],(function(t,e,n){var a=!0,r=t.component;return"ngModelChange"===e&&(a=!1!==(r.startTime=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),ef,Mc)),s["ɵprd"](512,null,Lc,Lc,[]),s["ɵdid"](71,704512,null,0,Dc,[Ac,s.ChangeDetectorRef,Lc,fc],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[Dc]),s["ɵdid"](73,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](75,16384,null,0,K.r,[[4,K.q]],null,null),(t()(),s["ɵeld"](76,0,null,null,1,"span",[["class","middle"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" — "])),(t()(),s["ɵeld"](78,0,null,null,6,"timepicker",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"]],(function(t,e,n){var a=!0,r=t.component;return"ngModelChange"===e&&(a=!1!==(r.endTime=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),ef,Mc)),s["ɵprd"](512,null,Lc,Lc,[]),s["ɵdid"](80,704512,null,0,Dc,[Ac,s.ChangeDetectorRef,Lc,fc],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[Dc]),s["ɵdid"](82,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](84,16384,null,0,K.r,[[4,K.q]],null,null)],(function(t,e){var n=e.component;t(e,2,0),t(e,11,0,n.priority),t(e,16,0,n.prioritys),t(e,18,0);var a=t(e,29,0,n.icons.search);t(e,28,0,a),t(e,34,0,n.search),t(e,42,0),t(e,51,0,n.bsConfig),t(e,55,0,n.selectedDate),t(e,63,0),t(e,71,0,1,!1,!1),t(e,73,0,n.startTime),t(e,80,0,1,!1,!1),t(e,82,0,n.endTime)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass),t(e,17,0,s["ɵnov"](e,18).hasErrors,s["ɵnov"](e,18).hasSuccess),t(e,30,0,s["ɵnov"](e,36).ngClassUntouched,s["ɵnov"](e,36).ngClassTouched,s["ɵnov"](e,36).ngClassPristine,s["ɵnov"](e,36).ngClassDirty,s["ɵnov"](e,36).ngClassValid,s["ɵnov"](e,36).ngClassInvalid,s["ɵnov"](e,36).ngClassPending,s["ɵnov"](e,37).validClass,s["ɵnov"](e,37).invalidClass),t(e,40,0,s["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,"")),t(e,41,0,s["ɵnov"](e,42).hasErrors,s["ɵnov"](e,42).hasSuccess),t(e,48,0,s["ɵnov"](e,57).ngClassUntouched,s["ɵnov"](e,57).ngClassTouched,s["ɵnov"](e,57).ngClassPristine,s["ɵnov"](e,57).ngClassDirty,s["ɵnov"](e,57).ngClassValid,s["ɵnov"](e,57).ngClassInvalid,s["ɵnov"](e,57).ngClassPending,s["ɵnov"](e,58).validClass,s["ɵnov"](e,58).invalidClass),t(e,61,0,s["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,"")),t(e,62,0,s["ɵnov"](e,63).hasErrors,s["ɵnov"](e,63).hasSuccess),t(e,69,0,s["ɵnov"](e,75).ngClassUntouched,s["ɵnov"](e,75).ngClassTouched,s["ɵnov"](e,75).ngClassPristine,s["ɵnov"](e,75).ngClassDirty,s["ɵnov"](e,75).ngClassValid,s["ɵnov"](e,75).ngClassInvalid,s["ɵnov"](e,75).ngClassPending),t(e,78,0,s["ɵnov"](e,84).ngClassUntouched,s["ɵnov"](e,84).ngClassTouched,s["ɵnov"](e,84).ngClassPristine,s["ɵnov"](e,84).ngClassDirty,s["ɵnov"](e,84).ngClassValid,s["ɵnov"](e,84).ngClassInvalid,s["ɵnov"](e,84).ngClassPending)}))}function mf(t){return s["ɵvid"](0,[s["ɵpid"](0,ze.a,[i.DatePipe]),s["ɵpid"](0,nf.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,gf)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["logFiltersTpl",2]],null,0,null,bf))],(function(t,e){t(e,3,0,e.component.contentData)}),null)}function yf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-logs",[],null,null,null,mf,sf)),s["ɵdid"](1,245760,null,0,rf,[af,i.DatePipe,s.NgZone],null,null)],(function(t,e){t(e,1,0)}),null)}var vf=s["ɵccf"]("cd-logs",rf,yf,{},{},[]);let xf=(()=>{class t{constructor(t,e,n,a,r,i,s,u){this.formBuilder=t,this.mgrModuleService=e,this.notificationService=n,this.router=a,this.telemetryService=r,this.i18n=i,this.textToDownloadService=s,this.telemetryNotificationService=u,this.error=!1,this.licenseAgrmt=!1,this.loading=!1,this.options={},this.newConfig={},this.configResp={},this.requiredFields=["channel_basic","channel_crash","channel_device","channel_ident","interval","proxy","contact","description","organization"],this.contactInfofields=["contact","description","organization"],this.report=void 0,this.reportId=void 0,this.sendToUrl="",this.sendToDeviceUrl="",this.step=1}ngOnInit(){this.loading=!0;const t=[this.mgrModuleService.getOptions("telemetry"),this.mgrModuleService.getConfig("telemetry")];Object(pl.a)(t).subscribe(t=>{const e=t[1];this.moduleEnabled=e.enabled,this.sendToUrl=e.url,this.sendToDeviceUrl=e.device_url,this.showContactInfo=e.channel_ident,this.options=X.pick(t[0],this.requiredFields),this.configResp=X.pick(e,this.requiredFields),this.createConfigForm(),this.configForm.setValue(this.configResp),this.loading=!1},t=>{this.error=!0})}createConfigForm(){const t={};X.forEach(Object.values(this.options),e=>{t[e.name]=[e.default_value,this.getValidators(e)]}),this.configForm=this.formBuilder.group(t)}createPreviewForm(){const t={report:JSON.stringify(this.report,null,2),reportId:this.reportId,licenseAgrmt:[this.licenseAgrmt,K.B.requiredTrue]};this.previewForm=this.formBuilder.group(t)}getValidators(t){const e=[];switch(t.type){case"int":e.push(Xs.a.number()),e.push(K.B.required),X.isNumber(t.min)&&e.push(K.B.min(t.min)),X.isNumber(t.max)&&e.push(K.B.max(t.max));break;case"str":X.isNumber(t.min)&&e.push(K.B.minLength(t.min)),X.isNumber(t.max)&&e.push(K.B.maxLength(t.max))}return e}updateReportFromConfig(t={}){const e=this.report.report.channels_available,n=[];for(const a of e)t["channel_"+a]&&n.push(a);this.report.report.channels=n;for(const a of this.contactInfofields)this.report.report[a]=t[a]}getReport(){this.loading=!0,this.telemetryService.getReport().subscribe(t=>{this.report=t,this.reportId=t.report.report_id,this.updateReportFromConfig(this.newConfig),this.createPreviewForm(),this.loading=!1,this.step++},t=>{this.error=!0})}toggleIdent(){this.showContactInfo=!this.showContactInfo}buildReport(){this.newConfig={};for(const t of Object.values(this.options)){const e=this.configForm.get(t.name);if(!e.valid)return void this.configForm.setErrors({cdSubmitButton:!0});this.newConfig[t.name]=e.value}if(!this.newConfig.channel_ident)for(const t of this.contactInfofields)this.newConfig[t]="";this.getReport()}download(t,e){this.textToDownloadService.download(JSON.stringify(t,null,2),e)}disableModule(t=null,e=null){this.telemetryService.enable(!1).subscribe(()=>{this.telemetryNotificationService.setVisibility(!0),t&&this.notificationService.show(de.a.success,t),e?e():this.router.navigate([""])})}next(){this.buildReport()}back(){this.step--}getChangedConfig(){const t={};return X.forEach(this.requiredFields,e=>{X.isEqual(this.configResp[e],this.newConfig[e])||(t[e]=this.newConfig[e])}),t}onSubmit(){const t=this.getChangedConfig(),e=[this.telemetryService.enable(),this.mgrModuleService.updateConfig("telemetry",t)];Object(pl.a)(e).subscribe(()=>{this.telemetryNotificationService.setVisibility(!1),this.notificationService.show(de.a.success,this.i18n("The Telemetry module has been configured and activated successfully."))},()=>{this.telemetryNotificationService.setVisibility(!1),this.notificationService.show(de.a.error,this.i18n("An Error occurred while updating the Telemetry module configuration.             Please Try again")),this.previewForm.setErrors({cdSubmitButton:!0})},()=>{this.newConfig={},this.router.navigate([""])})}}return tc.__decorate([E(),tc.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t})(),_f=(()=>{class t{constructor(t){this.http=t,this.url="api/telemetry"}getReport(){return this.http.get(this.url+"/report")}enable(t=!0){const e={enable:t};return t&&(e.license_name="sharing-1-0"),this.http.put(""+this.url,e)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t})();var Tf=n("Iab2");let wf=(()=>{class t{constructor(){}download(t,e){Object(Tf.saveAs)(new Blob([t]),e)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();var Of=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Sf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,49152,null,0,ki.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading configuration..."]))],null,null)}function If(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The configuration could not be loaded."]))],(function(t,e){t(e,1,0,"error")}),null)}function Nf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" The plugin is already "])),(t()(),s["ɵeld"](2,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["enabled"])),(t()(),s["ɵted"](-1,null,[". Click "])),(t()(),s["ɵeld"](5,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Deactivate"])),(t()(),s["ɵted"](-1,null,[" to disable it.  "])),(t()(),s["ɵeld"](8,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.disableModule("The Telemetry module has been disabled successfully.")&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Deactivate"]))],null,null)}function Cf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,51,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"legend",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact Information"])),(t()(),s["ɵeld"](4,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](5,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](-1,0,["Submitting any contact information is completely optional and disabled by default."])),(t()(),s["ɵeld"](7,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](8,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](11,0,null,0,1,"label",[["class","cd-col-form-label"],["for","contact"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact"])),(t()(),s["ɵeld"](13,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,7,"input",[["class","form-control"],["formControlName","contact"],["id","contact"],["placeholder","Example User <user@example.com>"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,16)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,16)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,16)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](15,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](16,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](18,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](20,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](21,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](22,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](23,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](26,0,null,0,1,"label",[["class","cd-col-form-label"],["for","description"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](28,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](29,0,null,null,7,"input",[["class","form-control"],["formControlName","description"],["id","description"],["placeholder","My first Ceph cluster"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,31)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,31).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,31)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,31)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](30,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](31,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](33,671744,[[11,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](35,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](36,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](37,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](38,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](41,0,null,0,1,"label",[["class","cd-col-form-label"],["for","organization"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Organization"])),(t()(),s["ɵeld"](43,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,7,"input",[["class","form-control"],["formControlName","organization"],["id","organization"],["placeholder","Organization name"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,46)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,46).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,46)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,46)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](45,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](46,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](48,671744,[[13,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](50,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](51,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,8,0),t(e,18,0,"contact"),t(e,21,0,"contact"),t(e,23,0),t(e,33,0,"description"),t(e,36,0,"description"),t(e,38,0),t(e,48,0,"organization"),t(e,51,0,"organization")}),(function(t,e){t(e,7,0,s["ɵnov"](e,8).hasErrors,s["ɵnov"](e,8).hasSuccess),t(e,14,0,s["ɵnov"](e,20).ngClassUntouched,s["ɵnov"](e,20).ngClassTouched,s["ɵnov"](e,20).ngClassPristine,s["ɵnov"](e,20).ngClassDirty,s["ɵnov"](e,20).ngClassValid,s["ɵnov"](e,20).ngClassInvalid,s["ɵnov"](e,20).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass),t(e,22,0,s["ɵnov"](e,23).hasErrors,s["ɵnov"](e,23).hasSuccess),t(e,29,0,s["ɵnov"](e,35).ngClassUntouched,s["ɵnov"](e,35).ngClassTouched,s["ɵnov"](e,35).ngClassPristine,s["ɵnov"](e,35).ngClassDirty,s["ɵnov"](e,35).ngClassValid,s["ɵnov"](e,35).ngClassInvalid,s["ɵnov"](e,35).ngClassPending,s["ɵnov"](e,36).validClass,s["ɵnov"](e,36).invalidClass),t(e,37,0,s["ɵnov"](e,38).hasErrors,s["ɵnov"](e,38).hasSuccess),t(e,44,0,s["ɵnov"](e,50).ngClassUntouched,s["ɵnov"](e,50).ngClassTouched,s["ɵnov"](e,50).ngClassPristine,s["ɵnov"](e,50).ngClassDirty,s["ɵnov"](e,50).ngClassValid,s["ɵnov"](e,50).ngClassInvalid,s["ɵnov"](e,50).ngClassPending,s["ɵnov"](e,51).validClass,s["ɵnov"](e,51).invalidClass)}))}function Rf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value is too low! It must be greater or equal to 8."]))],null,null)}function Af(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,198,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,197,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,191,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["Step "," of 2: Telemetry report configuration"])),(t()(),s["ɵeld"](10,0,null,null,183,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,12,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The telemetry module sends anonymous data about this Ceph cluster back to the Ceph developers to help understand how Ceph is used and what problems users may be experiencing."])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" This data is visualized on "])),(t()(),s["ɵeld"](15,0,null,null,1,"a",[["href","https://telemetry-public.ceph.com/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["public dashboards"])),(t()(),s["ɵted"](-1,null,[" that allow the community to quickly see summary statistics on how many clusters are reporting, their total capacity and OSD count, and version distribution trends."])),(t()(),s["ɵeld"](18,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" The data being reported does "])),(t()(),s["ɵeld"](21,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["not"])),(t()(),s["ɵted"](23,null,[" contain any sensitive data like pool names, object names, object contents, hostnames, or device serial numbers. It contains counters and statistics on how the cluster has been deployed, the version of Ceph, the distribution of the hosts and other parameters which help the project to gain a better understanding of the way Ceph is used. The data is sent secured to "," and "," (device report)."])),(t()(),s["ɵand"](16777216,null,null,1,null,Nf)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Channels"])),(t()(),s["ɵeld"](28,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,['The telemetry report is broken down into several "channels", each with a different type of information that can be configured below.'])),(t()(),s["ɵeld"](30,0,null,null,32,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](31,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](34,0,null,0,17,"label",[["class","cd-col-form-label"],["for","channel_basic"]],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Basic"])),(t()(),s["ɵeld"](37,0,null,null,14,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](38,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](39,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes basic information about the cluster:"])),(t()(),s["ɵeld"](41,0,null,0,10,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](42,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Capacity of the cluster"])),(t()(),s["ɵeld"](44,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Number of monitors, managers, OSDs, MDSs, object gateways, or other daemons"])),(t()(),s["ɵeld"](46,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Software version currently being used"])),(t()(),s["ɵeld"](48,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Number and types of RADOS pools and CephFS file systems"])),(t()(),s["ɵeld"](50,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Names of configuration options that have been changed from their default (but not their values)"])),(t()(),s["ɵeld"](52,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](54,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","channel_basic"],["id","channel_basic"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,56).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,56).onTouched()&&a),a}),null,null)),s["ɵdid"](55,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](56,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](58,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](60,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](61,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](62,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_basic"]],null,null,null,null,null)),(t()(),s["ɵeld"](63,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](64,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](67,0,null,0,15,"label",[["class","cd-col-form-label"],["for","channel_crash"]],null,null,null,null,null)),(t()(),s["ɵeld"](68,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Crash"])),(t()(),s["ɵeld"](70,0,null,null,12,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](71,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](72,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes information about daemon crashes:"])),(t()(),s["ɵeld"](74,0,null,0,8,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type of daemon"])),(t()(),s["ɵeld"](77,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Version of the daemon"])),(t()(),s["ɵeld"](79,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Operating system (OS distribution, kernel version)"])),(t()(),s["ɵeld"](81,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Stack trace identifying where in the Ceph code the crash occurred"])),(t()(),s["ɵeld"](83,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](84,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](85,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","channel_crash"],["id","channel_crash"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,87).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,87).onTouched()&&a),a}),null,null)),s["ɵdid"](86,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](87,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](89,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](91,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](92,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](93,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_crash"]],null,null,null,null,null)),(t()(),s["ɵeld"](94,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](95,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](98,0,null,0,4,"label",[["class","cd-col-form-label"],["for","channel_device"]],null,null,null,null,null)),(t()(),s["ɵeld"](99,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Device"])),(t()(),s["ɵeld"](101,0,null,null,1,"cd-helper",[["html","Includes information about device metrics like anonymized SMART metrics."]],null,null,null,Ku.b,Ku.a)),s["ɵdid"](102,49152,null,0,$u.a,[],{html:[0,"html"]},null),(t()(),s["ɵeld"](103,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](104,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](105,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","channel_device"],["id","channel_device"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,107).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,107).onTouched()&&a),a}),null,null)),s["ɵdid"](106,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](107,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](109,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](111,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](112,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](113,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_device"]],null,null,null,null,null)),(t()(),s["ɵeld"](114,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](115,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](118,0,null,0,11,"label",[["class","cd-col-form-label"],["for","channel_ident"]],null,null,null,null,null)),(t()(),s["ɵeld"](119,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ident"])),(t()(),s["ɵeld"](121,0,null,null,8,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](122,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](123,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes user-provided identifying information about the cluster:"])),(t()(),s["ɵeld"](125,0,null,0,4,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](126,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster description"])),(t()(),s["ɵeld"](128,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact email address"])),(t()(),s["ɵeld"](130,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](131,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](132,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","channel_ident"],["id","channel_ident"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"click"],[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,134).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,134).onTouched()&&a),"click"===e&&(a=!1!==r.toggleIdent()&&a),a}),null,null)),s["ɵdid"](133,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](134,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](136,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](138,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](139,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](140,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_ident"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Cf)),s["ɵdid"](142,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](143,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Advanced Settings"])),(t()(),s["ɵeld"](145,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](146,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](149,0,null,0,5,"label",[["class","cd-col-form-label"],["for","interval"]],null,null,null,null,null)),(t()(),s["ɵeld"](150,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Interval"])),(t()(),s["ɵeld"](152,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](153,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](-1,0,["The module compiles and sends a new report every 24 hours by default. You can adjust this interval by setting a different number of hours."])),(t()(),s["ɵeld"](155,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](156,0,null,null,8,"input",[["class","form-control"],["formControlName","interval"],["id","interval"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,158)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,158).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,158)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,158)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,159).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,159).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,159).onTouched()&&a),a}),null,null)),s["ɵdid"](157,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](158,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](159,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](161,671744,[[15,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](163,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](164,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rf)),s["ɵdid"](166,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](167,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](168,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,17,{FormControlNames:1}),s["ɵqud"](603979776,18,{messagesBlock:0}),(t()(),s["ɵeld"](171,0,null,0,8,"label",[["class","cd-col-form-label"],["for","proxy"]],null,null,null,null,null)),(t()(),s["ɵeld"](172,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Proxy"])),(t()(),s["ɵeld"](174,0,null,null,5,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](175,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](176,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["If the cluster cannot directly connect to the configured telemetry endpoint (default telemetry.ceph.com), you can configure a HTTP/HTTPS proxy server by e.g. adding https://10.0.0.1:8080"])),(t()(),s["ɵeld"](178,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You can also include a user:pass if needed e.g. https://ceph:telemetry@10.0.0.1:8080"])),(t()(),s["ɵeld"](180,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](181,0,null,null,7,"input",[["class","form-control"],["formControlName","proxy"],["id","proxy"],["placeholder","https://10.0.0.1:8080"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,183)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,183).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,183)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,183)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](182,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](183,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](185,671744,[[17,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](187,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](188,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](189,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](190,0,null,null,3,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](191,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Note:"])),(t()(),s["ɵted"](-1,null,[" By clicking 'Next' you will first see a preview of the report content before you can activate the automatic submission of your data."])),(t()(),s["ɵeld"](194,0,null,null,4,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](195,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](196,0,null,null,2,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.next()&&a),a}),null,null)),(t()(),s["ɵeld"](197,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Next"]))],(function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,6,0,n.configForm),t(e,25,0,n.moduleEnabled),t(e,31,0),t(e,58,0,"channel_basic"),t(e,61,0,"channel_basic"),t(e,64,0),t(e,89,0,"channel_crash"),t(e,92,0,"channel_crash"),t(e,95,0),t(e,102,0,"Includes information about device metrics like anonymized SMART metrics."),t(e,109,0,"channel_device"),t(e,112,0,"channel_device"),t(e,115,0),t(e,136,0,"channel_ident"),t(e,139,0,"channel_ident"),t(e,142,0,n.showContactInfo),t(e,146,0),t(e,161,0,"interval"),t(e,164,0,"interval"),t(e,166,0,n.configForm.showError("interval",s["ɵnov"](e,3),"min")),t(e,168,0),t(e,185,0,"proxy"),t(e,188,0,"proxy")}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,9,0,n.step),t(e,23,0,n.sendToUrl,n.sendToDeviceUrl),t(e,30,0,s["ɵnov"](e,31).hasErrors,s["ɵnov"](e,31).hasSuccess),t(e,54,0,s["ɵnov"](e,60).ngClassUntouched,s["ɵnov"](e,60).ngClassTouched,s["ɵnov"](e,60).ngClassPristine,s["ɵnov"](e,60).ngClassDirty,s["ɵnov"](e,60).ngClassValid,s["ɵnov"](e,60).ngClassInvalid,s["ɵnov"](e,60).ngClassPending,s["ɵnov"](e,61).validClass,s["ɵnov"](e,61).invalidClass),t(e,63,0,s["ɵnov"](e,64).hasErrors,s["ɵnov"](e,64).hasSuccess),t(e,85,0,s["ɵnov"](e,91).ngClassUntouched,s["ɵnov"](e,91).ngClassTouched,s["ɵnov"](e,91).ngClassPristine,s["ɵnov"](e,91).ngClassDirty,s["ɵnov"](e,91).ngClassValid,s["ɵnov"](e,91).ngClassInvalid,s["ɵnov"](e,91).ngClassPending,s["ɵnov"](e,92).validClass,s["ɵnov"](e,92).invalidClass),t(e,94,0,s["ɵnov"](e,95).hasErrors,s["ɵnov"](e,95).hasSuccess),t(e,105,0,s["ɵnov"](e,111).ngClassUntouched,s["ɵnov"](e,111).ngClassTouched,s["ɵnov"](e,111).ngClassPristine,s["ɵnov"](e,111).ngClassDirty,s["ɵnov"](e,111).ngClassValid,s["ɵnov"](e,111).ngClassInvalid,s["ɵnov"](e,111).ngClassPending,s["ɵnov"](e,112).validClass,s["ɵnov"](e,112).invalidClass),t(e,114,0,s["ɵnov"](e,115).hasErrors,s["ɵnov"](e,115).hasSuccess),t(e,132,0,s["ɵnov"](e,138).ngClassUntouched,s["ɵnov"](e,138).ngClassTouched,s["ɵnov"](e,138).ngClassPristine,s["ɵnov"](e,138).ngClassDirty,s["ɵnov"](e,138).ngClassValid,s["ɵnov"](e,138).ngClassInvalid,s["ɵnov"](e,138).ngClassPending,s["ɵnov"](e,139).validClass,s["ɵnov"](e,139).invalidClass),t(e,145,0,s["ɵnov"](e,146).hasErrors,s["ɵnov"](e,146).hasSuccess),t(e,156,0,s["ɵnov"](e,163).ngClassUntouched,s["ɵnov"](e,163).ngClassTouched,s["ɵnov"](e,163).ngClassPristine,s["ɵnov"](e,163).ngClassDirty,s["ɵnov"](e,163).ngClassValid,s["ɵnov"](e,163).ngClassInvalid,s["ɵnov"](e,163).ngClassPending,s["ɵnov"](e,164).validClass,s["ɵnov"](e,164).invalidClass),t(e,167,0,s["ɵnov"](e,168).hasErrors,s["ɵnov"](e,168).hasSuccess),t(e,181,0,s["ɵnov"](e,187).ngClassUntouched,s["ɵnov"](e,187).ngClassTouched,s["ɵnov"](e,187).ngClassPristine,s["ɵnov"](e,187).ngClassDirty,s["ɵnov"](e,187).ngClassValid,s["ɵnov"](e,187).ngClassInvalid,s["ɵnov"](e,187).ngClassPending,s["ɵnov"](e,188).validClass,s["ɵnov"](e,188).invalidClass)}))}function kf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,79,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,78,"form",[["name","previewForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,72,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["Step "," of 2: Telemetry report preview"])),(t()(),s["ɵeld"](10,0,null,null,61,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](12,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,19,{FormControlNames:1}),s["ɵqud"](603979776,20,{messagesBlock:0}),(t()(),s["ɵeld"](15,0,null,0,3,"label",[["class","cd-col-form-label"],["for","reportId"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Report ID "])),(t()(),s["ɵeld"](17,0,null,null,1,"cd-helper",[["html","A randomized UUID to identify a particular cluster over the course of several telemetry reports."]],null,null,null,Ku.b,Ku.a)),s["ɵdid"](18,49152,null,0,$u.a,[],{html:[0,"html"]},null),(t()(),s["ɵeld"](19,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,7,"input",[["class","form-control"],["formControlName","reportId"],["id","reportId"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,22)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,22).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,22)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,22)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](24,671744,[[19,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](26,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](28,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](29,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,21,{FormControlNames:1}),s["ɵqud"](603979776,22,{messagesBlock:0}),(t()(),s["ɵeld"](32,0,null,0,3,"label",[["class","cd-col-form-label"],["for","report"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Report preview "])),(t()(),s["ɵeld"](34,0,null,null,1,"cd-helper",[["html","The actual telemetry data that will be submitted."]],null,null,null,Ku.b,Ku.a)),s["ɵdid"](35,49152,null,0,$u.a,[],{html:[0,"html"]},null),(t()(),s["ɵeld"](36,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](37,0,null,null,6,"textarea",[["class","form-control"],["formControlName","report"],["id","report"],["readonly",""],["rows","15"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,38)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,38).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,38)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,38)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](38,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](40,671744,[[21,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](42,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](43,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](44,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](45,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,23,{FormControlNames:1}),s["ɵqud"](603979776,24,{messagesBlock:0}),(t()(),s["ɵeld"](48,0,null,0,4,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,1,"button",[["class","btn btn-light mr-2"],["title","Download"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.download(r.report,"telemetry_report.json")&&a),a}),null,null)),(t()(),s["ɵeld"](50,0,null,null,0,"i",[["class","fa fa-download"]],null,null,null,null,null)),(t()(),s["ɵeld"](51,0,null,null,1,"button",[["cdCopy2ClipboardButton","report"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,52).onClick()&&a),a}),null,null)),s["ɵdid"](52,81920,null,0,Zu.a,[s.ElementRef,s.Renderer2,d.j,Xt.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(t()(),s["ɵeld"](53,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](54,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,25,{FormControlNames:1}),s["ɵqud"](603979776,26,{messagesBlock:0}),(t()(),s["ɵeld"](57,0,null,0,14,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](58,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","licenseAgrmt"],["id","licenseAgrmt"],["name","licenseAgrmt"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,61).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,61).onTouched()&&a),a}),null,null)),s["ɵdid"](60,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](61,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](63,671744,[[25,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](65,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](66,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](67,0,null,null,4,"label",[["class","custom-control-label"],["for","licenseAgrmt"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["I agree to my telemetry data being submitted under the Community Data License Agreement - Sharing - Version 1.0 ("])),(t()(),s["ɵeld"](69,0,null,null,1,"a",[["href","https://cdla.io/sharing-1-0/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["https://cdla.io/sharing-1-0/"])),(t()(),s["ɵted"](-1,null,[")"])),(t()(),s["ɵeld"](72,0,null,null,7,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](73,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](74,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](75,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](76,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Save"])),(t()(),s["ɵeld"](78,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.back()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){var n=e.component;t(e,3,0,n.previewForm),t(e,6,0,n.previewForm),t(e,12,0),t(e,18,0,"A randomized UUID to identify a particular cluster over the course of several telemetry reports."),t(e,24,0,"reportId"),t(e,27,0,"reportId"),t(e,29,0),t(e,35,0,"The actual telemetry data that will be submitted."),t(e,40,0,"report"),t(e,43,0,"report"),t(e,45,0),t(e,52,0,"report"),t(e,54,0),t(e,63,0,"licenseAgrmt"),t(e,66,0,"licenseAgrmt"),t(e,75,0,n.previewForm)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,9,0,n.step),t(e,11,0,s["ɵnov"](e,12).hasErrors,s["ɵnov"](e,12).hasSuccess),t(e,20,0,s["ɵnov"](e,26).ngClassUntouched,s["ɵnov"](e,26).ngClassTouched,s["ɵnov"](e,26).ngClassPristine,s["ɵnov"](e,26).ngClassDirty,s["ɵnov"](e,26).ngClassValid,s["ɵnov"](e,26).ngClassInvalid,s["ɵnov"](e,26).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass),t(e,28,0,s["ɵnov"](e,29).hasErrors,s["ɵnov"](e,29).hasSuccess),t(e,37,0,s["ɵnov"](e,42).ngClassUntouched,s["ɵnov"](e,42).ngClassTouched,s["ɵnov"](e,42).ngClassPristine,s["ɵnov"](e,42).ngClassDirty,s["ɵnov"](e,42).ngClassValid,s["ɵnov"](e,42).ngClassInvalid,s["ɵnov"](e,42).ngClassPending,s["ɵnov"](e,43).validClass,s["ɵnov"](e,43).invalidClass),t(e,44,0,s["ɵnov"](e,45).hasErrors,s["ɵnov"](e,45).hasSuccess),t(e,53,0,s["ɵnov"](e,54).hasErrors,s["ɵnov"](e,54).hasSuccess),t(e,59,0,s["ɵnov"](e,65).ngClassUntouched,s["ɵnov"](e,65).ngClassTouched,s["ɵnov"](e,65).ngClassPristine,s["ɵnov"](e,65).ngClassDirty,s["ɵnov"](e,65).ngClassValid,s["ɵnov"](e,65).ngClassInvalid,s["ɵnov"](e,65).ngClassPending,s["ɵnov"](e,66).validClass,s["ɵnov"](e,66).invalidClass)}))}function Ef(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](2,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Af)),s["ɵdid"](4,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kf)),s["ɵdid"](6,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null)],(function(t,e){t(e,2,0,e.component.step),t(e,4,0,1),t(e,6,0,2)}),null)}function Lf(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Sf)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,If)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ef)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.loading&&!n.error),t(e,3,0,n.loading&&n.error),t(e,5,0,!n.loading&&!n.error)}),null)}function Df(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-telemetry",[],null,null,null,Lf,Of)),s["ɵdid"](1,114688,null,0,xf,[to.a,le,bt.a,Et.m,_f,Xt.a,wf,ce],null,null)],(function(t,e){t(e,1,0)}),null)}var Pf=s["ɵccf"]("cd-telemetry",xf,Df,{},{},[]);const Mf=new Os.a("silence");class qf extends Ss.a{constructor(t,e,n,a,r){super(),this.authStorageService=t,this.prometheusAlertService=e,this.urlBuilder=n,this.i18n=a,this.cdDatePipe=r,this.selection=new ui.a,this.icons=pt.a,this.customCss={"badge badge-danger":"active","badge badge-warning":"unprocessed","badge badge-info":"suppressed"},this.permission=this.authStorageService.getPermissions().prometheus,this.tableActions=[{permission:"create",canBePrimary:t=>t.hasSingleSelection,disable:t=>!t.hasSingleSelection||t.first().cdExecuting,icon:pt.a.add,routerLink:()=>"/monitoring"+this.urlBuilder.getCreateFrom(this.selection.first().fingerprint),name:this.i18n("Create Silence")}]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"labels.alertname",flexGrow:2},{name:this.i18n("Job"),prop:"labels.job",flexGrow:2},{name:this.i18n("Severity"),prop:"labels.severity"},{name:this.i18n("State"),prop:"status.state",cellTransformation:si.a.classAdding},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("URL"),prop:"generatorURL",sortable:!1,cellTemplate:this.externalLinkTpl}]}updateSelection(t){this.selection=t}}var jf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ff(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,Ci.b,Ci.a)),s["ɵdid"](1,638976,null,0,Ri.a,[ze.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],appendParentKey:[3,"appendParentKey"],hideEmpty:[4,"hideEmpty"],customCss:[5,"customCss"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!1,!0,!1,!0,n.customCss)}),null)}function Vf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](4,1),(t()(),s["ɵted"](-1,null,[" Source"]))],(function(t,e){var n=t(e,4,0,e.component.icons.lineChart);t(e,3,0,n)}),(function(t,e){t(e,0,0,e.context.value)}))}function Gf(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{externalLinkTpl:0}),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["identifier","fingerprint"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](2,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"],customCss:[6,"customCss"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](4,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](16777216,null,3,1,null,Ff)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["externalLinkTpl",2]],null,0,null,Vf))],(function(t,e){var n=e.component;t(e,2,0,n.prometheusAlertService.alerts,n.columns,!0,"fingerprint",!0,"single",n.customCss),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.expandedRow)}),null)}class Bf extends Ss.a{constructor(t){super(),this.i18n=t,this.hideKeys=["alerts","type"]}ngOnInit(){this.columns=[{prop:"name",name:this.i18n("Name")},{prop:"labels.severity",name:this.i18n("Severity")},{prop:"group",name:this.i18n("Group")},{prop:"duration",name:this.i18n("Duration"),pipe:new Be},{prop:"query",name:this.i18n("Query"),isHidden:!0},{prop:"annotations.description",name:this.i18n("Description")}]}}var zf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Yf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,Ci.b,Ci.a)),s["ɵdid"](1,638976,null,0,Ri.a,[ze.a],{data:[0,"data"],renderObjects:[1,"renderObjects"],hideKeys:[2,"hideKeys"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!0,n.hideKeys)}),null)}function Hf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-table",[],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.setExpandedRow(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](1,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵand"](16777216,null,3,1,null,Yf)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.data,n.columns,!0,"single"),t(e,3,0,n.expandedRow)}),null)}var Uf=n("w9WL");const Wf=new Os.a("monitoring/silence");class Kf extends Ss.a{constructor(t,e,n,a,r,i,s,u,o){super(),this.authStorageService=t,this.i18n=e,this.cdDatePipe=n,this.prometheusService=a,this.modalService=r,this.notificationService=i,this.urlBuilder=s,this.actionLabels=u,this.succeededLabels=o,this.silences=[],this.selection=new ui.a,this.customCss={"badge badge-danger":"active","badge badge-warning":"pending","badge badge-default":"expired"},this.sorts=[{prop:"endsAt",dir:Uf.A.desc}],this.permission=this.authStorageService.getPermissions().prometheus;const l=t=>t.first()&&t.first().status&&"expired"===t.first().status.state;this.tableActions=[{permission:"create",icon:pt.a.add,routerLink:()=>this.urlBuilder.getCreate(),preserveFragment:!0,canBePrimary:t=>!t.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"create",canBePrimary:t=>t.hasSingleSelection&&l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&l(t)||!l(t),icon:pt.a.copy,routerLink:()=>this.urlBuilder.getRecreate(this.selection.first().id),preserveFragment:!0,name:this.actionLabels.RECREATE},{permission:"update",icon:pt.a.edit,canBePrimary:t=>t.hasSingleSelection&&!l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&!l(t)||l(t),routerLink:()=>this.urlBuilder.getEdit(this.selection.first().id),preserveFragment:!0,name:this.actionLabels.EDIT},{permission:"delete",icon:pt.a.trash,canBePrimary:t=>t.hasSingleSelection&&!l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||l(t),click:()=>this.expireSilence(),name:this.actionLabels.EXPIRE}],this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:3},{name:this.i18n("Created by"),prop:"createdBy",flexGrow:2},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("Updated"),prop:"updatedAt",pipe:this.cdDatePipe},{name:this.i18n("Ends"),prop:"endsAt",pipe:this.cdDatePipe},{name:this.i18n("Status"),prop:"status.state",cellTransformation:si.a.classAdding}]}refresh(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getSilences().subscribe(t=>{this.silences=t},()=>{this.prometheusService.disableAlertmanagerConfig()})})}updateSelection(t){this.selection=t}expireSilence(){const t=this.selection.first().id,e=this.i18n("Silence");this.modalRef=this.modalService.show(Is.a,{initialState:{itemDescription:e,itemNames:[t],actionDescription:this.actionLabels.EXPIRE,submitActionObservable:()=>new Kn.a(n=>{this.prometheusService.expireSilence(t).subscribe(()=>{this.notificationService.show(de.a.success,`${this.succeededLabels.EXPIRED} ${e} ${t}`,void 0,void 0,"Prometheus")},t=>{t.application="Prometheus",n.error(t)},()=>{n.complete(),this.refresh()})})}})}}var $f=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Jf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,Ci.b,Ci.a)),s["ɵdid"](1,638976,null,0,Ri.a,[ze.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],appendParentKey:[3,"appendParentKey"],hideEmpty:[4,"hideEmpty"],customCss:[5,"customCss"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!1,!0,!1,!0,n.customCss)}),null)}function Zf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"fetchData"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"fetchData"===e&&(a=!1!==r.refresh()&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](1,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],sorts:[2,"sorts"],hasDetails:[3,"hasDetails"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"],customCss:[6,"customCss"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](2,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](3,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](16777216,null,3,1,null,Jf)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.silences,n.columns,n.sorts,!0,!0,"single",n.customCss),t(e,3,0,n.permission,n.selection,n.tableActions),t(e,5,0,n.expandedRow)}),null)}class Qf{constructor(t,e,n,a){this.prometheusAlertService=t,this.prometheusService=e,this.route=n,this.router=a,this.isPrometheusConfigured=!1,this.isAlertmanagerConfigured=!1}ngOnInit(){if(this.prometheusService.ifAlertmanagerConfigured(()=>{this.isAlertmanagerConfigured=!0}),this.prometheusService.ifPrometheusConfigured(()=>{this.isPrometheusConfigured=!0}),this.route.snapshot.fragment){const t=this.tabs.tabs.find(t=>t.elementRef.nativeElement.id===this.route.snapshot.fragment);t&&(t.active=!0),this.router.navigate([],{fragment:this.route.snapshot.fragment})}}setFragment(t){this.router.navigate([],{fragment:t.id})}}var Xf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function th(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-active-alert-list",[],null,null,null,Gf,jf)),s["ɵprd"](256,null,Os.a,Mf,[]),s["ɵdid"](2,114688,null,0,qf,[Z.a,Xe,Os.a,Xt.a,ze.a],null,null)],(function(t,e){t(e,2,0)}),null)}function eh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To see all active Prometheus alerts, please provide the URL to the API of Prometheus' Alertmanager as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](4,114688,null,0,ti.a,[Tt.a,Xt.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function nh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-rules-list",[],null,null,null,Hf,zf)),s["ɵdid"](1,114688,null,0,Bf,[Xt.a],{data:[0,"data"]},null)],(function(t,e){t(e,1,0,e.component.prometheusAlertService.rules)}),null)}function ah(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To see all configured Prometheus alerts, please provide the URL to the API of Prometheus as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](4,114688,null,0,ti.a,[Tt.a,Xt.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function rh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-silences-list",[],null,null,null,Zf,$f)),s["ɵprd"](256,null,Os.a,Wf,[]),s["ɵdid"](2,49152,null,0,Kf,[Z.a,Xt.a,ze.a,Ze,Ct.b,bt.a,Os.a,St.b,St.d],null,null)],null,null)}function ih(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To enable Silences, please provide the URL to the API of the Prometheus' Alertmanager as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](4,114688,null,0,ti.a,[Tt.a,Xt.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function sh(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{tabs:0}),(t()(),s["ɵeld"](1,0,null,null,19,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](2,180224,[[1,4],["tabs",4]],0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](3,0,null,0,5,"tab",[["heading","Active Alerts"],["id","active-alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](4,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,th)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,eh)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,0,5,"tab",[["heading","All Alerts"],["id","all-alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](10,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,nh)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ah)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](15,0,null,0,5,"tab",[["heading","Silences"],["id","silences"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](16,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,rh)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ih)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,"Active Alerts","active-alerts"),t(e,6,0,n.isAlertmanagerConfigured),t(e,8,0,!n.isAlertmanagerConfigured),t(e,10,0,"All Alerts","all-alerts"),t(e,12,0,n.isPrometheusConfigured),t(e,14,0,!n.isPrometheusConfigured),t(e,16,0,"Silences","silences"),t(e,18,0,n.isAlertmanagerConfigured),t(e,20,0,!n.isAlertmanagerConfigured)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).clazz),t(e,3,0,s["ɵnov"](e,4).id,s["ɵnov"](e,4).active,s["ɵnov"](e,4).addClass,s["ɵnov"](e,4).role,s["ɵnov"](e,4).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby),t(e,15,0,s["ɵnov"](e,16).id,s["ɵnov"](e,16).active,s["ɵnov"](e,16).addClass,s["ɵnov"](e,16).role,s["ɵnov"](e,16).ariaLabelledby)}))}function uh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-monitoring-list",[],null,null,null,sh,Xf)),s["ɵdid"](1,114688,null,0,Qf,[Xe,Ze,Et.a,Et.m],null,null)],(function(t,e){t(e,1,0)}),null)}var oh=s["ɵccf"]("cd-monitoring-list",Qf,uh,{},{},[]);let lh=(()=>{class t{constructor(t){this.i18n=t,this.valueAttributePath={alertname:"name",instance:"alerts.0.labels.instance",job:"alerts.0.labels.job",severity:"labels.severity"}}singleMatch(t,e){return this.multiMatch([t],e)}multiMatch(t,e){if(!t.some(t=>t.isRegex))return t.forEach(t=>{e=this.getMatchedRules(t,e)}),this.describeMatch(e)}getMatchedRules(t,e){const n=this.getAttributePath(t.name);return e.filter(e=>X.get(e,n)===t.value)}describeMatch(t){let e=0;return t.forEach(t=>e+=t.alerts.length),{status:this.getMatchText(t.length,e),cssClass:e?"has-success":"has-warning"}}getAttributePath(t){return this.valueAttributePath[t]}getMatchText(t,e){const n={noRule:this.i18n("Your matcher seems to match no currently defined rule or active alert."),noAlerts:this.i18n("no active alerts"),alert:this.i18n("1 active alert"),alerts:this.i18n("{{n}} active alerts",{n:e}),rule:this.i18n("Matches 1 rule"),rules:this.i18n("Matches {{n}} rules",{n:t})};return t?this.i18n("{{rules}} with {{alerts}}.",{rules:t>1?n.rules:n.rule,alerts:e?e>1?n.alerts:n.alert:n.noAlerts}):n.noRule}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Xt.a))},token:t,providedIn:"root"}),t})(),dh=(()=>{class t{constructor(){}calculateDuration(t,e){const n=+t,a=+e,r=this.getDuration(Math.abs(n-a));return n>a?"-"+r:r}getDuration(t){const e=new Date(t),n=e.getUTCHours(),a=e.getUTCMinutes(),r=(t,e)=>t?t+e:t;return[r(Math.floor(t/864e5),"d"),r(n,"h"),r(a,"m")].filter(t=>t).join(" ")}calculateDate(t,e,n){const a=+t;if(X.isNaN(a))return;const r=this.getDurationMs(e)*(n?-1:1);return new Date(a+r)}getDurationMs(t){return 6e4*(60*(24*this.getNumbersFromString(t,"d")+this.getNumbersFromString(t,"h"))+this.getNumbersFromString(t,"m"))}getNumbersFromString(t,e){const n=t.match(new RegExp("[0-9 ]+"+e,"i"));return n?parseInt(n[0],10):0}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();class ch{constructor(t,e,n){this.formBuilder=t,this.silenceMatcher=e,this.bsModalRef=n,this.submitAction=new s.EventEmitter,this.editMode=!1,this.nameAttributes=["alertname","instance","job","severity"],this.possibleValues=[],this.matcherMatch=void 0,this.createForm(),this.subscribeToChanges()}createForm(){this.form=this.formBuilder.group({name:[null,[K.B.required]],value:[{value:null,disabled:!0},[K.B.required]],isRegex:new K.i(!1)})}subscribeToChanges(){this.form.get("name").valueChanges.subscribe(t=>{null!==t?(this.setPossibleValues(t),this.form.get("value").enable()):this.form.get("value").disable()}),this.form.get("value").valueChanges.subscribe(t=>{const e=this.form.value;e.value=t,this.matcherMatch=this.silenceMatcher.singleMatch(e,this.rules)})}setPossibleValues(t){this.possibleValues=X.sortedUniq(this.rules.map(e=>X.get(e,this.silenceMatcher.getAttributePath(t))).filter(t=>t))}preFillControls(t){this.form.setValue(t)}onSubmit(){this.submitAction.emit(this.form.value),this.bsModalRef.hide()}}class fh{constructor(t,e,n,a,r,i,s,u,o,l,d,c){this.i18n=t,this.router=e,this.authStorageService=n,this.formBuilder=a,this.prometheusService=r,this.notificationService=i,this.route=s,this.timeDiff=u,this.bsModalService=o,this.silenceMatcher=l,this.actionLabels=d,this.succeededLabels=c,this.icons=pt.a,this.bsConfig={dateInputFormat:"YYYY-MM-DDT HH:mm"},this.recreate=!1,this.edit=!1,this.resource=this.i18n("silence"),this.matchers=[],this.matcherMatch=void 0,this.matcherConfig=[{tooltip:this.i18n("Attribute name"),icon:this.icons.paragraph,attribute:"name"},{tooltip:this.i18n("Value"),icon:this.icons.terminal,attribute:"value"},{tooltip:this.i18n("Regular expression"),icon:this.icons.magic,attribute:"isRegex"}],this.init()}init(){this.chooseMode(),this.authenticate(),this.createForm(),this.setupDates(),this.getData()}chooseMode(){this.edit=this.router.url.startsWith("/monitoring/silence/edit"),this.recreate=this.router.url.startsWith("/monitoring/silence/recreate"),this.action=this.edit?this.actionLabels.EDIT:this.recreate?this.actionLabels.RECREATE:this.actionLabels.CREATE}authenticate(){this.permission=this.authStorageService.getPermissions().prometheus,this.permission.read&&(this.edit?this.permission.update:this.permission.create)||this.router.navigate(["/404"])}createForm(){this.form=this.formBuilder.group({startsAt:[null,[K.B.required]],duration:["2h",[K.B.min(1)]],endsAt:[null,[K.B.required]],createdBy:[this.authStorageService.getUsername(),[K.B.required]],comment:[null,[K.B.required]]},{validators:Xs.a.custom("matcherRequired",()=>0===this.matchers.length)})}setupDates(){const t=new Date;t.setSeconds(0,0),this.form.silentSet("startsAt",t),this.updateDate(),this.subscribeDateChanges()}updateDate(t){const e=this.timeDiff.calculateDate(this.form.getValue(t?"endsAt":"startsAt"),this.form.getValue("duration"),t);e&&this.form.silentSet(t?"startsAt":"endsAt",e)}subscribeDateChanges(){this.form.get("startsAt").valueChanges.subscribe(()=>{this.onDateChange()}),this.form.get("duration").valueChanges.subscribe(()=>{this.updateDate()}),this.form.get("endsAt").valueChanges.subscribe(()=>{this.onDateChange(!0)})}onDateChange(t){this.form.getValue("startsAt")<this.form.getValue("endsAt")?this.updateDuration():this.updateDate(t)}updateDuration(){this.form.silentSet("duration",this.timeDiff.calculateDuration(this.form.getValue("startsAt"),this.form.getValue("endsAt")))}getData(){this.getRules(),this.getModeSpecificData()}getRules(){this.prometheusService.ifPrometheusConfigured(()=>this.prometheusService.getRules().subscribe(t=>{this.rules=t.groups.reduce((t,e)=>X.concat(t,e.rules),[])},()=>{this.prometheusService.disablePrometheusConfig(),this.rules=[]}),()=>{this.rules=[],this.notificationService.show(de.a.info,this.i18n("Please add your Prometheus host to the dashboard configuration and refresh the page"),void 0,void 0,"Prometheus")})}getModeSpecificData(){this.route.params.subscribe(t=>{t.id&&(this.edit||this.recreate?this.prometheusService.getSilences(t).subscribe(t=>{this.fillFormWithSilence(t[0])}):this.prometheusService.getAlerts(t).subscribe(t=>{this.fillFormByAlert(t[0])}))})}fillFormWithSilence(t){this.id=t.id,this.edit&&(["startsAt","endsAt"].forEach(e=>this.form.silentSet(e,new Date(t[e]))),this.updateDuration()),["createdBy","comment"].forEach(e=>this.form.silentSet(e,t[e])),this.matchers=t.matchers,this.validateMatchers()}validateMatchers(){this.rules?(this.matcherMatch=this.silenceMatcher.multiMatch(this.matchers,this.rules),this.form.markAsDirty(),this.form.updateValueAndValidity()):window.setTimeout(()=>this.validateMatchers(),100)}fillFormByAlert(t){const e=t.labels;Object.keys(e).forEach(t=>this.setMatcher({name:t,value:e[t],isRegex:!1}))}setMatcher(t,e){X.isNumber(e)?this.matchers[e]=t:this.matchers.push(t),this.validateMatchers()}showMatcherModal(t){const e=this.bsModalService.show(ch),n=e.content;n.rules=this.rules,X.isNumber(t)&&(n.editMode=!0,n.preFillControls(this.matchers[t])),e.content.submitAction.subscribe(e=>{this.setMatcher(e,t)})}deleteMatcher(t){this.matchers.splice(t,1),this.validateMatchers()}submit(){this.form.invalid||this.prometheusService.setSilence(this.getSubmitData()).subscribe(t=>{this.router.navigate(["/monitoring"],{fragment:"silences"}),this.notificationService.show(de.a.success,this.getNotificationTile(t.body.silenceId),void 0,void 0,"Prometheus")},()=>this.form.setErrors({cdSubmitButton:!0}))}getSubmitData(){const t=this.form.value;return delete t.duration,t.startsAt=t.startsAt.toISOString(),t.endsAt=t.endsAt.toISOString(),t.matchers=this.matchers,this.edit&&(t.id=this.id),t}getNotificationTile(t){let e;return e=this.edit?this.succeededLabels.EDITED:this.recreate?this.succeededLabels.RECREATED:this.succeededLabels.CREATED,`${e} ${this.resource} ${t}`}}var hh=s["ɵcrt"]({encapsulation:0,styles:[["textarea[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function gh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"input",[["class","form-control"],["disabled",""],["readonly",""],["type","text"]],[[8,"id",0],[8,"value",0],[2,"is-valid",null],[2,"is-invalid",null]],null,null,null,null)),s["ɵdid"](2,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](3,16384,null,0,Q.h,[[8,null],Q.a],null,null)],null,(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute],s["ɵnov"](e,3).validClass,s["ɵnov"](e,3).invalidClass)}))}function ph(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"div",[["class","input-group-text"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"input",[["disabled",""],["readonly",""],["type","checkbox"]],[[8,"id",0],[8,"checked",0]],null,null,null,null)),s["ɵdid"](4,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null)],null,(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute])}))}function bh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,16777216,null,null,5,"span",[["class","input-group-text"]],null,null,null,null,null)),s["ɵdid"](3,212992,null,0,ga.c,[s.ViewContainerRef,U.a,ga.a,s.ElementRef,s.Renderer2,Sa.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵand"](16777216,null,null,1,null,gh)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ph)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,3,0,e.context.$implicit.tooltip);var n=t(e,7,0,e.context.$implicit.icon);t(e,6,0,n),t(e,9,0,"isRegex"!==e.context.$implicit.attribute),t(e,11,0,"isRegex"===e.context.$implicit.attribute)}),null)}function mh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"div",[["class","input-group my-2"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,bh)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](3,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","Edit"],["type","button"]],[[8,"id",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showMatcherModal(t.context.index)&&a),a}),null,null)),s["ɵdid"](5,212992,null,0,ga.c,[s.ViewContainerRef,U.a,ga.a,s.ElementRef,s.Renderer2,Sa.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](8,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](9,1),(t()(),s["ɵeld"](10,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","Delete"],["type","button"]],[[8,"id",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.deleteMatcher(t.context.index)&&a),a}),null,null)),s["ɵdid"](11,212992,null,0,ga.c,[s.ViewContainerRef,U.a,ga.a,s.ElementRef,s.Renderer2,Sa.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,1),(t()(),s["ɵeld"](16,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,2,0,n.matcherConfig),t(e,5,0,"Edit");var a=t(e,9,0,n.icons.edit);t(e,8,0,a),t(e,11,0,"Delete");var r=t(e,15,0,n.icons.trash);t(e,14,0,r)}),(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"matcher-edit-",e.context.index,"")),t(e,10,0,s["ɵinlineInterpolate"](1,"matcher-delete-",e.context.index,""))}))}function yh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](1,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](-1,0,["Editing a silence will expire the old silence and recreate it as a new silence"]))],null,null)}function vh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function xh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function _h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Th(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function wh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Oh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"h5",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](3,{"text-warning":0,"text-danger":1}),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["A silence requires at least one matcher"]))],(function(t,e){var n=t(e,3,0,!s["ɵnov"](e.parent,6).submitted,s["ɵnov"](e.parent,6).submitted);t(e,2,0,n)}),null)}function Sh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Ih(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Sh)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](3,{index:0,matcher:1})],(function(t,e){var n=t(e,3,0,e.context.index,e.context.$implicit);t(e,2,0,n,s["ɵnov"](e.parent,2))}),null)}function Nh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵted"](2,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,s["ɵinlineInterpolate"](1,"cd-col-form-offset ",n.matcherMatch.cssClass,"")),t(e,1,0,s["ɵinlineInterpolate"](1,"text-muted ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)}))}function Ch(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Zs.a,[]),(t()(),s["ɵand"](0,[["matcherTpl",2]],null,0,null,mh)),(t()(),s["ɵeld"](3,0,null,null,141,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,140,"form",[["class","form"],["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,6).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit()&&a),a}),null,null)),s["ɵdid"](5,16384,null,0,K.G,[],null,null),s["ɵdid"](6,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](8,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](9,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](10,0,null,null,134,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](13,null,[" "," "," "])),s["ɵppd"](14,1),s["ɵppd"](15,1),(t()(),s["ɵand"](16777216,null,null,1,null,yh)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,117,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](20,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](23,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","created-by"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Creator"])),(t()(),s["ɵeld"](25,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,7,"input",[["class","form-control"],["formControlName","createdBy"],["id","created-by"],["name","created-by"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,28)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,28).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,28)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,28)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](27,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](28,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](30,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](32,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](33,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vh)),s["ɵdid"](35,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](36,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](37,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](40,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","comment"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Comment"])),(t()(),s["ɵeld"](42,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,7,"textarea",[["class","form-control"],["formControlName","comment"],["id","comment"],["name","comment"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,44)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,44).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,44)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,44)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](44,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](46,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](48,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](49,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "])),(t()(),s["ɵand"](16777216,null,null,1,null,xh)),s["ɵdid"](52,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](53,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](54,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](57,0,null,0,5,"label",[["class","cd-col-form-label"],["for","starts-at"]],null,null,null,null,null)),(t()(),s["ɵeld"](58,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Start time"])),(t()(),s["ɵeld"](60,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](61,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](-1,0,["If the start time lies in the past the creation time will be used"])),(t()(),s["ɵeld"](63,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](64,16777216,null,null,10,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","startsAt"],["id","starts-at"],["name","starts-at"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,66)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,66).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,66)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,66)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,68).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,68).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,68).onBlur()&&a),a}),null,null)),s["ɵdid"](65,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](66,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](67,737280,null,0,st.c,[st.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](68,16384,null,0,st.f,[st.c,st.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[st.f]),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,st.f]),s["ɵdid"](71,671744,[[5,4]],0,K.j,[[3,K.d],[6,K.o],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](73,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](74,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_h)),s["ɵdid"](76,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](77,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](78,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](81,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","duration"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Duration"])),(t()(),s["ɵeld"](83,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](84,0,null,null,7,"input",[["class","form-control"],["formControlName","duration"],["id","duration"],["name","duration"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,86)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,86).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,86)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,86)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](85,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](86,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](88,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](90,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](91,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Th)),s["ɵdid"](93,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](94,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](95,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](98,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","ends-at"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["End time"])),(t()(),s["ɵeld"](100,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](101,16777216,null,null,10,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","endsAt"],["id","ends-at"],["name","ends-at"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,103)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,103).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,103)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,103)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,105).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,105).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,105).onBlur()&&a),a}),null,null)),s["ɵdid"](102,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](103,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](104,737280,null,0,st.c,[st.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](105,16384,null,0,st.f,[st.c,st.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[st.f]),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,st.f]),s["ɵdid"](108,671744,[[9,4]],0,K.j,[[3,K.d],[6,K.o],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](110,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](111,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wh)),s["ɵdid"](113,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](114,0,null,null,21,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](115,0,null,null,1,"legend",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Matchers"])),(t()(),s["ɵeld"](117,0,null,null,16,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Oh)),s["ɵdid"](119,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ih)),s["ɵdid"](121,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](122,0,null,null,11,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](123,0,null,null,10,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](124,0,null,null,9,"button",[["class","btn btn-light float-right my-3"],["id","add-matcher"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showMatcherModal()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](126,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](127,{"btn-warning":0}),(t()(),s["ɵeld"](128,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](130,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](131,1),(t()(),s["ɵeld"](132,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add matcher"])),(t()(),s["ɵand"](16777216,null,null,1,null,Nh)),s["ɵdid"](135,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](136,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](137,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](138,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](139,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](140,0,[" "," "," "])),s["ɵppd"](141,1),s["ɵppd"](142,1),(t()(),s["ɵeld"](143,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](144,49152,null,0,Js.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,6,0,n.form),t(e,9,0,n.form),t(e,17,0,n.edit),t(e,20,0),t(e,30,0,"createdBy"),t(e,33,0,"createdBy"),t(e,35,0,n.form.showError("createdBy",s["ɵnov"](e,6),"required")),t(e,37,0),t(e,46,0,"comment"),t(e,49,0,"comment"),t(e,52,0,n.form.showError("comment",s["ɵnov"](e,6),"required")),t(e,54,0),t(e,67,0,n.bsConfig),t(e,71,0,"startsAt"),t(e,74,0,"startsAt"),t(e,76,0,n.form.showError("startsAt",s["ɵnov"](e,6),"required")),t(e,78,0),t(e,88,0,"duration"),t(e,91,0,"duration"),t(e,93,0,n.form.showError("duration",s["ɵnov"](e,6),"required")),t(e,95,0),t(e,104,0,n.bsConfig),t(e,108,0,"endsAt"),t(e,111,0,"endsAt"),t(e,113,0,n.form.showError("endsAt",s["ɵnov"](e,6),"required")),t(e,119,0,0===n.matchers.length),t(e,121,0,n.matchers);var a=t(e,127,0,s["ɵnov"](e,6).submitted&&0===n.matchers.length);t(e,126,0,"btn btn-light float-right my-3",a);var r=t(e,131,0,n.icons.add);t(e,130,0,r),t(e,135,0,n.matchers.length&&n.matcherMatch),t(e,139,0,s["ɵnov"](e,6))}),(function(t,e){var n=e.component;t(e,4,0,s["ɵnov"](e,8).ngClassUntouched,s["ɵnov"](e,8).ngClassTouched,s["ɵnov"](e,8).ngClassPristine,s["ɵnov"](e,8).ngClassDirty,s["ɵnov"](e,8).ngClassValid,s["ɵnov"](e,8).ngClassInvalid,s["ɵnov"](e,8).ngClassPending);var a=s["ɵunv"](e,13,0,t(e,14,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,13,1,t(e,15,0,s["ɵnov"](e,1),n.resource));t(e,13,0,a,r),t(e,19,0,s["ɵnov"](e,20).hasErrors,s["ɵnov"](e,20).hasSuccess),t(e,26,0,s["ɵnov"](e,32).ngClassUntouched,s["ɵnov"](e,32).ngClassTouched,s["ɵnov"](e,32).ngClassPristine,s["ɵnov"](e,32).ngClassDirty,s["ɵnov"](e,32).ngClassValid,s["ɵnov"](e,32).ngClassInvalid,s["ɵnov"](e,32).ngClassPending,s["ɵnov"](e,33).validClass,s["ɵnov"](e,33).invalidClass),t(e,36,0,s["ɵnov"](e,37).hasErrors,s["ɵnov"](e,37).hasSuccess),t(e,43,0,s["ɵnov"](e,48).ngClassUntouched,s["ɵnov"](e,48).ngClassTouched,s["ɵnov"](e,48).ngClassPristine,s["ɵnov"](e,48).ngClassDirty,s["ɵnov"](e,48).ngClassValid,s["ɵnov"](e,48).ngClassInvalid,s["ɵnov"](e,48).ngClassPending,s["ɵnov"](e,49).validClass,s["ɵnov"](e,49).invalidClass),t(e,53,0,s["ɵnov"](e,54).hasErrors,s["ɵnov"](e,54).hasSuccess),t(e,64,0,s["ɵnov"](e,73).ngClassUntouched,s["ɵnov"](e,73).ngClassTouched,s["ɵnov"](e,73).ngClassPristine,s["ɵnov"](e,73).ngClassDirty,s["ɵnov"](e,73).ngClassValid,s["ɵnov"](e,73).ngClassInvalid,s["ɵnov"](e,73).ngClassPending,s["ɵnov"](e,74).validClass,s["ɵnov"](e,74).invalidClass),t(e,77,0,s["ɵnov"](e,78).hasErrors,s["ɵnov"](e,78).hasSuccess),t(e,84,0,s["ɵnov"](e,90).ngClassUntouched,s["ɵnov"](e,90).ngClassTouched,s["ɵnov"](e,90).ngClassPristine,s["ɵnov"](e,90).ngClassDirty,s["ɵnov"](e,90).ngClassValid,s["ɵnov"](e,90).ngClassInvalid,s["ɵnov"](e,90).ngClassPending,s["ɵnov"](e,91).validClass,s["ɵnov"](e,91).invalidClass),t(e,94,0,s["ɵnov"](e,95).hasErrors,s["ɵnov"](e,95).hasSuccess),t(e,101,0,s["ɵnov"](e,110).ngClassUntouched,s["ɵnov"](e,110).ngClassTouched,s["ɵnov"](e,110).ngClassPristine,s["ɵnov"](e,110).ngClassDirty,s["ɵnov"](e,110).ngClassValid,s["ɵnov"](e,110).ngClassInvalid,s["ɵnov"](e,110).ngClassPending,s["ɵnov"](e,111).validClass,s["ɵnov"](e,111).invalidClass);var i=s["ɵunv"](e,140,0,t(e,141,0,s["ɵnov"](e,0),n.action)),u=s["ɵunv"](e,140,1,t(e,142,0,s["ɵnov"](e,1),n.resource));t(e,140,0,i,u)}))}function Rh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-prometheus-form",[],null,null,null,Ch,hh)),s["ɵdid"](1,49152,null,0,fh,[Xt.a,Et.m,Z.a,to.a,Ze,bt.a,Et.a,dh,Ct.b,lh,St.b,St.d],null,null)],null,null)}var Ah=s["ɵccf"]("cd-prometheus-form",fh,Rh,{},{},[]);let kh=(()=>{class t{constructor(e){this.route=e,this.route.queryParams.subscribe(e=>{this.fromLink=e.fromLink||t.defaultFromLink}),this.route.params.subscribe(t=>{this.serviceId=decodeURIComponent(t.id),this.serviceType=t.type})}}return t.defaultFromLink="/hosts",t})();var Eh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Lh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",".",""])),(t()(),s["ɵeld"](2,0,null,null,1,"cd-table-performance-counter",[],null,null,null,$o.b,$o.a)),s["ɵdid"](3,114688,null,0,Jo.a,[Zo.a,Xt.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.serviceType,n.serviceId)}),(function(t,e){var n=e.component;t(e,1,0,n.serviceType,n.serviceId)}))}function Dh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-performance-counter",[],null,null,null,Lh,Eh)),s["ɵdid"](1,49152,null,0,kh,[Et.a],null,null)],null,null)}var Ph=s["ɵccf"]("cd-performance-counter",kh,Dh,{},{},[]);class Mh{constructor(t){this.mgrModuleService=t}ngOnChanges(){this.selection&&this.mgrModuleService.getConfig(this.selection.name).subscribe(t=>{this.module_config=t})}}var qh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function jh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Ci.b,Ci.a)),s["ɵdid"](5,638976,null,0,Ri.a,[ze.a],{data:[0,"data"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.module_config)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function Fh(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,jh)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}let Vh=(()=>{class t extends Ss.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.mgrModuleService=e,this.notificationService=n,this.i18n=a,this.columns=[],this.modules=[],this.selection=new ui.a,this.permission=this.authStorageService.getPermissions().configOpt,this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Enabled"),prop:"enabled",flexGrow:1,cellClass:"text-center",cellTransformation:si.a.checkIcon},{name:this.i18n("Always-On"),prop:"always_on",flexGrow:1,cellClass:"text-center",cellTransformation:si.a.checkIcon}];const r=()=>this.selection.first()&&encodeURIComponent(this.selection.first().name);this.tableActions=[{name:this.i18n("Edit"),permission:"update",disable:()=>!this.selection.hasSelection||0===Object.values(this.selection.first().options).length,routerLink:()=>"/mgr-modules/edit/"+r(),icon:pt.a.edit},{name:this.i18n("Enable"),permission:"update",click:()=>this.updateModuleState(),disable:()=>this.isTableActionDisabled("enabled"),icon:pt.a.start},{name:this.i18n("Disable"),permission:"update",click:()=>this.updateModuleState(),disable:()=>this.getTableActionDisabledDesc(),icon:pt.a.stop}]}getModuleList(t){this.mgrModuleService.list().subscribe(t=>{this.modules=t},()=>{t.error()})}updateSelection(t){this.selection=t}isTableActionDisabled(t){if(!this.selection.hasSelection)return!0;const e=this.selection.first();if("dashboard"===e.name)return!0;if(e.always_on)return!0;switch(t){case"enabled":return e.enabled;case"disabled":return!e.enabled}}getTableActionDisabledDesc(){return this.selection&&this.selection.first().always_on?this.i18n("This Manager module is always on."):this.isTableActionDisabled("disabled")}updateModuleState(){if(!this.selection.hasSelection)return;let t;const e=()=>{Object(ci.a)(2e3).subscribe(()=>{this.mgrModuleService.list().subscribe(()=>{this.notificationService.suspendToasties(!1),this.blockUI.stop(),this.table.refreshBtn()},()=>{e()})})},n=this.selection.first();t=n.enabled?this.mgrModuleService.disable(n.name):this.mgrModuleService.enable(n.name),t.subscribe(()=>{},()=>{this.notificationService.suspendToasties(!0),this.blockUI.start(this.i18n("Reconnecting, please wait ...")),e()})}}return tc.__decorate([E(),tc.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t})();var Gh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Bh(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","module"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"],[null,"fetchData"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"fetchData"===e&&(a=!1!==r.getModuleList(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](2,2867200,[[1,4],["table",4]],0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](4,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](5,0,null,3,1,"cd-mgr-module-details",[["cdTableDetail",""]],null,null,null,Fh,qh)),s["ɵdid"](6,573440,null,0,Mh,[le],{selection:[0,"selection"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.modules,n.columns,"flex",!0,!1,"module","single"),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.expandedRow)}),null)}function zh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-mgr-module-list",[],null,null,null,Bh,Gh)),s["ɵdid"](1,49152,null,0,Vh,[Z.a,le,bt.a,Xt.a],null,null)],null,null)}var Yh=s["ɵccf"]("cd-mgr-module-list",Vh,zh,{},{},[]);class Hh{constructor(t,e,n,a,r,i){this.route=t,this.router=e,this.formBuilder=n,this.mgrModuleService=a,this.notificationService=r,this.i18n=i,this.error=!1,this.loading=!1,this.moduleName="",this.moduleOptions=[]}ngOnInit(){this.route.params.subscribe(t=>{this.moduleName=decodeURIComponent(t.name),this.loading=!0;const e=[this.mgrModuleService.getOptions(this.moduleName),this.mgrModuleService.getConfig(this.moduleName)];Object(pl.a)(e).subscribe(t=>{this.loading=!1,this.moduleOptions=t[0],this.createForm(),this.mgrModuleForm.setValue(t[1])},t=>{this.error=!0})})}getValidators(t){const e=[];switch(t.type){case"addr":e.push(Xs.a.ip());break;case"uint":case"int":case"size":case"secs":e.push(Xs.a.number()),e.push(K.B.required),X.isNumber(t.min)&&e.push(K.B.min(t.min)),X.isNumber(t.max)&&e.push(K.B.max(t.max));break;case"str":X.isNumber(t.min)&&e.push(K.B.minLength(t.min)),X.isNumber(t.max)&&e.push(K.B.maxLength(t.max));break;case"float":e.push(K.B.required),e.push(Xs.a.decimalNumber());break;case"uuid":e.push(Xs.a.uuid())}return e}createForm(){const t={};X.forEach(this.moduleOptions,e=>{t[e.name]=[e.default_value,this.getValidators(e)]}),this.mgrModuleForm=this.formBuilder.group(t)}goToListView(){this.router.navigate(["/mgr-modules"])}onSubmit(){if(this.mgrModuleForm.pristine)return void this.goToListView();const t={};X.forEach(this.moduleOptions,e=>{const n=this.mgrModuleForm.get(e.name);n.dirty&&n.valid&&(t[e.name]=n.value)}),this.mgrModuleService.updateConfig(this.moduleName,t).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n('Updated options for module "{{name}}".',{name:this.moduleName})),this.goToListView()},()=>{this.mgrModuleForm.setErrors({cdSubmitButton:!0})})}}var Uh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Wh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,49152,null,0,ki.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading configuration..."]))],null,null)}function Kh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The configuration could not be loaded."]))],(function(t,e){t(e,1,0,"error")}),null)}function $h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](1,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.parent.context.$implicit.value.long_desc||e.parent.context.$implicit.value.desc));t(e,2,0,n)}))}function Jh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,7,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](3,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](5,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](7,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](10,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],(function(t,e){t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))}),(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,9).validClass,s["ɵnov"](e,9).invalidClass),t(e,10,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))}))}function Zh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"input",[["class","form-control"],["type","text"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,1)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](3,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](5,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](6,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](7,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,7,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""))}),(function(t,e){t(e,0,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass)}))}function Qh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Xh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"select",[["class","form-control custom-select"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](3,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](5,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](6,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](7,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qh)),s["ɵdid"](9,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,7,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,9,0,e.parent.parent.context.$implicit.value.enum_allowed)}),(function(t,e){t(e,0,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass)}))}function tg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8"]))],null,null)}function eg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a valid IP address."]))],null,null)}function ng(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Zh)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xh)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tg)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,eg)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,0===e.parent.context.$implicit.value.enum_allowed.length),t(e,4,0,e.parent.context.$implicit.value.enum_allowed.length>0),t(e,6,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"invalidUuid")),t(e,8,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),null)}function ag(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function rg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must be lower or equal to ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.max)}))}function ig(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must be greater or equal to ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.min)}))}function sg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function ug(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[8,"min",0],[8,"max",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](3,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](5,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](7,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ag)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rg)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ig)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,11,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"required")),t(e,13,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"max")),t(e,15,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"min")),t(e,17,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),(function(t,e){t(e,1,1,[s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.min,""),s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.max,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,9).validClass,s["ɵnov"](e,9).invalidClass])}))}function og(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function lg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number or decimal."]))],null,null)}function dg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](3,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](5,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](7,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,og)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lg)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,11,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"required")),t(e,13,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,9).validClass,s["ɵnov"](e,9).invalidClass)}))}function cg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,3,"label",[["class","col-form-label col-sm-5"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,$h)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Jh)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,ng)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](12,3),(t()(),s["ɵand"](16777216,null,0,2,null,ug)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](15,4),(t()(),s["ɵand"](16777216,null,0,1,null,dg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0),t(e,7,0,e.context.$implicit.value.long_desc||e.context.$implicit.value.desc),t(e,9,0,"bool"===e.context.$implicit.value.type);var n=t(e,12,0,"addr","str","uuid").includes(e.context.$implicit.value.type);t(e,11,0,n);var a=t(e,15,0,"uint","int","size","secs").includes(e.context.$implicit.value.type);t(e,14,0,a),t(e,17,0,"float"===e.context.$implicit.value.type)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.value.name,"")),t(e,5,0,e.context.$implicit.value.name)}))}function fg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,21,"form",[["name","mgrModuleForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,15,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Edit Manager module"])),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,cg)),s["ɵdid"](12,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵeld"](14,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](17,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](18,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Update"])),(t()(),s["ɵeld"](20,0,null,null,2,"button",[["class","btn btn-light"],["routerLink","/mgr-modules"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,21).onClick()&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,Et.n,[Et.m,Et.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){var n=e.component;t(e,3,0,n.mgrModuleForm),t(e,6,0,n.mgrModuleForm),t(e,12,0,s["ɵunv"](e,12,0,s["ɵnov"](e,13).transform(n.moduleOptions))),t(e,17,0,n.mgrModuleForm),t(e,21,0,"/mgr-modules")}),(function(t,e){t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending)}))}function hg(t){return s["ɵvid"](0,[s["ɵpid"](0,Zs.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,Wh)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kh)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fg)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.loading&&!n.error),t(e,4,0,n.loading&&n.error),t(e,6,0,!n.loading&&!n.error)}),null)}function gg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-mgr-module-form",[],null,null,null,hg,Uh)),s["ɵdid"](1,114688,null,0,Hh,[Et.a,Et.m,to.a,le,bt.a,Xt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var pg=s["ɵccf"]("cd-mgr-module-form",Hh,gg,{},{},[]),bg=n("xTzq");let mg=(()=>{let t=class{constructor(t){this.http=t,this.baseURL="api/cephfs",this.baseUiURL="ui-api/cephfs"}list(){return this.http.get(""+this.baseURL)}lsDir(t,e){let n=`${this.baseUiURL}/${t}/ls_dir?depth=2`;return e&&(n+="&path="+encodeURIComponent(e)),this.http.get(n)}getCephfs(t){return this.http.get(`${this.baseURL}/${t}`)}getTabs(t){return this.http.get(`ui-api/cephfs/${t}/tabs`)}getClients(t){return this.http.get(`${this.baseURL}/${t}/clients`)}evictClient(t,e){return this.http.delete(`${this.baseURL}/${t}/client/${e}`)}getMdsCounters(t){return this.http.get(`${this.baseURL}/${t}/mds_counters`)}mkSnapshot(t,e,n){let a=new et.h;return a=a.append("path",e),X.isUndefined(n)||(a=a.append("name",n)),this.http.post(`${this.baseURL}/${t}/mk_snapshot`,null,{params:a})}rmSnapshot(t,e,n){let a=new et.h;return a=a.append("path",e),a=a.append("name",n),this.http.post(`${this.baseURL}/${t}/rm_snapshot`,null,{params:a})}updateQuota(t,e,n){let a=new et.h;return a=a.append("path",e),this.http.post(`${this.baseURL}/${t}/set_quotas`,n,{observe:"response",params:a})}};return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t=tc.__decorate([bg.a,tc.__metadata("design:paramtypes",[et.c])],t),t})();class yg{constructor(t,e,n,a,r,i,s,u){this.authStorageService=t,this.modalService=e,this.cephfsService=n,this.cdDatePipe=a,this.i18n=r,this.actionLabels=i,this.notificationService=s,this.dimlessBinaryPipe=u,this.icons=pt.a,this.loadingIndicator=!1,this.loading={},this.treeOptions={useVirtualScroll:!0,getChildren:t=>this.updateDirectory(t.id),actionMapping:{mouse:{click:this.selectAndShowNode.bind(this),expanderClick:this.selectAndShowNode.bind(this)}}}}selectAndShowNode(t,e,n){ec.a.TOGGLE_EXPANDED(t,e,n),this.selectNode(e)}selectNode(t){ec.a.TOGGLE_ACTIVE(void 0,t,void 0),this.selectedDir=this.getDirectory(t),"/"!==t.id&&this.setSettings(t)}ngOnInit(){this.permission=this.authStorageService.getPermissions().cephfs,this.setUpQuotaTable(),this.setUpSnapshotTable()}setUpQuotaTable(){this.quota={columns:[{prop:"row.name",name:this.i18n("Name"),flexGrow:1},{prop:"row.value",name:this.i18n("Value"),sortable:!1,flexGrow:1},{prop:"row.originPath",name:this.i18n("Origin"),sortable:!1,cellTemplate:this.originTmpl,flexGrow:1}],selection:new ui.a,updateSelection:t=>{this.quota.selection=t},tableActions:[{name:this.actionLabels.SET,icon:pt.a.edit,permission:"update",visible:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UPDATE,icon:pt.a.edit,permission:"update",visible:t=>t.first()&&t.first().dirValue>0,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UNSET,icon:pt.a.destroy,permission:"update",disable:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.unsetQuotaModal()}]}}setUpSnapshotTable(){this.snapshot={columns:[{prop:"name",name:this.i18n("Name"),flexGrow:1},{prop:"path",name:this.i18n("Path"),isHidden:!0,flexGrow:2},{prop:"created",name:this.i18n("Created"),flexGrow:1,pipe:this.cdDatePipe}],selection:new ui.a,updateSelection:t=>{this.snapshot.selection=t},tableActions:[{name:this.actionLabels.CREATE,icon:pt.a.add,permission:"create",canBePrimary:t=>!t.hasSelection,click:()=>this.createSnapshot()},{name:this.actionLabels.DELETE,icon:pt.a.destroy,permission:"delete",click:()=>this.deleteSnapshotModal(),canBePrimary:t=>t.hasSelection,disable:t=>!t.hasSelection}]}}ngOnChanges(){this.selectedDir=void 0,this.dirs=[],this.requestedPaths=[],this.nodeIds={},this.id&&(this.setRootNode(),this.firstCall())}setRootNode(){this.nodes=[{name:"/",id:"/",isExpanded:!0}]}firstCall(){setTimeout(()=>{this.getNode("/").loadNodeChildren()},10)}updateDirectory(t){if(this.unsetLoadingIndicator(),this.requestedPaths.includes(t)){if(!0===this.loading[t])return}else this.requestedPaths.push(t);return new Promise(e=>{this.setLoadingIndicator(t,!0),this.cephfsService.lsDir(this.id,t).subscribe(n=>{this.updateTreeStructure(n),this.updateQuotaTable(),this.updateTree(),e(this.getChildren(t)),this.setLoadingIndicator(t,!1)})})}setLoadingIndicator(t,e){this.loading[t]=e,this.unsetLoadingIndicator()}getSubDirectories(t,e=this.dirs){return e.filter(e=>e.parent===t)}getChildren(t){const e=this.getSubTree(t);return X.sortBy(this.getSubDirectories(t),"path").map(t=>this.createNode(t,e))}createNode(t,e){return this.nodeIds[t.path]=t,e||this.getSubTree(t.parent),{name:t.name,id:t.path,hasChildren:this.getSubDirectories(t.path,e).length>0}}getSubTree(t){return this.dirs.filter(e=>e.parent&&e.parent.startsWith(t))}setSettings(t){const e=(t,e)=>t?e?e(t):t:"";this.settings=[this.getQuota(t,"max_files",e),this.getQuota(t,"max_bytes",t=>e(t,t=>this.dimlessBinaryPipe.transform(t)))]}getQuota(t,e,n){const a=t.id;t=this.getOrigin(t,e);const r=this.getDirectory(t),i=r.quotas[e];let s=i,u=r.path;if(t.id===a)if("/"===t.parent.id)s=0;else{const n=this.getDirectory(this.getOrigin(t.parent,e));s=n.quotas[e],u=n.path}return{row:{name:this.i18n("max_bytes"===e?"Max size":"Max files"),value:n(i),originPath:i?r.path:""},quotaKey:e,dirValue:this.nodeIds[a].quotas[e],nextTreeMaximum:{value:s,path:s?u:""}}}getOrigin(t,e){if(t.parent&&"/"!==t.parent.id){const n=this.getQuotaFromTree(t,e),a=this.getOrigin(t.parent,e),r=this.getQuotaFromTree(a,e);return 0===n||0!==r&&r<n?a:t}return t}getQuotaFromTree(t,e){return this.getDirectory(t).quotas[e]}getDirectory(t){return this.nodeIds[t.id]}selectOrigin(t){this.selectNode(this.getNode(t))}getNode(t){return this.treeComponent.treeModel.getNodeById(t)}updateQuotaModal(){const t=this.selectedDir.path,e=this.quota.selection.first(),n=e.nextTreeMaximum,a=e.quotaKey,r=e.dirValue;this.modalService.show(ii.a,{initialState:{titleText:this.getModalQuotaTitle(0===r?this.actionLabels.SET:this.actionLabels.UPDATE,t),message:n.value?this.i18n("The inherited {{quotaValue}} is the maximum value to be used.",{quotaValue:this.getQuotaValueFromPathMsg(n.value,n.path)}):void 0,fields:[this.getQuotaFormField(e.row.name,a,r,n.value)],submitButtonText:this.i18n("Save"),onSubmit:t=>this.updateQuota(t)}})}getModalQuotaTitle(t,e){return this.i18n("{{action}} CephFS {{quotaName}} quota for '{{path}}'",{action:t,quotaName:this.getQuotaName(),path:e})}getQuotaName(){return this.isBytesQuotaSelected()?this.i18n("size"):this.i18n("files")}isBytesQuotaSelected(){return"max_bytes"===this.quota.selection.first().quotaKey}getQuotaValueFromPathMsg(t,e){return this.i18n("{{quotaName}} quota {{value}} from '{{path}}'",{value:this.isBytesQuotaSelected()?this.dimlessBinaryPipe.transform(t):t,quotaName:this.getQuotaName(),path:e})}getQuotaFormField(t,e,n,a){const r="max_bytes"===e,i=[r?Xs.a.binaryMin(0):K.B.min(0)];a&&i.push(r?Xs.a.binaryMax(a):K.B.max(a));const s={type:r?"binary":"number",label:t,name:e,value:n,validators:i,required:!0};return r||(s.errors={min:this.i18n("Value has to be at least {{value}} or more",{value:0}),max:this.i18n("Value has to be at most {{value}} or less",{value:a})}),s}updateQuota(t,e){const n=this.selectedDir.path,a=this.quota.selection.first().quotaKey,r=0===this.selectedDir.quotas[a]?this.actionLabels.SET:0===t[a]?this.actionLabels.UNSET:this.i18n("Updated");this.cephfsService.updateQuota(this.id,n,t).subscribe(()=>{e&&e(),this.notificationService.show(de.a.success,this.getModalQuotaTitle(r,n)),this.forceDirRefresh()})}unsetQuotaModal(){const t=this.selectedDir.path,e=this.quota.selection.first(),n=e.quotaKey,a=e.nextTreeMaximum,r=e.dirValue;this.modalRef=this.modalService.show(bl.a,{initialState:{titleText:this.getModalQuotaTitle(this.actionLabels.UNSET,t),buttonText:this.actionLabels.UNSET,description:this.i18n("{{action}} {{quotaValue}} {{conclusion}}.",{action:this.actionLabels.UNSET,quotaValue:this.getQuotaValueFromPathMsg(r,t),conclusion:a.value>0?this.i18n(a.value>r?"in order to inherit {{quotaValue}}":"which isn't used because of the inheritance of {{quotaValue}}",{quotaValue:this.getQuotaValueFromPathMsg(a.value,a.path)}):this.i18n("in order to have no quota on the directory")}),onSubmit:()=>this.updateQuota({[n]:0},()=>this.modalRef.hide())}})}createSnapshot(){const t=this.selectedDir.path;this.modalService.show(ii.a,{initialState:{titleText:this.i18n("Create Snapshot"),message:this.i18n("Please enter the name of the snapshot."),fields:[{type:"text",name:"name",value:""+Ge().toISOString(!0),required:!0}],submitButtonText:this.i18n("Create Snapshot"),onSubmit:e=>{this.cephfsService.mkSnapshot(this.id,t,e.name).subscribe(e=>{this.notificationService.show(de.a.success,this.i18n('Created snapshot "{{name}}" for "{{path}}"',{name:e,path:t})),this.forceDirRefresh()})}}})}forceDirRefresh(t){if(!t){const e=this.selectedDir;if(!e)throw new Error("This function can only be called without path if an selection was made");t=e.parent?e.parent:e.path}this.getNode(t).loadNodeChildren()}updateTreeStructure(t){const e=(t,e)=>{const n=t.filter(t=>t.parent===e),a=n.map(t=>t.path);return{children:n,paths:a}};X.uniq(t.map(t=>t.parent).sort()).forEach(n=>{const a=e(t,n),r=e(this.dirs,n);r.children.forEach(t=>{a.paths.includes(t.path)||this.removeOldDirectory(t)}),a.children.forEach(t=>{r.paths.includes(t.path)?this.updateExistingDirectory(r.children,t):this.addNewDirectory(t)})})}removeOldDirectory(t){const e=t.path;X.remove(this.dirs,t=>t.path===e),delete this.nodeIds[e],this.updateDirectoriesParentNode(t)}updateDirectoriesParentNode(t){const e=t.parent;if(!e)return;const n=this.getNode(e);if(!n)return;const a=this.getChildren(e);n.data.children=a,n.data.hasChildren=a.length>0,this.treeComponent.treeModel.update()}addNewDirectory(t){this.dirs.push(t),this.nodeIds[t.path]=t,this.updateDirectoriesParentNode(t)}updateExistingDirectory(t,e){const n=t.find(t=>t.path===e.path);Object.assign(n,e)}updateQuotaTable(){const t=this.selectedDir?this.getNode(this.selectedDir.path):void 0;t&&"/"!==t.id&&this.setSettings(t)}updateTree(t=!1){this.loadingIndicator&&!t||(this.treeComponent.treeModel.update(),this.nodes=[...this.nodes],this.treeComponent.sizeChanged())}deleteSnapshotModal(){this.modalRef=this.modalService.show(Is.a,{initialState:{itemDescription:this.i18n("CephFs Snapshot"),itemNames:this.snapshot.selection.selected.map(t=>t.name),submitAction:()=>this.deleteSnapshot()}})}deleteSnapshot(){const t=this.selectedDir.path;this.snapshot.selection.selected.forEach(e=>{const n=e.name;this.cephfsService.rmSnapshot(this.id,t,n).subscribe(()=>{this.notificationService.show(de.a.success,this.i18n('Deleted snapshot "{{name}}" for "{{path}}"',{name:n,path:t}))})}),this.modalRef.hide(),this.forceDirRefresh()}refreshAllDirectories(){this.loadingIndicator=!0,this.requestedPaths.map(t=>this.forceDirRefresh(t));const t=setInterval(()=>{this.updateTree(!0),this.loadingIndicator||clearInterval(t)},3e3)}unsetLoadingIndicator(){this.loadingIndicator&&(clearTimeout(this.loadingTimeout),this.loadingTimeout=setTimeout(()=>{if(Object.values(this.loading).some(t=>t))return this.unsetLoadingIndicator();this.loadingIndicator=!1,this.updateTree()},3e3))}}var vg=s["ɵcrt"]({encapsulation:0,styles:[["tree-root .tree-children{overflow:inherit}.quota-origin[_ngcontent-%COMP%]{cursor:pointer;color:#2b99a8}.quota-origin[_ngcontent-%COMP%]:hover{color:#212121}"]],data:{}});function xg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](3,2)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function _g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"tree-root",[],null,[["body","keydown"],["body","mousedown"]],(function(t,e,n){var a=!0;return"body:keydown"===e&&(a=!1!==s["ɵnov"](t,2).onKeydown(n)&&a),"body:mousedown"===e&&(a=!1!==s["ɵnov"](t,2).onMousedown(n)&&a),a}),Jd.b,Jd.a)),s["ɵprd"](131584,null,Zd.a,Zd.a,[]),s["ɵdid"](2,573440,[[1,4]],4,Qd.a,[Zd.a,Xd.a],{nodes:[0,"nodes"],options:[1,"options"]},null),s["ɵqud"](603979776,3,{loadingTemplate:0}),s["ɵqud"](603979776,4,{treeNodeTemplate:0}),s["ɵqud"](603979776,5,{treeNodeWrapperTemplate:0}),s["ɵqud"](603979776,6,{treeNodeFullTemplate:0}),(t()(),s["ɵand"](0,[[3,2],["loadingTemplate",2]],null,0,null,xg))],(function(t,e){var n=e.component;t(e,2,0,n.nodes,n.treeOptions)}),null)}function Tg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Quotas"])),(t()(),s["ɵeld"](3,0,null,null,3,"cd-table",[["identifier","quotaKey"],["selectionType","single"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.quota.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](4,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],onlyActionHeader:[2,"onlyActionHeader"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],identifier:[6,"identifier"],forceIdentifier:[7,"forceIdentifier"],selectionType:[8,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](5,0,null,0,1,"cd-table-actions",[["class","only-table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](6,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.settings,n.quota.columns,!0,!1,!1,0,"quotaKey",!0,"single"),t(e,6,0,n.permission,n.quota.selection,n.quota.tableActions)}),null)}function wg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[["class","col-sm-8 metadata"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,11,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,[" "," "])),(t()(),s["ɵeld"](4,0,null,null,8,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Tg)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Snapshots"])),(t()(),s["ɵeld"](9,0,null,null,3,"cd-table",[["forceIdentifier","true"],["identifier","name"],["selectionType","multiClick"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.snapshot.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](10,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](11,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](12,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,6,0,"/"!==n.selectedDir.path),t(e,10,0,n.selectedDir.snapshots,n.snapshot.columns,"name","true","multiClick"),t(e,12,0,n.permission,n.snapshot.selection,n.snapshot.tableActions)}),(function(t,e){t(e,3,0,e.component.selectedDir.path)}))}function Og(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","quota-origin"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectOrigin(t.context.value)&&a),a}),null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.value)}))}function Sg(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{treeComponent:0}),s["ɵqud"](402653184,2,{originTmpl:0}),(t()(),s["ɵeld"](2,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,10,"div",[["class","col-sm-4 pr-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,9,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,5,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,4,"button",[["class","btn btn-light pull-right"],["type","button"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshAllDirectories()&&a),a}),null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"i",[],[[2,"fa-spin",null]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](9,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](10,2),(t()(),s["ɵeld"](11,0,null,null,2,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_g)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[2,2],["origin",2]],null,0,null,Og))],(function(t,e){var n=e.component,a=t(e,10,0,n.icons.large,n.icons.refresh);t(e,9,0,a),t(e,13,0,n.nodes),t(e,15,0,n.selectedDir)}),(function(t,e){var n=e.component;t(e,6,0,n.loadingIndicator),t(e,7,0,n.loadingIndicator)}))}class Ig{constructor(){this.lhsCounter="mds_mem.ino",this.rhsCounter="mds_server.handle_client_request",this.chart={datasets:[{label:this.lhsCounter,yAxisID:"LHS",data:[],lineTension:.1},{label:this.rhsCounter,yAxisID:"RHS",data:[],lineTension:.1}],options:{title:{text:"",display:!0},responsive:!0,maintainAspectRatio:!1,legend:{position:"top"},scales:{xAxes:[{position:"top",type:"time",time:{displayFormats:{quarter:"MMM YYYY"}},ticks:{maxRotation:0}}],yAxes:[{id:"LHS",type:"linear",position:"left"},{id:"RHS",type:"linear",position:"right"}]},tooltips:{enabled:!1,mode:"index",intersect:!1,position:"nearest",callbacks:{title:(t,e)=>{let n=0;if(t.length>0){const a=t[0];n=e.datasets[a.datasetIndex].data[a.index].x}return n.toString()}}}},chartType:"line"}}ngOnInit(){X.isUndefined(this.mdsCounter)||(this.setChartTooltip(),this.updateChart())}ngOnChanges(){X.isUndefined(this.mdsCounter)||this.updateChart()}setChartTooltip(){const t=new Ma.a(this.chartCanvas,this.chartTooltip,t=>t.caretX+"px",t=>t.caretY-t.height-23+"px");t.getTitle=t=>Ge(t,"x").format("LTS"),t.checkOffset=!0,X.merge(this.chart,{options:{title:{text:this.mdsCounter.name},tooltips:{custom:e=>t.customTooltips(e)}}})}updateChart(){const t=[{data:this.convertTimeSeries(this.mdsCounter[this.lhsCounter])},{data:this.deltaTimeSeries(this.mdsCounter[this.rhsCounter])}];X.merge(this.chart,{datasets:t}),this.chart.datasets=[...this.chart.datasets]}convertTimeSeries(t){const e=[];return X.each(t,t=>{e.push({x:1e3*t[0],y:t[1]})}),e.shift(),e}deltaTimeSeries(t){let e,n=t[0];const a=[];for(e=1;e<t.length;e++){const r=t[e];a.push({x:1e3*r[0],y:r[1]-n[1]}),n=r}return a}}var Ng=s["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto auto 20px;cursor:pointer;overflow:visible;position:relative;height:500px;width:100%}']],data:{}});function Cg(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{chartCanvas:0}),s["ɵqud"](402653184,2,{chartTooltip:0}),(t()(),s["ɵeld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),s["ɵdid"](4,999424,null,0,Da.a,[s.ElementRef,Da.c],{datasets:[0,"datasets"],options:[1,"options"],chartType:[2,"chartType"]},null),(t()(),s["ɵeld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.chart.datasets,n.chart.options,n.chart.chartType)}),null)}class Rg{constructor(t,e,n){this.dimlessBinary=t,this.dimless=e,this.i18n=n,this.standbys=[],this.objectValues=Object.values}ngOnChanges(){this.setStandbys()}setStandbys(){this.standbys=[{key:this.i18n("Standby daemons"),value:this.data.standbys}]}ngOnInit(){this.columns={ranks:[{prop:"rank",name:this.i18n("Rank")},{prop:"state",name:this.i18n("State")},{prop:"mds",name:this.i18n("Daemon")},{prop:"activity",name:this.i18n("Activity"),cellTemplate:this.activityTmpl},{prop:"dns",name:this.i18n("Dentries"),pipe:this.dimless},{prop:"inos",name:this.i18n("Inodes"),pipe:this.dimless}],pools:[{prop:"pool",name:this.i18n("Pool")},{prop:"type",name:this.i18n("Type")},{prop:"size",name:this.i18n("Size"),pipe:this.dimlessBinary},{name:this.i18n("Usage"),cellTemplate:this.poolUsageTpl,comparator:(t,e,n,a)=>{const r=n.used/n.avail,i=a.used/a.avail;return r===i?0:r>i?1:-1}}]}}trackByFn(t,e){return e.name}}var Ag=s["ɵcrt"]({encapsulation:0,styles:[[".progress[_ngcontent-%COMP%]{margin-bottom:0}"]],data:{}});function kg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"cd-cephfs-chart",[],null,null,null,Cg,Ng)),s["ɵdid"](3,638976,null,0,Ig,[],{mdsCounter:[0,"mdsCounter"]},null)],(function(t,e){t(e,3,0,e.context.$implicit)}),null)}function Eg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Uo.b,Uo.a)),s["ɵdid"](1,573440,null,0,Wo.a,[],{total:[0,"total"],used:[1,"used"]},null)],(function(t,e){t(e,1,0,e.context.row.size,e.context.row.used)}),null)}function Lg(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" ",": "," /s\n"])),s["ɵppd"](1,1)],null,(function(t,e){var n="standby-replay"===e.context.row.state?"Evts":"Reqs",a=s["ɵunv"](e,0,1,t(e,1,0,s["ɵnov"](e.parent,0),e.context.value));t(e,0,0,n,a)}))}function Dg(t){return s["ɵvid"](0,[s["ɵpid"](0,ja.a,[Ua.a]),s["ɵqud"](402653184,1,{poolUsageTpl:0}),s["ɵqud"](402653184,2,{activityTmpl:0}),(t()(),s["ɵeld"](3,0,null,null,14,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,8,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ranks"])),(t()(),s["ɵeld"](7,0,null,null,1,"cd-table",[],null,null,null,$r.b,$r.a)),s["ɵdid"](8,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),s["ɵeld"](9,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Standbys"])),(t()(),s["ɵeld"](11,0,null,null,1,"cd-table-key-value",[],null,null,null,Ci.b,Ci.a)),s["ɵdid"](12,638976,null,0,Ri.a,[ze.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](13,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pools"])),(t()(),s["ɵeld"](16,0,null,null,1,"cd-table",[],null,null,null,$r.b,$r.a)),s["ɵdid"](17,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),s["ɵeld"](18,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["MDS performance counters"])),(t()(),s["ɵand"](16777216,null,null,1,null,kg)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵand"](0,[[1,2],["poolUsageTpl",2]],null,0,null,Eg)),(t()(),s["ɵand"](0,[[2,2],["activityTmpl",2]],null,0,null,Lg))],(function(t,e){var n=e.component;t(e,8,0,n.data.ranks,n.columns.ranks,!1),t(e,12,0,n.standbys),t(e,17,0,n.data.pools,n.columns.pools,!1),t(e,21,0,n.objectValues(n.data.mdsCounters),n.trackByFn)}),null)}var Pg=n("C6Ij"),Mg=n("AWcq");class qg{constructor(t,e,n,a,r,i){this.cephfsService=t,this.modalService=e,this.notificationService=n,this.authStorageService=a,this.i18n=r,this.actionLabels=i,this.triggerApiUpdate=new s.EventEmitter,this.selection=new ui.a,this.permission=this.authStorageService.getPermissions().cephfs,this.tableActions=[{permission:"update",icon:pt.a.signOut,click:()=>this.evictClientModal(),name:this.actionLabels.EVICT}]}ngOnInit(){this.columns=[{prop:"id",name:this.i18n("id")},{prop:"type",name:this.i18n("type")},{prop:"state",name:this.i18n("state")},{prop:"version",name:this.i18n("version")},{prop:"hostname",name:this.i18n("Host")},{prop:"root",name:this.i18n("root")}]}updateSelection(t){this.selection=t}evictClient(t){this.cephfsService.evictClient(this.id,t).subscribe(()=>{this.triggerApiUpdate.emit(),this.modalRef.hide(),this.notificationService.show(de.a.success,this.i18n('Evicted client "{{clientId}}"',{clientId:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}evictClientModal(){const t=this.selection.first().id;this.modalRef=this.modalService.show(Is.a,{initialState:{itemDescription:"client",itemNames:[t],actionDescription:"evict",submitAction:()=>this.evictClient(t)}})}}var jg=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Fg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Pg.b,Pg.a)),s["ɵdid"](1,114688,null,0,Mg.a,[],{status:[0,"status"]},null),(t()(),s["ɵeld"](2,0,null,null,3,"cd-table",[["selectionType","single"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](3,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](5,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.clients.status),t(e,3,0,n.clients.data,n.columns,"single"),t(e,5,0,n.permission,n.selection,n.tableActions)}),null)}var Vg=n("yJti");class Gg{constructor(t,e,n){this.ngZone=t,this.authStorageService=e,this.cephfsService=n,this.clients={data:[],status:Vg.a.ValueNone},this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.directoriesSelected=!1,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection?this.selection.id!==this.id&&this.setupSelected(this.selection.id,this.selection.mdsmap.info):this.unsubscribeInterval()}setupSelected(t,e){this.id=t;const n=X.first(Object.values(e));this.grafanaId=n&&n.name,this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.clients={data:[],status:Vg.a.ValueNone},this.updateInterval()}updateInterval(){this.unsubscribeInterval(),this.subscribeInterval()}unsubscribeInterval(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe()}subscribeInterval(){this.ngZone.runOutsideAngular(()=>this.reloadSubscriber=Object(ci.a)(0,5e3).subscribe(()=>this.ngZone.run(()=>this.refresh())))}refresh(){this.cephfsService.getTabs(this.id).subscribe(t=>{this.data=t,this.softRefresh()},()=>{this.clients.status=Vg.a.ValueException})}softRefresh(){const t=X.cloneDeep(this.data);this.clients=t.clients,this.details={standbys:t.standbys,pools:t.pools,ranks:t.ranks,mdsCounters:t.mds_counters,name:t.name}}ngOnDestroy(){this.unsubscribeInterval()}}var Bg=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function zg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients"])),(t()(),s["ɵeld"](2,0,null,null,1,"span",[["class","badge badge-pill badge-tab ml-1"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""]))],null,(function(t,e){t(e,3,0,e.component.clients.data.length)}))}function Yg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-cephfs-directories",[],null,null,null,Sg,vg)),s["ɵdid"](1,638976,null,0,yg,[Z.a,Ct.b,mg,ze.a,Xt.a,St.b,bt.a,qa.a],{id:[0,"id"]},null)],(function(t,e){t(e,1,0,e.component.id)}),null)}function Hg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","tbO9LAiZz"]],null,null,null,Wr.b,Wr.a)),s["ɵdid"](3,638976,null,0,Kr.a,[me.b,te.a,Xt.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"mds-performance?var-mds_servers=mds."+n.grafanaId,"one","tbO9LAiZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Ug(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.softRefresh()&&a),a}),null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},{selectTab:"selectTab"}),(t()(),s["ɵeld"](4,0,null,null,1,"cd-cephfs-detail",[],null,null,null,Dg,Ag)),s["ɵdid"](5,638976,null,0,Rg,[qa.a,ja.a,Xt.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](6,0,null,0,5,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.softRefresh()&&a),a}),null,null)),s["ɵdid"](7,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],null,{selectTab:"selectTab"}),(t()(),s["ɵand"](0,null,null,1,null,zg)),s["ɵdid"](9,16384,null,0,wa.c,[s.TemplateRef,wa.b],null,null),(t()(),s["ɵeld"](10,0,null,null,1,"cd-cephfs-clients",[],null,[[null,"triggerApiUpdate"]],(function(t,e,n){var a=!0;return"triggerApiUpdate"===e&&(a=!1!==t.component.refresh()&&a),a}),Fg,jg)),s["ɵdid"](11,114688,null,0,qg,[mg,Ct.b,bt.a,Z.a,Xt.a,St.b],{id:[0,"id"],clients:[1,"clients"]},{triggerApiUpdate:"triggerApiUpdate"}),(t()(),s["ɵeld"](12,0,null,0,3,"tab",[["heading","Directories"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=0!=(t.component.directoriesSelected=!0)&&a),a}),null,null)),s["ɵdid"](13,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,Yg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Hg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.details),t(e,7,0),t(e,11,0,n.id,n.clients),t(e,13,0,"Directories"),t(e,15,0,n.directoriesSelected),t(e,17,0,n.grafanaPermission.read&&n.grafanaId)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby),t(e,12,0,s["ɵnov"](e,13).id,s["ɵnov"](e,13).active,s["ɵnov"](e,13).addClass,s["ɵnov"](e,13).role,s["ɵnov"](e,13).ariaLabelledby)}))}function Wg(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ug)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}class Kg extends Ss.a{constructor(t,e,n){super(),this.cephfsService=t,this.cdDatePipe=e,this.i18n=n,this.filesystems=[],this.selection=new ui.a}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"mdsmap.fs_name",flexGrow:2},{name:this.i18n("Created"),prop:"mdsmap.created",flexGrow:2,pipe:this.cdDatePipe},{name:this.i18n("Enabled"),prop:"mdsmap.enabled",flexGrow:1,cellTransformation:si.a.checkIcon}]}loadFilesystems(t){this.cephfsService.list().subscribe(t=>{this.filesystems=t},()=>{t.error()})}updateSelection(t){this.selection=t}}var $g=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Jg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.loadFilesystems(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](1,2867200,null,0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](2,0,null,3,1,"cd-cephfs-tabs",[["cdTableDetail",""]],null,null,null,Wg,Bg)),s["ɵdid"](3,704512,null,0,Gg,[s.NgZone,Z.a,mg],{selection:[0,"selection"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.filesystems,n.columns,"flex",!0,"id","true","single"),t(e,3,0,n.expandedRow)}),null)}function Zg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-cephfs-list",[],null,null,null,Jg,$g)),s["ɵdid"](1,114688,null,0,Kg,[mg,ze.a,Xt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Qg=s["ɵccf"]("cd-cephfs-list",Kg,Zg,{},{},[]),Xg=n("1nQr");class tp{constructor(t,e,n,a,r,i,s,u){this.i18n=t,this.actionLabels=e,this.notificationService=n,this.userService=a,this.authStorageService=r,this.formBuilder=i,this.router=s,this.passwordPolicyService=u,this.passwordPolicyHelpText="",this.icons=pt.a,this.action=this.actionLabels.CHANGE,this.resource=this.i18n("password"),this.createForm()}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({oldpassword:[null,[K.B.required,Xs.a.custom("notmatch",()=>this.userForm&&this.userForm.getValue("newpassword")===this.userForm.getValue("oldpassword"))]],newpassword:[null,[K.B.required,Xs.a.custom("notmatch",()=>this.userForm&&this.userForm.getValue("oldpassword")===this.userForm.getValue("newpassword"))],[Xs.a.passwordPolicy(this.userService,()=>this.authStorageService.getUsername(),(t,e,n)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(e),this.passwordValuation=X.defaultTo(n,"")})]],confirmnewpassword:[null,[K.B.required]]},{validators:[Xs.a.match("newpassword","confirmnewpassword")]})}onSubmit(){if(this.userForm.pristine)return;const t=this.authStorageService.getUsername(),e=this.userForm.getValue("oldpassword"),n=this.userForm.getValue("newpassword");this.userService.changePassword(t,e,n).subscribe(()=>this.onPasswordChange(),()=>{this.userForm.setErrors({cdSubmitButton:!0})})}onPasswordChange(){this.notificationService.show(de.a.success,this.i18n('Updated user password"')),this.router.navigate(["/login"])}}var ep=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function np(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function ap(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function rp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-helper",[["class","text-pre-wrap"]],null,null,null,Ku.b,Ku.a)),s["ɵdid"](1,49152,null,0,$u.a,[],{class:[0,"class"],html:[1,"html"]},null)],(function(t,e){t(e,1,0,"text-pre-wrap",s["ɵinlineInterpolate"](1,"",e.component.passwordPolicyHelpText,""))}),null)}function ip(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function sp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function up(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.passwordValuation)}))}function op(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function lp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password confirmation doesn't match the new password."]))],null,null)}function dp(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Zs.a,[]),(t()(),s["ɵeld"](2,0,null,null,96,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,95,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,5).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit()&&a),a}),null,null)),s["ɵdid"](4,16384,null,0,K.G,[],null,null),s["ɵdid"](5,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](7,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](8,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](9,0,null,null,89,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](11,null,[""," ",""])),s["ɵppd"](12,1),s["ɵppd"](13,1),(t()(),s["ɵeld"](14,0,null,null,77,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](16,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](19,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","oldpassword"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Old password"])),(t()(),s["ɵeld"](21,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,8,"input",[["autocomplete","new-password"],["autofocus",""],["class","form-control"],["formControlName","oldpassword"],["id","oldpassword"],["placeholder","Old password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,24)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,24).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,24)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,24)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](24,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](26,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](28,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](29,4210688,null,0,Us.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](30,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](31,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](32,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,1,"button",[["cdPasswordButton","oldpassword"],["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,34).onClick()&&a),a}),null,null)),s["ɵdid"](34,81920,null,0,Ju.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,np)),s["ɵdid"](36,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ap)),s["ɵdid"](38,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](39,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](40,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](43,0,null,0,4,"label",[["class","cd-col-form-label"],["for","newpassword"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New password"])),(t()(),s["ɵand"](16777216,null,null,1,null,rp)),s["ɵdid"](47,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](48,0,null,0,20,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](50,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","newpassword"],["id","newpassword"],["placeholder","Password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,51)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,51).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,51)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,51)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](51,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](53,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](55,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](56,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](57,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](58,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,1,"button",[["cdPasswordButton","newpassword"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,60).onClick()&&a),a}),null,null)),s["ɵdid"](60,81920,null,0,Ju.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](61,0,null,null,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(t()(),s["ɵeld"](62,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ip)),s["ɵdid"](64,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sp)),s["ɵdid"](66,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,up)),s["ɵdid"](68,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](69,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](70,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](73,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","confirmnewpassword"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Confirm new password"])),(t()(),s["ɵeld"](75,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](76,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](77,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","confirmnewpassword"],["id","confirmnewpassword"],["placeholder","Confirm new password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,78)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,78).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,78)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,78)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](78,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](80,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](82,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](83,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](84,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](85,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](86,0,null,null,1,"button",[["cdPasswordButton","confirmnewpassword"],["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,87).onClick()&&a),a}),null,null)),s["ɵdid"](87,81920,null,0,Ju.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,op)),s["ɵdid"](89,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lp)),s["ɵdid"](91,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](92,0,null,null,6,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](93,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](94,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](95,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](96,0,[" "," "," "])),s["ɵppd"](97,1),s["ɵppd"](98,1)],(function(t,e){var n=e.component;t(e,5,0,n.userForm),t(e,8,0,n.userForm),t(e,16,0),t(e,26,0,"oldpassword"),t(e,29,0,""),t(e,31,0,"oldpassword"),t(e,34,0,"oldpassword"),t(e,36,0,n.userForm.showError("oldpassword",s["ɵnov"](e,5),"required")),t(e,38,0,n.userForm.showError("oldpassword",s["ɵnov"](e,5),"notmatch")),t(e,40,0),t(e,47,0,n.passwordPolicyHelpText.length>0),t(e,53,0,"newpassword"),t(e,57,0,"newpassword"),t(e,60,0,"newpassword"),t(e,64,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"required")),t(e,66,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"notmatch")),t(e,68,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"passwordPolicy")),t(e,70,0),t(e,80,0,"confirmnewpassword"),t(e,84,0,"confirmnewpassword"),t(e,87,0,"confirmnewpassword"),t(e,89,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,5),"required")),t(e,91,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,5),"match")),t(e,95,0,n.userForm)}),(function(t,e){var n=e.component;t(e,3,0,s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending);var a=s["ɵunv"](e,11,0,t(e,12,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,11,1,t(e,13,0,s["ɵnov"](e,1),n.resource));t(e,11,0,a,r),t(e,15,0,s["ɵnov"](e,16).hasErrors,s["ɵnov"](e,16).hasSuccess),t(e,23,0,s["ɵnov"](e,28).ngClassUntouched,s["ɵnov"](e,28).ngClassTouched,s["ɵnov"](e,28).ngClassPristine,s["ɵnov"](e,28).ngClassDirty,s["ɵnov"](e,28).ngClassValid,s["ɵnov"](e,28).ngClassInvalid,s["ɵnov"](e,28).ngClassPending,s["ɵnov"](e,31).validClass,s["ɵnov"](e,31).invalidClass),t(e,39,0,s["ɵnov"](e,40).hasErrors,s["ɵnov"](e,40).hasSuccess),t(e,50,0,s["ɵnov"](e,55).ngClassUntouched,s["ɵnov"](e,55).ngClassTouched,s["ɵnov"](e,55).ngClassPristine,s["ɵnov"](e,55).ngClassDirty,s["ɵnov"](e,55).ngClassValid,s["ɵnov"](e,55).ngClassInvalid,s["ɵnov"](e,55).ngClassPending,s["ɵnov"](e,57).validClass,s["ɵnov"](e,57).invalidClass),t(e,62,0,s["ɵinlineInterpolate"](1,"",n.passwordStrengthLevelClass,""),s["ɵinlineInterpolate"](1,"",n.passwordValuation,"")),t(e,69,0,s["ɵnov"](e,70).hasErrors,s["ɵnov"](e,70).hasSuccess),t(e,77,0,s["ɵnov"](e,82).ngClassUntouched,s["ɵnov"](e,82).ngClassTouched,s["ɵnov"](e,82).ngClassPristine,s["ɵnov"](e,82).ngClassDirty,s["ɵnov"](e,82).ngClassValid,s["ɵnov"](e,82).ngClassInvalid,s["ɵnov"](e,82).ngClassPending,s["ɵnov"](e,84).validClass,s["ɵnov"](e,84).invalidClass);var i=s["ɵunv"](e,96,0,t(e,97,0,s["ɵnov"](e,0),n.action)),u=s["ɵunv"](e,96,1,t(e,98,0,s["ɵnov"](e,1),n.resource));t(e,96,0,i,u)}))}function cp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-user-password-form",[],null,null,null,dp,ep)),s["ɵdid"](1,49152,null,0,tp,[Xt.a,St.b,bt.a,Ot.a,Z.a,to.a,Et.m,Xg.a],null,null)],null,null)}var fp=s["ɵccf"]("cd-user-password-form",tp,cp,{},{},[]);class hp{constructor(t,e){this.route=t,this.i18n=e,this.message=this.i18n("The NFS Ganesha service is not configured.")}ngOnInit(){this.routeParamsSubscribe=this.route.params.subscribe(t=>{this.message=t.message})}ngOnDestroy(){this.routeParamsSubscribe.unsubscribe()}}var gp=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function pp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"cd-alert-panel",[["type","info"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"]},null),(t()(),s["ɵted"](2,0,[" ",""])),(t()(),s["ɵeld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,0,4,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please consult the "])),(t()(),s["ɵeld"](6,0,null,null,1,"cd-doc",[["section","nfs-ganesha"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](7,114688,null,0,ti.a,[Tt.a,Xt.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,null,[" on how to configure and enable the NFS Ganesha management functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,7,0,"nfs-ganesha")}),(function(t,e){t(e,2,0,e.component.message)}))}function bp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-nfs-501",[],null,null,null,pp,gp)),s["ɵdid"](1,245760,null,0,hp,[Et.a,Xt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var mp=s["ɵccf"]("cd-nfs-501",hp,bp,{},{},[]);class yp{constructor(t){this.i18n=t,this.clients=[],this.clientsColumns=[{name:this.i18n("Addresses"),prop:"addresses",flexGrow:2},{name:this.i18n("Access Type"),prop:"access_type",flexGrow:1},{name:this.i18n("Squash"),prop:"squash",flexGrow:1}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.clients=this.selectedItem.clients,this.data={},this.data[this.i18n("Cluster")]=this.selectedItem.cluster_id,this.data[this.i18n("Daemons")]=this.selectedItem.daemons,this.data[this.i18n("NFS Protocol")]=this.selectedItem.protocols.map(t=>"NFSv"+t),this.data[this.i18n("Pseudo")]=this.selectedItem.pseudo,this.data[this.i18n("Access Type")]=this.selectedItem.access_type,this.data[this.i18n("Squash")]=this.selectedItem.squash,this.data[this.i18n("Transport")]=this.selectedItem.transports,this.data[this.i18n("Path")]=this.selectedItem.path,"CEPH"===this.selectedItem.fsal.name?(this.data[this.i18n("Storage Backend")]=this.i18n("CephFS"),this.data[this.i18n("CephFS User")]=this.selectedItem.fsal.user_id,this.data[this.i18n("CephFS Filesystem")]=this.selectedItem.fsal.fs_name,this.data[this.i18n("Security Label")]=this.selectedItem.fsal.sec_label_xattr):(this.data[this.i18n("Storage Backend")]=this.i18n("Object Gateway"),this.data[this.i18n("Object Gateway User")]=this.selectedItem.fsal.rgw_user_id))}}var vp=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function xp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Ta.b,Ta.a)),s["ɵdid"](1,180224,null,0,wa.e,[wa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Ci.b,Ci.a)),s["ɵdid"](5,638976,null,0,Ri.a,[ze.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](6,0,null,0,3,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,wa.b,[wa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","addresses"],["selectionType",""]],null,null,null,$r.b,$r.a)),s["ɵdid"](9,2867200,[["table",4]],0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.data),t(e,7,0,s["ɵinlineInterpolate"](1,"Clients (",n.clients.length,")")),t(e,9,0,n.clients,n.clientsColumns,"flex","addresses","true","")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby)}))}function _p(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,xp)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}var Tp=n("VTlA");let wp=(()=>{class t{constructor(t,e){this.http=t,this.i18n=e,this.apiPath="api/nfs-ganesha",this.uiApiPath="ui-api/nfs-ganesha",this.nfsAccessType=[{value:"RW",help:this.i18n("Allows all operations")},{value:"RO",help:this.i18n("Allows only operations that do not modify the server")},{value:"MDONLY",help:this.i18n("Does not allow read or write operations, but allows any other operation")},{value:"MDONLY_RO",help:this.i18n("Does not allow read, write, or any operation that modifies file        attributes or directory content")},{value:"NONE",help:this.i18n("Allows no access at all")}],this.nfsFsal=[{value:"CEPH",descr:this.i18n("CephFS")},{value:"RGW",descr:this.i18n("Object Gateway")}],this.nfsSquash=["no_root_squash","root_id_squash","root_squash","all_squash"]}list(){return this.http.get(this.apiPath+"/export")}get(t,e){return this.http.get(`${this.apiPath}/export/${t}/${e}`)}create(t){return this.http.post(this.apiPath+"/export",t,{observe:"response"})}update(t,e,n){return this.http.put(`${this.apiPath}/export/${t}/${e}`,n,{observe:"response"})}delete(t,e){return this.http.delete(`${this.apiPath}/export/${t}/${e}`,{observe:"response"})}lsDir(t,e){return this.http.get(`${this.uiApiPath}/lsdir/${t}?root_dir=${e}`)}buckets(t){return this.http.get(`${this.uiApiPath}/rgw/buckets?user_id=${t}`)}clients(){return this.http.get(this.uiApiPath+"/cephx/clients")}fsals(){return this.http.get(this.uiApiPath+"/fsals")}filesystems(){return this.http.get(this.uiApiPath+"/cephfs/filesystems")}daemon(){return this.http.get(this.apiPath+"/daemon")}start(t){return this.http.put(`${this.apiPath}/service/${t}/start`,null,{observe:"response"})}stop(t){return this.http.put(`${this.apiPath}/service/${t}/stop`,null,{observe:"response"})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](Xt.a))},token:t,providedIn:oe.a}),t})();class Op extends Ss.a{constructor(t,e,n,a,r,i,s){super(),this.authStorageService=t,this.i18n=e,this.modalService=n,this.nfsService=a,this.taskListService=r,this.taskWrapper=i,this.actionLabels=s,this.selection=new ui.a,this.isDefaultCluster=!1,this.builders={"nfs/create":t=>({path:t.path,cluster_id:t.cluster_id,fsal:t.fsal})},this.permission=this.authStorageService.getPermissions().nfs;const u=()=>this.selection.first()&&`${encodeURI(this.selection.first().cluster_id)}/${encodeURI(this.selection.first().export_id)}`;this.tableActions=[{permission:"create",icon:pt.a.add,routerLink:()=>"/nfs/create",canBePrimary:t=>!t.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:pt.a.edit,routerLink:()=>"/nfs/edit/"+u(),name:this.actionLabels.EDIT},{permission:"delete",icon:pt.a.destroy,click:()=>this.deleteNfsModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Path"),prop:"path",flexGrow:2,cellTransformation:si.a.executing},{name:this.i18n("Pseudo"),prop:"pseudo",flexGrow:2},{name:this.i18n("Cluster"),prop:"cluster_id",flexGrow:2},{name:this.i18n("Daemons"),prop:"daemons",flexGrow:2},{name:this.i18n("Storage Backend"),prop:"fsal",flexGrow:2,cellTemplate:this.nfsFsal},{name:this.i18n("Access Type"),prop:"access_type",flexGrow:2}],this.nfsService.daemon().subscribe(t=>{const e=X(t).map(t=>t.cluster_id).uniq().value();this.isDefaultCluster=1===e.length&&"_default_"===e[0],this.columns[2].isHidden=this.isDefaultCluster,this.table&&this.table.updateColumns(),this.taskListService.init(()=>this.nfsService.list(),t=>this.prepareResponse(t),t=>this.exports=t,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders)},()=>{this.onFetchError()})}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}prepareResponse(t){let e=[];return t.forEach(t=>{t.id=`${t.cluster_id}:${t.export_id}`,t.state="LOADING",e=e.concat(t)}),e}onFetchError(){this.table.reset(),this.viewCacheStatus={status:Vg.a.ValueException}}itemFilter(t,e){return t.cluster_id===e.metadata.cluster_id&&t.export_id===e.metadata.export_id}taskFilter(t){return["nfs/create","nfs/delete","nfs/edit"].includes(t.name)}updateSelection(t){this.selection=t}deleteNfsModal(){const t=this.selection.first().cluster_id,e=this.selection.first().export_id;this.modalRef=this.modalService.show(Is.a,{initialState:{itemDescription:this.i18n("NFS export"),itemNames:[`${t}:${e}`],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new Cs.a("nfs/delete",{cluster_id:t,export_id:e}),call:this.nfsService.delete(t,e)})}})}}var Sp=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ip(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS"]))],null,null)}function Np(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway"]))],null,null)}function Cp(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ip)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Np)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,"CEPH"===e.context.value.name),t(e,3,0,"RGW"===e.context.value.name)}),null)}function Rp(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{nfsState:0}),s["ɵqud"](402653184,2,{nfsFsal:0}),s["ɵqud"](402653184,3,{table:0}),(t()(),s["ɵeld"](3,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),$r.b,$r.a)),s["ɵdid"](4,2867200,[[3,4],["table",4]],0,Jr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](5,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](7,114688,null,0,Qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](8,0,null,3,1,"cd-nfs-details",[["cdTableDetail",""]],null,null,null,_p,vp)),s["ɵdid"](9,573440,null,0,yp,[Xt.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[2,2],["nfsFsal",2]],null,0,null,Cp))],(function(t,e){var n=e.component;t(e,4,0,n.exports,n.columns,"flex",!0,"id","true","single"),t(e,7,0,n.permission,n.selection,n.tableActions),t(e,9,0,n.expandedRow)}),null)}function Ap(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-nfs-list",[],null,null,null,Rp,Sp)),s["ɵprd"](131584,null,Tp.a,Tp.a,[en.a,mt.a]),s["ɵdid"](2,245760,null,0,Op,[Z.a,Xt.a,Ct.b,wp,Tp.a,Es.a,St.b],null,null)],(function(t,e){t(e,2,0)}),null)}var kp=s["ɵccf"]("cd-nfs-list",Op,Ap,{},{},[]),Ep=n("WiuZ"),Lp=n("wnGv"),Dp=n("TYzs");class Pp{constructor(t,e){this.nfsService=t,this.i18n=e,this.nfsSquash=this.nfsService.nfsSquash,this.nfsAccessType=this.nfsService.nfsAccessType,this.icons=pt.a}getNoAccessTypeDescr(){return this.form.getValue("access_type")?`${this.form.getValue("access_type")} ${this.i18n("(inherited from global config)")}`:this.i18n("-- Select the access type --")}getAccessTypeHelp(t){const e=this.nfsAccessType.find(e=>this.getValue(t,"access_type")===e.value);return X.isObjectLike(e)?e.help:""}getNoSquashDescr(){return this.form.getValue("squash")?`${this.form.getValue("squash")} (${this.i18n("inherited from global config")})`:this.i18n("-- Select what kind of user id squashing is performed --")}addClient(){const t=this.form.get("clients"),e="(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?)",n=new Qs.a({addresses:new K.i("",{validators:[K.B.required,K.B.pattern(`${e}([ ,]{1,2}${e})*`)]}),access_type:new K.i(""),squash:new K.i("")});return t.push(n),n}removeClient(t){this.form.get("clients").removeAt(t)}showError(t,e,n,a){return this.form.controls.clients.controls[t].showError(e,n,a)}getValue(t,e){return this.form.get("clients").at(t).getValue(e)}resolveModel(t){X.forEach(t,t=>{this.addClient().patchValue(t)})}trackByFn(t){return t}}var Mp=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function qp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[["class","no-border text-muted"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Any client can access"]))],null,null)}function jp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Fp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Must contain one or more comma-separated values"])),(t()(),s["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["For example:"])),(t()(),s["ɵted"](-1,null,[" 192.168.0.10, 192.168.1.0/8 "]))],null,null)}function Vp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function Gp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.getAccessTypeHelp(e.parent.context.index))}))}function Bp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function zp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,74,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,73,"div",[["class","card"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](2,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](4,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](5,0,null,null,4,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](6,null,[" "," "])),s["ɵppd"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,"span",[["class","float-right clickable"],["tooltip","Remove"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeClient(t.context.index)&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](10,0,null,null,64,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](12,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](15,0,null,0,1,"label",[["class","cd-col-form-label"],["for","addresses"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Addresses"])),(t()(),s["ɵeld"](17,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,7,"input",[["class","form-control"],["formControlName","addresses"],["id","addresses"],["name","addresses"],["placeholder","192.168.0.10, 192.168.1.0/8"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](21,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](23,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](24,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](25,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](26,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,jp)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fp)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](31,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](32,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](35,0,null,0,1,"label",[["class","cd-col-form-label"],["for","access_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Access Type"])),(t()(),s["ɵeld"](37,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","access_type"],["id","access_type"],["name","access_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,39).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,39).onTouched()&&a),a}),null,null)),s["ɵdid"](39,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](41,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](43,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](44,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](45,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](46,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](47,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](48,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](49,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Vp)),s["ɵdid"](51,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gp)),s["ɵdid"](53,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](54,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](55,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](58,0,null,0,1,"label",[["class","cd-col-form-label"],["for","squash"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Squash"])),(t()(),s["ɵeld"](60,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](61,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","squash"],["id","squash"],["name","squash"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,62).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,62).onTouched()&&a),a}),null,null)),s["ɵdid"](62,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](64,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](66,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](67,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](68,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](69,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](70,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](71,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](72,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Bp)),s["ɵdid"](74,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,2,0,e.context.index),t(e,12,0),t(e,21,0,"addresses"),t(e,25,0,"addresses"),t(e,28,0,n.showError(e.context.index,"addresses",s["ɵnov"](e.parent,8),"required")),t(e,30,0,n.showError(e.context.index,"addresses",s["ɵnov"](e.parent,8),"pattern")),t(e,32,0),t(e,41,0,"access_type"),t(e,45,0,"access_type"),t(e,47,0,""),t(e,48,0,""),t(e,51,0,n.nfsAccessType),t(e,53,0,n.getValue(e.context.index,"access_type")),t(e,55,0),t(e,64,0,"squash"),t(e,68,0,"squash"),t(e,70,0,""),t(e,71,0,""),t(e,74,0,n.nfsSquash)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,4).ngClassUntouched,s["ɵnov"](e,4).ngClassTouched,s["ɵnov"](e,4).ngClassPristine,s["ɵnov"](e,4).ngClassDirty,s["ɵnov"](e,4).ngClassValid,s["ɵnov"](e,4).ngClassInvalid,s["ɵnov"](e,4).ngClassPending);var a=s["ɵunv"](e,6,0,t(e,7,0,s["ɵnov"](e.parent,0),e.context.index+1));t(e,6,0,a),t(e,11,0,s["ɵnov"](e,12).hasErrors,s["ɵnov"](e,12).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass),t(e,31,0,s["ɵnov"](e,32).hasErrors,s["ɵnov"](e,32).hasSuccess),t(e,38,0,s["ɵnov"](e,43).ngClassUntouched,s["ɵnov"](e,43).ngClassTouched,s["ɵnov"](e,43).ngClassPristine,s["ɵnov"](e,43).ngClassDirty,s["ɵnov"](e,43).ngClassValid,s["ɵnov"](e,43).ngClassInvalid,s["ɵnov"](e,43).ngClassPending,s["ɵnov"](e,45).validClass,s["ɵnov"](e,45).invalidClass),t(e,49,0,n.getNoAccessTypeDescr()),t(e,54,0,s["ɵnov"](e,55).hasErrors,s["ɵnov"](e,55).hasSuccess),t(e,61,0,s["ɵnov"](e,66).ngClassUntouched,s["ɵnov"](e,66).ngClassTouched,s["ɵnov"](e,66).ngClassPristine,s["ɵnov"](e,66).ngClassDirty,s["ɵnov"](e,66).ngClassValid,s["ɵnov"](e,66).ngClassInvalid,s["ɵnov"](e,66).ngClassPending,s["ɵnov"](e,68).validClass,s["ɵnov"](e,68).invalidClass),t(e,72,0,n.getNoSquashDescr())}))}function Yp(t){return s["ɵvid"](0,[s["ɵpid"](0,Dp.a,[]),(t()(),s["ɵeld"](1,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients"])),(t()(),s["ɵeld"](7,0,null,0,22,"div",[["class","cd-col-form-input"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](8,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](10,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](11,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qp)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](14,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](15,212992,null,0,K.g,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.g]),s["ɵdid"](17,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,zp)),s["ɵdid"](19,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵeld"](20,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,8,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,7,"div",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,6,"button",[["class","btn btn-light "]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addClient()&&a),a}),null,null)),(t()(),s["ɵeld"](24,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](26,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](27,1),(t()(),s["ɵeld"](28,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add clients"]))],(function(t,e){var n=e.component;t(e,2,0),t(e,8,0,n.form),t(e,11,0,n.form),t(e,13,0,0===n.form.get("clients").value.length),t(e,15,0,"clients"),t(e,19,0,n.form.get("clients").value,n.trackByFn);var a=t(e,27,0,n.icons.add);t(e,26,0,a)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending)}))}var Hp=n("P8lu"),Up=function(t){return t.user="user",t.orchestrator="orchestrator",t}({});class Wp{constructor(t,e,n,a,r,i,s,u,o,l){this.authStorageService=t,this.nfsService=e,this.route=n,this.router=a,this.rgwUserService=r,this.formBuilder=i,this.taskWrapper=s,this.cdRef=u,this.i18n=o,this.actionLabels=l,this.isEdit=!1,this.cluster_id=null,this.clusterType=null,this.export_id=null,this.isNewDirectory=!1,this.isNewBucket=!1,this.isDefaultCluster=!1,this.allClusters=null,this.allDaemons={},this.icons=pt.a,this.allFsals=[],this.allRgwUsers=[],this.allCephxClients=null,this.allFsNames=null,this.defaultAccessType={RGW:"RO"},this.nfsAccessType=this.nfsService.nfsAccessType,this.nfsSquash=this.nfsService.nfsSquash,this.daemonsSelections=[],this.daemonsMessages=new Ns.a({noOptions:this.i18n("There are no daemons available.")},this.i18n),this.pathDataSource=Kn.a.create(t=>{t.next(this.nfsForm.getValue("path"))}).pipe(Object(_e.a)(t=>this.getPathTypeahead(t)),Object(Je.a)(t=>t.paths)),this.bucketDataSource=Kn.a.create(t=>{t.next(this.nfsForm.getValue("path"))}).pipe(Object(_e.a)(t=>this.getBucketTypeahead(t))),this.permission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("NFS export"),this.createForm()}ngOnInit(){const t=[this.nfsService.daemon(),this.nfsService.fsals(),this.nfsService.clients(),this.nfsService.filesystems()];this.router.url.startsWith("/nfs/edit")&&(this.isEdit=!0),this.isEdit?(this.action=this.actionLabels.EDIT,this.route.params.subscribe(e=>{this.cluster_id=decodeURIComponent(e.cluster_id),this.export_id=decodeURIComponent(e.export_id),t.push(this.nfsService.get(this.cluster_id,this.export_id)),this.getData(t)}),this.nfsForm.get("cluster_id").disable()):(this.action=this.actionLabels.CREATE,this.getData(t))}getData(t){Object(pl.a)(t).subscribe(t=>{this.resolveDaemons(t[0]),this.resolvefsals(t[1]),this.resolveClients(t[2]),this.resolveFilesystems(t[3]),t[4]&&this.resolveModel(t[4])})}createForm(){this.nfsForm=new Qs.a({cluster_id:new K.i("",{validators:[K.B.required]}),daemons:new K.i([]),fsal:new Qs.a({name:new K.i("",{validators:[K.B.required]}),user_id:new K.i("",{validators:[Xs.a.requiredIf({name:"CEPH"})]}),fs_name:new K.i("",{validators:[Xs.a.requiredIf({name:"CEPH"})]}),rgw_user_id:new K.i("",{validators:[Xs.a.requiredIf({name:"RGW"})]})}),path:new K.i(""),protocolNfsv3:new K.i(!1,{validators:[Xs.a.requiredIf({protocolNfsv4:!1},t=>!t)]}),protocolNfsv4:new K.i(!0,{validators:[Xs.a.requiredIf({protocolNfsv3:!1},t=>!t)]}),tag:new K.i(""),pseudo:new K.i("",{validators:[Xs.a.requiredIf({protocolNfsv4:!0}),K.B.pattern("^/[^><|&()]*$")]}),access_type:new K.i("RW",{validators:[K.B.required]}),squash:new K.i("",{validators:[K.B.required]}),transportUDP:new K.i(!0,{validators:[Xs.a.requiredIf({transportTCP:!1},t=>!t)]}),transportTCP:new K.i(!0,{validators:[Xs.a.requiredIf({transportUDP:!1},t=>!t)]}),clients:this.formBuilder.array([]),security_label:new K.i(!1),sec_label_xattr:new K.i("security.selinux",Xs.a.requiredIf({security_label:!0,"fsal.name":"CEPH"}))})}resolveModel(t){"CEPH"===t.fsal.name&&(t.sec_label_xattr=t.fsal.sec_label_xattr),this.clusterType===Up.user&&(this.daemonsSelections=X.map(this.allDaemons[t.cluster_id],e=>new Xu.a(-1!==t.daemons.indexOf(e),e,"")),this.daemonsSelections=[...this.daemonsSelections]),t.protocolNfsv3=-1!==t.protocols.indexOf(3),t.protocolNfsv4=-1!==t.protocols.indexOf(4),delete t.protocols,t.transportTCP=-1!==t.transports.indexOf("TCP"),t.transportUDP=-1!==t.transports.indexOf("UDP"),delete t.transports,t.clients.forEach(t=>{let e="";t.addresses.forEach(t=>{e+=t+", "}),e.length>=2&&(e=e.substring(0,e.length-2)),t.addresses=e}),this.nfsForm.patchValue(t),this.setPathValidation(),this.nfsClients.resolveModel(t.clients)}resolveDaemons(t){t=X.sortBy(t,["daemon_id"]);const e=X.groupBy(t,"cluster_id");if(this.allClusters=[],X.forIn(e,(t,e)=>{this.allClusters.push({cluster_id:e,cluster_type:t[0].cluster_type}),this.allDaemons[e]=[]}),X.forEach(t,t=>{this.allDaemons[t.cluster_id].push(t.daemon_id)}),this.isEdit){const t=X.find(this.allClusters,{cluster_id:this.cluster_id});this.clusterType=t?t.cluster_type:null}const n=X.isArray(this.allClusters)&&1===this.allClusters.length;this.isDefaultCluster=n&&"_default_"===this.allClusters[0].cluster_id,n&&(this.nfsForm.patchValue({cluster_id:this.allClusters[0].cluster_id}),this.onClusterChange())}resolvefsals(t){t.forEach(t=>{const e=this.nfsService.nfsFsal.find(e=>t===e.value);X.isObjectLike(e)&&(this.allFsals.push(e),"RGW"===e.value&&this.rgwUserService.list().subscribe(t=>{t.forEach(t=>{0===t.suspended&&t.keys.length>0&&this.allRgwUsers.push(t.user_id)})}))}),1===this.allFsals.length&&X.isUndefined(this.nfsForm.getValue("fsal"))&&this.nfsForm.patchValue({fsal:this.allFsals[0]})}resolveClients(t){this.allCephxClients=t}resolveFilesystems(t){this.allFsNames=t,1===t.length&&this.nfsForm.patchValue({fsal:{fs_name:t[0].name}})}fsalChangeHandler(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo(),access_type:this._updateAccessType()}),this.setPathValidation(),this.cdRef.detectChanges()}accessTypeChangeHandler(){const t=this.nfsForm.getValue("name"),e=this.nfsForm.getValue("access_type");this.defaultAccessType[t]=e}setPathValidation(){"RGW"===this.nfsForm.getValue("name")?this.nfsForm.get("path").setValidators([K.B.required,K.B.pattern("^(/|[^/><|&()#?]+)$")]):this.nfsForm.get("path").setValidators([K.B.required,K.B.pattern("^/[^><|&()?]*$")])}rgwUserIdChangeHandler(){this.nfsForm.patchValue({pseudo:this._generatePseudo()})}getAccessTypeHelp(t){const e=this.nfsAccessType.find(e=>{if(t===e.value)return e});return X.isObjectLike(e)?e.help:""}getId(){return X.isString(this.nfsForm.getValue("cluster_id"))&&X.isString(this.nfsForm.getValue("path"))?this.nfsForm.getValue("cluster_id")+":"+this.nfsForm.getValue("path"):""}getPathTypeahead(t){if(!X.isString(t)||"/"===t)return Object(ve.a)([]);const e=this.nfsForm.getValue("fsal").fs_name;return this.nfsService.lsDir(e,t)}pathChangeHandler(){this.nfsForm.patchValue({pseudo:this._generatePseudo()});const t=this.nfsForm.getValue("path");this.getPathTypeahead(t).subscribe(e=>{this.isNewDirectory="/"!==t&&-1===e.paths.indexOf(t)})}bucketChangeHandler(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo()});const t=this.nfsForm.getValue("path");this.getBucketTypeahead(t).subscribe(e=>{this.isNewBucket=""!==t&&-1===e.indexOf(t)})}getBucketTypeahead(t){const e=this.nfsForm.getValue("rgw_user_id");return X.isString(e)&&X.isString(t)&&"/"!==t&&""!==t?this.nfsService.buckets(e):Object(ve.a)([])}_generateTag(){let t=this.nfsForm.getValue("tag");return this.nfsForm.get("tag").dirty||(t=void 0,"RGW"===this.nfsForm.getValue("fsal")&&(t=this.nfsForm.getValue("path"))),t}_generatePseudo(){let t=this.nfsForm.getValue("pseudo");return this.nfsForm.get("pseudo")&&!this.nfsForm.get("pseudo").dirty&&(t=void 0,"CEPH"===this.nfsForm.getValue("fsal")?(t="/cephfs",X.isString(this.nfsForm.getValue("path"))&&(t+=this.nfsForm.getValue("path"))):"RGW"===this.nfsForm.getValue("fsal")&&X.isString(this.nfsForm.getValue("rgw_user_id"))&&(t="/"+this.nfsForm.getValue("rgw_user_id"),X.isString(this.nfsForm.getValue("path"))&&(t+="/"+this.nfsForm.getValue("path")))),t}_updateAccessType(){const t=this.nfsForm.getValue("name");let e=this.defaultAccessType[t];return e||(e="RW"),e}onClusterChange(){const t=this.nfsForm.getValue("cluster_id"),e=X.find(this.allClusters,{cluster_id:t});this.clusterType=e?e.cluster_type:null,this.clusterType===Up.user?(this.daemonsSelections=X.map(this.allDaemons[t],t=>new Xu.a(!1,t,"")),this.daemonsSelections=[...this.daemonsSelections]):this.daemonsSelections=[],this.nfsForm.patchValue({daemons:[]})}removeDaemon(t,e){this.daemonsSelections.forEach(t=>{t.name===e&&(t.selected=!1)});const n=this.nfsForm.get("daemons");return n.value.splice(t,1),n.setValue(n.value),!1}onDaemonSelection(){this.nfsForm.get("daemons").setValue(this.nfsForm.getValue("daemons"))}onToggleAllDaemonsSelection(){const t=this.nfsForm.getValue("cluster_id"),e=0===this.nfsForm.getValue("daemons").length?this.allDaemons[t]:[];this.nfsForm.patchValue({daemons:e})}submitAction(){let t;const e=this._buildRequest();t=this.taskWrapper.wrapTaskAroundCall(this.isEdit?{task:new Cs.a("nfs/edit",{cluster_id:this.cluster_id,export_id:this.export_id}),call:this.nfsService.update(this.cluster_id,this.export_id,e)}:{task:new Cs.a("nfs/create",{path:e.path,fsal:e.fsal,cluster_id:e.cluster_id}),call:this.nfsService.create(e)}),t.subscribe(void 0,()=>this.nfsForm.setErrors({cdSubmitButton:!0}),()=>this.router.navigate(["/nfs"]))}_buildRequest(){const t=X.cloneDeep(this.nfsForm.value);return(X.isUndefined(t.tag)||""===t.tag)&&(t.tag=null),this.isEdit&&(t.export_id=this.export_id),"CEPH"===t.fsal.name?delete t.fsal.rgw_user_id:(delete t.fsal.fs_name,delete t.fsal.user_id),t.protocols=[],t.protocolNfsv3?t.protocols.push(3):t.tag=null,delete t.protocolNfsv3,t.protocolNfsv4?t.protocols.push(4):t.pseudo=null,delete t.protocolNfsv4,t.transports=[],t.transportTCP&&t.transports.push("TCP"),delete t.transportTCP,t.transportUDP&&t.transports.push("UDP"),delete t.transportUDP,t.clients.forEach(e=>{e.addresses=X.isString(e.addresses)?X(e.addresses).split(/[ ,]+/).uniq().filter(t=>""!==t).value():[],e.squash||(e.squash=t.squash),e.access_type||(e.access_type=t.access_type)}),t.fsal.sec_label_xattr=!1===t.security_label||"RGW"===t.fsal.name?null:t.sec_label_xattr,delete t.sec_label_xattr,t}}var Kp=s["ɵcrt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function $p(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Jp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No cluster available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Zp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the cluster --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Qp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.cluster_id),t(e,2,0,e.context.$implicit.cluster_id)}),(function(t,e){t(e,3,0,e.context.$implicit.cluster_id)}))}function Xp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function tb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,2,{FormControlNames:1}),s["ɵqud"](603979776,3,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","cluster_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster"])),(t()(),s["ɵeld"](6,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","cluster_id"],["id","cluster_id"],["name","cluster_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.onClusterChange()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](10,671744,[[2,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$p)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jp)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zp)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qp)),s["ɵdid"](22,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xp)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"cluster_id"),t(e,14,0,"cluster_id"),t(e,16,0,null===n.allClusters),t(e,18,0,null!==n.allClusters&&0===n.allClusters.length),t(e,20,0,null!==n.allClusters&&n.allClusters.length>0),t(e,22,0,n.allClusters),t(e,24,0,n.nfsForm.showError("cluster_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function eb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeDaemon(t.parent.context.index,t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1)],(function(t,e){var n=t(e,5,0,e.component.icons.destroy);t(e,4,0,n)}),null)}function nb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),s["ɵdid"](3,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,eb)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,5,0,"user"===e.component.clusterType)}),(function(t,e){t(e,2,0,e.context.$implicit)}))}function ab(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.onDaemonSelection()&&a),a}),Ep.b,Ep.a)),s["ɵdid"](3,638976,null,0,Lp.a,[Xt.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(t()(),s["ɵeld"](4,0,null,0,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵeld"](8,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add daemon"]))],(function(t,e){var n=e.component;t(e,3,0,"btn btn-light float-right",n.nfsForm.get("daemons").value,n.daemonsSelections,n.daemonsMessages);var a=t(e,7,0,n.icons.add);t(e,6,0,a)}),null)}function rb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add all daemons"]))],null,null)}function ib(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Remove all daemons"]))],null,null)}function sb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,7,"button",[["class","btn btn-light float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onToggleAllDaemonsSelection()&&a),a}),null,null)),(t()(),s["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](5,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](6,1),(t()(),s["ɵand"](16777216,null,null,1,null,rb)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["hasDaemons",2]],null,0,null,ib))],(function(t,e){var n=e.component,a=t(e,6,0,n.icons.add);t(e,5,0,a),t(e,8,0,0===n.nfsForm.getValue("daemons").length,s["ɵnov"](e,9))}),null)}function ub(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,4,{FormControlNames:1}),s["ɵqud"](603979776,5,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,2,"label",[["class","cd-col-form-label"],["for","daemons"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemons"])),(t()(),s["ɵeld"](7,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,nb)),s["ɵdid"](9,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ab)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sb)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,9,0,n.nfsForm.getValue("daemons")),t(e,11,0,"user"===n.clusterType),t(e,13,0,"orchestrator"===n.clusterType)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess)}))}function ob(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function lb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No data pools available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function db(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the storage backend --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function cb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.descr)}))}function fb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function hb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function gb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No users available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function pb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the object gateway user --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function bb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function mb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function yb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,8,{FormControlNames:1}),s["ɵqud"](603979776,9,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","rgw_user_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway User"])),(t()(),s["ɵeld"](6,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","rgw_user_id"],["id","rgw_user_id"],["name","rgw_user_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](10,671744,[[8,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hb)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gb)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pb)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bb)),s["ɵdid"](22,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mb)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"rgw_user_id"),t(e,14,0,"rgw_user_id"),t(e,16,0,null===n.allRgwUsers),t(e,18,0,null!==n.allRgwUsers&&0===n.allRgwUsers.length),t(e,20,0,null!==n.allRgwUsers&&n.allRgwUsers.length>0),t(e,22,0,n.allRgwUsers),t(e,24,0,n.nfsForm.showError("rgw_user_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function vb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function xb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No clients available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function _b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the cephx client --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Tb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function wb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Ob(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,10,{FormControlNames:1}),s["ɵqud"](603979776,11,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","user_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS User ID"])),(t()(),s["ɵeld"](6,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","user_id"],["id","user_id"],["name","user_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](10,671744,[[10,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vb)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xb)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_b)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tb)),s["ɵdid"](22,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wb)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"user_id"),t(e,14,0,"user_id"),t(e,16,0,null===n.allCephxClients),t(e,18,0,null!==n.allCephxClients&&0===n.allCephxClients.length),t(e,20,0,null!==n.allCephxClients&&n.allCephxClients.length>0),t(e,22,0,n.allCephxClients),t(e,24,0,n.nfsForm.showError("user_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function Sb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Ib(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No CephFS filesystem available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Nb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the CephFS filesystem --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Cb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.name),t(e,2,0,e.context.$implicit.name)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function Rb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Ab(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,12,{FormControlNames:1}),s["ɵqud"](603979776,13,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","fs_name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS Name"])),(t()(),s["ɵeld"](6,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","fs_name"],["id","fs_name"],["name","fs_name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](10,671744,[[12,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sb)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ib)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nb)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cb)),s["ɵdid"](22,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rb)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"fs_name"),t(e,14,0,"fs_name"),t(e,16,0,null===n.allFsNames),t(e,18,0,null!==n.allFsNames&&0===n.allFsNames.length),t(e,20,0,null!==n.allFsNames&&n.allFsNames.length>0),t(e,22,0,n.allFsNames),t(e,24,0,n.nfsForm.showError("fs_name",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function kb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"input",[["class","form-control"],["formControlName","sec_label_xattr"],["id","sec_label_xattr"],["name","sec_label_xattr"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,1)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](3,671744,[[14,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](5,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](6,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](7,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,"sec_label_xattr"),t(e,7,0,"sec_label_xattr")}),(function(t,e){t(e,0,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass)}))}function Eb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Lb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,14,{FormControlNames:1}),s["ɵqud"](603979776,15,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","security_label"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{required:0}),(t()(),s["ɵted"](-1,null,["Security Label"])),(t()(),s["ɵeld"](9,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","security_label"],["id","security_label"],["name","security_label"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,12).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,12).onTouched()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](14,671744,[[14,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](16,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](17,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](18,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](19,0,null,null,1,"label",[["class","custom-control-label"],["for","security_label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Enable security label"])),(t()(),s["ɵeld"](21,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,kb)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Eb)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0);var a=t(e,7,0,n.nfsForm.getValue("security_label"));t(e,6,0,"cd-col-form-label",a),t(e,14,0,"security_label"),t(e,18,0,"security_label"),t(e,23,0,n.nfsForm.getValue("security_label")),t(e,25,0,n.nfsForm.showError("sec_label_xattr",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending,s["ɵnov"](e,18).validClass,s["ɵnov"](e,18).invalidClass)}))}function Db(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Pb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path need to start with a '/' and can be followed by a word"]))],null,null)}function Mb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New directory will be created"]))],null,null)}function qb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,16,{FormControlNames:1}),s["ɵqud"](603979776,17,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","path"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS Path"])),(t()(),s["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,8,"input",[["class","form-control"],["formControlName","path"],["id","path"],["name","path"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,14).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,14).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.pathChangeHandler()&&a),"blur"===e&&(a=!1!==r.pathChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](10,671744,[[16,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,212992,null,0,Yu,[U.a,zu,s.ChangeDetectorRef,s.ElementRef,K.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Db)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pb)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mb)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"path"),t(e,14,0,n.pathDataSource),t(e,15,0,"path"),t(e,17,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"required")),t(e,19,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"pattern")),t(e,21,0,n.isNewDirectory&&!n.nfsForm.showError("path",s["ɵnov"](e.parent,6)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass)}))}function jb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Fb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path can only be a single '/' or a word"]))],null,null)}function Vb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New bucket will be created"]))],null,null)}function Gb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,18,{FormControlNames:1}),s["ɵqud"](603979776,19,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","path"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path"])),(t()(),s["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,8,"input",[["class","form-control"],["formControlName","path"],["id","path"],["name","path"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,14).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,14).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.bucketChangeHandler()&&a),"blur"===e&&(a=!1!==r.bucketChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](10,671744,[[18,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,212992,null,0,Yu,[U.a,zu,s.ChangeDetectorRef,s.ElementRef,K.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jb)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fb)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vb)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"path"),t(e,14,0,n.bucketDataSource),t(e,15,0,"path"),t(e,17,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"required")),t(e,19,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"pattern")),t(e,21,0,n.isNewBucket&&!n.nfsForm.showError("path",s["ɵnov"](e.parent,6)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass)}))}function Bb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function zb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,22,{FormControlNames:1}),s["ɵqud"](603979776,23,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,13,"label",[["class","cd-col-form-label"],["for","tag"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS Tag"])),(t()(),s["ɵeld"](7,0,null,null,10,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](8,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,4,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Alternative access for "])),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS v3"])),(t()(),s["ɵted"](-1,null,[" mounts (it must not have a leading /)."])),(t()(),s["ɵeld"](14,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz)."])),(t()(),s["ɵeld"](16,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["By using different Tag options, the same Path may be exported multiple times."])),(t()(),s["ɵeld"](18,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,7,"input",[["class","form-control"],["formControlName","tag"],["id","tag"],["name","tag"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,20)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,20).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,20)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,20)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](22,671744,[[22,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](24,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](25,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](26,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,22,0,"tag"),t(e,26,0,"tag")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,19,0,s["ɵnov"](e,24).ngClassUntouched,s["ɵnov"](e,24).ngClassTouched,s["ɵnov"](e,24).ngClassPristine,s["ɵnov"](e,24).ngClassDirty,s["ɵnov"](e,24).ngClassValid,s["ɵnov"](e,24).ngClassInvalid,s["ɵnov"](e,24).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass)}))}function Yb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Hb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or )."]))],null,null)}function Ub(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,31,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,24,{FormControlNames:1}),s["ɵqud"](603979776,25,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,14,"label",[["class","cd-col-form-label"],["for","pseudo"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo"])),(t()(),s["ɵeld"](7,0,null,null,11,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](8,49152,null,0,$u.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,7,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The position that this "])),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS v4"])),(t()(),s["ɵted"](-1,null,[" export occupies in the "])),(t()(),s["ɵeld"](14,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo FS"])),(t()(),s["ɵted"](-1,null,[" (it must be unique)."])),(t()(),s["ɵeld"](17,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["By using different Pseudo options, the same Path may be exported multiple times."])),(t()(),s["ɵeld"](19,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,7,"input",[["class","form-control"],["formControlName","pseudo"],["id","pseudo"],["name","pseudo"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,21)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](23,671744,[[24,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](25,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](26,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yb)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hb)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,23,0,"pseudo"),t(e,27,0,"pseudo"),t(e,29,0,n.nfsForm.showError("pseudo",s["ɵnov"](e.parent,6),"required")),t(e,31,0,n.nfsForm.showError("pseudo",s["ɵnov"](e.parent,6),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,20,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass)}))}function Wb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Kb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No access type available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function $b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the access type --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Jb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function Zb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,1,0,n.getAccessTypeHelp(n.nfsForm.getValue("access_type")))}))}function Qb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","form-text text-warning"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The Object Gateway NFS backend has a number of limitations which will seriously affect applications writing to the share. Please consult the "])),(t()(),s["ɵeld"](2,0,null,null,1,"cd-doc",[["section","rgw-nfs"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](3,114688,null,0,ti.a,[Tt.a,Xt.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,null,[" for details before enabling write access."]))],(function(t,e){t(e,3,0,"rgw-nfs")}),null)}function Xb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function tm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function em(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No squash available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function nm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["--Select what kind of user id squashing is performed --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function am(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function rm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function im(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function sm(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Zs.a,[]),s["ɵqud"](402653184,1,{nfsClients:0}),(t()(),s["ɵeld"](3,0,null,null,189,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,188,"form",[["name","nfsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,6).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit()&&a),a}),null,null)),s["ɵdid"](5,16384,null,0,K.G,[],null,null),s["ɵdid"](6,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](8,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](9,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](10,0,null,null,182,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](12,null,[""," ",""])),s["ɵppd"](13,1),s["ɵppd"](14,1),(t()(),s["ɵeld"](15,0,null,null,168,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,tb)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ub)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](20,0,null,null,34,"div",[["formGroupName","fsal"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](21,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](23,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](24,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](25,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,6,{FormControlNames:1}),s["ɵqud"](603979776,7,{messagesBlock:0}),(t()(),s["ɵeld"](28,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Storage Backend"])),(t()(),s["ɵeld"](30,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](31,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","name"],["id","name"],["name","name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,32).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,32).onTouched()&&a),"change"===e&&(a=!1!==r.fsalChangeHandler()&&a),a}),null,null)),s["ɵdid"](32,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](34,671744,[[6,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](36,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](37,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](38,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ob)),s["ɵdid"](40,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lb)),s["ɵdid"](42,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,db)),s["ɵdid"](44,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cb)),s["ɵdid"](46,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fb)),s["ɵdid"](48,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yb)),s["ɵdid"](50,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ob)),s["ɵdid"](52,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ab)),s["ɵdid"](54,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lb)),s["ɵdid"](56,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qb)),s["ɵdid"](58,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gb)),s["ɵdid"](60,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](61,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](62,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,20,{FormControlNames:1}),s["ɵqud"](603979776,21,{messagesBlock:0}),(t()(),s["ɵeld"](65,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","protocols"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS Protocol"])),(t()(),s["ɵeld"](67,0,null,0,24,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](68,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](69,0,null,null,7,"input",[["class","custom-control-input"],["disabled",""],["formControlName","protocolNfsv3"],["id","protocolNfsv3"],["name","protocolNfsv3"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,70).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,70).onTouched()&&a),a}),null,null)),s["ɵdid"](70,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](72,671744,[[20,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"],isDisabled:[1,"isDisabled"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](74,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](75,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](76,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](77,0,null,null,1,"label",[["class","custom-control-label"],["for","protocolNfsv3"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFSv3"])),(t()(),s["ɵeld"](79,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](80,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","protocolNfsv4"],["id","protocolNfsv4"],["name","protocolNfsv4"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,81).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,81).onTouched()&&a),a}),null,null)),s["ɵdid"](81,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](83,671744,[[20,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](85,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](86,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](87,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](88,0,null,null,1,"label",[["class","custom-control-label"],["for","protocolNfsv4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFSv4"])),(t()(),s["ɵand"](16777216,null,null,1,null,Bb)),s["ɵdid"](91,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zb)),s["ɵdid"](93,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ub)),s["ɵdid"](95,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](96,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](97,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,26,{FormControlNames:1}),s["ɵqud"](603979776,27,{messagesBlock:0}),(t()(),s["ɵeld"](100,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","access_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Access Type"])),(t()(),s["ɵeld"](102,0,null,0,22,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](103,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","access_type"],["id","access_type"],["name","access_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,104).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,104).onTouched()&&a),"change"===e&&(a=!1!==r.accessTypeChangeHandler()&&a),a}),null,null)),s["ɵdid"](104,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](106,671744,[[26,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](108,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](109,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](110,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wb)),s["ɵdid"](112,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kb)),s["ɵdid"](114,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$b)),s["ɵdid"](116,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jb)),s["ɵdid"](118,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zb)),s["ɵdid"](120,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qb)),s["ɵdid"](122,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xb)),s["ɵdid"](124,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](125,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](126,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,28,{FormControlNames:1}),s["ɵqud"](603979776,29,{messagesBlock:0}),(t()(),s["ɵeld"](129,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","squash"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Squash"])),(t()(),s["ɵeld"](131,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](132,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","squash"],["id","squash"],["name","squash"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,133).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,133).onTouched()&&a),a}),null,null)),s["ɵdid"](133,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](135,671744,[[28,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](137,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](138,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](139,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tm)),s["ɵdid"](141,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,em)),s["ɵdid"](143,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,nm)),s["ɵdid"](145,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,am)),s["ɵdid"](147,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rm)),s["ɵdid"](149,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](150,0,null,null,31,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](151,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,30,{FormControlNames:1}),s["ɵqud"](603979776,31,{messagesBlock:0}),(t()(),s["ɵeld"](154,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","transports"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Transport Protocol"])),(t()(),s["ɵeld"](156,0,null,0,25,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](157,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](158,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","transportUDP"],["id","transportUDP"],["name","transportUDP"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,159).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,159).onTouched()&&a),a}),null,null)),s["ɵdid"](159,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](161,671744,[[30,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](163,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](164,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](165,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](166,0,null,null,1,"label",[["class","custom-control-label"],["for","transportUDP"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["UDP"])),(t()(),s["ɵeld"](168,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](169,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","transportTCP"],["id","transportTCP"],["name","transportTCP"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,170).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,170).onTouched()&&a),a}),null,null)),s["ɵdid"](170,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](172,671744,[[30,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](174,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](175,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](176,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](177,0,null,null,1,"label",[["class","custom-control-label"],["for","transportTCP"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["TCP"])),(t()(),s["ɵand"](16777216,null,null,1,null,im)),s["ɵdid"](180,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](181,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),s["ɵeld"](182,0,null,null,1,"cd-nfs-form-client",[],null,null,null,Yp,Mp)),s["ɵdid"](183,49152,[[1,4],["nfsClients",4]],0,Pp,[wp,Xt.a],{form:[0,"form"]},null),(t()(),s["ɵeld"](184,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](185,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](186,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](187,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](188,0,[""," ",""])),s["ɵppd"](189,1),s["ɵppd"](190,1),(t()(),s["ɵeld"](191,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](192,49152,null,0,Js.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,6,0,n.nfsForm),t(e,9,0,n.nfsForm),t(e,17,0,!n.isDefaultCluster),t(e,19,0,n.clusterType),t(e,21,0,"fsal"),t(e,25,0),t(e,34,0,"name"),t(e,38,0,"name"),t(e,40,0,null===n.allFsals),t(e,42,0,null!==n.allFsals&&0===n.allFsals.length),t(e,44,0,null!==n.allFsals&&n.allFsals.length>0),t(e,46,0,n.allFsals),t(e,48,0,n.nfsForm.showError("name",s["ɵnov"](e,6),"required")),t(e,50,0,"RGW"===n.nfsForm.getValue("name")),t(e,52,0,"CEPH"===n.nfsForm.getValue("name")),t(e,54,0,"CEPH"===n.nfsForm.getValue("name")),t(e,56,0,"CEPH"===n.nfsForm.getValue("name")),t(e,58,0,"CEPH"===n.nfsForm.getValue("name")),t(e,60,0,"RGW"===n.nfsForm.getValue("name")),t(e,62,0),t(e,72,0,"protocolNfsv3",""),t(e,76,0,"protocolNfsv3"),t(e,83,0,"protocolNfsv4"),t(e,87,0,"protocolNfsv4"),t(e,91,0,n.nfsForm.showError("protocolNfsv3",s["ɵnov"](e,6),"required")||n.nfsForm.showError("protocolNfsv4",s["ɵnov"](e,6),"required")),t(e,93,0,n.nfsForm.getValue("protocolNfsv3")),t(e,95,0,n.nfsForm.getValue("protocolNfsv4")),t(e,97,0),t(e,106,0,"access_type"),t(e,110,0,"access_type"),t(e,112,0,null===n.nfsAccessType),t(e,114,0,null!==n.nfsAccessType&&0===n.nfsAccessType.length),t(e,116,0,null!==n.nfsAccessType&&n.nfsAccessType.length>0),t(e,118,0,n.nfsAccessType),t(e,120,0,n.nfsForm.getValue("access_type")),t(e,122,0,"RW"===n.nfsForm.getValue("access_type")&&"RGW"===n.nfsForm.getValue("name")),t(e,124,0,n.nfsForm.showError("access_type",s["ɵnov"](e,6),"required")),t(e,126,0),t(e,135,0,"squash"),t(e,139,0,"squash"),t(e,141,0,null===n.nfsSquash),t(e,143,0,null!==n.nfsSquash&&0===n.nfsSquash.length),t(e,145,0,null!==n.nfsSquash&&n.nfsSquash.length>0),t(e,147,0,n.nfsSquash),t(e,149,0,n.nfsForm.showError("squash",s["ɵnov"](e,6),"required")),t(e,151,0),t(e,161,0,"transportUDP"),t(e,165,0,"transportUDP"),t(e,172,0,"transportTCP"),t(e,176,0,"transportTCP"),t(e,180,0,n.nfsForm.showError("transportUDP",s["ɵnov"](e,6),"required")||n.nfsForm.showError("transportTCP",s["ɵnov"](e,6),"required")),t(e,183,0,n.nfsForm),t(e,187,0,s["ɵnov"](e,6))}),(function(t,e){var n=e.component;t(e,4,0,s["ɵnov"](e,8).ngClassUntouched,s["ɵnov"](e,8).ngClassTouched,s["ɵnov"](e,8).ngClassPristine,s["ɵnov"](e,8).ngClassDirty,s["ɵnov"](e,8).ngClassValid,s["ɵnov"](e,8).ngClassInvalid,s["ɵnov"](e,8).ngClassPending);var a=s["ɵunv"](e,12,0,t(e,13,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,12,1,t(e,14,0,s["ɵnov"](e,1),n.resource));t(e,12,0,a,r),t(e,20,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending),t(e,24,0,s["ɵnov"](e,25).hasErrors,s["ɵnov"](e,25).hasSuccess),t(e,31,0,s["ɵnov"](e,36).ngClassUntouched,s["ɵnov"](e,36).ngClassTouched,s["ɵnov"](e,36).ngClassPristine,s["ɵnov"](e,36).ngClassDirty,s["ɵnov"](e,36).ngClassValid,s["ɵnov"](e,36).ngClassInvalid,s["ɵnov"](e,36).ngClassPending,s["ɵnov"](e,38).validClass,s["ɵnov"](e,38).invalidClass),t(e,61,0,s["ɵnov"](e,62).hasErrors,s["ɵnov"](e,62).hasSuccess),t(e,69,0,s["ɵnov"](e,74).ngClassUntouched,s["ɵnov"](e,74).ngClassTouched,s["ɵnov"](e,74).ngClassPristine,s["ɵnov"](e,74).ngClassDirty,s["ɵnov"](e,74).ngClassValid,s["ɵnov"](e,74).ngClassInvalid,s["ɵnov"](e,74).ngClassPending,s["ɵnov"](e,76).validClass,s["ɵnov"](e,76).invalidClass),t(e,80,0,s["ɵnov"](e,85).ngClassUntouched,s["ɵnov"](e,85).ngClassTouched,s["ɵnov"](e,85).ngClassPristine,s["ɵnov"](e,85).ngClassDirty,s["ɵnov"](e,85).ngClassValid,s["ɵnov"](e,85).ngClassInvalid,s["ɵnov"](e,85).ngClassPending,s["ɵnov"](e,87).validClass,s["ɵnov"](e,87).invalidClass),t(e,96,0,s["ɵnov"](e,97).hasErrors,s["ɵnov"](e,97).hasSuccess),t(e,103,0,s["ɵnov"](e,108).ngClassUntouched,s["ɵnov"](e,108).ngClassTouched,s["ɵnov"](e,108).ngClassPristine,s["ɵnov"](e,108).ngClassDirty,s["ɵnov"](e,108).ngClassValid,s["ɵnov"](e,108).ngClassInvalid,s["ɵnov"](e,108).ngClassPending,s["ɵnov"](e,110).validClass,s["ɵnov"](e,110).invalidClass),t(e,125,0,s["ɵnov"](e,126).hasErrors,s["ɵnov"](e,126).hasSuccess),t(e,132,0,s["ɵnov"](e,137).ngClassUntouched,s["ɵnov"](e,137).ngClassTouched,s["ɵnov"](e,137).ngClassPristine,s["ɵnov"](e,137).ngClassDirty,s["ɵnov"](e,137).ngClassValid,s["ɵnov"](e,137).ngClassInvalid,s["ɵnov"](e,137).ngClassPending,s["ɵnov"](e,139).validClass,s["ɵnov"](e,139).invalidClass),t(e,150,0,s["ɵnov"](e,151).hasErrors,s["ɵnov"](e,151).hasSuccess),t(e,158,0,s["ɵnov"](e,163).ngClassUntouched,s["ɵnov"](e,163).ngClassTouched,s["ɵnov"](e,163).ngClassPristine,s["ɵnov"](e,163).ngClassDirty,s["ɵnov"](e,163).ngClassValid,s["ɵnov"](e,163).ngClassInvalid,s["ɵnov"](e,163).ngClassPending,s["ɵnov"](e,165).validClass,s["ɵnov"](e,165).invalidClass),t(e,169,0,s["ɵnov"](e,174).ngClassUntouched,s["ɵnov"](e,174).ngClassTouched,s["ɵnov"](e,174).ngClassPristine,s["ɵnov"](e,174).ngClassDirty,s["ɵnov"](e,174).ngClassValid,s["ɵnov"](e,174).ngClassInvalid,s["ɵnov"](e,174).ngClassPending,s["ɵnov"](e,176).validClass,s["ɵnov"](e,176).invalidClass);var i=s["ɵunv"](e,188,0,t(e,189,0,s["ɵnov"](e,0),n.action)),u=s["ɵunv"](e,188,1,t(e,190,0,s["ɵnov"](e,1),n.resource));t(e,188,0,i,u)}))}function um(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-nfs-form",[],null,null,null,sm,Kp)),s["ɵdid"](1,114688,null,0,Wp,[Z.a,wp,Et.a,Et.m,Hp.a,to.a,Es.a,s.ChangeDetectorRef,Xt.a,St.b],null,null)],(function(t,e){t(e,1,0)}),null)}var om=s["ɵccf"]("cd-nfs-form",Wp,um,{},{},[]);class lm{}var dm=s["ɵcrt"]({encapsulation:0,styles:[[".login{color:#fff;background-color:#374249;background-image:url(ceph_background.7c127240f022e7baf57d.gif);background-position:right bottom;background-repeat:no-repeat}  .login header{position:absolute;width:100vw}  .login header .navbar{padding:1rem 2rem}  .login header .navbar .dropdown-menu{margin-top:.2rem}  .login header .navbar .dropdown-menu li a:hover{background-color:#2b99a8}  .login section{display:inline-flex;width:100vw;min-height:100vh}"]],data:{}});function cm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"main",[["class","login full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"header",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"nav",[["class","navbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,0,"a",[["class","navbar-brand"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,2,"div",[["class","form-inline"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"cd-language-selector",[],null,null,null,ht,ut)),s["ɵdid"](6,114688,null,0,it,[st.l,nt],null,null),(t()(),s["ɵeld"](7,0,null,null,6,"section",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,5,"div",[["class","container"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,4,"div",[["class","row full-height vertical-align"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","col-sm-12 col-md-6 d-sm-block"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,0,"img",[["alt","Ceph"],["class","img-fluid mb-5"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](13,212992,null,0,Et.r,[Et.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,6,0),t(e,13,0)}),null)}function fm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login-layout",[],null,null,null,cm,dm)),s["ɵdid"](1,49152,null,0,lm,[],null,null)],null,null)}var hm=s["ɵccf"]("cd-login-layout",lm,fm,{},{},[]);class gm{}class pm{constructor(t,e,n,a,r){this.authService=t,this.authStorageService=e,this.bsModalService=n,this.route=a,this.router=r,this.model=new gm,this.isLoginActive=!1}ngOnInit(){if(this.authStorageService.isLoggedIn())this.router.navigate([""]);else{const t=this.bsModalService.getModalsCount();for(let n=1;n<=t;n++)this.bsModalService.hide(n);let e=null;if(-1!==window.location.hash.indexOf("access_token=")){e=window.location.hash.split("access_token=")[1];const t=window.location.toString();window.history.replaceState({},document.title,t.split("?")[0])}this.authService.check(e).subscribe(t=>{t.login_url?"#/login"===t.login_url?this.isLoginActive=!0:window.location.replace(t.login_url):(this.authStorageService.set(t.username,t.permissions,t.sso,t.pwdExpirationDate),this.router.navigate([""]))})}}login(){this.authService.login(this.model).subscribe(()=>{const t=X.get(this.route.snapshot.queryParams,"returnUrl","/");this.router.navigate([t])})}}var bm=s["ɵcrt"]({encapsulation:0,styles:[["cd-login .form-group{border-left:4px solid #fff;background-color:#333e46;height:auto;margin-bottom:2rem}  cd-login .form-group:focus-within{border-left:4px solid #ef5c55}  cd-login .form-group .invalid-feedback{display:inline}  cd-login .btn-password,   cd-login .btn-password:focus,   cd-login .form-control,   cd-login .form-control:focus{border:none;outline:0;box-shadow:none;color:#fff;background-color:#333e46;filter:none}  cd-login .placeholder{color:#90949c}  cd-login .btn-password:focus{outline-color:#2b99a8}@keyframes autofill{to{color:#fff;background-color:#333e46}}input[_ngcontent-%COMP%]:-webkit-autofill{animation-name:autofill;animation-fill-mode:both;box-shadow:0 0 0 1000px #333e46 inset;-webkit-text-fill-color:#fff;transition-property:none;border-radius:0}"]],data:{}});function mm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","invalid-feedback pl-4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Username is required"]))],null,null)}function ym(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","invalid-feedback pl-4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password is required"]))],null,null)}function vm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,49,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,48,"form",[["name","loginForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngSubmit"],[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0,r=t.component;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"ngSubmit"===e&&(a=!1!==r.login()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,4210688,[["loginForm",4]],0,K.t,[[8,null],[8,null]],null,{ngSubmit:"ngSubmit"}),s["ɵprd"](2048,null,K.d,null,[K.t]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](6,0,null,null,18,"div",[["class","form-group has-feedback d-flex flex-column py-3"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](7,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](10,0,null,0,1,"label",[["class","placeholder pl-4"],["for","username"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Username"])),(t()(),s["ɵeld"](12,0,null,0,10,"input",[["aria-labelledby","username"],["autofocus",""],["class","form-control pl-4"],["id","username"],["name","username"],["required",""],["type","text"]],[[1,"aria-invalid",0],[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,13)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,13)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,13)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.username=n)&&a),a}),null,null)),s["ɵdid"](13,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](14,16384,null,0,K.z,[],{required:[0,"required"]},null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[K.z]),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](17,671744,[["username",4]],0,K.u,[[2,K.d],[6,K.o],[8,null],[6,K.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](19,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](20,4210688,null,0,Us.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,Q.h,[[3,K.d],Q.a],null,null),(t()(),s["ɵand"](16777216,null,0,1,null,mm)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](25,0,null,null,22,"div",[["class","form-group has-feedback"],["id","password-div"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](26,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](29,0,null,0,18,"div",[["class","input-group d-flex flex-nowrap"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,14,"div",[["class","d-flex flex-column flex-grow-1 py-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](31,0,null,null,1,"label",[["class","placeholder pl-4"],["for","password"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password"])),(t()(),s["ɵeld"](33,0,null,null,9,"input",[["aria-labelledby","password"],["class","form-control pl-4"],["id","password"],["name","password"],["required",""],["type","password"]],[[1,"aria-invalid",0],[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,34)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,34).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,34)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,34)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.password=n)&&a),a}),null,null)),s["ɵdid"](34,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](35,16384,null,0,K.z,[],{required:[0,"required"]},null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[K.z]),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](38,671744,[["password",4]],0,K.u,[[2,K.d],[6,K.o],[8,null],[6,K.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](40,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](41,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](42,16384,null,0,Q.h,[[3,K.d],Q.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,ym)),s["ɵdid"](44,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](45,0,null,null,2,"span",[["class","form-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-outline-light btn-password h-100 px-4"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,47).onClick()&&a),a}),null,null)),s["ɵdid"](47,81920,null,0,Ju.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](48,0,null,null,1,"input",[["class","btn btn-secondary px-5 py-2"],["type","submit"],["value","Login"]],[[8,"disabled",0]],null,null,null,null)),s["ɵdid"](49,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null)],(function(t,e){var n=e.component;t(e,7,0),t(e,14,0,""),t(e,17,0,"username",n.model.username),t(e,20,0,""),t(e,24,0,(s["ɵnov"](e,3).submitted||s["ɵnov"](e,17).dirty)&&s["ɵnov"](e,17).invalid),t(e,26,0),t(e,35,0,""),t(e,38,0,"password",n.model.password),t(e,44,0,(s["ɵnov"](e,3).submitted||s["ɵnov"](e,38).dirty)&&s["ɵnov"](e,38).invalid),t(e,47,0,"password")}),(function(t,e){t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,6,0,s["ɵnov"](e,7).hasErrors,s["ɵnov"](e,7).hasSuccess),t(e,12,1,[s["ɵnov"](e,17).invalid,s["ɵnov"](e,14).required?"":null,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,22).validClass,s["ɵnov"](e,22).invalidClass]),t(e,25,0,s["ɵnov"](e,26).hasErrors,s["ɵnov"](e,26).hasSuccess),t(e,33,1,[s["ɵnov"](e,38).invalid,s["ɵnov"](e,35).required?"":null,s["ɵnov"](e,40).ngClassUntouched,s["ɵnov"](e,40).ngClassTouched,s["ɵnov"](e,40).ngClassPristine,s["ɵnov"](e,40).ngClassDirty,s["ɵnov"](e,40).ngClassValid,s["ɵnov"](e,40).ngClassInvalid,s["ɵnov"](e,40).ngClassPending,s["ɵnov"](e,42).validClass,s["ɵnov"](e,42).invalidClass]),t(e,48,0,s["ɵnov"](e,3).invalid)}))}function xm(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,vm)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.isLoginActive)}),null)}function _m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login",[],null,null,null,xm,bm)),s["ɵdid"](1,114688,null,0,pm,[Vt.a,Z.a,Ct.b,Et.a,Et.m],null,null)],(function(t,e){t(e,1,0)}),null)}var Tm=s["ɵccf"]("cd-login",pm,_m,{},{},[]);class wm extends tp{constructor(t,e,n,a,r,i,s,u,o){super(t,e,n,a,r,i,s,u),this.i18n=t,this.actionLabels=e,this.notificationService=n,this.userService=a,this.authStorageService=r,this.formBuilder=i,this.router=s,this.passwordPolicyService=u,this.authService=o}onPasswordChange(){this.authService.logout()}onCancel(){this.authService.logout()}}var Om=s["ɵcrt"]({encapsulation:0,styles:[["cd-login-password-form h4{margin:0 0 30px}  cd-login-password-form .btn-password,   cd-login-password-form .btn-password:focus,   cd-login-password-form .form-control,   cd-login-password-form .form-control:focus{color:#fff;background-color:#333e46}  cd-login-password-form .form-control::placeholder{color:#90949c}  cd-login-password-form .btn-password:focus{outline-color:#2b99a8}  cd-login-password-form button.btn:not(:first-child){margin-left:5px}"]],data:{}});function Sm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Im(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function Nm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Cm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function Rm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.passwordValuation)}))}function Am(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function km(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password confirmation doesn't match the new password."]))],null,null)}function Em(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Zs.a,[]),(t()(),s["ɵeld"](2,0,null,null,84,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"h2",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please set a new password."])),(t()(),s["ɵeld"](5,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You will be redirected to the login page afterwards."])),(t()(),s["ɵeld"](7,0,null,null,70,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,9).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,12).onSubmit()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.G,[],null,null),s["ɵdid"](9,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](11,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](12,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](13,0,null,null,20,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](14,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,12,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,8,"input",[["autocomplete","new-password"],["autofocus",""],["class","form-control"],["formControlName","oldpassword"],["id","oldpassword"],["placeholder","Old password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](21,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](23,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](24,4210688,null,0,Us.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](25,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](26,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](27,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"button",[["cdPasswordButton","oldpassword"],["class","btn btn-outline-light btn-password"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,29).onClick()&&a),a}),null,null)),s["ɵdid"](29,81920,null,0,Ju.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Sm)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Im)),s["ɵdid"](33,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](34,0,null,null,23,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](35,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](38,0,null,0,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](39,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","newpassword"],["id","newpassword"],["placeholder","New password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,40)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,40).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,40)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,40)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](40,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](42,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](44,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](45,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](46,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](47,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,1,"button",[["cdPasswordButton","newpassword"],["class","btn btn-outline-light btn-password"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,49).onClick()&&a),a}),null,null)),s["ɵdid"](49,81920,null,0,Ju.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](50,0,null,0,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(t()(),s["ɵeld"](51,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,0,1,null,Nm)),s["ɵdid"](53,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Cm)),s["ɵdid"](55,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Rm)),s["ɵdid"](57,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](58,0,null,null,19,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](59,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](62,0,null,0,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](63,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","confirmnewpassword"],["id","confirmnewpassword"],["placeholder","Confirm new password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,64)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,64).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,64)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,64)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](64,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](66,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](68,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](69,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](70,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](71,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](72,0,null,null,1,"button",[["cdPasswordButton","confirmnewpassword"],["class","btn btn-outline-light btn-password"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,73).onClick()&&a),a}),null,null)),s["ɵdid"](73,81920,null,0,Ju.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Am)),s["ɵdid"](75,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,km)),s["ɵdid"](77,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](78,0,null,null,8,"div",[["class","form-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](79,0,null,null,4,"cd-submit-button",[["btnClass","btn-block"],["class","full-width"]],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](80,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"],btnClass:[1,"btnClass"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](81,0,[" "," "," "])),s["ɵppd"](82,1),s["ɵppd"](83,1),(t()(),s["ɵeld"](84,0,null,null,2,"button",[["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onCancel()&&a),a}),null,null)),(t()(),s["ɵeld"](85,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cancel"]))],(function(t,e){var n=e.component;t(e,9,0,n.userForm),t(e,12,0,n.userForm),t(e,14,0),t(e,21,0,"oldpassword"),t(e,24,0,""),t(e,26,0,"oldpassword"),t(e,29,0,"oldpassword"),t(e,31,0,n.userForm.showError("oldpassword",s["ɵnov"](e,9),"required")),t(e,33,0,n.userForm.showError("oldpassword",s["ɵnov"](e,9),"notmatch")),t(e,35,0),t(e,42,0,"newpassword"),t(e,46,0,"newpassword"),t(e,49,0,"newpassword"),t(e,53,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"required")),t(e,55,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"notmatch")),t(e,57,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"passwordPolicy")),t(e,59,0),t(e,66,0,"confirmnewpassword"),t(e,70,0,"confirmnewpassword"),t(e,73,0,"confirmnewpassword"),t(e,75,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,9),"required")),t(e,77,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,9),"match")),t(e,80,0,n.userForm,"btn-block")}),(function(t,e){var n=e.component;t(e,7,0,s["ɵnov"](e,11).ngClassUntouched,s["ɵnov"](e,11).ngClassTouched,s["ɵnov"](e,11).ngClassPristine,s["ɵnov"](e,11).ngClassDirty,s["ɵnov"](e,11).ngClassValid,s["ɵnov"](e,11).ngClassInvalid,s["ɵnov"](e,11).ngClassPending),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass),t(e,34,0,s["ɵnov"](e,35).hasErrors,s["ɵnov"](e,35).hasSuccess),t(e,39,0,s["ɵnov"](e,44).ngClassUntouched,s["ɵnov"](e,44).ngClassTouched,s["ɵnov"](e,44).ngClassPristine,s["ɵnov"](e,44).ngClassDirty,s["ɵnov"](e,44).ngClassValid,s["ɵnov"](e,44).ngClassInvalid,s["ɵnov"](e,44).ngClassPending,s["ɵnov"](e,46).validClass,s["ɵnov"](e,46).invalidClass),t(e,51,0,s["ɵinlineInterpolate"](1,"",n.passwordStrengthLevelClass,""),s["ɵinlineInterpolate"](1,"",n.passwordValuation,"")),t(e,58,0,s["ɵnov"](e,59).hasErrors,s["ɵnov"](e,59).hasSuccess),t(e,63,0,s["ɵnov"](e,68).ngClassUntouched,s["ɵnov"](e,68).ngClassTouched,s["ɵnov"](e,68).ngClassPristine,s["ɵnov"](e,68).ngClassDirty,s["ɵnov"](e,68).ngClassValid,s["ɵnov"](e,68).ngClassInvalid,s["ɵnov"](e,68).ngClassPending,s["ɵnov"](e,70).validClass,s["ɵnov"](e,70).invalidClass);var a=s["ɵunv"](e,81,0,t(e,82,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,81,1,t(e,83,0,s["ɵnov"](e,1),n.resource));t(e,81,0,a,r)}))}function Lm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login-password-form",[],null,null,null,Em,Om)),s["ɵdid"](1,49152,null,0,wm,[Xt.a,St.b,bt.a,Ot.a,Z.a,to.a,Et.m,Xg.a,Vt.a],null,null)],null,null)}var Dm=s["ɵccf"]("cd-login-password-form",wm,Lm,{},{},[]);class Pm{constructor(){}}var Mm=s["ɵcrt"]({encapsulation:0,styles:[["#toast-container{margin-top:2vw}@media (max-width:1600px){  #toast-container{margin-top:2.5vw}}@media (max-width:calc(992px - 1px)){  #toast-container{margin-top:9vw}}@media (max-width:900px){  #toast-container{margin-top:10vw}}@media (max-width:319px){  #toast-container{margin-top:11vw}}@media (max-width:260px){  #toast-container{margin-top:14vw}}"]],data:{}});function qm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](1,212992,null,0,Et.r,[Et.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function jm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-blank-layout",[],null,null,null,qm,Mm)),s["ɵdid"](1,49152,null,0,Pm,[],null,null)],null,null)}var Fm=s["ɵccf"]("cd-blank-layout",Pm,jm,{},{},[]);class Vm{constructor(){this.logoutUrl=window.location.origin+"/auth/saml2/slo"}}var Gm=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function Bm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,16,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, the user does not exist in Ceph."])),(t()(),s["ɵeld"](4,0,null,null,4,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Return to "])),(t()(),s["ɵeld"](6,0,null,null,1,"a",[["class","sso-logout"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["Login Page"])),(t()(),s["ɵted"](-1,null,[". You'll be logged out from the Identity Provider when you retry logging in."])),(t()(),s["ɵeld"](9,0,null,null,0,"img",[["class","img-fluid mx-auto rounded"],["src","assets/1280px-Nautilus_Octopus.jpg"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[' "'])),(t()(),s["ɵeld"](13,0,null,null,1,"a",[["href","https://www.flickr.com/photos/146401137@N06/40335060661"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Nautilus Octopus"])),(t()(),s["ɵted"](-1,null,['" by Jin Kemoole is licensed under '])),(t()(),s["ɵeld"](16,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/2.0/"],["rel","nofollow"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CC BY 2.0"]))],null,(function(t,e){t(e,6,0,e.component.logoutUrl)}))}function zm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-sso-not-found",[],null,null,null,Bm,Gm)),s["ɵdid"](1,49152,null,0,Vm,[],null,null)],null,null)}var Ym=s["ɵccf"]("cd-sso-not-found",Vm,zm,{},{},[]);class Hm{constructor(){this.icons=pt.a}}var Um=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large;font-family:monospace}h2[_ngcontent-%COMP%]{font-size:xx-large;font-family:monospace}i[_ngcontent-%COMP%]{font-size:200px}"]],data:{}});function Wm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","horizontal-align vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"div",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Forbidden"])),(t()(),s["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"h2",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, you are not allowed to see what you were looking for."])),(t()(),s["ɵeld"](7,0,null,null,3,"button",[["class","btn btn-primary"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,8).onClick()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,Et.n,[Et.m,Et.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,8,0,"/login")}),(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"",e.component.icons.lock," text-danger"))}))}function Km(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-forbidden",[],null,null,null,Wm,Um)),s["ɵdid"](1,49152,null,0,Hm,[],null,null)],null,null)}var $m=s["ɵccf"]("cd-forbidden",Hm,Km,{},{},[]);class Jm{constructor(){}}var Zm=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large;font-family:monospace}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function Qm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","horizontal-align vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,16,"div",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, we could not find what you were looking for."])),(t()(),s["ɵeld"](4,0,null,null,0,"img",[["class","img-fluid mx-auto rounded"],["src","assets/1500px-Southern_Keeled_Octopus.jpg"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[' "'])),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["href","https://collections.museumvictoria.com.au/species/8696"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Southern Keeled Octopus, Octopus berrima"])),(t()(),s["ɵted"](-1,null,['" by Museums Victoria (Photographer: Julian Finn) is licensed under '])),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/4.0"],["rel","nofollow"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CC BY 4.0"])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,3,"button",[["class","btn btn-primary"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,15).onClick()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,Et.n,[Et.m,Et.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](16,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,15,0,"/login")}),null)}function Xm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-not-found",[],null,null,null,Qm,Zm)),s["ɵdid"](1,49152,null,0,Jm,[],null,null)],null,null)}var ty=s["ɵccf"]("cd-not-found",Jm,Xm,{},{},[]),ey=n("ES0t"),ny=n("MdoF"),ay=n("Xg1U"),ry=n("z5nN"),iy=n("iutN"),sy=n("EEJc"),uy=n("PEr+"),oy=n("a40w"),ly=n("hfeG"),dy=n("atuK"),cy=s["ɵcrt"]({encapsulation:0,styles:[[".about-container[_ngcontent-%COMP%]{background-color:#374249;background-image:url(ceph_background.7c127240f022e7baf57d.gif);background-position:right bottom;background-repeat:no-repeat;color:#fff;text-shadow:1px 1px #374249}.product-versions[_ngcontent-%COMP%]{margin-top:30px}.product-versions[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{margin-right:10px}.modal-header[_ngcontent-%COMP%]{border-bottom:none}.modal-header[_ngcontent-%COMP%]   .close[_ngcontent-%COMP%]{color:#fff;font-size:2em}.modal-body[_ngcontent-%COMP%]{padding-left:80px;padding-right:80px}.ceph-logo[_ngcontent-%COMP%]{width:25%;margin-bottom:30px;object-position:-20px 0}.modal-footer[_ngcontent-%COMP%]{display:block;border-top:none;padding:15px 80px 35px}"]],data:{}});function fy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,45,"div",[["class","about-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"button",[["aria-label","Close"],["class","close float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.modalRef.hide()&&a),a}),null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](5,0,null,null,37,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"img",[["class","ceph-logo"],["src","assets/Ceph_Logo_Standard_RGB_Reversed_120411_fa.png"]],[[8,"alt",0]],null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,2,"h3",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["",""])),(t()(),s["ɵeld"](10,0,null,null,6,"div",[["class","product-versions"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Version"])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](14,null,[" "," "," "])),(t()(),s["ɵeld"](15,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](16,null,[" "," "])),(t()(),s["ɵeld"](17,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,24,"dl",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ceph Manager"])),(t()(),s["ɵeld"](21,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](22,null,["",""])),(t()(),s["ɵeld"](23,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["User"])),(t()(),s["ɵeld"](25,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](26,null,["",""])),(t()(),s["ɵeld"](27,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["User Role"])),(t()(),s["ɵeld"](29,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](30,null,["",""])),(t()(),s["ɵeld"](31,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser"])),(t()(),s["ɵeld"](33,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](34,null,["",""])),(t()(),s["ɵeld"](35,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser Version"])),(t()(),s["ɵeld"](37,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](38,null,["",""])),(t()(),s["ɵeld"](39,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser OS"])),(t()(),s["ɵeld"](41,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](42,null,["",""])),(t()(),s["ɵeld"](43,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"div",[["class","text-left"]],null,null,null,null,null)),(t()(),s["ɵted"](45,null,[" "," "," "]))],null,(function(t,e){var n=e.component;t(e,6,0,s["ɵinlineInterpolate"](1,"",n.projectConstants.organization,"")),t(e,9,0,n.projectConstants.projectName),t(e,14,0,n.versionNumber,n.versionHash),t(e,16,0,n.versionName),t(e,22,0,n.hostAddr),t(e,26,0,n.modalVariables.user),t(e,30,0,n.modalVariables.role),t(e,34,0,n.modalVariables.browserName),t(e,38,0,n.modalVariables.browserVersion),t(e,42,0,n.modalVariables.browserOS),t(e,45,0,n.copyright,n.projectConstants.license)}))}function hy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-about",[],null,null,null,fy,cy)),s["ɵdid"](1,245760,null,0,It,[Ct.a,mt.a,Ot.a,Z.a],null,null)],(function(t,e){t(e,1,0)}),null)}var gy=s["ɵccf"]("cd-about",It,hy,{},{},[]),py=s["ɵcrt"]({encapsulation:0,styles:[".dropdown[_nghost-%COMP%] {\n      z-index: 1000;\n    }\n\n    .dropdown-menu[_nghost-%COMP%], .dropdown-menu[_ngcontent-%COMP%] {\n      overflow-y: auto;\n      height: 100px;\n    }"],data:{animation:[{type:7,name:"typeaheadAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function by(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function my(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,0,0,e.component.highlight(e.context.match,e.context.query))}))}function yy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,1,"li",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit)}))}function vy(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function xy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,4,"li",[],[[24,"@typeaheadAnimation",0],[2,"active",null]],[[null,"mouseenter"]],(function(t,e,n){var a=!0;return"mouseenter"===e&&(a=!1!==t.component.selectActive(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"a",[["href","#"],["tabindex","-1"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectMatch(t.parent.context.$implicit,n)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,vy)),s["ɵdid"](3,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](4,{item:0,index:1,match:2,query:3})],(function(t,e){var n=e.component,a=t(e,4,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,3,0,a,n.itemTemplate||s["ɵnov"](e.parent.parent.parent,5))}),(function(t,e){var n=e.component;t(e,0,0,n.animationState,n.isActive(e.parent.context.$implicit))}))}function _y(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,yy)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xy)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.context.$implicit.isHeader();t(e,1,0,n);var a=!e.context.$implicit.isHeader();t(e,3,0,a)}),null)}function Ty(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[1,0],["ulElement",1]],null,2,"ul",[["class","dropdown-menu"]],[[4,"overflow-y",null],[4,"height",null]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_y)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.matches)}),(function(t,e){var n=e.component;t(e,0,0,n.needScrollbar?"scroll":"auto",n.needScrollbar?n.guiHeight:"auto")}))}function wy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"h6",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit)}))}function Oy(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function Sy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,3,"button",[["class","dropdown-item"]],[[24,"@typeaheadAnimation",0],[2,"active",null]],[[null,"click"],[null,"mouseenter"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectMatch(t.parent.context.$implicit,n)&&a),"mouseenter"===e&&(a=!1!==r.selectActive(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Oy)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](3,{item:0,index:1,match:2,query:3})],(function(t,e){var n=e.component,a=t(e,3,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,2,0,a,n.itemTemplate||s["ɵnov"](e.parent.parent.parent,5))}),(function(t,e){var n=e.component;t(e,0,0,n.animationState,n.isActive(e.parent.context.$implicit))}))}function Iy(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,wy)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sy)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.context.$implicit.isHeader();t(e,1,0,n);var a=!e.context.$implicit.isHeader();t(e,3,0,a)}),null)}function Ny(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Iy)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.matches)}),null)}function Cy(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{ulElement:0}),s["ɵqud"](671088640,2,{liElements:1}),(t()(),s["ɵand"](16777216,null,null,2,null,by)),s["ɵdid"](3,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](4,{matches:0,itemTemplate:1,query:2}),(t()(),s["ɵand"](0,[["bsItemTemplate",2]],null,0,null,my)),(t()(),s["ɵand"](0,[["bs3Template",2]],null,0,null,Ty)),(t()(),s["ɵand"](0,[["bs4Template",2]],null,0,null,Ny))],(function(t,e){var n=e.component,a=t(e,4,0,n.matches,n.itemTemplate,n.query);t(e,3,0,a,n.optionsListTemplate||s["ɵnov"](e,n.isBs4?7:6))}),null)}function Ry(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"typeahead-container",[["class","dropdown open bottom"],["style","position: absolute;display: block;"]],[[2,"dropdown-menu",null],[4,"height",null],[4,"visibility",null],[2,"dropup",null]],[[null,"mouseleave"],[null,"blur"]],(function(t,e,n){var a=!0;return"mouseleave"===e&&(a=!1!==s["ɵnov"](t,1).focusLost()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).focusLost()&&a),a}),Cy,py)),s["ɵdid"](1,180224,null,0,Bu,[Sa.a,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null)],null,(function(t,e){t(e,0,0,s["ɵnov"](e,1).isBs4,s["ɵnov"](e,1).isBs4&&s["ɵnov"](e,1).needScrollbar?s["ɵnov"](e,1).guiHeight:"auto","inherit",s["ɵnov"](e,1).dropup)}))}var Ay=s["ɵccf"]("typeahead-container",Bu,Ry,{},{},[]),ky=n("ajRT"),Ey=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ly(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Deep "]))],null,null)}function Dy(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["deep "]))],null,null)}function Py(t){return s["ɵvid"](0,[s["ɵpid"](0,Ko.a,[]),(t()(),s["ɵeld"](1,0,null,null,33,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](2,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](3,0,null,0,6,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSDs "])),(t()(),s["ɵeld"](5,0,null,null,3,null,null,null,null,null,null,null)),s["ɵdid"](6,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ly)),s["ɵdid"](8,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](-1,null,["Scrub"])),(t()(),s["ɵeld"](10,0,null,1,24,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,23,"form",[["name","scrubForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,13).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,16).onSubmit()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,K.G,[],null,null),s["ɵdid"](13,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](15,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](16,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](17,0,null,null,11,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,10,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You are about to apply a "])),(t()(),s["ɵeld"](20,0,null,null,3,null,null,null,null,null,null,null)),s["ɵdid"](21,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dy)),s["ɵdid"](23,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](-1,null,["scrub to the OSD(s): "])),(t()(),s["ɵeld"](25,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](26,null,["",""])),s["ɵppd"](27,1),(t()(),s["ɵted"](-1,null,["."])),(t()(),s["ɵeld"](29,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.scrub()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](31,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"])),(t()(),s["ɵeld"](33,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$s.b,$s.a)),s["ɵdid"](34,49152,null,0,Js.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.bsModalRef),t(e,6,0,n.deep),t(e,8,0,"1"),t(e,13,0,n.scrubForm),t(e,16,0,n.scrubForm),t(e,21,0,n.deep),t(e,23,0,"1"),t(e,31,0,n.scrubForm),t(e,34,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,11,0,s["ɵnov"](e,15).ngClassUntouched,s["ɵnov"](e,15).ngClassTouched,s["ɵnov"](e,15).ngClassPristine,s["ɵnov"](e,15).ngClassDirty,s["ɵnov"](e,15).ngClassValid,s["ɵnov"](e,15).ngClassInvalid,s["ɵnov"](e,15).ngClassPending);var a=s["ɵunv"](e,26,0,t(e,27,0,s["ɵnov"](e,0),n.selected));t(e,26,0,a)}))}function My(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-scrub-modal",[],null,null,null,Py,Ey)),s["ɵdid"](1,114688,null,0,Il,[Ct.a,Li,bt.a,Xt.a,Ko.a],null,null)],(function(t,e){t(e,1,0)}),null)}var qy=s["ɵccf"]("cd-osd-scrub-modal",Il,My,{},{},[]),jy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Fy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","m-1"]],null,null,null,null,null))],null,null)}function Vy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"checked",0],[8,"name",0],[8,"id",0],[8,"disabled",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=0!=(t.context.$implicit.value=!t.context.$implicit.value)&&a),a}),null,null)),s["ɵdid"](2,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](3,16384,null,0,Q.h,[[3,K.d],Q.a],null,null),(t()(),s["ɵeld"](4,0,null,null,5,"label",[["class","custom-control-label"],["ng-class","['tc_' + key]"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Fy)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,11,0,!e.context.last)}),(function(t,e){t(e,1,0,e.context.$implicit.value,e.context.$implicit.code,e.context.$implicit.code,e.context.$implicit.disabled,s["ɵnov"](e,3).validClass,s["ɵnov"](e,3).invalidClass),t(e,4,0,e.context.$implicit.code),t(e,6,0,e.context.$implicit.name),t(e,9,0,e.context.$implicit.description)}))}function Gy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](1,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdFlagsForm)}),null)}function By(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster-wide OSD Flags"])),(t()(),s["ɵeld"](4,0,null,1,16,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,15,"form",[["cdFormScope","osd"],["name","osdFlagsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,J.a,[],{cdFormScope:[0,"cdFormScope"]},null),s["ɵdid"](7,16384,null,0,K.G,[],null,null),s["ɵdid"](8,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](10,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](11,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](12,0,null,null,2,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Vy)),s["ɵdid"](14,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](15,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Gy)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](19,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$s.b,$s.a)),s["ɵdid"](20,49152,null,0,Js.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,6,0,"osd"),t(e,8,0,n.osdFlagsForm),t(e,11,0,n.osdFlagsForm),t(e,14,0,n.flags),t(e,18,0,n.permissions.osd.update),t(e,20,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending)}))}function zy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-flags-modal",[],null,null,null,By,jy)),s["ɵdid"](1,114688,null,0,yl,[Ct.a,Z.a,Li,bt.a,Xt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Yy=s["ɵccf"]("cd-osd-flags-modal",yl,zy,{},{},[]),Hy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Uy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-hdd ml-2"]],[[8,"title",0]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster-wide"]))],null,(function(t,e){t(e,0,0,e.component.clusterWideTooltip)}))}function Wy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","m-1"]],null,null,null,null,null))],null,null)}function Ky(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"checked",0],[8,"indeterminate",0],[8,"name",0],[8,"id",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.changeValue(t.context.$implicit)&&a),a}),null,null)),s["ɵdid"](2,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](3,16384,null,0,Q.h,[[3,K.d],Q.a],null,null),(t()(),s["ɵeld"](4,0,null,null,7,"label",[["class","custom-control-label"],["ng-class","['tc_' + key]"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Uy)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](11,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Wy)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,8,0,e.context.$implicit.clusterWide),t(e,13,0,!e.context.last)}),(function(t,e){t(e,1,0,e.context.$implicit.value,e.context.$implicit.indeterminate,e.context.$implicit.code,e.context.$implicit.code,s["ɵnov"](e,3).validClass,s["ɵnov"](e,3).invalidClass),t(e,4,0,e.context.$implicit.code),t(e,6,0,e.context.$implicit.name),t(e,11,0,e.context.$implicit.description)}))}function $y(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](1,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdFlagsForm)}),null)}function Jy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Individual OSD Flags"])),(t()(),s["ɵeld"](4,0,null,1,16,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,15,"form",[["name","osdFlagsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,K.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](9,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](10,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,2,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ky)),s["ɵdid"](13,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](14,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.resetSelection()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Restore previous selection"])),(t()(),s["ɵand"](16777216,null,null,1,null,$y)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](19,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$s.b,$s.a)),s["ɵdid"](20,49152,null,0,Js.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.activeModal),t(e,7,0,n.osdFlagsForm),t(e,10,0,n.osdFlagsForm),t(e,13,0,n.flags),t(e,18,0,n.permissions.osd.update),t(e,20,0,"Cancel",n.activeModal.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending)}))}function Zy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-flags-indiv-modal",[],null,null,null,Jy,Hy)),s["ɵdid"](1,114688,null,0,ml,[Ct.a,Z.a,Li,bt.a,Xt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Qy=s["ɵccf"]("cd-osd-flags-indiv-modal",ml,Zy,{},{},[]),Xy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function tv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit.name),t(e,2,0,e.context.$implicit.name)}),(function(t,e){t(e,3,0,e.context.$implicit.text)}))}function ev(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function nv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](1,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](2,0,["",""]))],null,(function(t,e){t(e,2,0,e.parent.context.$implicit.value.desc)}))}function av(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function rv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.patternHelpText)}))}function iv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.maxValue)}))}function sv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.minValue)}))}function uv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,7,"label",[["class","col-form-label col-sm-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](8,{required:0}),(t()(),s["ɵted"](9,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,nv)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,17,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,8,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,15)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,15)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,15)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,16).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,16).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),a}),null,null)),s["ɵdid"](14,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](15,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](16,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](18,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](20,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](21,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,av)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rv)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,iv)),s["ɵdid"](27,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sv)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0);var a=t(e,8,0,n.osdRecvSpeedForm.getValue("customizePriority"));t(e,7,0,a),t(e,11,0,e.context.$implicit.value.desc),t(e,18,0,e.context.$implicit.key),t(e,21,0,e.context.$implicit.key),t(e,23,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,8),"required")),t(e,25,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,8),"pattern")),t(e,27,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,8),"max")),t(e,29,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,8),"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.context.$implicit.key),t(e,9,0,e.context.$implicit.value.text),t(e,13,1,[e.context.$implicit.key,!n.osdRecvSpeedForm.getValue("customizePriority"),s["ɵnov"](e,20).ngClassUntouched,s["ɵnov"](e,20).ngClassTouched,s["ɵnov"](e,20).ngClassPristine,s["ɵnov"](e,20).ngClassDirty,s["ɵnov"](e,20).ngClassValid,s["ɵnov"](e,20).ngClassInvalid,s["ɵnov"](e,20).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass])}))}function ov(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](1,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdRecvSpeedForm)}),null)}function lv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,56,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSD Recovery Priority"])),(t()(),s["ɵeld"](4,0,null,1,52,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,51,"form",[["cdFormScope","osd"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,J.a,[],{cdFormScope:[0,"cdFormScope"]},null),s["ɵdid"](7,16384,null,0,K.G,[],null,null),s["ɵdid"](8,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](10,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](11,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](12,0,null,null,38,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](14,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,1,"label",[["class","col-form-label col-sm-6 required"],["for","priority"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Priority"])),(t()(),s["ɵeld"](19,0,null,0,12,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,9,"select",[["class","form-control custom-select"],["formControlName","priority"],["id","priority"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,22).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,22).onTouched()&&a),"change"===e&&(a=!1!==r.onPriorityChange(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](24,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](26,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tv)),s["ɵdid"](29,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ev)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](32,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](33,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](36,0,null,0,11,"div",[["class","offset-sm-6 col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](37,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","customizePriority"],["id","customizePriority"],["name","customizePriority"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,40).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,40).onTouched()&&a),"change"===e&&(a=!1!==r.onCustomizePriorityChange()&&a),a}),null,null)),s["ɵdid"](39,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](40,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](42,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](44,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](45,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](46,0,null,null,1,"label",[["class","custom-control-label"],["for","customizePriority"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Customize priority values"])),(t()(),s["ɵand"](16777216,null,null,2,null,uv)),s["ɵdid"](49,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵeld"](51,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](52,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ov)),s["ɵdid"](54,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](55,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$s.b,$s.a)),s["ɵdid"](56,49152,null,0,Js.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,6,0,"osd"),t(e,8,0,n.osdRecvSpeedForm),t(e,11,0,n.osdRecvSpeedForm),t(e,14,0),t(e,24,0,"priority"),t(e,27,0,"priority"),t(e,29,0,n.priorities),t(e,31,0,n.osdRecvSpeedForm.showError("priority",s["ɵnov"](e,8),"required")),t(e,33,0),t(e,42,0,"customizePriority"),t(e,45,0,"customizePriority"),t(e,49,0,s["ɵunv"](e,49,0,s["ɵnov"](e,50).transform(n.priorityAttrs))),t(e,54,0,n.permissions.configOpt.update),t(e,56,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,20,0,s["ɵnov"](e,26).ngClassUntouched,s["ɵnov"](e,26).ngClassTouched,s["ɵnov"](e,26).ngClassPristine,s["ɵnov"](e,26).ngClassDirty,s["ɵnov"](e,26).ngClassValid,s["ɵnov"](e,26).ngClassInvalid,s["ɵnov"](e,26).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass),t(e,32,0,s["ɵnov"](e,33).hasErrors,s["ɵnov"](e,33).hasSuccess),t(e,38,0,s["ɵnov"](e,44).ngClassUntouched,s["ɵnov"](e,44).ngClassTouched,s["ɵnov"](e,44).ngClassPristine,s["ɵnov"](e,44).ngClassDirty,s["ɵnov"](e,44).ngClassValid,s["ɵnov"](e,44).ngClassInvalid,s["ɵnov"](e,44).ngClassPending,s["ɵnov"](e,45).validClass,s["ɵnov"](e,45).invalidClass)}))}function dv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-recv-speed-modal",[],null,null,null,lv,Xy)),s["ɵdid"](1,114688,null,0,Ol,[Ct.a,Z.a,vl.a,bt.a,Xt.a,Li],null,null)],(function(t,e){t(e,1,0)}),null)}var cv=s["ɵccf"]("cd-osd-recv-speed-modal",Ol,dv,{},{},[]),fv=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function hv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function gv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value needs to be between 0 and 1."]))],null,null)}function pv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,hv)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gv)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,null==n.weight.errors?null:n.weight.errors.required),t(e,4,0,(null==n.weight.errors?null:n.weight.errors.max)||(null==n.weight.errors?null:n.weight.errors.min))}),null)}function bv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,32,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](3,null,["Reweight OSD: ",""])),(t()(),s["ɵeld"](4,0,null,1,28,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,27,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,K.G,[],null,null),s["ɵdid"](7,540672,null,0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](9,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](10,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,15,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,14,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"label",[["class","col-sm-2 col-form-label"],["for","weight"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Weight"])),(t()(),s["ɵeld"](15,0,null,null,11,"div",[["class","col-sm-10"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,8,"input",[["class","form-control"],["formControlName","weight"],["id","weight"],["max","1"],["min","0"],["step","0.1"],["type","number"]],[[8,"value",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,18)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,18).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,18)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,18)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,19).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,19).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),a}),null,null)),s["ɵdid"](17,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](18,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](19,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](21,671744,null,0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](23,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](24,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pv)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](27,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.reweight()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](29,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Reweight"])),(t()(),s["ɵeld"](31,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$s.b,$s.a)),s["ɵdid"](32,49152,null,0,Js.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.reweightForm),t(e,10,0,n.reweightForm),t(e,21,0,"weight"),t(e,24,0,"weight"),t(e,26,0,n.weight.errors),t(e,29,0,n.reweightForm,n.reweightForm.invalid),t(e,32,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,3,0,n.osdId),t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,16,0,n.currentWeight,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,24).validClass,s["ɵnov"](e,24).invalidClass)}))}function mv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-reweight-modal",[],null,null,null,bv,fv)),s["ɵdid"](1,114688,null,0,Sl,[Ct.a,Li,to.a],null,null)],(function(t,e){t(e,1,0)}),null)}var yv=s["ɵccf"]("cd-osd-reweight-modal",Sl,mv,{},{},[]),vv=s["ɵcrt"]({encapsulation:0,styles:[[".custom-checkbox[_ngcontent-%COMP%]   input[_ngcontent-%COMP%], .custom-checkbox[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{cursor:pointer}.col-form-label[_ngcontent-%COMP%]{text-align:left}"]],data:{}});function xv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](1,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](2,0,[" ",""]))],null,(function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)}))}function _v(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","form-group row pt-2"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,7,"label",[["class","col-form-label col-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,xv)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,10,"div",[["class","col-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,7,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](17,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](19,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](20,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](21,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](22,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],(function(t,e){t(e,1,0),t(e,11,0,e.parent.context.$implicit.long_desc),t(e,17,0,e.parent.context.$implicit.name),t(e,21,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit.name),t(e,6,0,e.parent.context.$implicit.text),t(e,9,0,e.parent.context.$implicit.desc),t(e,14,0,e.parent.context.$implicit.name,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass),t(e,22,0,e.parent.context.$implicit.name)}))}function Tv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,Ku.b,Ku.a)),s["ɵdid"](1,49152,null,0,$u.a,[],null,null),(t()(),s["ɵted"](2,0,[" ",""]))],null,(function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)}))}function wv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["data-toggle","button"],["title","Remove the custom configuration value. The default configuration will be inherited and used instead."],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.resetValue(t.parent.parent.context.$implicit.name)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1)],(function(t,e){var n=t(e,5,0,e.component.icons.erase);t(e,4,0,n)}),null)}function Ov(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",""]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)}))}function Sv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",""]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)}))}function Iv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.maxValue)}))}function Nv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.minValue)}))}function Cv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,30,"div",[["class","form-group row pt-2"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,6,"label",[["class","col-6 col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,Tv)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](11,0,null,0,19,"div",[["class","col-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,7,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"placeholder",0],[8,"step",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,14)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,14)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,14)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](14,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](16,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](18,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](19,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](20,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wv)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ov)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sv)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Iv)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nv)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,e.parent.context.$implicit.long_desc),t(e,16,0,e.parent.context.$implicit.name),t(e,20,0,e.parent.context.$implicit.name),t(e,22,0,n.optionsFormShowReset),t(e,24,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"pattern")),t(e,26,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"invalidUuid")),t(e,28,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"max")),t(e,30,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit.name),t(e,5,0,e.parent.context.$implicit.text),t(e,8,0,e.parent.context.$implicit.desc),t(e,13,1,[e.parent.context.$implicit.additionalTypeInfo.inputType,e.parent.context.$implicit.name,e.parent.context.$implicit.additionalTypeInfo.humanReadable,n.getStep(e.parent.context.$implicit.type,n.optionsForm.getValue(e.parent.context.$implicit.name)),s["ɵnov"](e,18).ngClassUntouched,s["ɵnov"](e,18).ngClassTouched,s["ɵnov"](e,18).ngClassPristine,s["ɵnov"](e,18).ngClassDirty,s["ɵnov"](e,18).ngClassValid,s["ɵnov"](e,18).ngClassInvalid,s["ɵnov"](e,18).ngClassPending,s["ɵnov"](e,20).validClass,s["ɵnov"](e,20).invalidClass])}))}function Rv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","my-2"]],null,null,null,null,null))],null,null)}function Av(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_v)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cv)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rv)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,"bool"===e.context.$implicit.type),t(e,4,0,"bool"!==e.context.$implicit.type),t(e,6,0,!e.context.last)}),null)}function kv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,1).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,1).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,4).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,540672,null,0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](3,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](4,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Av)),s["ɵdid"](6,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.optionsFormGroup),t(e,4,0,n.optionsFormGroup),t(e,6,0,n.options)}),(function(t,e){t(e,0,0,s["ɵnov"](e,3).ngClassUntouched,s["ɵnov"](e,3).ngClassTouched,s["ɵnov"](e,3).ngClassPristine,s["ɵnov"](e,3).ngClassDirty,s["ɵnov"](e,3).ngClassValid,s["ɵnov"](e,3).ngClassInvalid,s["ɵnov"](e,3).ngClassPending)}))}var Ev=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Lv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"a",[["class","pull-right margin-right-md"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=0!=(t.component.advancedEnabled=!0)&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Advanced..."]))],null,null)}function Dv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"h3",[["class","page-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Advanced configuration options"])),(t()(),s["ɵeld"](3,0,null,null,1,"cd-config-option",[],null,null,null,kv,vv)),s["ɵdid"](4,114688,[[2,4],["advancedOptionsValues",4]],0,_l,[vl.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.advancedOptions,n.osdPgScrubForm,s["ɵnov"](e.parent,14),"advancedFormGroup")}),null)}function Pv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](1,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](2,0,[""," ",""])),s["ɵppd"](3,1),s["ɵppd"](4,1)],(function(t,e){t(e,1,0,e.component.osdPgScrubForm)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,2,1,t(e,4,0,s["ɵnov"](e.parent,1),n.resource));t(e,2,0,a,r)}))}function Mv(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Zs.a,[]),s["ɵqud"](402653184,1,{basicOptionsValues:0}),s["ɵqud"](671088640,2,{advancedOptionsValues:0}),(t()(),s["ɵeld"](4,0,null,null,28,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](5,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](6,0,null,0,3,null,null,null,null,null,null,null)),(t()(),s["ɵted"](7,null,[""," ",""])),s["ɵppd"](8,1),s["ɵppd"](9,1),(t()(),s["ɵeld"](10,0,null,1,22,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,21,"form",[["cdFormScope","osd"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,14).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,14).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,17).onSubmit()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,J.a,[],{cdFormScope:[0,"cdFormScope"]},null),s["ɵdid"](13,16384,null,0,K.G,[],null,null),s["ɵdid"](14,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](16,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](17,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](18,0,null,null,8,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"cd-config-option",[],null,null,null,kv,vv)),s["ɵdid"](20,114688,[[1,4],["basicOptionsValues",4]],0,_l,[vl.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null),(t()(),s["ɵeld"](21,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Lv)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dv)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](27,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Pv)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](31,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](32,49152,null,0,Js.a,[i.Location,St.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.bsModalRef),t(e,12,0,"osd"),t(e,14,0,n.osdPgScrubForm),t(e,17,0,n.osdPgScrubForm),t(e,20,0,n.basicOptions,n.osdPgScrubForm,s["ɵnov"](e,14),"basicFormGroup"),t(e,24,0,!n.advancedEnabled),t(e,26,0,n.advancedEnabled),t(e,30,0,n.permissions.configOpt.update),t(e,32,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,7,0,t(e,8,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,7,1,t(e,9,0,s["ɵnov"](e,1),n.resource));t(e,7,0,a,r),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending)}))}function qv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-pg-scrub-modal",[],null,null,null,Mv,Ev)),s["ɵdid"](1,49152,null,0,wl,[Ct.a,Z.a,bt.a,Xt.a,St.b],null,null)],null,null)}var jv=s["ɵccf"]("cd-osd-pg-scrub-modal",wl,qv,{},{},[]),Fv=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Vv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Gv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Bv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function zv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵted"](2,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,s["ɵinlineInterpolate"](1,"cd-col-form-offset ",n.matcherMatch.cssClass,"")),t(e,1,0,s["ɵinlineInterpolate"](1,"text-muted ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)}))}function Yv(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Update"]))],null,null)}function Hv(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Add"]))],null,null)}function Uv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,82,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Matcher"])),(t()(),s["ɵeld"](4,0,null,1,78,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,77,"form",[["class","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,K.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](9,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](10,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,59,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](13,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](18,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,13,"select",[["class","form-control"],["formControlName","name"],["id","name"],["name","name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,21).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](21,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](23,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](25,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](26,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](27,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](28,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](29,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select an attribute to match against --"])),(t()(),s["ɵand"](16777216,null,null,1,null,Vv)),s["ɵdid"](32,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gv)),s["ɵdid"](34,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](35,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](36,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](39,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","value"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value"])),(t()(),s["ɵeld"](41,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](42,16777216,null,null,8,"input",[["class","form-control"],["formControlName","value"],["id","value"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,44)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,44).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,44)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,44)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,49).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,49).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,49).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,49).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,49).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,49).onKeydown(n)&&a),a}),null,null)),s["ɵdid"](43,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](44,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](46,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](48,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](49,212992,null,0,Yu,[U.a,zu,s.ChangeDetectorRef,s.ElementRef,K.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"],typeaheadMinLength:[1,"typeaheadMinLength"]},null),s["ɵdid"](50,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bv)),s["ɵdid"](52,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,zv)),s["ɵdid"](54,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](55,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Hs.b,Hs.a)),s["ɵdid"](56,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](59,0,null,0,11,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](60,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](61,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","isRegex"],["id","is-regex"],["name","is-regex"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,63).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,63).onTouched()&&a),a}),null,null)),s["ɵdid"](62,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](63,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](65,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](67,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](68,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](69,0,null,null,1,"label",[["class","custom-control-label"],["for","is-regex"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Use regular expression"])),(t()(),s["ɵeld"](71,0,null,null,11,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](72,0,null,null,8,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](73,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](74,0,null,0,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](76,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yv)),s["ɵdid"](78,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hv)),s["ɵdid"](80,16384,null,0,i.NgSwitchDefault,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],null,null),(t()(),s["ɵeld"](81,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,$s.b,$s.a)),s["ɵdid"](82,49152,null,0,Js.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.form),t(e,10,0,n.form),t(e,13,0),t(e,23,0,"name"),t(e,26,0,"name"),t(e,28,0,null),t(e,29,0,null),t(e,32,0,n.nameAttributes),t(e,34,0,n.form.showError("name",s["ɵnov"](e,7),"required")),t(e,36,0),t(e,46,0,"value"),t(e,49,0,n.possibleValues,0),t(e,50,0,"value"),t(e,52,0,n.form.showError("value",s["ɵnov"](e,7),"required")),t(e,54,0,n.form.getValue("value")&&!n.form.getValue("isRegex")&&n.matcherMatch),t(e,56,0),t(e,65,0,"isRegex"),t(e,68,0,"isRegex"),t(e,73,0,n.form),t(e,76,0,n.editMode),t(e,78,0,"1"),t(e,82,0,"Close",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass),t(e,35,0,s["ɵnov"](e,36).hasErrors,s["ɵnov"](e,36).hasSuccess),t(e,42,0,s["ɵnov"](e,48).ngClassUntouched,s["ɵnov"](e,48).ngClassTouched,s["ɵnov"](e,48).ngClassPristine,s["ɵnov"](e,48).ngClassDirty,s["ɵnov"](e,48).ngClassValid,s["ɵnov"](e,48).ngClassInvalid,s["ɵnov"](e,48).ngClassPending,s["ɵnov"](e,50).validClass,s["ɵnov"](e,50).invalidClass),t(e,55,0,s["ɵnov"](e,56).hasErrors,s["ɵnov"](e,56).hasSuccess),t(e,61,0,s["ɵnov"](e,67).ngClassUntouched,s["ɵnov"](e,67).ngClassTouched,s["ɵnov"](e,67).ngClassPristine,s["ɵnov"](e,67).ngClassDirty,s["ɵnov"](e,67).ngClassValid,s["ɵnov"](e,67).ngClassInvalid,s["ɵnov"](e,67).ngClassPending,s["ɵnov"](e,68).validClass,s["ɵnov"](e,68).invalidClass)}))}function Wv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-silence-matcher-modal",[],null,null,null,Uv,Fv)),s["ɵdid"](1,49152,null,0,ch,[to.a,lh,Ct.a],null,null)],null,null)}var Kv=s["ɵccf"]("cd-silence-matcher-modal",ch,Wv,{},{submitAction:"submitAction"},[]),$v=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Jv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-dark ml-2"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.context.$implicit)}))}function Zv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["size","slim"],["type","warning"]],null,null,null,Zt.b,Zt.a)),s["ɵdid"](1,114688,null,0,Qt.a,[Xt.a],{type:[0,"type"],size:[1,"size"],showTitle:[2,"showTitle"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["At least one of these filters must be applied in order to proceed:"])),(t()(),s["ɵand"](16777216,null,0,1,null,Jv)),s["ɵdid"](5,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"warning","slim",!1),t(e,5,0,n.requiredFilters)}),null)}function Qv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"p",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["Number of devices: ",". Raw capacity: ","."])),s["ɵppd"](4,1)],null,(function(t,e){var n=e.component,a=n.filteredDevices.length,r=s["ɵunv"](e,3,1,t(e,4,0,s["ɵnov"](e.parent,0),n.capacity));t(e,3,0,a,r)}))}function Xv(t){return s["ɵvid"](0,[s["ɵpid"](0,qa.a,[Ua.a]),s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵqud"](671088640,1,{inventoryDevices:0}),(t()(),s["ɵeld"](3,0,null,null,25,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](4,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](5,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](6,null,[""," devices"])),(t()(),s["ɵeld"](7,0,null,1,21,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,20,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,10).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit()&&a),a}),null,null)),s["ɵdid"](9,16384,null,0,K.G,[],null,null),s["ɵdid"](10,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](12,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](13,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](14,0,null,null,7,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Zv)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](17,0,null,null,2,"cd-inventory-devices",[],null,[[null,"filterChange"]],(function(t,e,n){var a=!0;return"filterChange"===e&&(a=!1!==t.component.onFilterChange(n)&&a),a}),di,li)),s["ɵdid"](18,245760,[[1,4],["inventoryDevices",4]],0,oi,[Z.a,qa.a,Xt.a,Ct.b,bt.a,ri],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],filterColumns:[2,"filterColumns"]},{filterChange:"filterChange"}),s["ɵpad"](19,2),(t()(),s["ɵand"](16777216,null,null,1,null,Qv)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](22,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](24,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](25,0,["",""])),s["ɵppd"](26,1),(t()(),s["ɵeld"](27,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](28,49152,null,0,Js.a,[i.Location,St.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.bsModalRef),t(e,10,0,n.formGroup),t(e,13,0,n.formGroup),t(e,16,0,!n.canSubmit);var a=n.devices,r=t(e,19,0,"available","osd_ids");t(e,18,0,a,r,n.filterColumns),t(e,21,0,n.canSubmit),t(e,24,0,n.formGroup,!n.canSubmit||0===n.filteredDevices.length),t(e,28,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,6,0,n.deviceType),t(e,8,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending);var a=s["ɵunv"](e,25,0,t(e,26,0,s["ɵnov"](e,1),n.action));t(e,25,0,a)}))}function tx(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-devices-selection-modal",[],null,null,null,Xv,$v)),s["ɵdid"](1,4243456,null,0,Yl,[to.a,Ct.a,St.b],null,null)],null,null)}var ex=s["ɵccf"]("cd-osd-devices-selection-modal",Yl,tx,{},{submitAction:"submitAction"},[]),nx=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ax(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),(t()(),s["ɵeld"](1,0,null,null,23,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](2,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](3,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSD creation preview"])),(t()(),s["ɵeld"](5,0,null,1,19,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,18,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](7,16384,null,0,K.G,[],null,null),s["ɵdid"](8,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](10,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](11,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](12,0,null,null,5,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DriveGroups"])),(t()(),s["ɵeld"](15,0,null,null,2,"pre",[],null,null,null,null,null)),(t()(),s["ɵted"](16,null,["",""])),s["ɵpid"](0,i.JsonPipe,[]),(t()(),s["ɵeld"](18,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ws.b,Ws.a)),s["ɵdid"](20,114688,null,0,Ks.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](21,0,["",""])),s["ɵppd"](22,1),(t()(),s["ɵeld"](23,0,null,null,1,"cd-back-button",[],null,null,null,$s.b,$s.a)),s["ɵdid"](24,49152,null,0,Js.a,[i.Location,St.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.bsModalRef),t(e,8,0,n.formGroup),t(e,11,0,n.formGroup),t(e,20,0,n.formGroup),t(e,24,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,6,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending),t(e,16,0,s["ɵunv"](e,16,0,s["ɵnov"](e,17).transform(n.driveGroups)));var a=s["ɵunv"](e,21,0,t(e,22,0,s["ɵnov"](e,0),n.action));t(e,21,0,a)}))}function rx(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-creation-preview-modal",[],null,null,null,ax,nx)),s["ɵdid"](1,114688,null,0,ed,[Ct.a,St.b,to.a,Li,Es.a],null,null)],(function(t,e){t(e,1,0)}),null)}var ix=s["ɵccf"]("cd-osd-creation-preview-modal",ed,rx,{driveGroups:"driveGroups"},{submitAction:"submitAction"},[]),sx=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ux(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](3,null,[""," ",""])),(t()(),s["ɵeld"](4,0,null,1,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ai,ni)),s["ɵdid"](7,49152,null,0,ei,[],null,null),(t()(),s["ɵeld"](8,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,$s.b,$s.a)),s["ɵdid"](10,49152,null,0,Js.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,10,0,"Close",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,3,0,n.actionDescription,n.itemDescription)}))}function ox(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-modal",[],null,null,null,ux,sx)),s["ɵdid"](1,114688,null,0,As,[Ct.a],null,null)],(function(t,e){t(e,1,0)}),null)}var lx=s["ɵccf"]("cd-orchestrator-doc-modal",As,ox,{},{},[]),dx=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function cx(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](1,212992,null,0,Et.r,[Et.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function fx(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-root",[],null,null,null,cx,dx)),s["ɵdid"](1,49152,null,0,l,[],null,null)],null,null)}var hx=s["ɵccf"]("cd-root",l,fx,{},{},[]),gx=n("z6cu");let px=(()=>{class t{constructor(t,e,n){this.router=t,this.authStorageService=e,this.notificationService=n}intercept(t,e){return e.handle(t).pipe(Object(Te.a)(t=>{if(t instanceof et.f){let e;switch(t.status){case 400:const n=new Cs.a,a=t.error.task;X.isPlainObject(a)?(a.metadata.component=a.metadata.component||t.error.component,n.name=a.name,n.metadata=a.metadata):n.metadata=t.error,n.success=!1,n.exception=t.error,e=this.notificationService.notifyTask(n);break;case 401:this.authStorageService.remove(),this.router.navigate(["/login"]);break;case 403:this.router.navigate(["/403"]);break;default:e=this.prepareNotification(t)}t.preventDefault=()=>{this.notificationService.cancel(e)},t.ignoreStatusCode=function(t){this.status===t&&this.preventDefault()}}return Object(gx.a)(t)}))}prepareNotification(t){return this.notificationService.show(()=>{let e="";return X.isPlainObject(t.error)&&X.isString(t.error.detail)?e=t.error.detail:X.isString(t.error)?e=t.error:X.isString(t.message)&&(e=t.message),new $e.b(de.a.error,`${t.status} - ${t.statusText}`,e,void 0,t.application)})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Et.m),s["ɵɵinject"](Z.a),s["ɵɵinject"](bt.a))},token:t,providedIn:"root"}),t})();function bx(){return"undefined"!=typeof process}function mx(t){switch(t.length){case 0:return new W.d;case 1:return t[0];default:return new W.k(t)}}function yx(t,e,n,a,r={},i={}){const s=[],u=[];let o=-1,l=null;if(a.forEach(t=>{const n=t.offset,a=n==o,d=a&&l||{};Object.keys(t).forEach(n=>{let a=n,u=t[n];if("offset"!==n)switch(a=e.normalizePropertyName(a,s),u){case W.l:u=r[n];break;case W.a:u=i[n];break;default:u=e.normalizeStyleValue(n,a,u,s)}d[a]=u}),a||u.push(d),l=d,o=n}),s.length){const t="\n - ";throw new Error(`Unable to animate due to the following errors:${t}${s.join(t)}`)}return u}function vx(t,e,n,a){switch(e){case"start":t.onStart(()=>a(n&&xx(n,"start",t)));break;case"done":t.onDone(()=>a(n&&xx(n,"done",t)));break;case"destroy":t.onDestroy(()=>a(n&&xx(n,"destroy",t)))}}function xx(t,e,n){const a=n.totalTime,r=_x(t.element,t.triggerName,t.fromState,t.toState,e||t.phaseName,null==a?t.totalTime:a,!!n.disabled),i=t._data;return null!=i&&(r._data=i),r}function _x(t,e,n,a,r="",i=0,s){return{element:t,triggerName:e,fromState:n,toState:a,phaseName:r,totalTime:i,disabled:!!s}}function Tx(t,e,n){let a;return t instanceof Map?(a=t.get(e),a||t.set(e,a=n)):(a=t[e],a||(a=t[e]=n)),a}function wx(t){const e=t.indexOf(":");return[t.substring(1,e),t.substr(e+1)]}let Ox=(t,e)=>!1,Sx=(t,e)=>!1,Ix=(t,e,n)=>[];const Nx=bx();(Nx||"undefined"!=typeof Element)&&(Ox=(t,e)=>t.contains(e),Sx=(()=>{if(Nx||Element.prototype.matches)return(t,e)=>t.matches(e);{const t=Element.prototype,e=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector;return e?(t,n)=>e.apply(t,[n]):Sx}})(),Ix=(t,e,n)=>{let a=[];if(n)a.push(...t.querySelectorAll(e));else{const n=t.querySelector(e);n&&a.push(n)}return a});let Cx=null,Rx=!1;function Ax(t){Cx||(Cx=("undefined"!=typeof document?document.body:null)||{},Rx=!!Cx.style&&"WebkitAppearance"in Cx.style);let e=!0;return Cx.style&&!function(t){return"ebkit"==t.substring(1,6)}(t)&&(e=t in Cx.style,!e&&Rx)&&(e="Webkit"+t.charAt(0).toUpperCase()+t.substr(1)in Cx.style),e}const kx=Sx,Ex=Ox,Lx=Ix;function Dx(t){const e={};return Object.keys(t).forEach(n=>{const a=n.replace(/([a-z])([A-Z])/g,"$1-$2");e[a]=t[n]}),e}class Px{validateStyleProperty(t){return Ax(t)}matchesElement(t,e){return kx(t,e)}containsElement(t,e){return Ex(t,e)}query(t,e,n){return Lx(t,e,n)}computeStyle(t,e,n){return n||""}animate(t,e,n,a,r,i=[],s){return new W.d(n,a)}}let Mx=(()=>{class t{}return t.NOOP=new Px,t})();function qx(t){if("number"==typeof t)return t;const e=t.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:jx(parseFloat(e[1]),e[2])}function jx(t,e){switch(e){case"s":return 1e3*t;default:return t}}function Fx(t,e,n){return t.hasOwnProperty("duration")?t:function(t,e,n){let a,r=0,i="";if("string"==typeof t){const n=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===n)return e.push(`The provided timing value "${t}" is invalid.`),{duration:0,delay:0,easing:""};a=jx(parseFloat(n[1]),n[2]);const s=n[3];null!=s&&(r=jx(parseFloat(s),n[4]));const u=n[5];u&&(i=u)}else a=t;if(!n){let n=!1,i=e.length;a<0&&(e.push("Duration values below 0 are not allowed for this animation step."),n=!0),r<0&&(e.push("Delay values below 0 are not allowed for this animation step."),n=!0),n&&e.splice(i,0,`The provided timing value "${t}" is invalid.`)}return{duration:a,delay:r,easing:i}}(t,e,n)}function Vx(t,e={}){return Object.keys(t).forEach(n=>{e[n]=t[n]}),e}function Gx(t,e,n={}){if(e)for(let a in t)n[a]=t[a];else Vx(t,n);return n}function Bx(t,e,n){return n?e+":"+n+";":""}function zx(t){let e="";for(let n=0;n<t.style.length;n++){const a=t.style.item(n);e+=Bx(0,a,t.style.getPropertyValue(a))}for(const n in t.style)t.style.hasOwnProperty(n)&&!n.startsWith("_")&&(e+=Bx(0,n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),t.style[n]));t.setAttribute("style",e)}function Yx(t,e,n){t.style&&(Object.keys(e).forEach(a=>{const r=Qx(a);n&&!n.hasOwnProperty(a)&&(n[a]=t.style[r]),t.style[r]=e[a]}),bx()&&zx(t))}function Hx(t,e){t.style&&(Object.keys(e).forEach(e=>{const n=Qx(e);t.style[n]=""}),bx()&&zx(t))}function Ux(t){return Array.isArray(t)?1==t.length?t[0]:Object(W.f)(t):t}const Wx=new RegExp("{{\\s*(.+?)\\s*}}","g");function Kx(t){let e=[];if("string"==typeof t){const n=t.toString();let a;for(;a=Wx.exec(n);)e.push(a[1]);Wx.lastIndex=0}return e}function $x(t,e,n){const a=t.toString(),r=a.replace(Wx,(t,a)=>{let r=e[a];return e.hasOwnProperty(a)||(n.push("Please provide a value for the animation param "+a),r=""),r.toString()});return r==a?t:r}function Jx(t){const e=[];let n=t.next();for(;!n.done;)e.push(n.value),n=t.next();return e}const Zx=/-+([a-z0-9])/g;function Qx(t){return t.replace(Zx,(...t)=>t[1].toUpperCase())}function Xx(t,e){return 0===t||0===e}function t_(t,e,n){const a=Object.keys(n);if(a.length&&e.length){let i=e[0],s=[];if(a.forEach(t=>{i.hasOwnProperty(t)||s.push(t),i[t]=n[t]}),s.length)for(var r=1;r<e.length;r++){let n=e[r];s.forEach((function(e){n[e]=n_(t,e)}))}}return e}function e_(t,e,n){switch(e.type){case 7:return t.visitTrigger(e,n);case 0:return t.visitState(e,n);case 1:return t.visitTransition(e,n);case 2:return t.visitSequence(e,n);case 3:return t.visitGroup(e,n);case 4:return t.visitAnimate(e,n);case 5:return t.visitKeyframes(e,n);case 6:return t.visitStyle(e,n);case 8:return t.visitReference(e,n);case 9:return t.visitAnimateChild(e,n);case 10:return t.visitAnimateRef(e,n);case 11:return t.visitQuery(e,n);case 12:return t.visitStagger(e,n);default:throw new Error("Unable to resolve animation metadata node #"+e.type)}}function n_(t,e){return window.getComputedStyle(t)[e]}function a_(t,e){const n=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(t=>function(t,e,n){if(":"==t[0]){const a=function(t,e){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,e)=>parseFloat(e)>parseFloat(t);case":decrement":return(t,e)=>parseFloat(e)<parseFloat(t);default:return e.push(`The transition alias value "${t}" is not supported`),"* => *"}}(t,n);if("function"==typeof a)return void e.push(a);t=a}const a=t.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(null==a||a.length<4)return n.push(`The provided transition expression "${t}" is not supported`),e;const r=a[1],i=a[2],s=a[3];e.push(s_(r,s)),"<"!=i[0]||"*"==r&&"*"==s||e.push(s_(s,r))}(t,n,e)):n.push(t),n}const r_=new Set(["true","1"]),i_=new Set(["false","0"]);function s_(t,e){const n=r_.has(t)||i_.has(t),a=r_.has(e)||i_.has(e);return(r,i)=>{let s="*"==t||t==r,u="*"==e||e==i;return!s&&n&&"boolean"==typeof r&&(s=r?r_.has(t):i_.has(t)),!u&&a&&"boolean"==typeof i&&(u=i?r_.has(e):i_.has(e)),s&&u}}const u_=new RegExp("s*:selfs*,?","g");function o_(t,e,n){return new l_(t).build(e,n)}class l_{constructor(t){this._driver=t}build(t,e){const n=new d_(e);return this._resetContextStyleTimingState(n),e_(this,Ux(t),n)}_resetContextStyleTimingState(t){t.currentQuerySelector="",t.collectedStyles={},t.collectedStyles[""]={},t.currentTime=0}visitTrigger(t,e){let n=e.queryCount=0,a=e.depCount=0;const r=[],i=[];return"@"==t.name.charAt(0)&&e.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),t.definitions.forEach(t=>{if(this._resetContextStyleTimingState(e),0==t.type){const n=t,a=n.name;a.toString().split(/\s*,\s*/).forEach(t=>{n.name=t,r.push(this.visitState(n,e))}),n.name=a}else if(1==t.type){const r=this.visitTransition(t,e);n+=r.queryCount,a+=r.depCount,i.push(r)}else e.errors.push("only state() and transition() definitions can sit inside of a trigger()")}),{type:7,name:t.name,states:r,transitions:i,queryCount:n,depCount:a,options:null}}visitState(t,e){const n=this.visitStyle(t.styles,e),a=t.options&&t.options.params||null;if(n.containsDynamicStyles){const r=new Set,i=a||{};if(n.styles.forEach(t=>{if(c_(t)){const e=t;Object.keys(e).forEach(t=>{Kx(e[t]).forEach(t=>{i.hasOwnProperty(t)||r.add(t)})})}}),r.size){const n=Jx(r.values());e.errors.push(`state("${t.name}", ...) must define default values for all the following style substitutions: ${n.join(", ")}`)}}return{type:0,name:t.name,style:n,options:a?{params:a}:null}}visitTransition(t,e){e.queryCount=0,e.depCount=0;const n=e_(this,Ux(t.animation),e);return{type:1,matchers:a_(t.expr,e.errors),animation:n,queryCount:e.queryCount,depCount:e.depCount,options:f_(t.options)}}visitSequence(t,e){return{type:2,steps:t.steps.map(t=>e_(this,t,e)),options:f_(t.options)}}visitGroup(t,e){const n=e.currentTime;let a=0;const r=t.steps.map(t=>{e.currentTime=n;const r=e_(this,t,e);return a=Math.max(a,e.currentTime),r});return e.currentTime=a,{type:3,steps:r,options:f_(t.options)}}visitAnimate(t,e){const n=function(t,e){let n=null;if(t.hasOwnProperty("duration"))n=t;else if("number"==typeof t)return h_(Fx(t,e).duration,0,"");const a=t;if(a.split(/\s+/).some(t=>"{"==t.charAt(0)&&"{"==t.charAt(1))){const t=h_(0,0,"");return t.dynamic=!0,t.strValue=a,t}return n=n||Fx(a,e),h_(n.duration,n.delay,n.easing)}(t.timings,e.errors);let a;e.currentAnimateTimings=n;let r=t.styles?t.styles:Object(W.h)({});if(5==r.type)a=this.visitKeyframes(r,e);else{let r=t.styles,i=!1;if(!r){i=!0;const t={};n.easing&&(t.easing=n.easing),r=Object(W.h)(t)}e.currentTime+=n.duration+n.delay;const s=this.visitStyle(r,e);s.isEmptyStep=i,a=s}return e.currentAnimateTimings=null,{type:4,timings:n,style:a,options:null}}visitStyle(t,e){const n=this._makeStyleAst(t,e);return this._validateStyleAst(n,e),n}_makeStyleAst(t,e){const n=[];Array.isArray(t.styles)?t.styles.forEach(t=>{"string"==typeof t?t==W.a?n.push(t):e.errors.push(`The provided style string value ${t} is not allowed.`):n.push(t)}):n.push(t.styles);let a=!1,r=null;return n.forEach(t=>{if(c_(t)){const e=t,n=e.easing;if(n&&(r=n,delete e.easing),!a)for(let t in e)if(e[t].toString().indexOf("{{")>=0){a=!0;break}}}),{type:6,styles:n,easing:r,offset:t.offset,containsDynamicStyles:a,options:null}}_validateStyleAst(t,e){const n=e.currentAnimateTimings;let a=e.currentTime,r=e.currentTime;n&&r>0&&(r-=n.duration+n.delay),t.styles.forEach(t=>{"string"!=typeof t&&Object.keys(t).forEach(n=>{if(!this._driver.validateStyleProperty(n))return void e.errors.push(`The provided animation property "${n}" is not a supported CSS property for animations`);const i=e.collectedStyles[e.currentQuerySelector],s=i[n];let u=!0;s&&(r!=a&&r>=s.startTime&&a<=s.endTime&&(e.errors.push(`The CSS property "${n}" that exists between the times of "${s.startTime}ms" and "${s.endTime}ms" is also being animated in a parallel animation between the times of "${r}ms" and "${a}ms"`),u=!1),r=s.startTime),u&&(i[n]={startTime:r,endTime:a}),e.options&&function(t,e,n){const a=e.params||{},r=Kx(t);r.length&&r.forEach(t=>{a.hasOwnProperty(t)||n.push(`Unable to resolve the local animation param ${t} in the given list of values`)})}(t[n],e.options,e.errors)})})}visitKeyframes(t,e){const n={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push("keyframes() must be placed inside of a call to animate()"),n;let a=0;const r=[];let i=!1,s=!1,u=0;const o=t.steps.map(t=>{const n=this._makeStyleAst(t,e);let o=null!=n.offset?n.offset:function(t){if("string"==typeof t)return null;let e=null;if(Array.isArray(t))t.forEach(t=>{if(c_(t)&&t.hasOwnProperty("offset")){const n=t;e=parseFloat(n.offset),delete n.offset}});else if(c_(t)&&t.hasOwnProperty("offset")){const n=t;e=parseFloat(n.offset),delete n.offset}return e}(n.styles),l=0;return null!=o&&(a++,l=n.offset=o),s=s||l<0||l>1,i=i||l<u,u=l,r.push(l),n});s&&e.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),i&&e.errors.push("Please ensure that all keyframe offsets are in order");const l=t.steps.length;let d=0;a>0&&a<l?e.errors.push("Not all style() steps within the declared keyframes() contain offsets"):0==a&&(d=1/(l-1));const c=l-1,f=e.currentTime,h=e.currentAnimateTimings,g=h.duration;return o.forEach((t,a)=>{const i=d>0?a==c?1:d*a:r[a],s=i*g;e.currentTime=f+h.delay+s,h.duration=s,this._validateStyleAst(t,e),t.offset=i,n.styles.push(t)}),n}visitReference(t,e){return{type:8,animation:e_(this,Ux(t.animation),e),options:f_(t.options)}}visitAnimateChild(t,e){return e.depCount++,{type:9,options:f_(t.options)}}visitAnimateRef(t,e){return{type:10,animation:this.visitReference(t.animation,e),options:f_(t.options)}}visitQuery(t,e){const n=e.currentQuerySelector,a=t.options||{};e.queryCount++,e.currentQuery=t;const[r,i]=function(t){const e=!!t.split(/\s*,\s*/).find(t=>":self"==t);return e&&(t=t.replace(u_,"")),[t=t.replace(/@\*/g,".ng-trigger").replace(/@\w+/g,t=>".ng-trigger-"+t.substr(1)).replace(/:animating/g,".ng-animating"),e]}(t.selector);e.currentQuerySelector=n.length?n+" "+r:r,Tx(e.collectedStyles,e.currentQuerySelector,{});const s=e_(this,Ux(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=n,{type:11,selector:r,limit:a.limit||0,optional:!!a.optional,includeSelf:i,animation:s,originalSelector:t.selector,options:f_(t.options)}}visitStagger(t,e){e.currentQuery||e.errors.push("stagger() can only be used inside of query()");const n="full"===t.timings?{duration:0,delay:0,easing:"full"}:Fx(t.timings,e.errors,!0);return{type:12,animation:e_(this,Ux(t.animation),e),timings:n,options:null}}}class d_{constructor(t){this.errors=t,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles={},this.options=null}}function c_(t){return!Array.isArray(t)&&"object"==typeof t}function f_(t){var e;return t?(t=Vx(t)).params&&(t.params=(e=t.params)?Vx(e):null):t={},t}function h_(t,e,n){return{duration:t,delay:e,easing:n}}function g_(t,e,n,a,r,i,s=null,u=!1){return{type:1,element:t,keyframes:e,preStyleProps:n,postStyleProps:a,duration:r,delay:i,totalTime:r+i,easing:s,subTimeline:u}}class p_{constructor(){this._map=new Map}consume(t){let e=this._map.get(t);return e?this._map.delete(t):e=[],e}append(t,e){let n=this._map.get(t);n||this._map.set(t,n=[]),n.push(...e)}has(t){return this._map.has(t)}clear(){this._map.clear()}}const b_=new RegExp(":enter","g"),m_=new RegExp(":leave","g");function y_(t,e,n,a,r,i={},s={},u,o,l=[]){return(new v_).buildKeyframes(t,e,n,a,r,i,s,u,o,l)}class v_{buildKeyframes(t,e,n,a,r,i,s,u,o,l=[]){o=o||new p_;const d=new __(t,e,o,a,r,l,[]);d.options=u,d.currentTimeline.setStyles([i],null,d.errors,u),e_(this,n,d);const c=d.timelines.filter(t=>t.containsAnimation());if(c.length&&Object.keys(s).length){const t=c[c.length-1];t.allowOnlyTimelineStyles()||t.setStyles([s],null,d.errors,u)}return c.length?c.map(t=>t.buildKeyframes()):[g_(e,[],[],[],0,0,"",!1)]}visitTrigger(t,e){}visitState(t,e){}visitTransition(t,e){}visitAnimateChild(t,e){const n=e.subInstructions.consume(e.element);if(n){const a=e.createSubContext(t.options),r=e.currentTimeline.currentTime,i=this._visitSubInstructions(n,a,a.options);r!=i&&e.transformIntoNewTimeline(i)}e.previousNode=t}visitAnimateRef(t,e){const n=e.createSubContext(t.options);n.transformIntoNewTimeline(),this.visitReference(t.animation,n),e.transformIntoNewTimeline(n.currentTimeline.currentTime),e.previousNode=t}_visitSubInstructions(t,e,n){let a=e.currentTimeline.currentTime;const r=null!=n.duration?qx(n.duration):null,i=null!=n.delay?qx(n.delay):null;return 0!==r&&t.forEach(t=>{const n=e.appendInstructionToTimeline(t,r,i);a=Math.max(a,n.duration+n.delay)}),a}visitReference(t,e){e.updateOptions(t.options,!0),e_(this,t.animation,e),e.previousNode=t}visitSequence(t,e){const n=e.subContextCount;let a=e;const r=t.options;if(r&&(r.params||r.delay)&&(a=e.createSubContext(r),a.transformIntoNewTimeline(),null!=r.delay)){6==a.previousNode.type&&(a.currentTimeline.snapshotCurrentStyles(),a.previousNode=x_);const t=qx(r.delay);a.delayNextStep(t)}t.steps.length&&(t.steps.forEach(t=>e_(this,t,a)),a.currentTimeline.applyStylesToKeyframe(),a.subContextCount>n&&a.transformIntoNewTimeline()),e.previousNode=t}visitGroup(t,e){const n=[];let a=e.currentTimeline.currentTime;const r=t.options&&t.options.delay?qx(t.options.delay):0;t.steps.forEach(i=>{const s=e.createSubContext(t.options);r&&s.delayNextStep(r),e_(this,i,s),a=Math.max(a,s.currentTimeline.currentTime),n.push(s.currentTimeline)}),n.forEach(t=>e.currentTimeline.mergeTimelineCollectedStyles(t)),e.transformIntoNewTimeline(a),e.previousNode=t}_visitTiming(t,e){if(t.dynamic){const n=t.strValue;return Fx(e.params?$x(n,e.params,e.errors):n,e.errors)}return{duration:t.duration,delay:t.delay,easing:t.easing}}visitAnimate(t,e){const n=e.currentAnimateTimings=this._visitTiming(t.timings,e),a=e.currentTimeline;n.delay&&(e.incrementTime(n.delay),a.snapshotCurrentStyles());const r=t.style;5==r.type?this.visitKeyframes(r,e):(e.incrementTime(n.duration),this.visitStyle(r,e),a.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=t}visitStyle(t,e){const n=e.currentTimeline,a=e.currentAnimateTimings;!a&&n.getCurrentStyleProperties().length&&n.forwardFrame();const r=a&&a.easing||t.easing;t.isEmptyStep?n.applyEmptyStep(r):n.setStyles(t.styles,r,e.errors,e.options),e.previousNode=t}visitKeyframes(t,e){const n=e.currentAnimateTimings,a=e.currentTimeline.duration,r=n.duration,i=e.createSubContext().currentTimeline;i.easing=n.easing,t.styles.forEach(t=>{i.forwardTime((t.offset||0)*r),i.setStyles(t.styles,t.easing,e.errors,e.options),i.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(i),e.transformIntoNewTimeline(a+r),e.previousNode=t}visitQuery(t,e){const n=e.currentTimeline.currentTime,a=t.options||{},r=a.delay?qx(a.delay):0;r&&(6===e.previousNode.type||0==n&&e.currentTimeline.getCurrentStyleProperties().length)&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=x_);let i=n;const s=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!a.optional,e.errors);e.currentQueryTotal=s.length;let u=null;s.forEach((n,a)=>{e.currentQueryIndex=a;const s=e.createSubContext(t.options,n);r&&s.delayNextStep(r),n===e.element&&(u=s.currentTimeline),e_(this,t.animation,s),s.currentTimeline.applyStylesToKeyframe(),i=Math.max(i,s.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(i),u&&(e.currentTimeline.mergeTimelineCollectedStyles(u),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t}visitStagger(t,e){const n=e.parentContext,a=e.currentTimeline,r=t.timings,i=Math.abs(r.duration),s=i*(e.currentQueryTotal-1);let u=i*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":u=s-u;break;case"full":u=n.currentStaggerTime}const o=e.currentTimeline;u&&o.delayNextStep(u);const l=o.currentTime;e_(this,t.animation,e),e.previousNode=t,n.currentStaggerTime=a.currentTime-l+(a.startTime-n.currentTimeline.startTime)}}const x_={};class __{constructor(t,e,n,a,r,i,s,u){this._driver=t,this.element=e,this.subInstructions=n,this._enterClassName=a,this._leaveClassName=r,this.errors=i,this.timelines=s,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=x_,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=u||new T_(this._driver,e,0),s.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(t,e){if(!t)return;const n=t;let a=this.options;null!=n.duration&&(a.duration=qx(n.duration)),null!=n.delay&&(a.delay=qx(n.delay));const r=n.params;if(r){let t=a.params;t||(t=this.options.params={}),Object.keys(r).forEach(n=>{e&&t.hasOwnProperty(n)||(t[n]=$x(r[n],t,this.errors))})}}_copyOptions(){const t={};if(this.options){const e=this.options.params;if(e){const n=t.params={};Object.keys(e).forEach(t=>{n[t]=e[t]})}}return t}createSubContext(t=null,e,n){const a=e||this.element,r=new __(this._driver,a,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(a,n||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(t),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(t){return this.previousNode=x_,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(t,e,n){const a={duration:null!=e?e:t.duration,delay:this.currentTimeline.currentTime+(null!=n?n:0)+t.delay,easing:""},r=new w_(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,a,t.stretchStartingKeyframe);return this.timelines.push(r),a}incrementTime(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)}delayNextStep(t){t>0&&this.currentTimeline.delayNextStep(t)}invokeQuery(t,e,n,a,r,i){let s=[];if(a&&s.push(this.element),t.length>0){t=(t=t.replace(b_,"."+this._enterClassName)).replace(m_,"."+this._leaveClassName);let e=this._driver.query(this.element,t,1!=n);0!==n&&(e=n<0?e.slice(e.length+n,e.length):e.slice(0,n)),s.push(...e)}return r||0!=s.length||i.push(`\`query("${e}")\` returned zero elements. (Use \`query("${e}", { optional: true })\` if you wish to allow this.)`),s}}class T_{constructor(t,e,n,a){this._driver=t,this.element=e,this.startTime=n,this._elementTimelineStylesLookup=a,this.duration=0,this._previousKeyframe={},this._currentKeyframe={},this._keyframes=new Map,this._styleSummary={},this._pendingStyles={},this._backFill={},this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._localTimelineStyles=Object.create(this._backFill,{}),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.getCurrentStyleProperties().length>0;default:return!0}}getCurrentStyleProperties(){return Object.keys(this._currentKeyframe)}get currentTime(){return this.startTime+this.duration}delayNextStep(t){const e=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t}fork(t,e){return this.applyStylesToKeyframe(),new T_(this._driver,t,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=Object.create(this._backFill,{}),this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()}_updateStyle(t,e){this._localTimelineStyles[t]=e,this._globalTimelineStyles[t]=e,this._styleSummary[t]={time:this.currentTime,value:e}}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(t){t&&(this._previousKeyframe.easing=t),Object.keys(this._globalTimelineStyles).forEach(t=>{this._backFill[t]=this._globalTimelineStyles[t]||W.a,this._currentKeyframe[t]=W.a}),this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(t,e,n,a){e&&(this._previousKeyframe.easing=e);const r=a&&a.params||{},i=function(t,e){const n={};let a;return t.forEach(t=>{"*"===t?(a=a||Object.keys(e),a.forEach(t=>{n[t]=W.a})):Gx(t,!1,n)}),n}(t,this._globalTimelineStyles);Object.keys(i).forEach(t=>{const e=$x(i[t],r,n);this._pendingStyles[t]=e,this._localTimelineStyles.hasOwnProperty(t)||(this._backFill[t]=this._globalTimelineStyles.hasOwnProperty(t)?this._globalTimelineStyles[t]:W.a),this._updateStyle(t,e)})}applyStylesToKeyframe(){const t=this._pendingStyles,e=Object.keys(t);0!=e.length&&(this._pendingStyles={},e.forEach(e=>{this._currentKeyframe[e]=t[e]}),Object.keys(this._localTimelineStyles).forEach(t=>{this._currentKeyframe.hasOwnProperty(t)||(this._currentKeyframe[t]=this._localTimelineStyles[t])}))}snapshotCurrentStyles(){Object.keys(this._localTimelineStyles).forEach(t=>{const e=this._localTimelineStyles[t];this._pendingStyles[t]=e,this._updateStyle(t,e)})}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const t=[];for(let e in this._currentKeyframe)t.push(e);return t}mergeTimelineCollectedStyles(t){Object.keys(t._styleSummary).forEach(e=>{const n=this._styleSummary[e],a=t._styleSummary[e];(!n||a.time>n.time)&&this._updateStyle(e,a.value)})}buildKeyframes(){this.applyStylesToKeyframe();const t=new Set,e=new Set,n=1===this._keyframes.size&&0===this.duration;let a=[];this._keyframes.forEach((r,i)=>{const s=Gx(r,!0);Object.keys(s).forEach(n=>{const a=s[n];a==W.l?t.add(n):a==W.a&&e.add(n)}),n||(s.offset=i/this.duration),a.push(s)});const r=t.size?Jx(t.values()):[],i=e.size?Jx(e.values()):[];if(n){const t=a[0],e=Vx(t);t.offset=0,e.offset=1,a=[t,e]}return g_(this.element,a,r,i,this.duration,this.startTime,this.easing,!1)}}class w_ extends T_{constructor(t,e,n,a,r,i,s=!1){super(t,e,i.delay),this.element=e,this.keyframes=n,this.preStyleProps=a,this.postStyleProps=r,this._stretchStartingKeyframe=s,this.timings={duration:i.duration,delay:i.delay,easing:i.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let t=this.keyframes,{delay:e,duration:n,easing:a}=this.timings;if(this._stretchStartingKeyframe&&e){const r=[],i=n+e,s=e/i,u=Gx(t[0],!1);u.offset=0,r.push(u);const o=Gx(t[0],!1);o.offset=O_(s),r.push(o);const l=t.length-1;for(let a=1;a<=l;a++){let s=Gx(t[a],!1);s.offset=O_((e+s.offset*n)/i),r.push(s)}n=i,e=0,a="",t=r}return g_(this.element,t,this.preStyleProps,this.postStyleProps,n,e,a,!0)}}function O_(t,e=3){const n=Math.pow(10,e-1);return Math.round(t*n)/n}class S_{}class I_ extends S_{normalizePropertyName(t,e){return Qx(t)}normalizeStyleValue(t,e,n,a){let r="";const i=n.toString().trim();if(N_[e]&&0!==n&&"0"!==n)if("number"==typeof n)r="px";else{const e=n.match(/^[+-]?[\d\.]+([a-z]*)$/);e&&0==e[1].length&&a.push(`Please provide a CSS unit value for ${t}:${n}`)}return i+r}}const N_=(()=>function(t){const e={};return t.forEach(t=>e[t]=!0),e}("width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective".split(",")))();function C_(t,e,n,a,r,i,s,u,o,l,d,c,f){return{type:0,element:t,triggerName:e,isRemovalTransition:r,fromState:n,fromStyles:i,toState:a,toStyles:s,timelines:u,queriedElements:o,preStyleProps:l,postStyleProps:d,totalTime:c,errors:f}}const R_={};class A_{constructor(t,e,n){this._triggerName=t,this.ast=e,this._stateStyles=n}match(t,e,n,a){return function(t,e,n,a,r){return t.some(t=>t(e,n,a,r))}(this.ast.matchers,t,e,n,a)}buildStyles(t,e,n){const a=this._stateStyles["*"],r=this._stateStyles[t],i=a?a.buildStyles(e,n):{};return r?r.buildStyles(e,n):i}build(t,e,n,a,r,i,s,u,o,l){const d=[],c=this.ast.options&&this.ast.options.params||R_,f=this.buildStyles(n,s&&s.params||R_,d),h=u&&u.params||R_,g=this.buildStyles(a,h,d),p=new Set,b=new Map,m=new Map,y="void"===a,v={params:Object.assign({},c,h)},x=l?[]:y_(t,e,this.ast.animation,r,i,f,g,v,o,d);let _=0;if(x.forEach(t=>{_=Math.max(t.duration+t.delay,_)}),d.length)return C_(e,this._triggerName,n,a,y,f,g,[],[],b,m,_,d);x.forEach(t=>{const n=t.element,a=Tx(b,n,{});t.preStyleProps.forEach(t=>a[t]=!0);const r=Tx(m,n,{});t.postStyleProps.forEach(t=>r[t]=!0),n!==e&&p.add(n)});const T=Jx(p.values());return C_(e,this._triggerName,n,a,y,f,g,x,T,b,m,_)}}class k_{constructor(t,e){this.styles=t,this.defaultParams=e}buildStyles(t,e){const n={},a=Vx(this.defaultParams);return Object.keys(t).forEach(e=>{const n=t[e];null!=n&&(a[e]=n)}),this.styles.styles.forEach(t=>{if("string"!=typeof t){const r=t;Object.keys(r).forEach(t=>{let i=r[t];i.length>1&&(i=$x(i,a,e)),n[t]=i})}}),n}}class E_{constructor(t,e){this.name=t,this.ast=e,this.transitionFactories=[],this.states={},e.states.forEach(t=>{this.states[t.name]=new k_(t.style,t.options&&t.options.params||{})}),L_(this.states,"true","1"),L_(this.states,"false","0"),e.transitions.forEach(e=>{this.transitionFactories.push(new A_(t,e,this.states))}),this.fallbackTransition=new A_(t,{type:1,animation:{type:2,steps:[],options:null},matchers:[(t,e)=>!0],options:null,queryCount:0,depCount:0},this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(t,e,n,a){return this.transitionFactories.find(r=>r.match(t,e,n,a))||null}matchStyles(t,e,n){return this.fallbackTransition.buildStyles(t,e,n)}}function L_(t,e,n){t.hasOwnProperty(e)?t.hasOwnProperty(n)||(t[n]=t[e]):t.hasOwnProperty(n)&&(t[e]=t[n])}const D_=new p_;class P_{constructor(t,e,n){this.bodyNode=t,this._driver=e,this._normalizer=n,this._animations={},this._playersById={},this.players=[]}register(t,e){const n=[],a=o_(this._driver,e,n);if(n.length)throw new Error("Unable to build the animation due to the following errors: "+n.join("\n"));this._animations[t]=a}_buildPlayer(t,e,n){const a=t.element,r=yx(0,this._normalizer,0,t.keyframes,e,n);return this._driver.animate(a,r,t.duration,t.delay,t.easing,[],!0)}create(t,e,n={}){const a=[],r=this._animations[t];let i;const s=new Map;if(r?(i=y_(this._driver,e,r,"ng-enter","ng-leave",{},{},n,D_,a),i.forEach(t=>{const e=Tx(s,t.element,{});t.postStyleProps.forEach(t=>e[t]=null)})):(a.push("The requested animation doesn't exist or has already been destroyed"),i=[]),a.length)throw new Error("Unable to create the animation due to the following errors: "+a.join("\n"));s.forEach((t,e)=>{Object.keys(t).forEach(n=>{t[n]=this._driver.computeStyle(e,n,W.a)})});const u=mx(i.map(t=>{const e=s.get(t.element);return this._buildPlayer(t,{},e)}));return this._playersById[t]=u,u.onDestroy(()=>this.destroy(t)),this.players.push(u),u}destroy(t){const e=this._getPlayer(t);e.destroy(),delete this._playersById[t];const n=this.players.indexOf(e);n>=0&&this.players.splice(n,1)}_getPlayer(t){const e=this._playersById[t];if(!e)throw new Error("Unable to find the timeline player referenced by "+t);return e}listen(t,e,n,a){const r=_x(e,"","","");return vx(this._getPlayer(t),n,r,a),()=>{}}command(t,e,n,a){if("register"==n)return void this.register(t,a[0]);if("create"==n)return void this.create(t,e,a[0]||{});const r=this._getPlayer(t);switch(n){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(a[0]));break;case"destroy":this.destroy(t)}}}const M_=[],q_={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},j_={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0};class F_{constructor(t,e=""){this.namespaceId=e;const n=t&&t.hasOwnProperty("value");if(this.value=null!=(a=n?t.value:t)?a:null,n){const e=Vx(t);delete e.value,this.options=e}else this.options={};var a;this.options.params||(this.options.params={})}get params(){return this.options.params}absorbOptions(t){const e=t.params;if(e){const t=this.options.params;Object.keys(e).forEach(n=>{null==t[n]&&(t[n]=e[n])})}}}const V_=new F_("void");class G_{constructor(t,e,n){this.id=t,this.hostElement=e,this._engine=n,this.players=[],this._triggers={},this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+t,K_(e,this._hostClassName)}listen(t,e,n,a){if(!this._triggers.hasOwnProperty(e))throw new Error(`Unable to listen on the animation trigger event "${n}" because the animation trigger "${e}" doesn't exist!`);if(null==n||0==n.length)throw new Error(`Unable to listen on the animation trigger "${e}" because the provided event is undefined!`);if("start"!=(r=n)&&"done"!=r)throw new Error(`The provided animation trigger event "${n}" for the animation trigger "${e}" is not supported!`);var r;const i=Tx(this._elementListeners,t,[]),s={name:e,phase:n,callback:a};i.push(s);const u=Tx(this._engine.statesByElement,t,{});return u.hasOwnProperty(e)||(K_(t,"ng-trigger"),K_(t,"ng-trigger-"+e),u[e]=V_),()=>{this._engine.afterFlush(()=>{const t=i.indexOf(s);t>=0&&i.splice(t,1),this._triggers[e]||delete u[e]})}}register(t,e){return!this._triggers[t]&&(this._triggers[t]=e,!0)}_getTrigger(t){const e=this._triggers[t];if(!e)throw new Error(`The provided animation trigger "${t}" has not been registered!`);return e}trigger(t,e,n,a=!0){const r=this._getTrigger(e),i=new z_(this.id,e,t);let s=this._engine.statesByElement.get(t);s||(K_(t,"ng-trigger"),K_(t,"ng-trigger-"+e),this._engine.statesByElement.set(t,s={}));let u=s[e];const o=new F_(n,this.id);if(!(n&&n.hasOwnProperty("value"))&&u&&o.absorbOptions(u.options),s[e]=o,u||(u=V_),"void"!==o.value&&u.value===o.value){if(!function(t,e){const n=Object.keys(t),a=Object.keys(e);if(n.length!=a.length)return!1;for(let r=0;r<n.length;r++){const a=n[r];if(!e.hasOwnProperty(a)||t[a]!==e[a])return!1}return!0}(u.params,o.params)){const e=[],n=r.matchStyles(u.value,u.params,e),a=r.matchStyles(o.value,o.params,e);e.length?this._engine.reportError(e):this._engine.afterFlush(()=>{Hx(t,n),Yx(t,a)})}return}const l=Tx(this._engine.playersByElement,t,[]);l.forEach(t=>{t.namespaceId==this.id&&t.triggerName==e&&t.queued&&t.destroy()});let d=r.matchTransition(u.value,o.value,t,o.params),c=!1;if(!d){if(!a)return;d=r.fallbackTransition,c=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:e,transition:d,fromState:u,toState:o,player:i,isFallbackTransition:c}),c||(K_(t,"ng-animate-queued"),i.onStart(()=>{$_(t,"ng-animate-queued")})),i.onDone(()=>{let e=this.players.indexOf(i);e>=0&&this.players.splice(e,1);const n=this._engine.playersByElement.get(t);if(n){let t=n.indexOf(i);t>=0&&n.splice(t,1)}}),this.players.push(i),l.push(i),i}deregister(t){delete this._triggers[t],this._engine.statesByElement.forEach((e,n)=>{delete e[t]}),this._elementListeners.forEach((e,n)=>{this._elementListeners.set(n,e.filter(e=>e.name!=t))})}clearElementCache(t){this._engine.statesByElement.delete(t),this._elementListeners.delete(t);const e=this._engine.playersByElement.get(t);e&&(e.forEach(t=>t.destroy()),this._engine.playersByElement.delete(t))}_signalRemovalForInnerTriggers(t,e,n=!1){this._engine.driver.query(t,".ng-trigger",!0).forEach(t=>{if(t.__ng_removed)return;const n=this._engine.fetchNamespacesByElement(t);n.size?n.forEach(n=>n.triggerLeaveAnimation(t,e,!1,!0)):this.clearElementCache(t)})}triggerLeaveAnimation(t,e,n,a){const r=this._engine.statesByElement.get(t);if(r){const i=[];if(Object.keys(r).forEach(e=>{if(this._triggers[e]){const n=this.trigger(t,e,"void",a);n&&i.push(n)}}),i.length)return this._engine.markElementAsRemoved(this.id,t,!0,e),n&&mx(i).onDone(()=>this._engine.processLeaveNode(t)),!0}return!1}prepareLeaveAnimationListeners(t){const e=this._elementListeners.get(t);if(e){const n=new Set;e.forEach(e=>{const a=e.name;if(n.has(a))return;n.add(a);const r=this._triggers[a].fallbackTransition,i=this._engine.statesByElement.get(t)[a]||V_,s=new F_("void"),u=new z_(this.id,a,t);this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:a,transition:r,fromState:i,toState:s,player:u,isFallbackTransition:!0})})}}removeNode(t,e){const n=this._engine;if(t.childElementCount&&this._signalRemovalForInnerTriggers(t,e,!0),this.triggerLeaveAnimation(t,e,!0))return;let a=!1;if(n.totalAnimations){const e=n.players.length?n.playersByQueriedElement.get(t):[];if(e&&e.length)a=!0;else{let e=t;for(;e=e.parentNode;)if(n.statesByElement.get(e)){a=!0;break}}}this.prepareLeaveAnimationListeners(t),a?n.markElementAsRemoved(this.id,t,!1,e):(n.afterFlush(()=>this.clearElementCache(t)),n.destroyInnerAnimations(t),n._onRemovalComplete(t,e))}insertNode(t,e){K_(t,this._hostClassName)}drainQueuedTransitions(t){const e=[];return this._queue.forEach(n=>{const a=n.player;if(a.destroyed)return;const r=n.element,i=this._elementListeners.get(r);i&&i.forEach(e=>{if(e.name==n.triggerName){const a=_x(r,n.triggerName,n.fromState.value,n.toState.value);a._data=t,vx(n.player,e.phase,a,e.callback)}}),a.markedForDestroy?this._engine.afterFlush(()=>{a.destroy()}):e.push(n)}),this._queue=[],e.sort((t,e)=>{const n=t.transition.ast.depCount,a=e.transition.ast.depCount;return 0==n||0==a?n-a:this._engine.driver.containsElement(t.element,e.element)?1:-1})}destroy(t){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,t)}elementContainsData(t){let e=!1;return this._elementListeners.has(t)&&(e=!0),e=!!this._queue.find(e=>e.element===t)||e,e}}class B_{constructor(t,e,n){this.bodyNode=t,this.driver=e,this._normalizer=n,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(t,e)=>{}}_onRemovalComplete(t,e){this.onRemovalComplete(t,e)}get queuedPlayers(){const t=[];return this._namespaceList.forEach(e=>{e.players.forEach(e=>{e.queued&&t.push(e)})}),t}createNamespace(t,e){const n=new G_(t,e,this);return e.parentNode?this._balanceNamespaceList(n,e):(this.newHostElements.set(e,n),this.collectEnterElement(e)),this._namespaceLookup[t]=n}_balanceNamespaceList(t,e){const n=this._namespaceList.length-1;if(n>=0){let a=!1;for(let r=n;r>=0;r--)if(this.driver.containsElement(this._namespaceList[r].hostElement,e)){this._namespaceList.splice(r+1,0,t),a=!0;break}a||this._namespaceList.splice(0,0,t)}else this._namespaceList.push(t);return this.namespacesByHostElement.set(e,t),t}register(t,e){let n=this._namespaceLookup[t];return n||(n=this.createNamespace(t,e)),n}registerTrigger(t,e,n){let a=this._namespaceLookup[t];a&&a.register(e,n)&&this.totalAnimations++}destroy(t,e){if(!t)return;const n=this._fetchNamespace(t);this.afterFlush(()=>{this.namespacesByHostElement.delete(n.hostElement),delete this._namespaceLookup[t];const e=this._namespaceList.indexOf(n);e>=0&&this._namespaceList.splice(e,1)}),this.afterFlushAnimationsDone(()=>n.destroy(e))}_fetchNamespace(t){return this._namespaceLookup[t]}fetchNamespacesByElement(t){const e=new Set,n=this.statesByElement.get(t);if(n){const t=Object.keys(n);for(let a=0;a<t.length;a++){const r=n[t[a]].namespaceId;if(r){const t=this._fetchNamespace(r);t&&e.add(t)}}}return e}trigger(t,e,n,a){if(Y_(e)){const r=this._fetchNamespace(t);if(r)return r.trigger(e,n,a),!0}return!1}insertNode(t,e,n,a){if(!Y_(e))return;const r=e.__ng_removed;if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const t=this.collectedLeaveElements.indexOf(e);t>=0&&this.collectedLeaveElements.splice(t,1)}if(t){const a=this._fetchNamespace(t);a&&a.insertNode(e,n)}a&&this.collectEnterElement(e)}collectEnterElement(t){this.collectedEnterElements.push(t)}markElementAsDisabled(t,e){e?this.disabledNodes.has(t)||(this.disabledNodes.add(t),K_(t,"ng-animate-disabled")):this.disabledNodes.has(t)&&(this.disabledNodes.delete(t),$_(t,"ng-animate-disabled"))}removeNode(t,e,n,a){if(Y_(e)){const r=t?this._fetchNamespace(t):null;if(r?r.removeNode(e,a):this.markElementAsRemoved(t,e,!1,a),n){const n=this.namespacesByHostElement.get(e);n&&n.id!==t&&n.removeNode(e,a)}}else this._onRemovalComplete(e,a)}markElementAsRemoved(t,e,n,a){this.collectedLeaveElements.push(e),e.__ng_removed={namespaceId:t,setForRemoval:a,hasAnimation:n,removedBeforeQueried:!1}}listen(t,e,n,a,r){return Y_(e)?this._fetchNamespace(t).listen(e,n,a,r):()=>{}}_buildInstruction(t,e,n,a,r){return t.transition.build(this.driver,t.element,t.fromState.value,t.toState.value,n,a,t.fromState.options,t.toState.options,e,r)}destroyInnerAnimations(t){let e=this.driver.query(t,".ng-trigger",!0);e.forEach(t=>this.destroyActiveAnimationsForElement(t)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(t,".ng-animating",!0),e.forEach(t=>this.finishActiveQueriedAnimationOnElement(t)))}destroyActiveAnimationsForElement(t){const e=this.playersByElement.get(t);e&&e.forEach(t=>{t.queued?t.markedForDestroy=!0:t.destroy()})}finishActiveQueriedAnimationOnElement(t){const e=this.playersByQueriedElement.get(t);e&&e.forEach(t=>t.finish())}whenRenderingDone(){return new Promise(t=>{if(this.players.length)return mx(this.players).onDone(()=>t());t()})}processLeaveNode(t){const e=t.__ng_removed;if(e&&e.setForRemoval){if(t.__ng_removed=q_,e.namespaceId){this.destroyInnerAnimations(t);const n=this._fetchNamespace(e.namespaceId);n&&n.clearElementCache(t)}this._onRemovalComplete(t,e.setForRemoval)}this.driver.matchesElement(t,".ng-animate-disabled")&&this.markElementAsDisabled(t,!1),this.driver.query(t,".ng-animate-disabled",!0).forEach(t=>{this.markElementAsDisabled(t,!1)})}flush(t=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((t,e)=>this._balanceNamespaceList(t,e)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let n=0;n<this.collectedEnterElements.length;n++)K_(this.collectedEnterElements[n],"ng-star-inserted");if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){const n=[];try{e=this._flushAnimations(n,t)}finally{for(let t=0;t<n.length;t++)n[t]()}}else for(let n=0;n<this.collectedLeaveElements.length;n++)this.processLeaveNode(this.collectedLeaveElements[n]);if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(t=>t()),this._flushFns=[],this._whenQuietFns.length){const t=this._whenQuietFns;this._whenQuietFns=[],e.length?mx(e).onDone(()=>{t.forEach(t=>t())}):t.forEach(t=>t())}}reportError(t){throw new Error("Unable to process animations due to the following failed trigger transitions\n "+t.join("\n"))}_flushAnimations(t,e){const n=new p_,a=[],r=new Map,i=[],s=new Map,u=new Map,o=new Map,l=new Set;this.disabledNodes.forEach(t=>{l.add(t);const e=this.driver.query(t,".ng-animate-queued",!0);for(let n=0;n<e.length;n++)l.add(e[n])});const d=this.bodyNode,c=Array.from(this.statesByElement.keys()),f=W_(c,this.collectedEnterElements),h=new Map;let g=0;f.forEach((t,e)=>{const n="ng-enter"+g++;h.set(e,n),t.forEach(t=>K_(t,n))});const p=[],b=new Set,m=new Set;for(let A=0;A<this.collectedLeaveElements.length;A++){const t=this.collectedLeaveElements[A],e=t.__ng_removed;e&&e.setForRemoval&&(p.push(t),b.add(t),e.hasAnimation?this.driver.query(t,".ng-star-inserted",!0).forEach(t=>b.add(t)):m.add(t))}const y=new Map,v=W_(c,Array.from(b));v.forEach((t,e)=>{const n="ng-leave"+g++;y.set(e,n),t.forEach(t=>K_(t,n))}),t.push(()=>{f.forEach((t,e)=>{const n=h.get(e);t.forEach(t=>$_(t,n))}),v.forEach((t,e)=>{const n=y.get(e);t.forEach(t=>$_(t,n))}),p.forEach(t=>{this.processLeaveNode(t)})});const x=[],_=[];for(let A=this._namespaceList.length-1;A>=0;A--)this._namespaceList[A].drainQueuedTransitions(e).forEach(t=>{const e=t.player,r=t.element;if(x.push(e),this.collectedEnterElements.length){const t=r.__ng_removed;if(t&&t.setForMove)return void e.destroy()}const l=!d||!this.driver.containsElement(d,r),c=y.get(r),f=h.get(r),g=this._buildInstruction(t,n,f,c,l);if(g.errors&&g.errors.length)_.push(g);else{if(l)return e.onStart(()=>Hx(r,g.fromStyles)),e.onDestroy(()=>Yx(r,g.toStyles)),void a.push(e);if(t.isFallbackTransition)return e.onStart(()=>Hx(r,g.fromStyles)),e.onDestroy(()=>Yx(r,g.toStyles)),void a.push(e);g.timelines.forEach(t=>t.stretchStartingKeyframe=!0),n.append(r,g.timelines),i.push({instruction:g,player:e,element:r}),g.queriedElements.forEach(t=>Tx(s,t,[]).push(e)),g.preStyleProps.forEach((t,e)=>{const n=Object.keys(t);if(n.length){let t=u.get(e);t||u.set(e,t=new Set),n.forEach(e=>t.add(e))}}),g.postStyleProps.forEach((t,e)=>{const n=Object.keys(t);let a=o.get(e);a||o.set(e,a=new Set),n.forEach(t=>a.add(t))})}});if(_.length){const t=[];_.forEach(e=>{t.push(`@${e.triggerName} has failed due to:\n`),e.errors.forEach(e=>t.push(`- ${e}\n`))}),x.forEach(t=>t.destroy()),this.reportError(t)}const T=new Map,w=new Map;i.forEach(t=>{const e=t.element;n.has(e)&&(w.set(e,e),this._beforeAnimationBuild(t.player.namespaceId,t.instruction,T))}),a.forEach(t=>{const e=t.element;this._getPreviousPlayers(e,!1,t.namespaceId,t.triggerName,null).forEach(t=>{Tx(T,e,[]).push(t),t.destroy()})});const O=p.filter(t=>Z_(t,u,o)),S=new Map;U_(S,this.driver,m,o,W.a).forEach(t=>{Z_(t,u,o)&&O.push(t)});const I=new Map;f.forEach((t,e)=>{U_(I,this.driver,new Set(t),u,W.l)}),O.forEach(t=>{const e=S.get(t),n=I.get(t);S.set(t,Object.assign({},e,n))});const N=[],C=[],R={};i.forEach(t=>{const{element:e,player:i,instruction:s}=t;if(n.has(e)){if(l.has(e))return i.onDestroy(()=>Yx(e,s.toStyles)),i.disabled=!0,i.overrideTotalTime(s.totalTime),void a.push(i);let t=R;if(w.size>1){let n=e;const a=[];for(;n=n.parentNode;){const e=w.get(n);if(e){t=e;break}a.push(n)}a.forEach(e=>w.set(e,t))}const n=this._buildAnimation(i.namespaceId,s,T,r,I,S);if(i.setRealPlayer(n),t===R)N.push(i);else{const e=this.playersByElement.get(t);e&&e.length&&(i.parentPlayer=mx(e)),a.push(i)}}else Hx(e,s.fromStyles),i.onDestroy(()=>Yx(e,s.toStyles)),C.push(i),l.has(e)&&a.push(i)}),C.forEach(t=>{const e=r.get(t.element);if(e&&e.length){const n=mx(e);t.setRealPlayer(n)}}),a.forEach(t=>{t.parentPlayer?t.syncPlayerEvents(t.parentPlayer):t.destroy()});for(let A=0;A<p.length;A++){const t=p[A],e=t.__ng_removed;if($_(t,"ng-leave"),e&&e.hasAnimation)continue;let n=[];if(s.size){let e=s.get(t);e&&e.length&&n.push(...e);let a=this.driver.query(t,".ng-animating",!0);for(let t=0;t<a.length;t++){let e=s.get(a[t]);e&&e.length&&n.push(...e)}}const a=n.filter(t=>!t.destroyed);a.length?J_(this,t,a):this.processLeaveNode(t)}return p.length=0,N.forEach(t=>{this.players.push(t),t.onDone(()=>{t.destroy();const e=this.players.indexOf(t);this.players.splice(e,1)}),t.play()}),N}elementContainsData(t,e){let n=!1;const a=e.__ng_removed;return a&&a.setForRemoval&&(n=!0),this.playersByElement.has(e)&&(n=!0),this.playersByQueriedElement.has(e)&&(n=!0),this.statesByElement.has(e)&&(n=!0),this._fetchNamespace(t).elementContainsData(e)||n}afterFlush(t){this._flushFns.push(t)}afterFlushAnimationsDone(t){this._whenQuietFns.push(t)}_getPreviousPlayers(t,e,n,a,r){let i=[];if(e){const e=this.playersByQueriedElement.get(t);e&&(i=e)}else{const e=this.playersByElement.get(t);if(e){const t=!r||"void"==r;e.forEach(e=>{e.queued||(t||e.triggerName==a)&&i.push(e)})}}return(n||a)&&(i=i.filter(t=>!(n&&n!=t.namespaceId||a&&a!=t.triggerName))),i}_beforeAnimationBuild(t,e,n){const a=e.element,r=e.isRemovalTransition?void 0:t,i=e.isRemovalTransition?void 0:e.triggerName;for(const s of e.timelines){const t=s.element,u=t!==a,o=Tx(n,t,[]);this._getPreviousPlayers(t,u,r,i,e.toState).forEach(t=>{const e=t.getRealPlayer();e.beforeDestroy&&e.beforeDestroy(),t.destroy(),o.push(t)})}Hx(a,e.fromStyles)}_buildAnimation(t,e,n,a,r,i){const s=e.triggerName,u=e.element,o=[],l=new Set,d=new Set,c=e.timelines.map(e=>{const c=e.element;l.add(c);const f=c.__ng_removed;if(f&&f.removedBeforeQueried)return new W.d(e.duration,e.delay);const h=c!==u,g=function(t){const e=[];return function t(e,n){for(let a=0;a<e.length;a++){const r=e[a];r instanceof W.k?t(r.players,n):n.push(r)}}(t,e),e}((n.get(c)||M_).map(t=>t.getRealPlayer())).filter(t=>!!t.element&&t.element===c),p=r.get(c),b=i.get(c),m=yx(0,this._normalizer,0,e.keyframes,p,b),y=this._buildPlayer(e,m,g);if(e.subTimeline&&a&&d.add(c),h){const e=new z_(t,s,c);e.setRealPlayer(y),o.push(e)}return y});o.forEach(t=>{Tx(this.playersByQueriedElement,t.element,[]).push(t),t.onDone(()=>function(t,e,n){let a;if(t instanceof Map){if(a=t.get(e),a){if(a.length){const t=a.indexOf(n);a.splice(t,1)}0==a.length&&t.delete(e)}}else if(a=t[e],a){if(a.length){const t=a.indexOf(n);a.splice(t,1)}0==a.length&&delete t[e]}return a}(this.playersByQueriedElement,t.element,t))}),l.forEach(t=>K_(t,"ng-animating"));const f=mx(c);return f.onDestroy(()=>{l.forEach(t=>$_(t,"ng-animating")),Yx(u,e.toStyles)}),d.forEach(t=>{Tx(a,t,[]).push(f)}),f}_buildPlayer(t,e,n){return e.length>0?this.driver.animate(t.element,e,t.duration,t.delay,t.easing,n):new W.d(t.duration,t.delay)}}class z_{constructor(t,e,n){this.namespaceId=t,this.triggerName=e,this.element=n,this._player=new W.d,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(t){this._containsRealPlayer||(this._player=t,Object.keys(this._queuedCallbacks).forEach(e=>{this._queuedCallbacks[e].forEach(n=>vx(t,e,void 0,n))}),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(t.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(t){this.totalTime=t}syncPlayerEvents(t){const e=this._player;e.triggerCallback&&t.onStart(()=>e.triggerCallback("start")),t.onDone(()=>this.finish()),t.onDestroy(()=>this.destroy())}_queueEvent(t,e){Tx(this._queuedCallbacks,t,[]).push(e)}onDone(t){this.queued&&this._queueEvent("done",t),this._player.onDone(t)}onStart(t){this.queued&&this._queueEvent("start",t),this._player.onStart(t)}onDestroy(t){this.queued&&this._queueEvent("destroy",t),this._player.onDestroy(t)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(t){this.queued||this._player.setPosition(t)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(t){const e=this._player;e.triggerCallback&&e.triggerCallback(t)}}function Y_(t){return t&&1===t.nodeType}function H_(t,e){const n=t.style.display;return t.style.display=null!=e?e:"none",n}function U_(t,e,n,a,r){const i=[];n.forEach(t=>i.push(H_(t)));const s=[];a.forEach((n,a)=>{const i={};n.forEach(t=>{const n=i[t]=e.computeStyle(a,t,r);n&&0!=n.length||(a.__ng_removed=j_,s.push(a))}),t.set(a,i)});let u=0;return n.forEach(t=>H_(t,i[u++])),s}function W_(t,e){const n=new Map;if(t.forEach(t=>n.set(t,[])),0==e.length)return n;const a=new Set(e),r=new Map;return e.forEach(t=>{const e=function t(e){if(!e)return 1;let i=r.get(e);if(i)return i;const s=e.parentNode;return i=n.has(s)?s:a.has(s)?1:t(s),r.set(e,i),i}(t);1!==e&&n.get(e).push(t)}),n}function K_(t,e){if(t.classList)t.classList.add(e);else{let n=t.$$classes;n||(n=t.$$classes={}),n[e]=!0}}function $_(t,e){if(t.classList)t.classList.remove(e);else{let n=t.$$classes;n&&delete n[e]}}function J_(t,e,n){mx(n).onDone(()=>t.processLeaveNode(e))}function Z_(t,e,n){const a=n.get(t);if(!a)return!1;let r=e.get(t);return r?a.forEach(t=>r.add(t)):e.set(t,a),n.delete(t),!0}class Q_{constructor(t,e,n){this.bodyNode=t,this._driver=e,this._triggerCache={},this.onRemovalComplete=(t,e)=>{},this._transitionEngine=new B_(t,e,n),this._timelineEngine=new P_(t,e,n),this._transitionEngine.onRemovalComplete=(t,e)=>this.onRemovalComplete(t,e)}registerTrigger(t,e,n,a,r){const i=t+"-"+a;let s=this._triggerCache[i];if(!s){const t=[],e=o_(this._driver,r,t);if(t.length)throw new Error(`The animation trigger "${a}" has failed to build due to the following errors:\n - ${t.join("\n - ")}`);s=function(t,e){return new E_(t,e)}(a,e),this._triggerCache[i]=s}this._transitionEngine.registerTrigger(e,a,s)}register(t,e){this._transitionEngine.register(t,e)}destroy(t,e){this._transitionEngine.destroy(t,e)}onInsert(t,e,n,a){this._transitionEngine.insertNode(t,e,n,a)}onRemove(t,e,n,a){this._transitionEngine.removeNode(t,e,a||!1,n)}disableAnimations(t,e){this._transitionEngine.markElementAsDisabled(t,e)}process(t,e,n,a){if("@"==n.charAt(0)){const[t,r]=wx(n);this._timelineEngine.command(t,e,r,a)}else this._transitionEngine.trigger(t,e,n,a)}listen(t,e,n,a,r){if("@"==n.charAt(0)){const[t,a]=wx(n);return this._timelineEngine.listen(t,e,a,r)}return this._transitionEngine.listen(t,e,n,a,r)}flush(t=-1){this._transitionEngine.flush(t)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}function X_(t,e){let n=null,a=null;return Array.isArray(e)&&e.length?(n=eT(e[0]),e.length>1&&(a=eT(e[e.length-1]))):e&&(n=eT(e)),n||a?new tT(t,n,a):null}let tT=(()=>{class t{constructor(e,n,a){this._element=e,this._startStyles=n,this._endStyles=a,this._state=0;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r={}),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&Yx(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Yx(this._element,this._initialStyles),this._endStyles&&(Yx(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(Hx(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Hx(this._element,this._endStyles),this._endStyles=null),Yx(this._element,this._initialStyles),this._state=3)}}return t.initialStylesByElement=new WeakMap,t})();function eT(t){let e=null;const n=Object.keys(t);for(let a=0;a<n.length;a++){const r=n[a];nT(r)&&(e=e||{},e[r]=t[r])}return e}function nT(t){return"display"===t||"position"===t}class aT{constructor(t,e,n,a,r,i,s){this._element=t,this._name=e,this._duration=n,this._delay=a,this._easing=r,this._fillMode=i,this._onDoneFn=s,this._finished=!1,this._destroyed=!1,this._startTime=0,this._position=0,this._eventFn=t=>this._handleCallback(t)}apply(){!function(t,e){const n=lT(t,"").trim();n.length&&(function(t,e){let n=0;for(let a=0;a<t.length;a++)","===t.charAt(a)&&n++}(n),e=`${n}, ${e}`),oT(t,"",e)}(this._element,`${this._duration}ms ${this._easing} ${this._delay}ms 1 normal ${this._fillMode} ${this._name}`),uT(this._element,this._eventFn,!1),this._startTime=Date.now()}pause(){rT(this._element,this._name,"paused")}resume(){rT(this._element,this._name,"running")}setPosition(t){const e=iT(this._element,this._name);this._position=t*this._duration,oT(this._element,"Delay",`-${this._position}ms`,e)}getPosition(){return this._position}_handleCallback(t){const e=t._ngTestManualTimestamp||Date.now(),n=1e3*parseFloat(t.elapsedTime.toFixed(3));t.animationName==this._name&&Math.max(e-this._startTime,0)>=this._delay&&n>=this._duration&&this.finish()}finish(){this._finished||(this._finished=!0,this._onDoneFn(),uT(this._element,this._eventFn,!0))}destroy(){this._destroyed||(this._destroyed=!0,this.finish(),function(t,e){const n=lT(t,"").split(","),a=sT(n,e);a>=0&&(n.splice(a,1),oT(t,"",n.join(",")))}(this._element,this._name))}}function rT(t,e,n){oT(t,"PlayState",n,iT(t,e))}function iT(t,e){const n=lT(t,"");return n.indexOf(",")>0?sT(n.split(","),e):sT([n],e)}function sT(t,e){for(let n=0;n<t.length;n++)if(t[n].indexOf(e)>=0)return n;return-1}function uT(t,e,n){n?t.removeEventListener("animationend",e):t.addEventListener("animationend",e)}function oT(t,e,n,a){const r="animation"+e;if(null!=a){const e=t.style[r];if(e.length){const t=e.split(",");t[a]=n,n=t.join(",")}}t.style[r]=n}function lT(t,e){return t.style["animation"+e]}class dT{constructor(t,e,n,a,r,i,s,u){this.element=t,this.keyframes=e,this.animationName=n,this._duration=a,this._delay=r,this._finalStyles=s,this._specialStyles=u,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this.currentSnapshot={},this._state=0,this.easing=i||"linear",this.totalTime=a+r,this._buildStyler()}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}destroy(){this.init(),this._state>=4||(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}_flushDoneFns(){this._onDoneFns.forEach(t=>t()),this._onDoneFns=[]}_flushStartFns(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}finish(){this.init(),this._state>=3||(this._state=3,this._styler.finish(),this._flushStartFns(),this._specialStyles&&this._specialStyles.finish(),this._flushDoneFns())}setPosition(t){this._styler.setPosition(t)}getPosition(){return this._styler.getPosition()}hasStarted(){return this._state>=2}init(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())}play(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2,this._specialStyles&&this._specialStyles.start()),this._styler.resume()}pause(){this.init(),this._styler.pause()}restart(){this.reset(),this.play()}reset(){this._styler.destroy(),this._buildStyler(),this._styler.apply()}_buildStyler(){this._styler=new aT(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",()=>this.finish())}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}beforeDestroy(){this.init();const t={};if(this.hasStarted()){const e=this._state>=3;Object.keys(this._finalStyles).forEach(n=>{"offset"!=n&&(t[n]=e?this._finalStyles[n]:n_(this.element,n))})}this.currentSnapshot=t}}class cT extends W.d{constructor(t,e){super(),this.element=t,this._startingStyles={},this.__initialized=!1,this._styles=Dx(e)}init(){!this.__initialized&&this._startingStyles&&(this.__initialized=!0,Object.keys(this._styles).forEach(t=>{this._startingStyles[t]=this.element.style[t]}),super.init())}play(){this._startingStyles&&(this.init(),Object.keys(this._styles).forEach(t=>this.element.style.setProperty(t,this._styles[t])),super.play())}destroy(){this._startingStyles&&(Object.keys(this._startingStyles).forEach(t=>{const e=this._startingStyles[t];e?this.element.style.setProperty(t,e):this.element.style.removeProperty(t)}),this._startingStyles=null,super.destroy())}}class fT{constructor(){this._count=0,this._head=document.querySelector("head"),this._warningIssued=!1}validateStyleProperty(t){return Ax(t)}matchesElement(t,e){return kx(t,e)}containsElement(t,e){return Ex(t,e)}query(t,e,n){return Lx(t,e,n)}computeStyle(t,e,n){return window.getComputedStyle(t)[e]}buildKeyframeElement(t,e,n){n=n.map(t=>Dx(t));let a=`@keyframes ${e} {\n`,r="";n.forEach(t=>{r=" ";const e=parseFloat(t.offset);a+=`${r}${100*e}% {\n`,r+=" ",Object.keys(t).forEach(e=>{const n=t[e];switch(e){case"offset":return;case"easing":return void(n&&(a+=`${r}animation-timing-function: ${n};\n`));default:return void(a+=`${r}${e}: ${n};\n`)}}),a+=r+"}\n"}),a+="}\n";const i=document.createElement("style");return i.innerHTML=a,i}animate(t,e,n,a,r,i=[],s){s&&this._notifyFaultyScrubber();const u=i.filter(t=>t instanceof dT),o={};Xx(n,a)&&u.forEach(t=>{let e=t.currentSnapshot;Object.keys(e).forEach(t=>o[t]=e[t])});const l=function(t){let e={};return t&&(Array.isArray(t)?t:[t]).forEach(t=>{Object.keys(t).forEach(n=>{"offset"!=n&&"easing"!=n&&(e[n]=t[n])})}),e}(e=t_(t,e,o));if(0==n)return new cT(t,l);const d="gen_css_kf_"+this._count++,c=this.buildKeyframeElement(t,d,e);document.querySelector("head").appendChild(c);const f=X_(t,e),h=new dT(t,e,d,n,a,r,l,f);return h.onDestroy(()=>{var t;(t=c).parentNode.removeChild(t)}),h}_notifyFaultyScrubber(){this._warningIssued||(console.warn("@angular/animations: please load the web-animations.js polyfill to allow programmatic access...\n","  visit http://bit.ly/IWukam to learn more about using the web-animation-js polyfill."),this._warningIssued=!0)}}class hT{constructor(t,e,n,a){this.element=t,this.keyframes=e,this.options=n,this._specialStyles=a,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this.time=0,this.parentPlayer=null,this.currentSnapshot={},this._duration=n.duration,this._delay=n.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const t=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,t,this.options),this._finalKeyframe=t.length?t[t.length-1]:{},this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_triggerWebAnimation(t,e,n){return t.animate(e,n)}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(t=>t()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}setPosition(t){this.domPlayer.currentTime=t*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const t={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(e=>{"offset"!=e&&(t[e]=this._finished?this._finalKeyframe[e]:n_(this.element,e))}),this.currentSnapshot=t}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}class gT{constructor(){this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(pT().toString()),this._cssKeyframesDriver=new fT}validateStyleProperty(t){return Ax(t)}matchesElement(t,e){return kx(t,e)}containsElement(t,e){return Ex(t,e)}query(t,e,n){return Lx(t,e,n)}computeStyle(t,e,n){return window.getComputedStyle(t)[e]}overrideWebAnimationsSupport(t){this._isNativeImpl=t}animate(t,e,n,a,r,i=[],s){if(!s&&!this._isNativeImpl)return this._cssKeyframesDriver.animate(t,e,n,a,r,i);const u={duration:n,delay:a,fill:0==a?"both":"forwards"};r&&(u.easing=r);const o={},l=i.filter(t=>t instanceof hT);Xx(n,a)&&l.forEach(t=>{let e=t.currentSnapshot;Object.keys(e).forEach(t=>o[t]=e[t])});const d=X_(t,e=t_(t,e=e.map(t=>Gx(t,!1)),o));return new hT(t,e,u,d)}}function pT(){return"undefined"!=typeof window&&void 0!==window.document&&Element.prototype.animate||{}}class bT extends W.b{constructor(t,e){super(),this._nextAnimationId=0,this._renderer=t.createRenderer(e.body,{id:"0",encapsulation:s.ViewEncapsulation.None,styles:[],data:{animation:[]}})}build(t){const e=this._nextAnimationId.toString();this._nextAnimationId++;const n=Array.isArray(t)?Object(W.f)(t):t;return vT(this._renderer,null,e,"register",[n]),new mT(e,this._renderer)}}class mT extends W.c{constructor(t,e){super(),this._id=t,this._renderer=e}create(t,e){return new yT(this._id,t,e||{},this._renderer)}}class yT{constructor(t,e,n,a){this.id=t,this.element=e,this._renderer=a,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",n)}_listen(t,e){return this._renderer.listen(this.element,`@@${this.id}:${t}`,e)}_command(t,...e){return vT(this._renderer,this.element,this.id,t,e)}onDone(t){this._listen("done",t)}onStart(t){this._listen("start",t)}onDestroy(t){this._listen("destroy",t)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset")}setPosition(t){this._command("setPosition",t)}getPosition(){return 0}}function vT(t,e,n,a,r){return t.setProperty(e,`@@${n}:${a}`,r)}class xT{constructor(t,e,n){this.delegate=t,this.engine=e,this._zone=n,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),e.onRemovalComplete=(t,e)=>{e&&e.parentNode(t)&&e.removeChild(t.parentNode,t)}}createRenderer(t,e){const n=this.delegate.createRenderer(t,e);if(!(t&&e&&e.data&&e.data.animation)){let t=this._rendererCache.get(n);return t||(t=new _T("",n,this.engine),this._rendererCache.set(n,t)),t}const a=e.id,r=e.id+"-"+this._currentId;return this._currentId++,this.engine.register(r,t),e.data.animation.forEach(e=>this.engine.registerTrigger(a,r,t,e.name,e)),new TT(this,r,n,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(t,e,n){t>=0&&t<this._microtaskId?this._zone.run(()=>e(n)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(t=>{const[e,n]=t;e(n)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([e,n]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}class _T{constructor(t,e,n){this.namespaceId=t,this.delegate=e,this.engine=n,this.destroyNode=this.delegate.destroyNode?t=>e.destroyNode(t):null}get data(){return this.delegate.data}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy()}createElement(t,e){return this.delegate.createElement(t,e)}createComment(t){return this.delegate.createComment(t)}createText(t){return this.delegate.createText(t)}appendChild(t,e){this.delegate.appendChild(t,e),this.engine.onInsert(this.namespaceId,e,t,!1)}insertBefore(t,e,n){this.delegate.insertBefore(t,e,n),this.engine.onInsert(this.namespaceId,e,t,!0)}removeChild(t,e,n){this.engine.onRemove(this.namespaceId,e,this.delegate,n)}selectRootElement(t,e){return this.delegate.selectRootElement(t,e)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setAttribute(t,e,n,a){this.delegate.setAttribute(t,e,n,a)}removeAttribute(t,e,n){this.delegate.removeAttribute(t,e,n)}addClass(t,e){this.delegate.addClass(t,e)}removeClass(t,e){this.delegate.removeClass(t,e)}setStyle(t,e,n,a){this.delegate.setStyle(t,e,n,a)}removeStyle(t,e,n){this.delegate.removeStyle(t,e,n)}setProperty(t,e,n){"@"==e.charAt(0)&&"@.disabled"==e?this.disableAnimations(t,!!n):this.delegate.setProperty(t,e,n)}setValue(t,e){this.delegate.setValue(t,e)}listen(t,e,n){return this.delegate.listen(t,e,n)}disableAnimations(t,e){this.engine.disableAnimations(t,e)}}class TT extends _T{constructor(t,e,n,a){super(e,n,a),this.factory=t,this.namespaceId=e}setProperty(t,e,n){"@"==e.charAt(0)?"."==e.charAt(1)&&"@.disabled"==e?this.disableAnimations(t,n=void 0===n||!!n):this.engine.process(this.namespaceId,t,e.substr(1),n):this.delegate.setProperty(t,e,n)}listen(t,e,n){if("@"==e.charAt(0)){const a=function(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(t);let r=e.substr(1),i="";return"@"!=r.charAt(0)&&([r,i]=function(t){const e=t.indexOf(".");return[t.substring(0,e),t.substr(e+1)]}(r)),this.engine.listen(this.namespaceId,a,r,i,t=>{this.factory.scheduleListenerCallback(t._data||-1,n,t)})}return this.delegate.listen(t,e,n)}}class wT extends Q_{constructor(t,e,n){super(t.body,e,n)}}function OT(){return"function"==typeof pT()?new gT:new fT}function ST(){return new I_}function IT(t,e,n){return new xT(t,e,n)}const NT=new s.InjectionToken("AnimationModuleType");class CT{}var RT=n("Avrn");let AT=(()=>{class t{constructor(t,e){this.router=t,this.authStorageService=e}canActivate(){return!(this.authStorageService.isLoggedIn()&&!this.authStorageService.isSSO()&&this.authStorageService.getPwdUpdateRequired()&&(this.router.navigate(["/login-change-password"]),1))}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Et.m),s["ɵɵinject"](Z.a))},token:t,providedIn:"root"}),t})();var kT=n("Vhfg");let ET=(()=>{class t{constructor(t,e){this.http=t,this.router=e}canActivate(t){return this.doCheck(t)}canActivateChild(t){return this.doCheck(t)}doCheck(e){if(e.url.length>0&&t.WHITELIST.includes(e.url[0].path))return Object(ve.a)(!0);const n=e.data.moduleStatusGuardConfig;return this.http.get(`api/${n.apiPath}/status`).pipe(Object(Je.a)(t=>(t.available||this.router.navigate([n.redirectTo,t.message||""]),t.available)),Object(Te.a)(()=>(this.router.navigate([n.redirectTo]),Object(ve.a)(!1))))}}return t.WHITELIST=["501"],t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](Et.m))},token:t,providedIn:"root"}),t})(),LT=(()=>{class t{constructor(t,e){this.authStorageService=t,this.router=e}canActivate(){return!this.authStorageService.isSSO()||(this.router.navigate(["404"]),!1)}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Z.a),s["ɵɵinject"](Et.m))},token:t,providedIn:"root"}),t})();class DT extends sa{resolve(t){const e=[],n=t.queryParams.fromLink||null;let a="";switch(n){case"/monitor":a="Monitors";break;case"/hosts":a="Hosts"}return e.push({text:"Cluster",path:null}),e.push({text:a,path:n}),e.push({text:"Performance Counters",path:""}),e}}class PT extends sa{resolve(t){const e=t.params.name;return[{text:X.startCase(e)+"/Edit",path:e}]}}const MT={breadcrumbs:"Cluster/Hosts"},qT={breadcrumbs:St.a.CREATE},jT={breadcrumbs:"Cluster/Monitors"},FT={breadcrumbs:"Cluster/Services"},VT={breadcrumbs:St.a.CREATE},GT={breadcrumbs:"Cluster/Inventory"},BT={breadcrumbs:"Cluster/OSDs"},zT={breadcrumbs:St.a.CREATE},YT={breadcrumbs:"Cluster/Configuration"},HT={breadcrumbs:St.a.EDIT},UT={breadcrumbs:"Cluster/CRUSH map"},WT={breadcrumbs:"Cluster/Logs"},KT={breadcrumbs:"Telemetry configuration"},$T={breadcrumbs:"Cluster/Monitoring"},JT={breadcrumbs:St.a.CREATE+" Silence"},ZT={breadcrumbs:St.a.CREATE},QT={breadcrumbs:St.a.EDIT},XT={breadcrumbs:St.a.RECREATE},tw={breadcrumbs:DT},ew={breadcrumbs:"Cluster/Manager Modules"},nw={breadcrumbs:PT},aw={breadcrumbs:"Pools"},rw=()=>Promise.all([n.e(1),n.e(6)]).then(n.bind(null,"nOaW")).then(t=>t.RoutedPoolModuleNgFactory),iw={breadcrumbs:!0,text:"Block",path:null},sw=()=>Promise.all([n.e(1),n.e(5)]).then(n.bind(null,"J6Oi")).then(t=>t.RoutedBlockModuleNgFactory),uw={breadcrumbs:"Filesystems"},ow={moduleStatusGuardConfig:{apiPath:"rgw",redirectTo:"rgw/501"},breadcrumbs:!0,text:"Object Gateway",path:null},lw=()=>n.e(7).then(n.bind(null,"Znkk")).then(t=>t.RoutedRgwModuleNgFactory),dw={breadcrumbs:"User management",path:null},cw=()=>n.e(8).then(n.bind(null,"DY6s")).then(t=>t.RoutedAuthModuleNgFactory),fw={breadcrumbs:"User profile",path:null},hw={breadcrumbs:St.a.EDIT},gw={breadcrumbs:"NFS"},pw={moduleStatusGuardConfig:{apiPath:"nfs-ganesha",redirectTo:"nfs/501"},breadcrumbs:"NFS"},bw={breadcrumbs:St.a.CREATE},mw={breadcrumbs:St.a.EDIT};class yw{}var vw=n("yT6U"),xw=n("4DD9"),_w=n("+0ag"),Tw=n("IzCI"),ww=n("Dwqy"),Ow=n("uYzU"),Sw=n("nSDx"),Iw=n("SB+Q"),Nw=n("BQkM"),Cw=n("dEH0"),Rw=n("G1/K"),Aw=n("TJUb"),kw=n("efK2"),Ew=n("CNMR");class Lw{constructor(){this.closeOthers=!1,this.isAnimated=!1}}class Dw{static forRoot(){return{ngModule:Dw,providers:[Lw]}}}let Pw=(()=>{class t{constructor(t){this.http=t}jsError(t,e,n){return this.http.post("ui-api/logging/js-error",{url:t,message:e,stack:n})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:oe.a}),t})();class Mw{constructor(t){this.injector=t}handleError(t){const e=this.injector.get(Pw),n=window.location.href;throw e.jsError(n,t&&t.message,t&&t.stack).subscribe(),t}}var qw=n("aHM3"),jw=n("9Xeq"),Fw=n("yGOH"),Vw=n("bxSN"),Gw=n("V/fk"),Bw=n("ChqD"),zw=n("PCNd"),Yw=n("LceX");class Hw{}class Uw{}var Ww=n("G6Q+");class Kw{}var $w=n("kJI8");class Jw{}class Zw{}class Qw{}class Xw{}class tO{}var eO=s["ɵcmf"](o,[l],(function(t){return s["ɵmod"]([s["ɵmpd"](512,s.ComponentFactoryResolver,s["ɵCodegenComponentFactoryResolver"],[[8,[x,_.a,_a,Ur,Ys,ou,pu,Ru,Ho,yi,zl,gd,Ad,$d,dc,vf,Pf,oh,Ah,Ph,Yh,pg,Qg,fp,mp,kp,om,hm,Tm,Dm,Fm,Ym,$m,ty,M,Y,ey.a,ny.a,ay.a,ry.a,ry.b,iy.a,sy.a,uy.a,oy.a,ly.a,dy.a,dy.c,dy.b,dy.d,gy,Ay,gl,qy,Yy,Qy,cv,yv,jv,Kv,ex,ix,lx,hx]],[3,s.ComponentFactoryResolver],s.NgModuleRef]),s["ɵmpd"](4608,et.j,et.p,[i.DOCUMENT,s.PLATFORM_ID,et.n]),s["ɵmpd"](4608,et.q,et.q,[et.j,et.o]),s["ɵmpd"](4608,Z.a,Z.a,[]),s["ɵmpd"](5120,et.a,(function(t,e,n,a){return[t,new px(e,n,a)]}),[et.q,Et.m,Z.a,bt.a]),s["ɵmpd"](4608,et.m,et.m,[]),s["ɵmpd"](6144,et.k,null,[et.m]),s["ɵmpd"](4608,et.i,et.i,[et.k]),s["ɵmpd"](6144,et.b,null,[et.i]),s["ɵmpd"](4608,et.g,et.l,[et.b,s.Injector]),s["ɵmpd"](4608,et.c,et.c,[et.g]),s["ɵmpd"](4352,s.LOCALE_ID,"en-US",[]),s["ɵmpd"](4608,i.NgLocalization,i.NgLocaleLocalization,[s.LOCALE_ID,[2,i["ɵangular_packages_common_common_a"]]]),s["ɵmpd"](5120,s["ɵangular_packages_core_core_ba"],s["ɵangular_packages_core_core_r"],[s.NgZone]),s["ɵmpd"](5120,s.APP_ID,s["ɵangular_packages_core_core_f"],[]),s["ɵmpd"](5120,s.IterableDiffers,s["ɵangular_packages_core_core_n"],[]),s["ɵmpd"](5120,s.KeyValueDiffers,s["ɵangular_packages_core_core_o"],[]),s["ɵmpd"](4608,me.b,me.k,[i.DOCUMENT]),s["ɵmpd"](6144,s.Sanitizer,null,[me.b]),s["ɵmpd"](4608,me.e,me.g,[]),s["ɵmpd"](5120,me.c,(function(t,e,n,a,r,i,s,u){return[new me.i(t,e,n),new me.n(a),new me.m(r,i,s,u)]}),[i.DOCUMENT,s.NgZone,s.PLATFORM_ID,i.DOCUMENT,i.DOCUMENT,me.e,s["ɵConsole"],[2,me.f]]),s["ɵmpd"](4608,me.d,me.d,[me.c,s.NgZone]),s["ɵmpd"](135680,me.l,me.l,[i.DOCUMENT]),s["ɵmpd"](4608,me.j,me.j,[me.d,me.l,s.APP_ID]),s["ɵmpd"](5120,Mx,OT,[]),s["ɵmpd"](5120,S_,ST,[]),s["ɵmpd"](4608,Q_,wT,[i.DOCUMENT,Mx,S_]),s["ɵmpd"](5120,s.RendererFactory2,IT,[me.j,Q_,s.NgZone]),s["ɵmpd"](6144,me.o,null,[me.l]),s["ɵmpd"](4608,s.Testability,s.Testability,[s.NgZone]),s["ɵmpd"](4608,W.b,bT,[s.RendererFactory2,i.DOCUMENT]),s["ɵmpd"](5120,Et.a,Et.B,[Et.m]),s["ɵmpd"](4608,Et.g,Et.g,[]),s["ɵmpd"](6144,Et.h,null,[Et.g]),s["ɵmpd"](135680,Et.s,Et.s,[Et.m,s.NgModuleFactoryLoader,s.Compiler,s.Injector,Et.h]),s["ɵmpd"](4608,Et.f,Et.f,[]),s["ɵmpd"](5120,Et.G,Et.x,[Et.m,i.ViewportScroller,Et.i]),s["ɵmpd"](5120,Et.j,Et.E,[Et.C]),s["ɵmpd"](5120,s.APP_BOOTSTRAP_LISTENER,(function(t){return[t]}),[Et.j]),s["ɵmpd"](4608,PT,PT,[]),s["ɵmpd"](4608,DT,DT,[]),s["ɵmpd"](4608,K.D,K.D,[]),s["ɵmpd"](4608,K.h,K.h,[]),s["ɵmpd"](4608,vw.a,vw.a,[]),s["ɵmpd"](4608,xw.a,xw.a,[]),s["ɵmpd"](5120,s.TRANSLATIONS,u,[s.LOCALE_ID]),s["ɵmpd"](4608,Xt.a,Xt.a,[s.TRANSLATIONS_FORMAT,s.TRANSLATIONS,s.LOCALE_ID,[2,Xt.b]]),s["ɵmpd"](4608,pd.a,pd.a,[Xt.a]),s["ɵmpd"](4608,i.DatePipe,i.DatePipe,[s.LOCALE_ID]),s["ɵmpd"](4608,Rs.a,Rs.a,[]),s["ɵmpd"](4608,_w.a,_w.a,[]),s["ɵmpd"](4608,Ua.a,Ua.a,[]),s["ɵmpd"](4608,qa.a,qa.a,[Ua.a]),s["ɵmpd"](4608,Tw.a,Tw.a,[Ua.a]),s["ɵmpd"](4608,ja.a,ja.a,[Ua.a]),s["ɵmpd"](4608,ww.a,ww.a,[]),s["ɵmpd"](4608,Ow.a,Ow.a,[]),s["ɵmpd"](4608,Ko.a,Ko.a,[]),s["ɵmpd"](4608,nf.a,nf.a,[]),s["ɵmpd"](4608,ze.a,ze.a,[i.DatePipe]),s["ɵmpd"](4608,Sw.a,Sw.a,[]),s["ɵmpd"](4608,Iw.a,Iw.a,[]),s["ɵmpd"](4608,Dp.a,Dp.a,[]),s["ɵmpd"](4608,Nw.a,Nw.a,[]),s["ɵmpd"](4608,Cw.a,Cw.a,[]),s["ɵmpd"](4608,Rw.a,Rw.a,[Xt.a]),s["ɵmpd"](4608,Zs.a,Zs.a,[]),s["ɵmpd"](4608,Aw.a,Aw.a,[]),s["ɵmpd"](4608,kw.a,kw.a,[]),s["ɵmpd"](4608,be.a,be.a,[me.b]),s["ɵmpd"](4608,Ew.b,Ew.b,[]),s["ɵmpd"](4608,Oa.a,Oa.a,[]),s["ɵmpd"](4608,Sa.a,Sa.a,[s.NgZone,s.RendererFactory2,s.PLATFORM_ID]),s["ɵmpd"](4608,U.a,U.a,[s.ComponentFactoryResolver,s.NgZone,s.Injector,Sa.a,s.ApplicationRef]),s["ɵmpd"](4608,Ve.c,Ve.c,[]),s["ɵmpd"](4608,ga.a,ga.a,[]),s["ɵmpd"](4608,Ct.b,Ct.b,[s.RendererFactory2,U.a]),s["ɵmpd"](4608,Uf.y,Uf.y,[i.DOCUMENT]),s["ɵmpd"](4608,Uf.r,Uf.r,[]),s["ɵmpd"](4608,Uf.a,Uf.a,[]),s["ɵmpd"](4608,H.f,H.f,[]),s["ɵmpd"](4608,RT.a,RT.a,[Et.m,Z.a]),s["ɵmpd"](4608,wa.f,wa.f,[]),s["ɵmpd"](4608,st.t,st.t,[]),s["ɵmpd"](4608,st.v,st.v,[]),s["ɵmpd"](4608,st.a,st.a,[]),s["ɵmpd"](4608,st.h,st.h,[]),s["ɵmpd"](4608,st.d,st.d,[]),s["ɵmpd"](4608,st.j,st.j,[]),s["ɵmpd"](4608,st.l,st.l,[]),s["ɵmpd"](4608,st.u,st.u,[st.v,st.l]),s["ɵmpd"](5120,O,A,[R]),s["ɵmpd"](4608,N,N,[O]),s["ɵmpd"](4608,zu,zu,[]),s["ɵmpd"](4608,Ac,Ac,[]),s["ɵmpd"](4608,fc,fc,[]),s["ɵmpd"](4608,Lc,Lc,[]),s["ɵmpd"](4608,Xd.a,Xd.a,[]),s["ɵmpd"](4608,Lw,Lw,[]),s["ɵmpd"](4608,Q.g,Q.g,[Q.b]),s["ɵmpd"](1073742336,et.e,et.e,[]),s["ɵmpd"](1073742336,et.d,et.d,[]),s["ɵmpd"](1073742336,i.CommonModule,i.CommonModule,[]),s["ɵmpd"](512,s.ErrorHandler,Mw,[s.Injector]),s["ɵmpd"](1024,s.NgProbeToken,(function(){return[Et.w()]}),[]),s["ɵmpd"](512,Et.C,Et.C,[s.Injector]),s["ɵmpd"](1024,s.APP_INITIALIZER,(function(t,e){return[me.p(t),Et.D(e)]}),[[2,s.NgProbeToken],Et.C]),s["ɵmpd"](512,s.ApplicationInitStatus,s.ApplicationInitStatus,[[2,s.APP_INITIALIZER]]),s["ɵmpd"](131584,s.ApplicationRef,s.ApplicationRef,[s.NgZone,s["ɵConsole"],s.Injector,s.ErrorHandler,s.ComponentFactoryResolver,s.ApplicationInitStatus]),s["ɵmpd"](1073742336,s.ApplicationModule,s.ApplicationModule,[s.ApplicationRef]),s["ɵmpd"](1073742336,me.a,me.a,[[3,me.a]]),s["ɵmpd"](1073742336,CT,CT,[]),s["ɵmpd"](1073742336,d.i,d.i,[]),s["ɵmpd"](1024,Et.v,Et.z,[[3,Et.m]]),s["ɵmpd"](512,Et.u,Et.c,[]),s["ɵmpd"](512,Et.b,Et.b,[]),s["ɵmpd"](256,Et.i,{useHash:!0,preloadingStrategy:Et.g},[]),s["ɵmpd"](1024,i.LocationStrategy,Et.y,[i.PlatformLocation,[2,i.APP_BASE_HREF],Et.i]),s["ɵmpd"](512,i.Location,i.Location,[i.LocationStrategy,i.PlatformLocation]),s["ɵmpd"](512,s.Compiler,s.Compiler,[]),s["ɵmpd"](512,s.NgModuleFactoryLoader,s.SystemJsNgModuleLoader,[s.Compiler,[2,s.SystemJsNgModuleLoaderConfig]]),s["ɵmpd"](1024,Et.k,(function(){return[[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"",component:ma,canActivate:[RT.a,AT],canActivateChild:[RT.a,AT],children:[{path:"dashboard",component:Vr},{path:"hosts",data:MT,children:[{path:"",component:Ds},{path:"create",component:tu,data:qT}]},{path:"monitor",component:du,data:jT},{path:"services",data:FT,children:[{path:"",component:wu},{path:"create",component:eo,data:VT}]},{path:"inventory",component:fi,data:GT},{path:"osd",data:BT,children:[{path:"",component:Cl},{path:"create",component:ad,data:zT}]},{path:"configuration",data:YT,children:[{path:"",component:wd},{path:"edit/:name",component:Ed,data:HT}]},{path:"crush-map",component:nc,data:UT},{path:"logs",component:rf,data:WT},{path:"telemetry",component:xf,data:KT},{path:"monitoring",data:$T,children:[{path:"",component:Qf},{path:"silence/create",component:fh,data:JT},{path:"silence/create/:id",component:fh,data:ZT},{path:"silence/edit/:id",component:fh,data:QT},{path:"silence/recreate/:id",component:fh,data:XT}]},{path:"perf_counters/:type/:id",component:kh,data:tw},{path:"mgr-modules",data:ew,children:[{path:"",component:Vh},{path:"edit/:name",component:Hh,data:nw}]},{path:"pool",data:aw,loadChildren:rw},{path:"block",data:iw,loadChildren:sw},{path:"cephfs",component:Kg,canActivate:[kT.a],data:uw},{path:"rgw",canActivateChild:[kT.a,ET],data:ow,loadChildren:lw},{path:"user-management",data:dw,loadChildren:cw},{path:"user-profile",data:fw,children:[{path:"edit",component:tp,canActivate:[LT],data:hw}]},{path:"nfs/501/:message",component:hp,data:gw},{path:"nfs",canActivateChild:[kT.a,ET],data:pw,children:[{path:"",component:Op},{path:"create",component:Wp,data:bw},{path:"edit/:cluster_id/:export_id",component:Wp,data:mw}]}]},{path:"",component:lm,children:[{path:"login",component:pm},{path:"login-change-password",component:wm,canActivate:[LT]}]},{path:"",component:Pm,children:[{path:"sso/404",component:Vm},{path:"403",component:Hm},{path:"404",component:Jm},{path:"**",redirectTo:"/404"}]}]]}),[]),s["ɵmpd"](1024,Et.m,Et.A,[s.ApplicationRef,Et.u,Et.b,i.Location,s.Injector,s.NgModuleFactoryLoader,s.Compiler,Et.k,Et.i,[2,Et.t],[2,Et.l]]),s["ɵmpd"](1073742336,Et.q,Et.q,[[2,Et.v],[2,Et.m]]),s["ɵmpd"](1073742336,yw,yw,[]),s["ɵmpd"](1073742336,k,k,[]),s["ɵmpd"](1073742336,qw.a,qw.a,[]),s["ɵmpd"](1073742336,K.C,K.C,[]),s["ɵmpd"](1073742336,K.n,K.n,[]),s["ɵmpd"](1073742336,Oa.d,Oa.d,[]),s["ɵmpd"](1073742336,K.y,K.y,[]),s["ɵmpd"](1073742336,jw.a,jw.a,[]),s["ɵmpd"](1073742336,Ew.c,Ew.c,[]),s["ɵmpd"](1073742336,Ve.d,Ve.d,[]),s["ɵmpd"](1073742336,ga.d,ga.d,[]),s["ɵmpd"](1073742336,Da.b,Da.b,[]),s["ɵmpd"](1073742336,Ct.e,Ct.e,[]),s["ɵmpd"](1073742336,Fw.a,Fw.a,[]),s["ɵmpd"](1073742336,H.e,H.e,[]),s["ɵmpd"](1073742336,Q.f,Q.f,[]),s["ɵmpd"](1073742336,Vw.ClickOutsideModule,Vw.ClickOutsideModule,[]),s["ɵmpd"](1073742336,He.b,He.b,[]),s["ɵmpd"](1073742336,Gw.a,Gw.a,[]),s["ɵmpd"](1073742336,Uf.u,Uf.u,[]),s["ɵmpd"](1073742336,Bw.a,Bw.a,[]),s["ɵmpd"](1073742336,oe.a,oe.a,[]),s["ɵmpd"](1073742336,zw.a,zw.a,[]),s["ɵmpd"](1073742336,wa.d,wa.d,[]),s["ɵmpd"](1073742336,st.g,st.g,[]),s["ɵmpd"](1073742336,Yw.a,Yw.a,[]),s["ɵmpd"](1073742336,$t,$t,[]),s["ɵmpd"](1073742336,Hw,Hw,[]),s["ɵmpd"](1073742336,Uw,Uw,[]),s["ɵmpd"](1073742336,Ww.a,Ww.a,[]),s["ɵmpd"](1073742336,Kw,Kw,[]),s["ɵmpd"](1073742336,Hu,Hu,[]),s["ɵmpd"](1073742336,Pc,Pc,[]),s["ɵmpd"](1073742336,ec.b,ec.b,[]),s["ɵmpd"](1073742336,Ei.a,Ei.a,[]),s["ɵmpd"](1073742336,$w.a,$w.a,[]),s["ɵmpd"](1073742336,Jw,Jw,[]),s["ɵmpd"](1073742336,Zw,Zw,[]),s["ɵmpd"](1073742336,Qw,Qw,[]),s["ɵmpd"](1073742336,Xw,Xw,[]),s["ɵmpd"](1073742336,tO,tO,[]),s["ɵmpd"](1073742336,Dw,Dw,[]),s["ɵmpd"](1073742336,o,o,[]),s["ɵmpd"](256,et.n,"XSRF-TOKEN",[]),s["ɵmpd"](256,et.o,"X-XSRF-TOKEN",[]),s["ɵmpd"](256,s["ɵAPP_ROOT"],!0,[]),s["ɵmpd"](256,NT,"BrowserAnimations",[]),s["ɵmpd"](256,s.TRANSLATIONS_FORMAT,"xlf",[]),s["ɵmpd"](256,H.a,{autoClose:!0,insideClick:!1},[]),s["ɵmpd"](256,R,{},[]),s["ɵmpd"](256,d.b,{default:d.a,config:{positionClass:"toast-top-right",preventDuplicates:!0,enableHtml:!0}},[]),s["ɵmpd"](1024,Q.b,(function(){return[[]]}),[]),s["ɵmpd"](256,Q.a,1,[])])}));i.registerLocaleData(r.a),Object(s.enableProdMode)(),me.h().bootstrapModuleFactory(eO).catch(t=>console.log(t))},zWsK:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));class a{transform(t,e,n){return n?e.call(n,t):e(t)}}class r{}},zavE:function(t,e,n){!function(t){"use strict";t.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},zk60:function(t,e,n){var a=n("2oRo"),r=Object.defineProperty;t.exports=function(t,e){try{r(a,t,{value:e,configurable:!0,writable:!0})}catch(n){a[t]=e}return e}},zx6S:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))}},[[0,0]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.1ac2b6e56666a64e1346.js.LICENSE.txt b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.1ac2b6e56666a64e1346.js.LICENSE.txt
new file mode 100644 (file)
index 0000000..e401131
--- /dev/null
@@ -0,0 +1,113 @@
+/*!
+ * Chart.js v2.8.0
+ * https://www.chartjs.org
+ * (c) 2019 Chart.js Contributors
+ * Released under the MIT License
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ * @param {?} cb
+ * @return {?}
+ */
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ * @type {?}
+ */
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+/**
+ * @license
+ * Lodash <https://lodash.com/>
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+/**
+ * @license Angular v8.2.14
+ * (c) 2010-2019 Google LLC. https://angular.io/
+ * License: MIT
+ */
+
+/**
+* @license
+* Copyright Google Inc. All Rights Reserved.
+*
+* Use of this source code is governed by an MIT-style license that can be
+* found in the LICENSE file at https://angular.io/license
+*/
+
+//! author : Abdel Said: https://github.com/abdelsaid
+
+//! author : Ahmed Elkhatib
+
+//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
+
+//! author : Chris Gedrim : https://github.com/chrisgedrim
+
+//! author : Julio Napurí : https://github.com/julionc
+
+//! author : Mikolaj Dadela : https://github.com/mik01aj
+
+//! author : Rafal Hirsz : https://github.com/evoL
+
+//! author : bustta : https://github.com/bustta
+
+//! author : forabi https://github.com/forabi
+
+//! author : lluchs : https://github.com/lluchs
+
+//! author : petrbela : https://github.com/petrbela
+
+//! author: Menelion Elensúle: https://github.com/Oire
+
+//! locale : Arabic [ar]
+
+//! locale : Czech [cs]
+
+//! locale : English (United Kingdom) [en-gb]
+
+//! locale : German [de]
+
+//! locale : Polish [pl]
+
+//! locale : Portuguese (Brazil) [pt-br]
+
+//! locale : Spanish (United States) [es-us]
+
+//! locale : Spanish [es]
+
+//! moment.js locale configuration
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.aa7c24ee4ac262fc4e51.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.aa7c24ee4ac262fc4e51.js
deleted file mode 100644 (file)
index 8ae40da..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.aa7c24ee4ac262fc4e51.js.LICENSE.txt */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"+0ag":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=/ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(t);return e?"dev"===e[2]?"master":e[1]:t}}},"+FhV":function(t,e,n){var a=n("IMTC")(Object.getPrototypeOf,Object);t.exports=a},"+GvH":function(t,e,n){var a=n("rk81"),r=n("ezUo"),i=n("w4fU"),s=n("2bSy"),u=n("qwH+"),o=n("0GLT"),l=n("y/5f"),d=n("uPDw"),c="[object Object]",f=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,h,g,p){var b=o(t),m=o(e),y=b?"[object Array]":u(t),v=m?"[object Array]":u(e),x=(y="[object Arguments]"==y?c:y)==c,_=(v="[object Arguments]"==v?c:v)==c,T=y==v;if(T&&l(t)){if(!l(e))return!1;b=!0,x=!1}if(T&&!x)return p||(p=new a),b||d(t)?r(t,e,n,h,g,p):i(t,e,y,n,h,g,p);if(!(1&n)){var w=x&&f.call(t,"__wrapped__"),O=_&&f.call(e,"__wrapped__");if(w||O){var S=w?t.value():t,I=O?e.value():e;return p||(p=new a),g(S,I,n,h,p)}}return!!T&&(p||(p=new a),s(t,e,n,h,g,p))}},"+GxX":function(t,e,n){var a=n("77kF"),r=n("1Yk6");t.exports=function(t,e){return a(t,r(t),e)}},"+NyF":function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},"+Wg/":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="pt-BR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Alternar navegação</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Painel de controle</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Serviços</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuração</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mapa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Módulos do gerenciador</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Registros</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pools</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloco</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Imagens</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Espelhamento</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemas de arquivos</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Usuários</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartimentos</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Selecionar Idioma</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Carregando dados do painel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Seletor de Horário do Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Redefinir Configurações</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Voltar</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Falha ao carregar dados.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>selecionado(s)</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>encontrado(s)</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descrição</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descrição extensa</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Padrão</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Padrão do daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valores</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Salvar</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visualizador de mapa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Carregando...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome de host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo é obrigatório.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sim, desejo.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fechar</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de Hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Desempenho Geral</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenhuma entrada encontrada</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Registros do Cluster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de Auditoria</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Carregando configuração...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Não foi possível carregar a configuração.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Editar módulo do gerenciador</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>O valor inserido não é um UUID válido. Ex.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>O valor inserido precisa ser um endereço IP válido.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>O valor inserido precisa ser um número.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>O valor inserido precisa ser um número ou decimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Atualizar</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID do Cluster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>época de monmap</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con obrigatório</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon obrigatório</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>No Quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Não está no Quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Adicionar</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Recursos</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flags OSD de todo o Cluster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avançado...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridade de Recuperação de OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioridade</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizar valores de prioridade</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Este campo é obrigatório!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>O valor precisa ser entre 0 e 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Reponderar</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profundo } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profundo} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista de OSDs</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Editar</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Excluir</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Saúde</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estatísticas</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clientes</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Qualquer cliente pode acessar</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Endereços</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obrigatório</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Deve conter um ou mais valores separados por vírgula</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Por exemplo:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo de Acesso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Executar Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Adicionar clientes</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Não há clusters disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Selecionar cluster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Adicionar daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend de Armazenamento</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Não há pools de dados disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Selecionar backend de armazenamento --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Usuário do Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Não há usuários disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selecionar usuário do gateway de objetos --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID de Usuário do CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Não há clientes disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Selecionar cliente do cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nome do CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Rótulo de Segurança</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar rótulo de segurança</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Caminho do CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>O caminho precisa começar com \'/\' e pode ser seguido de uma palavra</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Novo diretório será criado</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Caminho</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>O caminho pode ser apenas uma \'/\' ou uma palavra</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Novo compartimento será criado</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocolo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Clientes não podem montar subdiretórios (ou seja, se Tag = foo, o cliente não poderá montar foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Ao usar opções diferentes de Tag, o mesmo Caminho pode ser exportado várias vezes.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Ao usar opções diferentes de Pseudo, o mesmo Caminho pode ser exportado várias vezes.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Não há tipos de acesso disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Selecionar tipo de acesso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Não há squashes disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>--Selecionar que tipo de squash de ID de usuário será executado --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocolo de Transporte</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Bem-vindo ao Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nome de usuário é obrigatório</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Senha é obrigatória</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Login</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>O usuário não existe no Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Proibido</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Você não tem permissão para ver o que está procurando.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuração de RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Remova o valor de configuração local. No lugar dele, o valor de configuração pai será herdado e usado.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>O valor mínimo é 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista de Pools</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>O nome pode conter apenas caracteres alfanuméricos, traços e sublinhados.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>O nome do perfil de código de eliminação escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plug-in</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Pacotes de dados (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Deve ser igual ou maior do que 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Pacotes de codificação (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Deve ser igual ou maior do que 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimador de durabilidade (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localidade (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domínio de falha do Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localidade do Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nenhum</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Técnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tamanho do pacote</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Raiz do Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe do dispositivo do Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>qualquer</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Diretório</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nome...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>O nome do pool do Ceph escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo de pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Selecionar tipo de pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de posicionamento</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Pelo menos um grupo de posicionamento é necessário!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Seu cluster não pode processar tantos PGs. Recalcule a quantidade de PG necessária.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ajuda no cálculo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tamanho replicado</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flags</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sobregravações de EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplicativos</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil do código de eliminação</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Não há perfis de código de eliminação disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Selecionar perfil do código de eliminação --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Conjunto de regras do Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selecionar regra de crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regra de Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Etapas do Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compactação</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modo</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Não há algoritmos de compactação de eliminação disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamanho mínimo do blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>ex. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>O valor deve ser maior do que 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamanho máximo do blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>ex. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>O valor deve ser maior do que o tamanho mínimo do blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Taxa</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Taxa de compactação</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>O valor deve ser entre 0.0 e 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ex. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detalhes</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalhes de Desempenho</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalhes das Camadas do Cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Mover imagem para o lixo</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Vencimento da proteção em</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NÃO PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato de data incorreto. Use "AAAA-MM-DD HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>A proteção já venceu. Escolha uma data no futuro ou deixe-a vazia.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Mover Imagem</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Visão geral</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinos</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticação de Descoberta</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuário</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Os nomes de usuário devem ter entre 8 e 64 caracteres e\n              apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Senha</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usuário Mútuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Senha Mútua</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informações disponíveis:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool de Dados</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Criado</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tamanho</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tamanho do objeto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unidade de distribuição</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Total de distribuições</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Pai</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefixo do nome do bloco</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Ordem</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantâneos</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagem</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Esta configuração substitui o valor global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Este é o valor global. Nenhum valor para esta opção foi definido para esta imagem.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' não são permitidos.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Não há pools de RBD disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Selecionar pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Usar pool de dados dedicado</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool de dados</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool dedicado que armazena os dados de objetos do RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Você precisa aumentar o tamanho.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avançado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Distribuição</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidade de distribuição</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selecionar unidade de distribuição --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Este campo é obrigatório porque o total de distribuições foi definido!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>A unidade de distribuição é maior do que o tamanho do objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Total de distribuições</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Este campo é obrigatório porque a unidade de distribuição foi definida!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>O total de distribuições deve ser maior do que 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Você está prestes a fazer rollback</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Purgar Lixo</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tudo</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nome do pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar Imagem</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Para restaurar</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>digite o novo nome da imagem e clique em</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Novo Nome</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Venceu em</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protegido até</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Não costuma ser necessário mudar o valor padrão destes parâmetros.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Configurações</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Configurações Avançadas</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN de Destino</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN tem padrão incorreto.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Por exemplo: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Mais informações</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Este destino tem configurações avançadas modificadas.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portais</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Adicionar portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagem tem configurações modificadas.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Adicionar imagem</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticação ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciadores</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciador</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN do Cliente</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>O IQN do Iniciador precisa ser exclusivo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Os nomes de usuário devem ter entre 8 e 64 caracteres e\n                        apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>O iniciador pertence a um grupo. As imagens serão configuradas no grupo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nenhum item adicionado.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Adicionar iniciador</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupos</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Adicionar grupo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Lixo</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemas</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizando</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Pronto</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Editar modo de espelho do pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Clusters de peer devem ser removidos antes de desabilitar o espelho.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Editar} other {Adicionar} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nome do Cluster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>O nome do cluster não é válido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID do CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID do CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>O ID do CephX não é válido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Endereços do Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Endereços delimitados por vírgula...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>O endereço de monitoria não é válido.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Chave do CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Chave codificada com base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>A chave do CephX deve ser codificada com base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contadores de desempenho não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de Daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contadores de Desempenho</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Carregando dados do compartimento...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>O valor não é válido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>O nome escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Proprietário</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selecionar usuário --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Habilitado</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo de índice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regra de posicionamento</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marcador</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marcador máximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versão</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versão master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Horário da modificação</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Grupo de zonas</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Cota do compartimento</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamanho máximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Ilimitado</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Máximo de objetos</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome de usuário</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selecionar nome de usuário --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Gerar chave automaticamente</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Chave de acesso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Chave secreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nome completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Endereço de e-mail</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspenso</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Máximo de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusuários</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Recursos</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cota do usuário</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chaves</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Selecionar tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Permissão</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selecionar permissão --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusuário</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>O ID de subusuário escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>leitura, gravação</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>completo</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Chave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Gerar segredo automaticamente</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Carregando dados do usuário...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Não foi possível carregar os dados do usuário.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>O ID de usuário escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Este não é um endereço de e-mail válido.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>O endereço de e-mail escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Máx. de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Desabilitado</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizado</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Não há subusuários.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Não há chaves.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Não há recursos.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tamanho ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tamanho máx.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objetos ilimitados</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Máx. de objetos</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>O valor inserido deve ser &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descrição...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permissões</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Funções</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar senha</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>A confirmação de senha não corresponde à senha.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>E-mail inválido.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Você está prestes a remover as permissões de "leitura/atualização de usuário" do seu próprio usuário.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Se você continuar, não poderá mais adicionar ou remover funções de nenhum usuário.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Deseja realmente continuar?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Ajuda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentação</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Sobre</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Configurações do Painel de Controle</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gerenciamento de usuários</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usuário que efetuou login</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Efetuar logout</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributos (mapa OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadados não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadados</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contador de desempenho</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Gravações</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Leituras</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histograma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valores atuais</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Mín.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Máx.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origem</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Nível</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Pode ser atualizado em tempo de execução (editável)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tags</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valores de enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Consulte também</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status do Cluster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons do Gerenciador</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Gateways de Objetos</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Servidores de Metadados</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Gateways iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS do Cliente</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Throughput do Cliente</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Leitura/Gravação do Cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Remoção</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Desempenho</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacidade Bruta</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PGs por OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status do PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacidade</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Posições</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Atual</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticação de descoberta atualizada</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Não há portais disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Não há imagens disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Não há imagens disponíveis. Adicione uma imagem ao destino.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Não há iniciadores disponíveis. Adicione um iniciador ao destino.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destino</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes de Leitura</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes de Gravação</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Op. de Leitura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Op. de Gravação</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Desde</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instância</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Andamento</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modo de Edição</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Adicionar Peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Editar Peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Excluir Peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Nº Local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Nº Remoto</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>espelhar peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Chave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Nivelamento profundo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Disposição em camadas</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Bloqueio exclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa de objetos (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Registro em diário (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NÃO PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback de instantâneo do RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Fazer Rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instantâneo do RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Excluído à(s)</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>estado</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versão</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>raiz</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de standby</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Posição</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Atividade</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Uso</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Atualizado</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>É possível atualizar o valor em temo de execução.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemons/clientes não extraem este valor do\n      banco de dados de configuração do monitor. A configuração desta opção não é permitida por meio de \'ceph config\n      set ...\'. Essa opção deve ser configurada por meio do ceph.conf ou da\n      linha de comando.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>A opção entra em vigor apenas durante a inicialização do daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>A opção afeta apenas a criação do cluster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>A opção afeta apenas a criação do daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Serviço</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valor atual</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Editável</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Habilitar</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Desabilitar</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconectando, aguarde...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Endereço Público</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessões Abertas</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Não Entrada</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Os OSDs que já foram marcados como saída não serão remarcados como entrada ao serem iniciados</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Não Saída</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Os OSDs não serão automaticamente marcados como saída após o intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Não Ativo</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Os OSDs não podem ser iniciados</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Não Inativo</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Os relatórios de falha de OSD estão sendo ignorados, portanto, os monitores não marcarão os OSDs como inativos</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pausar</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pausa leituras e gravações</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Sem Remoção</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Remoção desabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Sem Remoção Profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Remoção Profunda desabilitada</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Sem Provisionamento</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Provisionamento de PGs suspenso</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Sem Recuperação</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recuperação de PGs suspensa</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Classificação Bit a Bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar classificação bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdirs Purgados</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDs converteram snapsets</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Exclusões de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Exclusões realizadas durante a recuperação, e não o emparelhamento</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite Físico do Registro de PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Atribui um limite físico ao tamanho do registro de PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flags OSD Atualizadas</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>saída</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>entrada</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>inativo</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marcar</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdido</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marcado como perdido</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Purgar</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purgado</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>destruir</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>destruído</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PGs</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes de leitura</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de gravação</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Op. de leitura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Op. de gravação</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Máx. de Provisionamentos</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Máx. Recuperação Ativo</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Máx. Recuperação Inicialização Única</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Suspensão de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Tarefa</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravidade</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Iniciado</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Usado</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Disp.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Limpar</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Em funcionamento</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Aviso</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Desconhecido</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>ativo</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>sem sistemas de arquivos</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>ativo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon ativo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>O serviço NFS Ganesha não está configurado.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transporte</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Usuário do CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Sistema de Arquivos do CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(herdado da configuração global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>herdado da configuração global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Selecionar que tipo de squash de ID de usuário será executado --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Não há daemons disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de Cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Tempo Mín. Expulsão</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Tempo Mín. Descarregamento</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Máx. de Bytes de Destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Máx. de Objetos de Destino</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nenhum aplicativo adicionado</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Limite de aplicativos atingido</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Um pool apenas pode ter até quatro definições de aplicativos.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caracteres permitidos: \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Tamanho máximo de 128 caracteres</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrar ou adicionar aplicativos</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Adicionar aplicativo</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de código de eliminação</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamanho da Réplica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Última Alteração</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil Codificado para Eliminação</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Conjunto de Regras do Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartimento</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimentos</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usuário</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuários</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Escopo</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Leitura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Criar</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Função do Sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Atualizar usuário</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuar</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Você foi automaticamente desconectado porque suas funções foram alteradas.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Cada objeto é dividido em partes de pacotes de dados, cada uma armazenada em um OSD diferente.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcule os pacotes de codificação de cada objeto e armazene-os em diferentes OSDs.\n      O número de pacotes de codificação é também o número de OSDs que podem ficar inativos sem perda de dados.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>O plug-in jerasure é o mais genérico e flexível,\n          além de ser o padrão para pools codificados para eliminação do Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>A técnica mais flexível é reed_sol_van: ela é suficiente para definir k\n          e m. A técnica cauchy_good pode ser mais rápida, mas você precisa escolher o tamanho do pacote\n          com cuidado. Todos os reed_sol_r6_op, liberation, blaum_roth e liber8tion são equivalentes ao RAID6\n          no sentido de que só podem ser configurados com m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>A codificação será feita em pacotes de tamanho de bytes um de cada vez.\n          A escolha do tamanho do pacote certo é difícil.\n          A documentação do jerasure contém informações completas sobre este tópico.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Com o plug-in jerasure, quando um objeto codificado para eliminação é armazenado em\n          vários OSDs, a recuperação após a perda de um OSD requer a leitura de todos os outros.\n          Por exemplo, se o jerasure for configurado com k=8 e m=4, a perda de um OSD exigirá a leitura\n          dos outros onze para fazer o reparo.\n\n          O plug-in de código de eliminação lrc cria pacotes locais de paridade para conseguir recuperar usando\n          menos OSDs. Por exemplo, se o lrc for configurado com k=8, m=4 e l=4, ele criará\n          um pacote de paridade adicional para cada quatro OSDs. Quando um único OSD é perdido, ele pode ser\n          recuperado apenas com quatro OSDs, em vez de onze.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Agrupe os pacotes de codificação e dados em conjuntos de localidades com tamanho. Por exemplo,\n          no caso de k=4 e m=2, quando locality=3, dois grupos de três são criados. Cada conjunto pode\n          ser recuperado sem a leitura dos pacotes do outro conjunto.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>O tipo do compartimento de crush em que cada conjunto de pacotes definido\n          por l será armazenado. Por exemplo, se isso for definido como rack, cada grupo de pacotes l será\n          colocado em um rack diferente. Isso é usado para criar uma etapa da regra CRUSH, como a etapa de escolha do\n          rack. Se isso não for definido, esse tipo de agrupamento não será feito.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>O plug-in isa encapsula a biblioteca ISA. Ele apenas é executado em processadores Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>O plug-in ISA vem em dois formatos de Reed Solomon.\n          Se reed_sol_van for definido, ele será Vandermonde, se cauchy for definido, ele será Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>O plug-in shec encapsula a biblioteca múltipla SHEC.\n          Ele permite ao ceph recuperar dados com mais eficiência do que os códigos de Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>O número de pacotes de paridade, em que cada um inclui cada pacote de dados em sua\n          faixa de cálculo. O número é usado como estimador de durabilidade. Por exemplo, se c=2,\n          2 OSDs podem ficar inativos sem perda de dados.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>O nome do compartimento de crush usado para a primeira etapa da regra CRUSH.\n      Por exemplo, a etapa assumir o padrão.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Verifique se não há dois pacotes em um compartimento com o mesmo domínio de\n      falha. Por exemplo, se o domínio de falha for um host, não armazene dois pacotes no mesmo\n      host. Isso é usado para criar uma etapa da regra CRUSH, como a etapa de escolha do host folha.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restrinja o posicionamento a dispositivos de uma classe específica\n      (ex. ssd ou hdd), usando nomes de classe de dispositivo crush no mapa CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Defina o nome do diretório do qual o plug-in de código de eliminação é carregado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas as operações</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Permite apenas as operações que não modificam o servidor</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Não permite operações de leitura ou gravação, mas permite qualquer outra operação</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Não permite leitura, gravação ou qualquer operação que modifica os atributos do arquivo ou o conteúdo do diretório</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Não permite nenhum tipo de acesso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Selecionar prioridade --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Baixa</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informações</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Últimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Últimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Últimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Última 1 hora (Padrão)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Últimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Últimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Últimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Últimas 24 horas</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ontem</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hoje</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Até agora hoje</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Antes de ontem</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Últimos 2 dias</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este dia na semana passada</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Semana anterior</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Esta semana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Até agora nesta semana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Últimos 7 dias</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Mês anterior</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este mês</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Até agora neste mês</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Últimos 30 dias</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Últimos 90 dias</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Últimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Último ano</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Ano anterior</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este ano</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Até agora neste ano</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Últimos 2 anos</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Últimos 5 anos</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nenhum item selecionado.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Desmarcar item para selecionar novamente</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de seleção atingido</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tags de filtro</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Adicionar selo</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Não há itens disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copiar</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Remoção Profunda</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Nivelar</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marcar como Inativo</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marcar como Entrada</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marcar como Perdido</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar como Saída</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renomear</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurar</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Mover para Lixo</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Cancelar proteção</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Excluído</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Nivelado</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgado</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback feito</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sim</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Não</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualidade do Serviço</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite de BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>O limite de bytes por segundo de E/S desejado.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite de IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>O limite de operações por segundo de E/S desejado.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite de BPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>O limite de bytes por segundo de leitura desejado.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite de IOPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>O limite de operações por segundo de leitura desejado.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite de BPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>O limite de bytes por segundo de gravação desejado.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite de IOPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>O limite de operações por segundo de gravação desejado.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Intermitência de BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>O limite de bytes de E/S de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Intermitência de IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>O limite de operações de E/S de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Intermitência de BPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>O limite de bytes de leitura de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Intermitência de IOPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>O limite de operações de leitura de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Intermitência de BPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>O limite de bytes de gravação de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Intermitência de IOPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>O limite de operações de gravação de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Executando</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>executar</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Executado</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tarefa desconhecida</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Criando</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>criar</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Atualizando</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>atualizar</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Excluindo</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonando</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clonar</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copiando</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copiar</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Nivelando</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>nivelar</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Fazendo rollback</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Movendo</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>mover</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Movido</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Imagem não encontrada.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Restaurando</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurar</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Purgando</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>purgar</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>todos os pools</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossível desabilitar espelhamento porque ele contém um peer.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"+Z6c":function(t,e,n){var a=n("TbD+"),r=n("LJNh")((function(t,e){return null==t?{}:a(t,e)}));t.exports=r},"+fVR":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{setExpandedRow(t){this.expandedRow=t}}},"+gVj":function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return i})),n.d(e,"e",(function(){return l})),n.d(e,"f",(function(){return g})),n.d(e,"g",(function(){return c})),n.d(e,"h",(function(){return h}));var a=n("8Y7J"),r=n("s7LF");class i{constructor(){this.validSubmit=new a.EventEmitter}onSubmit(){this.markAsTouchedAndDirty(this.formGroup),this.formGroup.valid&&this.validSubmit.emit(this.formGroup.value)}markAsTouchedAndDirty(t){t instanceof r.k?Object.keys(t.controls).forEach(e=>this.markAsTouchedAndDirty(t.controls[e])):t instanceof r.f?t.controls.forEach(t=>this.markAsTouchedAndDirty(t)):t instanceof r.i&&t.enabled&&(t.markAsDirty(),t.markAsTouched(),t.updateValueAndValidity())}}const s=function(){var t={Three:0,Four:1};return t[t.Three]="Three",t[t.Four]="Four",t}(),u=new a.InjectionToken("ng-bootstrap-form-validation custom error messages"),o=new a.InjectionToken("ng-bootstrap-form-validation module options");class l{constructor(t){this.bootstrapVersion=t,this.messages=()=>[]}get className(){switch(this.bootstrapVersion){case s.Three:return"help-block";case s.Four:return"invalid-feedback"}}}const d=[{error:"required",format:t=>t+" is required"},{error:"pattern",format:t=>t+" is invalid"},{error:"minlength",format:(t,e)=>`${t} must be at least ${e.requiredLength} characters`},{error:"maxlength",format:(t,e)=>`${t} must be no longer than ${e.requiredLength} characters`},{error:"requiredTrue",format:(t,e)=>t+" is required"},{error:"email",format:(t,e)=>"Invalid email address"},{error:"max",format:(t,e)=>`${t} must be no greater than ${e.max}`},{error:"min",format:(t,e)=>`${t} must be no less than ${e.min}`}];let c=(()=>{class t{constructor(t){this.customErrorMessages=t,this.defaultErrors=d,this.errorMessages=t.reduce((t,e)=>t.concat(e),this.defaultErrors)}}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(u))},token:t,providedIn:"root"}),t})();class f{constructor(t,e){this.elRef=t,this.errorMessageService=e,this.customErrorMessages=[],this.validationDisabled=!1,this.messages=()=>this.getMessages()}get hasErrors(){return this.FormControlNames.some(t=>!t.valid&&t.dirty&&t.touched)&&!this.validationDisabled}get hasSuccess(){return!this.FormControlNames.some(t=>!t.valid)&&this.FormControlNames.some(t=>t.dirty&&t.touched)&&!this.validationDisabled}ngAfterContentInit(){this.messagesBlock&&(this.messagesBlock.messages=this.messages)}ngOnInit(){this.errorMessages=this.errorMessageService.errorMessages.concat(this.customErrorMessages).reverse()}get label(){const t=this.elRef.nativeElement.querySelector("label");return t&&t.textContent?t.textContent.trim():"This field"}get isDirtyAndTouched(){return this.FormControlNames.some(t=>t.dirty&&t.touched)}getMessages(){const t=[];if(!this.isDirtyAndTouched||this.validationDisabled)return t;const e=this.FormControlNames.map(t=>t.name);return this.FormControlNames.filter((t,n)=>!t.valid&&!!t.errors&&e.indexOf(t.name)===n).forEach(e=>{Object.keys(e.errors).forEach(n=>{const a=this.errorMessages.find(t=>t.error===n);a&&t.push(a.format(this.label,e.errors[n]))})}),t}}class h{constructor(t,e){this.parent=t,this.bootstrapVersion=e}get validClass(){return!!this.control&&this.bootstrapFour&&this.control.valid&&(this.control.touched||this.control.dirty)}get invalidClass(){return!!this.control&&this.bootstrapFour&&this.control.invalid&&this.control.touched&&this.control.dirty}get path(){return[...this.parent.path,this.formControlName]}get control(){return this.formDirective&&this.formDirective.getControl(this)}get formDirective(){return this.parent?this.parent.formDirective:null}get bootstrapFour(){return this.bootstrapVersion===s.Four}}class g{static forRoot(t={bootstrapVersion:s.Four}){return{ngModule:g,providers:[{provide:u,useValue:t.customErrorMessages||[],multi:!0},{provide:o,useValue:t.bootstrapVersion},c]}}}},"+s0g":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"+xYL":function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},"//9w":function(t,e,n){!function(t){"use strict";t.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"/F2L":function(t,e,n){var a=n("emnf"),r=n("G3uG")(a);t.exports=r},"/GqU":function(t,e,n){var a=n("RK3t"),r=n("HYAF");t.exports=function(t){return a(r(t))}},"/Gx3":function(t,e,n){var a=n("aHcz"),r=n("8V0S"),i=n("/F2L");t.exports=function(t,e){return i(r(t,e,a),t+"")}},"/NlG":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("8Y7J"),r=n("oxzT");class i{constructor(t){this.i18n=t,this.title="",this.bootstrapClass="",this.backAction=new a.EventEmitter,this.size="normal",this.showIcon=!0,this.showTitle=!0,this.dismissible=!1,this.dismissed=new a.EventEmitter,this.icons=r.a}ngOnInit(){switch(this.type){case"warning":this.title=this.title||this.i18n("Warning"),this.typeIcon=this.typeIcon||r.a.warning,this.bootstrapClass=this.bootstrapClass||"warning";break;case"error":this.title=this.title||this.i18n("Error"),this.typeIcon=this.typeIcon||r.a.destroyCircle,this.bootstrapClass=this.bootstrapClass||"danger";break;case"info":this.title=this.title||this.i18n("Information"),this.typeIcon=this.typeIcon||r.a.infoCircle,this.bootstrapClass=this.bootstrapClass||"info";break;case"success":this.title=this.title||this.i18n("Success"),this.typeIcon=this.typeIcon||r.a.check,this.bootstrapClass=this.bootstrapClass||"success";break;case"danger":this.title=this.title||this.i18n("Danger"),this.typeIcon=this.typeIcon||r.a.warning,this.bootstrapClass=this.bootstrapClass||"danger"}}onClose(){this.dismissed.emit()}}},"/OPJ":function(t,e,n){var a=n("0Dky"),r=n("2oRo").RegExp;t.exports=a((function(){var t=r(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)}))},"/X5v":function(t,e,n){!function(t){"use strict";t.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"/b8u":function(t,e,n){var a=n("STAE");t.exports=a&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},"/byt":function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},"/rd/":function(t,e,n){var a=n("im1V"),r=n("x3F9");t.exports=function(t){return r(t)&&a(t)}},0:function(t,e,n){t.exports=n("zUnb")},"0+/T":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("s7LF"),r=n("QFaf");n("sb0X");class i{constructor(t){this.modalRef=t,this.actionDescription="delete"}ngOnInit(){const t={confirmation:new a.i(!1,[a.B.requiredTrue])};if(this.childFormGroup&&(t.child=this.childFormGroup),this.deletionForm=new r.a(t),!this.submitAction&&!this.submitActionObservable)throw new Error("No submit action defined")}callSubmitAction(){this.submitActionObservable?this.submitActionObservable().subscribe(null,this.stopLoadingSpinner.bind(this),this.hideModal.bind(this)):this.submitAction()}hideModal(){this.modalRef.hide()}stopLoadingSpinner(){this.deletionForm.setErrors({cdSubmitButton:!0})}}},"02OF":function(t,e,n){var a=n("IfUl"),r=n("j09V"),i=n("lEOU"),s=n("Y3RO"),u=n("pcUq"),o=n("PHub"),l=n("0GLT"),d=n("/rd/"),c=n("y/5f"),f=n("Q7RW"),h=n("hmSm"),g=n("CslI"),p=n("uPDw"),b=n("dCge"),m=n("eAIQ");t.exports=function(t,e,n,y,v,x,_){var T=b(t,n),w=b(e,n),O=_.get(w);if(O)a(t,n,O);else{var S=x?x(T,w,n+"",t,e,_):void 0,I=void 0===S;if(I){var N=l(w),C=!N&&c(w),R=!N&&!C&&p(w);S=w,N||C||R?l(T)?S=T:d(T)?S=s(T):C?(I=!1,S=r(w,!0)):R?(I=!1,S=i(w,!0)):S=[]:g(w)||o(w)?(S=T,o(T)?S=m(T):h(T)&&!f(T)||(S=u(w))):I=!1}I&&(_.set(w,S),v(S,w,y,x,_),_.delete(w)),a(t,n,S)}}},"07d7":function(t,e,n){var a=n("AO7/"),r=n("busE"),i=n("sEFX");a||r(Object.prototype,"toString",i,{unsafe:!0})},"0BK2":function(t,e){t.exports={}},"0BcO":function(t,e,n){var a=n("KFwg")(n("Wa4q"),"WeakMap");t.exports=a},"0Dky":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"0EUg":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("bHdf");function r(){return Object(a.a)(1)}},"0GLT":function(t,e){t.exports=Array.isArray},"0GbY":function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=function(t){return r(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(a[t]):a[t]&&a[t][e]}},"0eef":function(t,e,n){"use strict";var a={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!a.call({1:2},1);e.f=i?function(t){var e=r(this,t);return!!e&&e.enumerable}:a},"0mo+":function(t,e,n){!function(t){"use strict";var e={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};t.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(t){return t.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(t,e){return 12===t&&(t=0),"མཚན་མོ"===e&&t>=4||"ཉིན་གུང"===e&&t<5||"དགོང་དག"===e?t+12:t},meridiem:function(t,e,n){return t<4?"མཚན་མོ":t<10?"ཞོགས་ཀས":t<17?"ཉིན་གུང":t<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("wd/R"))},"0nKi":function(t,e){t.exports=function(t){return function(e){return t(e)}}},"0rEg":function(t,e){t.exports=function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}},"0rvr":function(t,e,n){var a=n("4zBA"),r=n("glrk"),i=n("O741");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=a(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(s){}return function(n,a){return r(n),i(a),e?t(n,a):n.__proto__=a,n}}():void 0)},"0tRk":function(t,e,n){!function(t){"use strict";t.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n("wd/R"))},"128B":function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("Kqap"),r=n("BFxc"),i=n("xbPD"),s=n("mCNh");function u(t,e){return arguments.length>=2?function(n){return Object(s.a)(Object(a.a)(t,e),Object(r.a)(1),Object(i.a)(e))(n)}:function(e){return Object(s.a)(Object(a.a)((e,n,a)=>t(e,n,a+1)),Object(r.a)(1))(e)}}},"14R3":function(t,e){"undefined"!=typeof Element&&("function"!=typeof Element.prototype.matches&&(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.webkitMatchesSelector||function(t){for(var e=(this.document||this.ownerDocument).querySelectorAll(t),n=0;e[n]&&e[n]!==this;)++n;return Boolean(e[n])}),"function"!=typeof Element.prototype.closest&&(Element.prototype.closest=function(t){for(var e=this;e&&1===e.nodeType;){if(e.matches(t))return e;e=e.parentNode}return null}))},"14Sl":function(t,e,n){"use strict";n("rB9j");var a=n("4zBA"),r=n("busE"),i=n("kmMV"),s=n("0Dky"),u=n("tiKp"),o=n("kRJp"),l=u("species"),d=RegExp.prototype;t.exports=function(t,e,n,c){var f=u(t),h=!s((function(){var e={};return e[f]=function(){return 7},7!=""[t](e)})),g=h&&!s((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[f]=/./[f]),n.exec=function(){return e=!0,null},n[f](""),!e}));if(!h||!g||n){var p=a(/./[f]),b=e(f,""[t],(function(t,e,n,r,s){var u=a(t),o=e.exec;return o===i||o===d.exec?h&&!s?{done:!0,value:p(e,n,r)}:{done:!0,value:u(n,e,r)}:{done:!1}}));r(String.prototype,t,b[0]),r(d,f,b[1])}c&&o(d[f],"sham",!0)}},"1E5z":function(t,e,n){var a=n("m/L8").f,r=n("Gi26"),i=n("tiKp")("toStringTag");t.exports=function(t,e,n){t&&!n&&(t=t.prototype),t&&!r(t,i)&&a(t,i,{configurable:!0,value:e})}},"1Ni5":function(t,e,n){"use strict";n.d(e,"b",(function(){return f})),n.d(e,"a",(function(){return h}));var a=n("s7LF"),r=n("LvDl"),i=n("LRne"),s=n("PqYM"),u=n("aGrj"),o=n("lJxs"),l=n("IzEk"),d=n("Fgil"),c=n("aXbf");function f(t){return null==t||0===t.length}class h{static email(t){return f(t.value)?null:a.B.email(t)}static ip(t=0){const e=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i,n=/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i;return a.B.pattern(4===t?e:6===t?n:new RegExp(e.source+"|"+n.source))}static number(t=!0){return a.B.pattern(t?/^-?[0-9]+$/i:/^[0-9]+$/i)}static decimalNumber(t=!0){return a.B.pattern(t?/^-?[0-9]+(.[0-9]+)?$/i:/^[0-9]+(.[0-9]+)?$/i)}static sslCert(){return a.B.pattern(/^-----BEGIN CERTIFICATE-----(\n|\r|\f)((.+)?((\n|\r|\f).+)*)(\n|\r|\f)-----END CERTIFICATE-----[\n\r\f]*$/)}static sslPrivKey(){return a.B.pattern(/^-----BEGIN RSA PRIVATE KEY-----(\n|\r|\f)((.+)?((\n|\r|\f).+)*)(\n|\r|\f)-----END RSA PRIVATE KEY-----[\n\r\f]*$/)}static requiredIf(t,e){let n=!1;return a=>(!n&&a.parent&&(Object.keys(t).forEach(t=>{a.parent.get(t).valueChanges.subscribe(()=>{a.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(e=>{if(!a.parent)return!1;const n=a.parent.get(e).value,i=t[e];if(r.isObjectLike(i)){let t=!1;switch(i.op){case"empty":t=r.isEmpty(n);break;case"!empty":t=!r.isEmpty(n);break;case"equal":t=n===i.arg1;break;case"!equal":t=n!==i.arg1;break;case"minLength":r.isString(n)&&(t=n.length>=i.arg1)}return t}return n===i})&&(r.isFunction(e)?e.call(e,a.value):f(a.value))?{required:!0}:null)}static composeIf(t,e){let n=!1;return r=>(!n&&r.parent&&(Object.keys(t).forEach(t=>{r.parent.get(t).valueChanges.subscribe(()=>{r.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(e=>r.parent&&r.parent.get(e).value===t[e])?a.B.compose(e)(r):null)}static custom(t,e){return n=>{const a=e.call(this,n.value);return a?{[t]:a}:null}}static validateIf(t,e,n,r=[],i=[]){n=n.concat(r),t.setValidators(t=>e.call(this)?a.B.compose(n)(t):r.length>0?a.B.compose(r)(t):null),i.forEach(e=>{e.valueChanges.subscribe(()=>{t.updateValueAndValidity({emitEvent:!1})})})}static match(t,e){return n=>{const a=n.get(t),i=n.get(e);if(!a||!i)return null;if(a.value!==i.value)i.setErrors({match:!0});else if(i.hasError("match")){const t=i.errors;r.unset(t,"match"),i.setErrors(r.isEmpty(r.keys(t))?null:t)}return null}}static unique(t,e=null,n,a=!1){let d;return c=>c.pristine||f(c.value)?Object(i.a)(null):(d=c.value,r.isFunction(n)&&null!==n()&&""!==n()&&(d=a?`${c.value}$${n()}`:`${n()}$${c.value}`),Object(s.a)().pipe(Object(u.a)(t.call(e,d)),Object(o.a)(t=>t?{notUnique:!0}:null),Object(l.a)(1)))}static uuid(t=!1){const e=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return n=>n.pristine&&n.untouched?null:t||n.value?e.test(n.value)?null:{invalidUuid:"This is not a valid UUID"}:null}static binaryMin(t){return e=>{const n=new c.a,a=(new c.a).toBytes(e.value);if(t<=a)return null;const r=new d.a(n).transform(t);return{binaryMin:t=>t("Size has to be at least {{value}} or more",{value:r})}}}static binaryMax(t){return e=>{const n=new c.a,a=n.toBytes(e.value);if(t>=a)return null;const r=new d.a(n).transform(t);return{binaryMax:t=>t("Size has to be at most {{value}} or less",{value:r})}}}static passwordPolicy(t,e,n){return a=>{if(a.pristine||""===a.value)return r.isFunction(n)&&n(!0,0),Object(i.a)(null);let d;return r.isFunction(e)&&(d=e()),Object(s.a)(500).pipe(Object(u.a)(r.invoke(t,"validatePassword",a.value,d)),Object(o.a)(t=>(r.isFunction(n)&&n(t.valid,t.credits,t.valuation),t.valid?null:{passwordPolicy:!0})),Object(l.a)(1))}}}},"1Y/n":function(t,e,n){var a=n("2oRo"),r=n("We1y"),i=n("ewvW"),s=n("RK3t"),u=n("B/qT"),o=a.TypeError,l=function(t){return function(e,n,a,l){r(n);var d=i(e),c=s(d),f=u(d),h=t?f-1:0,g=t?-1:1;if(a<2)for(;;){if(h in c){l=c[h],h+=g;break}if(h+=g,t?h<0:f<=h)throw o("Reduce of empty array with no initial value")}for(;t?h>=0:f>h;h+=g)h in c&&(l=n(l,c[h],h,d));return l}};t.exports={left:l(!1),right:l(!0)}},"1Yk6":function(t,e,n){var a=n("IyEx"),r=n("kA6G"),i=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols;t.exports=s?function(t){return null==t?[]:(t=Object(t),a(s(t),(function(e){return i.call(t,e)})))}:r},"1nQr":function(t,e,n){"use strict";var a=n("LvDl"),r=n("lJxs"),i=n("20UP");class s{constructor(t){this.pwdPolicyEnabled=t.pwd_policy_enabled,this.pwdPolicyMinLength=t.pwd_policy_min_length,this.pwdPolicyCheckLengthEnabled=t.pwd_policy_check_length_enabled,this.pwdPolicyCheckOldpwdEnabled=t.pwd_policy_check_oldpwd_enabled,this.pwdPolicyCheckUsernameEnabled=t.pwd_policy_check_username_enabled,this.pwdPolicyCheckExclusionListEnabled=t.pwd_policy_check_exclusion_list_enabled,this.pwdPolicyCheckRepetitiveCharsEnabled=t.pwd_policy_check_repetitive_chars_enabled,this.pwdPolicyCheckSequentialCharsEnabled=t.pwd_policy_check_sequential_chars_enabled,this.pwdPolicyCheckComplexityEnabled=t.pwd_policy_check_complexity_enabled}}var u=n("8Y7J"),o=n("GiVz");n.d(e,"a",(function(){return l}));let l=(()=>{class t{constructor(t,e){this.i18n=t,this.settingsService=e}getHelpText(){return this.settingsService.getStandardSettings().pipe(Object(r.a)(t=>{const e=new s(t);let n=[];if(e.pwdPolicyEnabled){n.push(this.i18n("Required rules for passwords:"));const t={pwdPolicyCheckLengthEnabled:this.i18n("Must contain at least {{length}} characters",{length:e.pwdPolicyMinLength}),pwdPolicyCheckOldpwdEnabled:this.i18n("Must not be the same as the previous one"),pwdPolicyCheckUsernameEnabled:this.i18n("Cannot contain the username"),pwdPolicyCheckExclusionListEnabled:this.i18n("Cannot contain any configured keyword"),pwdPolicyCheckRepetitiveCharsEnabled:this.i18n('Cannot contain any repetitive characters e.g. "aaa"'),pwdPolicyCheckSequentialCharsEnabled:this.i18n('Cannot contain any sequential characters e.g. "abc"'),pwdPolicyCheckComplexityEnabled:this.i18n("Must consist of characters from the following groups:\n  * Alphabetic a-z, A-Z\n  * Numbers 0-9\n  * Special chars: !\"#$%& '()*+,-./:;<=>?@[\\]^_`{{|}}~\n  * Any other characters (signs)")};n=n.concat(a.keys(t).filter(t=>a.get(e,t)).map(e=>"- "+a.get(t,e)))}return n.join("\n")}))}mapCreditsToCssClass(t){let e="very-strong";return t<10?e="too-weak":t<15?e="weak":t<20?e="ok":t<25&&(e="strong"),e}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](o.a),u["ɵɵinject"](i.a))},token:t,providedIn:"root"}),t})()},"1rYy":function(t,e,n){!function(t){"use strict";t.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(t){return/^(ցերեկվա|երեկոյան)$/.test(t)},meridiem:function(t){return t<4?"գիշերվա":t<12?"առավոտվա":t<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-ին":t+"-րդ";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},"1xZ4":function(t,e,n){!function(t){"use strict";t.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"è";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})}(n("wd/R"))},"20UP":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("LvDl"),r=n("lJxs"),i=n("8Y7J"),s=n("IheW"),u=n("pL04");let o=(()=>{class t{constructor(t){this.http=t,this.settings={}}getValues(t){return a.isArray(t)&&(t=t.join(",")),this.http.get("api/settings?names="+t).pipe(Object(r.a)(t=>{const e={};return a.forEach(t,t=>{a.set(e,t.name,t.value)}),e}))}ifSettingConfigured(t,e,n){const a=this.settings[t];void 0===a?this.http.get(t).subscribe(a=>{this.settings[t]=this.getSettingsValue(a),this.ifSettingConfigured(t,e,n)},e=>{401!==e.status&&(this.settings[t]="")}):""!==a?e(a):n&&n()}disableSetting(t){this.settings[t]=""}getSettingsValue(t){return t.value||t.instance||""}validateGrafanaDashboardUrl(t){return this.http.get("api/grafana/validation/"+t)}getStandardSettings(){return this.http.get("ui-api/standard_settings")}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.c))},token:t,providedIn:u.a}),t})()},2316:function(t,e,n){var a=n("LWR0"),r=n("hmSm");t.exports=function(t,e,n){var i=!0,s=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return r(n)&&(i="leading"in n?!!n.leading:i,s="trailing"in n?!!n.trailing:s),a(t,e,{leading:i,maxWait:e,trailing:s})}},"25BL":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("DqMs"),i=n("/NlG"),s=n("GiVz"),u=n("SVse"),o=n("FE24"),l=n("z/SZ"),d=n("GS7A"),c=n("s7LF"),f=n("w9WL"),h=a["ɵcrt"]({encapsulation:2,styles:[".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;-webkit-transform:translate3d(0,0,0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable :after,.ngx-datatable :before{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-header-inner,.ngx-datatable .datatable-row-center{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:0}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:0}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:0}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}"],data:{}});function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"datatable-header",[["class","datatable-header"]],[[4,"height",null],[4,"width",null]],[[null,"sort"],[null,"resize"],[null,"reorder"],[null,"select"],[null,"columnContextmenu"]],(function(t,e,n){var a=!0,r=t.component;return"sort"===e&&(a=!1!==r.onColumnSort(n)&&a),"resize"===e&&(a=!1!==r.onColumnResize(n)&&a),"reorder"===e&&(a=!1!==r.onColumnReorder(n)&&a),"select"===e&&(a=!1!==r.onHeaderSelect(n)&&a),"columnContextmenu"===e&&(a=!1!==r.onColumnContextmenu(n)&&a),a}),x,m)),a["ɵdid"](1,180224,[[2,4]],0,f.i,[a.ChangeDetectorRef],{sortAscendingIcon:[0,"sortAscendingIcon"],sortDescendingIcon:[1,"sortDescendingIcon"],scrollbarH:[2,"scrollbarH"],dealsWithGroup:[3,"dealsWithGroup"],targetMarkerTemplate:[4,"targetMarkerTemplate"],innerWidth:[5,"innerWidth"],sorts:[6,"sorts"],sortType:[7,"sortType"],allRowsSelected:[8,"allRowsSelected"],selectionType:[9,"selectionType"],reorderable:[10,"reorderable"],headerHeight:[11,"headerHeight"],columns:[12,"columns"],offsetX:[13,"offsetX"]},{sort:"sort",reorder:"reorder",resize:"resize",select:"select",columnContextmenu:"columnContextmenu"}),a["ɵpid"](131072,u.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,1,[n.cssClasses.sortAscending,n.cssClasses.sortDescending,n.scrollbarH,void 0!==n.groupedRows,n.targetMarkerTemplate,n._innerWidth,n.sorts,n.sortType,n.allRowsSelected,n.selectionType,n.reorderable,n.headerHeight,n._internalColumns,a["ɵunv"](e,1,13,a["ɵnov"](e,2).transform(n._offsetX))])}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).headerHeight,a["ɵnov"](e,1).headerWidth)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-footer",[["class","datatable-footer"]],null,[[null,"page"]],(function(t,e,n){var a=!0;return"page"===e&&(a=!1!==t.component.onFooterPage(n)&&a),a}),Nt,_t)),a["ɵdid"](1,49152,null,0,f.f,[],{footerHeight:[0,"footerHeight"],rowCount:[1,"rowCount"],pageSize:[2,"pageSize"],offset:[3,"offset"],pagerLeftArrowIcon:[4,"pagerLeftArrowIcon"],pagerRightArrowIcon:[5,"pagerRightArrowIcon"],pagerPreviousIcon:[6,"pagerPreviousIcon"],pagerNextIcon:[7,"pagerNextIcon"],totalMessage:[8,"totalMessage"],footerTemplate:[9,"footerTemplate"],selectedCount:[10,"selectedCount"],selectedMessage:[11,"selectedMessage"]},{page:"page"})],(function(t,e){var n=e.component;t(e,1,1,[n.footerHeight,n.rowCount,n.pageSize,n.offset,n.cssClasses.pagerLeftArrow,n.cssClasses.pagerRightArrow,n.cssClasses.pagerPrevious,n.cssClasses.pagerNext,n.messages.totalMessage,n.footer,n.selected.length,!!n.selectionType&&n.messages.selectedMessage])}),null)}function b(t){return a["ɵvid"](2,[a["ɵqud"](671088640,1,{bodyComponent:0}),a["ɵqud"](671088640,2,{headerComponent:0}),(t()(),a["ɵeld"](2,0,null,null,8,"div",[["visibilityObserver",""]],[[2,"visible",null]],[[null,"visible"]],(function(t,e,n){var a=!0;return"visible"===e&&(a=!1!==t.component.recalculate()&&a),a}),null,null)),a["ɵdid"](3,212992,null,0,f.B,[a.ElementRef,a.NgZone],null,{visible:"visible"}),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](6,0,null,null,2,"datatable-body",[["class","datatable-body"]],[[4,"width",null],[4,"height",null]],[[null,"page"],[null,"activate"],[null,"rowContextmenu"],[null,"select"],[null,"scroll"],[null,"treeAction"]],(function(t,e,n){var a=!0,r=t.component;return"page"===e&&(a=!1!==r.onBodyPage(n)&&a),"activate"===e&&(a=!1!==r.activate.emit(n)&&a),"rowContextmenu"===e&&(a=!1!==r.onRowContextmenu(n)&&a),"select"===e&&(a=!1!==r.onBodySelect(n)&&a),"scroll"===e&&(a=!1!==r.onBodyScroll(n)&&a),"treeAction"===e&&(a=!1!==r.onTreeAction(n)&&a),a}),F,R)),a["ɵdid"](7,245760,[[1,4]],0,f.c,[a.ChangeDetectorRef],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],loadingIndicator:[2,"loadingIndicator"],externalPaging:[3,"externalPaging"],rowHeight:[4,"rowHeight"],offsetX:[5,"offsetX"],emptyMessage:[6,"emptyMessage"],selectionType:[7,"selectionType"],selected:[8,"selected"],rowIdentity:[9,"rowIdentity"],rowDetail:[10,"rowDetail"],groupHeader:[11,"groupHeader"],selectCheck:[12,"selectCheck"],displayCheck:[13,"displayCheck"],trackByProp:[14,"trackByProp"],rowClass:[15,"rowClass"],groupedRows:[16,"groupedRows"],groupExpansionDefault:[17,"groupExpansionDefault"],innerWidth:[18,"innerWidth"],groupRowsBy:[19,"groupRowsBy"],virtualization:[20,"virtualization"],summaryRow:[21,"summaryRow"],summaryPosition:[22,"summaryPosition"],summaryHeight:[23,"summaryHeight"],pageSize:[24,"pageSize"],rows:[25,"rows"],columns:[26,"columns"],offset:[27,"offset"],rowCount:[28,"rowCount"],bodyHeight:[29,"bodyHeight"]},{scroll:"scroll",page:"page",activate:"activate",select:"select",rowContextmenu:"rowContextmenu",treeAction:"treeAction"}),a["ɵpid"](131072,u.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](10,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0),t(e,5,0,n.headerHeight),t(e,7,1,[n.scrollbarV,n.scrollbarH,n.loadingIndicator,n.externalPaging,n.rowHeight,a["ɵunv"](e,7,5,a["ɵnov"](e,8).transform(n._offsetX)),n.messages.emptyMessage,n.selectionType,n.selected,n.rowIdentity,n.rowDetail,n.groupHeader,n.selectCheck,n.displayCheck,n.trackByProp,n.rowClass,n.groupedRows,n.groupExpansionDefault,n._innerWidth,n.groupRowsBy,n.virtualization,n.summaryRow,n.summaryPosition,n.summaryHeight,n.pageSize,n._internalRows,n._internalColumns,n.offset,n.rowCount,n.bodyHeight]),t(e,10,0,n.footerHeight)}),(function(t,e){t(e,2,0,a["ɵnov"](e,3).isVisible),t(e,6,0,a["ɵnov"](e,7).bodyWidth,a["ɵnov"](e,7).bodyHeight)}))}var m=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"datatable-header-cell",[["class","datatable-header-cell"],["draggable",""],["long-press",""],["resizeable",""]],[[2,"resizeable",null],[2,"press",null],[2,"longpress",null],[4,"height","px"],[8,"className",0],[1,"title",0],[4,"minWidth","px"],[4,"maxWidth","px"],[4,"width","px"]],[[null,"resize"],[null,"longPressStart"],[null,"longPressEnd"],[null,"sort"],[null,"select"],[null,"columnContextmenu"],[null,"mousedown"],[null,"contextmenu"]],(function(t,e,n){var r=!0,i=t.component;return"mousedown"===e&&(r=!1!==a["ɵnov"](t,2).onMousedown(n)&&r),"mousedown"===e&&(r=!1!==a["ɵnov"](t,3).onMouseDown(n)&&r),"contextmenu"===e&&(r=!1!==a["ɵnov"](t,4).onContextmenu(n)&&r),"resize"===e&&(r=!1!==i.onColumnResized(n,t.context.$implicit)&&r),"longPressStart"===e&&(r=!1!==i.onLongPressStart(n)&&r),"longPressEnd"===e&&(r=!1!==i.onLongPressEnd(n)&&r),"sort"===e&&(r=!1!==i.onSort(n)&&r),"select"===e&&(r=!1!==i.select.emit(n)&&r),"columnContextmenu"===e&&(r=!1!==i.columnContextmenu.emit(n)&&r),r}),C,_)),a["ɵdid"](1,671744,[[1,4]],0,f.s,[a.ElementRef],{dragEventTarget:[0,"dragEventTarget"],dragModel:[1,"dragModel"],dragX:[2,"dragX"],dragY:[3,"dragY"]},null),a["ɵdid"](2,4341760,null,0,f.x,[a.ElementRef,a.Renderer2],{resizeEnabled:[0,"resizeEnabled"]},{resize:"resize"}),a["ɵdid"](3,147456,null,0,f.t,[],{pressEnabled:[0,"pressEnabled"],pressModel:[1,"pressModel"]},{longPressStart:"longPressStart",longPressEnd:"longPressEnd"}),a["ɵdid"](4,49152,null,0,f.h,[a.ChangeDetectorRef],{sortType:[0,"sortType"],sortAscendingIcon:[1,"sortAscendingIcon"],sortDescendingIcon:[2,"sortDescendingIcon"],isTarget:[3,"isTarget"],targetMarkerTemplate:[4,"targetMarkerTemplate"],targetMarkerContext:[5,"targetMarkerContext"],allRowsSelected:[6,"allRowsSelected"],selectionType:[7,"selectionType"],column:[8,"column"],headerHeight:[9,"headerHeight"],sorts:[10,"sorts"]},{sort:"sort",select:"select",columnContextmenu:"columnContextmenu"})],(function(t,e){var n=e.component;t(e,1,0,n.dragEventTarget,e.context.$implicit,n.reorderable&&e.context.$implicit.draggable&&e.context.$implicit.dragging,!1),t(e,2,0,e.context.$implicit.resizeable),t(e,3,0,n.reorderable&&e.context.$implicit.draggable,e.context.$implicit),t(e,4,1,[n.sortType,n.sortAscendingIcon,n.sortDescendingIcon,e.context.$implicit.isTarget,n.targetMarkerTemplate,e.context.$implicit.targetMarkerContext,n.allRowsSelected,n.selectionType,e.context.$implicit,n.headerHeight,n.sorts])}),(function(t,e){t(e,0,0,a["ɵnov"](e,2).resizeEnabled,a["ɵnov"](e,3).press,a["ɵnov"](e,3).isLongPress,a["ɵnov"](e,4).headerHeight,a["ɵnov"](e,4).columnCssClasses,a["ɵnov"](e,4).name,a["ɵnov"](e,4).minWidth,a["ɵnov"](e,4).maxWidth,a["ɵnov"](e,4).width)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[8,"className",0]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](4,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,2,0,n._styleByGroup[e.context.$implicit.type]),t(e,4,0,e.context.$implicit.columns,n.columnTrackingFn)}),(function(t,e){t(e,0,0,"datatable-row-"+e.context.$implicit.type)}))}function x(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","datatable-header-inner"],["orderable",""]],[[4,"width","px"]],[[null,"reorder"],[null,"targetChanged"]],(function(t,e,n){var a=!0,r=t.component;return"reorder"===e&&(a=!1!==r.onColumnReordered(n)&&a),"targetChanged"===e&&(a=!1!==r.onTargetChanged(n)&&a),a}),null,null)),a["ɵdid"](1,1196032,null,1,f.v,[a.KeyValueDiffers,u.DOCUMENT],null,{reorder:"reorder",targetChanged:"targetChanged"}),a["ɵqud"](603979776,1,{draggables:1}),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](4,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,4,0,n._columnsByPin,n.trackByGroups)}),(function(t,e){t(e,0,0,e.component._columnGroupWidths.total)}))}var _=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function T(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.targetMarkerContext,n.targetMarkerTemplate)}),null)}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==r.select.emit(!r.allRowsSelected)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.allRowsSelected)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","datatable-header-cell-wrapper"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"span",[["class","datatable-header-cell-label draggable"]],[[8,"innerHTML",1]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSort()&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.name)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.headerTemplate)}),null)}function C(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","datatable-header-cell-template-wrap"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,S)),a["ɵdid"](6,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](8,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](9,0,null,null,0,"span",[],[[8,"className",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSort()&&a),a}),null,null))],(function(t,e){var n=e.component;t(e,2,0,n.isTarget),t(e,4,0,n.isCheckboxable),t(e,6,0,!n.column.headerTemplate),t(e,8,0,n.column.headerTemplate)}),(function(t,e){t(e,9,0,e.component.sortClass)}))}var R=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-progress",[],null,null,null,rt,at)),a["ɵdid"](1,49152,null,0,f.w,[],null,null)],null,null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,xt,yt)),a["ɵdid"](1,573440,null,0,f.m,[],{rows:[0,"rows"],columns:[1,"columns"],rowHeight:[2,"rowHeight"],offsetX:[3,"offsetX"],innerWidth:[4,"innerWidth"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)}),null)}function E(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"treeAction"],[null,"activate"],[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0,i=t.component;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction(t.parent.context.$implicit)&&r),"activate"===e&&(r=!1!==a["ɵnov"](t.parent.parent.parent,2).onActivate(n,i.indexes.first+t.parent.context.index)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],expanded:[2,"expanded"],rowClass:[3,"rowClass"],row:[4,"row"],isSelected:[5,"isSelected"],rowIndex:[6,"rowIndex"],displayCheck:[7,"displayCheck"],treeStatus:[8,"treeStatus"],offsetX:[9,"offsetX"],rowHeight:[10,"rowHeight"]},{activate:"activate",treeAction:"treeAction"})],(function(t,e){var n=e.component;t(e,1,1,[n.columns,n.innerWidth,n.getRowExpanded(e.parent.context.$implicit),n.rowClass,e.parent.context.$implicit,a["ɵnov"](e.parent.parent.parent,2).getRowSelected(e.parent.context.$implicit),n.getRowIndex(e.parent.context.$implicit),n.displayCheck,e.parent.context.$implicit.treeStatus,n.offsetX,n.getRowHeight(e.parent.context.$implicit)])}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"activate"],[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),"activate"===e&&(r=!1!==a["ɵnov"](t.parent.parent.parent.parent,2).onActivate(n,t.context.index)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],expanded:[2,"expanded"],rowClass:[3,"rowClass"],row:[4,"row"],group:[5,"group"],isSelected:[6,"isSelected"],rowIndex:[7,"rowIndex"],offsetX:[8,"offsetX"],rowHeight:[9,"rowHeight"]},{activate:"activate"})],(function(t,e){var n=e.component;t(e,1,0,n.columns,n.innerWidth,n.getRowExpanded(e.context.$implicit),n.rowClass,e.context.$implicit,e.parent.parent.context.$implicit.value,a["ɵnov"](e.parent.parent.parent.parent,2).getRowSelected(e.context.$implicit),n.getRowIndex(e.context.$implicit),n.offsetX,n.getRowHeight(e.context.$implicit))}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function D(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,L)),a["ɵdid"](1,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.parent.context.$implicit.value,e.component.rowTrackingFn)}),null)}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"datatable-row-wrapper",[["class","datatable-row-wrapper"]],null,[[null,"rowContextmenu"],[null,"contextmenu"]],(function(t,e,n){var r=!0,i=t.component;return"contextmenu"===e&&(r=!1!==a["ɵnov"](t,3).onContextmenu(n)&&r),"rowContextmenu"===e&&(r=!1!==i.rowContextmenu.emit(n)&&r),r}),pt,ut)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),a["ɵdid"](3,311296,null,0,f.k,[a.ChangeDetectorRef,a.KeyValueDiffers],{innerWidth:[0,"innerWidth"],rowDetail:[1,"rowDetail"],groupHeader:[2,"groupHeader"],offsetX:[3,"offsetX"],detailRowHeight:[4,"detailRowHeight"],row:[5,"row"],groupedRows:[6,"groupedRows"],rowIndex:[7,"rowIndex"],expanded:[8,"expanded"]},{rowContextmenu:"rowContextmenu"}),(t()(),a["ɵand"](16777216,null,0,1,null,E)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["groupedRowsTemplate",2]],0,0,null,D))],(function(t,e){var n=e.component;t(e,2,0,n.getRowsStyles(e.context.$implicit)),t(e,3,0,n.innerWidth,n.rowDetail,n.groupHeader,n.offsetX,n.getDetailRowHeight(e.context.$implicit[e.context.index],e.context.index),e.context.$implicit,n.groupedRows,n.getRowIndex(e.context.$implicit[e.context.index]),n.getRowExpanded(e.context.$implicit)),t(e,5,0,!n.groupedRows,a["ɵnov"](e,6))}),null)}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,xt,yt)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),a["ɵdid"](3,573440,null,0,f.m,[],{rows:[0,"rows"],columns:[1,"columns"],rowHeight:[2,"rowHeight"],offsetX:[3,"offsetX"],innerWidth:[4,"innerWidth"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.getBottomSummaryRowStyles()),t(e,3,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)}),null)}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"datatable-scroller",[["class","datatable-scroll"]],[[4,"height","px"],[4,"width","px"]],[[null,"scroll"]],(function(t,e,n){var a=!0;return"scroll"===e&&(a=!1!==t.component.onBodyScroll(n)&&a),a}),st,it)),a["ɵdid"](1,245760,[[1,4]],0,f.z,[a.NgZone,a.ElementRef,a.Renderer2],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],scrollHeight:[2,"scrollHeight"],scrollWidth:[3,"scrollWidth"]},{scroll:"scroll"}),(t()(),a["ɵand"](16777216,null,0,1,null,k)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,P)),a["ɵdid"](5,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,M)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.scrollbarV,n.scrollbarH,n.scrollHeight,null==n.columnGroupWidths?null:n.columnGroupWidths.total),t(e,3,0,n.summaryRow&&"top"===n.summaryPosition),t(e,5,0,n.temp,n.rowTrackingFn),t(e,7,0,n.summaryRow&&"bottom"===n.summaryPosition)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).scrollHeight,a["ɵnov"](e,1).scrollWidth)}))}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","empty-row"]],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,0,0,e.component.emptyMessage)}))}function F(t){return a["ɵvid"](2,[a["ɵqud"](671088640,1,{scroller:0}),(t()(),a["ɵeld"](1,0,null,null,7,"datatable-selection",[],null,[[null,"select"],[null,"activate"]],(function(t,e,n){var a=!0,r=t.component;return"select"===e&&(a=!1!==r.select.emit(n)&&a),"activate"===e&&(a=!1!==r.activate.emit(n)&&a),a}),mt,bt)),a["ɵdid"](2,49152,[["selector",4]],0,f.l,[],{rows:[0,"rows"],selected:[1,"selected"],selectEnabled:[2,"selectEnabled"],selectionType:[3,"selectionType"],rowIdentity:[4,"rowIdentity"],selectCheck:[5,"selectCheck"]},{activate:"activate",select:"select"}),(t()(),a["ɵand"](16777216,null,0,1,null,A)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,q)),a["ɵdid"](6,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,j)),a["ɵdid"](8,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.rows,n.selected,n.selectEnabled,n.selectionType,n.rowIdentity,n.selectCheck),t(e,4,0,n.loadingIndicator),t(e,6,0,null==n.rows?null:n.rows.length),t(e,8,0,!(null!=n.rows&&n.rows.length||n.loadingIndicator))}),null)}var V=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onCheckboxChange(n)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.isSelected)}))}function B(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-collapse"]],null,null,null,null,null))],null,null)}function z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-up"]],null,null,null,null,null))],null,null)}function Y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-down"]],null,null,null,null,null))],null,null)}function H(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"button",[["class","datatable-tree-button"]],[[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onTreeAction()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,B)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,z)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Y)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"loading"===n.treeStatus),t(e,5,0,"collapsed"===n.treeStatus),t(e,7,0,"expanded"===n.treeStatus||"disabled"===n.treeStatus)}),(function(t,e){t(e,0,0,"disabled"===e.component.treeStatus)}))}function U(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function W(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,U)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](2,{cellContext:0}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,2,0,n.cellContext);t(e,1,0,a,n.column.treeToggleTemplate)}),null)}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,H)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,W)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!n.column.treeToggleTemplate),t(e,4,0,n.column.treeToggleTemplate)}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[],[[8,"title",0],[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.sanitizedValue,n.value)}))}function J(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function Z(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,[[1,3],["cellTemplate",2]],null,1,null,J)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.cellTemplate)}),null)}function Q(t){return a["ɵvid"](2,[a["ɵqud"](402653184,1,{cellTemplate:0}),(t()(),a["ɵeld"](1,0,null,null,8,"div",[["class","datatable-body-cell-label"]],[[4,"margin-left","px"]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,K)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,$)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Z)),a["ɵdid"](9,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.column.checkboxable&&(!n.displayCheck||n.displayCheck(n.row,n.column,n.value))),t(e,5,0,n.column.isTreeColumn),t(e,7,0,!n.column.cellTemplate),t(e,9,0,n.column.cellTemplate)}),(function(t,e){var n=e.component;t(e,1,0,n.calcLeftMargin(n.column,n.row))}))}var X=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-cell",[["tabindex","-1"]],[[8,"className",0],[4,"width","px"],[4,"minWidth","px"],[4,"maxWidth","px"],[4,"height",null]],[[null,"activate"],[null,"treeAction"],[null,"focus"],[null,"blur"],[null,"click"],[null,"dblclick"],[null,"keydown"]],(function(t,e,n){var r=!0,i=t.component;return"focus"===e&&(r=!1!==a["ɵnov"](t,1).onFocus()&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onBlur()&&r),"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick(n)&&r),"dblclick"===e&&(r=!1!==a["ɵnov"](t,1).onDblClick(n)&&r),"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"activate"===e&&(r=!1!==i.onActivate(n,t.context.index)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction()&&r),r}),Q,V)),a["ɵdid"](1,442368,null,0,f.b,[a.ElementRef,a.ChangeDetectorRef],{displayCheck:[0,"displayCheck"],group:[1,"group"],rowHeight:[2,"rowHeight"],isSelected:[3,"isSelected"],expanded:[4,"expanded"],rowIndex:[5,"rowIndex"],column:[6,"column"],row:[7,"row"],treeStatus:[8,"treeStatus"]},{activate:"activate",treeAction:"treeAction"})],(function(t,e){var n=e.component;t(e,1,0,n.displayCheck,n.group,n.rowHeight,n.isSelected,n.expanded,n.rowIndex,e.context.$implicit,n.row,n.treeStatus)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).columnCssClasses,a["ɵnov"](e,1).width,a["ɵnov"](e,1).minWidth,a["ɵnov"](e,1).maxWidth,a["ɵnov"](e,1).height)}))}function et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[8,"className",0]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,tt)),a["ɵdid"](4,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,2,0,n._groupStyles[e.context.$implicit.type]),t(e,4,0,e.context.$implicit.columns,n.columnTrackingFn)}),(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"datatable-row-",e.context.$implicit.type," datatable-row-group"))}))}function nt(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,et)),a["ɵdid"](1,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,1,0,n._columnsByPin,n.trackByGroups)}),null)}var at=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function rt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","progress-linear"],["role","progressbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","container"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,0,"div",[["class","bar"]],null,null,null,null,null))],null,null)}var it=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function st(t){return a["ɵvid"](2,[a["ɵncd"](null,0)],null,null)}var ut=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ot(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function lt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,ot)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.groupContext,n.groupHeader.template)}),null)}function dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","datatable-group-header"]],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgStyleImpl"],u["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgStyle,[u["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,lt)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.getGroupHeaderStyle()),t(e,4,0,n.groupHeader&&n.groupHeader.template)}),null)}function ct(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,null)}function ft(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function ht(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,ft)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.rowContext,n.rowDetail.template)}),null)}function gt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","datatable-row-detail"]],[[4,"height","px"]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ht)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.rowDetail&&n.rowDetail.template)}),(function(t,e){t(e,0,0,e.component.detailRowHeight)}))}function pt(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,dt)),a["ɵdid"](1,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ct)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,gt)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.groupHeader&&n.groupHeader.template),t(e,3,0,n.groupHeader&&n.groupHeader.template&&n.expanded||!n.groupHeader||!n.groupHeader.template),t(e,5,0,n.rowDetail&&n.rowDetail.template&&n.expanded)}),null)}var bt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function mt(t){return a["ɵvid"](2,[a["ɵncd"](null,0)],null,null)}var yt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function vt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],row:[2,"row"],rowIndex:[3,"rowIndex"],offsetX:[4,"offsetX"],rowHeight:[5,"rowHeight"]},null)],(function(t,e){var n=e.component;t(e,1,0,n._internalColumns,n.innerWidth,n.summaryRow,-1,n.offsetX,n.rowHeight)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function xt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,vt)),a["ɵdid"](1,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.summaryRow&&n._internalColumns)}),null)}var _t=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Tt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function wt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,Tt)),a["ɵdid"](1,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](2,{rowCount:0,pageSize:1,selectedCount:2,curPage:3,offset:4}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,2,0,n.rowCount,n.pageSize,n.selectedCount,n.curPage,n.offset);t(e,1,0,a,n.footerTemplate.template)}),null)}function Ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "," / "]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.selectedCount?null:n.selectedCount.toLocaleString(),n.selectedMessage)}))}function St(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ot)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](3,null,[" "," "," "]))],(function(t,e){t(e,2,0,e.component.selectedMessage)}),(function(t,e){var n=e.component;t(e,3,0,null==n.rowCount?null:n.rowCount.toLocaleString(),n.totalMessage)}))}function It(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-pager",[["class","datatable-pager"]],[[8,"hidden",0]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.page.emit(n)&&a),a}),At,Ct)),a["ɵdid"](1,49152,null,0,f.j,[],{pagerLeftArrowIcon:[0,"pagerLeftArrowIcon"],pagerRightArrowIcon:[1,"pagerRightArrowIcon"],pagerPreviousIcon:[2,"pagerPreviousIcon"],pagerNextIcon:[3,"pagerNextIcon"],size:[4,"size"],count:[5,"count"],page:[6,"page"]},{change:"change"})],(function(t,e){var n=e.component;t(e,1,0,n.pagerLeftArrowIcon,n.pagerRightArrowIcon,n.pagerPreviousIcon,n.pagerNextIcon,n.pageSize,n.rowCount,n.curPage)}),(function(t,e){t(e,0,0,!e.component.isVisible)}))}function Nt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","datatable-footer-inner"]],[[4,"height","px"]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{"selected-count":0}),(t()(),a["ɵand"](16777216,null,null,1,null,wt)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,St)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,It)),a["ɵdid"](9,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=t(e,3,0,n.selectedMessage);t(e,2,0,"datatable-footer-inner",a),t(e,5,0,n.footerTemplate),t(e,7,0,!n.footerTemplate),t(e,9,0,!n.footerTemplate)}),(function(t,e){t(e,0,0,e.component.footerHeight)}))}var Ct=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[["class","pages"],["role","button"]],[[1,"aria-label",0],[2,"active",null]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"a",[["href","javascript:void(0)"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectPage(t.context.$implicit.number)&&a),a}),null,null)),(t()(),a["ɵted"](2,null,[" "," "]))],null,(function(t,e){t(e,0,0,"page "+e.context.$implicit.number,e.context.$implicit.number===e.component.page),t(e,2,0,e.context.$implicit.text)}))}function At(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,14,"ul",[["class","pager"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"a",[["aria-label","go to first page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectPage(1)&&a),a}),null,null)),(t()(),a["ɵeld"](3,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](4,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"a",[["aria-label","go to previous page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.prevPage()&&a),a}),null,null)),(t()(),a["ɵeld"](6,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Rt)),a["ɵdid"](8,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](9,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](10,0,null,null,1,"a",[["aria-label","go to next page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.nextPage()&&a),a}),null,null)),(t()(),a["ɵeld"](11,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](12,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](13,0,null,null,1,"a",[["aria-label","go to last page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectPage(r.totalPages)&&a),a}),null,null)),(t()(),a["ɵeld"](14,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null))],(function(t,e){t(e,8,0,e.component.pages)}),(function(t,e){var n=e.component;t(e,1,0,!n.canPrevious()),t(e,3,0,a["ɵinlineInterpolate"](1,"",n.pagerPreviousIcon,"")),t(e,4,0,!n.canPrevious()),t(e,6,0,a["ɵinlineInterpolate"](1,"",n.pagerLeftArrowIcon,"")),t(e,9,0,!n.canNext()),t(e,11,0,a["ɵinlineInterpolate"](1,"",n.pagerRightArrowIcon,"")),t(e,12,0,!n.canNext()),t(e,14,0,a["ɵinlineInterpolate"](1,"",n.pagerNextIcon,""))}))}var kt=n("JxMD"),Et=n("dgut"),Lt=n("Fgil"),Dt=n("iInd"),Pt=n("4DD9"),Mt=n("yT6U"),qt=n("TJUb"),jt=n("efK2");n("uIqm"),n.d(e,"a",(function(){return Ft})),n.d(e,"b",(function(){return Oe}));var Ft=a["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.dataTables_wrapper[_ngcontent-%COMP%]{margin-bottom:25px}.dataTables_wrapper[_ngcontent-%COMP%]   .separator[_ngcontent-%COMP%]{height:30px;border-left:1px solid rgba(0,0,0,.09);padding-left:5px;margin-left:5px;display:inline-block;vertical-align:middle}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]{float:right;border-left:1px solid rgba(0,0,0,.09);padding:0 8px}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-left:0}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]{white-space:nowrap}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{cursor:default}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{width:100%;margin-bottom:0;padding-left:0;padding-right:0;cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dataTables_length[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{line-height:25px;text-align:right}.dataTables_header[_ngcontent-%COMP%]{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative}.dataTables_header[_ngcontent-%COMP%]   .cd-datatable-actions[_ngcontent-%COMP%]{float:left}.dataTables_header[_ngcontent-%COMP%]     .table-filters{float:right;border-left:1px solid rgba(0,0,0,.09);padding-left:8px}.dataTables_header[_ngcontent-%COMP%]     .table-filters label{margin-right:4px}.dataTables_header[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]{padding-left:8px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]{float:right;border-left:1px solid rgba(0,0,0,.09);padding-left:8px;padding-right:8px;width:40%;max-width:250px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%]{height:30px}.dataTables_header[_ngcontent-%COMP%]   .input-group.dataTables_paginate[_ngcontent-%COMP%]{width:8%;min-width:85px;padding-right:8px}.dataTables_header[_ngcontent-%COMP%]   .filter-chips[_ngcontent-%COMP%]{float:right;padding:0 8px}  .cd-datatable{border:1px solid #d1d1d1;margin-bottom:0;max-width:none!important}  .cd-datatable .progress-linear{display:block;position:relative;width:100%;height:5px;padding:0;margin:0}  .cd-datatable .progress-linear .container{background-color:#afd9ee}  .cd-datatable .progress-linear .container .bar{left:0;height:100%;width:100%;position:absolute;overflow:hidden;background-color:#afd9ee}  .cd-datatable .progress-linear .container .bar:before{display:block;position:absolute;content:"";left:-200px;width:200px;height:100%;background-color:#2b99a8;animation:3s linear infinite progress-loading}  .cd-datatable .datatable-header{background-clip:padding-box;background-color:#f5f5f5;background-image:linear-gradient(to bottom,#f5f5f5 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffafafa", endColorstr="#ffededed", GradientType=0)}  .cd-datatable .datatable-header .sort-asc,   .cd-datatable .datatable-header .sort-desc{color:#2b99a8}  .cd-datatable .datatable-header .datatable-header-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;text-align:left;font-weight:700}  .cd-datatable .datatable-header .datatable-header-cell .datatable-header-cell-label:after{font-family:ForkAwesome;font-weight:400;height:9px;left:10px;line-height:12px;position:relative;vertical-align:baseline;width:12px}  .cd-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-asc .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-desc .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell:first-child{border-left:none}  .cd-datatable .datatable-body{margin-bottom:-6px}  .cd-datatable .datatable-body .empty-row{background-color:#fff3cd;text-align:center;font-weight:700;font-style:italic;padding-top:5px;padding-bottom:5px}  .cd-datatable .datatable-body .datatable-body-row.clickable:hover .datatable-row-group{background-color:#eee;transition-property:background;transition-duration:.3s;transition-timing-function:linear}  .cd-datatable .datatable-body .datatable-body-row.datatable-row-even{background-color:#fff}  .cd-datatable .datatable-body .datatable-body-row.datatable-row-odd{background-color:#f5f5f5}  .cd-datatable .datatable-body .datatable-body-row.active,   .cd-datatable .datatable-body .datatable-body-row.active:hover{background-color:#d1ecf1}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell:first-child{border-left:none}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell .datatable-body-cell-label{display:block;height:100%}  .cd-datatable .datatable-body .datatable-row-detail{padding:20px;border-bottom:2px solid #d1d1d1;overflow-y:visible!important}  .cd-datatable .datatable-body .expand-collapse-icon{display:block;height:100%;text-align:center}  .cd-datatable .datatable-body .expand-collapse-icon:hover{text-decoration:none}  .cd-datatable .datatable-body .expand-collapse-icon-right:before{font-family:ForkAwesome,sans-serif;font-size:1rem;color:#212529;line-height:1;content:""}  .cd-datatable .datatable-body .expand-collapse-icon-down:before{font-family:ForkAwesome,sans-serif;font-size:1rem;color:#212529;line-height:1;content:""}  .cd-datatable .datatable-footer{display:unset!important}  .cd-datatable .datatable-footer .page-count,   .cd-datatable .datatable-footer .selected-count{font-style:italic;padding-left:5px}  .cd-datatable .cd-datatable-checkbox{text-align:center}@keyframes progress-loading{from{left:-200px;width:15%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}']],data:{}});function Vt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Failed to load data."]))],(function(t,e){t(e,1,0,"error")}),null)}function Gt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","cd-datatable-actions"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,null)}function Bt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"a",[["class","dropdown-item"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onSelectFilter(t.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.column.name)}))}function zt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu dropdown-menu-right px-1"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Bt)),a["ɵdid"](2,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.columnFilters)}),null)}function Yt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),null)}function Ht(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"a",[["class","dropdown-item"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(r.onChangeFilter(r.selectedFilter,t.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵted"](2,null,[""," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Yt)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,void 0!==n.selectedFilter.value&&n.selectedFilter.value.raw===e.context.$implicit.raw)}),(function(t,e){t(e,2,0,e.context.$implicit.formatted)}))}function Ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu dropdown-menu-right px-1"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ht)),a["ɵdid"](2,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.selectedFilter.options)}),null)}function Wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,20,"div",[["class","btn-group widget-toolbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,16777216,null,null,11,"div",[["class","btn-group tc_filter_name"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,o.f,o.f,[]),a["ɵdid"](3,212992,null,0,o.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,o.f,o.a,d.b],null,null),(t()(),a["ɵeld"](4,0,null,null,6,"a",[["class","btn btn-light dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,5).onClick()&&r),r}),null,null)),a["ɵdid"](5,147456,null,0,o.g,[a.ChangeDetectorRef,o.c,a.ElementRef,a.Renderer2,o.f],null,null),(t()(),a["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](8,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](9,2),(t()(),a["ɵted"](10,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,zt)),a["ɵdid"](12,16384,null,0,o.d,[o.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["ɵeld"](13,16777216,null,null,7,"div",[["class","btn-group tc_filter_option"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,o.f,o.f,[]),a["ɵdid"](15,212992,null,0,o.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,o.f,o.a,d.b],null,null),(t()(),a["ɵeld"](16,0,null,null,2,"a",[["class","btn btn-light dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[2,"disabled",null],[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,17).onClick()&&r),r}),null,null)),a["ɵdid"](17,147456,null,0,o.g,[a.ChangeDetectorRef,o.c,a.ElementRef,a.Renderer2,o.f],null,null),(t()(),a["ɵted"](18,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Ut)),a["ɵdid"](20,16384,null,0,o.d,[o.f,a.ViewContainerRef,a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,3,0);var a=t(e,9,0,n.icons.large,n.icons.filter);t(e,8,0,a),t(e,15,0)}),(function(t,e){var n=e.component;t(e,1,0,a["ɵnov"](e,3).dropup,a["ɵnov"](e,3).isOpen,a["ɵnov"](e,3).isOpen&&a["ɵnov"](e,3).isBs4),t(e,4,0,!0,a["ɵnov"](e,5).isDisabled,a["ɵnov"](e,5).isOpen),t(e,10,0,n.selectedFilter.column.name),t(e,13,0,a["ɵnov"](e,15).dropup,a["ɵnov"](e,15).isOpen,a["ɵnov"](e,15).isOpen&&a["ɵnov"](e,15).isBs4),t(e,16,0,0===n.selectedFilter.options.length,!0,a["ɵnov"](e,17).isDisabled,a["ɵnov"](e,17).isOpen),t(e,18,0,n.selectedFilter.value?n.selectedFilter.value.formatted:"Any")}))}function Kt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"div",[["class","input-group search"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"span",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,4,"span",[["class","input-group-text"]],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,1),(t()(),a["ɵeld"](7,0,null,null,5,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["ɵnov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,8)._compositionEnd(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.search=n)&&r),"keyup"===e&&(r=!1!==i.updateFilter()&&r),r}),null,null)),a["ɵdid"](8,16384,null,0,c.e,[a.Renderer2,a.ElementRef,[2,c.b]],null,null),a["ɵprd"](1024,null,c.p,(function(t){return[t]}),[c.e]),a["ɵdid"](10,671744,null,0,c.u,[[8,null],[8,null],[8,null],[6,c.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["ɵprd"](2048,null,c.q,null,[c.u]),a["ɵdid"](12,16384,null,0,c.r,[[4,c.q]],null,null),(t()(),a["ɵeld"](13,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),a["ɵeld"](14,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onClearSearch()&&a),a}),null,null)),(t()(),a["ɵeld"](15,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null))],(function(t,e){var n=e.component,a=t(e,6,0,n.icons.search);t(e,5,0,a),t(e,10,0,n.search)}),(function(t,e){var n=e.component;t(e,7,0,a["ɵnov"](e,12).ngClassUntouched,a["ɵnov"](e,12).ngClassTouched,a["ɵnov"](e,12).ngClassPristine,a["ɵnov"](e,12).ngClassDirty,a["ɵnov"](e,12).ngClassValid,a["ɵnov"](e,12).ngClassInvalid,a["ɵnov"](e,12).ngClassPending),t(e,15,0,a["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,""))}))}function $t(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[["class","input-group dataTables_paginate"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["class","form-control"],["max","9999"],["min","1"],["type","number"]],[[8,"value",0]],[[null,"click"],[null,"keyup"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.setLimit(n)&&a),"keyup"===e&&(a=!1!==r.setLimit(n)&&a),"blur"===e&&(a=!1!==r.setLimit(n)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.userConfig.limit)}))}function Jt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"li",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,0,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"name",0],[8,"id",0],[8,"checked",0]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.toggleColumn(n)&&a),a}),null,null)),(t()(),a["ɵeld"](3,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["ɵted"](4,null,["",""]))],null,(function(t,e){t(e,2,0,e.parent.context.$implicit.prop,e.parent.context.$implicit.prop,!e.parent.context.$implicit.isHidden),t(e,3,0,e.parent.context.$implicit.prop),t(e,4,0,e.parent.context.$implicit.name)}))}function Zt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Jt)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0,""!==e.context.$implicit.name)}),null)}function Qt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu px-3"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Zt)),a["ɵdid"](2,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.columns)}),null)}function Xt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["class","widget-toolbar tc_refreshBtn"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshBtn()&&a),a}),null,null)),(t()(),a["ɵeld"](2,0,null,null,3,"i",[],[[2,"fa-spin",null]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](5,2)],(function(t,e){var n=e.component,a=t(e,5,0,n.icons.large,n.icons.refresh);t(e,4,0,a)}),(function(t,e){var n=e.component;t(e,2,0,n.updating||n.loadingIndicator)}))}function te(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,23,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","cd-datatable-actions"]],null,null,null,null,null)),a["ɵncd"](null,1),a["ɵncd"](null,2),(t()(),a["ɵand"](16777216,null,null,1,null,Wt)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Kt)),a["ɵdid"](7,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,$t)),a["ɵdid"](9,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](10,0,null,null,11,"div",[["class","widget-toolbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](11,16777216,null,null,10,"div",[["class","dropdown tc_menuitem tc_menuitem_cluster"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,o.f,o.f,[]),a["ɵdid"](13,212992,null,0,o.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,o.f,o.a,d.b],{insideClick:[0,"insideClick"]},null),(t()(),a["ɵeld"](14,0,null,null,5,"a",[["class","btn btn-light dropdown-toggle tc_columnBtn"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,15).onClick()&&r),r}),null,null)),a["ɵdid"](15,147456,null,0,o.g,[a.ChangeDetectorRef,o.c,a.ElementRef,a.Renderer2,o.f],null,null),(t()(),a["ɵeld"](16,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](18,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](19,2),(t()(),a["ɵand"](16777216,null,null,1,null,Qt)),a["ɵdid"](21,16384,null,0,o.d,[o.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,Xt)),a["ɵdid"](23,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,0!==n.columnFilters.length),t(e,7,0,n.searchField),t(e,9,0,n.limit),t(e,13,0,!0);var a=t(e,19,0,n.icons.large,n.icons.table);t(e,18,0,a),t(e,23,0,n.fetchData.observers.length>0)}),(function(t,e){t(e,11,0,a["ɵnov"](e,13).dropup,a["ɵnov"](e,13).isOpen,a["ɵnov"](e,13).isOpen&&a["ɵnov"](e,13).isBs4),t(e,14,0,!0,a["ɵnov"](e,15).isDisabled,a["ɵnov"](e,15).isOpen)}))}function ee(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"span",[["class","badge badge-info mr-2"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[["class","mr-2"]],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",": ",""])),(t()(),a["ɵeld"](3,0,null,null,4,"a",[["class","badge-remove"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onChangeFilter(t.parent.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](6,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](7,1)],(function(t,e){var n=t(e,7,0,e.component.icons.destroy);t(e,6,0,n)}),(function(t,e){t(e,2,0,e.parent.context.$implicit.column.name,e.parent.context.$implicit.value.formatted)}))}function ne(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ee)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit.value)}),null)}function ae(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","filter-chips"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ne)),a["ɵdid"](3,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](4,0,null,null,2,"a",[["class","tc_clearSelections"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onClearFilters(),a=!1),a}),null,null)),(t()(),a["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Clear filters"]))],(function(t,e){t(e,3,0,e.component.columnFilters)}),null)}function re(t){return a["ɵvid"](0,[a["ɵncd"](null,3),(t()(),a["ɵand"](0,null,null,0))],null,null)}function ie(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "])),(t()(),a["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["selected"])),(t()(),a["ɵted"](-1,null,[" / "]))],null,(function(t,e){t(e,1,0,e.parent.context.selectedCount)}))}function se(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "])),(t()(),a["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["found"])),(t()(),a["ɵted"](-1,null,[" / "]))],null,(function(t,e){t(e,1,0,e.parent.context.rowCount)}))}function ue(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ie)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,se)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](5,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,[" "," "])),(t()(),a["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["total"])),(t()(),a["ɵeld"](9,0,null,null,1,"datatable-pager",[["class","datatable-pager"]],[[8,"hidden",0]],[[null,"change"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t.parent,26).onFooterPage(n)&&r),r}),At,Ct)),a["ɵdid"](10,49152,null,0,f.j,[],{pagerLeftArrowIcon:[0,"pagerLeftArrowIcon"],pagerRightArrowIcon:[1,"pagerRightArrowIcon"],pagerPreviousIcon:[2,"pagerPreviousIcon"],pagerNextIcon:[3,"pagerNextIcon"],size:[4,"size"],count:[5,"count"],page:[6,"page"]},{change:"change"})],(function(t,e){var n=e.component;t(e,2,0,n.selectionType),t(e,4,0,e.context.rowCount!=(null==n.data?null:n.data.length)),t(e,10,0,n.paginationClasses.pagerLeftArrow,n.paginationClasses.pagerRightArrow,n.paginationClasses.pagerPrevious,n.paginationClasses.pagerNext,e.context.pageSize,e.context.rowCount,e.context.curPage)}),(function(t,e){var n=e.component;t(e,6,0,(null==n.data?null:n.data.length)||0),t(e,9,0,!(e.context.rowCount/e.context.pageSize>1))}))}function oe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.value)}))}function le(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-sparkline",[],null,null,null,kt.b,kt.a)),a["ɵdid"](1,638976,null,0,Et.a,[Lt.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],(function(t,e){t(e,1,0,e.context.value,e.context.row.cdIsBinary)}),null)}function de(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r}),null,null)),a["ɵdid"](1,671744,null,0,Dt.p,[Dt.m,Dt.a,u.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),a["ɵpad"](2,1),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){var n=e.context.row.cdParams,a=t(e,2,0,e.context.row.cdLink);t(e,1,0,n,a)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).target,a["ɵnov"](e,1).href),t(e,3,0,e.context.value)}))}function ce(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"i",[],[[8,"hidden",0]],null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1),a["ɵppd"](4,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),(function(t,e){var n=!a["ɵunv"](e,0,0,t(e,4,0,a["ɵnov"](e.parent,0),e.context.value));t(e,0,0,n)}))}function fe(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," /s\n"]))],null,(function(t,e){t(e,0,0,e.context.value)}))}function he(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,2)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function ge(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","text-muted italic"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["(",")"]))],null,(function(t,e){t(e,1,0,e.parent.context.row.cdExecuting)}))}function pe(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,he)),a["ɵdid"](1,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](2,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,ge)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.row.cdExecuting),t(e,4,0,e.context.row.cdExecuting)}),(function(t,e){t(e,2,0,e.context.value)}))}function be(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"",e.component.useCustomClass(e.context.value),"")),t(e,1,0,e.context.value)}))}function me(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[["class","badge"]],null,null,null,null,null)),a["ɵprd"](512,null,u["ɵNgClassImpl"],u["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,u.NgClass,[u["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,"badge",null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.map&&null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&null!=e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit]&&e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].class?e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].class:null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.class?e.parent.parent.context.column.customTemplateConfig.class:"badge-primary")}),(function(t,e){t(e,3,0,null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.map&&null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&null!=e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit]&&e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].value?e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].value:null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.prefix?e.parent.parent.context.column.customTemplateConfig.prefix+e.parent.context.$implicit:e.parent.context.$implicit)}))}function ye(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" "]))],null,null)}function ve(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,me)),a["ɵdid"](2,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ye)),a["ɵdid"](4,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&e.parent.context.column.customTemplateConfig.map&&null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&null!=e.parent.context.column.customTemplateConfig.map[e.context.$implicit]&&e.parent.context.column.customTemplateConfig.map[e.context.$implicit].value?e.parent.context.column.customTemplateConfig.map[e.context.$implicit].value:null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&e.parent.context.column.customTemplateConfig.prefix?e.parent.context.column.customTemplateConfig.prefix+e.context.$implicit:e.context.$implicit),t(e,4,0,!e.context.last)}),null)}function xe(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,ve)),a["ɵdid"](1,278528,null,0,u.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵppd"](2,1),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,1),e.context.value));t(e,1,0,n)}),null)}function _e(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""])),a["ɵppd"](2,2)],null,(function(t,e){var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,2),e.context.value,null==e.context.column?null:e.context.column.customTemplateConfig));t(e,1,0,n)}))}function Te(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[["data-toggle","tooltip"]],[[8,"title",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""])),a["ɵppd"](2,3)],null,(function(t,e){t(e,0,0,e.context.value);var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,3),e.context.value,null==e.context.column||null==e.context.column.customTemplateConfig?null:e.context.column.customTemplateConfig.length,null==e.context.column||null==e.context.column.customTemplateConfig?null:e.context.column.customTemplateConfig.omission));t(e,1,0,n)}))}function we(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"a",[["class","expand-collapse-icon tc_expand-collapse"],["href","javascript:void(0)"],["title","Expand/Collapse Row"]],[[2,"expand-collapse-icon-right",null],[2,"expand-collapse-icon-down",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleExpandRow(t.context.row,t.context.expanded,n)&&a),a}),null,null))],null,(function(t,e){t(e,0,0,!e.context.expanded,e.context.expanded)}))}function Oe(t){return a["ɵvid"](2,[a["ɵpid"](0,Pt.a,[]),a["ɵpid"](0,Mt.a,[]),a["ɵpid"](0,qt.a,[]),a["ɵpid"](0,jt.a,[]),a["ɵqud"](402653184,1,{table:0}),a["ɵqud"](402653184,2,{tableCellBoldTpl:0}),a["ɵqud"](402653184,3,{sparklineTpl:0}),a["ɵqud"](402653184,4,{routerLinkTpl:0}),a["ɵqud"](402653184,5,{checkIconTpl:0}),a["ɵqud"](402653184,6,{perSecondTpl:0}),a["ɵqud"](402653184,7,{executingTpl:0}),a["ɵqud"](402653184,8,{classAddingTpl:0}),a["ɵqud"](402653184,9,{badgeTpl:0}),a["ɵqud"](402653184,10,{mapTpl:0}),a["ɵqud"](402653184,11,{truncateTpl:0}),a["ɵqud"](402653184,12,{rowDetailsTpl:0}),(t()(),a["ɵand"](16777216,null,null,1,null,Vt)),a["ɵdid"](17,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](18,0,null,null,22,"div",[["class","dataTables_wrapper"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Gt)),a["ɵdid"](20,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,te)),a["ɵdid"](22,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ae)),a["ɵdid"](24,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](25,0,null,null,15,"ngx-datatable",[["class","bootstrap cd-datatable ngx-datatable"]],[[2,"fixed-header",null],[2,"fixed-row",null],[2,"scroll-vertical",null],[2,"virtualized",null],[2,"scroll-horz",null],[2,"selectable",null],[2,"checkbox-selection",null],[2,"cell-selection",null],[2,"single-selection",null],[2,"multi-selection",null],[2,"multi-click-selection",null]],[[null,"select"],[null,"sort"],["window","resize"]],(function(t,e,n){var r=!0,i=t.component;return"window:resize"===e&&(r=!1!==a["ɵnov"](t,26).onWindowResize()&&r),"select"===e&&(r=!1!==i.onSelect(n)&&r),"sort"===e&&(r=!1!==i.changeSorting(n)&&r),r}),b,h)),a["ɵdid"](26,5750784,[[1,4],["table",4]],4,f.n,[[1,f.y],[1,f.r],a.ChangeDetectorRef,a.ElementRef,a.KeyValueDiffers,f.a,[2,"configuration"]],{rows:[0,"rows"],columns:[1,"columns"],selected:[2,"selected"],rowHeight:[3,"rowHeight"],columnMode:[4,"columnMode"],headerHeight:[5,"headerHeight"],footerHeight:[6,"footerHeight"],limit:[7,"limit"],loadingIndicator:[8,"loadingIndicator"],selectionType:[9,"selectionType"],sorts:[10,"sorts"],cssClasses:[11,"cssClasses"],rowClass:[12,"rowClass"],rowIdentity:[13,"rowIdentity"]},{select:"select",sort:"sort"}),a["ɵqud"](603979776,13,{columnTemplates:1}),a["ɵqud"](603979776,14,{rowDetail:0}),a["ɵqud"](603979776,15,{groupHeader:0}),a["ɵqud"](603979776,16,{footer:0}),(t()(),a["ɵeld"](31,0,[["detailRow",1]],null,4,"ngx-datatable-row-detail",[["rowHeight","auto"]],null,null,null,null,null)),a["ɵdid"](32,16384,[[14,4]],1,f.p,[],{rowHeight:[0,"rowHeight"]},null),a["ɵqud"](335544320,17,{_templateQuery:0}),(t()(),a["ɵand"](0,[[17,2]],null,1,null,re)),a["ɵdid"](35,16384,null,0,f.q,[a.TemplateRef],null,null),(t()(),a["ɵeld"](36,0,null,null,4,"ngx-datatable-footer",[],null,null,null,null,null)),a["ɵdid"](37,16384,[[16,4]],1,f.o,[],null,null),a["ɵqud"](603979776,18,{_templateQuery:0}),(t()(),a["ɵand"](0,[[18,2]],null,1,null,ue)),a["ɵdid"](40,16384,null,0,f.g,[a.TemplateRef],null,null),(t()(),a["ɵand"](0,[[2,2],["tableCellBoldTpl",2]],null,0,null,oe)),(t()(),a["ɵand"](0,[[3,2],["sparklineTpl",2]],null,0,null,le)),(t()(),a["ɵand"](0,[[4,2],["routerLinkTpl",2]],null,0,null,de)),(t()(),a["ɵand"](0,[[5,2],["checkIconTpl",2]],null,0,null,ce)),(t()(),a["ɵand"](0,[[6,2],["perSecondTpl",2]],null,0,null,fe)),(t()(),a["ɵand"](0,[[7,2],["executingTpl",2]],null,0,null,pe)),(t()(),a["ɵand"](0,[[8,2],["classAddingTpl",2]],null,0,null,be)),(t()(),a["ɵand"](0,[[9,2],["badgeTpl",2]],null,0,null,xe)),(t()(),a["ɵand"](0,[[10,2],["mapTpl",2]],null,0,null,_e)),(t()(),a["ɵand"](0,[[11,2],["truncateTpl",2]],null,0,null,Te)),(t()(),a["ɵand"](0,[[12,2],["rowDetailsTpl",2]],null,1,null,we)),a["ɵdid"](52,16384,null,0,f.e,[a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,17,0,n.loadingError),t(e,20,0,n.onlyActionHeader),t(e,22,0,n.toolHeader),t(e,24,0,n.toolHeader&&n.columnFiltered),t(e,26,1,[n.rows,n.tableColumns,n.selection.selected,"auto",n.columnMode,n.header?"auto":0,n.footer?"auto":0,n.userConfig.limit>0?n.userConfig.limit:void 0,n.loadingIndicator,n.selectionType,n.userConfig.sorts,n.paginationClasses,n.getRowClass(),n.rowIdentity()]),t(e,32,0,"auto")}),(function(t,e){t(e,25,1,[a["ɵnov"](e,26).isFixedHeader,a["ɵnov"](e,26).isFixedRow,a["ɵnov"](e,26).isVertScroll,a["ɵnov"](e,26).isVirtualized,a["ɵnov"](e,26).isHorScroll,a["ɵnov"](e,26).isSelectable,a["ɵnov"](e,26).isCheckboxSelection,a["ɵnov"](e,26).isCellSelection,a["ɵnov"](e,26).isSingleSelection,a["ɵnov"](e,26).isMultiSelection,a["ɵnov"](e,26).isMultiClickSelection])}))}},"2EZI":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("s7LF"),r=n("QFaf"),i=n("8Y7J");let s=(()=>{class t extends a.h{group(t,e=null){const n=super.group(t,e);return new r.a(n.controls,n.validator,n.asyncValidator)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},"2Gvs":function(t,e,n){var a=n("0Dky");t.exports=a((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},"2QA8":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>"function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random())()},"2Vo4":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("XNiG"),r=n("9ppp");class i extends a.a{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const e=super._subscribe(t);return e&&!e.closed&&t.next(this._value),e}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new r.a;return this._value}next(t){super.next(this._value=t)}}},"2ZVE":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return o})),n.d(e,"d",(function(){return l})),n.d(e,"e",(function(){return s})),n.d(e,"f",(function(){return i}));var a=n("8Y7J");class r{constructor(t){this.viewRef=t}set ngTransclude(t){this._ngTransclude=t,t&&this.viewRef.createEmbeddedView(t)}get ngTransclude(){return this._ngTransclude}}class i{constructor(){this.type="tabs",this.ariaLabel="Tabs"}}class s{constructor(t,e,n){this.renderer=e,this.elementRef=n,this.clazz=!0,this.tabs=[],this.classMap={},Object.assign(this,t)}get vertical(){return this._vertical}set vertical(t){this._vertical=t,this.setClassMap()}get justified(){return this._justified}set justified(t){this._justified=t,this.setClassMap()}get type(){return this._type}set type(t){this._type=t,this.setClassMap()}ngOnDestroy(){this.isDestroyed=!0}addTab(t){this.tabs.push(t),t.active=1===this.tabs.length&&void 0===t.active}removeTab(t,e={reselect:!0,emit:!0}){const n=this.tabs.indexOf(t);if(-1!==n&&!this.isDestroyed){if(e.reselect&&t.active&&this.hasAvailableTabs(n)){const t=this.getClosestTabIndex(n);this.tabs[t].active=!0}e.emit&&t.removed.emit(t),this.tabs.splice(n,1),t.elementRef.nativeElement.parentNode&&this.renderer.removeChild(t.elementRef.nativeElement.parentNode,t.elementRef.nativeElement)}}keyNavActions(t,e){const n=Array.from(this.elementRef.nativeElement.querySelectorAll(".nav-link"));if(13!==t.keyCode&&"Enter"!==t.key&&32!==t.keyCode&&"Space"!==t.key)if(39!==t.keyCode&&"RightArrow"!==t.key)if(37!==t.keyCode&&"LeftArrow"!==t.key)if(36!==t.keyCode&&"Home"!==t.key)if(35!==t.keyCode&&"End"!==t.key){if((46===t.keyCode||"Delete"===t.key)&&this.tabs[e].removable){if(this.removeTab(this.tabs[e]),n[e+1])return void n[(e+1)%n.length].focus();n[n.length-1]&&n[0].focus()}}else{let a;t.preventDefault();let r=1,i=e;do{i-r<0?(i=n.length-1,a=n[i],r=0):a=n[i-r],r++}while(a.classList.contains("disabled"));a.focus()}else{let e;t.preventDefault();let a=0;do{e=n[a%n.length],a++}while(e.classList.contains("disabled"));e.focus()}else{let t,a=1,r=e;do{r-a<0?(r=n.length-1,t=n[r],a=0):t=n[r-a],a++}while(t.classList.contains("disabled"));t.focus()}else{let t,a=1;do{t=n[(e+a)%n.length],a++}while(t.classList.contains("disabled"));t.focus()}else t.preventDefault(),n[e%n.length].click()}getClosestTabIndex(t){const e=this.tabs.length;if(!e)return-1;for(let n=1;n<=e;n+=1){const e=t-n,a=t+n;if(this.tabs[e]&&!this.tabs[e].disabled)return e;if(this.tabs[a]&&!this.tabs[a].disabled)return a}return-1}hasAvailableTabs(t){const e=this.tabs.length;if(!e)return!1;for(let n=0;n<e;n+=1)if(!this.tabs[n].disabled&&n!==t)return!0;return!1}setClassMap(){this.classMap={"nav-stacked":this.vertical,"flex-column":this.vertical,"nav-justified":this.justified,["nav-"+this.type]:!0}}}class u{constructor(t,e,n){this.elementRef=e,this.renderer=n,this.selectTab=new a.EventEmitter,this.deselect=new a.EventEmitter,this.removed=new a.EventEmitter,this.addClass=!0,this.role="tabpanel",this.tabset=t,this.tabset.addTab(this)}get customClass(){return this._customClass}set customClass(t){this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.removeClass(this.elementRef.nativeElement,t)}),this._customClass=t?t.trim():null,this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.addClass(this.elementRef.nativeElement,t)})}get active(){return this._active}set active(t){this._active!==t&&(this.disabled&&t||!t?this._active&&!t&&(this.deselect.emit(this),this._active=t):(this._active=t,this.selectTab.emit(this),this.tabset.tabs.forEach(t=>{t!==this&&(t.active=!1)})))}get ariaLabelledby(){return this.id?this.id+"-link":""}ngOnInit(){this.removable=this.removable}ngOnDestroy(){this.tabset.removeTab(this,{reselect:!1,emit:!1})}}class o{constructor(t,e){e.headingRef=t}}class l{static forRoot(){return{ngModule:l,providers:[i]}}}},"2bSy":function(t,e,n){var a=n("iQ+a"),r=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,i,s,u){var o=1&n,l=a(t),d=l.length;if(d!=a(e).length&&!o)return!1;for(var c=d;c--;){var f=l[c];if(!(o?f in e:r.call(e,f)))return!1}var h=u.get(t),g=u.get(e);if(h&&g)return h==e&&g==t;var p=!0;u.set(t,e),u.set(e,t);for(var b=o;++c<d;){var m=t[f=l[c]],y=e[f];if(i)var v=o?i(y,m,f,e,t,u):i(m,y,f,t,e,u);if(!(void 0===v?m===y||s(m,y,n,i,u):v)){p=!1;break}b||(b="constructor"==f)}if(p&&!b){var x=t.constructor,_=e.constructor;x==_||!("constructor"in t)||!("constructor"in e)||"function"==typeof x&&x instanceof x&&"function"==typeof _&&_ instanceof _||(p=!1)}return u.delete(t),u.delete(e),p}},"2bX/":function(t,e,n){var a=n("2oRo"),r=n("0GbY"),i=n("Fib7"),s=n("OpvP"),u=n("/b8u"),o=a.Object;t.exports=u?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return i(e)&&s(e.prototype,o(t))}},"2fFW":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));let a=!1;const r={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){if(t){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else a&&console.log("RxJS: Back to a better error behavior. Thank you. <3");a=t},get useDeprecatedSynchronousErrorHandling(){return a}}},"2fjn":function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}}})}(n("wd/R"))},"2oRo":function(t,e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof global&&global)||function(){return this}()||Function("return this")()},"2oum":function(t,e){t.exports=function(t){return this.__data__.has(t)}},"2uy1":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("XNiG"),s=n("VRyK"),u=n("xgIS"),o=n("LRne"),l=n("3N8a");class d extends l.a{constructor(t,e){super(t,e),this.scheduler=t,this.work=e}requestAsyncId(t,e,n=0){return null!==n&&n>0?super.requestAsyncId(t,e,n):(t.actions.push(this),t.scheduled||(t.scheduled=requestAnimationFrame(()=>t.flush(null))))}recycleAsyncId(t,e,n=0){if(null!==n&&n>0||null===n&&this.delay>0)return super.recycleAsyncId(t,e,n);0===t.actions.length&&(cancelAnimationFrame(e),t.scheduled=void 0)}}var c=n("IjjT");class f extends c.a{flush(t){this.active=!0,this.scheduled=void 0;const{actions:e}=this;let n,a=-1,r=e.length;t=t||e.shift();do{if(n=t.execute(t.state,t.delay))break}while(++a<r&&(t=e.shift()));if(this.active=!1,n){for(;++a<r&&(t=e.shift());)t.unsubscribe();throw n}}}const h=new f(d);function g(t,e){if(1!==t.nodeType)return[];const n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function p(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function b(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}const{overflow:e,overflowX:n,overflowY:a}=g(t);return/(auto|scroll|overlay)/.test(String(e)+String(a)+String(n))?t:b(p(t))}n.d(e,"a",(function(){return U}));const m="undefined"!=typeof window&&"undefined"!=typeof document,y=m&&!(!window.MSInputMethodContext||!document.documentMode),v=m&&!(!window.MSInputMethodContext||!/MSIE 10/.test(navigator.userAgent));function x(t){return 11===t?y:10===t?v:y||v}function _(t){if(!t)return document.documentElement;const e=x(10)?document.body:null;let n,a=t.offsetParent||null;for(;a===e&&t.nextElementSibling&&n!==t.nextElementSibling;)n=t.nextElementSibling,a=n.offsetParent;const r=a&&a.nodeName;return r&&"BODY"!==r&&"HTML"!==r?-1!==["TH","TD","TABLE"].indexOf(a.nodeName)&&"static"===g(a,"position")?_(a):a:n?n.ownerDocument.documentElement:document.documentElement}function T(t){return null!==t.parentNode?T(t.parentNode):t}function w(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;const n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,a=n?t:e,r=n?e:t,i=document.createRange();i.setStart(a,0),i.setEnd(r,0);const{commonAncestorContainer:s}=i;if(t!==s&&e!==s||a.contains(r))return function(t){const{nodeName:e}=t;return"BODY"!==e&&("HTML"===e||_(t.firstElementChild)===t)}(s)?s:_(s);const u=T(t);return u.host?w(u.host,e):w(t,T(e).host)}function O(t,e){const n="x"===e?"Left":"Top",a="Left"===n?"Right":"Bottom";return parseFloat(t[`border${n}Width`])+parseFloat(t[`border${a}Width`])}function S(t,e,n,a){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],x(10)?parseInt(n["offset"+t],10)+parseInt(a["margin"+("Height"===t?"Top":"Left")],10)+parseInt(a["margin"+("Height"===t?"Bottom":"Right")],10):0)}function I(t){const e=t.body,n=t.documentElement,a=x(10)&&getComputedStyle(n);return{height:S("Height",e,n,a),width:S("Width",e,n,a)}}function N(t,e="top"){const n="top"===e?"scrollTop":"scrollLeft",a=t.nodeName;if("BODY"===a||"HTML"===a){const e=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||e)[n]}return t[n]}function C(t){return Object.assign({},t,{right:t.left+t.width,bottom:t.top+t.height})}function R(t){let e={};try{if(x(10)){e=t.getBoundingClientRect();const n=N(t,"top"),a=N(t,"left");e.top+=n,e.left+=a,e.bottom+=n,e.right+=a}else e=t.getBoundingClientRect()}catch(s){return}const n={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},a="HTML"===t.nodeName?I(t.ownerDocument):{};let r=t.offsetWidth-(a.width||t.clientWidth||n.right-n.left),i=t.offsetHeight-(a.height||t.clientHeight||n.bottom-n.top);if(r||i){const e=g(t);r-=O(e,"x"),i-=O(e,"y"),n.width-=r,n.height-=i}return C(n)}function A(t,e,n=!1){const a=x(10),r="HTML"===e.nodeName,i=R(t),s=R(e),u=b(t),o=g(e),l=parseFloat(o.borderTopWidth),d=parseFloat(o.borderLeftWidth);n&&r&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));let c=C({top:i.top-s.top-l,left:i.left-s.left-d,width:i.width,height:i.height});if(c.marginTop=0,c.marginLeft=0,!a&&r){const t=parseFloat(o.marginTop),e=parseFloat(o.marginLeft);c.top-=l-t,c.bottom-=l-t,c.left-=d-e,c.right-=d-e,c.marginTop=t,c.marginLeft=e}return(a&&!n?e.contains(u):e===u&&"BODY"!==u.nodeName)&&(c=function(t,e,n=!1){const a=N(e,"top"),r=N(e,"left"),i=n?-1:1;return t.top+=a*i,t.bottom+=a*i,t.left+=r*i,t.right+=r*i,t}(c,e)),c}function k(t){if(!t||!t.parentElement||x())return document.documentElement;let e=t.parentElement;for(;e&&"none"===g(e,"transform");)e=e.parentElement;return e||document.documentElement}function E(t,e,n=0,a,r=!1){let i={top:0,left:0};const s=r?k(t):w(t,e);if("viewport"===a)i=function(t,e=!1){const n=t.ownerDocument.documentElement,a=A(t,n),r=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:N(n),u=e?0:N(n,"left");return C({top:s-Number(a.top)+Number(a.marginTop),left:u-Number(a.left)+Number(a.marginLeft),width:r,height:i})}(s,r);else{let n;"scrollParent"===a?(n=b(p(e)),"BODY"===n.nodeName&&(n=t.ownerDocument.documentElement)):n="window"===a?t.ownerDocument.documentElement:a;const u=A(n,s,r);if("HTML"!==n.nodeName||function t(e){const n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===g(e,"position")||t(p(e)))}(s))i=u;else{const{height:e,width:n}=I(t.ownerDocument);i.top+=u.top-u.marginTop,i.bottom=Number(e)+Number(u.top),i.left+=u.left-u.marginLeft,i.right=Number(n)+Number(u.left)}}return i.left+=n,i.top+=n,i.right-=n,i.bottom-=n,i}function L({width:t,height:e}){return t*e}function D(t,e,n,a,r=["top","bottom","right","left"],i="viewport",s=0){if(-1===t.indexOf("auto"))return t;const u=E(n,a,s,i),o={top:{width:u.width,height:e.top-u.top},right:{width:u.right-e.right,height:u.height},bottom:{width:u.width,height:u.bottom-e.bottom},left:{width:e.left-u.left,height:u.height}},l=Object.keys(o).map(t=>Object.assign({key:t},o[t],{area:L(o[t])})).sort((t,e)=>e.area-t.area);let d=l.filter(({width:t,height:e})=>t>=n.clientWidth&&e>=n.clientHeight);d=d.filter(t=>r.some(e=>e===t.key));const c=d.length>0?d[0].key:l[0].key,f=t.split(" ")[1];return n.className=n.className.replace(/bs-tooltip-auto/g,"bs-tooltip-"+c),c+(f?"-"+f:"")}function P(t){const e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),a=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:Number(t.offsetWidth)+a,height:Number(t.offsetHeight)+n}}function M(t,e,n=null){return A(e,n?k(t):w(t,e),n)}function q(t,e,n){const a=n.split(" ")[0],r=P(t),i={width:r.width,height:r.height},s=-1!==["right","left"].indexOf(a),u=s?"top":"left",o=s?"left":"top",l=s?"height":"width",d=s?"width":"height";return i[u]=e[u]+e[l]/2-r[l]/2,i[o]=a===o?e[o]-r[d]:e[function(t){const e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,t=>e[t])}(o)],i}function j(t,e){return t&&t.modifiers&&t.modifiers[e]&&t.modifiers[e].enabled}function F(t,e,n){Object.keys(e).forEach(a=>{let r="";var i;-1!==["width","height","top","right","bottom","left"].indexOf(a)&&""!==(i=e[a])&&!isNaN(parseFloat(i))&&isFinite(i)&&(r="px"),n?n.setStyle(t,a,`${String(e[a])}${r}`):t.style[a]=String(e[a])+r})}function V(t){let e=t.offsets.target;const n=t.instance.target.querySelector(".arrow");if(!n)return t;const a=-1!==["left","right"].indexOf(t.placement),r=a?"height":"width",i=a?"Top":"Left",s=i.toLowerCase(),u=a?"left":"top",o=a?"bottom":"right",l=P(n)[r];t.offsets.host[o]-l<e[s]&&(e[s]-=e[s]-(t.offsets.host[o]-l)),Number(t.offsets.host[s])+Number(l)>e[o]&&(e[s]+=Number(t.offsets.host[s])+Number(l)-Number(e[o])),e=C(e);const d=Number(t.offsets.host[s])+Number(t.offsets.host[r]/2-l/2),c=g(t.instance.target),f=parseFloat(c["margin"+i]),h=parseFloat(c[`border${i}Width`]);let p=d-e[s]-f-h;return p=Math.max(Math.min(e[r]-l,p),0),t.offsets.arrow={[s]:Math.round(p),[u]:""},t.instance.arrow=n,t}function G(t){if(t.offsets.target=C(t.offsets.target),!j(t.options,"flip"))return t.offsets.target=Object.assign({},t.offsets.target,q(t.instance.target,t.offsets.host,t.placement)),t;const e=E(t.instance.target,t.instance.host,0,"viewport",!1);let n=t.placement.split(" ")[0],a=t.placement.split(" ")[1]||"";const r=D("auto",t.offsets.host,t.instance.target,t.instance.host,t.options.allowedPositions),i=[n,r];return i.forEach((r,s)=>{if(n!==r||i.length===s+1)return t;n=t.placement.split(" ")[0];const u="left"===n&&Math.floor(t.offsets.target.right)>Math.floor(t.offsets.host.left)||"right"===n&&Math.floor(t.offsets.target.left)<Math.floor(t.offsets.host.right)||"top"===n&&Math.floor(t.offsets.target.bottom)>Math.floor(t.offsets.host.top)||"bottom"===n&&Math.floor(t.offsets.target.top)<Math.floor(t.offsets.host.bottom),o=Math.floor(t.offsets.target.left)<Math.floor(e.left),l=Math.floor(t.offsets.target.right)>Math.floor(e.right),d=Math.floor(t.offsets.target.top)<Math.floor(e.top),c=Math.floor(t.offsets.target.bottom)>Math.floor(e.bottom),f="left"===n&&o||"right"===n&&l||"top"===n&&d||"bottom"===n&&c,h=-1!==["top","bottom"].indexOf(n),g=h&&"left"===a&&o||h&&"right"===a&&l||!h&&"left"===a&&d||!h&&"right"===a&&c;(u||f||g)&&((u||f)&&(n=i[s+1]),g&&(a=function(t){return"right"===t?"left":"left"===t?"right":t}(a)),t.placement=n+(a?" "+a:""),t.offsets.target=Object.assign({},t.offsets.target,q(t.instance.target,t.offsets.host,t.placement)))}),t}function B(t){if(!j(t.options,"preventOverflow"))return t;const e="transform",n=t.instance.target.style,{top:a,left:r,[e]:i}=n;n.top="",n.left="",n[e]="";const s=E(t.instance.target,t.instance.host,0,"scrollParent",!1);n.top=a,n.left=r,n[e]=i;const u={primary(e){let n=t.offsets.target[e];return t.offsets.target[e]<s[e]&&(n=Math.max(t.offsets.target[e],s[e])),{[e]:n}},secondary(e){const n="right"===e?"left":"top";let a=t.offsets.target[n];return t.offsets.target[e]>s[e]&&(a=Math.min(t.offsets.target[n],s[e]-("right"===e?t.offsets.target.width:t.offsets.target.height))),{[n]:a}}};let o;return["left","right","top","bottom"].forEach(e=>{o=-1!==["left","top"].indexOf(e)?"primary":"secondary",t.offsets.target=Object.assign({},t.offsets.target,u[o](e))}),t}function z(t){const e=t.placement,n=e.split(" ")[0],a=e.split(" ")[1];if(a){const{host:e,target:r}=t.offsets,i=-1!==["bottom","top"].indexOf(n),s=i?"left":"top",u=i?"width":"height";t.offsets.target=Object.assign({},r,{start:{[s]:e[s]},end:{[s]:e[s]+e[u]-r[u]}}[a])}return t}class Y{position(t,e,n=!0){return this.offset(t,e,!1)}offset(t,e,n=!0){return M(e,t)}positionElements(t,e,n,a,r){return[G,z,B,V].reduce((t,e)=>e(t),function(t,e,n,a){const r=M(t,e);n.match(/^(auto)*\s*(left|right|top|bottom)*$/)||n.match(/^(left|right|top|bottom)*\s*(start|end)*$/)||(n="auto");const i=!!n.match(/auto/g);let s=n.match(/auto\s(left|right|top|bottom)/)?n.split(" ")[1]||"auto":n;const u=q(t,r,s);return s=D(s,r,t,e,a?a.allowedPositions:void 0),{options:a,instance:{target:t,host:e,arrow:null},offsets:{target:u,host:r,arrow:null},positionFixed:!1,placement:s,placementAuto:i}}(e,t,n,r))}}const H=new Y;class U{constructor(t,e,n){this.update$$=new i.a,this.positionElements=new Map,this.isDisabled=!1,Object(r.isPlatformBrowser)(n)&&t.runOutsideAngular(()=>{this.triggerEvent$=Object(s.a)(Object(u.a)(window,"scroll",{passive:!0}),Object(u.a)(window,"resize",{passive:!0}),Object(o.a)(0,h),this.update$$),this.triggerEvent$.subscribe(()=>{this.isDisabled||this.positionElements.forEach(t=>{!function(t,e,n,a,r,i){const s=H.positionElements(t,e,n,a,r),u=function(t){return{width:t.offsets.target.width,height:t.offsets.target.height,left:Math.floor(t.offsets.target.left),top:Math.round(t.offsets.target.top),bottom:Math.round(t.offsets.target.bottom),right:Math.floor(t.offsets.target.right)}}(s);F(e,{"will-change":"transform",top:"0px",left:"0px",transform:`translate3d(${u.left}px, ${u.top}px, 0px)`},i),s.instance.arrow&&F(s.instance.arrow,s.offsets.arrow,i),function(t,e){const n=t.instance.target;let a=n.className;t.placementAuto&&(a=a.replace(/bs-popover-auto/g,"bs-popover-"+t.placement),a=a.replace(/bs-tooltip-auto/g,"bs-tooltip-"+t.placement),a=a.replace(/\sauto/g," "+t.placement),-1!==a.indexOf("popover")&&-1===a.indexOf("popover-auto")&&(a+=" popover-auto"),-1!==a.indexOf("tooltip")&&-1===a.indexOf("tooltip-auto")&&(a+=" tooltip-auto")),a=a.replace(/left|right|top|bottom/g,""+t.placement.split(" ")[0]),e?e.setAttribute(n,"class",a):n.className=a}(s,i)}(W(t.target),W(t.element),t.attachment,t.appendToBody,this.options,e.createRenderer(null,null))})})})}position(t){this.addPositionElement(t)}get event$(){return this.triggerEvent$}disable(){this.isDisabled=!0}enable(){this.isDisabled=!1}addPositionElement(t){this.positionElements.set(W(t.element),t)}calcPosition(){this.update$$.next()}deletePositionElement(t){this.positionElements.delete(W(t))}setOptions(t){this.options=t}}function W(t){return"string"==typeof t?document.querySelector(t):t instanceof a.ElementRef?t.nativeElement:t}},"2vnA":function(t,e,n){"use strict";n.d(e,"a",(function(){return Jt})),n.d(e,"b",(function(){return Qt})),n.d(e,"c",(function(){return it})),n.d(e,"d",(function(){return et})),n.d(e,"e",(function(){return ee}));var a=[];Object.freeze(a);var r={};Object.freeze(r);var i={};function s(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:i}function u(){return++kt.mobxGuid}function o(t){throw l(!1,t),"X"}function l(t,e){if(!t)throw new Error("[mobx] "+(e||"An invariant failed, however the error is obfuscated because this is an production build."))}function d(t){var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}}var c=function(){};function f(t){return null!==t&&"object"==typeof t}function h(t){if(null===t||"object"!=typeof t)return!1;var e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function g(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!0,configurable:!0,value:n})}function p(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!1,configurable:!0,value:n})}function b(t,e){var n="isMobX"+t;return e.prototype[n]=!0,function(t){return f(t)&&!0===t[n]}}function m(t){return void 0!==s().Map&&t instanceof s().Map}function y(t){return t instanceof Set}function v(t){for(var e=[];;){var n=t.next();if(n.done)break;e.push(n.value)}return e}function x(){return"function"==typeof Symbol&&Symbol.toPrimitive||"@@toPrimitive"}function _(t){return null===t?null:"object"==typeof t?""+t:t}function T(t,e){for(var n=t.next();!n.done;)e(n.value),n=t.next()}function w(){return"function"==typeof Symbol&&Symbol.iterator||"@@iterator"}function O(t,e){p(t,w(),e)}function S(t){return t[w()]=N,t}function I(){return"function"==typeof Symbol&&Symbol.toStringTag||"@@toStringTag"}function N(){return this}var C=function(){function t(t){void 0===t&&(t="Atom@"+u()),this.name=t,this.isPendingUnobservation=!1,this.isBeingObserved=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.lastAccessedBy=0,this.lowestObserverState=st.NOT_TRACKING}return t.prototype.onBecomeUnobserved=function(){},t.prototype.onBecomeObserved=function(){},t.prototype.reportObserved=function(){return qt(this)},t.prototype.reportChanged=function(){Pt(),function(t){if(t.lowestObserverState!==st.STALE){t.lowestObserverState=st.STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===st.UP_TO_DATE&&(a.isTracing!==ut.NONE&&jt(a,t),a.onBecomeStale()),a.dependenciesState=st.STALE}}}(this),Mt()},t.prototype.toString=function(){return this.name},t}(),R=b("Atom",C);function A(t,e,n){void 0===e&&(e=c),void 0===n&&(n=c);var a=new C(t);return ae("onBecomeObserved",a,e,void 0),ne(a,n),a}function k(t,e){return t===e}var E={identity:k,structural:function(t,e){return We(t,e)},default:function(t,e){return function(t,e){return"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(t,e)||k(t,e)},shallow:function(t,e){return We(t,e,1)}},L=function(t,e){return(L=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function D(t,e){function n(){this.constructor=t}L(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var P=function(){return(P=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function M(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(u){r={error:u}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function q(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(M(arguments[e]));return t}var j={},F={};function V(t,e){var n=e?j:F;return n[t]||(n[t]={configurable:!0,enumerable:e,get:function(){return G(this),this[t]},set:function(e){G(this),this[t]=e}})}function G(t){if(!0!==t.__mobxDidRunLazyInitializers){var e=t.__mobxDecorators;if(e)for(var n in g(t,"__mobxDidRunLazyInitializers",!0),e){var a=e[n];a.propertyCreator(t,a.prop,a.descriptor,a.decoratorTarget,a.decoratorArguments)}}}function B(t,e){return function(){var n,r=function(a,r,i,s){return!0===s?(e(a,r,i,a,n),null):(Object.prototype.hasOwnProperty.call(a,"__mobxDecorators")||g(a,"__mobxDecorators",P({},a.__mobxDecorators)),a.__mobxDecorators[r]={prop:r,propertyCreator:e,descriptor:i,decoratorTarget:a,decoratorArguments:n},V(r,t))};return z(arguments)?(n=a,r.apply(null,arguments)):(n=Array.prototype.slice.call(arguments),r)}}function z(t){return(2===t.length||3===t.length)&&"string"==typeof t[1]||4===t.length&&!0===t[3]}function Y(t,e,n){return ue(t)?t:Array.isArray(t)?et.array(t,{name:n}):h(t)?et.object(t,void 0,{name:n}):m(t)?et.map(t,{name:n}):y(t)?et.set(t,{name:n}):t}function H(t){return t}function U(t){l(t);var e=B(!0,(function(e,n,a,r,i){!function(t,e,n,a){var r=Fe(t);if(de(r)){var i=fe(r,{object:t,name:e,type:"add",newValue:n});if(!i)return;n=i.newValue}n=(r.values[e]=new It(n,a,r.name+"."+e,!1)).value,Object.defineProperty(t,e,function(t){return Ve[t]||(Ve[t]={configurable:!0,enumerable:!0,get:function(){return this.$mobx.read(this,t)},set:function(e){this.$mobx.write(this,t,e)}})}(e)),r.keys&&r.keys.push(e),function(t,e,n,a){var r=he(t),i=Bt(),s=r||i?{type:"add",object:e,name:n,newValue:a}:null;i&&Yt(P(P({},s),{name:t.name,key:n})),r&&pe(t,s),i&&Ut()}(r,t,e,n)}(e,n,a?a.initializer?a.initializer.call(e):a.value:void 0,t)})),n=("undefined"!=typeof process&&process,e);return n.enhancer=t,n}var W={deep:!0,name:void 0,defaultDecorator:void 0};function K(t){return null==t?W:"string"==typeof t?{name:t,deep:!0}:t}function $(t){return t.defaultDecorator?t.defaultDecorator.enhancer:!1===t.deep?H:Y}Object.freeze(W),Object.freeze({deep:!1,name:void 0,defaultDecorator:void 0});var J=U(Y),Z=U((function(t,e,n){return null==t||Ye(t)||Ae(t)||De(t)||qe(t)?t:Array.isArray(t)?et.array(t,{name:n,deep:!1}):h(t)?et.object(t,void 0,{name:n,deep:!1}):m(t)?et.map(t,{name:n,deep:!1}):y(t)?et.set(t,{name:n,deep:!1}):o(!1)})),Q=U(H),X=U((function(t,e,n){return We(t,e)?e:t})),tt={box:function(t,e){arguments.length>2&&nt("box");var n=K(e);return new It(t,$(n),n.name,!0,n.equals)},shallowBox:function(t,e){return arguments.length>2&&nt("shallowBox"),et.box(t,{name:e,deep:!1})},array:function(t,e){arguments.length>2&&nt("array");var n=K(e);return new Oe(t,$(n),n.name)},shallowArray:function(t,e){return arguments.length>2&&nt("shallowArray"),et.array(t,{name:e,deep:!1})},map:function(t,e){arguments.length>2&&nt("map");var n=K(e);return new Ee(t,$(n),n.name)},shallowMap:function(t,e){return arguments.length>2&&nt("shallowMap"),et.map(t,{name:e,deep:!1})},set:function(t,e){arguments.length>2&&nt("set");var n=K(e);return new Me(t,$(n),n.name)},object:function(t,e,n){"string"==typeof arguments[1]&&nt("object");var a=K(n);return re({},t,e,a)},shallowObject:function(t,e){return"string"==typeof arguments[1]&&nt("shallowObject"),et.object(t,{},{name:e,deep:!1})},ref:Q,shallow:Z,deep:J,struct:X},et=function(t,e,n){if("string"==typeof arguments[1])return J.apply(null,arguments);if(ue(t))return t;var a=h(t)?et.object(t,e,n):Array.isArray(t)?et.array(t,e):m(t)?et.map(t,e):y(t)?et.set(t,e):t;if(a!==t)return a;o(!1)};function nt(t){o("Expected one or two arguments to observable."+t+". Did you accidentally try to use observable."+t+" as decorator?")}Object.keys(tt).forEach((function(t){return et[t]=tt[t]}));var at=B(!1,(function(t,e,n,a,r){var i,s,u,o;i=t,s=e,u=P({get:n.get,set:n.set},r[0]||{}),o=Fe(i),u.name=o.name+"."+s,u.context=i,o.values[s]=new Nt(u),Object.defineProperty(i,s,function(t){return Ge[t]||(Ge[t]={configurable:kt.computedConfigurable,enumerable:!1,get:function(){return Be(this).read(this,t)},set:function(e){Be(this).write(this,t,e)}})}(s))})),rt=at({equals:E.structural}),it=function(t,e,n){if("string"==typeof e)return at.apply(null,arguments);if(null!==t&&"object"==typeof t&&1===arguments.length)return at.apply(null,arguments);var a="object"==typeof e?e:{};return a.get=t,a.set="function"==typeof e?e:a.set,a.name=a.name||t.name||"",new Nt(a)};it.struct=rt;var st=function(t){return t[t.NOT_TRACKING=-1]="NOT_TRACKING",t[t.UP_TO_DATE=0]="UP_TO_DATE",t[t.POSSIBLY_STALE=1]="POSSIBLY_STALE",t[t.STALE=2]="STALE",t}({}),ut=function(t){return t[t.NONE=0]="NONE",t[t.LOG=1]="LOG",t[t.BREAK=2]="BREAK",t}({}),ot=function(){return function(t){this.cause=t}}();function lt(t){return t instanceof ot}function dt(t){switch(t.dependenciesState){case st.UP_TO_DATE:return!1;case st.NOT_TRACKING:case st.STALE:return!0;case st.POSSIBLY_STALE:for(var e=mt(!0),n=pt(),a=t.observing,r=a.length,i=0;i<r;i++){var s=a[i];if(Ct(s)){if(kt.disableErrorBoundaries)s.get();else try{s.get()}catch(u){return bt(n),yt(e),!0}if(t.dependenciesState===st.STALE)return bt(n),yt(e),!0}}return vt(t),bt(n),yt(e),!1}}function ct(t){var e=t.observers.length>0;kt.computationDepth>0&&e&&o(!1),kt.allowStateChanges||!e&&"strict"!==kt.enforceActions||o(!1)}function ft(t,e,n){var a=mt(!0);vt(t),t.newObserving=new Array(t.observing.length+100),t.unboundDepsCount=0,t.runId=++kt.runId;var r,i=kt.trackingDerivation;if(kt.trackingDerivation=t,!0===kt.disableErrorBoundaries)r=e.call(n);else try{r=e.call(n)}catch(s){r=new ot(s)}return kt.trackingDerivation=i,function(t){for(var e=t.observing,n=t.observing=t.newObserving,a=st.UP_TO_DATE,r=0,i=t.unboundDepsCount,s=0;s<i;s++)0===(u=n[s]).diffValue&&(u.diffValue=1,r!==s&&(n[r]=u),r++),u.dependenciesState>a&&(a=u.dependenciesState);for(n.length=r,t.newObserving=null,i=e.length;i--;)0===(u=e[i]).diffValue&&Lt(u,t),u.diffValue=0;for(;r--;){var u;1===(u=n[r]).diffValue&&(u.diffValue=0,Et(u,t))}a!==st.UP_TO_DATE&&(t.dependenciesState=a,t.onBecomeStale())}(t),yt(a),r}function ht(t){var e=t.observing;t.observing=[];for(var n=e.length;n--;)Lt(e[n],t);t.dependenciesState=st.NOT_TRACKING}function gt(t){var e=pt(),n=t();return bt(e),n}function pt(){var t=kt.trackingDerivation;return kt.trackingDerivation=null,t}function bt(t){kt.trackingDerivation=t}function mt(t){var e=kt.allowStateReads;return kt.allowStateReads=t,e}function yt(t){kt.allowStateReads=t}function vt(t){if(t.dependenciesState!==st.UP_TO_DATE){t.dependenciesState=st.UP_TO_DATE;for(var e=t.observing,n=e.length;n--;)e[n].lowestObserverState=st.UP_TO_DATE}}var xt=0,_t=1;function Tt(t,e){var n=function(){return wt(t,e,this,arguments)};return n.isMobxAction=!0,n}function wt(t,e,n,a){var r=function(t,e,n){var a=Bt()&&!!t,r=0;if(a){r=Date.now();var i=n&&n.length||0,s=new Array(i);if(i>0)for(var u=0;u<i;u++)s[u]=n[u];Yt({type:"action",name:t,object:e,arguments:s})}var o=pt();Pt();var l={prevDerivation:o,prevAllowStateChanges:Ot(!0),prevAllowStateReads:mt(!0),notifySpy:a,startTime:r,actionId:_t++,parentActionId:xt};return xt=l.actionId,l}(t,n,a);try{return e.apply(n,a)}catch(i){throw r.error=i,i}finally{!function(t){xt!==t.actionId&&o("invalid action stack. did you forget to finish an action?"),xt=t.parentActionId,void 0!==t.error&&(kt.suppressReactionErrors=!0),St(t.prevAllowStateChanges),yt(t.prevAllowStateReads),Mt(),bt(t.prevDerivation),t.notifySpy&&Ut({time:Date.now()-t.startTime}),kt.suppressReactionErrors=!1}(r)}}function Ot(t){var e=kt.allowStateChanges;return kt.allowStateChanges=t,e}function St(t){kt.allowStateChanges=t}Object.getOwnPropertyDescriptor((function(){}),"name");var It=function(t){function e(e,n,a,r,i){void 0===a&&(a="ObservableValue@"+u()),void 0===r&&(r=!0),void 0===i&&(i=E.default);var s=t.call(this,a)||this;return s.enhancer=n,s.name=a,s.equals=i,s.hasUnreportedChange=!1,s.value=n(e,void 0,a),r&&Bt()&&zt({type:"create",name:s.name,newValue:""+s.value}),s}return D(e,t),e.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},e.prototype.set=function(t){var e=this.value;if((t=this.prepareNewValue(t))!==kt.UNCHANGED){var n=Bt();n&&Yt({type:"update",name:this.name,newValue:t,oldValue:e}),this.setNewValue(t),n&&Ut()}},e.prototype.prepareNewValue=function(t){if(ct(this),de(this)){var e=fe(this,{object:this,type:"update",newValue:t});if(!e)return kt.UNCHANGED;t=e.newValue}return t=this.enhancer(t,this.value,this.name),this.equals(this.value,t)?kt.UNCHANGED:t},e.prototype.setNewValue=function(t){var e=this.value;this.value=t,this.reportChanged(),he(this)&&pe(this,{type:"update",object:this,newValue:t,oldValue:e})},e.prototype.get=function(){return this.reportObserved(),this.dehanceValue(this.value)},e.prototype.intercept=function(t){return ce(this,t)},e.prototype.observe=function(t,e){return e&&t({object:this,type:"update",newValue:this.value,oldValue:void 0}),ge(this,t)},e.prototype.toJSON=function(){return this.get()},e.prototype.toString=function(){return this.name+"["+this.value+"]"},e.prototype.valueOf=function(){return _(this.get())},e}(C);It.prototype[x()]=It.prototype.valueOf,b("ObservableValue",It);var Nt=function(){function t(t){this.dependenciesState=st.NOT_TRACKING,this.observing=[],this.newObserving=null,this.isBeingObserved=!1,this.isPendingUnobservation=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.runId=0,this.lastAccessedBy=0,this.lowestObserverState=st.UP_TO_DATE,this.unboundDepsCount=0,this.__mapid="#"+u(),this.value=new ot(null),this.isComputing=!1,this.isRunningSetter=!1,this.isTracing=ut.NONE,l(t.get,"missing option for computed: get"),this.derivation=t.get,this.name=t.name||"ComputedValue@"+u(),t.set&&(this.setter=Tt(this.name+"-setter",t.set)),this.equals=t.equals||(t.compareStructural||t.struct?E.structural:E.default),this.scope=t.context,this.requiresReaction=!!t.requiresReaction,this.keepAlive=!!t.keepAlive}return t.prototype.onBecomeStale=function(){!function(t){if(t.lowestObserverState===st.UP_TO_DATE){t.lowestObserverState=st.POSSIBLY_STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===st.UP_TO_DATE&&(a.dependenciesState=st.POSSIBLY_STALE,a.isTracing!==ut.NONE&&jt(a,t),a.onBecomeStale())}}}(this)},t.prototype.onBecomeUnobserved=function(){},t.prototype.onBecomeObserved=function(){},t.prototype.get=function(){this.isComputing&&o("Cycle detected in computation "+this.name+": "+this.derivation),0!==kt.inBatch||0!==this.observers.length||this.keepAlive?(qt(this),dt(this)&&this.trackAndCompute()&&function(t){if(t.lowestObserverState!==st.STALE){t.lowestObserverState=st.STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===st.POSSIBLY_STALE?a.dependenciesState=st.STALE:a.dependenciesState===st.UP_TO_DATE&&(t.lowestObserverState=st.UP_TO_DATE)}}}(this)):dt(this)&&(this.warnAboutUntrackedRead(),Pt(),this.value=this.computeValue(!1),Mt());var t=this.value;if(lt(t))throw t.cause;return t},t.prototype.peek=function(){var t=this.computeValue(!1);if(lt(t))throw t.cause;return t},t.prototype.set=function(t){if(this.setter){l(!this.isRunningSetter,"The setter of computed value '"+this.name+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"),this.isRunningSetter=!0;try{this.setter.call(this.scope,t)}finally{this.isRunningSetter=!1}}else l(!1,!1)},t.prototype.trackAndCompute=function(){Bt()&&zt({object:this.scope,type:"compute",name:this.name});var t=this.value,e=this.dependenciesState===st.NOT_TRACKING,n=this.computeValue(!0),a=e||lt(t)||lt(n)||!this.equals(t,n);return a&&(this.value=n),a},t.prototype.computeValue=function(t){var e;if(this.isComputing=!0,kt.computationDepth++,t)e=ft(this,this.derivation,this.scope);else if(!0===kt.disableErrorBoundaries)e=this.derivation.call(this.scope);else try{e=this.derivation.call(this.scope)}catch(n){e=new ot(n)}return kt.computationDepth--,this.isComputing=!1,e},t.prototype.suspend=function(){this.keepAlive||(ht(this),this.value=void 0)},t.prototype.observe=function(t,e){var n=this,a=!0,r=void 0;return Qt((function(){var i=n.get();if(!a||e){var s=pt();t({type:"update",object:n,newValue:i,oldValue:r}),bt(s)}a=!1,r=i}))},t.prototype.warnAboutUntrackedRead=function(){},t.prototype.toJSON=function(){return this.get()},t.prototype.toString=function(){return this.name+"["+this.derivation.toString()+"]"},t.prototype.valueOf=function(){return _(this.get())},t}();Nt.prototype[x()]=Nt.prototype.valueOf;var Ct=b("ComputedValue",Nt),Rt=function(){return function(){this.version=5,this.UNCHANGED={},this.trackingDerivation=null,this.computationDepth=0,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!0,this.allowStateReads=!0,this.enforceActions=!1,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.computedConfigurable=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1}}(),At=!0,kt=function(){var t=s();return t.__mobxInstanceCount>0&&!t.__mobxGlobals&&(At=!1),t.__mobxGlobals&&t.__mobxGlobals.version!==(new Rt).version&&(At=!1),At?t.__mobxGlobals?(t.__mobxInstanceCount+=1,t.__mobxGlobals.UNCHANGED||(t.__mobxGlobals.UNCHANGED={}),t.__mobxGlobals):(t.__mobxInstanceCount=1,t.__mobxGlobals=new Rt):(setTimeout((function(){o("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`")}),1),new Rt)}();function Et(t,e){var n=t.observers.length;n&&(t.observersIndexes[e.__mapid]=n),t.observers[n]=e,t.lowestObserverState>e.dependenciesState&&(t.lowestObserverState=e.dependenciesState)}function Lt(t,e){if(1===t.observers.length)t.observers.length=0,Dt(t);else{var n=t.observers,a=t.observersIndexes,r=n.pop();if(r!==e){var i=a[e.__mapid]||0;i?a[r.__mapid]=i:delete a[r.__mapid],n[i]=r}delete a[e.__mapid]}}function Dt(t){!1===t.isPendingUnobservation&&(t.isPendingUnobservation=!0,kt.pendingUnobservations.push(t))}function Pt(){kt.inBatch++}function Mt(){if(0==--kt.inBatch){Vt();for(var t=kt.pendingUnobservations,e=0;e<t.length;e++){var n=t[e];n.isPendingUnobservation=!1,0===n.observers.length&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBecomeUnobserved()),n instanceof Nt&&n.suspend())}kt.pendingUnobservations=[]}}function qt(t){var e=kt.trackingDerivation;return null!==e?(e.runId!==t.lastAccessedBy&&(t.lastAccessedBy=e.runId,e.newObserving[e.unboundDepsCount++]=t,t.isBeingObserved||(t.isBeingObserved=!0,t.onBecomeObserved())),!0):(0===t.observers.length&&kt.inBatch>0&&Dt(t),!1)}function jt(t,e){if(console.log("[mobx.trace] '"+t.name+"' is invalidated due to a change in: '"+e.name+"'"),t.isTracing===ut.BREAK){var n=[];!function t(e,n,a){n.length>=1e3?n.push("(and many more)"):(n.push(""+new Array(a).join("\t")+e.name),e.dependencies&&e.dependencies.forEach((function(e){return t(e,n,a+1)})))}((a=t,ie(He(a,void 0))),n,1),new Function("debugger;\n/*\nTracing '"+t.name+"'\n\nYou are entering this break point because derivation '"+t.name+"' is being traced and '"+e.name+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(t instanceof Nt?t.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n    ")()}var a}var Ft=function(){function t(t,e,n,a){void 0===t&&(t="Reaction@"+u()),void 0===a&&(a=!1),this.name=t,this.onInvalidate=e,this.errorHandler=n,this.requiresObservable=a,this.observing=[],this.newObserving=[],this.dependenciesState=st.NOT_TRACKING,this.diffValue=0,this.runId=0,this.unboundDepsCount=0,this.__mapid="#"+u(),this.isDisposed=!1,this._isScheduled=!1,this._isTrackPending=!1,this._isRunning=!1,this.isTracing=ut.NONE}return t.prototype.onBecomeStale=function(){this.schedule()},t.prototype.schedule=function(){this._isScheduled||(this._isScheduled=!0,kt.pendingReactions.push(this),Vt())},t.prototype.isScheduled=function(){return this._isScheduled},t.prototype.runReaction=function(){if(!this.isDisposed){if(Pt(),this._isScheduled=!1,dt(this)){this._isTrackPending=!0;try{this.onInvalidate(),this._isTrackPending&&Bt()&&zt({name:this.name,type:"scheduled-reaction"})}catch(t){this.reportExceptionInDerivation(t)}}Mt()}},t.prototype.track=function(t){Pt();var e,n=Bt();n&&(e=Date.now(),Yt({name:this.name,type:"reaction"})),this._isRunning=!0;var a=ft(this,t,void 0);this._isRunning=!1,this._isTrackPending=!1,this.isDisposed&&ht(this),lt(a)&&this.reportExceptionInDerivation(a.cause),n&&Ut({time:Date.now()-e}),Mt()},t.prototype.reportExceptionInDerivation=function(t){var e=this;if(this.errorHandler)this.errorHandler(t,this);else{if(kt.disableErrorBoundaries)throw t;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";kt.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name+"' suppressed, fix error of causing action below)"):console.error(n,t),Bt()&&zt({type:"error",name:this.name,message:n,error:""+t}),kt.globalReactionErrorHandlers.forEach((function(n){return n(t,e)}))}},t.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this._isRunning||(Pt(),ht(this),Mt()))},t.prototype.getDisposer=function(){var t=this.dispose.bind(this);return t.$mobx=this,t},t.prototype.toString=function(){return"Reaction["+this.name+"]"},t.prototype.trace=function(t){void 0===t&&(t=!1),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=!1;"boolean"==typeof t[t.length-1]&&(n=t.pop());var a=oe(t);if(!a)return o(!1);a.isTracing===ut.NONE&&console.log("[mobx.trace] '"+a.name+"' tracing enabled"),a.isTracing=n?ut.BREAK:ut.LOG}(this,t)},t}();function Vt(){kt.inBatch>0||kt.isRunningReactions||function(){kt.isRunningReactions=!0;for(var t=kt.pendingReactions,e=0;t.length>0;){100==++e&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+t[0]),t.splice(0));for(var n=t.splice(0),a=0,r=n.length;a<r;a++)n[a].runReaction()}kt.isRunningReactions=!1}()}var Gt=b("Reaction",Ft);function Bt(){return!!kt.spyListeners.length}function zt(t){if(kt.spyListeners.length)for(var e=kt.spyListeners,n=0,a=e.length;n<a;n++)e[n](t)}function Yt(t){zt(P(P({},t),{spyReportStart:!0}))}var Ht={spyReportEnd:!0};function Ut(t){zt(t?P(P({},t),{spyReportEnd:!0}):Ht)}function Wt(){o(!1)}function Kt(t){return function(e,n,a){if(a){if(a.value)return{value:Tt(t,a.value),enumerable:!1,configurable:!0,writable:!0};var r=a.initializer;return{enumerable:!1,configurable:!0,writable:!0,initializer:function(){return Tt(t,r.call(this))}}}return $t(t).apply(this,arguments)}}function $t(t){return function(e,n,a){Object.defineProperty(e,n,{configurable:!0,enumerable:!1,get:function(){},set:function(e){g(this,n,Jt(t,e))}})}}var Jt=function(t,e,n,a){return 1===arguments.length&&"function"==typeof t?Tt(t.name||"<unnamed action>",t):2===arguments.length&&"function"==typeof e?Tt(t,e):1===arguments.length&&"string"==typeof t?Kt(t):!0!==a?Kt(e).apply(null,arguments):void(t[e]=Tt(t.name||e,n.value))};function Zt(t,e,n){g(t,e,Tt(e,n.bind(t)))}function Qt(t,e){void 0===e&&(e=r);var n,a=e&&e.name||t.name||"Autorun@"+u();if(e.scheduler||e.delay){var i=te(e),s=!1;n=new Ft(a,(function(){s||(s=!0,i((function(){s=!1,n.isDisposed||n.track(o)})))}),e.onError,e.requiresObservable)}else n=new Ft(a,(function(){this.track(o)}),e.onError,e.requiresObservable);function o(){t(n)}return n.schedule(),n.getDisposer()}Jt.bound=function(t,e,n,a){return!0===a?(Zt(t,e,n.value),null):n?{configurable:!0,enumerable:!1,get:function(){return Zt(this,e,n.value||n.initializer.call(this)),this[e]},set:Wt}:{enumerable:!1,configurable:!0,set:function(t){Zt(this,e,t)},get:function(){}}};var Xt=function(t){return t()};function te(t){return t.scheduler?t.scheduler:t.delay?function(e){return setTimeout(e,t.delay)}:Xt}function ee(t,e,n){void 0===n&&(n=r),"boolean"==typeof n&&(n={fireImmediately:n});var a,i,s,o=n.name||"Reaction@"+u(),l=Jt(o,n.onError?(a=n.onError,i=e,function(){try{return i.apply(this,arguments)}catch(t){a.call(this,t)}}):e),d=!n.scheduler&&!n.delay,c=te(n),f=!0,h=!1,g=n.compareStructural?E.structural:n.equals||E.default,p=new Ft(o,(function(){f||d?b():h||(h=!0,c(b))}),n.onError,n.requiresObservable);function b(){if(h=!1,!p.isDisposed){var e=!1;p.track((function(){var n=t(p);e=f||!g(s,n),s=n})),f&&n.fireImmediately&&l(s,p),f||!0!==e||l(s,p),f&&(f=!1)}}return p.schedule(),p.getDisposer()}function ne(t,e,n){return ae("onBecomeUnobserved",t,e,n)}function ae(t,e,n,a){var r="function"==typeof a?He(e,n):He(e),i="function"==typeof a?a:n,s=r[t];return"function"!=typeof s?o(!1):(r[t]=function(){s.call(this),i.call(this)},function(){r[t]=s})}function re(t,e,n,a){var r=(a=K(a)).defaultDecorator||(!1===a.deep?Q:J);G(t),Fe(t,a.name,r.enhancer),Pt();try{for(var i=Object.getOwnPropertyNames(e),s=0,u=i.length;s<u;s++){var o=i[s],l=Object.getOwnPropertyDescriptor(e,o),d=(n&&o in n?n[o]:l.get?at:r)(t,o,l,!0);d&&Object.defineProperty(t,o,d)}}finally{Mt()}return t}function ie(t){var e,n,a={name:t.name};return t.observing&&t.observing.length>0&&(a.dependencies=(e=t.observing,n=[],e.forEach((function(t){-1===n.indexOf(t)&&n.push(t)})),n).map(ie)),a}function se(t,e){if(null==t)return!1;if(void 0!==e){if(Ye(t)){var n=t.$mobx;return n.values&&!!n.values[e]}return!1}return Ye(t)||!!t.$mobx||R(t)||Gt(t)||Ct(t)}function ue(t){return 1!==arguments.length&&o(!1),se(t)}function oe(t){switch(t.length){case 0:return kt.trackingDerivation;case 1:return He(t[0]);case 2:return He(t[0],t[1])}}function le(t,e){void 0===e&&(e=void 0),Pt();try{return t.apply(e)}finally{Mt()}}function de(t){return void 0!==t.interceptors&&t.interceptors.length>0}function ce(t,e){var n=t.interceptors||(t.interceptors=[]);return n.push(e),d((function(){var t=n.indexOf(e);-1!==t&&n.splice(t,1)}))}function fe(t,e){var n=pt();try{var a=t.interceptors;if(a)for(var r=0,i=a.length;r<i&&(l(!(e=a[r](e))||e.type,"Intercept handlers should return nothing or a change object"),e);r++);return e}finally{bt(n)}}function he(t){return void 0!==t.changeListeners&&t.changeListeners.length>0}function ge(t,e){var n=t.changeListeners||(t.changeListeners=[]);return n.push(e),d((function(){var t=n.indexOf(e);-1!==t&&n.splice(t,1)}))}function pe(t,e){var n=pt(),a=t.changeListeners;if(a){for(var r=0,i=(a=a.slice()).length;r<i;r++)a[r](e);bt(n)}}Object.create(Error.prototype);var be,me,ye,ve,xe=(be=!1,me={},Object.defineProperty(me,"0",{set:function(){be=!0}}),Object.create(me)[0]=1,!1===be),_e=0,Te=function(){return function(){}}();ye=Te,ve=Array.prototype,void 0!==Object.setPrototypeOf?Object.setPrototypeOf(ye.prototype,ve):void 0!==ye.prototype.__proto__?ye.prototype.__proto__=ve:ye.prototype=ve,Object.isFrozen(Array)&&["constructor","push","shift","concat","pop","unshift","replace","find","findIndex","splice","reverse","sort"].forEach((function(t){Object.defineProperty(Te.prototype,t,{configurable:!0,writable:!0,value:Array.prototype[t]})}));var we=function(){function t(t,e,n,a){this.array=n,this.owned=a,this.values=[],this.lastKnownLength=0,this.atom=new C(t||"ObservableArray@"+u()),this.enhancer=function(n,a){return e(n,a,t+"[..]")}}return t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.dehanceValues=function(t){return void 0!==this.dehancer&&t.length>0?t.map(this.dehancer):t},t.prototype.intercept=function(t){return ce(this,t)},t.prototype.observe=function(t,e){return void 0===e&&(e=!1),e&&t({object:this.array,type:"splice",index:0,added:this.values.slice(),addedCount:this.values.length,removed:[],removedCount:0}),ge(this,t)},t.prototype.getArrayLength=function(){return this.atom.reportObserved(),this.values.length},t.prototype.setArrayLength=function(t){if("number"!=typeof t||t<0)throw new Error("[mobx.array] Out of range: "+t);var e=this.values.length;if(t!==e)if(t>e){for(var n=new Array(t-e),a=0;a<t-e;a++)n[a]=void 0;this.spliceWithArray(e,0,n)}else this.spliceWithArray(t,e-t)},t.prototype.updateArrayLength=function(t,e){if(t!==this.lastKnownLength)throw new Error("[mobx] Modification exception: the internal structure of an observable array was changed. Did you use peek() to change it?");this.lastKnownLength+=e,e>0&&t+e+1>_e&&Ce(t+e+1)},t.prototype.spliceWithArray=function(t,e,n){var r=this;ct(this.atom);var i=this.values.length;if(void 0===t?t=0:t>i?t=i:t<0&&(t=Math.max(0,i+t)),e=1===arguments.length?i-t:null==e?0:Math.max(0,Math.min(e,i-t)),void 0===n&&(n=a),de(this)){var s=fe(this,{object:this.array,type:"splice",index:t,removedCount:e,added:n});if(!s)return a;e=s.removedCount,n=s.added}var u=(n=0===n.length?n:n.map((function(t){return r.enhancer(t,void 0)}))).length-e;this.updateArrayLength(i,u);var o=this.spliceItemsIntoValues(t,e,n);return 0===e&&0===n.length||this.notifyArraySplice(t,n,o),this.dehanceValues(o)},t.prototype.spliceItemsIntoValues=function(t,e,n){var a;if(n.length<1e4)return(a=this.values).splice.apply(a,q([t,e],n));var r=this.values.slice(t,t+e);return this.values=this.values.slice(0,t).concat(n,this.values.slice(t+e)),r},t.prototype.notifyArrayChildUpdate=function(t,e,n){var a=!this.owned&&Bt(),r=he(this),i=r||a?{object:this.array,type:"update",index:t,newValue:e,oldValue:n}:null;a&&Yt(P(P({},i),{name:this.atom.name})),this.atom.reportChanged(),r&&pe(this,i),a&&Ut()},t.prototype.notifyArraySplice=function(t,e,n){var a=!this.owned&&Bt(),r=he(this),i=r||a?{object:this.array,type:"splice",index:t,removed:n,added:e,removedCount:n.length,addedCount:e.length}:null;a&&Yt(P(P({},i),{name:this.atom.name})),this.atom.reportChanged(),r&&pe(this,i),a&&Ut()},t}(),Oe=function(t){function e(e,n,a,r){void 0===a&&(a="ObservableArray@"+u()),void 0===r&&(r=!1);var i=t.call(this)||this,s=new we(a,n,i,r);if(p(i,"$mobx",s),e&&e.length){var o=Ot(!0);i.spliceWithArray(0,0,e),St(o)}return xe&&Object.defineProperty(s.array,"0",Se),i}return D(e,t),e.prototype.intercept=function(t){return this.$mobx.intercept(t)},e.prototype.observe=function(t,e){return void 0===e&&(e=!1),this.$mobx.observe(t,e)},e.prototype.clear=function(){return this.splice(0)},e.prototype.concat=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return this.$mobx.atom.reportObserved(),Array.prototype.concat.apply(this.peek(),t.map((function(t){return Ae(t)?t.peek():t})))},e.prototype.replace=function(t){return this.$mobx.spliceWithArray(0,this.$mobx.values.length,t)},e.prototype.toJS=function(){return this.slice()},e.prototype.toJSON=function(){return this.toJS()},e.prototype.peek=function(){return this.$mobx.atom.reportObserved(),this.$mobx.dehanceValues(this.$mobx.values)},e.prototype.find=function(t,e,n){void 0===n&&(n=0);var a=this.findIndex.apply(this,arguments);return-1===a?void 0:this.get(a)},e.prototype.findIndex=function(t,e,n){void 0===n&&(n=0);for(var a=this.peek(),r=a.length,i=n;i<r;i++)if(t.call(e,a[i],i,this))return i;return-1},e.prototype.splice=function(t,e){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];switch(arguments.length){case 0:return[];case 1:return this.$mobx.spliceWithArray(t);case 2:return this.$mobx.spliceWithArray(t,e)}return this.$mobx.spliceWithArray(t,e,n)},e.prototype.spliceWithArray=function(t,e,n){return this.$mobx.spliceWithArray(t,e,n)},e.prototype.push=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this.$mobx;return n.spliceWithArray(n.values.length,0,t),n.values.length},e.prototype.pop=function(){return this.splice(Math.max(this.$mobx.values.length-1,0),1)[0]},e.prototype.shift=function(){return this.splice(0,1)[0]},e.prototype.unshift=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this.$mobx;return n.spliceWithArray(0,0,t),n.values.length},e.prototype.reverse=function(){var t=this.slice();return t.reverse.apply(t,arguments)},e.prototype.sort=function(t){var e=this.slice();return e.sort.apply(e,arguments)},e.prototype.remove=function(t){var e=this.$mobx.dehanceValues(this.$mobx.values).indexOf(t);return e>-1&&(this.splice(e,1),!0)},e.prototype.move=function(t,e){function n(t){if(t<0)throw new Error("[mobx.array] Index out of bounds: "+t+" is negative");var e=this.$mobx.values.length;if(t>=e)throw new Error("[mobx.array] Index out of bounds: "+t+" is not smaller than "+e)}if(n.call(this,t),n.call(this,e),t!==e){var a,r=this.$mobx.values;a=t<e?q(r.slice(0,t),r.slice(t+1,e+1),[r[t]],r.slice(e+1)):q(r.slice(0,e),[r[t]],r.slice(e,t),r.slice(t+1)),this.replace(a)}},e.prototype.get=function(t){var e=this.$mobx;if(e){if(t<e.values.length)return e.atom.reportObserved(),e.dehanceValue(e.values[t]);console.warn("[mobx.array] Attempt to read an array index ("+t+") that is out of bounds ("+e.values.length+"). Please check length first. Out of bound indices will not be tracked by MobX")}},e.prototype.set=function(t,e){var n=this.$mobx,a=n.values;if(t<a.length){ct(n.atom);var r=a[t];if(de(n)){var i=fe(n,{type:"update",object:this,index:t,newValue:e});if(!i)return;e=i.newValue}(e=n.enhancer(e,r))!==r&&(a[t]=e,n.notifyArrayChildUpdate(t,e,r))}else{if(t!==a.length)throw new Error("[mobx.array] Index out of bounds, "+t+" is larger than "+a.length);n.spliceWithArray(t,0,[e])}},e}(Te);O(Oe.prototype,(function(){this.$mobx.atom.reportObserved();var t=this,e=0;return S({next:function(){return e<t.length?{value:t[e++],done:!1}:{done:!0,value:void 0}}})})),Object.defineProperty(Oe.prototype,"length",{enumerable:!1,configurable:!0,get:function(){return this.$mobx.getArrayLength()},set:function(t){this.$mobx.setArrayLength(t)}}),g(Oe.prototype,I(),"Array"),["indexOf","join","lastIndexOf","slice","toString","toLocaleString"].forEach((function(t){var e=Array.prototype[t];l("function"==typeof e,"Base function not defined on Array prototype: '"+t+"'"),g(Oe.prototype,t,(function(){return e.apply(this.peek(),arguments)}))})),["every","filter","forEach","map","some"].forEach((function(t){l("function"==typeof Array.prototype[t],"Base function not defined on Array prototype: '"+t+"'"),g(Oe.prototype,t,(function(e,n){var a=this,r=this.$mobx;return r.atom.reportObserved(),r.dehanceValues(r.values)[t]((function(t,r){return e.call(n,t,r,a)}),n)}))})),["reduce","reduceRight"].forEach((function(t){g(Oe.prototype,t,(function(){var e=this,n=this.$mobx;n.atom.reportObserved();var a=arguments[0];return arguments[0]=function(t,r,i){return r=n.dehanceValue(r),a(t,r,i,e)},n.values[t].apply(n.values,arguments)}))})),function(t,e){for(var n=0;n<e.length;n++)g(t,e[n],t[e[n]])}(Oe.prototype,["constructor","intercept","observe","clear","concat","get","replace","toJS","toJSON","peek","find","findIndex","splice","spliceWithArray","push","pop","set","shift","unshift","reverse","sort","remove","move","toString","toLocaleString"]);var Se=Ie(0);function Ie(t){return{enumerable:!1,configurable:!1,get:function(){return this.get(t)},set:function(e){this.set(t,e)}}}function Ne(t){Object.defineProperty(Oe.prototype,""+t,Ie(t))}function Ce(t){for(var e=_e;e<t;e++)Ne(e);_e=t}Ce(1e3);var Re=b("ObservableArrayAdministration",we);function Ae(t){return f(t)&&Re(t.$mobx)}var ke={},Ee=function(){function t(t,e,n){if(void 0===e&&(e=Y),void 0===n&&(n="ObservableMap@"+u()),this.enhancer=e,this.name=n,this.$mobx=ke,this._keysAtom=A(this.name+".keys()"),"function"!=typeof Map)throw new Error("mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js");this._data=new Map,this._hasMap=new Map,this.merge(t)}return t.prototype._has=function(t){return this._data.has(t)},t.prototype.has=function(t){var e=this;if(!kt.trackingDerivation)return this._has(t);var n=this._hasMap.get(t);if(!n){var a=n=new It(this._has(t),H,this.name+"."+Le(t)+"?",!1);this._hasMap.set(t,a),ne(a,(function(){return e._hasMap.delete(t)}))}return n.get()},t.prototype.set=function(t,e){var n=this._has(t);if(de(this)){var a=fe(this,{type:n?"update":"add",object:this,newValue:e,name:t});if(!a)return this;e=a.newValue}return n?this._updateValue(t,e):this._addValue(t,e),this},t.prototype.delete=function(t){var e=this;if(ct(this._keysAtom),de(this)&&!(r=fe(this,{type:"delete",object:this,name:t})))return!1;if(this._has(t)){var n=Bt(),a=he(this),r=a||n?{type:"delete",object:this,oldValue:this._data.get(t).value,name:t}:null;return n&&Yt(P(P({},r),{name:this.name,key:t})),le((function(){e._keysAtom.reportChanged(),e._updateHasMapEntry(t,!1),e._data.get(t).setNewValue(void 0),e._data.delete(t)})),a&&pe(this,r),n&&Ut(),!0}return!1},t.prototype._updateHasMapEntry=function(t,e){var n=this._hasMap.get(t);n&&n.setNewValue(e)},t.prototype._updateValue=function(t,e){var n=this._data.get(t);if((e=n.prepareNewValue(e))!==kt.UNCHANGED){var a=Bt(),r=he(this),i=r||a?{type:"update",object:this,oldValue:n.value,name:t,newValue:e}:null;a&&Yt(P(P({},i),{name:this.name,key:t})),n.setNewValue(e),r&&pe(this,i),a&&Ut()}},t.prototype._addValue=function(t,e){var n=this;ct(this._keysAtom),le((function(){var a=new It(e,n.enhancer,n.name+"."+Le(t),!1);n._data.set(t,a),e=a.value,n._updateHasMapEntry(t,!0),n._keysAtom.reportChanged()}));var a=Bt(),r=he(this),i=r||a?{type:"add",object:this,name:t,newValue:e}:null;a&&Yt(P(P({},i),{name:this.name,key:t})),r&&pe(this,i),a&&Ut()},t.prototype.get=function(t){return this.has(t)?this.dehanceValue(this._data.get(t).get()):this.dehanceValue(void 0)},t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.keys=function(){return this._keysAtom.reportObserved(),this._data.keys()},t.prototype.values=function(){var t=this,e=this.keys();return S({next:function(){var n=e.next(),a=n.done;return{done:a,value:a?void 0:t.get(n.value)}}})},t.prototype.entries=function(){var t=this,e=this.keys();return S({next:function(){var n=e.next(),a=n.done,r=n.value;return{done:a,value:a?void 0:[r,t.get(r)]}}})},t.prototype.forEach=function(t,e){var n=this;this._keysAtom.reportObserved(),this._data.forEach((function(a,r){return t.call(e,n.get(r),r,n)}))},t.prototype.merge=function(t){var e=this;return De(t)&&(t=t.toJS()),le((function(){var n=Ot(!0);try{h(t)?Object.keys(t).forEach((function(n){return e.set(n,t[n])})):Array.isArray(t)?t.forEach((function(t){var n=M(t,2);return e.set(n[0],n[1])})):m(t)?t.constructor!==Map?o("Cannot initialize from classes that inherit from Map: "+t.constructor.name):t.forEach((function(t,n){return e.set(n,t)})):null!=t&&o("Cannot initialize map from "+t)}finally{St(n)}})),this},t.prototype.clear=function(){var t=this;le((function(){gt((function(){t._data.forEach((function(e,n){return t.delete(n)}))}))}))},t.prototype.replace=function(t){var e=this;return le((function(){var n=function(t){if(m(t)||De(t))return t;if(Array.isArray(t))return new Map(t);if(h(t)){var e=new Map;for(var n in t)e.set(n,t[n]);return e}return o("Cannot convert to map from '"+t+"'")}(t),a=new Map,r=!1;if(T(e._data.keys(),(function(t){if(!n.has(t))if(e.delete(t))r=!0;else{var i=e._data.get(t);a.set(t,i)}})),T(n.entries(),(function(t){var n=M(t,2),i=n[0],s=n[1],u=e._data.has(i);if(e.set(i,s),e._data.has(i)){var o=e._data.get(i);a.set(i,o),u||(r=!0)}})),!r)if(e._data.size!==a.size)e._keysAtom.reportChanged();else for(var i=e._data.keys(),s=a.keys(),u=i.next(),l=s.next();!u.done;){if(u.value!==l.value){e._keysAtom.reportChanged();break}u=i.next(),l=s.next()}e._data=a})),this},Object.defineProperty(t.prototype,"size",{get:function(){return this._keysAtom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),t.prototype.toPOJO=function(){var t=this,e={};return this.forEach((function(n,a){return e["symbol"==typeof a?a:Le(a)]=t.get(a)})),e},t.prototype.toJS=function(){return new Map(this)},t.prototype.toJSON=function(){return this.toPOJO()},t.prototype.toString=function(){var t=this;return this.name+"[{ "+v(this.keys()).map((function(e){return Le(e)+": "+t.get(e)})).join(", ")+" }]"},t.prototype.observe=function(t,e){return ge(this,t)},t.prototype.intercept=function(t){return ce(this,t)},t}();function Le(t){return t&&t.toString?t.toString():new String(t).toString()}O(Ee.prototype,(function(){return this.entries()})),p(Ee.prototype,I(),"Map");var De=b("ObservableMap",Ee),Pe={},Me=function(){function t(t,e,n){if(void 0===e&&(e=Y),void 0===n&&(n="ObservableSet@"+u()),this.name=n,this.$mobx=Pe,this._data=new Set,this._atom=A(this.name),"function"!=typeof Set)throw new Error("mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js");this.enhancer=function(t,a){return e(t,a,n)},t&&this.replace(t)}return t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.clear=function(){var t=this;le((function(){gt((function(){t._data.forEach((function(e){t.delete(e)}))}))}))},t.prototype.forEach=function(t,e){var n=this;this._atom.reportObserved(),this._data.forEach((function(a){t.call(e,a,a,n)}))},Object.defineProperty(t.prototype,"size",{get:function(){return this._atom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),t.prototype.add=function(t){var e=this;if(ct(this._atom),de(this)&&!(r=fe(this,{type:"add",object:this,newValue:t})))return this;if(!this.has(t)){le((function(){e._data.add(e.enhancer(t,void 0)),e._atom.reportChanged()}));var n=Bt(),a=he(this),r=a||n?{type:"add",object:this,newValue:t}:null;a&&pe(this,r)}return this},t.prototype.delete=function(t){var e=this;if(de(this)&&!(r=fe(this,{type:"delete",object:this,oldValue:t})))return!1;if(this.has(t)){var n=Bt(),a=he(this),r=a||n?{type:"delete",object:this,oldValue:t}:null;return le((function(){e._atom.reportChanged(),e._data.delete(t)})),a&&pe(this,r),!0}return!1},t.prototype.has=function(t){return this._atom.reportObserved(),this._data.has(this.dehanceValue(t))},t.prototype.entries=function(){var t=0,e=v(this.keys()),n=v(this.values());return S({next:function(){var a=t;return t+=1,a<n.length?{value:[e[a],n[a]],done:!1}:{done:!0}}})},t.prototype.keys=function(){return this.values()},t.prototype.values=function(){this._atom.reportObserved();var t,e=this,n=0;return void 0!==this._data.values?t=v(this._data.values()):(t=[],this._data.forEach((function(e){return t.push(e)}))),S({next:function(){return n<t.length?{value:e.dehanceValue(t[n++]),done:!1}:{done:!0}}})},t.prototype.replace=function(t){var e=this;return qe(t)&&(t=t.toJS()),le((function(){var n=Ot(!0);try{Array.isArray(t)||y(t)?(e.clear(),t.forEach((function(t){return e.add(t)}))):null!=t&&o("Cannot initialize set from "+t)}finally{St(n)}})),this},t.prototype.observe=function(t,e){return ge(this,t)},t.prototype.intercept=function(t){return ce(this,t)},t.prototype.toJS=function(){return new Set(this)},t.prototype.toString=function(){return this.name+"[ "+v(this.keys()).join(", ")+" ]"},t}();O(Me.prototype,(function(){return this.values()})),p(Me.prototype,I(),"Set");var qe=b("ObservableSet",Me),je=function(){function t(t,e,n){this.target=t,this.name=e,this.defaultEnhancer=n,this.values={}}return t.prototype.read=function(t,e){if(this.target===t||(this.illegalAccess(t,e),this.values[e]))return this.values[e].get()},t.prototype.write=function(t,e,n){var a=this.target;a!==t&&this.illegalAccess(t,e);var r=this.values[e];if(r instanceof Nt)r.set(n);else{if(de(this)){if(!(u=fe(this,{type:"update",object:a,name:e,newValue:n})))return;n=u.newValue}if((n=r.prepareNewValue(n))!==kt.UNCHANGED){var i=he(this),s=Bt(),u=i||s?{type:"update",object:a,oldValue:r.value,name:e,newValue:n}:null;s&&Yt(P(P({},u),{name:this.name,key:e})),r.setNewValue(n),i&&pe(this,u),s&&Ut()}}},t.prototype.remove=function(t){if(this.values[t]){var e=this.target;if(de(this)&&!(i=fe(this,{object:e,name:t,type:"remove"})))return;try{Pt();var n=he(this),a=Bt(),r=this.values[t].get();this.keys&&this.keys.remove(t),delete this.values[t],delete this.target[t];var i=n||a?{type:"remove",object:e,oldValue:r,name:t}:null;a&&Yt(P(P({},i),{name:this.name,key:t})),n&&pe(this,i),a&&Ut()}finally{Mt()}}},t.prototype.illegalAccess=function(t,e){console.warn("Property '"+e+"' of '"+t+"' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner")},t.prototype.observe=function(t,e){return ge(this,t)},t.prototype.intercept=function(t){return ce(this,t)},t.prototype.getKeys=function(){var t=this;return void 0===this.keys&&(this.keys=new Oe(Object.keys(this.values).filter((function(e){return t.values[e]instanceof It})),H,"keys("+this.name+")",!0)),this.keys.slice()},t}();function Fe(t,e,n){void 0===e&&(e=""),void 0===n&&(n=Y);var a=t.$mobx;return a||(h(t)||(e=(t.constructor.name||"ObservableObject")+"@"+u()),e||(e="ObservableObject@"+u()),p(t,"$mobx",a=new je(t,e,n)),a)}var Ve=Object.create(null),Ge=Object.create(null);function Be(t){return t.$mobx||(G(t),t.$mobx)}var ze=b("ObservableObjectAdministration",je);function Ye(t){return!!f(t)&&(G(t),ze(t.$mobx))}function He(t,e){if("object"==typeof t&&null!==t){if(Ae(t))return void 0!==e&&o(!1),t.$mobx.atom;if(qe(t))return t.$mobx;if(De(t)){var n=t;return void 0===e?n._keysAtom:((a=n._data.get(e)||n._hasMap.get(e))||o(!1),a)}var a;if(G(t),Ye(t))return e?((a=t.$mobx.values[e])||o(!1),a):o(!1);if(R(t)||Ct(t)||Gt(t))return t}else if("function"==typeof t&&Gt(t.$mobx))return t.$mobx;return o(!1)}var Ue=Object.prototype.toString;function We(t,e,n){return void 0===n&&(n=-1),function t(e,n,a,r,i){if(e===n)return 0!==e||1/e==1/n;if(null==e||null==n)return!1;if(e!=e)return n!=n;var s=typeof e;if("function"!==s&&"object"!==s&&"object"!=typeof n)return!1;e=Ke(e),n=Ke(n);var u=Ue.call(e);if(u!==Ue.call(n))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+e==""+n;case"[object Number]":return+e!=+e?+n!=+n:0==+e?1/+e==1/n:+e==+n;case"[object Date]":case"[object Boolean]":return+e==+n;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(e)===Symbol.valueOf.call(n)}var o="[object Array]"===u;if(!o){if("object"!=typeof e||"object"!=typeof n)return!1;var l=e.constructor,d=n.constructor;if(l!==d&&!("function"==typeof l&&l instanceof l&&"function"==typeof d&&d instanceof d)&&"constructor"in e&&"constructor"in n)return!1}if(0===a)return!1;a<0&&(a=-1),i=i||[];for(var c=(r=r||[]).length;c--;)if(r[c]===e)return i[c]===n;if(r.push(e),i.push(n),o){if((c=e.length)!==n.length)return!1;for(;c--;)if(!t(e[c],n[c],a-1,r,i))return!1}else{var f=Object.keys(e),h=void 0;if(c=f.length,Object.keys(n).length!==c)return!1;for(;c--;)if(!$e(n,h=f[c])||!t(e[h],n[h],a-1,r,i))return!1}return r.pop(),i.pop(),!0}(t,e,n)}function Ke(t){return Ae(t)?t.peek():m(t)||De(t)||y(t)||qe(t)?v(t.entries()):t}function $e(t,e){return Object.prototype.hasOwnProperty.call(t,e)}"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(t){return kt.spyListeners.push(t),d((function(){kt.spyListeners=kt.spyListeners.filter((function(e){return e!==t}))}))},extras:{getDebugName:function(t,e){return(void 0!==e?He(t,e):Ye(t)||De(t)||qe(t)?function t(e,n){return e||o("Expecting some object"),void 0!==n?t(He(e,n)):R(e)||Ct(e)||Gt(e)||De(e)||qe(e)?e:(G(e),e.$mobx?e.$mobx:void o(!1))}(t):He(t)).name}},$mobx:"$mobx"})},"2ykv":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"2zzJ":function(t,e,n){var a=n("MOZO"),r=n("Wv1A");t.exports=function(t,e){for(var n=0,i=(e=a(e,t)).length;null!=t&&n<i;)t=t[r(e[n++])];return n&&n==i?t:void 0}},"3+CB":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="ko-KR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>네비게이션 전환</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>현황판</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>클러스터</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>호스트들</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>모니터들</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>서비스들</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD들</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>설정</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>크러쉬맵</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>메니저 모듈들</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>로그들</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>풀들</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>블럭</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>이미지들</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>미러링</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>파일시스템들</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>오브젝트게이트웨이</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>데몬들</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>버킷들</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>언어선택</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>패널 데이타 로딩 중...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>그라파나 타임 픽커</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>설정 초기화</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>뒤로</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>데이타 로딩 실폐</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>선택된</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>발견된</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>전체</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>이름</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>설명</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>자세한 설명</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>기본값</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>데모 기본값</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>값들</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>저장하기</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>크러쉬맵 보기</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>로딩중...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>호스트이름</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>이 필드는 필수적입니다.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>예, 확실합니다.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>취소</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>닫기</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>호스트 목록들</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>통합 성능치</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>항목들을 찾을 수 없음</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>클러스터 로그들</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>감사 로그들</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>설정 로딩 중</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>설정을 로드할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>관리모듈 편집하기</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>입력된 값이 유효한 UUID가 아닙니다, 예.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>입력된 값은 유효한 IP주소 여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>입력된 값은 적어도 하나의 숫자를 필요로 합니다.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>입력 된 값은 숫자 또는 십진수여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>갱신</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>클러스터 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>몬맵 변경시간</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>몬맵 변경번호</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>정족수 일치번호</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>정족수 모니터상태</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>요구되는 일치번호</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>요구되는 모니터상태</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>정족수에 포함</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>정족수 미포함</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>추가</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>특징들</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>클러스터-수준의 OSD 플레그들</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>제출</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>자세한 옵션...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 복구 우선순위</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>우선순위</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>우선 순위 값 맞춤 설정</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>이 필드는 요구됩니다!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>값은 0과 1사이어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>재-조정</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, 선택, 1 {깊이 } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, 선택, 1 {깊이 } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 목록들</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>값</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>편집</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>삭제</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>건강상태</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>통계들</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>클라이언트들</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>모든 클라이언트 접근가능</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>주소들</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>필수 입력란</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>반드시 하나 이상의 쉼표로 구분 된 값을 포함해야 함</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>예를들면:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>접근형태</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>클라이언트들 추가</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 사용가능 클러스터 없음 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 클러스터 선택 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>데몬 추가하기</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>스토리지 백엔드</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 이용가능한 데이타풀 없음 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 스토리지 백엔드 선택 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>객체 게이트웨이 사용자</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 사용가능한 사용자들 없음 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 객체 게이트웨이 사용자 선택 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 사용자 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 사용가능한 클라이언트 없음 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx 클라이언트 선택 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 이름</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>보안 레이블</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>보안 레이블 사용</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 경로</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>경로는 \'/\'로 시작해야하며 그 뒤에 단어가 올 수 있습니다</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>새로운 디렉토리가 만들어 질 것입니다</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>경로</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>경로는 하나의 \'/\' 또는 하나의 단어 일 수 있습니다</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>새로운 버킷이 만들어 질 것입니다</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 프로토콜</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 태크</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>클라이언트는 하위 디렉토리를 마운트 할 수 없습니다 (즉, Tag = foo 인 경우 클라이언트가 foo / baz를 마운트하지 못할 수 있습니다).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>다른 태그 옵션을 사용하면 같은 경로를 여러 번 내보낼 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>다른 Pseudo 옵션을 사용하면 동일한 경로를 여러 번 내보낼 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 사용가능한 접근형태 없음 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 접근형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 사용가능한 squash 없음 --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 어떤 종류의 사용자 ID 스쿼시가 수행되는지 선택하세요 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>전송프로토콜</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Ceph 사용을 환영합니다.</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>사용자이름이 필요합니다</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>암호가 필요합니다</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>로그인</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>미안합니다. 사용자가 Ceph내에 존재하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>금지됨</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>미안합니다. 당신이 요청할 것을 열람하는 것이 허락되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 설정들</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>로컬 구성 값을 제거하십시오. 상위 구성 값은 계승되고 대신 사용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>최소값은 0입니다.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>풀 목록들</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>이름은 영숫자, 대시 및 밑줄로만 구성 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>선택한 Erasure Code 프로파일 이름이 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>플러그인</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>데이터 덩어리들 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>반드시 2보다 크거나 같아야합니다.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>코딩 덩어리들 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>반드시 1보다 크거나 같아야합니다.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>내구성 평가(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>지역 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>크러쉬 실패 도메인</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>크러쉬 지역</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>없음</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>기술</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>패킷크기</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>크러쉬루트</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>크러쉬 장치 클래스</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>모든</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>디렉토리</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>이름...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>선택한 Ceph 풀이름이 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>풀 형태</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 풀 형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>게재위치 그룹</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>적어도 하나의 게재위치 그룹이 필요함!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>클러스터는 이 많은 PG들를 처리 할 수 없습니다. 필요한 PG 양을 다시 계산하십시오.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>계산 도움말</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>복제되는 크기</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>플레그들</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 덮어쓰기</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>응용프로그램들</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure Code 프로파일</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 사용가능한 Erasure Code 프로파일 없음 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 한개의 Erasure Code 프로파일 선택 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>크러쉬 룰셋</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 크러쉬 룰 선택 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>크러쉬 룰</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>크러쉬 단계들</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>압축</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>양식</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>알고리즘</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 이용가능한 Erasure 압축알고리즘 없음 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>최소 blob 크기</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>예) 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>값은 0보다 커야합니다</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>최대 blob 크기</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>예) 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>값은 최소 blob 크기보다 커야 합니다</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>비율</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>압축율</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>값은 0.0과 1.0 사이 여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>예., 100 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>세부설명</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>성능 세부정보들</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>케쉬 계층들 상세설명들</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>이미지를 휴지통에 이동</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>보호가 만료되는 </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>보호되지 않음</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>날짜 형식 오류. "YYYY-MM-DD HH:mm:ss" 형식으로 지정하세요.</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>보호기간이 이미 만료되었습니다. 더 미래의 날짜를 선택하거나 공란으로 남겨두세요.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>이미지 옮기기</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>개관</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>타겟들</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>인증 탐색</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>사용자이름은 8~64자까지 길이의 문자들을 가져야 하며 그리고, 오직 , \'.\', \'@\', \'-\', \'_\', \':\' 등의 특수 문자들만을 포함가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>암호</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>공동 사용자</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>공통 암호</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>이용가능한 정보:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI 타겟이 이용 불가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>풀</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>데이타 풀</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>생성된</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>크기</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>오브젝트들</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>객체크기</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>준비된</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>이용불가</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>준비된 총계</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>스트라이핑 단위</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>스트라이핑 횟수</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>상위</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>블록 이름 접두사</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>순서</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>스냅삿</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>이미지</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>이 설정은 전역 값을 덮어씁니다.</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>글로벌</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>이것은 전역 값입니다. 이 이미지에 대해 이 옵션의 값이 설정되지 않았습니다.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' 와 \'@\' 문자는 사용불가입니다.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 이용가능한 rbd풀 없음 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 풀 선택 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>전용 데이타 풀들을 사용하세요</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>데이타 풀</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>RBD의 객체-데이타를 저장하고 있는 전용 풀</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>사이즈를 증가시켜야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>자세한</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>분산저장</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>분산저장단위</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 분산저장단위 선택 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>분산저장 개수가 정의되어 있으므로 이 필드는 필수입니다!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>분산저장단위는 객체크기보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>분산저장 갯수</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>분산저장 단위가 정의되어 있으므로 이 필드는 필수입니다!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>분산저장 갯수는 반드시 0보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>롤백하려고 합니다.</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>휴지통 비우기</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>모든</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>풀:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>풀 이름:</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>이미지 복구하기</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>복구를 위해</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>이미지들의 새로운 이름을 입력하고 클릭하세요</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>새로운 이름</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>폐기될</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>까지 보호됨</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 토폴로지</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>기본설정 값들로 부터 인자를 변경하는 것은 일반적으로 필요하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>설정들</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>백스토어</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>확인</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>고급설정들</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>타겟 IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN이 잘못된 패턴을 가지고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Key\n예를들면: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>추가 정보</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>이 타겟은 고급설정들을 수정했습니다.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>포털</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>포털 추가</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>이 이미지는 설정들을 수정했습니다. </target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>이미지 추가</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 인증</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>개시자들</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>개시자들</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>클라이언트 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>개시자 IQN은 유일해야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>사용자이름은 8~64자까지 길이의 문자들을 가져야 하며 그리고, 오직 , \'.\', \'@\', \'-\', \'_\', \':\' 등의 특수 문자들만 포함이 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>개시자는 하나의 그룹에 속해야 하고, 이미지는 그룹안에서 설정합니다.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>추가된 아이템들이 없음</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>게시자 추가</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>그룹들</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>그룹</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>그룹추가</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>휴지통</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>이슈들</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>동기화중</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>준비됨</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>풀 미러모드를 편집하기</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>상대방 클러스터들은 미러를 단절하기 전에 반드시 제거되어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>클러스터 이름</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>클러스터 이름이 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX 아이디</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX 아이디...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX 아이디가 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>모니터 주소들</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>콤마로 분리된 주소들...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>모니터 주소가 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 키</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64로 인코딩 된 키 ...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 키는 반드시 base64로 인코드 되어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>성능 카운터들을 사용 할 수 없음</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>데몬 목록들</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>성능 카운터</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>버킷데이타 적재 중</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>값이 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>선택한 이름이 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>소유자</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 사용자 선택 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>이용가능</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>색인형식</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>위치규칙</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>표시</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>최대 마커</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>버젼</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>마스터 버젼</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>수정된 시간</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>제로그룹</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>버킷 할당량</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>최대 크기</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>무제한</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>최대 객체들</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>사용자명</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 사용자명 선택 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>자동생성된 키</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>접근 키</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>비밀 키</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>전체 이름</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>전자우편 주소</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>유예되다.</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>시스템</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>최대 버킷들</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>보조사용자들</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>능력치들</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>사용자 할당량</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>보기</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>키들</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>형태</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>권한</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 권한 선택 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>보조사용자</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>선택한 보조사용자 아이디가 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>읽기, 쓰기</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>가득찬</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>스위프트 키</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>자동생선된 비밀</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>사용자 데이타 적재 중...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>사용자 데이타를 적재할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>선택된 사용자 아이디가 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>이것은 유효한 전자우편 주소가 아닙니다.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>선택한 전자우편 주소가 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>최대 버킷들</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>설정해제됨</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>커스텀</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 키</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>보조사용자가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>키가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>스위프트</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>능력치가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>무제한 크기</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>최대 크기</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>무제한 객체들</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>최대 객체들</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>입력된 값은 반드시 0보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>세부설명...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>권한들</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>역할들</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>암호 확인</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>암호 확인이 암호와 일치하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>전자우편</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>유효하지않는 전자우편.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>당신의 사용자로부터 "사용자 읽기 / 업데이트"권한을 제거하려고합니다.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>계속하면 모든 사용자에게 역할을 추가하거나 제거 할 수 없게됩니다.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>계속 진행하기를 원하십니까?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>도움말</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>문서</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>대하여</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>대쉬보드 설정</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>사용자 관리</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>로그인된 사용자</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>로그아웃</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>속성들 (OSD 맵)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>메타데이타 사용할 수 없음</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>메타데이타</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>성능 카운터</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>쓰기</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>읽기</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>히스토그램</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>현재 값들</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>최소</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>최대</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>소스</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>수준</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>수행시간에 갱신가능함(편집가능)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>테크들</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>열거형 값들</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>추가로 더보기</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>클러스터 상태</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>관리자 데몬들</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>오브젝트 게이트웨이들</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>메타데이타 서버들</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 게이트웨이들</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>클라이언트 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>클라이언트 처리량</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>클라이언트 읽기/쓰기</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>복구 처리량</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>세정작업</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>성능</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>원시용량</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSD당 PG들</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 상태들</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>용량</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>순위</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>현재</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>업데이트된 검색 인증</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>사용가능한 포탈들이 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>사용가능한 이미지들이 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>사용할 수있는 이미지가 없습니다. 대상에 이미지를 추가했는지 확인하십시오.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>사용할 수있는 개시자가 없습니다. 대상에 개시자를 추가했는지 확인하십시오.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>타겟</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>읽은 바이트들</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>쓰기 바이트들</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>읽기 Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>쓰기 Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O 이래로</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>인스탄스</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>이슈</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>진행중</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>편집모드</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>상대방 추가</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>상대방 편집</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>상대방 삭제</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>리더</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># 로컬</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># 원격</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>상대방 미러</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>키</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>딥 패턴</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>계층화</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>배타적인 락</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>오프젝트-맵(배타적인-락을 요구한다)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>저널링(배탁적인-락을 요구합니다.)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>보호안됨</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 스냅샷 롤백</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>롤백</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 스냅샷</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>삭제될 </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>형태</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>버젼</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>호스트</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>루트</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>대기 데몬들</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>순위</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>데몬</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>활동</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>덴트리들</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>아이노드들</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>사용량</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>갱신된</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>이 값은 런타임에 업데이트 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>데몬들 / 클라이언트들은 모니터 구성 데이터베이스에서이 값을 가져 오지 않습니다. \'ceph config set ...\'을 통해이 옵션을 설정하는 것은 허락되지 않습니다. 이 옵션은 ceph.conf 또는 명령 줄을 통해 구성해야합니다.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>옵션은 데몬 시작 중에 만 적용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>옵션은 클러스터 생성할 때 만 영향을 줍니다.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>옵션은 데몬 생성할 때만 영향을줍니다.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>서비스</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>현재값</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>편집가능</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>사용가능</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>사용불가</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>재-접속 중, 기다려 주세요...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>공개 주소</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>열린 세션들</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>들어올 수 없는</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>이전에 마크 아웃 된 OSD는 시작시 다시 표시되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>나갈 수 없는</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD들은 구성된 간격 후에는 자동으로 표시되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>살아나지 않는</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD는 시작할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>죽일 수 없는</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>모니터가 OSD들의 다운을 표시하지 않도록 OSD 장애 보고서가 무시되고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>멈출</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>읽기와 쓰기를 멈춤</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>스크러빙 않됨</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>스크러빙이 비활성화되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>딥 스크럽 안됨</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>딥 스크러빙이 비활성되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>백필 없음</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG들의 백필이 일시중지 되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>복구 않됨</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG들의 복구가 일시중지 되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>비트단위 정렬</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>비트단위 정렬을 사용하세요</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>완전삭제된 스냅디렉토리들</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD들이 변화된 스냅셋을 가지고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>삭제된 복구들</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>피어링 대신 복구 중에 수행된 삭제물들</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 로그 하드 한계</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>pg 로그 길이에 하드 한계를 넣으세요</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>갱신된 OSD 플래그들</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>아웃</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>인</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>다운</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>표시</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 손실</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>손실 표시</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>완전제거</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>완전제거된</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>파괴된</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>삭제</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>읽은 바이트들</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>쓰여진 바이트들</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>읽기 ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>쓰기 ops</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>최대 백필들</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>최대 활성화를 복구하기</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>최대 단일 시작을 복구하기</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>잠자기를 복구하기</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>일</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>심각도</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>시작된</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>사용된</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>이용가능:</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>깨끗한</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>정상동작중</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>경고</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>알려지지 않은</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>정상</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>파일시스템들 없음</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>활성화된</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>대기중인</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>이용불가</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>활성화된 데몬들</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>정족수</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganesha 서비스가 설정되지 않음</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>전송</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 사용자</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 파일시스템</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(전역 구성에서 상속)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>전역 구성에서 상속</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>- 어떤 종류의 사용자 ID 스쿼시가 수행되는지 선택 -</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>사용가능한 데몬이 없읍니다.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>캐쉬모드</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>최소 퇴거 연령</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>최소 플러시 연령</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>목표 최대 바이트들</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>목표 최대 오브젝트들</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>추가된 응용프로그램 없음</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>응용프로그램 한계에 도달함</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>하나의 풀은 오직 네개의 응용프로그램 정의들을 가질 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target> \'_a-zA-Z0-9\' 문자들만 허락됨</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>최대 길이는 128글자이다.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>필터 또는 추가된 응용프로그램들</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>응용프로그램 추가</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure 코드 프로파일</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>복제 크기</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>마지막 변경</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure 코드화된 프로파일</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>크러쉬 룰셋</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>버킷</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>버킷들</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>사용자들</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>범위</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>읽기</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>만들기</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>시스템 롤</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>갱신된 사용자</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>계속</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>당신의 롤들이 변경되어 당신은 자동적으로 로그아웃되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>각각의 오브젝트들은 데이타-청크 부분들로 분리되어, 각기 다른 OSD에 보관됩니다.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>각 오브젝트들에 대한 코딩 청크를 계산하고 서로 다른 OSD에 저장합니다. \n코딩된 청크의 수는 데이터 손실없이 작동중지 되어 질 수있는 OSD의 숫자이기도합니다.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Jerasure 플러그인은 가장 일반적이고 유연한 플러그인으로,\n또한 Ceph erasure 코드 풀의 기본값이기도합니다.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>보다 유연한 기술은 reed_sol_van입니다 : k와 m을 설정하면 충분합니다. \ncauchy_good 기술은 빠를 수 있지만 패킷크기를 주의깊게 선택해야합니다. \nreed_sol_r6_op, liberation, blaum_roth, liber8tion은 모두 m = 2로만 구성 할 수 있다는 점에서 RAID-6에 해당합니다.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>인코딩은 한번에 바이트들 크기의 패킷에 대해 수행됩니다. 올바른 패킷 크기를 선택하는 것은 어렵습니다. jerasure 문서에는이 주제에 대한 광범위한 정보가 들어 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>jerasure 플러그인을 사용하면 삭제 된 코딩 된 객체가 여러 OSD에 저장 될 때 하나의 OSD가 손실되는 것을 복구하려면 다른 모든 OSD를 읽어야합니다. 예를 들어 jerasure가 k = 8 및 m = 4로 구성되어있는 경우 하나의 OSD를 잃어 버리면 11 명의 다른 사람들이 수리해야합니다.\nlrc erasure code plugin은 적은 양의 OSD를 사용하여 복구 할 수 있도록 로컬 패리티 청크를 만듭니다. 예를 들어, lrc가 k = 8, m = 4 및 l = 4로 구성된 경우 4 개의 OSD마다 추가 패리티 덩어리가 생성됩니다. 단일 OSD가 손실되면 11 개 대신 4 개의 OSD만으로 복구 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>코딩 및 데이터 청크를 크기 지역 집합으로 그룹화합니다. 예를 들어, k = 4 및 m = 2에 대해, 지역성 = 3 일 때 두 개의 세 그룹이 생성됩니다. 각 세트는 다른 세트의 청크를 읽지 않고도 복구 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>l로 정의 된 각 청크 집합이 저장되는 크러시 버킷의 유형입니다. 예를 들어 랙으로 설정하면 l 개의 청크 그룹이 각각 다른 랙에 배치됩니다. \n랙 선택 단계와 같은 CRUSH 규칙 단계를 만드는 데 사용됩니다. 설정되어 있지 않으면, 그러한 그룹화가 수행되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 플러그인은 ISA 라이브러리를 캡슐화합니다. 인텔 프로세서에서만 실행됩니다.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 플러그인은 두 개의 리드 솔로몬 형식으로 제공됩니다.\nreed_sol_van이 설정되면 Vandermonde, cauchy가 설정되면 Cauchy입니다.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec plugin은 다중 SHEC 라이브러리를 캡슐화합니다.\n           ceph가 리드 솔로몬 코드보다 더 효율적으로 데이터를 복구 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>각 데이터 청크가 계산 범위에 포함되는 패리티 청크의 수입니다. 이 수치는 내구성 측정기로 사용됩니다. 예를 들어, c = 2 인 경우 2 개의 OSD가 데이터 손실없이 중단 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSH 규칙의 첫 번째 단계에 사용 된 크러시 버킷의 이름입니다. 예를 들어 step은 기본값을 취합니다.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>동일한 실패 도메인을 가진 양동이에 두 개의 청크가 없는지 확인하십시오. 예를 들어 실패 도메인이 호스트 인 경우 두 개의 청크가 동일한 호스트에 저장되지 않습니다. 이 단계는 리프 호스트를 선택하는 단계와 같은 CRUSH 규칙 단계를 만드는 데 사용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>CRUSH지도에서 크래시 장치 클래스 이름을 사용하여 특정 클래스 (예 : ssd 또는 hdd)의 장치로 배치를 제한합니다.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>삭제 코드 플러그인이로드되는 디렉토리 이름을 설정하십시오.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>모든 작업들 허용</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>오직 서버를 수정하지 않는 작업들만 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>읽기와 쓰기 작업은 허용되지 않지만, 그외 모든 작업이 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>파일의 속성과 디렉토리 내용을 변경하는 읽기, 쓰기 또는 어떠한 작업은 허용되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>전혀 어떠한 접근도 허용되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 우선순위 선택 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>낮음</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>높음</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>정보</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>마지막 5분</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>지난 15분</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>지난 30분</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>지난 1시간(기본)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>지난 3시간</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>지난 6시간</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>지난 12시간</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>지난 24시간</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>어제</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>오늘</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>오늘 지금까지</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>그저께</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>지난 2일</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>이번 주 마지막날</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>전주</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>이번주</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>이번주 지금까지</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>지난 7일</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>지난 달</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>이번 달</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>이번 달 지금까지</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>지난 30일</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>지난 90일</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>지난 6개월</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>지난 1년</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>전년도</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>금년도</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>금년 지금까지</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>지난 2년</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>지난 5년</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>선택된 아이템 없음</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>다시 선택하기 위해 아이템 선택을 취소</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>선택 한계에 도달함</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>필터 테그들</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>베찌 추가</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>사용가능한 아이템 없음</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>복제</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>복사</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>딥 스크럽</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>단조로움</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>다운 표시</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>인 표시</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>손실 표시</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>아웃 표시</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>보호</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>이름변경</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>복구</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>휴지통으로 옮기기</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>보호않됨</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>삭제돔</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>복제된</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>복사된</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>평평하게 됨</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>완전삭제됨</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>복구됨</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>롤백됨</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>예</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>아니오</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>서비스 량</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 한계</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>원하는 초당 IO 바이트 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 제한</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>원하는 초당 IO 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>읽기 BPS 제한</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>원하는 초당 읽기 바이스 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>읽기 IOPS 한도</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>원하는 초당 읽기 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>쓰기 BPS 한도</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>원하는 초당 쓰기 바이트 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>쓰기 IOPS 제한</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>원하는 초당 쓰기 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>원하는 버스트 IO 바이트 한도 입니다.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>원하는 IO 작업의 버스트 한계입니다.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>읽기 BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>원하는 읽기 버스트 한계입니다.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>읽기 IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>원하는 읽기 작업의 버스트 한도입니다.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>쓰기 BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>쓰기 바이트의 원하는 버스트 한도.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>쓰기 IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>쓰기 바이트의 원하는 버스트 한도.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>수행중</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>수행</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>수행된</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>알려지지 않는 작업</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>생성하는 중</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>생성</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>갱신 중</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>갱신</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>삭제 중</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>복제중</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>복제</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>복사중</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>복사</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>평평하게 하는 중</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>평평함</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>롤백 중</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>롤백</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>옮기는 중</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>옮기기</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>옮겨짐</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>이미지를 찾을 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>복구중</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>복구</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>완전삭제 중</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>완전삭제</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>모든 풀들</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>피어가 포함되어 있기 때문에 미러링을 비활성화 할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"33Wh":function(t,e,n){var a=n("yoRg"),r=n("eDl+");t.exports=Object.keys||function(t){return a(t,r)}},"372+":function(t,e,n){var a=n("LaC8"),r=n("0GLT"),i=n("x3F9");t.exports=function(t){return"string"==typeof t||!r(t)&&i(t)&&"[object String]"==a(t)}},"38Bd":function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return r})),n.d(e,"d",(function(){return u}));var a=n("hpHm");class r{constructor(){this.animate=!1,this.max=100}}class i{constructor(t){this.isStacked=!1,this.addClass=!0,this.bars=[],this._max=100,Object.assign(this,t)}set animate(t){this._animate=t,this.bars.forEach(e=>{e.animate=t})}set striped(t){this._striped=t,this.bars.forEach(e=>{e.striped=t})}set value(t){this.isStacked=Array.isArray(t),this._value=t}get isBs3(){return Object(a.d)()}get max(){return this._max}set max(t){this._max=t,this.bars.forEach(t=>{t.recalculatePercentage()})}addBar(t){t.animate=this._animate,t.striped=this._striped,this.bars.push(t)}removeBar(t){this.bars.splice(this.bars.indexOf(t),1)}}class s{constructor(t,e,n){this.el=t,this.renderer=n,this.addClass=!0,this.percent=0,this.progress=e}get type(){return this._type}set type(t){this._type=t,this.applyTypeClasses()}get value(){return this._value}set value(t){(t||0===t)&&(this._value=t,this.recalculatePercentage())}get setBarWidth(){return this.recalculatePercentage(),this.percent}get isBs3(){return Object(a.d)()}ngOnInit(){this.progress.addBar(this)}ngOnDestroy(){this.progress.removeBar(this)}recalculatePercentage(){this.percent=+(this.value/this.progress.max*100).toFixed(2);const t=this.progress.bars.reduce((function(t,e){return t+e.percent}),0);t>100&&(this.percent-=t-100)}applyTypeClasses(){if(this._prevType){const t="bg-"+this._prevType;this.renderer.removeClass(this.el.nativeElement,"progress-bar-"+this._prevType),this.renderer.removeClass(this.el.nativeElement,t),this._prevType=null}if(this._type){const t="bg-"+this._type;this.renderer.addClass(this.el.nativeElement,"progress-bar-"+this._type),this.renderer.addClass(this.el.nativeElement,t),this._prevType=this._type}}}class u{static forRoot(){return{ngModule:u,providers:[r]}}}},"3E1r":function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};t.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात"===e?t<4?t:t+12:"सुबह"===e?t:"दोपहर"===e?t>=10?t:t+12:"शाम"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात":t<10?"सुबह":t<17?"दोपहर":t<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("wd/R"))},"3ENo":function(t,e,n){var a=n("Ytn0");t.exports=function(t){return a(this,t).has(t)}},"3Eq5":function(t,e,n){var a=n("We1y");t.exports=function(t,e){var n=t[e];return null==n?void 0:a(n)}},"3N8a":function(t,e,n){"use strict";var a=n("quSY");class r extends a.a{constructor(t,e){super()}schedule(t,e=0){return this}}n.d(e,"a",(function(){return i}));class i extends r{constructor(t,e){super(t,e),this.scheduler=t,this.work=e,this.pending=!1}schedule(t,e=0){if(this.closed)return this;this.state=t;const n=this.id,a=this.scheduler;return null!=n&&(this.id=this.recycleAsyncId(a,n,e)),this.pending=!0,this.delay=e,this.id=this.id||this.requestAsyncId(a,this.id,e),this}requestAsyncId(t,e,n=0){return setInterval(t.flush.bind(t,this),n)}recycleAsyncId(t,e,n=0){if(null!==n&&this.delay===n&&!1===this.pending)return e;clearInterval(e)}execute(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const n=this._execute(t,e);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,e){let n=!1,a=void 0;try{this.work(t)}catch(r){n=!0,a=!!r&&r||new Error(r)}if(n)return this.unsubscribe(),a}_unsubscribe(){const t=this.id,e=this.scheduler,n=e.actions,a=n.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==a&&n.splice(a,1),null!=t&&(this.id=this.recycleAsyncId(e,t,null)),this.delay=null}}},"3a3P":function(t,e,n){var a=n("2zzJ");t.exports=function(t){return function(e){return a(e,t)}}},"3bBZ":function(t,e,n){var a=n("2oRo"),r=n("/byt"),i=n("eFrH"),s=n("4mDm"),u=n("kRJp"),o=n("tiKp"),l=o("iterator"),d=o("toStringTag"),c=s.values,f=function(t,e){if(t){if(t[l]!==c)try{u(t,l,c)}catch(a){t[l]=c}if(t[d]||u(t,d,e),r[e])for(var n in s)if(t[n]!==s[n])try{u(t,n,s[n])}catch(a){t[n]=s[n]}}};for(var h in r)f(a[h]&&a[h].prototype,h);f(i,"DOMTokenList")},"43VP":function(t,e,n){var a=n("SDUG"),r=n("TAQX")(a);t.exports=r},"4DD9":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){let e=!1;switch(t){case!0:case 1:case"y":case"yes":case"t":case"true":case"on":case"1":e=!0}return e}}},"4Dmd":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},i=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},s=function(){function t(t,e,n){this.renderer=t,this.templateRef=e,this.viewContainerRef=n}return Object.defineProperty(t.prototype,"isOpen",{set:function(t){t?(this._show(),this.isEnabled&&!1===this._isOpen&&this._animateOpen()):this.isEnabled?this._animateClose():this._hide(),this._isOpen=!!t},enumerable:!0,configurable:!0}),t.prototype._show=function(){this.innerElement||(this.innerElement=this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0])},t.prototype._hide=function(){this.viewContainerRef.clear(),this.innerElement=null},t.prototype._animateOpen=function(){var t=this,e=this.animateSpeed,n=this.animateAcceleration,a=0;this.renderer.setStyle(this.innerElement,"max-height","0"),setTimeout((function(){var r=setInterval((function(){if(!t._isOpen||!t.innerElement)return clearInterval(r);var i=Math.round(a+=e);t.renderer.setStyle(t.innerElement,"max-height",i+"px");var s=t.innerElement.getBoundingClientRect?t.innerElement.getBoundingClientRect().height:0;e*=n,n*=1.005,s<i&&(t.renderer.setStyle(t.innerElement,"max-height",null),clearInterval(r))}),17)}))},t.prototype._animateClose=function(){var t=this;if(this.innerElement)var e=this.animateSpeed,n=this.animateAcceleration,a=this.innerElement.getBoundingClientRect().height,r=setInterval((function(){if(t._isOpen||!t.innerElement)return clearInterval(r);t.renderer.setStyle(t.innerElement,"max-height",(a-=e)+"px"),e*=n,n*=1.005,a<=0&&(t.viewContainerRef.clear(),t.innerElement=null,clearInterval(r))}),17)},r([Object(a.Input)("treeAnimateOpenSpeed"),i("design:type",Number)],t.prototype,"animateSpeed",void 0),r([Object(a.Input)("treeAnimateOpenAcceleration"),i("design:type",Number)],t.prototype,"animateAcceleration",void 0),r([Object(a.Input)("treeAnimateOpenEnabled"),i("design:type",Boolean)],t.prototype,"isEnabled",void 0),r([Object(a.Input)("treeAnimateOpen"),i("design:type",Boolean),i("design:paramtypes",[Boolean])],t.prototype,"isOpen",null),r([Object(a.Directive)({selector:"[treeAnimateOpen]"}),i("design:paramtypes",[a.Renderer2,a.TemplateRef,a.ViewContainerRef])],t)}()},"4HWh":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("KOzp"),s=n("z/SZ"),u=n("2uy1");n("p4Cf"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return d}));var o=a["ɵcrt"]({encapsulation:0,styles:[["i[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer;padding-left:4px}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[],[[8,"className",0],[8,"innerHTML",1]],null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,(function(t,e){var n=e.component;t(e,0,0,n.class,n.html)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,[["popoverTpl",2]],null,0,null,l)),(t()(),a["ɵeld"](1,16777216,null,null,4,"i",[["aria-hidden","true"],["container","body"],["placement","bottom"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](4,1),a["ɵdid"](5,212992,null,0,i.c,[i.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,u.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null)],(function(t,e){var n=t(e,4,0,e.component.icons.questionCircle);t(e,3,0,n),t(e,5,0,a["ɵnov"](e,0),"bottom",!0,"body")}),null)}},"4I5i":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return t.prototype=Object.create(Error.prototype),t})()},"4MV3":function(t,e,n){!function(t){"use strict";var e={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};t.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(t){return t.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(t,e){return 12===t&&(t=0),"રાત"===e?t<4?t:t+12:"સવાર"===e?t:"બપોર"===e?t>=10?t:t+12:"સાંજ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"રાત":t<10?"સવાર":t<17?"બપોર":t<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("wd/R"))},"4WOD":function(t,e,n){var a=n("2oRo"),r=n("Gi26"),i=n("Fib7"),s=n("ewvW"),u=n("93I0"),o=n("4Xet"),l=u("IE_PROTO"),d=a.Object,c=d.prototype;t.exports=o?d.getPrototypeOf:function(t){var e=s(t);if(r(e,l))return e[l];var n=e.constructor;return i(n)&&e instanceof n?n.prototype:e instanceof d?c:null}},"4Xet":function(t,e,n){var a=n("0Dky");t.exports=!a((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},"4a5m":function(t,e,n){var a=n("zAeO");t.exports=function(t){var e=a(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},"4dOw":function(t,e,n){!function(t){"use strict";t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"4l63":function(t,e,n){var a=n("I+eb"),r=n("wg0c");a({global:!0,forced:parseInt!=r},{parseInt:r})},"4mDm":function(t,e,n){"use strict";var a=n("/GqU"),r=n("RNIs"),i=n("P4y1"),s=n("afO8"),u=n("m/L8").f,o=n("fdAy"),l=n("xDBR"),d=n("g6v/"),c=s.set,f=s.getterFor("Array Iterator");t.exports=o(Array,"Array",(function(t,e){c(this,{type:"Array Iterator",target:a(t),index:0,kind:e})}),(function(){var t=f(this),e=t.target,n=t.kind,a=t.index++;return!e||a>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:a,done:!1}:"values"==n?{value:e[a],done:!1}:{value:[a,e[a]],done:!1}}),"values");var h=i.Arguments=i.Array;if(r("keys"),r("values"),r("entries"),!l&&d&&"values"!==h.name)try{u(h,"name",{value:"values"})}catch(g){}},"4syw":function(t,e,n){var a=n("busE");t.exports=function(t,e,n){for(var r in e)a(t,r,e[r],n);return t}},"4zBA":function(t,e){var n=Function.prototype,a=n.bind,r=n.call,i=a&&a.bind(r);t.exports=a?function(t){return t&&i(r,t)}:function(t){return t&&function(){return r.apply(t,arguments)}}},"5+tZ":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("ZUHj"),r=n("l7GE"),i=n("51Dv"),s=n("lJxs"),u=n("Cfvw");function o(t,e,n=Number.POSITIVE_INFINITY){return"function"==typeof e?a=>a.pipe(o((n,a)=>Object(u.a)(t(n,a)).pipe(Object(s.a)((t,r)=>e(n,t,a,r))),n)):("number"==typeof e&&(n=e),e=>e.lift(new l(t,n)))}class l{constructor(t,e=Number.POSITIVE_INFINITY){this.project=t,this.concurrent=e}call(t,e){return e.subscribe(new d(t,this.project,this.concurrent))}}class d extends r.a{constructor(t,e,n=Number.POSITIVE_INFINITY){super(t),this.project=e,this.concurrent=n,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(t){this.active<this.concurrent?this._tryNext(t):this.buffer.push(t)}_tryNext(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this.active++,this._innerSub(e,t,n)}_innerSub(t,e,n){const r=new i.a(this,e,n),s=this.destination;s.add(r);const u=Object(a.a)(this,t,void 0,void 0,r);u!==r&&s.add(u)}_complete(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()}notifyNext(t,e,n,a,r){this.destination.next(e)}notifyComplete(t){const e=this.buffer;this.remove(t),this.active--,e.length>0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}},"51Dv":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");class r extends a.a{constructor(t,e,n){super(),this.parent=t,this.outerValue=e,this.outerIndex=n,this.index=0}_next(t){this.parent.notifyNext(this.outerValue,t,this.outerIndex,this.index++,this)}_error(t){this.parent.notifyError(t,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}},"5DBd":function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}},"5EpR":function(t,e,n){var a=n("jNLg");t.exports=function(t){return t?(t=a(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},"5itS":function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},"6+QB":function(t,e,n){!function(t){"use strict";t.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},"6B0Y":function(t,e,n){!function(t){"use strict";var e={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};t.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(t){return"ល្ងាច"===t},meridiem:function(t,e,n){return t<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(t){return t.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},"6II+":function(t,e,n){var a=n("R8cQ");t.exports=function(t){return null==t?"":a(t)}},"6JNq":function(t,e,n){var a=n("Gi26"),r=n("Vu81"),i=n("Bs8V"),s=n("m/L8");t.exports=function(t,e,n){for(var u=r(e),o=s.f,l=i.f,d=0;d<u.length;d++){var c=u[d];a(t,c)||n&&a(n,c)||o(t,c,l(e,c))}}},"6LWA":function(t,e,n){var a=n("xrYK");t.exports=Array.isArray||function(t){return"Array"==a(t)}},"6MU2":function(t,e){t.exports=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}},"6VoE":function(t,e,n){var a=n("tiKp"),r=n("P4y1"),i=a("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||s[i]===t)}},"6eui":function(t,e,n){var a=n("hmSm"),r=n("5itS"),i=n("l2xC"),s=Object.prototype.hasOwnProperty;t.exports=function(t){if(!a(t))return i(t);var e=r(t),n=[];for(var u in t)("constructor"!=u||!e&&s.call(t,u))&&n.push(u);return n}},"6qls":function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("tz6c");class a{constructor(t,e){this.docService=t,this.i18n=e,this.docText=this.i18n("documentation")}ngOnInit(){this.docService.subscribeOnce(this.section,t=>{this.docUrl=t})}}},"7+rY":function(t,e,n){var a=n("bQrF"),r=n("MOZO"),i=n("Uies"),s=n("hmSm"),u=n("Wv1A");t.exports=function(t,e,n,o){if(!s(t))return t;for(var l=-1,d=(e=r(e,t)).length,c=d-1,f=t;null!=f&&++l<d;){var h=u(e[l]),g=n;if("__proto__"===h||"constructor"===h||"prototype"===h)return t;if(l!=c){var p=f[h];void 0===(g=o?o(p,h,f):void 0)&&(g=s(p)?p:i(e[l+1])?[]:{})}a(f,h,g),f=f[h]}return t}},"77kF":function(t,e,n){var a=n("bQrF"),r=n("ZPW6");t.exports=function(t,e,n,i){var s=!n;n||(n={});for(var u=-1,o=e.length;++u<o;){var l=e[u],d=i?i(n[l],t[l],l,n,t):void 0;void 0===d&&(d=t[l]),s?r(n,l,d):a(n,l,d)}return n}},"7BjC":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[t+"sekundi",t+"sekundit"],m:["ühe minuti","üks minut"],mm:[t+" minuti",t+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[t+" tunni",t+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[t+" kuu",t+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[t+" aasta",t+" aastat"]};return e?r[n][2]?r[n][2]:r[n][1]:a?r[n][0]:r[n][1]}t.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d päeva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"7Igq":function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},"7Nlv":function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}},"7VGY":function(t,e,n){var a=n("7Nlv"),r=n("BkBO"),i=n("l9nr"),s=n("0GLT"),u=n("QUkU");t.exports=function(t,e,n){var o=s(t)?a:r;return n&&u(t,e,n)&&(e=void 0),o(t,i(e,3))}},"7aV9":function(t,e,n){!function(t){"use strict";t.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(t){return t+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(t){return"ප.ව."===t||"පස් වරු"===t},meridiem:function(t,e,n){return t>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("wd/R"))},"7o/Q":function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("n6bG"),r=n("gRHU"),i=n("quSY"),s=n("2QA8"),u=n("2fFW"),o=n("NJ4a");class l extends i.a{constructor(t,e,n){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=r.a;break;case 1:if(!t){this.destination=r.a;break}if("object"==typeof t){t instanceof l?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new d(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new d(this,t,e,n)}}[s.a](){return this}static create(t,e,n){const a=new l(t,e,n);return a.syncErrorThrowable=!1,a}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class d extends l{constructor(t,e,n,i){let s;super(),this._parentSubscriber=t;let u=this;Object(a.a)(e)?s=e:e&&(s=e.next,n=e.error,i=e.complete,e!==r.a&&(u=Object.create(e),Object(a.a)(u.unsubscribe)&&this.add(u.unsubscribe.bind(u)),u.unsubscribe=this.unsubscribe.bind(this))),this._context=u,this._next=s,this._error=n,this._complete=i}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:e}=this;u.a.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:e}=this,{useDeprecatedSynchronousErrorHandling:n}=u.a;if(this._error)n&&e.syncErrorThrowable?(this.__tryOrSetError(e,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(e.syncErrorThrowable)n?(e.syncErrorValue=t,e.syncErrorThrown=!0):Object(o.a)(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;Object(o.a)(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const e=()=>this._complete.call(this._context);u.a.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,e),this.unsubscribe()):(this.__tryOrUnsub(e),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),u.a.useDeprecatedSynchronousErrorHandling)throw n;Object(o.a)(n)}}__tryOrSetError(t,e,n){if(!u.a.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{e.call(this._context,n)}catch(a){return u.a.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=a,t.syncErrorThrown=!0,!0):(Object(o.a)(a),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}},"7qid":function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return f}));var a=n("8Y7J"),r=n("38Bd"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function u(t){return a["ɵvid"](0,[a["ɵncd"](null,0)],null,null)}var o=a["ɵcrt"]({encapsulation:0,styles:["[_nghost-%COMP%] {\n      width: 100%;\n      display: flex;\n    }"],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[2,"progress-bar-animated",null],[2,"progress-bar-striped",null],[2,"active",null],[1,"aria-valuenow",0],[1,"aria-valuetext",0],[1,"aria-valuemax",0],[4,"height","%"],[4,"width","%"],[2,"progress-bar",null]],null,null,u,s)),a["ɵdid"](1,245760,null,0,r.a,[a.ElementRef,r.b,a.Renderer2],{type:[0,"type"],value:[1,"value"]},null),a["ɵncd"](0,0)],(function(t,e){var n=e.component;t(e,1,0,n.type,n._value)}),(function(t,e){t(e,0,0,!a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).striped,a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).value,a["ɵnov"](e,1).percent?a["ɵnov"](e,1).percent.toFixed(0)+"%":"",a["ɵnov"](e,1).max,"100",a["ɵnov"](e,1).setBarWidth,a["ɵnov"](e,1).addClass)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[2,"progress-bar-animated",null],[2,"progress-bar-striped",null],[2,"active",null],[1,"aria-valuenow",0],[1,"aria-valuetext",0],[1,"aria-valuemax",0],[4,"height","%"],[4,"width","%"],[2,"progress-bar",null]],null,null,u,s)),a["ɵdid"](1,245760,null,0,r.a,[a.ElementRef,r.b,a.Renderer2],{type:[0,"type"],value:[1,"value"]},null),(t()(),a["ɵted"](2,0,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.type,e.context.$implicit.value)}),(function(t,e){t(e,0,0,!a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).striped,a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).value,a["ɵnov"](e,1).percent?a["ɵnov"](e,1).percent.toFixed(0)+"%":"",a["ɵnov"](e,1).max,"100",a["ɵnov"](e,1).setBarWidth,a["ɵnov"](e,1).addClass),t(e,2,0,e.context.$implicit.label)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](1,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component._value)}),null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](3,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,!n.isStacked),t(e,3,0,n.isStacked)}),null)}},"8+Q7":function(t,e){var n=Object.prototype.hasOwnProperty;t.exports=function(t){var e=t.length,a=new t.constructor(e);return e&&"string"==typeof t[0]&&n.call(t,"index")&&(a.index=t.index,a.input=t.input),a}},"8+is":function(t,e,n){var a=n("IWUC"),r=n("0nKi"),i=n("L0Z1"),s=i&&i.isSet,u=s?r(s):a;t.exports=u},"8/+R":function(t,e,n){!function(t){"use strict";var e={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};t.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(t){return t.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ਰਾਤ"===e?t<4?t:t+12:"ਸਵੇਰ"===e?t:"ਦੁਪਹਿਰ"===e?t>=10?t:t+12:"ਸ਼ਾਮ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ਰਾਤ":t<10?"ਸਵੇਰ":t<17?"ਦੁਪਹਿਰ":t<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("wd/R"))},"85J/":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=/ceph version\s+([^ ]+)\s+\(.+\)/.exec(t);return e?e[1]:t}}},"8SuI":function(t,e,n){t.exports=n("K3g9")},"8Tpr":function(t,e,n){var a=n("r2+u"),r=n("0nKi"),i=n("L0Z1"),s=i&&i.isMap,u=s?r(s):a;t.exports=u},"8V0S":function(t,e,n){var a=n("6MU2"),r=Math.max;t.exports=function(t,e,n){return e=r(void 0===e?t.length-1:e,0),function(){for(var i=arguments,s=-1,u=r(i.length-e,0),o=Array(u);++s<u;)o[s]=i[e+s];s=-1;for(var l=Array(e+1);++s<e;)l[s]=i[s];return l[e]=n(o),a(t,this,l)}}},"8Y7J":function(t,e,n){"use strict";n.r(e);var a=n("XNiG"),r=n("quSY"),i=n("HDdC"),s=n("VRyK"),u=n("7o/Q");function o(){return function(t){return t.lift(new l(t))}}class l{constructor(t){this.connectable=t}call(t,e){const{connectable:n}=this;n._refCount++;const a=new d(t,n),r=e.subscribe(a);return a.closed||(a.connection=n.connect()),r}}class d extends u.a{constructor(t,e){super(t),this.connectable=e}_unsubscribe(){const{connectable:t}=this;if(!t)return void(this.connection=null);this.connectable=null;const e=t._refCount;if(e<=0)return void(this.connection=null);if(t._refCount=e-1,e>1)return void(this.connection=null);const{connection:n}=this,a=t._connection;this.connection=null,!a||n&&a!==n||a.unsubscribe()}}class c extends i.a{constructor(t,e){super(),this.source=t,this.subjectFactory=e,this._refCount=0,this._isComplete=!1}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject}connect(){let t=this._connection;return t||(this._isComplete=!1,t=this._connection=new r.a,t.add(this.source.subscribe(new h(this.getSubject(),this))),t.closed&&(this._connection=null,t=r.a.EMPTY)),t}refCount(){return o()(this)}}const f=(()=>{const t=c.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}})();class h extends a.b{constructor(t,e){super(t),this.connectable=e}_error(t){this._unsubscribe(),super._error(t)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const t=this.connectable;if(t){this.connectable=null;const e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}}}function g(){return new a.a}n.d(e,"ɵangular_packages_core_core_q",(function(){return fv})),n.d(e,"ɵangular_packages_core_core_n",(function(){return lv})),n.d(e,"ɵangular_packages_core_core_o",(function(){return dv})),n.d(e,"ɵangular_packages_core_core_p",(function(){return cv})),n.d(e,"ɵangular_packages_core_core_r",(function(){return hv})),n.d(e,"ɵangular_packages_core_core_f",(function(){return xm})),n.d(e,"ɵangular_packages_core_core_l",(function(){return lf})),n.d(e,"ɵangular_packages_core_core_m",(function(){return bf})),n.d(e,"ɵangular_packages_core_core_k",(function(){return Wy})),n.d(e,"ɵangular_packages_core_core_j",(function(){return Uy})),n.d(e,"ɵangular_packages_core_core_b",(function(){return ot})),n.d(e,"ɵangular_packages_core_core_a",(function(){return at})),n.d(e,"ɵangular_packages_core_core_c",(function(){return yo})),n.d(e,"ɵangular_packages_core_core_d",(function(){return io})),n.d(e,"ɵangular_packages_core_core_e",(function(){return fo})),n.d(e,"ɵangular_packages_core_core_i",(function(){return Py})),n.d(e,"ɵangular_packages_core_core_s",(function(){return ty})),n.d(e,"ɵangular_packages_core_core_u",(function(){return Jm})),n.d(e,"ɵangular_packages_core_core_t",(function(){return $m})),n.d(e,"ɵangular_packages_core_core_x",(function(){return Xm})),n.d(e,"ɵangular_packages_core_core_v",(function(){return Zm})),n.d(e,"ɵangular_packages_core_core_w",(function(){return Qm})),n.d(e,"ɵangular_packages_core_core_ba",(function(){return Sg})),n.d(e,"ɵangular_packages_core_core_bb",(function(){return xa})),n.d(e,"ɵangular_packages_core_core_bc",(function(){return Ae})),n.d(e,"ɵangular_packages_core_core_bd",(function(){return Ge})),n.d(e,"ɵangular_packages_core_core_be",(function(){return rn})),n.d(e,"ɵangular_packages_core_core_bm",(function(){return ca})),n.d(e,"ɵangular_packages_core_core_bl",(function(){return ve})),n.d(e,"ɵangular_packages_core_core_g",(function(){return $s})),n.d(e,"ɵangular_packages_core_core_h",(function(){return Js})),n.d(e,"ɵangular_packages_core_core_bg",(function(){return Cr})),n.d(e,"ɵangular_packages_core_core_bk",(function(){return Ot})),n.d(e,"ɵangular_packages_core_core_bh",(function(){return x})),n.d(e,"ɵangular_packages_core_core_bi",(function(){return _})),n.d(e,"ɵangular_packages_core_core_bn",(function(){return R})),n.d(e,"ɵangular_packages_core_core_y",(function(){return dg})),n.d(e,"ɵangular_packages_core_core_z",(function(){return Vf})),n.d(e,"createPlatform",(function(){return Sy})),n.d(e,"assertPlatform",(function(){return Ny})),n.d(e,"destroyPlatform",(function(){return Cy})),n.d(e,"getPlatform",(function(){return Ry})),n.d(e,"PlatformRef",(function(){return Ay})),n.d(e,"ApplicationRef",(function(){return Ey})),n.d(e,"createPlatformFactory",(function(){return Iy})),n.d(e,"NgProbeToken",(function(){return Oy})),n.d(e,"enableProdMode",(function(){return Ka})),n.d(e,"isDevMode",(function(){return Wa})),n.d(e,"APP_ID",(function(){return vm})),n.d(e,"PACKAGE_ROOT_URL",(function(){return Im})),n.d(e,"PLATFORM_INITIALIZER",(function(){return wm})),n.d(e,"PLATFORM_ID",(function(){return Om})),n.d(e,"APP_BOOTSTRAP_LISTENER",(function(){return Sm})),n.d(e,"APP_INITIALIZER",(function(){return mm})),n.d(e,"ApplicationInitStatus",(function(){return ym})),n.d(e,"DebugElement",(function(){return uv})),n.d(e,"DebugEventListener",(function(){return Hy})),n.d(e,"DebugNode",(function(){return sv})),n.d(e,"asNativeElements",(function(){return Ky})),n.d(e,"getDebugNode",(function(){return rv})),n.d(e,"Testability",(function(){return py})),n.d(e,"TestabilityRegistry",(function(){return by})),n.d(e,"setTestabilityGetter",(function(){return yy})),n.d(e,"TRANSLATIONS",(function(){return Rm})),n.d(e,"TRANSLATIONS_FORMAT",(function(){return Am})),n.d(e,"LOCALE_ID",(function(){return Cm})),n.d(e,"MissingTranslationStrategy",(function(){return km})),n.d(e,"ApplicationModule",(function(){return gv})),n.d(e,"wtfCreateScope",(function(){return ny})),n.d(e,"wtfLeave",(function(){return ay})),n.d(e,"wtfStartTimeRange",(function(){return ry})),n.d(e,"wtfEndTimeRange",(function(){return iy})),n.d(e,"Type",(function(){return nu})),n.d(e,"EventEmitter",(function(){return tb})),n.d(e,"ErrorHandler",(function(){return Da})),n.d(e,"Sanitizer",(function(){return vr})),n.d(e,"SecurityContext",(function(){return yr})),n.d(e,"Attribute",(function(){return N})),n.d(e,"ANALYZE_FOR_ENTRY_COMPONENTS",(function(){return vo})),n.d(e,"ContentChild",(function(){return To})),n.d(e,"ContentChildren",(function(){return _o})),n.d(e,"Query",(function(){return xo})),n.d(e,"ViewChild",(function(){return Oo})),n.d(e,"ViewChildren",(function(){return wo})),n.d(e,"Component",(function(){return nm})),n.d(e,"Directive",(function(){return em})),n.d(e,"HostBinding",(function(){return sm})),n.d(e,"HostListener",(function(){return um})),n.d(e,"Input",(function(){return rm})),n.d(e,"Output",(function(){return im})),n.d(e,"Pipe",(function(){return am})),n.d(e,"NgModule",(function(){return gm})),n.d(e,"CUSTOM_ELEMENTS_SCHEMA",(function(){return Pa})),n.d(e,"NO_ERRORS_SCHEMA",(function(){return Ma})),n.d(e,"ViewEncapsulation",(function(){return wt})),n.d(e,"Version",(function(){return uf})),n.d(e,"VERSION",(function(){return of})),n.d(e,"InjectFlags",(function(){return C})),n.d(e,"ɵɵdefineInjectable",(function(){return k})),n.d(e,"defineInjectable",(function(){return E})),n.d(e,"ɵɵdefineInjector",(function(){return L})),n.d(e,"forwardRef",(function(){return V})),n.d(e,"resolveForwardRef",(function(){return G})),n.d(e,"Injectable",(function(){return Ou})),n.d(e,"Injector",(function(){return Bu})),n.d(e,"ɵɵinject",(function(){return rt})),n.d(e,"inject",(function(){return it})),n.d(e,"INJECTOR",(function(){return $})),n.d(e,"ReflectiveInjector",(function(){return mo})),n.d(e,"ResolvedReflectiveFactory",(function(){return oo})),n.d(e,"ReflectiveKey",(function(){return to})),n.d(e,"InjectionToken",(function(){return K})),n.d(e,"Inject",(function(){return T})),n.d(e,"Optional",(function(){return w})),n.d(e,"Self",(function(){return O})),n.d(e,"SkipSelf",(function(){return S})),n.d(e,"Host",(function(){return I})),n.d(e,"NgZone",(function(){return oy})),n.d(e,"ɵNoopNgZone",(function(){return gy})),n.d(e,"RenderComponentType",(function(){return Zc})),n.d(e,"Renderer",(function(){return Xc})),n.d(e,"Renderer2",(function(){return af})),n.d(e,"RendererFactory2",(function(){return ef})),n.d(e,"RendererStyleFlags2",(function(){return nf})),n.d(e,"RootRenderer",(function(){return tf})),n.d(e,"COMPILER_OPTIONS",(function(){return Hm})),n.d(e,"Compiler",(function(){return Ym})),n.d(e,"CompilerFactory",(function(){return Um})),n.d(e,"ModuleWithComponentFactories",(function(){return Dm})),n.d(e,"ComponentFactory",(function(){return Vc})),n.d(e,"ɵComponentFactory",(function(){return Vc})),n.d(e,"ComponentRef",(function(){return Fc})),n.d(e,"ComponentFactoryResolver",(function(){return Yc})),n.d(e,"ElementRef",(function(){return Kc})),n.d(e,"NgModuleFactory",(function(){return ht})),n.d(e,"NgModuleRef",(function(){return ft})),n.d(e,"NgModuleFactoryLoader",(function(){return Dy})),n.d(e,"getModuleFactory",(function(){return qy})),n.d(e,"QueryList",(function(){return nb})),n.d(e,"SystemJsNgModuleLoader",(function(){return Gy})),n.d(e,"SystemJsNgModuleLoaderConfig",(function(){return Fy})),n.d(e,"TemplateRef",(function(){return Of})),n.d(e,"ViewContainerRef",(function(){return Nf})),n.d(e,"EmbeddedViewRef",(function(){return Yy})),n.d(e,"ViewRef",(function(){return zy})),n.d(e,"ChangeDetectionStrategy",(function(){return xt})),n.d(e,"ChangeDetectorRef",(function(){return Xs})),n.d(e,"DefaultIterableDiffer",(function(){return cf})),n.d(e,"IterableDiffers",(function(){return vf})),n.d(e,"KeyValueDiffers",(function(){return xf})),n.d(e,"SimpleChange",(function(){return Tc})),n.d(e,"WrappedValue",(function(){return Mo})),n.d(e,"platformCore",(function(){return ov})),n.d(e,"ɵALLOW_MULTIPLE_PLATFORMS",(function(){return wy})),n.d(e,"ɵAPP_ID_RANDOM_PROVIDER",(function(){return _m})),n.d(e,"ɵdefaultIterableDiffers",(function(){return Tf})),n.d(e,"ɵdefaultKeyValueDiffers",(function(){return wf})),n.d(e,"ɵdevModeEqual",(function(){return Po})),n.d(e,"ɵisListLikeIterable",(function(){return qo})),n.d(e,"ɵChangeDetectorStatus",(function(){return _t})),n.d(e,"ɵisDefaultChangeDetectionStrategy",(function(){return Tt})),n.d(e,"ɵConsole",(function(){return Nm})),n.d(e,"ɵsetCurrentInjector",(function(){return et})),n.d(e,"ɵgetInjectableDef",(function(){return D})),n.d(e,"ɵAPP_ROOT",(function(){return Nu})),n.d(e,"ɵDEFAULT_LOCALE_ID",(function(){return Dg})),n.d(e,"ɵivyEnabled",(function(){return Lm})),n.d(e,"ɵCodegenComponentFactoryResolver",(function(){return Hc})),n.d(e,"ɵclearResolutionOfComponentResourcesQueue",(function(){return Ro})),n.d(e,"ɵresolveComponentResources",(function(){return So})),n.d(e,"ɵReflectionCapabilities",(function(){return ou})),n.d(e,"ɵRenderDebugInfo",(function(){return Qc})),n.d(e,"ɵ_sanitizeHtml",(function(){return br})),n.d(e,"ɵ_sanitizeStyle",(function(){return Tr})),n.d(e,"ɵ_sanitizeUrl",(function(){return Qa})),n.d(e,"ɵglobal",(function(){return U})),n.d(e,"ɵlooseIdentical",(function(){return Do})),n.d(e,"ɵstringify",(function(){return j})),n.d(e,"ɵmakeDecorator",(function(){return y})),n.d(e,"ɵisObservable",(function(){return ed})),n.d(e,"ɵisPromise",(function(){return td})),n.d(e,"ɵclearOverrides",(function(){return zx})),n.d(e,"ɵinitServicesIfNeeded",(function(){return rx})),n.d(e,"ɵoverrideComponentView",(function(){return Bx})),n.d(e,"ɵoverrideProvider",(function(){return Gx})),n.d(e,"ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR",(function(){return mg})),n.d(e,"ɵgetLocalePluralCase",(function(){return Eg})),n.d(e,"ɵfindLocaleData",(function(){return Lg})),n.d(e,"ɵLOCALE_DATA",(function(){return Cg})),n.d(e,"ɵLocaleDataIndex",(function(){return Rg})),n.d(e,"ɵɵattribute",(function(){return Wo})),n.d(e,"ɵɵattributeInterpolate1",(function(){return al})),n.d(e,"ɵɵattributeInterpolate2",(function(){return rl})),n.d(e,"ɵɵattributeInterpolate3",(function(){return il})),n.d(e,"ɵɵattributeInterpolate4",(function(){return sl})),n.d(e,"ɵɵattributeInterpolate5",(function(){return ul})),n.d(e,"ɵɵattributeInterpolate6",(function(){return ol})),n.d(e,"ɵɵattributeInterpolate7",(function(){return ll})),n.d(e,"ɵɵattributeInterpolate8",(function(){return dl})),n.d(e,"ɵɵattributeInterpolateV",(function(){return cl})),n.d(e,"ɵɵdefineBase",(function(){return Bt})),n.d(e,"ɵɵdefineComponent",(function(){return Pt})),n.d(e,"ɵɵdefineDirective",(function(){return zt})),n.d(e,"ɵɵdefinePipe",(function(){return Yt})),n.d(e,"ɵɵdefineNgModule",(function(){return Ft})),n.d(e,"ɵdetectChanges",(function(){return fl})),n.d(e,"ɵrenderComponent",(function(){return bc})),n.d(e,"ɵRender3ComponentFactory",(function(){return Ig})),n.d(e,"ɵRender3ComponentRef",(function(){return Ng})),n.d(e,"ɵɵdirectiveInject",(function(){return Tl})),n.d(e,"ɵɵinjectAttribute",(function(){return wl})),n.d(e,"ɵɵinjectPipeChangeDetectorRef",(function(){return Sb})),n.d(e,"ɵɵgetFactoryOf",(function(){return Ra})),n.d(e,"ɵɵgetInheritedFactory",(function(){return Aa})),n.d(e,"ɵɵsetComponentScope",(function(){return Mt})),n.d(e,"ɵɵsetNgModuleScope",(function(){return Vt})),n.d(e,"ɵɵtemplateRefExtractor",(function(){return Ob})),n.d(e,"ɵɵProvidersFeature",(function(){return jc})),n.d(e,"ɵɵInheritDefinitionFeature",(function(){return Nc})),n.d(e,"ɵɵNgOnChangesFeature",(function(){return wc})),n.d(e,"ɵLifecycleHooksFeature",(function(){return xc})),n.d(e,"ɵRender3NgModuleRef",(function(){return Lp})),n.d(e,"ɵmarkDirty",(function(){return hl})),n.d(e,"ɵNgModuleFactory",(function(){return Dp})),n.d(e,"ɵNO_CHANGE",(function(){return ci})),n.d(e,"ɵɵcontainer",(function(){return gl})),n.d(e,"ɵɵnextContext",(function(){return ud})),n.d(e,"ɵɵelementStart",(function(){return zl})),n.d(e,"ɵɵnamespaceHTML",(function(){return gn})),n.d(e,"ɵɵnamespaceMathML",(function(){return hn})),n.d(e,"ɵɵnamespaceSVG",(function(){return fn})),n.d(e,"ɵɵelement",(function(){return Hl})),n.d(e,"ɵɵlistener",(function(){return nd})),n.d(e,"ɵɵtext",(function(){return wd})),n.d(e,"ɵɵtextInterpolate",(function(){return Sd})),n.d(e,"ɵɵtextInterpolate1",(function(){return Id})),n.d(e,"ɵɵtextInterpolate2",(function(){return Nd})),n.d(e,"ɵɵtextInterpolate3",(function(){return Cd})),n.d(e,"ɵɵtextInterpolate4",(function(){return Rd})),n.d(e,"ɵɵtextInterpolate5",(function(){return Ad})),n.d(e,"ɵɵtextInterpolate6",(function(){return kd})),n.d(e,"ɵɵtextInterpolate7",(function(){return Ed})),n.d(e,"ɵɵtextInterpolate8",(function(){return Ld})),n.d(e,"ɵɵtextInterpolateV",(function(){return Dd})),n.d(e,"ɵɵembeddedViewStart",(function(){return Zl})),n.d(e,"ɵɵprojection",(function(){return fd})),n.d(e,"ɵɵpipeBind1",(function(){return Wp})),n.d(e,"ɵɵpipeBind2",(function(){return Kp})),n.d(e,"ɵɵpipeBind3",(function(){return $p})),n.d(e,"ɵɵpipeBind4",(function(){return Jp})),n.d(e,"ɵɵpipeBindV",(function(){return Zp})),n.d(e,"ɵɵpureFunction0",(function(){return Mp})),n.d(e,"ɵɵpureFunction1",(function(){return qp})),n.d(e,"ɵɵpureFunction2",(function(){return jp})),n.d(e,"ɵɵpureFunction3",(function(){return Fp})),n.d(e,"ɵɵpureFunction4",(function(){return Vp})),n.d(e,"ɵɵpureFunction5",(function(){return Gp})),n.d(e,"ɵɵpureFunction6",(function(){return Bp})),n.d(e,"ɵɵpureFunction7",(function(){return zp})),n.d(e,"ɵɵpureFunction8",(function(){return Yp})),n.d(e,"ɵɵpureFunctionV",(function(){return Hp})),n.d(e,"ɵɵgetCurrentView",(function(){return Xl})),n.d(e,"ɵgetDirectives",(function(){return sc})),n.d(e,"ɵgetHostElement",(function(){return oc})),n.d(e,"ɵɵrestoreView",(function(){return Ve})),n.d(e,"ɵɵcontainerRefreshStart",(function(){return bl})),n.d(e,"ɵɵcontainerRefreshEnd",(function(){return ml})),n.d(e,"ɵɵqueryRefresh",(function(){return cb})),n.d(e,"ɵɵviewQuery",(function(){return hb})),n.d(e,"ɵɵstaticViewQuery",(function(){return fb})),n.d(e,"ɵɵstaticContentQuery",(function(){return mb})),n.d(e,"ɵɵloadViewQuery",(function(){return pb})),n.d(e,"ɵɵcontentQuery",(function(){return bb})),n.d(e,"ɵɵloadContentQuery",(function(){return vb})),n.d(e,"ɵɵelementEnd",(function(){return Yl})),n.d(e,"ɵɵhostProperty",(function(){return Xd})),n.d(e,"ɵɵproperty",(function(){return Ho})),n.d(e,"ɵɵpropertyInterpolate",(function(){return hd})),n.d(e,"ɵɵpropertyInterpolate1",(function(){return gd})),n.d(e,"ɵɵpropertyInterpolate2",(function(){return pd})),n.d(e,"ɵɵpropertyInterpolate3",(function(){return bd})),n.d(e,"ɵɵpropertyInterpolate4",(function(){return md})),n.d(e,"ɵɵpropertyInterpolate5",(function(){return yd})),n.d(e,"ɵɵpropertyInterpolate6",(function(){return vd})),n.d(e,"ɵɵpropertyInterpolate7",(function(){return xd})),n.d(e,"ɵɵpropertyInterpolate8",(function(){return _d})),n.d(e,"ɵɵpropertyInterpolateV",(function(){return Td})),n.d(e,"ɵɵupdateSyntheticHostBinding",(function(){return tc})),n.d(e,"ɵɵcomponentHostSyntheticListener",(function(){return ad})),n.d(e,"ɵɵprojectionDef",(function(){return ld})),n.d(e,"ɵɵreference",(function(){return xl})),n.d(e,"ɵɵenableBindings",(function(){return Ce})),n.d(e,"ɵɵdisableBindings",(function(){return Re})),n.d(e,"ɵɵallocHostVars",(function(){return ko})),n.d(e,"ɵɵelementContainerStart",(function(){return Kl})),n.d(e,"ɵɵelementContainerEnd",(function(){return $l})),n.d(e,"ɵɵelementContainer",(function(){return Jl})),n.d(e,"ɵɵstyling",(function(){return Ol})),n.d(e,"ɵɵstyleMap",(function(){return Al})),n.d(e,"ɵɵstyleSanitizer",(function(){return Sl})),n.d(e,"ɵɵclassMap",(function(){return kl})),n.d(e,"ɵɵclassMapInterpolate1",(function(){return Pd})),n.d(e,"ɵɵclassMapInterpolate2",(function(){return Md})),n.d(e,"ɵɵclassMapInterpolate3",(function(){return qd})),n.d(e,"ɵɵclassMapInterpolate4",(function(){return jd})),n.d(e,"ɵɵclassMapInterpolate5",(function(){return Fd})),n.d(e,"ɵɵclassMapInterpolate6",(function(){return Vd})),n.d(e,"ɵɵclassMapInterpolate7",(function(){return Gd})),n.d(e,"ɵɵclassMapInterpolate8",(function(){return Bd})),n.d(e,"ɵɵclassMapInterpolateV",(function(){return zd})),n.d(e,"ɵɵstyleProp",(function(){return Il})),n.d(e,"ɵɵstylePropInterpolate1",(function(){return Yd})),n.d(e,"ɵɵstylePropInterpolate2",(function(){return Hd})),n.d(e,"ɵɵstylePropInterpolate3",(function(){return Ud})),n.d(e,"ɵɵstylePropInterpolate4",(function(){return Wd})),n.d(e,"ɵɵstylePropInterpolate5",(function(){return Kd})),n.d(e,"ɵɵstylePropInterpolate6",(function(){return $d})),n.d(e,"ɵɵstylePropInterpolate7",(function(){return Jd})),n.d(e,"ɵɵstylePropInterpolate8",(function(){return Zd})),n.d(e,"ɵɵstylePropInterpolateV",(function(){return Qd})),n.d(e,"ɵɵstylingApply",(function(){return Pl})),n.d(e,"ɵɵclassProp",(function(){return Cl})),n.d(e,"ɵɵelementHostAttrs",(function(){return Ul})),n.d(e,"ɵɵselect",(function(){return wi})),n.d(e,"ɵɵtextBinding",(function(){return Od})),n.d(e,"ɵɵtemplate",(function(){return pl})),n.d(e,"ɵɵembeddedViewEnd",(function(){return Ql})),n.d(e,"ɵstore",(function(){return vl})),n.d(e,"ɵɵload",(function(){return _l})),n.d(e,"ɵɵpipe",(function(){return Up})),n.d(e,"ɵwhenRendered",(function(){return _c})),n.d(e,"ɵɵi18n",(function(){return dp})),n.d(e,"ɵɵi18nAttributes",(function(){return cp})),n.d(e,"ɵɵi18nExp",(function(){return gp})),n.d(e,"ɵɵi18nStart",(function(){return np})),n.d(e,"ɵɵi18nEnd",(function(){return sp})),n.d(e,"ɵɵi18nApply",(function(){return pp})),n.d(e,"ɵɵi18nPostprocess",(function(){return ip})),n.d(e,"ɵi18nConfigureLocalize",(function(){return Tp})),n.d(e,"ɵɵi18nLocalize",(function(){return Op})),n.d(e,"ɵsetLocaleId",(function(){return Ip})),n.d(e,"ɵsetClassMetadata",(function(){return Pp})),n.d(e,"ɵɵresolveWindow",(function(){return Tn})),n.d(e,"ɵɵresolveDocument",(function(){return wn})),n.d(e,"ɵɵresolveBody",(function(){return On})),n.d(e,"ɵcompileComponent",(function(){return Bb})),n.d(e,"ɵcompileDirective",(function(){return zb})),n.d(e,"ɵcompileNgModule",(function(){return Eb})),n.d(e,"ɵcompileNgModuleDefs",(function(){return Lb})),n.d(e,"ɵpatchComponentDefWithScope",(function(){return jb})),n.d(e,"ɵresetCompiledComponents",(function(){return Mb})),n.d(e,"ɵflushModuleScopingQueueAsMuchAsPossible",(function(){return Ab})),n.d(e,"ɵtransitiveScopesFor",(function(){return Fb})),n.d(e,"ɵcompilePipe",(function(){return tm})),n.d(e,"ɵɵsanitizeHtml",(function(){return wr})),n.d(e,"ɵɵsanitizeStyle",(function(){return Or})),n.d(e,"ɵɵdefaultStyleSanitizer",(function(){return Ar})),n.d(e,"ɵɵsanitizeScript",(function(){return Nr})),n.d(e,"ɵɵsanitizeUrl",(function(){return Sr})),n.d(e,"ɵɵsanitizeResourceUrl",(function(){return Ir})),n.d(e,"ɵɵsanitizeUrlOrResourceUrl",(function(){return Rr})),n.d(e,"ɵbypassSanitizationTrustHtml",(function(){return Fa})),n.d(e,"ɵbypassSanitizationTrustStyle",(function(){return Va})),n.d(e,"ɵbypassSanitizationTrustScript",(function(){return Ga})),n.d(e,"ɵbypassSanitizationTrustUrl",(function(){return Ba})),n.d(e,"ɵbypassSanitizationTrustResourceUrl",(function(){return za})),n.d(e,"ɵgetLContext",(function(){return Dr})),n.d(e,"ɵNG_ELEMENT_ID",(function(){return Lt})),n.d(e,"ɵNG_COMPONENT_DEF",(function(){return Nt})),n.d(e,"ɵNG_DIRECTIVE_DEF",(function(){return Ct})),n.d(e,"ɵNG_PIPE_DEF",(function(){return Rt})),n.d(e,"ɵNG_MODULE_DEF",(function(){return At})),n.d(e,"ɵNG_BASE_DEF",(function(){return Et})),n.d(e,"ɵNG_INJECTABLE_DEF",(function(){return M})),n.d(e,"ɵNG_INJECTOR_DEF",(function(){return q})),n.d(e,"ɵcompileNgModuleFactory__POST_R3__",(function(){return _y})),n.d(e,"ɵisBoundToModule__POST_R3__",(function(){return Ty})),n.d(e,"ɵSWITCH_COMPILE_COMPONENT__POST_R3__",(function(){return om})),n.d(e,"ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__",(function(){return lm})),n.d(e,"ɵSWITCH_COMPILE_PIPE__POST_R3__",(function(){return dm})),n.d(e,"ɵSWITCH_COMPILE_NGMODULE__POST_R3__",(function(){return pm})),n.d(e,"ɵgetDebugNode__POST_R3__",(function(){return av})),n.d(e,"ɵSWITCH_COMPILE_INJECTABLE__POST_R3__",(function(){return Su})),n.d(e,"ɵSWITCH_IVY_ENABLED__POST_R3__",(function(){return Em})),n.d(e,"ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__",(function(){return tu})),n.d(e,"ɵCompiler_compileModuleSync__POST_R3__",(function(){return Mm})),n.d(e,"ɵCompiler_compileModuleAsync__POST_R3__",(function(){return jm})),n.d(e,"ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__",(function(){return Vm})),n.d(e,"ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__",(function(){return Bm})),n.d(e,"ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__",(function(){return $c})),n.d(e,"ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__",(function(){return Sf})),n.d(e,"ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__",(function(){return Cf})),n.d(e,"ɵSWITCH_RENDERER2_FACTORY__POST_R3__",(function(){return rf})),n.d(e,"ɵgetModuleFactory__POST_R3__",(function(){return My})),n.d(e,"ɵregisterNgModuleType",(function(){return Ap})),n.d(e,"ɵpublishGlobalUtil",(function(){return pc})),n.d(e,"ɵpublishDefaultGlobalUtils",(function(){return gc})),n.d(e,"ɵcreateInjector",(function(){return Lu})),n.d(e,"ɵINJECTOR_IMPL__POST_R3__",(function(){return Vu})),n.d(e,"ɵregisterModuleFactory",(function(){return Cp})),n.d(e,"ɵEMPTY_ARRAY",(function(){return Th})),n.d(e,"ɵEMPTY_MAP",(function(){return wh})),n.d(e,"ɵand",(function(){return pv})),n.d(e,"ɵccf",(function(){return Mh})),n.d(e,"ɵcmf",(function(){return Yx})),n.d(e,"ɵcrt",(function(){return Uf})),n.d(e,"ɵdid",(function(){return ug})),n.d(e,"ɵeld",(function(){return bv})),n.d(e,"ɵgetComponentViewDefinitionFactory",(function(){return qh})),n.d(e,"ɵinlineInterpolate",(function(){return xh})),n.d(e,"ɵinterpolate",(function(){return vh})),n.d(e,"ɵmod",(function(){return Rh})),n.d(e,"ɵmpd",(function(){return Ch})),n.d(e,"ɵncd",(function(){return Iv})),n.d(e,"ɵnov",(function(){return Kh})),n.d(e,"ɵpid",(function(){return og})),n.d(e,"ɵprd",(function(){return lg})),n.d(e,"ɵpad",(function(){return Rv})),n.d(e,"ɵpod",(function(){return Av})),n.d(e,"ɵppd",(function(){return Cv})),n.d(e,"ɵqud",(function(){return _v})),n.d(e,"ɵted",(function(){return Ev})),n.d(e,"ɵunv",(function(){return Hf})),n.d(e,"ɵvid",(function(){return Pv}));const p="__annotations__",b="__parameters__",m="__prop__metadata__";function y(t,e,n,a,r){const i=v(e);function s(...t){if(this instanceof s)return i.call(this,...t),this;const e=new s(...t);return function(n){return r&&r(n,...t),(n.hasOwnProperty(p)?n[p]:Object.defineProperty(n,p,{value:[]})[p]).push(e),a&&a(n),n}}return n&&(s.prototype=Object.create(n.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s}function v(t){return function(...e){if(t){const n=t(...e);for(const t in n)this[t]=n[t]}}}function x(t,e,n){const a=v(e);function r(...t){if(this instanceof r)return a.apply(this,t),this;const e=new r(...t);return n.annotation=e,n;function n(t,n,a){const r=t.hasOwnProperty(b)?t[b]:Object.defineProperty(t,b,{value:[]})[b];for(;r.length<=a;)r.push(null);return(r[a]=r[a]||[]).push(e),t}}return n&&(r.prototype=Object.create(n.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r}function _(t,e,n,a){const r=v(e);function i(...t){if(this instanceof i)return r.apply(this,t),this;const e=new i(...t);return function(n,r){const i=n.constructor,s=i.hasOwnProperty(m)?i[m]:Object.defineProperty(i,m,{value:{}})[m];s[r]=s.hasOwnProperty(r)&&s[r]||[],s[r].unshift(e),a&&a(n,r,...t)}}return n&&(i.prototype=Object.create(n.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i}const T=x("Inject",t=>({token:t})),w=x("Optional"),O=x("Self"),S=x("SkipSelf"),I=x("Host"),N=x("Attribute",t=>({attributeName:t}));var C=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}({});function R(t){for(let e in t)if(t[e]===R)return e;throw Error("Could not find renamed property on target object.")}function A(t,e){for(const n in e)e.hasOwnProperty(n)&&!t.hasOwnProperty(n)&&(t[n]=e[n])}function k(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}const E=k;function L(t){return{factory:t.factory,providers:t.providers||[],imports:t.imports||[]}}function D(t){const e=t[M];return e&&e.token===t?e:null}function P(t){return t&&t.hasOwnProperty(q)?t[q]:null}const M=R({ngInjectableDef:R}),q=R({ngInjectorDef:R});function j(t){if("string"==typeof t)return t;if(t instanceof Array)return"["+t.map(j).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return""+t.overriddenName;if(t.name)return""+t.name;const e=t.toString();if(null==e)return""+e;const n=e.indexOf("\n");return-1===n?e:e.substring(0,n)}const F=R({__forward_ref__:R});function V(t){return t.__forward_ref__=V,t.toString=function(){return j(this())},t}function G(t){const e=t;return"function"==typeof e&&e.hasOwnProperty(F)&&e.__forward_ref__===V?e():t}const B="undefined"!=typeof globalThis&&globalThis,z="undefined"!=typeof window&&window,Y="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,H="undefined"!=typeof global&&global,U=B||H||z||Y;function W(){const t=U.ng;if(!t||!t.ɵcompilerFacade)throw new Error("Angular JIT compilation failed: '@angular/compiler' not loaded!\n  - JIT compilation is discouraged for production use-cases! Consider AOT mode instead.\n  - Did you bootstrap using '@angular/platform-browser-dynamic' or '@angular/platform-server'?\n  - Alternatively provide the compiler with 'import \"@angular/compiler\";' before bootstrapping.");return t.ɵcompilerFacade}class K{constructor(t,e){this._desc=t,this.ngMetadataName="InjectionToken",this.ngInjectableDef=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.ngInjectableDef=k({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}toString(){return"InjectionToken "+this._desc}}const $=new K("INJECTOR",-1),J=new Object,Z=/\n/gm,Q=R({provide:String,useValue:R});let X,tt=void 0;function et(t){const e=tt;return tt=t,e}function nt(t){const e=X;return X=t,e}function at(t,e=C.Default){if(void 0===tt)throw new Error("inject() must be called from an injection context");return null===tt?st(t,void 0,e):tt.get(t,e&C.Optional?null:void 0,e)}function rt(t,e=C.Default){return(X||at)(t,e)}const it=rt;function st(t,e,n){const a=D(t);if(a&&"root"==a.providedIn)return void 0===a.value?a.value=a.factory():a.value;if(n&C.Optional)return null;if(void 0!==e)return e;throw new Error(`Injector: NOT_FOUND [${j(t)}]`)}function ut(t){const e=[];for(let n=0;n<t.length;n++){const a=G(t[n]);if(Array.isArray(a)){if(0===a.length)throw new Error("Arguments array must have arguments.");let t=void 0,n=C.Default;for(let e=0;e<a.length;e++){const r=a[e];r instanceof w||"Optional"===r.ngMetadataName||r===w?n|=C.Optional:r instanceof S||"SkipSelf"===r.ngMetadataName||r===S?n|=C.SkipSelf:r instanceof O||"Self"===r.ngMetadataName||r===O?n|=C.Self:t=r instanceof T||r===T?r.token:r}e.push(rt(t,n))}else e.push(rt(a))}return e}class ot{get(t,e=J){if(e===J){const e=new Error(`NullInjectorError: No provider for ${j(t)}!`);throw e.name="NullInjectorError",e}return e}}function lt(t,e,n,a){const r=t.ngTempTokenPath;throw e.__source&&r.unshift(e.__source),t.message=dt("\n"+t.message,r,n,a),t.ngTokenPath=r,t.ngTempTokenPath=null,t}function dt(t,e,n,a=null){t=t&&"\n"===t.charAt(0)&&"ɵ"==t.charAt(1)?t.substr(2):t;let r=j(e);if(e instanceof Array)r=e.map(j).join(" -> ");else if("object"==typeof e){let t=[];for(let n in e)if(e.hasOwnProperty(n)){let a=e[n];t.push(n+":"+("string"==typeof a?JSON.stringify(a):j(a)))}r=`{${t.join(", ")}}`}return`${n}${a?"("+a+")":""}[${r}]: ${t.replace(Z,"\n  ")}`}const ct={"ɵɵdefineInjectable":k,"ɵɵdefineInjector":L,"ɵɵinject":rt,"ɵɵgetFactoryOf":function(t){const e=t,n=D(e)||P(e);return n&&void 0!==n.factory?n.factory:null}};class ft{}class ht{}function gt(t,e){for(let n=0;n<t.length;n++)e.push(t[n])}function pt(t,e){void 0===e&&(e=t);for(let n=0;n<t.length;n++){let a=t[n];Array.isArray(a)?(e===t&&(e=t.slice(0,n)),pt(a,e)):e!==t&&e.push(a)}return e}function bt(t,e){t.forEach(t=>Array.isArray(t)?bt(t,e):e(t))}function mt(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function yt(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function vt(t){throw new Error("ASSERTION ERROR: "+t)}const xt=function(){var t={OnPush:0,Default:1};return t[t.OnPush]="OnPush",t[t.Default]="Default",t}(),_t=function(){var t={CheckOnce:0,Checked:1,CheckAlways:2,Detached:3,Errored:4,Destroyed:5};return t[t.CheckOnce]="CheckOnce",t[t.Checked]="Checked",t[t.CheckAlways]="CheckAlways",t[t.Detached]="Detached",t[t.Errored]="Errored",t[t.Destroyed]="Destroyed",t}();function Tt(t){return null==t||t===xt.Default}const wt=function(){var t={Emulated:0,Native:1,None:2,ShadowDom:3};return t[t.Emulated]="Emulated",t[t.Native]="Native",t[t.None]="None",t[t.ShadowDom]="ShadowDom",t}();function Ot(t){return""+{toString:t}}const St={},It=[],Nt=R({ngComponentDef:R}),Ct=R({ngDirectiveDef:R}),Rt=R({ngPipeDef:R}),At=R({ngModuleDef:R}),kt=R({ngLocaleIdDef:R}),Et=R({ngBaseDef:R}),Lt=R({__NG_ELEMENT_ID__:R});let Dt=0;function Pt(t){const e=t.type,n=e.prototype,a={},r={type:e,providersResolver:null,consts:t.consts,vars:t.vars,factory:t.factory,template:t.template||null,ngContentSelectors:t.ngContentSelectors,hostBindings:t.hostBindings||null,contentQueries:t.contentQueries||null,declaredInputs:a,inputs:null,outputs:null,exportAs:t.exportAs||null,onChanges:null,onInit:n.ngOnInit||null,doCheck:n.ngDoCheck||null,afterContentInit:n.ngAfterContentInit||null,afterContentChecked:n.ngAfterContentChecked||null,afterViewInit:n.ngAfterViewInit||null,afterViewChecked:n.ngAfterViewChecked||null,onDestroy:n.ngOnDestroy||null,onPush:t.changeDetection===xt.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||wt.Emulated,id:"c",styles:t.styles||It,_:null,setInput:null,schemas:t.schemas||null,tView:null};return r._=Ot(()=>{const n=t.directives,i=t.features,s=t.pipes;r.id+=Dt++,r.inputs=Gt(t.inputs,a),r.outputs=Gt(t.outputs),i&&i.forEach(t=>t(r)),r.directiveDefs=n?()=>("function"==typeof n?n():n).map(qt):null,r.pipeDefs=s?()=>("function"==typeof s?s():s).map(jt):null,e.hasOwnProperty(M)||(e[M]=k({token:e,factory:t.factory}))}),r}function Mt(t,e,n){const a=t.ngComponentDef;a.directiveDefs=()=>e.map(qt),a.pipeDefs=()=>n.map(jt)}function qt(t){return Ht(t)||Ut(t)}function jt(t){return Wt(t)}function Ft(t){return{type:t.type,bootstrap:t.bootstrap||It,declarations:t.declarations||It,imports:t.imports||It,exports:t.exports||It,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}}function Vt(t,e){return Ot(()=>{const n=$t(t,!0);n.declarations=e.declarations||It,n.imports=e.imports||It,n.exports=e.exports||It})}function Gt(t,e){if(null==t)return St;const n={};for(const a in t)if(t.hasOwnProperty(a)){let r=t[a],i=r;Array.isArray(r)&&(i=r[1],r=r[0]),n[r]=a,e&&(e[r]=i)}return n}function Bt(t){const e={};return{inputs:Gt(t.inputs,e),declaredInputs:e,outputs:Gt(t.outputs),viewQuery:t.viewQuery||null,contentQueries:t.contentQueries||null,hostBindings:t.hostBindings||null}}const zt=Pt;function Yt(t){return{name:t.name,factory:t.factory,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function Ht(t){return t[Nt]||null}function Ut(t){return t[Ct]||null}function Wt(t){return t[Rt]||null}function Kt(t){return t[Et]||null}function $t(t,e){const n=t[At]||null;if(!n&&!0===e)throw new Error(`Type ${j(t)} does not have 'ngModuleDef' property.`);return n}function Jt(t){return Array.isArray(t)&&"object"==typeof t[1]}function Zt(t){return Array.isArray(t)&&!0===t[1]}function Qt(t){return 0!=(4&t.flags)}function Xt(t){return 1==(1&t.flags)}function te(t){return null!==t.template}function ee(t){return 0!=(512&t[2])}class ne{constructor(t,e,n){this.factory=t,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=n}}function ae(t,e,n,a,r,i){const{onChanges:s,onInit:u,doCheck:o}=e;r>=0&&(!n.preOrderHooks||r===n.preOrderHooks.length)&&(s||u||o)&&(n.preOrderHooks||(n.preOrderHooks=[])).push(a),i>=0&&(!n.preOrderCheckHooks||i===n.preOrderCheckHooks.length)&&(s||o)&&(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(a),s&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,s),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,s)),u&&(n.preOrderHooks||(n.preOrderHooks=[])).push(-t,u),o&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,o),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,o))}function re(t,e){if(t.firstTemplatePass)for(let n=e.directiveStart,a=e.directiveEnd;n<a;n++){const e=t.data[n];e.afterContentInit&&(t.contentHooks||(t.contentHooks=[])).push(-n,e.afterContentInit),e.afterContentChecked&&((t.contentHooks||(t.contentHooks=[])).push(n,e.afterContentChecked),(t.contentCheckHooks||(t.contentCheckHooks=[])).push(n,e.afterContentChecked)),e.afterViewInit&&(t.viewHooks||(t.viewHooks=[])).push(-n,e.afterViewInit),e.afterViewChecked&&((t.viewHooks||(t.viewHooks=[])).push(n,e.afterViewChecked),(t.viewCheckHooks||(t.viewCheckHooks=[])).push(n,e.afterViewChecked)),null!=e.onDestroy&&(t.destroyHooks||(t.destroyHooks=[])).push(n,e.onDestroy)}}function ie(t,e,n,a){n||se(t,e.preOrderHooks,e.preOrderCheckHooks,n,0,void 0!==a?a:null)}function se(t,e,n,a,r,i){if(a)return;const s=(3&t[2])===r?e:n;s&&function(t,e,n,a){const r=null!=a?a:-1;let i=0;for(let s=void 0!==a?65535&t[18]:0;s<e.length;s++)if("number"==typeof e[s+1]){if(i=e[s],null!=a&&i>=a)break}else e[s]<0&&(t[18]+=65536),(i<r||-1==r)&&(ue(t,n,e,s),t[18]=(4294901760&t[18])+s+2),s++}(t,s,r,i),null==i&&(3&t[2])===r&&3!==r&&(t[2]&=1023,t[2]+=1)}function ue(t,e,n,a){const r=n[a]<0,i=n[a+1],s=t[r?-n[a]:n[a]];r?t[2]>>10<t[18]>>16&&(3&t[2])===e&&(t[2]+=1024,i.call(s)):i.call(s)}let oe=null;const le=new Map;let de,ce=null;function fe(t,e){return ce&&t===ce||(ce=t,e&&(oe=le.get(t)||null),oe=oe||{classesBitMask:0,classesIndex:1,stylesBitMask:0,stylesIndex:1}),oe}function he(){oe=null,ce=null}function ge(t){for(;Array.isArray(t);)t=t[0];return t}function pe(t,e){return ge(e[t+19])}function be(t,e){return ge(e[t.index])}function me(t,e){const n=t.index;return-1==n?null:ge(e[n])}function ye(t,e){return e[1].data[t+19]}function ve(t,e){return t[e+19]}function xe(t,e){const n=e[t];return Jt(n)?n:n[0]}function _e(t){return t.__ngContext__}function Te(t){const e=_e(t);return e?Array.isArray(e)?e:e.lView:null}function we(t){t[18]=0}let Oe,Se=null;function Ie(t){Se=t}function Ne(){return Oe}function Ce(){Oe=!0}function Re(){Oe=!1}function Ae(){return Le}let ke,Ee,Le,De=1,Pe=0,Me=0;function qe(t=null){un!==t&&(ln(null==t?-1:t),De=null==t?0:1,Pe=0,Me=0)}function je(){De+=1+Me,Pe=0,Me=0}function Fe(t){Pe+=t,Me=Math.max(Me,Pe)}function Ve(t){We=t}function Ge(){return ke}function Be(t,e){ke=t,Ee=e}function ze(t,e){ke=t,Le=e}function Ye(){return Ee}function He(){Ee=!1}function Ue(t=Le){return 4==(4&t[2])}let We=null,Ke=!1;function $e(){return Ke}function Je(t){Ke=t}let Ze=-1;function Qe(){return Ze}function Xe(t){Ze=t}let tn=0;function en(){return tn}function nn(t){tn=t}function an(t,e){const n=Le;return t&&(Ze=t[1].bindingStartIndex),ke=e,Ee=!0,Le=We=t,n}function rn(t=1){return We=function(t,e){for(;t>0;)e=e[16],t--;return e}(t,We),We[9]}function sn(t,e){const n=Le[1];if(Ue(Le))Le[2]&=-5;else try{we(Le),e&&se(Le,n.viewHooks,n.viewCheckHooks,Ke,2,void 0)}finally{Le[2]&=-73,Le[7]=n.bindingStartIndex}an(t,null)}let un=-1;function on(){return un}function ln(t){un=t,he()}let dn,cn=null;function fn(){cn="http://www.w3.org/2000/svg"}function hn(){cn="http://www.w3.org/1998/MathML/"}function gn(){pn()}function pn(){cn=null}function bn(t){dn=t}function mn(){return dn}function yn(t,e){return!(t!=t&&e!=e)&&t!==e}function vn(t){return"string"==typeof t?t:null==t?"":""+t}function xn(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():vn(t)}const _n=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(U))();function Tn(t){return{name:"window",target:t.ownerDocument.defaultView}}function wn(t){return{name:"document",target:t.ownerDocument}}function On(t){return{name:"body",target:t.ownerDocument.body}}function Sn(t){return t.indexOf("�")>=0}function In(t){return t instanceof Function?t():t}function Nn(t,e){0===e?t[2]>0&&function(t){Rn(t,2|Cn(t))}(t):t[2]=e}function Cn(t){return t[1]}function Rn(t,e){t[1]=e}function An(t,e){return t[e+2]}function kn(t,e){return 1&t[e+0]}function En(t,e){return(1&kn(t,e))>0}function Ln(t,e){return t[e+0]>>1}function Dn(t,e,n){const a=kn(t,e);t[e+0]=a|n<<1}function Pn(t,e){return t[e+1]}function Mn(t,e,n){return t[e+3+n]}function qn(t,e){return!(!t||e!==t[2])}function jn(t){return(1&Cn(t))>0}function Fn(t){return(2&Cn(t))>0}function Vn(t){return 6+t[4]}function Gn(t,e){let n=Array.isArray(t)?t[0]:t,a=Array.isArray(e)?e[0]:e;return n instanceof String&&(n=n.toString()),a instanceof String&&(a=a.toString()),yn(n,a)}function Bn(t){return null!=t&&""!==t}function zn(t,e,n=" "){return t+(e.length&&t.length?n:"")+e}function Yn(t){return t.replace(/[a-z][A-Z]/g,t=>t.charAt(0)+"-"+t.charAt(1)).toLowerCase()}function Hn(t){return Un(t)?t[0]:t}function Un(t){return Array.isArray(t)&&t.length>=6&&"string"!=typeof t[1]}function Wn(t){const e=Hn(t);return e&&e[0]||""}function Kn(t){return 0!=(8&t.flags)}function $n(t){return 0!=(16&t.flags)}function Jn(t,e){return t[e+0]}function Zn(t,e,n){t[e+1]=n}function Qn(t,e){return t[e+1]}const Xn=function(){var t={Important:1,DashCase:2};return t[t.Important]="Important",t[t.DashCase]="DashCase",t}();function ta(t){return!!t.listen}const ea={createRenderer:(t,e)=>document};function na(t,e){const n=Ae()[12],a=ta(n);let r=0;for(;r<e.length;){const i=e[r];if("number"==typeof i){if(0!==i)break;r++;const s=e[r++],u=e[r++],o=e[r++];a?n.setAttribute(t,u,o,s):t.setAttributeNS(s,u,o)}else{const s=i,u=e[++r];ra(s)?a&&n.setProperty(t,s,u):a?n.setAttribute(t,s,u):t.setAttribute(s,u),r++}}return r}function aa(t){return 3===t||4===t||6===t}function ra(t){return"@"===t[0]}function ia(t){return-1!==t}function sa(t){return 32767&t}function ua(t){return t>>16}function oa(t,e){let n=ua(t),a=e;for(;n>0;)a=a[16],n--;return a}function la(t){const e=t[3];return Zt(e)?e[3]:e}function da(t){let e=t[6];for(;null!==e&&2===e.type;)e=(t=t[16])[6];return t}function ca(t){return function(t){let e=Jt(t)?t:Te(t);for(;e&&!(512&e[2]);)e=la(e);return e}(t)[9]}let fa=!0;function ha(t){const e=fa;return fa=t,e}let ga=0;function pa(t,e){const n=ma(t,e);if(-1!==n)return n;const a=e[1];a.firstTemplatePass&&(t.injectorIndex=e.length,ba(a.data,t),ba(e,null),ba(a.blueprint,null));const r=ya(t,e),i=sa(r),s=oa(r,e),u=t.injectorIndex;if(ia(r)){const t=s[1].data;for(let n=0;n<8;n++)e[u+n]=s[i+n]|t[i+n]}return e[u+8]=r,u}function ba(t,e){t.push(0,0,0,0,0,0,0,0,e)}function ma(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null==e[t.injectorIndex+8]?-1:t.injectorIndex}function ya(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let n=e[6],a=1;for(;n&&-1===n.injectorIndex;)n=(e=e[16])?e[6]:null,a++;return n?n.injectorIndex|a<<16:-1}function va(t,e,n){!function(t,e,n){let a="string"!=typeof n?n[Lt]:n.charCodeAt(0)||0;null==a&&(a=n[Lt]=ga++);const r=255&a,i=1<<r,s=64&r,u=32&r,o=e.data;128&r?s?u?o[t+7]|=i:o[t+6]|=i:u?o[t+5]|=i:o[t+4]|=i:s?u?o[t+3]|=i:o[t+2]|=i:u?o[t+1]|=i:o[t]|=i}(t,e,n)}function xa(t,e){if("class"===e)return Wn(t.classes);if("style"===e)return Wn(t.styles);const n=t.attrs;if(n){const t=n.length;let a=0;for(;a<t;){const r=n[a];if(aa(r))break;if(0===r)a+=2;else if("number"==typeof r)for(a++;a<t&&"string"==typeof n[a];)a++;else{if(r===e)return n[a+1];a+=2}}}return null}function _a(t,e,n,a=C.Default,r){if(t){const r=function(t){if("string"==typeof t)return t.charCodeAt(0)||0;const e=t[Lt];return"number"==typeof e&&e>0?255&e:e}(n);if("function"==typeof r){const i=Ge(),s=Ae();ze(t,e);try{const t=r();if(null!=t||a&C.Optional)return t;throw new Error(`No provider for ${xn(n)}!`)}finally{ze(i,s)}}else if("number"==typeof r){if(-1===r)return new Ca(t,e);let i=null,s=ma(t,e),u=-1,o=a&C.Host?da(e)[6]:null;for((-1===s||a&C.SkipSelf)&&(u=-1===s?ya(t,e):e[s+8],Na(a,!1)?(i=e[1],s=sa(u),e=oa(u,e)):s=-1);-1!==s;){u=e[s+8];const t=e[1];if(Ia(r,s,t.data)){const t=wa(s,e,n,i,a,o);if(t!==Ta)return t}Na(a,e[1].data[s+8]===o)&&Ia(r,s,e)?(i=t,s=sa(u),e=oa(u,e)):s=-1}}}if(a&C.Optional&&void 0===r&&(r=null),0==(a&(C.Self|C.Host))){const t=e[10],i=nt(void 0);try{return t?t.get(n,r,a&C.Optional):st(n,r,a&C.Optional)}finally{nt(i)}}if(a&C.Optional)return r;throw new Error(`NodeInjector: NOT_FOUND [${xn(n)}]`)}const Ta={};function wa(t,e,n,a,r,i){const s=e[1],u=s.data[t+8],o=Oa(u,s,n,null==a?Xt(u)&&fa:a!=s&&3===u.type,r&C.Host&&i===u);return null!==o?Sa(s.data,e,o,u):Ta}function Oa(t,e,n,a,r){const i=t.providerIndexes,s=e.data,u=65535&i,o=t.directiveStart,l=i>>16,d=r?u+l:t.directiveEnd;for(let c=a?u:u+l;c<d;c++){const t=s[c];if(c<o&&n===t||c>=o&&t.type===n)return c}if(r){const t=s[o];if(t&&te(t)&&t.type===n)return o}return null}function Sa(t,e,n,a){let r=e[n];if(null!==(i=r)&&"object"==typeof i&&Object.getPrototypeOf(i)==ne.prototype){const i=r;if(i.resolving)throw new Error("Circular dep for "+xn(t[n]));const s=ha(i.canSeeViewProviders);let u;i.resolving=!0,i.injectImpl&&(u=nt(i.injectImpl));const o=Ge(),l=Ae();ze(a,e);try{r=e[n]=i.factory(void 0,t,e,a)}finally{i.injectImpl&&nt(u),ha(s),i.resolving=!1,ze(o,l)}}var i;return r}function Ia(t,e,n){const a=64&t,r=32&t;let i;return i=128&t?a?r?n[e+7]:n[e+6]:r?n[e+5]:n[e+4]:a?r?n[e+3]:n[e+2]:r?n[e+1]:n[e],!!(i&1<<t)}function Na(t,e){return!(t&C.Self||t&C.Host&&e)}class Ca{constructor(t,e){this._tNode=t,this._lView=e}get(t,e){return _a(this._tNode,this._lView,t,void 0,e)}}function Ra(t){const e=t,n=Ht(e)||Ut(e)||Wt(e)||D(e)||P(e);return n&&void 0!==n.factory?n.factory:null}function Aa(t){const e=Ra(Object.getPrototypeOf(t.prototype).constructor);return null!==e?e:t=>new t}function ka(t){return t.ngDebugContext}function Ea(t){return t.ngOriginalError}function La(t,...e){t.error(...e)}class Da{constructor(){this._console=console}handleError(t){const e=this._findOriginalError(t),n=this._findContext(t),a=function(t){return t.ngErrorLogger||La}(t);a(this._console,"ERROR",t),e&&a(this._console,"ORIGINAL ERROR",e),n&&a(this._console,"ERROR CONTEXT",n)}_findContext(t){return t?ka(t)?ka(t):this._findContext(Ea(t)):null}_findOriginalError(t){let e=Ea(t);for(;e&&Ea(e);)e=Ea(e);return e}}const Pa={name:"custom-elements"},Ma={name:"no-errors-schema"},qa="__SANITIZER_TRUSTED_BRAND__";function ja(t,e){return t instanceof String&&t[qa]===e}function Fa(t){return Ya(t,"Html")}function Va(t){return Ya(t,"Style")}function Ga(t){return Ya(t,"Script")}function Ba(t){return Ya(t,"Url")}function za(t){return Ya(t,"ResourceUrl")}function Ya(t,e){const n=new String(t);return n[qa]=e,n}let Ha=!0,Ua=!1;function Wa(){return Ua=!0,Ha}function Ka(){if(Ua)throw new Error("Cannot enable prod mode after platform setup.");Ha=!1}class $a{constructor(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),this.inertBodyElement=this.inertDocument.body,null==this.inertBodyElement){const t=this.inertDocument.createElement("html");this.inertDocument.appendChild(t),this.inertBodyElement=this.inertDocument.createElement("body"),t.appendChild(this.inertBodyElement)}this.inertBodyElement.innerHTML='<svg><g onload="this.parentNode.remove()"></g></svg>',!this.inertBodyElement.querySelector||this.inertBodyElement.querySelector("svg")?(this.inertBodyElement.innerHTML='<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',this.getInertBodyElement=this.inertBodyElement.querySelector&&this.inertBodyElement.querySelector("svg img")&&function(){try{return!!window.DOMParser}catch(t){return!1}}()?this.getInertBodyElement_DOMParser:this.getInertBodyElement_InertDocument):this.getInertBodyElement=this.getInertBodyElement_XHR}getInertBodyElement_XHR(t){t="<body><remove></remove>"+t+"</body>";try{t=encodeURI(t)}catch(a){return null}const e=new XMLHttpRequest;e.responseType="document",e.open("GET","data:text/html;charset=utf-8,"+t,!1),e.send(void 0);const n=e.response.body;return n.removeChild(n.firstChild),n}getInertBodyElement_DOMParser(t){t="<body><remove></remove>"+t+"</body>";try{const e=(new window.DOMParser).parseFromString(t,"text/html").body;return e.removeChild(e.firstChild),e}catch(e){return null}}getInertBodyElement_InertDocument(t){const e=this.inertDocument.createElement("template");return"content"in e?(e.innerHTML=t,e):(this.inertBodyElement.innerHTML=t,this.defaultDoc.documentMode&&this.stripCustomNsAttrs(this.inertBodyElement),this.inertBodyElement)}stripCustomNsAttrs(t){const e=t.attributes;for(let a=e.length-1;0<a;a--){const n=e.item(a).name;"xmlns:ns1"!==n&&0!==n.indexOf("ns1:")||t.removeAttribute(n)}let n=t.firstChild;for(;n;)n.nodeType===Node.ELEMENT_NODE&&this.stripCustomNsAttrs(n),n=n.nextSibling}}const Ja=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Za=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i;function Qa(t){return(t=String(t)).match(Ja)||t.match(Za)?t:(Wa()&&console.warn(`WARNING: sanitizing unsafe URL value ${t} (see http://g.co/ng/security#xss)`),"unsafe:"+t)}function Xa(t){return(t=String(t)).split(",").map(t=>Qa(t.trim())).join(", ")}function tr(t){const e={};for(const n of t.split(","))e[n]=!0;return e}function er(...t){const e={};for(const n of t)for(const t in n)n.hasOwnProperty(t)&&(e[t]=!0);return e}const nr=tr("area,br,col,hr,img,wbr"),ar=tr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),rr=tr("rp,rt"),ir=er(rr,ar),sr=er(nr,er(ar,tr("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),er(rr,tr("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),ir),ur=tr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),or=tr("srcset"),lr=er(ur,or,tr("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),tr("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),dr=tr("script,style,template");class cr{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(t){let e=t.firstChild,n=!0;for(;e;)if(e.nodeType===Node.ELEMENT_NODE?n=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,n&&e.firstChild)e=e.firstChild;else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let t=this.checkClobberedElement(e,e.nextSibling);if(t){e=t;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")}startElement(t){const e=t.nodeName.toLowerCase();if(!sr.hasOwnProperty(e))return this.sanitizedSomething=!0,!dr.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const n=t.attributes;for(let a=0;a<n.length;a++){const t=n.item(a),e=t.name,r=e.toLowerCase();if(!lr.hasOwnProperty(r)){this.sanitizedSomething=!0;continue}let i=t.value;ur[r]&&(i=Qa(i)),or[r]&&(i=Xa(i)),this.buf.push(" ",e,'="',gr(i),'"')}return this.buf.push(">"),!0}endElement(t){const e=t.nodeName.toLowerCase();sr.hasOwnProperty(e)&&!nr.hasOwnProperty(e)&&(this.buf.push("</"),this.buf.push(e),this.buf.push(">"))}chars(t){this.buf.push(gr(t))}checkClobberedElement(t,e){if(e&&(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error("Failed to sanitize html because the element is clobbered: "+t.outerHTML);return e}}const fr=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,hr=/([^\#-~ |!])/g;function gr(t){return t.replace(/&/g,"&amp;").replace(fr,(function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"})).replace(hr,(function(t){return"&#"+t.charCodeAt(0)+";"})).replace(/</g,"&lt;").replace(/>/g,"&gt;")}let pr;function br(t,e){let n=null;try{pr=pr||new $a(t);let a=e?String(e):"";n=pr.getInertBodyElement(a);let r=5,i=a;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,a=i,i=n.innerHTML,n=pr.getInertBodyElement(a)}while(a!==i);const s=new cr,u=s.sanitizeChildren(mr(n)||n);return Wa()&&s.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),u}finally{if(n){const t=mr(n)||n;for(;t.firstChild;)t.removeChild(t.firstChild)}}}function mr(t){return"content"in t&&function(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}const yr=function(){var t={NONE:0,HTML:1,STYLE:2,SCRIPT:3,URL:4,RESOURCE_URL:5};return t[t.NONE]="NONE",t[t.HTML]="HTML",t[t.STYLE]="STYLE",t[t.SCRIPT]="SCRIPT",t[t.URL]="URL",t[t.RESOURCE_URL]="RESOURCE_URL",t}();class vr{}const xr=new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|Z|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:calc|attr))\\([-0-9.%, #a-zA-Z]+\\))$","g"),_r=/^url\(([^)]+)\)$/;function Tr(t){if(!(t=String(t).trim()))return"";const e=t.match(_r);return e&&Qa(e[1])===e[1]||t.match(xr)&&function(t){let e=!0,n=!0;for(let a=0;a<t.length;a++){const r=t.charAt(a);"'"===r&&n?e=!e:'"'===r&&e&&(n=!n)}return e&&n}(t)?t:(Wa()&&console.warn(`WARNING: sanitizing unsafe style value ${t} (see http://g.co/ng/security#xss).`),"unsafe")}function wr(t){const e=kr();return e?e.sanitize(yr.HTML,t)||"":ja(t,"Html")?t.toString():br(document,vn(t))}function Or(t){const e=kr();return e?e.sanitize(yr.STYLE,t)||"":ja(t,"Style")?t.toString():Tr(vn(t))}function Sr(t){const e=kr();return e?e.sanitize(yr.URL,t)||"":ja(t,"Url")?t.toString():Qa(vn(t))}function Ir(t){const e=kr();if(e)return e.sanitize(yr.RESOURCE_URL,t)||"";if(ja(t,"ResourceUrl"))return t.toString();throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)")}function Nr(t){const e=kr();if(e)return e.sanitize(yr.SCRIPT,t)||"";if(ja(t,"Script"))return t.toString();throw new Error("unsafe value used in a script context")}function Cr(t,e){return"src"===e&&("embed"===t||"frame"===t||"iframe"===t||"media"===t||"script"===t)||"href"===e&&("base"===t||"link"===t)?Ir:Sr}function Rr(t,e,n){return Cr(e,n)(t)}const Ar=function(t,e,n){let a=!0;return 1&(n=n||3)&&(a="background-image"===t||"background"===t||"border-image"===t||"filter"===t||"list-style"===t||"list-style-image"===t||"clip-path"===t),2&n?a?Or(e):e:a};function kr(){const t=Ae();return t&&t[13]}const Er=/([A-Z])/g;function Lr(t){try{return null!=t?t.toString().slice(0,30):t}catch(e){return"[ERROR] Exception while trying to serialize the value"}}function Dr(t){let e=_e(t);if(e){if(Array.isArray(e)){const a=e;let r,i=void 0,s=void 0;if((n=t)&&n.constructor&&n.constructor.ngComponentDef){if(r=Vr(a,t),-1==r)throw new Error("The provided component was not found in the application");i=t}else if(function(t){return t&&t.constructor&&t.constructor.ngDirectiveDef}(t)){if(r=function(t,e){let n=t[1].firstChild;for(;n;){const a=n.directiveEnd;for(let r=n.directiveStart;r<a;r++)if(t[r]===e)return n.index;n=Fr(n)}return-1}(a,t),-1==r)throw new Error("The provided directive was not found in the application");s=Gr(r,a,!1)}else if(r=jr(a,t),-1==r)return null;const u=ge(a[r]),o=_e(u),l=o&&!Array.isArray(o)?o:Pr(a,r,u);if(i&&void 0===l.component&&(l.component=i,qr(l.component,l)),s&&void 0===l.directives){l.directives=s;for(let t=0;t<s.length;t++)qr(s[t],l)}qr(l.native,l),e=l}}else{const n=t;let a=n;for(;a=a.parentNode;){const t=_e(a);if(t){let a;if(a=Array.isArray(t)?t:t.lView,!a)return null;const r=jr(a,n);if(r>=0){const t=ge(a[r]),n=Pr(a,r,t);qr(t,n),e=n;break}}}}var n;return e||null}function Pr(t,e,n){return{lView:t,nodeIndex:e,native:n,component:void 0,directives:void 0,localRefs:void 0}}function Mr(t){let e,n=_e(t);if(Array.isArray(n)){const a=Vr(n,t);e=xe(a,n);const r=Pr(n,a,e[0]);r.component=t,qr(t,r),qr(r.native,r)}else e=xe(n.nodeIndex,n.lView);return e}function qr(t,e){t.__ngContext__=e}function jr(t,e){let n=t[1].firstChild;for(;n;){if(me(n,t)===e)return n.index;n=Fr(n)}return-1}function Fr(t){if(t.child)return t.child;if(t.next)return t.next;for(;t.parent&&!t.parent.next;)t=t.parent;return t.parent&&t.parent.next}function Vr(t,e){const n=t[1].components;if(n)for(let a=0;a<n.length;a++){const r=n[a];if(xe(r,t)[9]===e)return r}else if(xe(19,t)[9]===e)return 19;return-1}function Gr(t,e,n){const a=e[1].data[t];let r=a.directiveStart;return 0==r?It:(!n&&1&a.flags&&r++,e.slice(r,a.directiveEnd))}function Br(t){throw new Error("Multiple components match node with tagname "+t.tagName)}function zr(){throw new Error("Cannot mix multi providers and regular providers")}function Yr(t,e){const n=t.length,a=t.indexOf(e),r=a+e.length;return!(-1===a||a>0&&" "!==t[a-1]||r<n&&" "!==t[r])}function Hr(t,e,n){return e===(0!==t.type||n?t.tagName:"ng-template")}function Ur(t,e,n){let a=4;const r=t.attrs||[],i=function(t){for(let e=0;e<t.length;e++)if(aa(t[e]))return e;return t.length}(r);let s=!1;for(let u=0;u<e.length;u++){const o=e[u];if("number"!=typeof o){if(!s)if(4&a){if(a=2|1&a,""!==o&&!Hr(t,o,n)||""===o&&1===e.length){if(Wr(a))return!1;s=!0}}else{const l=8&a?o:e[++u];if(8&a&&t.classes){if(!Yr(Wn(t.classes),l)){if(Wr(a))return!1;s=!0}continue}const d=Kr(8&a?"class":o,r,0==t.type&&"ng-template"!==t.tagName,n);if(-1===d){if(Wr(a))return!1;s=!0;continue}if(""!==l){let t;t=d>i?"":r[d+1];const e=8&a?t:null;if(e&&!Yr(e,l)||2&a&&l!==t){if(Wr(a))return!1;s=!0}}}}else{if(!s&&!Wr(a)&&!Wr(o))return!1;if(s&&Wr(o))continue;s=!1,a=o|1&a}}return Wr(a)||s}function Wr(t){return 0==(1&t)}function Kr(t,e,n,a){if(null===e)return-1;let r=0;if(a||!n){let n=!1;for(;r<e.length;){const a=e[r];if(a===t)return r;if(3===a||6===a)n=!0;else{if(1===a){let t=e[++r];for(;"string"==typeof t;)t=e[++r];continue}if(4===a)break;if(0===a){r+=4;continue}}r+=n?1:2}return-1}return function(t,e){let n=t.indexOf(4);if(n>-1)for(n++;n<t.length;){if(t[n]===e)return n;n++}return-1}(e,t)}function $r(t,e,n=!1){for(let a=0;a<e.length;a++)if(Ur(t,e[a],n))return!0;return!1}function Jr(t,e){t:for(let n=0;n<e.length;n++){const a=e[n];if(t.length===a.length){for(let e=0;e<t.length;e++)if(t[e]!==a[e])continue t;return!0}}return!1}let Zr=[];function Qr(t,e,n,a,r,i,s,u){const o=!a,l=fe(n,Fn(t)),d=o?0:l.classesIndex++;return!(!ti(t,e,d,a,r,i,s,u,!1)&&!u||(l.classesBitMask|=1<<d,0))}function Xr(t,e,n,a,r,i,s,u,o){const l=!a,d=fe(n,Fn(t)),c=l?0:d.stylesIndex++;return!(!ti(t,e,c,a,r,i,u,o,!!l||!!s&&s(a,null,1))&&!o||(d.stylesBitMask|=1<<c,0))}function ti(t,e,n,a,r,i,s,u,o){jn(t)||(s?function(t,e,n,a,r){Zr.unshift(t,e,n,a,r)}(t,n,a,r,o):(Zr.length&&ei(),ni(t,n,a,r,o)));const l=u||Gn(e[r],i);return l&&(e[r]=i),l}function ei(){let t=0;for(;t<Zr.length;)ni(Zr[t++],Zr[t++],Zr[t++],Zr[t++],Zr[t++]);Zr.length=0}function ni(t,e,n,a,r){let i=!1;if(n){let s=!1,u=Vn(t);for(;u<t.length;){const i=Pn(t,u),o=An(t,u);if(s=n<=o,s){n<o&&ai(t,u,n,r),ri(t,!1,u,a,e);break}u+=3+i}s||(ai(t,t.length,n,r),ri(t,!1,u,a,e),i=!0)}else ri(t,!0,3,a,e),i=!0;return i}function ai(t,e,n,a){t.splice(e,0,a?1:0,1,n,null),Dn(t,e,1)}function ri(t,e,n,a,r){const i=n+3;let s=i+Pn(t,n);if(e||s--,"number"==typeof a){for(let e=i;e<=s;e++)if(t[e]===a)return;t.splice(s,0,a),t[n+1]++,Dn(t,n,Ln(t,n)|1<<r)}else null!==a&&null==t[s]&&(t[s]=a)}function ii(t,e,n,a,r,i,s,u){return r&&a&&(function(t){if(!jn(t)){const e=Hn(t);e&&function(t,e){for(let n=1;n<e.length;n+=2){const a=Qn(e,n);a&&ni(t,-1,Jn(e,n),a,!1)}}(t,e),function(t){Rn(t,1|Cn(t))}(t)}}(a),function(t,e){return t&&e>0}(a,i))?(si(a,t,e,n,i,s,u),!0):r}function si(t,e,n,a,r,i,s){const u=!0===(o=r)?-1:!1===o?0:o;var o;const l=ui,d=(u&Ln(t,3))>0?1:0;let c=Vn(t);for(;c<t.length;){const r=Pn(t,c);if(u&Ln(t,c)){let u=!1;const o=An(t,c),f=r-1,h=Mn(t,c,f);for(let r=0;r<f;r++){const l=Mn(t,c,r),d=a[l];if(Bn(d)){i(e,n,o,s&&En(t,c)?s(o,d,2):d,l),u=!0;break}}if(l){const r=l(t,e,n,a,i,s,d|(u?4:2),o,h);u=u||r}u||i(e,n,o,h)}c+=3+r}l&&l(t,e,n,a,i,s,d)}let ui=null;const oi=(t,e,n,a)=>{const r=e.style;a?(a=a.toString(),t&&ta(t)?t.setStyle(e,n,a,Xn.DashCase):r&&r.setProperty(n,a)):t&&ta(t)?t.removeStyle(e,n,Xn.DashCase):r&&r.removeProperty(n)},li=(t,e,n,a)=>{if(""!==n){const r=e.classList;a?t&&ta(t)?t.addClass(e,n):r&&r.add(n):t&&ta(t)?t.removeClass(e,n):r&&r.remove(n)}};function di(t,e,n,a){const r=Hn(n);if(r)for(let i=1;i<r.length;i+=2){const n=Jn(r,i),s=Qn(r,i);a?li(t,e,n,s):oi(t,e,n,s)}}const ci={},fi={marker:"element"},hi={marker:"comment"},gi=(t,e,n,a,r,i,s,u,o)=>{let l=!1;if(Pn(t,3)){let d=!0;const c=!u;c&&-2&s&&(d=!1,l=!0),d&&(l=function t(e,n,a,r,i,s,u,o,l,d){let c=!1;if(l<Pn(e,3)){const f=Mn(e,3,l),h=r[f];let g=function(t){return t>=yi.length&&yi.push(1),yi[t]}(l);for(;g<h.length;){const p=Jn(h,g),b=o&&p>o,m=!b&&p===o,y=Qn(h,g),v=Bn(y);let x=t(e,n,a,r,i,s,b?u:bi(u,v,m),b?o:p,l+1,d);if(b){c||(c=x);break}if(!x&&mi(u,m)){const t=m&&!v,e=t?d:y,r=t?f:null;i(n,a,p,s?s(p,e,3):e,r),x=!0}c=x&&m,g+=2}if(yi[l]=g,1===h.length||!o)return t(e,n,a,r,i,s,u,o,l+1,d)}return c}(t,e,n,a,r,i,s,u||null,0,o||null)),c&&function(){for(let t=0;t<yi.length;t++)yi[t]=1}()}return l};function pi(){ui=gi}function bi(t,e,n){let a=t;return e||4&t||!(n||1&t)?(a|=4,a&=-3):(a|=2,a&=-5),a}function mi(t,e){let n=(1&t)>0;return n?4&t&&e&&(n=!1):2&t&&(n=e),n}const yi=[];function vi(t,e,n,a){for(let r=1;r<t.length;r+=2){const i=Jn(t,r);if(e<=i){let s=!1;if(i===e){const e=t[r];!a&&Bn(e)||(s=!0,Zn(t,r,n))}else s=!0,t.splice(r,0,e,n);return s}}return t.push(e,n),!0}function xi(t,e){let n="";for(let a=1;a<t.length;a+=2){const r=Jn(t,a),i=Qn(t,a),s=zn(r,e?"":i,":");n=zn(n,s,e?" ":"; ")}return n}function _i(t){let e={};if(t)for(let n=1;n<t.length;n+=2){const a=Jn(t,n),r=Qn(t,n);e[a]=r}return e}class Ti{constructor(t,e,n){this.context=t,this._data=e,this._isClassBased=n,this._sanitizer=null}overrideSanitizer(t){this._sanitizer=t}get summary(){const t={};return this._mapValues((e,n,a)=>{t[e]={prop:e,value:n,bindingIndex:a}}),t}get values(){const t={};return this._mapValues((e,n)=>{t[e]=n}),t}_mapValues(t){Pn(this.context,3)>0&&pi();const e=this._isClassBased?null:this._sanitizer||mn();si(this.context,null,{},this._data,!0,(e,n,a,r,i)=>{t(a,r,i||null)},e)}}function wi(t){Oi(Ae(),t)}function Oi(t,e){ie(t,t[1],$e(),e),ln(e)}const Si=(()=>Promise.resolve(null))();function Ii(t){const e=t[1],n=Ue(t);if(e.firstTemplatePass=!1,t[7]=e.bindingStartIndex,!n){const n=$e();ie(t,e,n,void 0),function(t){for(let e=t[14];null!==e;e=e[4])if(-1===e[2]&&Zt(e))for(let t=9;t<e.length;t++){const n=e[t];Ei(n,n[1],n[9])}}(t),Ni(e,t),we(t),se(t,e.contentHooks,e.contentCheckHooks,n,1,void 0),function(t,e){const n=on();try{if(t.expandoInstructions){let n=e[7]=t.expandoStartIndex;Xe(n);let a=-1,r=-1;for(let i=0;i<t.expandoInstructions.length;i++){const s=t.expandoInstructions[i];"number"==typeof s?(s<=0?(r=-s,qe(r),n+=9+t.expandoInstructions[++i],a=n):n+=s,Xe(n)):(null!==s&&(e[7]=n,s(2,ge(e[a]),r),je()),a++)}}}finally{qe(n)}}(e,t)}n&&e.staticContentQueries&&Ni(e,t),n&&!e.staticViewQueries||ds(2,e,t[9]),function(t,e){if(null!=e)for(let n=0;n<e.length;n++)as(t,e[n])}(t,e.components)}function Ni(t,e){const n=t.contentQueries;if(null!==n)for(let a=0;a<n.length;a+=2){const r=n[a],i=n[a+1];if(-1!==i){const n=t.data[i];nn(r),n.contentQueries(2,e[i],i)}}}function Ci(t,e){let n;const a=e||Ae()[12],r=cn;return n=ta(a)?a.createElement(t,r):null===r?a.createElement(t):a.createElementNS(r,t),n}function Ri(t,e,n,a,r,i,s,u,o,l){const d=e.blueprint.slice();return d[0]=r,d[2]=140|a,we(d),d[3]=d[16]=t,d[9]=n,d[11]=s||t&&t[11],d[12]=u||t&&t[12],d[13]=o||t&&t[13]||null,d[10]=l||t&&t[10]||null,d[6]=i,d}function Ai(t,e,n,a,r,i){const s=n+19,u=t.data[s]||function(t,e,n,a,r,i,s){const u=Ge(),o=Ye(),l=o?u:u&&u.parent,d=t.data[n]=Gi(0,l&&l!==e?l:null,a,n,r,i);return 0!==s&&t.firstChild||(t.firstChild=d),u&&(!o||null!=u.child||null===d.parent&&2!==u.type?o||(u.next=d):u.child=d),d}(t,e,s,a,r,i,n);return Be(u,!0),u}function ki(t,e,n,a){let r=t.node;return null==r&&(t.node=r=Gi(0,e,2,n,null,null)),a[6]=r}function Ei(t,e,n){const a=Ye(),r=Ge();let i;if(512&t[2])ss(ca(t));else{let s=!1;try{Be(null,!0),i=an(t,t[6]),we(t),Di(t,e.template,Pi(t),n),e.firstTemplatePass=!1,Ii(t),s=!0}finally{sn(i,s),Be(r,a)}}}function Li(t,e,n){const a=t[11],r=an(t,t[6]),i=!$e(),s=Ue(t);let u=!1;try{i&&!s&&a.begin&&a.begin(),s&&(n&&Di(t,n,1,e),Ii(t),t[2]&=-5),we(t),n&&Di(t,n,2,e),Ii(t),u=!0}finally{i&&!s&&a.end&&a.end(),sn(r,u)}}function Di(t,e,n,a){pn();const r=on();try{qe(null),2&n&&Oi(t,0),e(n,a)}finally{ln(r)}}function Pi(t){return Ue(t)?1:2}function Mi(t,e,n){if(Qt(e)){const a=e.directiveEnd;for(let r=e.directiveStart;r<a;r++){const e=t.data[r];e.contentQueries&&e.contentQueries(1,n[r],r)}}}function qi(t,e,n,a=be){Ne()&&(function(t,e,n){const a=n.directiveStart,r=n.directiveEnd;!t.firstTemplatePass&&a<r&&pa(n,e);for(let i=a;i<r;i++){const a=t.data[i];te(a)&&ts(e,n,a),Ki(e,Sa(t.data,e,i,n),a,i)}}(t,e,n),function(t,e,n){const a=n.directiveStart,r=n.directiveEnd,i=t.expandoInstructions,s=t.firstTemplatePass,u=n.index-19,o=on();try{qe(u);for(let u=a;u<r;u++){const a=t.data[u],r=e[u];a.hostBindings?(Ui(a,i,r,n,s),je()):s&&i.push(null)}}finally{qe(o)}}(t,e,n),function(t,e,n){const a=e.localNames;if(a){let r=e.index+1;for(let i=0;i<a.length;i+=2){const s=a[i+1],u=-1===s?n(e,t):t[s];t[r++]=u}}}(e,n,a),qe(null))}function ji(t){return t.tView||(t.tView=Fi(-1,t.template,t.consts,t.vars,t.directiveDefs,t.pipeDefs,t.viewQuery,t.schemas))}function Fi(t,e,n,a,r,i,s,u){const o=19+n,l=o+a,d=function(t,e){const n=new Array(e).fill(null,0,t).fill(ci,t);return n[7]=t,n}(o,l);return d[1]={id:t,blueprint:d,template:e,queries:null,viewQuery:s,node:null,data:d.slice().fill(null,o),bindingStartIndex:o,expandoStartIndex:l,expandoInstructions:null,firstTemplatePass:!0,staticViewQueries:!1,staticContentQueries:!1,preOrderHooks:null,preOrderCheckHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:"function"==typeof r?r():r,pipeRegistry:"function"==typeof i?i():i,firstChild:null,schemas:u}}function Vi(t,e){const n=t.createRenderer(null,null);return"string"==typeof e?ta(n)?n.selectRootElement(e):n.querySelector(e):e}function Gi(t,e,n,a,r,i){return{type:n,index:a,injectorIndex:e?e.injectorIndex:-1,directiveStart:-1,directiveEnd:-1,propertyMetadataStartIndex:-1,propertyMetadataEndIndex:-1,flags:0,providerIndexes:0,tagName:r,attrs:i,localNames:null,initialInputs:void 0,inputs:void 0,outputs:void 0,tViews:null,next:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,classes:null}}function Bi(t,e){const n=Ae()[1];let a=null;const r=t.directiveStart,i=t.directiveEnd;if(i>r){const t=0===e,s=n.data;for(let e=r;e<i;e++){const n=s[e],r=t?n.inputs:n.outputs;for(let t in r)if(r.hasOwnProperty(t)){a=a||{};const n=r[t];a.hasOwnProperty(t)?a[t].push(e,t,n):a[t]=[e,t,n]}}}return a}const zi={class:"className",for:"htmlFor",formaction:"formAction",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"};function Yi(t,e,n,a,r,i){const s=Ae(),u=pe(t,s),o=ye(t,s);let l,d;if(!r&&(l=hs(o))&&(d=l[e]))ys(s,d,n),Xt(o)&&function(t,e){const n=xe(e,t);16&n[2]||(n[2]|=64)}(s,t+19);else if(3===o.type){!function(t,e,n,a,r){const i=e[7]-1,s=a[i];"�"==s[0]&&(a[i]=n+s,r||(-1==t.propertyMetadataStartIndex&&(t.propertyMetadataStartIndex=i),t.propertyMetadataEndIndex=i+1))}(o,s,e=zi[e]||e,s[1].data,r);const t=i?i(o,s):s[12];n=null!=a?a(n,o.tagName||"",e):n,ta(t)?t.setProperty(u,e,n):ra(e)||(u.setProperty?u.setProperty(e,n):u[e]=n)}}function Hi(t,e,n,a){if(!Ne())return;const r=function(t,e,n){const a=t.directiveRegistry;let r=null;if(a)for(let i=0;i<a.length;i++){const s=a[i];$r(n,s.selectors,!1)&&(r||(r=[]),va(pa(n,e),t,s.type),te(s)?(1&n.flags&&Br(n),n.flags=1,r.unshift(s)):r.push(s))}return r}(t,e,n),i=a?{"":-1}:null;if(r){Qi(n,t.data.length,r.length);for(let t=0;t<r.length;t++){const e=r[t];e.providersResolver&&e.providersResolver(e)}Wi(t,n,r.length);const a=t.preOrderHooks&&t.preOrderHooks.length||0,s=t.preOrderCheckHooks&&t.preOrderCheckHooks.length||0,u=n.index-19;for(let n=0;n<r.length;n++){const o=r[n],l=t.data.length;Xi(t,e,o,o.factory),Zi(t.data.length-1,o,i),ae(l,o,t,u,a,s)}}i&&function(t,e,n){if(e){const a=t.localNames=[];for(let t=0;t<e.length;t+=2){const r=n[e[t+1]];if(null==r)throw new Error(`Export of name '${e[t+1]}' not found!`);a.push(e[t],r)}}}(n,a,i)}function Ui(t,e,n,a,r){const i=e.length;Ie(t),t.hostBindings(1,n,a.index-19),Ie(null),i===e.length&&r&&e.push(t.hostBindings)}function Wi(t,e,n){const a=-(e.index-19),r=t.data.length-(65535&e.providerIndexes);(t.expandoInstructions||(t.expandoInstructions=[])).push(a,r,n)}function Ki(t,e,n,a){const r=Ge();$i(t,r,e),r&&r.attrs&&function(t,e,n,a){let r=a.initialInputs;(void 0===r||t>=r.length)&&(r=function(t,e,n){const a=n.initialInputs||(n.initialInputs=[]);for(let s=a.length;s<=t;s++)a.push(null);const r=n.attrs;let i=0;for(;i<r.length;){const n=r[i];if(0===n){i+=4;continue}if(5===n){i+=2;continue}if("number"==typeof n)break;const s=e[n],u=r[i+1];void 0!==s&&(a[t]||(a[t]=[])).push(n,s,u),i+=2}return a}(t,n.inputs,a));const i=r[t];if(i){const t=n.setInput;for(let a=0;a<i.length;){const r=i[a++],s=i[a++],u=i[a++];t?n.setInput(e,u,r,s):e[s]=u}}}(a,e,n,r),t[1].firstTemplatePass&&n.contentQueries&&(r.flags|=4),te(n)&&(xe(r.index,t)[9]=e)}function $i(t,e,n){const a=be(e,t);qr(n,t),a&&qr(a,t)}function Ji(t){const e=Ae()[1];(e.components||(e.components=[])).push(t.index)}function Zi(t,e,n){if(n){if(e.exportAs)for(let a=0;a<e.exportAs.length;a++)n[e.exportAs[a]]=t;e.template&&(n[""]=t)}}function Qi(t,e,n){t.flags=1&t.flags,t.directiveStart=e,t.directiveEnd=e+n,t.providerIndexes=e}function Xi(t,e,n,a){t.data.push(n);const r=new ne(a,te(n),null);t.blueprint.push(r),e.push(r)}function ts(t,e,n){const a=be(e,t),r=ji(n),i=t[11],s=rs(t,Ri(t,r,null,n.onPush?64:16,t[e.index],e,i,i.createRenderer(a,n)));s[6]=e,t[e.index]=s,t[1].firstTemplatePass&&Ji(e)}function es(t,e,n,a,r,i){const s=pe(t,a),u=a[12];if(null==n)ta(u)?u.removeAttribute(s,e,i):s.removeAttribute(e);else{const o=ye(t,a),l=null==r?vn(n):r(n,o.tagName||"",e);ta(u)?u.setAttribute(s,e,l,i):i?s.setAttributeNS(i,e,l):s.setAttribute(e,l)}}function ns(t,e,n,a,r){return new Array(t,!0,r?-1:0,e,null,null,a,n,null)}function as(t,e){const n=xe(e,t);(128==(128&n[2])||Ue(t))&&80&n[2]&&(function(t){const e=t[1];for(let n=t.length;n<e.blueprint.length;n++)t[n]=e.blueprint[n]}(n),ls(n,n[9]))}function rs(t,e){return t[14]?t[15][4]=e:t[14]=e,t[15]=e,e}function is(t){for(;t;){t[2]|=64;const e=la(t);if(ee(t)&&!e)return t;t=e}return null}function ss(t){for(let e=0;e<t.components.length;e++){const n=t.components[e];Li(Te(n),n)}}function us(t,e){const n=t[11];n.begin&&n.begin();try{Ue(t)&&ls(t,e),ls(t,e)}catch(a){throw ms(t,a),a}finally{n.end&&n.end()}}function os(t){ss(t[9])}function ls(t,e){const n=t[1],a=an(t,t[6]),r=n.template,i=Ue(t);let s=!1;try{we(t),i&&ds(1,n,e),Di(t,r,Pi(t),e),Ii(t),s=!0}finally{sn(a,s)}}function ds(t,e,n){const a=e.viewQuery;null!==a&&(nn(0),a(t,n))}function cs(t,e="",n=""){const a=t[1].data,r=t[7]-1;return null==a[r]?a[r]="�"+e+"�"+n:null}const fs=Si;function hs(t){return void 0===t.inputs&&(t.inputs=Bi(t,0)),t.inputs}function gs(t){return t[8]||(t[8]=[])}function ps(t){return t[1].cleanup||(t[1].cleanup=[])}function bs(t,e){return e[t.index][12]}function ms(t,e){const n=t[10],a=n?n.get(Da,null):null;a&&a.handleError(e)}function ys(t,e,n){const a=t[1];for(let r=0;r<e.length;){const i=e[r++],s=e[r++],u=e[r++],o=t[i],l=a.data[i];l.setInput?l.setInput(o,n,s,u):o[u]=n}}function vs(t,e,n){const a=pe(e,t),r=t[12];ta(r)?r.setValue(a,n):a.textContent=n}function xs(t,e,n){di(t,e,n.classes,!0),di(t,e,n.styles,!1)}function _s(t,e){const n=e[3];return-1===t.index?Zt(n)?n:null:n}function Ts(t,e){const n=_s(t,e);return n?Ps(e[12],n[7]):null}function ws(t,e,n,a,r){if(null!=a){let i,s=!1;Zt(a)?i=a:Jt(a)&&(s=!0,a=a[0]);const u=ge(a);0===t?Ls(e,n,u,r||null):1===t?js(e,u,s):2===t&&e.destroyNode(u),null!=i&&function(t,e,n,a,r){const i=n[7];i!==ge(n)&&ws(e,t,a,i,r);for(let s=9;s<n.length;s++)Bs(t,e,n[s],a,i)}(e,t,i,n,r)}}function Os(t,e){return ta(e)?e.createText(vn(t)):e.createTextNode(vn(t))}function Ss(t,e,n){const a=Ts(t[1].node,t);a&&Bs(t[12],e?0:1,t,a,n)}function Is(t,e,n){const a=9+n,r=e.length;n>0&&(e[a-1][4]=t),n<r-9?(t[4]=e[a],mt(e,9+n,t)):(e.push(t),t[4]=null),t[3]=e;const i=t[17];null!==i&&e!==i&&function(t,e){const n=t[5];null===n?t[5]=[e]:n.push(e)}(i,t);const s=t[5];null!==s&&s.insertView(t[1]),t[2]|=128}function Ns(t,e){const n=t[5],a=n.indexOf(e);n.splice(a,1)}function Cs(t,e){if(t.length<=9)return;const n=9+e,a=t[n];if(a){const r=a[17];null!==r&&r!==t&&Ns(r,a),e>0&&(t[n-1][4]=a[4]);const i=yt(t,9+e);Ss(a,!1);const s=i[5];null!==s&&s.detachView(i[1]),a[3]=null,a[4]=null,a[2]&=-129}return a}function Rs(t,e){const n=Cs(t,e);n&&As(n)}function As(t){if(!(256&t[2])){const e=t[12];ta(e)&&e.destroyNode&&Bs(e,2,t,null,null),function(t){let e=t[14];if(!e)return Es(t);for(;e;){let n=null;if(Jt(e))n=e[14];else{const t=e[9];t&&(n=t)}if(!n){for(;e&&!e[4]&&e!==t;)Es(e),e=ks(e,t);Es(e||t),n=e&&e[4]}e=n}}(t)}}function ks(t,e){let n;return Jt(t)&&(n=t[6])&&2===n.type?_s(n,t):t[3]===e?null:t[3]}function Es(t){if(Jt(t)&&!(256&t[2])){t[2]&=-129,t[2]|=256,function(t){const e=t[1];let n;if(null!=e&&null!=(n=e.destroyHooks))for(let a=0;a<n.length;a+=2){const e=t[n[a]];e instanceof ne||n[a+1].call(e)}}(t),function(t){const e=t[1].cleanup;if(null!==e){const n=t[8];for(let a=0;a<e.length-1;a+=2)if("string"==typeof e[a]){const r=e[a+1],i="function"==typeof r?r(t):ge(t[r]),s=n[e[a+2]],u=e[a+3];"boolean"==typeof u?i.removeEventListener(e[a],s,u):u>=0?n[u]():n[-u].unsubscribe(),a+=2}else e[a].call(n[e[a+1]]);t[8]=null}}(t);const e=t[6];e&&3===e.type&&ta(t[12])&&t[12].destroy();const n=t[17];if(null!==n&&Zt(t[3])){n!==t[3]&&Ns(n,t);const e=t[5];null!==e&&e.detachView(t[1])}}}function Ls(t,e,n,a){ta(t)?t.insertBefore(e,n,a):e.insertBefore(n,a,!0)}function Ds(t,e,n,a){null!==a?Ls(t,e,n,a):function(t,e,n){ta(t)?t.appendChild(e,n):e.appendChild(n)}(t,e,n)}function Ps(t,e){return ta(t)?t.parentNode(e):e.parentNode}function Ms(t,e,n){const a=function(t,e){if(ee(e))return Ps(e[12],be(t,e));const n=function(t){for(;null!=t.parent&&(4===t.parent.type||5===t.parent.type);)t=t.parent;return t}(t),a=n.parent;if(null==a){const t=e[6];return 2===t.type?Ts(t,e):function(t){const e=t[6];return e&&3===e.type?be(e,la(t)):null}(e)}{const t=n&&5===n.type;if(t&&2&n.flags)return be(n,e).parentNode;if(1&a.flags&&!t){const t=e[1].data,n=t[t[a.index].directiveStart].encapsulation;if(n!==wt.ShadowDom&&n!==wt.Native)return null}return be(a,e)}}(e,n);if(null!=a){const r=n[12],i=function(t,e){if(2===t.type){const n=_s(t,e);return qs(n.indexOf(e,9)-9,n)}return 4===t.type||5===t.type?be(t,e):null}(e.parent||n[6],n);if(Array.isArray(t))for(let e of t)Ds(r,a,e,i);else Ds(r,a,t,i)}}function qs(t,e){const n=9+t+1;if(n<e.length){const t=e[n],a=t[6].child;return null!==a?me(a,t):e[7]}return e[7]}function js(t,e,n){const a=Ps(t,e);a&&function(t,e,n,a){ta(t)?t.removeChild(e,n,a):e.removeChild(n)}(t,a,e,n)}function Fs(t,e,n,a){const r=a[3];let i=a[6].projection[n];if(Array.isArray(i))Ms(i,e,t);else for(;i;)32&i.flags||(1===i.type?Fs(t,e,i.projection,da(r)):(i.flags|=2,Gs(i,e,t,r))),i=i.projectionNext}function Vs(t,e,n,a){for(;t;)Gs(t,e,n,a),t=t.next}function Gs(t,e,n,a){const r=be(t,a);Ms(r,e,n),qr(r,a);const i=a[t.index];if(0===t.type)for(let s=9;s<i.length;s++)Ss(i[s],!0,i[7]);else if(5===t.type){let e=t.child;Vs(e,e,a,a)}else 4===t.type&&Vs(t.child,e,n,a),Zt(i)&&Ms(i[7],e,n)}function Bs(t,e,n,a,r){let i=n[1].node.child;for(;null!==i;)zs(t,e,n,i,a,r),i=i.next}function zs(t,e,n,a,r,i){const s=a.type;32&a.flags||(4===s||5===s?function(t,e,n,a,r,i){ws(e,t,r,n[a.index],i);let s=a.child;for(;s;)zs(t,e,n,s,r,i),s=s.next}(t,e,n,a,r,i):1===s?function(t,e,n,a,r,i){const s=da(n),u=s[6].projection[a.projection];if(void 0!==u)if(Array.isArray(u))for(let o=0;o<u.length;o++)ws(e,t,r,u[o],i);else{let n=u;const a=s[3];for(;null!==n;)zs(t,e,a,n,r,i),n=n.projectionNext}}(t,e,n,a,r,i):ws(e,t,r,n[a.index],i))}class Ys{constructor(t,e,n){this._context=e,this._componentIndex=n,this._appRef=null,this._viewContainerRef=null,this._tViewNode=null,this._lView=t}get rootNodes(){return null==this._lView[0]?function t(e,n,a){let r=n.child;for(;r;){const n=me(r,e);if(n&&a.push(n),4===r.type)t(e,r,a);else if(1===r.type){const t=da(e),n=t[6],i=la(t);let s=n.projection[r.projection];for(;s&&i;)a.push(be(s,i)),s=s.next}r=r.next}return a}(this._lView,this._lView[6],[]):[]}get context(){return this._context?this._context:this._lookUpContext()}get destroyed(){return 256==(256&this._lView[2])}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._viewContainerRef){const t=this._viewContainerRef.indexOf(this);t>-1&&this._viewContainerRef.detach(t),this._viewContainerRef=null}As(this._lView)}onDestroy(t){var e,n;n=t,gs(e=this._lView).push(n),e[1].firstTemplatePass&&ps(e).push(e[8].length-1,null)}markForCheck(){is(this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){us(this._lView,this.context)}checkNoChanges(){!function(t,e){Je(!0);try{us(t,e)}finally{Je(!1)}}(this._lView,this.context)}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}detachFromAppRef(){this._appRef=null,function(t){Bs(t[12],1,t,null,null)}(this._lView)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}_lookUpContext(){return this._context=la(this._lView)[this._componentIndex]}}class Hs extends Ys{constructor(t){super(t,null,-1),this._view=t}detectChanges(){os(this._view)}checkNoChanges(){!function(t){Je(!0);try{os(t)}finally{Je(!1)}}(this._view)}get context(){return null}}let Us,Ws,Ks;function $s(t,e,n){return Us||(Us=class extends t{}),new Us(be(e,n))}function Js(t,e,n,a){return Ws||(Ws=class extends t{constructor(t,e,n){super(),this._declarationView=t,this._declarationTContainer=e,this.elementRef=n}createEmbeddedView(t){const e=this._declarationTContainer.tViews,n=function(t,e,n,a){const r=Ye(),i=Ge();Be(null,!0);const s=Ri(n,t,e,16,null,null);return s[16]=n,ki(t,null,-1,s),t.firstTemplatePass&&(t.node.injectorIndex=a),Be(i,r),s}(e,t,this._declarationView,this._declarationTContainer.injectorIndex);n[17]=this._declarationView[this._declarationTContainer.index];const a=this._declarationView[5];null!==a&&(n[5]=a.createEmbeddedView(e)),Ei(n,e,t);const r=new Ys(n,t,-1);return r._tViewNode=n[6],r}}),0===n.type?new Ws(a,n,$s(e,n,a)):null}function Zs(t,e,n,a){let r;Ks||(Ks=class extends t{constructor(t,e,n){super(),this._lContainer=t,this._hostTNode=e,this._hostView=n}get element(){return $s(e,this._hostTNode,this._hostView)}get injector(){return new Ca(this._hostTNode,this._hostView)}get parentInjector(){const t=ya(this._hostTNode,this._hostView),e=oa(t,this._hostView),n=function(t,e,n){if(n.parent&&-1!==n.parent.injectorIndex){const t=n.parent.injectorIndex;let e=n.parent;for(;null!=e.parent&&t==e.injectorIndex;)e=e.parent;return e}let a=ua(t),r=e,i=e[6];for(;a>1;)r=r[16],i=r[6],a--;return i}(t,this._hostView,this._hostTNode);return ia(t)&&null!=n?new Ca(n,e):new Ca(null,this._hostView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){return null!==this._lContainer[8]&&this._lContainer[8][t]||null}get length(){return this._lContainer.length-9}createEmbeddedView(t,e,n){const a=t.createEmbeddedView(e||{});return this.insert(a,n),a}createComponent(t,e,n,a,r){const i=n||this.parentInjector;!r&&null==t.ngModule&&i&&(r=i.get(ft,null));const s=t.create(i,a,void 0,r);return this.insert(s.hostView,e),s}insert(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");this.allocateContainerIfNeeded();const n=t._lView,a=this._adjustIndex(e);return Zt(n[3])?this.move(t,a):(Is(n,this._lContainer,a),Ss(n,!0,qs(a,this._lContainer)),t.attachToViewContainerRef(this),mt(this._lContainer[8],a,t),t)}move(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");const n=this.indexOf(t);return-1!==n&&this.detach(n),this.insert(t,e),t}indexOf(t){return null!==this._lContainer[8]?this._lContainer[8].indexOf(t):0}remove(t){this.allocateContainerIfNeeded();const e=this._adjustIndex(t,-1);Rs(this._lContainer,e),yt(this._lContainer[8],e)}detach(t){this.allocateContainerIfNeeded();const e=this._adjustIndex(t,-1),n=Cs(this._lContainer,e);return n&&null!=yt(this._lContainer[8],e)?new Ys(n,n[9],-1):null}_adjustIndex(t,e=0){return null==t?this.length+e:t}allocateContainerIfNeeded(){null===this._lContainer[8]&&(this._lContainer[8]=[])}});const i=a[n.index];if(Zt(i))r=i,r[2]=-1;else{let t;if(t=4===n.type?ge(i):a[12].createComment(""),ee(a)){const e=a[12],r=be(n,a);Ls(e,Ps(e,r),t,function(t,e){return ta(t)?t.nextSibling(e):e.nextSibling}(e,r))}else Ms(t,n,a);a[n.index]=r=ns(i,a,t,n,!0),rs(a,r)}return new Ks(r,n,a)}function Qs(t=!1){return function(t,e,n){if(Xt(t)&&!n){const n=t.directiveStart,a=xe(t.index,e);return new Ys(a,null,n)}if(3===t.type||0===t.type||4===t.type){const t=da(e);return new Ys(t,t[9],-1)}return null}(Ge(),Ae(),t)}let Xs=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>eu(),t})();const tu=Qs,eu=(...t)=>{},nu=Function;function au(t){return"function"==typeof t}const ru=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/,iu=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,su=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,uu=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s+super\(\.\.\.arguments\)/;class ou{constructor(t){this._reflect=t||U.Reflect}isReflectionEnabled(){return!0}factory(t){return(...e)=>new t(...e)}_zipTypesAndAnnotations(t,e){let n;n=new Array(void 0===t?e.length:t.length);for(let a=0;a<n.length;a++)n[a]=void 0===t?[]:t[a]&&t[a]!=Object?[t[a]]:[],e&&null!=e[a]&&(n[a]=n[a].concat(e[a]));return n}_ownParameters(t,e){if(n=t.toString(),ru.test(n)||uu.test(n)||iu.test(n)&&!su.test(n))return null;var n;if(t.parameters&&t.parameters!==e.parameters)return t.parameters;const a=t.ctorParameters;if(a&&a!==e.ctorParameters){const t="function"==typeof a?a():a,e=t.map(t=>t&&t.type),n=t.map(t=>t&&lu(t.decorators));return this._zipTypesAndAnnotations(e,n)}const r=t.hasOwnProperty(b)&&t[b],i=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",t);return i||r?this._zipTypesAndAnnotations(i,r):new Array(t.length).fill(void 0)}parameters(t){if(!au(t))return[];const e=du(t);let n=this._ownParameters(t,e);return n||e===Object||(n=this.parameters(e)),n||[]}_ownAnnotations(t,e){if(t.annotations&&t.annotations!==e.annotations){let e=t.annotations;return"function"==typeof e&&e.annotations&&(e=e.annotations),e}return t.decorators&&t.decorators!==e.decorators?lu(t.decorators):t.hasOwnProperty(p)?t[p]:null}annotations(t){if(!au(t))return[];const e=du(t),n=this._ownAnnotations(t,e)||[];return(e!==Object?this.annotations(e):[]).concat(n)}_ownPropMetadata(t,e){if(t.propMetadata&&t.propMetadata!==e.propMetadata){let e=t.propMetadata;return"function"==typeof e&&e.propMetadata&&(e=e.propMetadata),e}if(t.propDecorators&&t.propDecorators!==e.propDecorators){const e=t.propDecorators,n={};return Object.keys(e).forEach(t=>{n[t]=lu(e[t])}),n}return t.hasOwnProperty(m)?t[m]:null}propMetadata(t){if(!au(t))return{};const e=du(t),n={};if(e!==Object){const t=this.propMetadata(e);Object.keys(t).forEach(e=>{n[e]=t[e]})}const a=this._ownPropMetadata(t,e);return a&&Object.keys(a).forEach(t=>{const e=[];n.hasOwnProperty(t)&&e.push(...n[t]),e.push(...a[t]),n[t]=e}),n}ownPropMetadata(t){return au(t)&&this._ownPropMetadata(t,du(t))||{}}hasLifecycleHook(t,e){return t instanceof nu&&e in t.prototype}guards(t){return{}}getter(t){return new Function("o","return o."+t+";")}setter(t){return new Function("o","v","return o."+t+" = v;")}method(t){return new Function("o","args",`if (!o.${t}) throw new Error('"${t}" is undefined');\n        return o.${t}.apply(o, args);`)}importUri(t){return"object"==typeof t&&t.filePath?t.filePath:"./"+j(t)}resourceUri(t){return"./"+j(t)}resolveIdentifier(t,e,n,a){return a}resolveEnum(t,e){return t[e]}}function lu(t){return t?t.map(t=>new(0,t.type.annotationCls)(...t.args?t.args:[])):[]}function du(t){const e=t.prototype?Object.getPrototypeOf(t.prototype):null;return(e?e.constructor:null)||Object}let cu=null;function fu(){return cu=cu||new ou}function hu(t){return gu(fu().parameters(t))}function gu(t){const e=W();return t.map(t=>function(t,e){const n={token:null,host:!1,optional:!1,resolved:t.R3ResolvedDependencyType.Token,self:!1,skipSelf:!1};function a(e){n.resolved=t.R3ResolvedDependencyType.Token,n.token=e}if(Array.isArray(e)){if(0===e.length)throw new Error("Dependency array must have arguments.");for(let r=0;r<e.length;r++){const i=e[r];if(void 0!==i)if(i instanceof w||"Optional"===i.__proto__.ngMetadataName)n.optional=!0;else if(i instanceof S||"SkipSelf"===i.__proto__.ngMetadataName)n.skipSelf=!0;else if(i instanceof O||"Self"===i.__proto__.ngMetadataName)n.self=!0;else if(i instanceof I||"Host"===i.__proto__.ngMetadataName)n.host=!0;else if(i instanceof T)n.token=i.token;else if(i instanceof N){if(void 0===i.attributeName)throw new Error("Attribute name must be defined.");n.token=i.attributeName,n.resolved=t.R3ResolvedDependencyType.Attribute}else i===Xs?(n.token=i,n.resolved=t.R3ResolvedDependencyType.ChangeDetectorRef):a(i)}}else a(e);return n}(e,t))}function pu(t,e){let n=null;t.hasOwnProperty(M)||Object.defineProperty(t,M,{get:()=>{if(null===n){const a=e||{providedIn:null},r=mu(a)||vu(a)||yu(a)||xu(a),i={name:t.name,type:t,typeArgumentCount:0,providedIn:a.providedIn,ctorDeps:hu(t),userDeps:void 0};if((mu(a)||vu(a))&&void 0!==a.deps&&(i.userDeps=gu(a.deps)),r)if(mu(a))i.useClass=a.useClass;else if(yu(a))i.useValue=a.useValue;else if(vu(a))i.useFactory=a.useFactory;else{if(!xu(a))throw new Error("Unreachable state.");i.useExisting=a.useExisting}else i.useClass=t;n=W().compileInjectable(ct,`ng:///${t.name}/ngInjectableDef.js`,i)}return n}})}const bu=R({provide:String,useValue:R});function mu(t){return void 0!==t.useClass}function yu(t){return bu in t}function vu(t){return void 0!==t.useFactory}function xu(t){return void 0!==t.useExisting}const _u=R({provide:String,useValue:R}),Tu=[];function wu(t,e){if(!e){const e=(new ou).parameters(t);return()=>new t(...ut(e))}if(_u in e){const t=e;return()=>t.useValue}if(e.useExisting){const t=e;return()=>rt(t.useExisting)}if(e.useFactory){const t=e;return()=>t.useFactory(...ut(t.deps||Tu))}if(e.useClass){const n=e;let a=e.deps;if(!a){const e=new ou;a=e.parameters(t)}return()=>new n.useClass(...ut(a))}{let n=e.deps;if(!n){const e=new ou;n=e.parameters(t)}return()=>new t(...ut(n))}}const Ou=y("Injectable",void 0,void 0,void 0,(t,e)=>Iu(t,e)),Su=pu,Iu=function(t,e){e&&void 0!==e.providedIn&&!D(t)&&(t.ngInjectableDef=k({token:t,providedIn:e.providedIn,factory:wu(t,e)}))},Nu=new K("The presence of this token marks an injector as being the root injector."),Cu={},Ru={},Au=[];let ku=void 0;function Eu(){return void 0===ku&&(ku=new ot),ku}function Lu(t,e=null,n=null,a){return e=e||Eu(),new Du(t,n,e,a)}class Du{constructor(t,e,n,a=null){this.parent=n,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this._destroyed=!1;const r=[];bt([t],t=>this.processInjectorType(t,[],r)),e&&bt(e,n=>this.processProvider(n,t,e)),this.records.set($,qu(void 0,this)),this.isRootInjector=this.records.has(Nu),this.injectorDefTypes.forEach(t=>this.get(t)),this.source=a||("object"==typeof t?null:j(t))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(t=>t.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(t,e=J,n=C.Default){this.assertNotDestroyed();const a=et(this);try{if(!(n&C.SkipSelf)){let e=this.records.get(t);if(void 0===e){const n=("function"==typeof(r=t)||"object"==typeof r&&r instanceof K)&&D(t);n&&this.injectableDefInScope(n)&&(e=qu(Pu(t),Cu),this.records.set(t,e))}if(void 0!==e)return this.hydrate(t,e)}return(n&C.Self?Eu():this.parent).get(t,n&C.Optional?null:e)}catch(i){if("NullInjectorError"===i.name){if((i.ngTempTokenPath=i.ngTempTokenPath||[]).unshift(j(t)),a)throw i;return lt(i,t,"R3InjectorError",this.source)}throw i}finally{et(a)}var r}toString(){const t=[];return this.records.forEach((e,n)=>t.push(j(n))),`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(t,e,n){if(!(t=G(t)))return!1;let a=P(t);const r=null==a&&t.ngModule||void 0,i=void 0===r?t:r,s=-1!==n.indexOf(i);if(void 0!==r&&(a=P(r)),null==a)return!1;if(this.injectorDefTypes.add(i),this.records.set(i,qu(a.factory,Cu)),null!=a.imports&&!s){let t;n.push(i);try{bt(a.imports,a=>{this.processInjectorType(a,e,n)&&(void 0===t&&(t=[]),t.push(a))})}finally{}if(void 0!==t)for(let e=0;e<t.length;e++){const{ngModule:n,providers:a}=t[e];bt(a,t=>this.processProvider(t,n,a||Au))}}const u=a.providers;if(null!=u&&!s){const e=t;bt(u,t=>this.processProvider(t,e,u))}return void 0!==r&&void 0!==t.providers}processProvider(t,e,n){let a=Fu(t=G(t))?t:G(t&&t.provide);const r=function(t,e,n){let a=Mu(t,e,n);return ju(t)?qu(void 0,t.useValue):qu(a,Cu)}(t,e,n);if(Fu(t)||!0!==t.multi){const t=this.records.get(a);t&&void 0!==t.multi&&zr()}else{let e=this.records.get(a);e?void 0===e.multi&&zr():(e=qu(void 0,Cu,!0),e.factory=()=>ut(e.multi),this.records.set(a,e)),a=t,e.multi.push(t)}this.records.set(a,r)}hydrate(t,e){var n;return e.value===Ru?function(t){throw new Error("Cannot instantiate cyclic dependency! "+t)}(j(t)):e.value===Cu&&(e.value=Ru,e.value=e.factory()),"object"==typeof e.value&&e.value&&null!==(n=e.value)&&"object"==typeof n&&"function"==typeof n.ngOnDestroy&&this.onDestroy.add(e.value),e.value}injectableDefInScope(t){return!!t.providedIn&&("string"==typeof t.providedIn?"any"===t.providedIn||"root"===t.providedIn&&this.isRootInjector:this.injectorDefTypes.has(t.providedIn))}}function Pu(t){const e=D(t);if(null!==e)return e.factory;const n=P(t);if(null!==n)return n.factory;if(t instanceof K)throw new Error(`Token ${j(t)} is missing an ngInjectableDef definition.`);if(t instanceof Function)return function(t){const e=t.length;if(e>0){const n=new Array(e).fill("?");throw new Error(`Can't resolve all parameters for ${j(t)}: (${n.join(", ")}).`)}const n=(a=t)&&a[M]?(console.warn(`DEPRECATED: DI is instantiating a token "${a.name}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in v10. Please add @Injectable() to the "${a.name}" class.`),a[M]):null;var a;return null!==n?()=>n.factory(t):()=>new t}(t);throw new Error("unreachable")}function Mu(t,e,n){let a=void 0;if(Fu(t))return Pu(G(t));if(ju(t))a=()=>G(t.useValue);else if((r=t)&&r.useExisting)a=()=>rt(G(t.useExisting));else if(function(t){return!(!t||!t.useFactory)}(t))a=()=>t.useFactory(...ut(t.deps||[]));else{const r=G(t&&(t.useClass||t.provide));if(r||function(t,e,n){let a="";throw t&&e&&(a=` - only instances of Provider and Type are allowed, got: [${e.map(t=>t==n?"?"+n+"?":"...").join(", ")}]`),new Error(`Invalid provider for the NgModule '${j(t)}'`+a)}(e,n,t),!function(t){return!!t.deps}(t))return Pu(r);a=()=>new r(...ut(t.deps))}var r;return a}function qu(t,e,n=!1){return{factory:t,value:e,multi:n?[]:void 0}}function ju(t){return null!==t&&"object"==typeof t&&Q in t}function Fu(t){return"function"==typeof t}function Vu(t,e,n){return Lu({name:n},e,t,n)}const Gu=function(t,e,n){return new Wu(t,e,n)};let Bu=(()=>{class t{static create(t,e){return Array.isArray(t)?Gu(t,e,""):Gu(t.providers,t.parent,t.name||"")}}return t.THROW_IF_NOT_FOUND=J,t.NULL=new ot,t.ngInjectableDef=k({token:t,providedIn:"any",factory:()=>rt($)}),t.__NG_ELEMENT_ID__=-1,t})();const zu=function(t){return t},Yu=[],Hu=zu,Uu=function(){return Array.prototype.slice.call(arguments)};class Wu{constructor(t,e=Bu.NULL,n=null){this.parent=e,this.source=n;const a=this._records=new Map;a.set(Bu,{token:Bu,fn:zu,deps:Yu,value:this,useNew:!1}),a.set($,{token:$,fn:zu,deps:Yu,value:this,useNew:!1}),function t(e,n){if(n)if((n=G(n))instanceof Array)for(let a=0;a<n.length;a++)t(e,n[a]);else{if("function"==typeof n)throw $u("Function/Class not supported",n);if(!n||"object"!=typeof n||!n.provide)throw $u("Unexpected provider",n);{let t=G(n.provide);const a=function(t){const e=function(t){let e=Yu;const n=t.deps;if(n&&n.length){e=[];for(let t=0;t<n.length;t++){let a=6,r=G(n[t]);if(r instanceof Array)for(let t=0,e=r;t<e.length;t++){const n=e[t];n instanceof w||n==w?a|=1:n instanceof S||n==S?a&=-3:n instanceof O||n==O?a&=-5:r=n instanceof T?n.token:G(n)}e.push({token:r,options:a})}}else if(t.useExisting)e=[{token:G(t.useExisting),options:6}];else if(!n&&!(Q in t))throw $u("'deps' required",t);return e}(t);let n=zu,a=Yu,r=!1,i=G(t.provide);if(Q in t)a=t.useValue;else if(t.useFactory)n=t.useFactory;else if(t.useExisting);else if(t.useClass)r=!0,n=G(t.useClass);else{if("function"!=typeof i)throw $u("StaticProvider does not have [useValue|useFactory|useExisting|useClass] or [provide] is not newable",t);r=!0,n=i}return{deps:e,fn:n,useNew:r,value:a}}(n);if(!0===n.multi){let a=e.get(t);if(a){if(a.fn!==Uu)throw Ku(t)}else e.set(t,a={token:n.provide,deps:[],useNew:!1,fn:Uu,value:Yu});t=n,a.deps.push({token:t,options:6})}const r=e.get(t);if(r&&r.fn==Uu)throw Ku(t);e.set(t,a)}}}(a,t)}get(t,e,n=C.Default){const a=this._records.get(t);try{return function t(e,n,a,r,i,s){try{return function(e,n,a,r,i,s){let u;if(!n||s&C.SkipSelf)s&C.Self||(u=r.get(e,i,C.Default));else{if(u=n.value,u==Hu)throw Error("ɵCircular dependency");if(u===Yu){n.value=Hu;let e=void 0,i=n.useNew,s=n.fn,o=n.deps,l=Yu;if(o.length){l=[];for(let e=0;e<o.length;e++){const n=o[e],i=n.options,s=2&i?a.get(n.token):void 0;l.push(t(n.token,s,a,s||4&i?r:Bu.NULL,1&i?null:Bu.THROW_IF_NOT_FOUND,C.Default))}}n.value=u=i?new s(...l):s.apply(e,l)}}return u}(e,n,a,r,i,s)}catch(u){throw u instanceof Error||(u=new Error(u)),(u.ngTempTokenPath=u.ngTempTokenPath||[]).unshift(e),n&&n.value==Hu&&(n.value=Yu),u}}(t,a,this._records,this.parent,e,n)}catch(r){return lt(r,t,"StaticInjectorError",this.source)}}toString(){const t=[];return this._records.forEach((e,n)=>t.push(j(n))),`StaticInjector[${t.join(", ")}]`}}function Ku(t){return $u("Cannot mix multi providers and regular providers",t)}function $u(t,e){return new Error(dt(t,e,"StaticInjectorError"))}function Ju(t){return t.length>1?" ("+function(t){const e=[];for(let n=0;n<t.length;++n){if(e.indexOf(t[n])>-1)return e.push(t[n]),e;e.push(t[n])}return e}(t.slice().reverse()).map(t=>j(t.token)).join(" -> ")+")":""}function Zu(t,e,n,a){const r=[e],i=n(r),s=a?function(t,e){const n=`${t} caused by: ${e instanceof Error?e.message:e}`,a=Error(n);return a.ngOriginalError=e,a}(i,a):Error(i);return s.addKey=Qu,s.keys=r,s.injectors=[t],s.constructResolvingMessage=n,s.ngOriginalError=a,s}function Qu(t,e){this.injectors.push(t),this.keys.push(e),this.message=this.constructResolvingMessage(this.keys)}function Xu(t,e){const n=[];for(let a=0,r=e.length;a<r;a++){const t=e[a];n.push(t&&0!=t.length?t.map(j).join(" "):"?")}return Error("Cannot resolve all parameters for '"+j(t)+"'("+n.join(", ")+"). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '"+j(t)+"' is decorated with Injectable.")}class to{constructor(t,e){if(this.token=t,this.id=e,!t)throw new Error("Token must be defined!");this.displayName=j(this.token)}static get(t){return no.get(G(t))}static get numberOfKeys(){return no.numberOfKeys}}class eo{constructor(){this._allKeys=new Map}get(t){if(t instanceof to)return t;if(this._allKeys.has(t))return this._allKeys.get(t);const e=new to(t,to.numberOfKeys);return this._allKeys.set(t,e),e}get numberOfKeys(){return this._allKeys.size}}const no=new eo;class ao{constructor(t){this.reflectionCapabilities=t}updateCapabilities(t){this.reflectionCapabilities=t}factory(t){return this.reflectionCapabilities.factory(t)}parameters(t){return this.reflectionCapabilities.parameters(t)}annotations(t){return this.reflectionCapabilities.annotations(t)}propMetadata(t){return this.reflectionCapabilities.propMetadata(t)}hasLifecycleHook(t,e){return this.reflectionCapabilities.hasLifecycleHook(t,e)}getter(t){return this.reflectionCapabilities.getter(t)}setter(t){return this.reflectionCapabilities.setter(t)}method(t){return this.reflectionCapabilities.method(t)}importUri(t){return this.reflectionCapabilities.importUri(t)}resourceUri(t){return this.reflectionCapabilities.resourceUri(t)}resolveIdentifier(t,e,n,a){return this.reflectionCapabilities.resolveIdentifier(t,e,n,a)}resolveEnum(t,e){return this.reflectionCapabilities.resolveEnum(t,e)}}const ro=new ao(new ou);class io{constructor(t,e,n){this.key=t,this.optional=e,this.visibility=n}static fromKey(t){return new io(t,!1,null)}}const so=[];class uo{constructor(t,e,n){this.key=t,this.resolvedFactories=e,this.multiProvider=n,this.resolvedFactory=this.resolvedFactories[0]}}class oo{constructor(t,e){this.factory=t,this.dependencies=e}}function lo(t){let e,n;if(t.useClass){const a=G(t.useClass);e=ro.factory(a),n=ho(a)}else t.useExisting?(e=t=>t,n=[io.fromKey(to.get(t.useExisting))]):t.useFactory?(e=t.useFactory,n=function(t,e){if(e){const n=e.map(t=>[t]);return e.map(e=>go(t,e,n))}return ho(t)}(t.useFactory,t.deps)):(e=()=>t.useValue,n=so);return new oo(e,n)}function co(t){return new uo(to.get(t.provide),[lo(t)],t.multi||!1)}function fo(t){const e=function(t,e){for(let n=0;n<t.length;n++){const a=t[n],r=e.get(a.key.id);if(r){if(a.multiProvider!==r.multiProvider)throw Error(`Cannot mix multi providers and regular providers, got: ${r} ${a}`);if(a.multiProvider)for(let t=0;t<a.resolvedFactories.length;t++)r.resolvedFactories.push(a.resolvedFactories[t]);else e.set(a.key.id,a)}else{let t;t=a.multiProvider?new uo(a.key,a.resolvedFactories.slice(),a.multiProvider):a,e.set(a.key.id,t)}}return e}(function t(e,n){return e.forEach(e=>{if(e instanceof nu)n.push({provide:e,useClass:e});else if(e&&"object"==typeof e&&void 0!==e.provide)n.push(e);else{if(!(e instanceof Array))throw Error("Invalid provider - only instances of Provider and Type are allowed, got: "+e);t(e,n)}}),n}(t,[]).map(co),new Map);return Array.from(e.values())}function ho(t){const e=ro.parameters(t);if(!e)return[];if(e.some(t=>null==t))throw Xu(t,e);return e.map(n=>go(t,n,e))}function go(t,e,n){let a=null,r=!1;if(!Array.isArray(e))return po(e instanceof T?e.token:e,r,null);let i=null;for(let s=0;s<e.length;++s){const t=e[s];t instanceof nu?a=t:t instanceof T?a=t.token:t instanceof w?r=!0:t instanceof O||t instanceof S?i=t:t instanceof K&&(a=t)}if(a=G(a),null!=a)return po(a,r,i);throw Xu(t,n)}function po(t,e,n){return new io(to.get(t),e,n)}const bo=new Object;class mo{static resolve(t){return fo(t)}static resolveAndCreate(t,e){const n=mo.resolve(t);return mo.fromResolvedProviders(n,e)}static fromResolvedProviders(t,e){return new yo(t,e)}}let yo=(()=>{class t{constructor(t,e){this._constructionCounter=0,this._providers=t,this.parent=e||null;const n=t.length;this.keyIds=new Array(n),this.objs=new Array(n);for(let a=0;a<n;a++)this.keyIds[a]=t[a].key.id,this.objs[a]=bo}get(t,e=J){return this._getByKey(to.get(t),null,e)}resolveAndCreateChild(t){const e=mo.resolve(t);return this.createChildFromResolved(e)}createChildFromResolved(e){const n=new t(e);return n.parent=this,n}resolveAndInstantiate(t){return this.instantiateResolved(mo.resolve([t])[0])}instantiateResolved(t){return this._instantiateProvider(t)}getProviderAtIndex(t){if(t<0||t>=this._providers.length)throw function(t){return Error(`Index ${t} is out-of-bounds.`)}(t);return this._providers[t]}_new(t){if(this._constructionCounter++>this._getMaxNumberOfObjects())throw Zu(this,t.key,(function(t){return"Cannot instantiate cyclic dependency!"+Ju(t)}));return this._instantiateProvider(t)}_getMaxNumberOfObjects(){return this.objs.length}_instantiateProvider(t){if(t.multiProvider){const e=new Array(t.resolvedFactories.length);for(let n=0;n<t.resolvedFactories.length;++n)e[n]=this._instantiate(t,t.resolvedFactories[n]);return e}return this._instantiate(t,t.resolvedFactories[0])}_instantiate(t,e){const n=e.factory;let a,r;try{a=e.dependencies.map(t=>this._getByReflectiveDependency(t))}catch(s){throw s.addKey&&s.addKey(this,t.key),s}try{r=n(...a)}catch(s){throw Zu(this,t.key,(function(t){const e=j(t[0].token);return`${i.message}: Error during instantiation of ${e}!${Ju(t)}.`}),i=s)}var i;return r}_getByReflectiveDependency(t){return this._getByKey(t.key,t.visibility,t.optional?null:J)}_getByKey(e,n,a){return e===t.INJECTOR_KEY?this:n instanceof O?this._getByKeySelf(e,a):this._getByKeyDefault(e,a,n)}_getObjByKeyId(t){for(let e=0;e<this.keyIds.length;e++)if(this.keyIds[e]===t)return this.objs[e]===bo&&(this.objs[e]=this._new(this._providers[e])),this.objs[e];return bo}_throwOrNull(t,e){if(e!==J)return e;throw function(t,e){return Zu(t,e,(function(t){return`No provider for ${j(t[0].token)}!${Ju(t)}`}))}(this,t)}_getByKeySelf(t,e){const n=this._getObjByKeyId(t.id);return n!==bo?n:this._throwOrNull(t,e)}_getByKeyDefault(e,n,a){let r;for(r=a instanceof S?this.parent:this;r instanceof t;){const t=r,n=t._getObjByKeyId(e.id);if(n!==bo)return n;r=t.parent}return null!==r?r.get(e.token,n):this._throwOrNull(e,n)}get displayName(){return`ReflectiveInjector(providers: [${function(t,e){const n=new Array(t._providers.length);for(let a=0;a<t._providers.length;++a)n[a]=e(t.getProviderAtIndex(a));return n}(this,t=>' "'+t.key.displayName+'" ').join(", ")}])`}toString(){return this.displayName}}return t.INJECTOR_KEY=to.get(Bu),t})();const vo=new K("AnalyzeForEntryComponents");class xo{}const _o=_("ContentChildren",(t,e={})=>Object.assign({selector:t,first:!1,isViewQuery:!1,descendants:!1},e),xo),To=_("ContentChild",(t,e={})=>Object.assign({selector:t,first:!0,isViewQuery:!1,descendants:!0},e),xo),wo=_("ViewChildren",(t,e={})=>Object.assign({selector:t,first:!1,isViewQuery:!0,descendants:!0},e),xo),Oo=_("ViewChild",(t,e)=>Object.assign({selector:t,first:!0,isViewQuery:!0,descendants:!0},e),xo);function So(t){const e=[],n=new Map;function a(e){let a=n.get(e);if(!a){const r=t(e);n.set(e,a=r.then(Ao))}return a}return Io.forEach((t,n)=>{const r=[];t.templateUrl&&r.push(a(t.templateUrl).then(e=>{t.template=e}));const i=t.styleUrls,s=t.styles||(t.styles=[]),u=t.styles.length;i&&i.forEach((e,n)=>{s.push(""),r.push(a(e).then(a=>{s[u+n]=a,i.splice(i.indexOf(e),1),0==i.length&&(t.styleUrls=void 0)}))});const o=Promise.all(r).then(()=>function(t){No.delete(t)}(n));e.push(o)}),Ro(),Promise.all(e).then(()=>{})}let Io=new Map;const No=new Set;function Co(t){return!!(t.templateUrl&&!t.hasOwnProperty("template")||t.styleUrls&&t.styleUrls.length)}function Ro(){const t=Io;return Io=new Map,t}function Ao(t){return"string"==typeof t?t:t.text()}function ko(t){const e=Ae(),n=e[1];n.firstTemplatePass&&(function(t,e,n){const a=t.expandoInstructions,r=a.length;r>=2&&a[r-2]===e.hostBindings?a[r-1]=a[r-1]+n:a.push(e.hostBindings,n)}(n,Se,t),function(t,e,n){for(let a=0;a<n;a++)e.push(ci),t.blueprint.push(ci),t.data.push(null)}(n,e,t))}let Eo=null;function Lo(){if(!Eo){const t=U.Symbol;if(t&&t.iterator)Eo=t.iterator;else{const t=Object.getOwnPropertyNames(Map.prototype);for(let e=0;e<t.length;++e){const n=t[e];"entries"!==n&&"size"!==n&&Map.prototype[n]===Map.prototype.entries&&(Eo=n)}}}return Eo}function Do(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}function Po(t,e){const n=qo(t),a=qo(e);if(n&&a)return function(t,e,n){const a=t[Lo()](),r=e[Lo()]();for(;;){const t=a.next(),e=r.next();if(t.done&&e.done)return!0;if(t.done||e.done)return!1;if(!n(t.value,e.value))return!1}}(t,e,Po);{const r=t&&("object"==typeof t||"function"==typeof t),i=e&&("object"==typeof e||"function"==typeof e);return!(n||!r||a||!i)||Do(t,e)}}class Mo{constructor(t){this.wrapped=t}static wrap(t){return new Mo(t)}static unwrap(t){return Mo.isWrapped(t)?t.wrapped:t}static isWrapped(t){return t instanceof Mo}}function qo(t){return!!jo(t)&&(Array.isArray(t)||!(t instanceof Map)&&Lo()in t)}function jo(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function Fo(t,e,n){return t[e]=n}function Vo(t,e){return t[e]}function Go(t,e,n){return!!yn(t[e],n)&&(t[e]=n,!0)}function Bo(t,e,n,a){const r=Go(t,e,n);return Go(t,e+1,a)||r}function zo(t,e,n,a,r){const i=Bo(t,e,n,a);return Go(t,e+2,r)||i}function Yo(t,e,n,a,r,i){const s=Bo(t,e,n,a);return Bo(t,e+2,r,i)||s}function Ho(t,e,n){const a=on(),r=Uo(Ae(),e);return r!==ci&&Yi(a,t,r,n),Ho}function Uo(t,e){const n=t[7]++;return cs(t),Go(t,n,e)?e:ci}function Wo(t,e,n,a){const r=on(),i=Ae(),s=Uo(i,e);return s!==ci&&es(r,t,s,i,n,a),Wo}function Ko(t,e){let n=!1;const a=t[1].data;let r=t[7];if(null==a[r]){for(let t=2;t<e.length;t+=2)a[r++]=e[t];r=t[7]}for(let s=1;s<e.length;s+=2)n=Go(t,r++,e[s])||n;if(t[7]=r,cs(t,e[0],e[e.length-1]),!n)return ci;let i=e[0];for(let s=1;s<e.length;s+=2)i+=vn(e[s])+e[s+1];return i}function $o(t,e,n,a){const r=Go(t,t[7]++,n);return cs(t,e,a),r?e+vn(n)+a:ci}function Jo(t,e,n,a,r,i){const s=t[7],u=Bo(t,s,n,r);return t[7]+=2,cs(t,e,i)&&(t[1].data[s]=a),u?e+vn(n)+a+vn(r)+i:ci}function Zo(t,e,n,a,r,i,s,u){const o=t[7],l=zo(t,o,n,r,s);if(t[7]+=3,cs(t,e,u)){const e=t[1].data;e[o]=a,e[o+1]=i}return l?e+vn(n)+a+vn(r)+i+vn(s)+u:ci}function Qo(t,e,n,a,r,i,s,u,o,l){const d=t[7],c=Yo(t,d,n,r,s,o);if(t[7]+=4,cs(t,e,l)){const e=t[1].data;e[d]=a,e[d+1]=i,e[d+2]=u}return c?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l:ci}function Xo(t,e,n,a,r,i,s,u,o,l,d,c){const f=t[7];let h=Yo(t,f,n,r,s,o);if(h=Go(t,f+4,d)||h,t[7]+=5,cs(t,e,c)){const e=t[1].data;e[f]=a,e[f+1]=i,e[f+2]=u,e[f+3]=l}return h?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l+vn(d)+c:ci}function tl(t,e,n,a,r,i,s,u,o,l,d,c,f,h){const g=t[7];let p=Yo(t,g,n,r,s,o);if(p=Bo(t,g+4,d,f)||p,t[7]+=6,cs(t,e,h)){const e=t[1].data;e[g]=a,e[g+1]=i,e[g+2]=u,e[g+3]=l,e[g+4]=c}return p?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l+vn(d)+c+vn(f)+h:ci}function el(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p){const b=t[7];let m=Yo(t,b,n,r,s,o);if(m=zo(t,b+4,d,f,g)||m,t[7]+=7,cs(t,e,p)){const e=t[1].data;e[b]=a,e[b+1]=i,e[b+2]=u,e[b+3]=l,e[b+4]=c,e[b+5]=h}return m?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l+vn(d)+c+vn(f)+h+vn(g)+p:ci}function nl(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m){const y=t[7];let v=Yo(t,y,n,r,s,o);if(v=Yo(t,y+4,d,f,g,b)||v,t[7]+=8,cs(t,e,m)){const e=t[1].data;e[y]=a,e[y+1]=i,e[y+2]=u,e[y+3]=l,e[y+4]=c,e[y+5]=h,e[y+6]=p}return v?e+vn(n)+a+vn(r)+i+vn(s)+u+vn(o)+l+vn(d)+c+vn(f)+h+vn(g)+p+vn(b)+m:ci}function al(t,e,n,a,r,i){const s=on(),u=Ae(),o=$o(u,e,n,a);return o!==ci&&es(s,t,o,u,r,i),al}function rl(t,e,n,a,r,i,s,u){const o=on(),l=Ae(),d=Jo(l,e,n,a,r,i);return d!==ci&&es(o,t,d,l,s,u),rl}function il(t,e,n,a,r,i,s,u,o,l){const d=on(),c=Ae(),f=Zo(c,e,n,a,r,i,s,u);return f!==ci&&es(d,t,f,c,o,l),il}function sl(t,e,n,a,r,i,s,u,o,l,d,c){const f=on(),h=Ae(),g=Qo(h,e,n,a,r,i,s,u,o,l);return g!==ci&&es(f,t,g,h,d,c),sl}function ul(t,e,n,a,r,i,s,u,o,l,d,c,f,h){const g=on(),p=Ae(),b=Xo(p,e,n,a,r,i,s,u,o,l,d,c);return b!==ci&&es(g,t,b,p,f,h),ul}function ol(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p){const b=on(),m=Ae(),y=tl(m,e,n,a,r,i,s,u,o,l,d,c,f,h);return y!==ci&&es(b,t,y,m,g,p),ol}function ll(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m){const y=on(),v=Ae(),x=el(v,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p);return x!==ci&&es(y,t,x,v,b,m),ll}function dl(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m,y,v){const x=on(),_=Ae(),T=nl(_,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m);return T!==ci&&es(x,t,T,_,y,v),dl}function cl(t,e,n,a){const r=on(),i=Ae(),s=Ko(i,e);return s!==ci&&es(r,t,s,i,n,a),cl}function fl(t){us(Mr(t),t)}function hl(t){!function(t,e){const n=0===t.flags;if(t.flags|=1,n&&t.clean==Si){let e;t.clean=new Promise(t=>e=t),t.scheduler(()=>{if(1&t.flags&&(t.flags&=-2,ss(t)),2&t.flags){t.flags&=-3;const e=t.playerHandler;e&&e.flushPlayers()}t.clean=Si,e(null)})}}(is(Mr(t))[9])}function gl(t){const e=Ae(),n=yl(e,t,null,null);e[1].firstTemplatePass&&(n.tViews=[]),He()}function pl(t,e,n,a,r,i,s,u){const o=Ae(),l=o[1],d=yl(o,t,r||null,i||null);if(l.firstTemplatePass){Hi(l,o,d,s||null);const t=d.tViews=Fi(-1,e,n,a,l.directiveRegistry,l.pipeRegistry,null,null);null!==l.queries&&(l.queries.template(l,d),t.queries=l.queries.embeddedTView(d))}qi(l,o,d,u),qr(be(d,o),o),re(l,d),He()}function bl(t){const e=Ae(),n=e[1];Be(ve(n.data,t),!0),e[t+19][2]=0,ie(e,n,$e(),void 0)}function ml(){let t=Ge();Ye()?He():(t=t.parent,Be(t,!1));const e=Ae()[t.index],n=e[2];for(;n<e.length-9;)Rs(e,n)}function yl(t,e,n,a){const r=e+19,i=t[r]=t[12].createComment(""),s=Ai(t[1],t[6],e,0,n,a),u=t[r]=ns(i,t,i,s);return Ms(i,s,t),rs(t,u),s}function vl(t,e){const n=Ae(),a=n[1],r=t+19;r>=a.data.length&&(a.data[r]=null,a.blueprint[r]=null),n[r]=e}function xl(t){return ve(We,t)}function _l(t){return ve(Ae(),t)}function Tl(t,e=C.Default){t=G(t);const n=Ae();return null==n?rt(t,e):_a(Ge(),n,t,e)}function wl(t){return xa(Ge(),t)}function Ol(){var t,e;Ae()[1].firstTemplatePass&&(t=Ge(),e=jl(),Nn(Vl(t),e),Nn(Fl(t),e))}function Sl(t){bn(t)}function Il(t,e,n){Nl(on(),t,e,n)}function Nl(t,e,n,a){Rl(t,Ae()[7]++,e,function(t,e){if(t===ci)return t;let n=null;return null!==t&&(n=e?vn(t)+e:t),n}(n,a),!1,Bl())}function Cl(t,e){const n=Ae()[7]++;Rl(on(),n,t,e,!0,Bl())}function Rl(t,e,n,a,r,i){const s=Ae(),u=ye(t,s),o=be(u,s);let l=!1;if(a!==ci)if(r)l=Qr(Vl(u),s,o,n,e,a,i,!1);else{const t=mn();l=Xr(Fl(u),s,o,n,e,a,t,i,!1)}return l}function Al(t){const e=on(),n=Ae(),a=ye(e,n),r=Fl(a),i=jl(),s=n[7]++;!i&&$n(a)&&t!==ci&&(Dl(r,n,a,s,t,!1),t=ci),Ll(e,r,s,t,!1,Bl())}function kl(t){El(on(),t)}function El(t,e){const n=Ae(),a=ye(t,n),r=Vl(a),i=jl(),s=n[7]++;!i&&Kn(a)&&e!==ci&&(Dl(r,n,a,s,e,!0),e=ci),Ll(t,r,s,e,!0,Bl())}function Ll(t,e,n,a,r,i){pi();const s=Ae();let u=!1;if(a!==ci){const o=be(ye(t,s),s),l=s[n];u=Gn(l,a);const d=function(t,e,n){const a=Array.isArray(t)?t:[null];a[0]=e||null;for(let u=1;u<a.length;u+=2)Zn(a,u,null);let r,i=null,s=!1;if("string"==typeof e?e.length&&(i=e.split(/\s+/),s=!0):(i=e?Object.keys(e):null,r=e),i)for(let u=0;u<i.length;u++){const t=i[u];vi(a,n?Yn(t):t,!!s||r[t],!0)}return a}(l,a,!r);r?Qr(e,s,o,null,n,d,i,u):Xr(e,s,o,null,n,d,mn(),i,u)}return u}function Dl(t,e,n,a,r,i){e[a]!==r&&((r||jn(t))&&ys(e,n.inputs[i?"class":"style"],function(t,e,n){let a=e;var r;return t.length>0&&(a=n?zn(t,((r=e)&&"string"!=typeof r&&(r=Object.keys(r).join(" ")),r||"")):zn(t,function(t){let e="";if(t){const n=Object.keys(t);for(let a=0;a<n.length;a++){const r=n[a];e=zn(e,`${r}:${t[r]}`,";")}}return e}(e),";")),a}(Wn(t),r,i)),e[a]=r)}function Pl(){const t=on(),e=Ae(),n=ye(t,e),a=function(t,e){return 3===t.type?e[12]:null}(n,e),r=be(n,e),i=jl(),s=mn();(function(t,e,n,a,r,i,s){const u=n?Fn(n):!!a&&Fn(a),o=qn(n,i),l=qn(a,i);Zr.length&&(o||l)&&ei();const d=fe(r,u),c=ii(t,r,e,n,o,d.classesBitMask,li,null),f=ii(t,r,e,a,l,d.stylesBitMask,oi,s);c&&f?(he(),u&&function(t){le.delete(t)}(r)):u&&function(t,e){le.set(t,e)}(r,d)})(a,e,Vl(n),Fl(n),r,i,s),bn(null)}function Ml(t,e,n){let a=!1,r=Hn(t.styles),i=Hn(t.classes),s=-1;for(let u=n;u<e.length;u++){const t=e[u];"number"==typeof t?s=t:1==s?(i=i||[""],vi(i,t,!0),a=!0):2==s&&(r=r||[""],vi(r,t,e[++u]),a=!0)}return i&&i.length>1&&(t.classes||(t.classes=i),ql(t.classes,xi(i,!0))),r&&r.length>1&&(t.styles||(t.styles=r),ql(t.styles,xi(r,!1))),a}function ql(t,e){Hn(t)[0]=e}function jl(){return De+Pe}function Fl(t){return Gl(t,!1)}function Vl(t){return Gl(t,!0)}function Gl(t,e){let n=e?t.classes:t.styles;return Un(n)||(n=[n||[""],0,0,1,0,"--MAP--"],e?t.classes=n:t.styles=n),n}function Bl(){return Me>0}function zl(t,e,n,a){const r=Ae(),i=r[1],s=r[t+19]=Ci(e),u=r[12],o=Ai(i,r[6],t,3,e,n||null);if(null!=n){const t=na(s,n);i.firstTemplatePass&&Ml(o,n,t)}if(xs(u,s,o),Ms(s,o,r),0===de&&qr(s,r),de++,i.firstTemplatePass){Hi(i,r,o,a||null);const t=hs(o);t&&t.hasOwnProperty("class")&&(o.flags|=8),t&&t.hasOwnProperty("style")&&(o.flags|=16),null!==i.queries&&i.queries.elementStart(i,o)}qi(i,r,o),Mi(i,o,r)}function Yl(){let t=Ge();Ye()?He():(t=t.parent,Be(t,!1));const e=t,n=Ae(),a=n[1];re(a,t),de--,a.firstTemplatePass&&null!==a.queries&&Qt(t)&&a.queries.elementEnd(t),Kn(e)&&e.classes&&Wl(e.classes,n,e.inputs.class),$n(e)&&e.styles&&Wl(e.styles,n,e.inputs.style)}function Hl(t,e,n,a){zl(t,e,n,a),Yl()}function Ul(t){const e=on(),n=Ae(),a=n[1],r=ye(e,n);if(3===r.type){const e=be(r,n),i=na(e,t);a.firstTemplatePass&&Ml(r,t,i)&&xs(n[12],e,r)}}function Wl(t,e,n){ys(e,n,Wn(t)||null)}function Kl(t,e,n){const a=Ae(),r=a[1],i=a[t+19]=a[12].createComment(""),s=Ai(r,a[6],t,4,"ng-container",e||null);e&&r.firstTemplatePass&&Ml(s,e,0),Ms(i,s,a),r.firstTemplatePass&&(Hi(r,a,s,n||null),r.queries&&r.queries.elementStart(r,s)),qi(r,a,s),qr(i,a),Mi(r,s,a)}function $l(){let t=Ge();const e=Ae()[1];Ye()?He():(t=t.parent,Be(t,!1)),re(e,t),e.firstTemplatePass&&null!==e.queries&&Qt(t)&&e.queries.elementEnd(t)}function Jl(t,e,n){Kl(t,e,n),$l()}function Zl(t,e,n){const a=Ae(),r=Ge(),i=2===r.type?r.parent:r,s=a[i.index];let u=function(t,e,n){for(let a=e+9;a<t.length;a++){const e=t[a][1].id;if(e===n)return t[a];if(!(e<n))break;Rs(t,a-9)}return null}(s,s[2],t);if(u)Ee=!0,an(u,u[1].node);else{u=Ri(a,function(t,e,n,a){const r=Ae()[1],i=a.tViews;return(t>=i.length||null==i[t])&&(i[t]=Fi(t,null,e,n,r.directiveRegistry,r.pipeRegistry,null,null)),i[t]}(t,e,n,i),null,16,null,null);const s=Ye()?r:r&&r.parent;ki(u[1],s,t,u),an(u,u[1].node)}return s&&(Ue(u)&&Is(u,s,s[2]),s[2]++),Ue(u)?3:2}function Ql(){const t=Ae(),e=t[6];Ue(t)&&(Ii(t),t[2]&=-5),we(t),Ii(t),sn(t[3][3],!0),Be(e,!1)}function Xl(){return Ae()}function td(t){return!!t&&"function"==typeof t.then}function ed(t){return!!t&&"function"==typeof t.subscribe}function nd(t,e,n=!1,a){rd(t,e,n,a)}function ad(t,e,n=!1,a){rd(t,e,n,a,bs)}function rd(t,e,n=!1,a,r){const i=Ae(),s=Ge(),u=i[1],o=u.firstTemplatePass&&(u.cleanup||(u.cleanup=[]));let l=!0;if(3===s.type){const u=be(s,i),d=a?a(u):St,c=d.target||u,f=r?r(s,i):i[12],h=gs(i),g=h.length,p=a?t=>a(ge(t[s.index])).target:s.index;if(ta(f)){let n=null;if(!a&&function(t){return t.directiveEnd>t.directiveStart}(s)&&(n=function(t,e,n){const a=t[1].cleanup;if(null!=a)for(let r=0;r<a.length-1;r+=2){const i=a[r];if(i===e&&a[r+1]===n){const e=t[8],n=a[r+2];return e.length>n?e[n]:null}"string"==typeof i&&(r+=2)}return null}(i,t,s.index)),null!==n)e.__ngNextListenerFn__=n.__ngNextListenerFn__,n.__ngNextListenerFn__=e,l=!1;else{e=sd(s,i,e,!1);const n=f.listen(d.name||c,t,e);h.push(e,n),o&&o.push(t,p,g,g+1)}}else e=sd(s,i,e,!0),c.addEventListener(t,e,n),h.push(e),o&&o.push(t,p,g,n)}void 0===s.outputs&&(s.outputs=Bi(s,1));const d=s.outputs;let c;if(l&&d&&(c=d[t])){const n=c.length;if(n){const a=gs(i);for(let r=0;r<n;r+=3){const n=i[c[r]][c[r+2]].subscribe(e),u=a.length;a.push(e,n),o&&o.push(t,s.index,u,-(u+1))}}}}function id(t,e,n){try{return!1!==e(n)}catch(a){return ms(t,a),!1}}function sd(t,e,n,a){return function r(i){const s=1&t.flags?xe(t.index,e):e;0==(32&e[2])&&is(s);let u=id(e,n,i),o=r.__ngNextListenerFn__;for(;o;)u=id(e,o,i)&&u,o=o.__ngNextListenerFn__;return a&&!1===u&&(i.preventDefault(),i.returnValue=!1),u}}function ud(t=1){return rn(t)}function od(t,e){let n=null;const a=function(t){const e=t.attrs;if(null!=e){const t=e.indexOf(5);if(0==(1&t))return e[t+1]}return null}(t);for(let r=0;r<e.length;r++){const i=e[r];if("*"!==i){if(null===a?$r(t,i,!0):Jr(a,i))return r}else n=r}return n}function ld(t){const e=da(Ae())[6];if(!e.projection){const n=e.projection=new Array(t?t.length:1).fill(null),a=n.slice();let r=e.child;for(;null!==r;){const e=t?od(r,t):0;null!==e&&(a[e]?a[e].projectionNext=r:n[e]=r,a[e]=r),r=r.next}}}let dd=!1;function cd(t){dd=t}function fd(t,e=0,n){const a=Ae(),r=Ai(a[1],a[6],t,1,null,n||null);null===r.projection&&(r.projection=e),He(),dd||Fs(a,r,e,da(a))}function hd(t,e,n){return gd(t,"",e,"",n),hd}function gd(t,e,n,a,r){const i=on(),s=$o(Ae(),e,n,a);return s!==ci&&Yi(i,t,s,r),gd}function pd(t,e,n,a,r,i,s){const u=on(),o=Jo(Ae(),e,n,a,r,i);return o!==ci&&Yi(u,t,o,s),pd}function bd(t,e,n,a,r,i,s,u,o){const l=on(),d=Zo(Ae(),e,n,a,r,i,s,u);return d!==ci&&Yi(l,t,d,o),bd}function md(t,e,n,a,r,i,s,u,o,l,d){const c=on(),f=Qo(Ae(),e,n,a,r,i,s,u,o,l);return f!==ci&&Yi(c,t,f,d),md}function yd(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=on(),g=Xo(Ae(),e,n,a,r,i,s,u,o,l,d,c);return g!==ci&&Yi(h,t,g,f),yd}function vd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g){const p=on(),b=tl(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h);return b!==ci&&Yi(p,t,b,g),vd}function xd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b){const m=on(),y=el(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h,g,p);return y!==ci&&Yi(m,t,y,b),xd}function _d(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m,y){const v=on(),x=nl(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m);return x!==ci&&Yi(v,t,x,y),_d}function Td(t,e,n){const a=on(),r=Ko(Ae(),e);return r!==ci&&Yi(a,t,r,n),Td}function wd(t,e){const n=Ae(),a=n[t+19]=Os(e,n[12]),r=Ai(n[1],n[6],t,3,null,null);He(),Ms(a,r,n)}function Od(t){const e=Ae(),n=on(),a=Uo(e,t);a!==ci&&vs(e,n,vn(a))}function Sd(t){return Id("",t,""),Sd}function Id(t,e,n){const a=on(),r=Ae(),i=$o(r,t,e,n);return i!==ci&&vs(r,a,i),Id}function Nd(t,e,n,a,r){const i=on(),s=Ae(),u=Jo(s,t,e,n,a,r);return u!==ci&&vs(s,i,u),Nd}function Cd(t,e,n,a,r,i,s){const u=on(),o=Ae(),l=Zo(o,t,e,n,a,r,i,s);return l!==ci&&vs(o,u,l),Cd}function Rd(t,e,n,a,r,i,s,u,o){const l=on(),d=Ae(),c=Qo(d,t,e,n,a,r,i,s,u,o);return c!==ci&&vs(d,l,c),Rd}function Ad(t,e,n,a,r,i,s,u,o,l,d){const c=on(),f=Ae(),h=Xo(f,t,e,n,a,r,i,s,u,o,l,d);return h!==ci&&vs(f,c,h),Ad}function kd(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=on(),g=Ae(),p=tl(g,t,e,n,a,r,i,s,u,o,l,d,c,f);return p!==ci&&vs(g,h,p),kd}function Ed(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g){const p=on(),b=Ae(),m=el(b,t,e,n,a,r,i,s,u,o,l,d,c,f,h,g);return m!==ci&&vs(b,p,m),Ed}function Ld(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b){const m=on(),y=Ae(),v=nl(y,t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b);return v!==ci&&vs(y,m,v),Ld}function Dd(t){const e=on(),n=Ae(),a=Ko(n,t);return a!==ci&&vs(n,e,a),Dd}function Pd(t,e,n){const a=$o(Ae(),t,e,n);El(on(),a)}function Md(t,e,n,a,r){const i=Jo(Ae(),t,e,n,a,r);El(on(),i)}function qd(t,e,n,a,r,i,s){const u=Zo(Ae(),t,e,n,a,r,i,s);El(on(),u)}function jd(t,e,n,a,r,i,s,u,o){const l=Qo(Ae(),t,e,n,a,r,i,s,u,o);El(on(),l)}function Fd(t,e,n,a,r,i,s,u,o,l,d){const c=Xo(Ae(),t,e,n,a,r,i,s,u,o,l,d);El(on(),c)}function Vd(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=tl(Ae(),t,e,n,a,r,i,s,u,o,l,d,c,f);El(on(),h)}function Gd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g){const p=el(Ae(),t,e,n,a,r,i,s,u,o,l,d,c,f,h,g);El(on(),p)}function Bd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b){const m=nl(Ae(),t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b);El(on(),m)}function zd(t){const e=Ko(Ae(),t);El(on(),e)}function Yd(t,e,n,a,r){const i=$o(Ae(),e,n,a);return Nl(on(),t,i,r),Yd}function Hd(t,e,n,a,r,i,s){const u=Jo(Ae(),e,n,a,r,i);return Nl(on(),t,u,s),Hd}function Ud(t,e,n,a,r,i,s,u,o){const l=Zo(Ae(),e,n,a,r,i,s,u);return Nl(on(),t,l,o),Ud}function Wd(t,e,n,a,r,i,s,u,o,l,d){const c=Qo(Ae(),e,n,a,r,i,s,u,o,l);return Nl(on(),t,c,d),Wd}function Kd(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=Xo(Ae(),e,n,a,r,i,s,u,o,l,d,c);return Nl(on(),t,h,f),Kd}function $d(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g){const p=tl(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h);return Nl(on(),t,p,g),$d}function Jd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b){const m=el(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h,g,p);return Nl(on(),t,m,b),Jd}function Zd(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m,y){const v=nl(Ae(),e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m);return Nl(on(),t,v,y),Zd}function Qd(t,e,n){const a=Ko(Ae(),e);return Nl(on(),t,a,n),Qd}function Xd(t,e,n){const a=on(),r=Uo(Ae(),e);return r!==ci&&Yi(a,t,r,n,!0),Xd}function tc(t,e,n){const a=on(),r=Uo(Ae(),e);return r!==ci&&Yi(a,t,r,n,!0,bs),tc}function ec(t){const e=lc(t);return void 0===e.component&&(e.component=function(t,e){const n=e[1].data[t];return 1&n.flags?e[n.directiveStart]:null}(e.nodeIndex,e.lView)),e.component}function nc(t){return lc(t).lView[9]}function ac(t){let e,n=uc(t).lView;for(;null===n[0]&&(e=la(n));)n=e;return 512&n[2]?null:n[9]}function rc(t){return[...ca(t).components]}function ic(t){const e=uc(t);return new Ca(e.lView[1].data[e.nodeIndex],e.lView)}function sc(t){const e=uc(t);return void 0===e.directives&&(e.directives=Gr(e.nodeIndex,e.lView,!1)),e.directives||[]}function uc(t,e=!0){const n=Dr(t);if(!n&&e)throw new Error("Invalid ng target");return n}function oc(t){return Dr(t).native}function lc(t){if(!(t instanceof Node))throw new Error("Expecting instance of DOM Node");return uc(t)}function dc(t){return"boolean"==typeof t.useCapture}function cc(t){const e=lc(t).lView,n=e[8],a=e[1].cleanup,r=[];if(a&&n)for(let i=0;i<a.length;){const s=a[i++],u=a[i++];if("string"==typeof s){const o=s,l=ge(e[u]),d=n[a[i++]],c=a[i++],f="boolean"==typeof c?c:!(c>=0)&&null;t==l&&r.push({element:t,name:o,callback:d,useCapture:f})}}return r.sort(fc),r}function fc(t,e){return t.name==e.name?0:t.name<e.name?-1:1}let hc=!1;function gc(){hc||(hc=!0,pc("getComponent",ec),pc("getContext",nc),pc("getListeners",cc),pc("getViewComponent",ac),pc("getHostElement",oc),pc("getInjector",ic),pc("getRootComponents",rc),pc("getDirectives",sc),pc("markDirty",hl))}function pc(t,e){if(U){let n=U.ng;n||(n=U.ng={}),n[t]=e}}function bc(t,e={}){qe(null);const n=e.rendererFactory||ea,a=e.sanitizer||null,r=Ht(t);r.type!=t&&(r.type=t);const i=Vi(n,e.host||r.selectors[0][0]),s=r.onPush?576:528,u=vc(e.scheduler,e.playerHandler),o=n.createRenderer(i,r),l=Ri(null,Fi(-1,null,1,0,null,null,null,null),u,s,null,null,n,o,void 0,e.injector||null),d=an(l,null);let c,f=!1;try{n.begin&&n.begin();const t=mc(i,r,l,n,o,a);c=yc(t,r,l,u,e.hostFeatures||null),rs(l,t),Ii(l),l[2]&=-5,we(l),Ii(l),f=!0}finally{sn(d,f),n.end&&n.end()}return c}function mc(t,e,n,a,r,i){Ee=!1,ke=null,de=0,Oe=!0,bn(null),he(),le.clear();const s=n[1];n[19]=t;const u=Ai(s,null,0,3,null,null),o=Ri(n,ji(e),null,e.onPush?64:16,n[19],u,a,r,i);return s.firstTemplatePass&&(va(pa(u,n),s,e.type),u.flags=1,Qi(u,n.length,1),Ji(u)),n[19]=o}function yc(t,e,n,a,r){const i=n[1],s=function(t,e,n){const a=Ge();t.firstTemplatePass&&(n.providersResolver&&n.providersResolver(n),Wi(t,a,1),Xi(t,e,n,n.factory));const r=Sa(t.data,e,e.length-1,a);return $i(e,a,r),r}(i,n,e);a.components.push(s),t[9]=s,r&&r.forEach(t=>t(s,e)),e.contentQueries&&e.contentQueries(1,s,n.length-1);const u=Ge();return i.firstTemplatePass&&e.hostBindings&&(qe(u.index-19),Ui(e,i.expandoInstructions,s,u,i.firstTemplatePass),qe(null)),s}function vc(t,e){return{components:[],scheduler:t||_n,clean:fs,playerHandler:e||null,flags:0}}function xc(t,e){const n=Te(t)[1],a=n.data.length-1;ae(a,e,n,-1,-1,-1),re(n,{directiveStart:a,directiveEnd:a+1})}function _c(t){return ca(t).clean}class Tc{constructor(t,e,n){this.previousValue=t,this.currentValue=e,this.firstChange=n}isFirstChange(){return this.firstChange}}function wc(){return Oc.ngInherit=!0,Oc}function Oc(t){t.type.prototype.ngOnChanges&&(t.setInput=Sc,t.onChanges=function(){const t=Ic(this),e=t&&t.current;if(e){const n=t.previous;if(n===St)t.previous=e;else for(let t in e)n[t]=e[t];t.current=null,this.ngOnChanges(e)}})}function Sc(t,e,n,a){const r=Ic(t)||function(t,e){return t.__ngSimpleChanges__=e}(t,{previous:St,current:null}),i=r.current||(r.current={}),s=r.previous,u=this.declaredInputs[n],o=s[u];i[u]=new Tc(o&&o.currentValue,e,s===St),t[a]=e}function Ic(t){return t.__ngSimpleChanges__||null}function Nc(t){let e=Object.getPrototypeOf(t.type.prototype).constructor;for(;e;){let n=void 0;if(te(t))n=e.ngComponentDef||e.ngDirectiveDef;else{if(e.ngComponentDef)throw new Error("Directives cannot inherit Components");n=e.ngDirectiveDef}const a=e.ngBaseDef;if(a||n){const e=t;e.inputs=Cc(t.inputs),e.declaredInputs=Cc(t.declaredInputs),e.outputs=Cc(t.outputs)}if(a){const e=a.viewQuery,n=a.contentQueries,r=a.hostBindings;r&&kc(t,r),e&&Rc(t,e),n&&Ac(t,n),A(t.inputs,a.inputs),A(t.declaredInputs,a.declaredInputs),A(t.outputs,a.outputs)}if(n){const e=n.hostBindings;e&&kc(t,e);const a=n.viewQuery,r=n.contentQueries;a&&Rc(t,a),r&&Ac(t,r),A(t.inputs,n.inputs),A(t.declaredInputs,n.declaredInputs),A(t.outputs,n.outputs),t.afterContentChecked=t.afterContentChecked||n.afterContentChecked,t.afterContentInit=t.afterContentInit||n.afterContentInit,t.afterViewChecked=t.afterViewChecked||n.afterViewChecked,t.afterViewInit=t.afterViewInit||n.afterViewInit,t.doCheck=t.doCheck||n.doCheck,t.onDestroy=t.onDestroy||n.onDestroy,t.onInit=t.onInit||n.onInit;const i=n.features;if(i)for(const n of i)n&&n.ngInherit&&n(t)}else{const n=e.prototype;n&&(t.afterContentChecked=t.afterContentChecked||n.ngAfterContentChecked,t.afterContentInit=t.afterContentInit||n.ngAfterContentInit,t.afterViewChecked=t.afterViewChecked||n.ngAfterViewChecked,t.afterViewInit=t.afterViewInit||n.ngAfterViewInit,t.doCheck=t.doCheck||n.ngDoCheck,t.onDestroy=t.onDestroy||n.ngOnDestroy,t.onInit=t.onInit||n.ngOnInit,n.ngOnChanges&&wc()(t))}e=Object.getPrototypeOf(e)}}function Cc(t){return t===St?{}:t===It?[]:t}function Rc(t,e){const n=t.viewQuery;t.viewQuery=n?(t,a)=>{e(t,a),n(t,a)}:e}function Ac(t,e){const n=t.contentQueries;t.contentQueries=n?(t,a,r)=>{e(t,a,r),n(t,a,r)}:e}function kc(t,e){const n=t.hostBindings;e!==n&&(t.hostBindings=n?(t,a,r)=>{Fe(1);try{e(t,a,r)}finally{Fe(-1)}n(t,a,r)}:e)}function Ec(t,e,n,a,r){if(t=G(t),Array.isArray(t))for(let i=0;i<t.length;i++)Ec(t[i],e,n,a,r);else{const i=Ae(),s=i[1];let u=Fu(t)?t:G(t.provide),o=Mu(t);const l=Ge(),d=65535&l.providerIndexes,c=l.directiveStart,f=l.providerIndexes>>16;if(t.useClass||Fu(t)){const n=(t.useClass||t).prototype.ngOnDestroy;n&&(s.destroyHooks||(s.destroyHooks=[])).push(e.length,n)}if(Fu(t)||!t.multi){const t=new ne(o,r,Tl),a=Dc(u,e,r?d:d+f,c);-1==a?(va(pa(l,i),s,u),e.push(u),l.directiveStart++,l.directiveEnd++,r&&(l.providerIndexes+=65536),n.push(t),i.push(t)):(n[a]=t,i[a]=t)}else{const t=Dc(u,e,d+f,c),h=Dc(u,e,d,d+f),g=t>=0&&n[t],p=h>=0&&n[h];if(r&&!p||!r&&!g){va(pa(l,i),s,u);const t=function(t,e,n,a,r){const i=new ne(t,n,Tl);return i.multi=[],i.index=e,i.componentProviders=0,Lc(i,r,a&&!n),i}(r?Mc:Pc,n.length,r,a,o);!r&&p&&(n[h].providerFactory=t),e.push(u),l.directiveStart++,l.directiveEnd++,r&&(l.providerIndexes+=65536),n.push(t),i.push(t)}else Lc(n[r?h:t],o,!r&&a);!r&&a&&p&&n[h].componentProviders++}}}function Lc(t,e,n){t.multi.push(e),n&&t.componentProviders++}function Dc(t,e,n,a){for(let r=n;r<a;r++)if(e[r]===t)return r;return-1}function Pc(t,e,n,a){return qc(this.multi,[])}function Mc(t,e,n,a){const r=this.multi;let i;if(this.providerFactory){const t=this.providerFactory.componentProviders,s=Sa(e,n,this.providerFactory.index,a);i=s.slice(0,t),qc(r,i);for(let e=t;e<s.length;e++)i.push(s[e])}else i=[],qc(r,i);return i}function qc(t,e){for(let n=0;n<t.length;n++)e.push((0,t[n])());return e}function jc(t,e=[]){return n=>{n.providersResolver=(n,a)=>function(t,e,n){const a=Ae()[1];if(a.firstTemplatePass){const r=te(t);Ec(n,a.data,a.blueprint,r,!0),Ec(e,a.data,a.blueprint,r,!1)}}(n,a?a(t):t,e)}}class Fc{}class Vc{}function Gc(t){const e=Error(`No component factory found for ${j(t)}. Did you add it to @NgModule.entryComponents?`);return e[Bc]=t,e}const Bc="ngComponent";class zc{resolveComponentFactory(t){throw Gc(t)}}let Yc=(()=>{class t{}return t.NULL=new zc,t})();class Hc{constructor(t,e,n){this._parent=e,this._ngModule=n,this._factories=new Map;for(let a=0;a<t.length;a++){const e=t[a];this._factories.set(e.componentType,e)}}resolveComponentFactory(t){let e=this._factories.get(t);if(!e&&this._parent&&(e=this._parent.resolveComponentFactory(t)),!e)throw Gc(t);return new Uc(e,this._ngModule)}}class Uc extends Vc{constructor(t,e){super(),this.factory=t,this.ngModule=e,this.selector=t.selector,this.componentType=t.componentType,this.ngContentSelectors=t.ngContentSelectors,this.inputs=t.inputs,this.outputs=t.outputs}create(t,e,n,a){return this.factory.create(t,e,n,a||this.ngModule)}}function Wc(...t){}let Kc=(()=>{class t{constructor(t){this.nativeElement=t}}return t.__NG_ELEMENT_ID__=()=>Jc(t),t})();const $c=function(t){return $s(t,Ge(),Ae())},Jc=Wc;class Zc{constructor(t,e,n,a,r,i){this.id=t,this.templateUrl=e,this.slotCount=n,this.encapsulation=a,this.styles=r,this.animations=i}}class Qc{}class Xc{}class tf{}class ef{}const nf=function(){var t={Important:1,DashCase:2};return t[t.Important]="Important",t[t.DashCase]="DashCase",t}();let af=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>sf(),t})();const rf=function(){const t=Ae(),e=xe(Ge().index,t);return function(t){const e=t[12];if(ta(e))return e;throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")}(Jt(e)?e:t)},sf=Wc;class uf{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const of=new uf("8.2.14");class lf{constructor(){}supports(t){return qo(t)}create(t){return new cf(t)}}const df=(t,e)=>e;class cf{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||df}forEachItem(t){let e;for(e=this._itHead;null!==e;e=e._next)t(e)}forEachOperation(t){let e=this._itHead,n=this._removalsHead,a=0,r=null;for(;e||n;){const i=!n||e&&e.currentIndex<pf(n,a,r)?e:n,s=pf(i,a,r),u=i.currentIndex;if(i===n)a--,n=n._nextRemoved;else if(e=e._next,null==i.previousIndex)a++;else{r||(r=[]);const t=s-a,e=u-a;if(t!=e){for(let n=0;n<t;n++){const a=n<r.length?r[n]:r[n]=0,i=a+n;e<=i&&i<t&&(r[n]=a+1)}r[i.previousIndex]=e-t}}s!==u&&t(i,s,u)}}forEachPreviousItem(t){let e;for(e=this._previousItHead;null!==e;e=e._nextPrevious)t(e)}forEachAddedItem(t){let e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)}forEachMovedItem(t){let e;for(e=this._movesHead;null!==e;e=e._nextMoved)t(e)}forEachRemovedItem(t){let e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)}forEachIdentityChange(t){let e;for(e=this._identityChangesHead;null!==e;e=e._nextIdentityChange)t(e)}diff(t){if(null==t&&(t=[]),!qo(t))throw new Error(`Error trying to diff '${j(t)}'. Only arrays and iterables are allowed`);return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let e,n,a,r=this._itHead,i=!1;if(Array.isArray(t)){this.length=t.length;for(let e=0;e<this.length;e++)n=t[e],a=this._trackByFn(e,n),null!==r&&Do(r.trackById,a)?(i&&(r=this._verifyReinsertion(r,n,a,e)),Do(r.item,n)||this._addIdentityChange(r,n)):(r=this._mismatch(r,n,a,e),i=!0),r=r._next}else e=0,function(t,e){if(Array.isArray(t))for(let n=0;n<t.length;n++)e(t[n]);else{const n=t[Lo()]();let a;for(;!(a=n.next()).done;)e(a.value)}}(t,t=>{a=this._trackByFn(e,t),null!==r&&Do(r.trackById,a)?(i&&(r=this._verifyReinsertion(r,t,a,e)),Do(r.item,t)||this._addIdentityChange(r,t)):(r=this._mismatch(r,t,a,e),i=!0),r=r._next,e++}),this.length=e;return this._truncate(r),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t,e;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=e)t.previousIndex=t.currentIndex,e=t._nextMoved;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,e,n,a){let r;return null===t?r=this._itTail:(r=t._prev,this._remove(t)),null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(n,a))?(Do(t.item,e)||this._addIdentityChange(t,e),this._moveAfter(t,r,a)):null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(Do(t.item,e)||this._addIdentityChange(t,e),this._reinsertAfter(t,r,a)):t=this._addAfter(new ff(e,n),r,a),t}_verifyReinsertion(t,e,n,a){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null);return null!==r?t=this._reinsertAfter(r,t._prev,a):t.currentIndex!=a&&(t.currentIndex=a,this._addToMoves(t,a)),t}_truncate(t){for(;null!==t;){const e=t._next;this._addToRemovals(this._unlink(t)),t=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,e,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const a=t._prevRemoved,r=t._nextRemoved;return null===a?this._removalsHead=r:a._nextRemoved=r,null===r?this._removalsTail=a:r._prevRemoved=a,this._insertAfter(t,e,n),this._addToMoves(t,n),t}_moveAfter(t,e,n){return this._unlink(t),this._insertAfter(t,e,n),this._addToMoves(t,n),t}_addAfter(t,e,n){return this._insertAfter(t,e,n),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,e,n){const a=null===e?this._itHead:e._next;return t._next=a,t._prev=e,null===a?this._itTail=t:a._prev=t,null===e?this._itHead=t:e._next=t,null===this._linkedRecords&&(this._linkedRecords=new gf),this._linkedRecords.put(t),t.currentIndex=n,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const e=t._prev,n=t._next;return null===e?this._itHead=n:e._next=n,null===n?this._itTail=e:n._prev=e,t}_addToMoves(t,e){return t.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new gf),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,e){return t.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class ff{constructor(t,e){this.item=t,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class hf{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,e){let n;for(n=this._head;null!==n;n=n._nextDup)if((null===e||e<=n.currentIndex)&&Do(n.trackById,t))return n;return null}remove(t){const e=t._prevDup,n=t._nextDup;return null===e?this._head=n:e._nextDup=n,null===n?this._tail=e:n._prevDup=e,null===this._head}}class gf{constructor(){this.map=new Map}put(t){const e=t.trackById;let n=this.map.get(e);n||(n=new hf,this.map.set(e,n)),n.add(t)}get(t,e){const n=this.map.get(t);return n?n.get(t,e):null}remove(t){const e=t.trackById;return this.map.get(e).remove(t)&&this.map.delete(e),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function pf(t,e,n){const a=t.previousIndex;if(null===a)return a;let r=0;return n&&a<n.length&&(r=n[a]),a+e+r}class bf{constructor(){}supports(t){return t instanceof Map||jo(t)}create(){return new mf}}class mf{constructor(){this._records=new Map,this._mapHead=null,this._appendAfter=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}get isDirty(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead}forEachItem(t){let e;for(e=this._mapHead;null!==e;e=e._next)t(e)}forEachPreviousItem(t){let e;for(e=this._previousMapHead;null!==e;e=e._nextPrevious)t(e)}forEachChangedItem(t){let e;for(e=this._changesHead;null!==e;e=e._nextChanged)t(e)}forEachAddedItem(t){let e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)}forEachRemovedItem(t){let e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)}diff(t){if(t){if(!(t instanceof Map||jo(t)))throw new Error(`Error trying to diff '${j(t)}'. Only maps and objects are allowed`)}else t=new Map;return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let e=this._mapHead;if(this._appendAfter=null,this._forEach(t,(t,n)=>{if(e&&e.key===n)this._maybeAddToChanges(e,t),this._appendAfter=e,e=e._next;else{const a=this._getOrCreateRecordForKey(n,t);e=this._insertBeforeOrAppend(e,a)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let t=e;null!==t;t=t._nextRemoved)t===this._mapHead&&(this._mapHead=null),this._records.delete(t.key),t._nextRemoved=t._next,t.previousValue=t.currentValue,t.currentValue=null,t._prev=null,t._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,e){if(t){const n=t._prev;return e._next=t,e._prev=n,t._prev=e,n&&(n._next=e),t===this._mapHead&&(this._mapHead=e),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(t,e){if(this._records.has(t)){const n=this._records.get(t);this._maybeAddToChanges(n,e);const a=n._prev,r=n._next;return a&&(a._next=r),r&&(r._prev=a),n._next=null,n._prev=null,n}const n=new yf(t);return this._records.set(t,n),n.currentValue=e,this._addToAdditions(n),n}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,e){Do(e,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=e,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,e){t instanceof Map?t.forEach(e):Object.keys(t).forEach(n=>e(t[n],n))}}class yf{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}let vf=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(null!=n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend IterableDiffers without a parent injector");return t.create(e,n)},deps:[[t,new S,new w]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(null!=e)return e;throw new Error(`Cannot find a differ supporting object '${t}' of type '${n=t,n.name||typeof n}'`);var n}}return t.ngInjectableDef=k({token:t,providedIn:"root",factory:()=>new t([new lf])}),t})(),xf=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return t.create(e,n)},deps:[[t,new S,new w]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(e)return e;throw new Error(`Cannot find a differ supporting object '${t}'`)}}return t.ngInjectableDef=k({token:t,providedIn:"root",factory:()=>new t([new bf])}),t})();const _f=[new bf],Tf=new vf([new lf]),wf=new xf(_f);let Of=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>If(t,Kc),t})();const Sf=function(t,e){return Js(t,e,Ge(),Ae())},If=Wc;let Nf=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>Rf(t,Kc),t})();const Cf=function(t,e){return Zs(t,e,Ge(),Ae())},Rf=Wc;function Af(t,e,n,a){let r=`ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '${e}'. Current value: '${n}'.`;return a&&(r+=" It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook ?"),function(t,e){const n=new Error(t);return kf(n,e),n}(r,t)}function kf(t,e){t.ngDebugContext=e,t.ngErrorLogger=e.logError.bind(e)}function Ef(t){return new Error("ViewDestroyedError: Attempt to use a destroyed view: "+t)}function Lf(t,e,n){const a=t.state,r=1792&a;return r===e?(t.state=-1793&a|n,t.initIndex=-1,!0):r===n}function Df(t,e,n){return(1792&t.state)===e&&t.initIndex<=n&&(t.initIndex=n+1,!0)}function Pf(t,e){return t.nodes[e]}function Mf(t,e){return t.nodes[e]}function qf(t,e){return t.nodes[e]}function jf(t,e){return t.nodes[e]}function Ff(t,e){return t.nodes[e]}class Vf{}const Gf={setCurrentNode:void 0,createRootView:void 0,createEmbeddedView:void 0,createComponentView:void 0,createNgModuleRef:void 0,overrideProvider:void 0,overrideComponentView:void 0,clearOverrides:void 0,checkAndUpdateView:void 0,checkNoChangesView:void 0,destroyView:void 0,resolveDep:void 0,createDebugContext:void 0,handleEvent:void 0,updateDirectives:void 0,updateRenderer:void 0,dirtyParentQueries:void 0},Bf=()=>{},zf=new Map;function Yf(t){let e=zf.get(t);return e||(e=j(t)+"_"+zf.size,zf.set(t,e)),e}function Hf(t,e,n,a){if(Mo.isWrapped(a)){a=Mo.unwrap(a);const r=t.def.nodes[e].bindingIndex+n,i=Mo.unwrap(t.oldValues[r]);t.oldValues[r]=new Mo(i)}return a}function Uf(t){return{id:"$$undefined",styles:t.styles,encapsulation:t.encapsulation,data:t.data}}let Wf=0;function Kf(t,e,n,a){return!(!(2&t.state)&&Do(t.oldValues[e.bindingIndex+n],a))}function $f(t,e,n,a){return!!Kf(t,e,n,a)&&(t.oldValues[e.bindingIndex+n]=a,!0)}function Jf(t,e,n,a){const r=t.oldValues[e.bindingIndex+n];if(1&t.state||!Po(r,a)){const i=e.bindings[n].name;throw Af(Gf.createDebugContext(t,e.nodeIndex),`${i}: ${r}`,`${i}: ${a}`,0!=(1&t.state))}}function Zf(t){let e=t;for(;e;)2&e.def.flags&&(e.state|=8),e=e.viewContainerParent||e.parent}function Qf(t,e){let n=t;for(;n&&n!==e;)n.state|=64,n=n.viewContainerParent||n.parent}function Xf(t,e,n,a){try{return Zf(33554432&t.def.nodes[e].flags?Mf(t,e).componentView:t),Gf.handleEvent(t,e,n,a)}catch(r){t.root.errorHandler.handleError(r)}}function th(t){return t.parent?Mf(t.parent,t.parentNodeDef.nodeIndex):null}function eh(t){return t.parent?t.parentNodeDef.parent:null}function nh(t,e){switch(201347067&e.flags){case 1:return Mf(t,e.nodeIndex).renderElement;case 2:return Pf(t,e.nodeIndex).renderText}}function ah(t){return!!t.parent&&!!(32768&t.parentNodeDef.flags)}function rh(t){return!(!t.parent||32768&t.parentNodeDef.flags)}function ih(t){return 1<<t%32}function sh(t){const e={};let n=0;const a={};return t&&t.forEach(([t,r])=>{"number"==typeof t?(e[t]=r,n|=ih(t)):a[t]=r}),{matchedQueries:e,references:a,matchedQueryIds:n}}function uh(t,e){return t.map(t=>{let n,a;return Array.isArray(t)?[a,n]=t:(a=0,n=t),n&&("function"==typeof n||"object"==typeof n)&&e&&Object.defineProperty(n,"__source",{value:e,configurable:!0}),{flags:a,token:n,tokenKey:Yf(n)}})}function oh(t,e,n){let a=n.renderParent;return a?0==(1&a.flags)||0==(33554432&a.flags)||a.element.componentRendererType&&a.element.componentRendererType.encapsulation===wt.Native?Mf(t,n.renderParent.nodeIndex).renderElement:void 0:e}const lh=new WeakMap;function dh(t){let e=lh.get(t);return e||(e=t(()=>Bf),e.factory=t,lh.set(t,e)),e}function ch(t,e,n,a,r){3===e&&(n=t.renderer.parentNode(nh(t,t.def.lastRenderRootNode))),fh(t,e,0,t.def.nodes.length-1,n,a,r)}function fh(t,e,n,a,r,i,s){for(let u=n;u<=a;u++){const n=t.def.nodes[u];11&n.flags&&gh(t,n,e,r,i,s),u+=n.childCount}}function hh(t,e,n,a,r,i){let s=t;for(;s&&!ah(s);)s=s.parent;const u=s.parent,o=eh(s),l=o.nodeIndex+o.childCount;for(let d=o.nodeIndex+1;d<=l;d++){const t=u.def.nodes[d];t.ngContentIndex===e&&gh(u,t,n,a,r,i),d+=t.childCount}if(!u.parent){const s=t.root.projectableNodes[e];if(s)for(let e=0;e<s.length;e++)ph(t,s[e],n,a,r,i)}}function gh(t,e,n,a,r,i){if(8&e.flags)hh(t,e.ngContent.index,n,a,r,i);else{const s=nh(t,e);if(3===n&&33554432&e.flags&&48&e.bindingFlags?(16&e.bindingFlags&&ph(t,s,n,a,r,i),32&e.bindingFlags&&ph(Mf(t,e.nodeIndex).componentView,s,n,a,r,i)):ph(t,s,n,a,r,i),16777216&e.flags){const s=Mf(t,e.nodeIndex).viewContainer._embeddedViews;for(let t=0;t<s.length;t++)ch(s[t],n,a,r,i)}1&e.flags&&!e.element.name&&fh(t,n,e.nodeIndex+1,e.nodeIndex+e.childCount,a,r,i)}}function ph(t,e,n,a,r,i){const s=t.renderer;switch(n){case 1:s.appendChild(a,e);break;case 2:s.insertBefore(a,e,r);break;case 3:s.removeChild(a,e);break;case 0:i.push(e)}}const bh=/^:([^:]+):(.+)$/;function mh(t){if(":"===t[0]){const e=t.match(bh);return[e[1],e[2]]}return["",t]}function yh(t){let e=0;for(let n=0;n<t.length;n++)e|=t[n].flags;return e}function vh(t,e){let n="";for(let a=0;a<2*t;a+=2)n=n+e[a]+_h(e[a+1]);return n+e[2*t]}function xh(t,e,n,a,r,i,s,u,o,l,d,c,f,h,g,p,b,m,y,v){switch(t){case 1:return e+_h(n)+a;case 2:return e+_h(n)+a+_h(r)+i;case 3:return e+_h(n)+a+_h(r)+i+_h(s)+u;case 4:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l;case 5:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c;case 6:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c+_h(f)+h;case 7:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c+_h(f)+h+_h(g)+p;case 8:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c+_h(f)+h+_h(g)+p+_h(b)+m;case 9:return e+_h(n)+a+_h(r)+i+_h(s)+u+_h(o)+l+_h(d)+c+_h(f)+h+_h(g)+p+_h(b)+m+_h(y)+v;default:throw new Error("Does not support more than 9 expressions")}}function _h(t){return null!=t?t.toString():""}const Th=[],wh={},Oh=new Object,Sh=Yf(Bu),Ih=Yf($),Nh=Yf(ft);function Ch(t,e,n,a){return n=G(n),{index:-1,deps:uh(a,j(e)),flags:t,token:e,value:n}}function Rh(t){const e={},n=[];let a=!1;for(let r=0;r<t.length;r++){const i=t[r];i.token===Nu&&!0===i.value&&(a=!0),1073741824&i.flags&&n.push(i.token),i.index=r,e[Yf(i.token)]=i}return{factory:null,providersByKey:e,providers:t,modules:n,isRoot:a}}function Ah(t,e,n=Bu.THROW_IF_NOT_FOUND){const a=et(t);try{if(8&e.flags)return e.token;if(2&e.flags&&(n=null),1&e.flags)return t._parent.get(e.token,n);const s=e.tokenKey;switch(s){case Sh:case Ih:case Nh:return t}const u=t._def.providersByKey[s];let o;if(u){let e=t._providers[u.index];return void 0===e&&(e=t._providers[u.index]=kh(t,u)),e===Oh?void 0:e}if((o=D(e.token))&&(r=t,null!=(i=o).providedIn&&(function(t,e){return t._def.modules.indexOf(e)>-1}(r,i.providedIn)||"root"===i.providedIn&&r._def.isRoot))){const n=t._providers.length;return t._def.providers[n]=t._def.providersByKey[e.tokenKey]={flags:5120,value:o.factory,deps:[],index:n,token:e.token},t._providers[n]=Oh,t._providers[n]=kh(t,t._def.providersByKey[e.tokenKey])}return 4&e.flags?n:t._parent.get(e.token,n)}finally{et(a)}var r,i}function kh(t,e){let n;switch(201347067&e.flags){case 512:n=function(t,e,n){const a=n.length;switch(a){case 0:return new e;case 1:return new e(Ah(t,n[0]));case 2:return new e(Ah(t,n[0]),Ah(t,n[1]));case 3:return new e(Ah(t,n[0]),Ah(t,n[1]),Ah(t,n[2]));default:const r=new Array(a);for(let e=0;e<a;e++)r[e]=Ah(t,n[e]);return new e(...r)}}(t,e.value,e.deps);break;case 1024:n=function(t,e,n){const a=n.length;switch(a){case 0:return e();case 1:return e(Ah(t,n[0]));case 2:return e(Ah(t,n[0]),Ah(t,n[1]));case 3:return e(Ah(t,n[0]),Ah(t,n[1]),Ah(t,n[2]));default:const r=Array(a);for(let e=0;e<a;e++)r[e]=Ah(t,n[e]);return e(...r)}}(t,e.value,e.deps);break;case 2048:n=Ah(t,e.deps[0]);break;case 256:n=e.value}return n===Oh||null===n||"object"!=typeof n||131072&e.flags||"function"!=typeof n.ngOnDestroy||(e.flags|=131072),void 0===n?Oh:n}function Eh(t,e){const n=t.viewContainer._embeddedViews;if((null==e||e>=n.length)&&(e=n.length-1),e<0)return null;const a=n[e];return a.viewContainerParent=null,yt(n,e),Gf.dirtyParentQueries(a),Dh(a),a}function Lh(t,e,n){const a=e?nh(e,e.def.lastRenderRootNode):t.renderElement,r=n.renderer.parentNode(a),i=n.renderer.nextSibling(a);ch(n,2,r,i,void 0)}function Dh(t){ch(t,3,null,null,void 0)}const Ph=new Object;function Mh(t,e,n,a,r,i){return new jh(t,e,n,a,r,i)}function qh(t){return t.viewDefFactory}class jh extends Vc{constructor(t,e,n,a,r,i){super(),this.selector=t,this.componentType=e,this._inputs=a,this._outputs=r,this.ngContentSelectors=i,this.viewDefFactory=n}get inputs(){const t=[],e=this._inputs;for(let n in e)t.push({propName:n,templateName:e[n]});return t}get outputs(){const t=[];for(let e in this._outputs)t.push({propName:e,templateName:this._outputs[e]});return t}create(t,e,n,a){if(!a)throw new Error("ngModule should be provided");const r=dh(this.viewDefFactory),i=r.nodes[0].element.componentProvider.nodeIndex,s=Gf.createRootView(t,e||[],n,r,a,Ph),u=qf(s,i).instance;return n&&s.renderer.setAttribute(Mf(s,0).renderElement,"ng-version",of.full),new Fh(s,new zh(s),u)}}class Fh extends Fc{constructor(t,e,n){super(),this._view=t,this._viewRef=e,this._component=n,this._elDef=this._view.def.nodes[0],this.hostView=e,this.changeDetectorRef=e,this.instance=n}get location(){return new Kc(Mf(this._view,this._elDef.nodeIndex).renderElement)}get injector(){return new Wh(this._view,this._elDef)}get componentType(){return this._component.constructor}destroy(){this._viewRef.destroy()}onDestroy(t){this._viewRef.onDestroy(t)}}function Vh(t,e,n){return new Gh(t,e,n)}class Gh{constructor(t,e,n){this._view=t,this._elDef=e,this._data=n,this._embeddedViews=[]}get element(){return new Kc(this._data.renderElement)}get injector(){return new Wh(this._view,this._elDef)}get parentInjector(){let t=this._view,e=this._elDef.parent;for(;!e&&t;)e=eh(t),t=t.parent;return t?new Wh(t,e):new Wh(this._view,null)}clear(){for(let t=this._embeddedViews.length-1;t>=0;t--){const e=Eh(this._data,t);Gf.destroyView(e)}}get(t){const e=this._embeddedViews[t];if(e){const t=new zh(e);return t.attachToViewContainerRef(this),t}return null}get length(){return this._embeddedViews.length}createEmbeddedView(t,e,n){const a=t.createEmbeddedView(e||{});return this.insert(a,n),a}createComponent(t,e,n,a,r){const i=n||this.parentInjector;r||t instanceof Uc||(r=i.get(ft));const s=t.create(i,a,void 0,r);return this.insert(s.hostView,e),s}insert(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");const n=t;return function(t,e,n,a){let r=e.viewContainer._embeddedViews;null==n&&(n=r.length),a.viewContainerParent=t,mt(r,n,a),function(t,e){const n=th(e);if(!n||n===t||16&e.state)return;e.state|=16;let a=n.template._projectedViews;a||(a=n.template._projectedViews=[]),a.push(e),function(t,e){if(4&e.flags)return;t.nodeFlags|=4,e.flags|=4;let n=e.parent;for(;n;)n.childFlags|=4,n=n.parent}(e.parent.def,e.parentNodeDef)}(e,a),Gf.dirtyParentQueries(a),Lh(e,n>0?r[n-1]:null,a)}(this._view,this._data,e,n._view),n.attachToViewContainerRef(this),t}move(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");const n=this._embeddedViews.indexOf(t._view);return function(t,e,n){const a=t.viewContainer._embeddedViews,r=a[e];yt(a,e),null==n&&(n=a.length),mt(a,n,r),Gf.dirtyParentQueries(r),Dh(r),Lh(t,n>0?a[n-1]:null,r)}(this._data,n,e),t}indexOf(t){return this._embeddedViews.indexOf(t._view)}remove(t){const e=Eh(this._data,t);e&&Gf.destroyView(e)}detach(t){const e=Eh(this._data,t);return e?new zh(e):null}}function Bh(t){return new zh(t)}class zh{constructor(t){this._view=t,this._viewContainerRef=null,this._appRef=null}get rootNodes(){return function(t){const e=[];return ch(t,0,void 0,void 0,e),e}(this._view)}get context(){return this._view.context}get destroyed(){return 0!=(128&this._view.state)}markForCheck(){Zf(this._view)}detach(){this._view.state&=-5}detectChanges(){const t=this._view.root.rendererFactory;t.begin&&t.begin();try{Gf.checkAndUpdateView(this._view)}finally{t.end&&t.end()}}checkNoChanges(){Gf.checkNoChangesView(this._view)}reattach(){this._view.state|=4}onDestroy(t){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(t)}destroy(){this._appRef?this._appRef.detachView(this):this._viewContainerRef&&this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),Gf.destroyView(this._view)}detachFromAppRef(){this._appRef=null,Dh(this._view),Gf.dirtyParentQueries(this._view)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}}function Yh(t,e){return new Hh(t,e)}class Hh extends Of{constructor(t,e){super(),this._parentView=t,this._def=e}createEmbeddedView(t){return new zh(Gf.createEmbeddedView(this._parentView,this._def,this._def.element.template,t))}get elementRef(){return new Kc(Mf(this._parentView,this._def.nodeIndex).renderElement)}}function Uh(t,e){return new Wh(t,e)}class Wh{constructor(t,e){this.view=t,this.elDef=e}get(t,e=Bu.THROW_IF_NOT_FOUND){return Gf.resolveDep(this.view,this.elDef,!!this.elDef&&0!=(33554432&this.elDef.flags),{flags:0,token:t,tokenKey:Yf(t)},e)}}function Kh(t,e){const n=t.def.nodes[e];if(1&n.flags){const e=Mf(t,n.nodeIndex);return n.element.template?e.template:e.renderElement}if(2&n.flags)return Pf(t,n.nodeIndex).renderText;if(20240&n.flags)return qf(t,n.nodeIndex).instance;throw new Error("Illegal state: read nodeValue for node index "+e)}function $h(t){return new Jh(t.renderer)}class Jh{constructor(t){this.delegate=t}selectRootElement(t){return this.delegate.selectRootElement(t)}createElement(t,e){const[n,a]=mh(e),r=this.delegate.createElement(a,n);return t&&this.delegate.appendChild(t,r),r}createViewRoot(t){return t}createTemplateAnchor(t){const e=this.delegate.createComment("");return t&&this.delegate.appendChild(t,e),e}createText(t,e){const n=this.delegate.createText(e);return t&&this.delegate.appendChild(t,n),n}projectNodes(t,e){for(let n=0;n<e.length;n++)this.delegate.appendChild(t,e[n])}attachViewAfter(t,e){const n=this.delegate.parentNode(t),a=this.delegate.nextSibling(t);for(let r=0;r<e.length;r++)this.delegate.insertBefore(n,e[r],a)}detachView(t){for(let e=0;e<t.length;e++){const n=t[e],a=this.delegate.parentNode(n);this.delegate.removeChild(a,n)}}destroyView(t,e){for(let n=0;n<e.length;n++)this.delegate.destroyNode(e[n])}listen(t,e,n){return this.delegate.listen(t,e,n)}listenGlobal(t,e,n){return this.delegate.listen(t,e,n)}setElementProperty(t,e,n){this.delegate.setProperty(t,e,n)}setElementAttribute(t,e,n){const[a,r]=mh(e);null!=n?this.delegate.setAttribute(t,r,n,a):this.delegate.removeAttribute(t,r,a)}setBindingDebugInfo(t,e,n){}setElementClass(t,e,n){n?this.delegate.addClass(t,e):this.delegate.removeClass(t,e)}setElementStyle(t,e,n){null!=n?this.delegate.setStyle(t,e,n):this.delegate.removeStyle(t,e)}invokeElementMethod(t,e,n){t[e].apply(t,n)}setText(t,e){this.delegate.setValue(t,e)}animate(){throw new Error("Renderer.animate is no longer supported!")}}function Zh(t,e,n,a){return new Qh(t,e,n,a)}class Qh{constructor(t,e,n,a){this._moduleType=t,this._parent=e,this._bootstrapComponents=n,this._def=a,this._destroyListeners=[],this._destroyed=!1,this.injector=this,function(t){const e=t._def,n=t._providers=new Array(e.providers.length);for(let a=0;a<e.providers.length;a++){const r=e.providers[a];4096&r.flags||void 0===n[a]&&(n[a]=kh(t,r))}}(this)}get(t,e=Bu.THROW_IF_NOT_FOUND,n=C.Default){let a=0;return n&C.SkipSelf?a|=1:n&C.Self&&(a|=4),Ah(this,{token:t,tokenKey:Yf(t),flags:a},e)}get instance(){return this.get(this._moduleType)}get componentFactoryResolver(){return this.get(Yc)}destroy(){if(this._destroyed)throw new Error(`The ng module ${j(this.instance.constructor)} has already been destroyed.`);this._destroyed=!0,function(t,e){const n=t._def,a=new Set;for(let r=0;r<n.providers.length;r++)if(131072&n.providers[r].flags){const e=t._providers[r];if(e&&e!==Oh){const t=e.ngOnDestroy;"function"!=typeof t||a.has(e)||(t.apply(e),a.add(e))}}}(this),this._destroyListeners.forEach(t=>t())}onDestroy(t){this._destroyListeners.push(t)}}const Xh=Yf(Xc),tg=Yf(af),eg=Yf(Kc),ng=Yf(Nf),ag=Yf(Of),rg=Yf(Xs),ig=Yf(Bu),sg=Yf($);function ug(t,e,n,a,r,i,s,u){const o=[];if(s)for(let d in s){const[t,e]=s[d];o[t]={flags:8,name:d,nonMinifiedName:e,ns:null,securityContext:null,suffix:null}}const l=[];if(u)for(let d in u)l.push({type:1,propName:d,target:null,eventName:u[d]});return dg(t,e|=16384,n,a,r,r,i,o,l)}function og(t,e,n){return dg(-1,t|=16,null,0,e,e,n)}function lg(t,e,n,a,r){return dg(-1,t,e,0,n,a,r)}function dg(t,e,n,a,r,i,s,u,o){const{matchedQueries:l,references:d,matchedQueryIds:c}=sh(n);o||(o=[]),u||(u=[]),i=G(i);const f=uh(s,j(r));return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:l,matchedQueryIds:c,references:d,ngContentIndex:-1,childCount:a,bindings:u,bindingFlags:yh(u),outputs:o,element:null,provider:{token:r,value:i,deps:f},text:null,query:null,ngContent:null}}function cg(t,e){return pg(t,e)}function fg(t,e){let n=t;for(;n.parent&&!ah(n);)n=n.parent;return bg(n.parent,eh(n),!0,e.provider.value,e.provider.deps)}function hg(t,e){const n=bg(t,e.parent,(32768&e.flags)>0,e.provider.value,e.provider.deps);if(e.outputs.length)for(let a=0;a<e.outputs.length;a++){const r=e.outputs[a],i=n[r.propName];if(!ed(i))throw new Error(`@Output ${r.propName} not initialized in '${n.constructor.name}'.`);{const n=i.subscribe(gg(t,e.parent.nodeIndex,r.eventName));t.disposables[e.outputIndex+a]=n.unsubscribe.bind(n)}}return n}function gg(t,e,n){return a=>Xf(t,e,n,a)}function pg(t,e){const n=(8192&e.flags)>0,a=e.provider;switch(201347067&e.flags){case 512:return bg(t,e.parent,n,a.value,a.deps);case 1024:return function(t,e,n,a,r){const i=r.length;switch(i){case 0:return a();case 1:return a(yg(t,e,n,r[0]));case 2:return a(yg(t,e,n,r[0]),yg(t,e,n,r[1]));case 3:return a(yg(t,e,n,r[0]),yg(t,e,n,r[1]),yg(t,e,n,r[2]));default:const s=Array(i);for(let a=0;a<i;a++)s[a]=yg(t,e,n,r[a]);return a(...s)}}(t,e.parent,n,a.value,a.deps);case 2048:return yg(t,e.parent,n,a.deps[0]);case 256:return a.value}}function bg(t,e,n,a,r){const i=r.length;switch(i){case 0:return new a;case 1:return new a(yg(t,e,n,r[0]));case 2:return new a(yg(t,e,n,r[0]),yg(t,e,n,r[1]));case 3:return new a(yg(t,e,n,r[0]),yg(t,e,n,r[1]),yg(t,e,n,r[2]));default:const s=new Array(i);for(let a=0;a<i;a++)s[a]=yg(t,e,n,r[a]);return new a(...s)}}const mg={};function yg(t,e,n,a,r=Bu.THROW_IF_NOT_FOUND){if(8&a.flags)return a.token;const i=t;2&a.flags&&(r=null);const s=a.tokenKey;s===rg&&(n=!(!e||!e.element.componentView)),e&&1&a.flags&&(n=!1,e=e.parent);let u=t;for(;u;){if(e)switch(s){case Xh:return $h(vg(u,e,n));case tg:return vg(u,e,n).renderer;case eg:return new Kc(Mf(u,e.nodeIndex).renderElement);case ng:return Mf(u,e.nodeIndex).viewContainer;case ag:if(e.element.template)return Mf(u,e.nodeIndex).template;break;case rg:return Bh(vg(u,e,n));case ig:case sg:return Uh(u,e);default:const t=(n?e.element.allProviders:e.element.publicProviders)[s];if(t){let e=qf(u,t.nodeIndex);return e||(e={instance:pg(u,t)},u.nodes[t.nodeIndex]=e),e.instance}}n=ah(u),e=eh(u),u=u.parent,4&a.flags&&(u=null)}const o=i.root.injector.get(a.token,mg);return o!==mg||r===mg?o:i.root.ngModule.injector.get(a.token,r)}function vg(t,e,n){let a;if(n)a=Mf(t,e.nodeIndex).componentView;else for(a=t;a.parent&&!ah(a);)a=a.parent;return a}function xg(t,e,n,a,r,i){if(32768&n.flags){const e=Mf(t,n.parent.nodeIndex).componentView;2&e.def.flags&&(e.state|=8)}if(e.instance[n.bindings[a].name]=r,524288&n.flags){i=i||{};const e=Mo.unwrap(t.oldValues[n.bindingIndex+a]);i[n.bindings[a].nonMinifiedName]=new Tc(e,r,0!=(2&t.state))}return t.oldValues[n.bindingIndex+a]=r,i}function _g(t,e){if(!(t.def.nodeFlags&e))return;const n=t.def.nodes;let a=0;for(let r=0;r<n.length;r++){const i=n[r];let s=i.parent;for(!s&&i.flags&e&&wg(t,r,i.flags&e,a++),0==(i.childFlags&e)&&(r+=i.childCount);s&&1&s.flags&&r===s.nodeIndex+s.childCount;)s.directChildFlags&e&&(a=Tg(t,s,e,a)),s=s.parent}}function Tg(t,e,n,a){for(let r=e.nodeIndex+1;r<=e.nodeIndex+e.childCount;r++){const e=t.def.nodes[r];e.flags&n&&wg(t,r,e.flags&n,a++),r+=e.childCount}return a}function wg(t,e,n,a){const r=qf(t,e);if(!r)return;const i=r.instance;i&&(Gf.setCurrentNode(t,e),1048576&n&&Df(t,512,a)&&i.ngAfterContentInit(),2097152&n&&i.ngAfterContentChecked(),4194304&n&&Df(t,768,a)&&i.ngAfterViewInit(),8388608&n&&i.ngAfterViewChecked(),131072&n&&i.ngOnDestroy())}function Og(t){const e=[];for(let n in t)t.hasOwnProperty(n)&&e.push({propName:t[n],templateName:n});return e}const Sg=new K("SCHEDULER_TOKEN",{providedIn:"root",factory:()=>_n});class Ig extends Vc{constructor(t,e){super(),this.componentDef=t,this.ngModule=e,this.componentType=t.type,this.selector=t.selectors[0][0]||"div",this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!e}get inputs(){return Og(this.componentDef.inputs)}get outputs(){return Og(this.componentDef.outputs)}create(t,e,n,a){const r=(a=a||this.ngModule)?function(t,e){return{get:(n,a,r)=>{const i=t.get(n,mg,r);return i!==mg||a===mg?i:e.get(n,a,r)}}}(t,a.injector):t,i=r.get(ef,ea),s=r.get(vr,null);pn();const u=n?Vi(i,n):Ci(this.selector,i.createRenderer(null,this.componentDef)),o=this.componentDef.onPush?576:528,l="string"==typeof n&&/^#root-ng-internal-isolated-\d+/.test(n),d=vc(),c=i.createRenderer(u,this.componentDef);n&&u&&(ta(c)?c.setAttribute(u,"ng-version",of.full):u.setAttribute("ng-version",of.full));const f=Ri(null,Fi(-1,null,1,0,null,null,null,null),d,o,null,null,i,c,s,r),h=an(f,null);let g,p,b=!1;try{const t=mc(u,this.componentDef,f,i,c);p=ye(0,f),e&&(p.projection=e.map(t=>Array.from(t))),g=yc(t,this.componentDef,f,d,[xc]),rs(f,t),Ii(f),b=!0}finally{sn(h,b)}const m=new Ng(this.componentType,g,$s(Kc,p,f),f,p);return n&&!l||(m.hostView._tViewNode.child=p),m}}class Ng extends Fc{constructor(t,e,n,a,r){super(),this.location=n,this._rootLView=a,this._tNode=r,this.destroyCbs=[],this.instance=e,this.hostView=this.changeDetectorRef=new Hs(a),this.hostView._tViewNode=ki(a[1],null,-1,a),this.componentType=t}get injector(){return new Ca(this._tNode,this._rootLView)}destroy(){this.destroyCbs&&(this.destroyCbs.forEach(t=>t()),this.destroyCbs=null,!this.hostView.destroyed&&this.hostView.destroy())}onDestroy(t){this.destroyCbs&&this.destroyCbs.push(t)}}const Cg={},Rg=function(){var t={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencySymbol:15,CurrencyName:16,Currencies:17,PluralCase:18,ExtraData:19};return t[t.LocaleId]="LocaleId",t[t.DayPeriodsFormat]="DayPeriodsFormat",t[t.DayPeriodsStandalone]="DayPeriodsStandalone",t[t.DaysFormat]="DaysFormat",t[t.DaysStandalone]="DaysStandalone",t[t.MonthsFormat]="MonthsFormat",t[t.MonthsStandalone]="MonthsStandalone",t[t.Eras]="Eras",t[t.FirstDayOfWeek]="FirstDayOfWeek",t[t.WeekendRange]="WeekendRange",t[t.DateFormat]="DateFormat",t[t.TimeFormat]="TimeFormat",t[t.DateTimeFormat]="DateTimeFormat",t[t.NumberSymbols]="NumberSymbols",t[t.NumberFormats]="NumberFormats",t[t.CurrencySymbol]="CurrencySymbol",t[t.CurrencyName]="CurrencyName",t[t.Currencies]="Currencies",t[t.PluralCase]="PluralCase",t[t.ExtraData]="ExtraData",t}(),Ag=void 0;var kg=["en",[["a","p"],["AM","PM"],Ag],[["AM","PM"],Ag,Ag],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Ag,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Ag,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Ag,"{1} 'at' {0}",Ag],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"$","US Dollar",{},function(t){let e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}];function Eg(t){return Lg(t)[Rg.PluralCase]}function Lg(t){const e=t.toLowerCase().replace(/_/g,"-");let n=Cg[e];if(n)return n;const a=e.split("-")[0];if(n=Cg[a],n)return n;if("en"===a)return kg;throw new Error(`Missing locale data for the locale "${t}".`)}const Dg="en-US",Pg=/^\s*(�\d+:?\d*�)\s*,\s*(select|plural)\s*,/,Mg=/�\/?\*(\d+:\d+)�/gi,qg=/�(\/?[#*!]\d+):?\d*�/gi,jg=/�(\d+):?\d*�/gi,Fg=/({\s*�\d+:?\d*�\s*,\s*\S{6}\s*,[\s\S]*})/gi,Vg=/\[(�.+?�?)\]/,Gg=/\[(�.+?�?)\]|(�\/?\*\d+:\d+�)/g,Bg=/({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g,zg=/{([A-Z0-9_]+)}/g,Yg=/�I18N_EXP_(ICU(_\d+)?)�/g,Hg=/\/\*/,Ug=/\d+\:(\d+)/;function Wg(t){if(!t)return[];let e=0;const n=[],a=[],r=/[{}]/g;let i;for(r.lastIndex=0;i=r.exec(t);){const r=i.index;if("}"==i[0]){if(n.pop(),0==n.length){const n=t.substring(e,r);Pg.test(n)?a.push(Kg(n)):a.push(n),e=r+1}}else{if(0==n.length){const n=t.substring(e,r);a.push(n),e=r+1}n.push("{")}}const s=t.substring(e);return a.push(s),a}function Kg(t){const e=[],n=[];let a=1,r=0;const i=Wg(t=t.replace(Pg,(function(t,e,n){return a="select"===n?0:1,r=parseInt(e.substr(1),10),""})));for(let s=0;s<i.length;){let t=i[s++].trim();1===a&&(t=t.replace(/\s*(?:=)?(\w+)\s*/,"$1")),t.length&&e.push(t);const r=Wg(i[s++]);e.length>n.length&&n.push(r)}return'Missing key "other" in ICU statement.',e.indexOf("other")<=-1&&vt('Missing key "other" in ICU statement.'),{type:a,mainBinding:r,cases:e,values:n}}function $g(t){let e,n,a="",r=0,i=!1;for(;null!==(e=Mg.exec(t));)i?e[0]===`�/*${n}�`&&(r=e.index,i=!1):(a+=t.substring(r,e.index+e[0].length),n=e[1],i=!0);return a+=t.substr(r),a}function Jg(t,e,n,a=null){const r=[null,null],i=t.split(jg);let s=0;for(let u=0;u<i.length;u++){const t=i[u];if(1&u){const e=parseInt(t,10);r.push(-1-e),s|=tp(e)}else""!==t&&r.push(t)}return r.push(e<<2|(n?1:0)),n&&r.push(n,a),r[0]=s,r[1]=r.length-2,r}function Zg(t,e=0){let n;e|=tp(t.mainBinding);for(let a=0;a<t.values.length;a++){const r=t.values[a];for(let t=0;t<r.length;t++){const a=r[t];if("string"==typeof a)for(;n=jg.exec(a);)e|=tp(parseInt(n[1],10));else e=Zg(a,e)}}return e}const Qg=[];let Xg=-1;function tp(t){return 1<<Math.min(t,31)}const ep=[];function np(t,e,n){const a=Ae()[1];Qg[++Xg]=t,cd(!0),a.firstTemplatePass&&null===a.data[t+19]&&function(t,e,n,a){const r=Ae(),i=t.blueprint.length-19;ap=0;const s=Ge(),u=Ye()?Ge():s&&s.parent;let o=u&&u!==r[6]?u.index-19:e,l=0;ep[l]=o;const d=[];e>0&&s!==u&&d.push(s.index<<3|0);const c=[],f=[],h=(g=function(t,e){if("number"!=typeof e)return $g(t);{const n=t.indexOf(`:${e}�`)+2+e.toString().length,a=t.search(new RegExp(`�\\/\\*\\d+:${e}�`));return $g(t.substring(n,a))}}(n,a),g.replace(xp," ")).split(qg);var g;for(let p=0;p<h.length;p++){let t=h[p];if(1&p)if("/"===t.charAt(0)){if("#"===t.charAt(1)){const e=parseInt(t.substr(2),10);o=ep[--l],d.push(e<<3|5)}}else{const e=parseInt(t.substr(1),10);d.push(e<<3|0,o<<17|1),"#"===t.charAt(0)&&(ep[++l]=o=e)}else{const e=Wg(t);for(let t=0;t<e.length;t++)if(1&t){const n=i+ap++;d.push(hi,"",n,o<<17|1);const a=e[t],r=Zg(a);mp(f,a,n,n);const s=f.length-1;c.push(tp(a.mainBinding),3,-1-a.mainBinding,n<<2|2,s,r,2,n<<2|3,s)}else if(""!==e[t]){const n=e[t],a=n.match(jg),r=i+ap++;d.push(a?"":n,r,o<<17|1),a&&gt(Jg(n,r),c)}}}ap>0&&function(t,e){if(e>0){const n=t[1];if(n.firstTemplatePass){for(let a=0;a<e;a++)n.blueprint.push(null),n.data.push(null),t.push(null);n.expandoInstructions?n.expandoInstructions.push(e):n.expandoStartIndex+=e}}}(r,ap),t.data[e+19]={vars:ap,create:d,update:c,icus:f.length?f:null}}(a,t,e,n)}let ap;function rp(t,e,n,a){const r=t.next;n||(n=e),n===e&&t!==e.child?(t.next=e.child,e.child=t):n!==e&&t!==n.next?(t.next=n.next,n.next=t):t.next=null,e!==a[6]&&(t.parent=e);let i=t.next;for(;i;)i.next===t&&(i.next=r),i=i.next;if(1===t.type)return Fs(a,t,t.projection,da(a)),t;Ms(be(t,a),t,a);const s=a[t.index];return 0!==t.type&&Zt(s)&&Ms(s[7],t,a),t}function ip(t,e={}){let n=t;if(Vg.test(t)){const t={},e=[0];n=n.replace(Gg,(n,a,r)=>{const i=a||r,s=t[i]||[];if(s.length||(i.split("|").forEach(t=>{const e=t.match(Ug),n=e?parseInt(e[1],10):0,a=Hg.test(t);s.push([n,a,t])}),t[i]=s),!s.length)throw new Error("i18n postprocess: unmatched placeholder - "+i);const u=e[e.length-1];let o=0;for(let t=0;t<s.length;t++)if(s[t][0]===u){o=t;break}const[l,d,c]=s[o];return d?e.pop():u!==l&&e.push(l),s.splice(o,1),c})}return Object.keys(e).length?(n=n.replace(Bg,(t,n,a,r,i,s)=>e.hasOwnProperty(a)?`${n}${e[a]}${s}`:t),n=n.replace(zg,(t,n)=>e.hasOwnProperty(n)?e[n]:t),n=n.replace(Yg,(t,n)=>{if(e.hasOwnProperty(n)){const a=e[n];if(!a.length)throw new Error(`i18n postprocess: unmatched ICU - ${t} with key: ${n}`);return a.shift()}return t}),n):n}function sp(){!function(t){const e=Ae(),n=Qg[Xg--],a=t.data[n+19];let r=Ge();const i=op(n,a.create,0,e);for(let s=n+1;s<=r.index-19;s++)-1===i.indexOf(s)&&lp(s,e)}(Ae()[1]),cd(!1)}function up(t,e,n,a,r){const i=Ge();t[e+19]=a;const s=Ai(t[1],t[6],e,n,r,null);return i.next===s&&(i.next=null),s}function op(t,e,n,a){const r=Ae()[12];let i=null,s=null;const u=[];for(let o=0;o<e.length;o++){const n=e[o];if("string"==typeof n){const t=Os(n,r),l=e[++o];s=i,i=up(a,l,3,t,null),u.push(l),He()}else if("number"==typeof n)switch(7&n){case 1:const r=n>>>17;let l;l=r===t?a[6]:ye(r,a),s=rp(i,l,s,a);break;case 0:const d=n>>>3;u.push(d),s=i,i=ye(d,a),i&&Be(i,3===i.type);break;case 5:s=i=ye(n>>>3,a),Be(i,!1);break;case 4:es(n>>>3,e[++o],e[++o],a);break;default:throw new Error(`Unable to determine the type of mutate operation for "${n}"`)}else switch(n){case hi:const t=e[++o],l=e[++o],d=r.createComment(t);s=i,i=up(a,l,5,d,null),u.push(l),qr(d,a),i.activeCaseIndex=null,He();break;case fi:const c=e[++o],f=e[++o];s=i,i=up(a,f,3,r.createElement(c),c),u.push(f);break;default:throw new Error(`Unable to determine the type of mutate operation for "${n}"`)}}return He(),u}function lp(t,e){const n=ye(t,e),a=pe(t,e);a&&js(e[12],a);const r=_l(t);if(Zt(r)){const t=r;0!==n.type&&js(e[12],t[7])}n.flags|=32}function dp(t,e,n){np(t,e,n),sp()}function cp(t,e){!function(t,e,n){const a=Ge().index-19,r=[];for(let i=0;i<n.length;i+=2){const s=n[i],u=n[i+1].split(Fg);for(let n=0;n<u.length;n++){const i=u[n];if(1&n)throw new Error("ICU expressions are not yet supported in attributes");if(""!==i)if(i.match(jg))t.firstTemplatePass&&null===t.data[e+19]&&gt(Jg(i,a,s),r);else{const t=Ae();es(a,s,i,t);const e=ye(a,t),n=e.inputs&&e.inputs[s];n&&ys(t,n,i)}}}t.firstTemplatePass&&null===t.data[e+19]&&(t.data[e+19]=r)}(Ae()[1],t,e)}let fp=0,hp=0;function gp(t){return Uo(Ae(),t)!==ci&&(fp|=1<<hp),hp++,gp}function pp(t){if(hp){const e=Ae(),n=e[1].data[t+19];let a,r=null;Array.isArray(n)?a=n:(a=n.update,r=n.icus),function t(e,n,a,r,i,s=!1){let u=!1;for(let o=0;o<e.length;o++){const l=e[o],d=e[++o];if(s||l&r){let s="";for(let l=o+1;l<=o+d;l++){const o=e[l];if("string"==typeof o)s+=o;else if("number"==typeof o)if(o<0)s+=vn(i[a-o]);else{const d=o>>>2;let c,f,h;switch(3&o){case 1:Yi(d,e[++l],s,e[++l]);break;case 0:vs(i,d,s);break;case 2:if(c=e[++l],f=n[c],h=ye(d,i),null!==h.activeCaseIndex){const t=f.remove[h.activeCaseIndex];for(let e=0;e<t.length;e++){const a=t[e];switch(7&a){case 3:lp(a>>>3,i);break;case 6:const r=ye(t[e+1]>>>3,i).activeCaseIndex;null!==r&&gt(n[a>>>3].remove[r],t)}}}const o=bp(f,s);h.activeCaseIndex=-1!==o?o:null,op(-1,f.create[o],0,i),u=!0;break;case 3:c=e[++l],f=n[c],h=ye(d,i),t(f.update[h.activeCaseIndex],n,a,r,i,u)}}}}o+=d}}(a,r,e[7]-hp-1,fp,e),fp=0,hp=0}}function bp(t,e){let n=t.cases.indexOf(e);if(-1===n)switch(t.type){case 1:{const a=function(t,e){switch(Eg(e)(t)){case 0:return"zero";case 1:return"one";case 2:return"two";case 3:return"few";case 4:return"many";default:return"other"}}(e,Sp);n=t.cases.indexOf(a),-1===n&&"other"!==a&&(n=t.cases.indexOf("other"));break}case 0:n=t.cases.indexOf("other")}return n}function mp(t,e,n,a){const r=[],i=[],s=[],u=[],o=[];for(let l=0;l<e.values.length;l++){const d=e.values[l],c=[];for(let t=0;t<d.length;t++){const e=d[t];if("string"!=typeof e){const n=c.push(e)-1;d[t]=`\x3c!--�${n}�--\x3e`}}const f=yp(d.join(""),n,c,t,a);r.push(f.create),i.push(f.remove),s.push(f.update),u.push(f.vars),o.push(f.childIcus)}t.push({type:e.type,vars:u,childIcus:o,cases:e.cases,create:r,remove:i,update:s}),ap+=Math.max(...u)}function yp(t,e,n,a,r){const i=new $a(document).getInertBodyElement(t);if(!i)throw new Error("Unable to generate inert body element");const s={vars:0,childIcus:[],create:[],remove:[],update:[]};return function t(e,n,a,r,i,s){if(e){const u=[];for(;e;){const o=e.nextSibling,l=s+ ++n.vars;switch(e.nodeType){case Node.ELEMENT_NODE:const o=e,d=o.tagName.toLowerCase();if(sr.hasOwnProperty(d)){n.create.push(fi,d,l,a<<17|1);const u=o.attributes;for(let t=0;t<u.length;t++){const e=u.item(t),a=e.name.toLowerCase();e.value.match(jg)?lr.hasOwnProperty(a)&&gt(ur[a]?Jg(e.value,l,e.name,Qa):or[a]?Jg(e.value,l,e.name,Xa):Jg(e.value,l,e.name),n.update):n.create.push(l<<3|4,e.name,e.value)}t(e.firstChild,n,l,r,i,s),n.remove.push(l<<3|3)}else n.vars--;break;case Node.TEXT_NODE:const c=e.textContent||"",f=c.match(jg);n.create.push(f?"":c,l,a<<17|1),n.remove.push(l<<3|3),f&&gt(Jg(c,l),n.update);break;case Node.COMMENT_NODE:const h=vp.exec(e.textContent||"");if(h){const t=parseInt(h[1],10);n.create.push(hi,"",l,a<<17|1),u.push([r[t],l])}else n.vars--;break;default:n.vars--}e=o}for(let t=0;t<u.length;t++){const e=u[t][0],a=u[t][1];mp(i,e,a,s+n.vars);const r=i.length-1;n.vars+=Math.max(...i[r].vars),n.childIcus.push(r);const o=Zg(e);n.update.push(tp(e.mainBinding),3,-1-e.mainBinding,a<<2|2,r,o,2,a<<2|3,r),n.remove.push(r<<3|6,a<<3|3)}}}((mr(i)||i).firstChild,s,e,n,a,r),s}const vp=/�(\d+)�/,xp=/\uE500/g;let _p={};function Tp(t={translations:{}}){_p=t.translations}const wp=/\{\$(.*?)\}/g;function Op(t,e){return void 0!==_p[t]&&(t=_p[t]),void 0!==e&&Object.keys(e).length?t.replace(wp,(t,n)=>e[n]||""):t}let Sp=Dg;function Ip(t){null==t&&vt("Expected localeId to be defined"),"string"==typeof t&&(Sp=t.toLowerCase().replace(/_/g,"-"))}const Np=new Map;function Cp(t,e){const n=Np.get(t);Rp(t,n&&n.moduleType,e.moduleType),Np.set(t,e)}function Rp(t,e,n){if(e&&e!==n)throw new Error(`Duplicate module registered for ${t} - ${j(e)} vs ${j(e.name)}`)}function Ap(t){if(null!==t.ngModuleDef.id){const e=t.ngModuleDef.id;Rp(e,Np.get(e),t),Np.set(e,t)}let e=t.ngModuleDef.imports;e instanceof Function&&(e=e()),e&&e.forEach(t=>Ap(t))}function kp(t){return Np.get(t)}const Ep={provide:Yc,useClass:class extends Yc{constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){const e=Ht(t);return new Ig(e,this.ngModule)}},deps:[ft]};class Lp extends ft{constructor(t,e){super(),this._parent=e,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[];const n=$t(t),a=t[kt]||null;a&&Ip(a),this._bootstrapComponents=In(n.bootstrap),this._r3Injector=Lu(t,e,[{provide:ft,useValue:this},Ep],j(t)),this.instance=this.get(t)}get(t,e=Bu.THROW_IF_NOT_FOUND,n=C.Default){return t===Bu||t===ft||t===$?this:this._r3Injector.get(t,e,n)}get componentFactoryResolver(){return this.get(Yc)}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class Dp extends ht{constructor(t){super(),this.moduleType=t,null!==$t(t)&&Ap(t)}create(t){return new Lp(this.moduleType,t)}}function Pp(t,e,n,a){return Ot(()=>{const r=t,i=r.prototype?Object.getPrototypeOf(r.prototype):null,s=i&&i.constructor;null!==e&&(void 0===r.decorators||s&&s.decorators===r.decorators?r.decorators=e:r.decorators.push(...e)),null!==n&&(r.ctorParameters=n),null!==a&&(r.propDecorators=void 0===r.propDecorators||s&&s.propDecorators===r.propDecorators?a:Object.assign({},r.propDecorators,a))})}function Mp(t,e,n){const a=Qe()+t,r=Ae();return Ue()?Fo(r,a,n?e.call(n):e()):Vo(r,a)}function qp(t,e,n,a){const r=Ae(),i=Qe()+t;return Go(r,i,n)?Fo(r,i+1,a?e.call(a,n):e(n)):Vo(r,i+1)}function jp(t,e,n,a,r){const i=Qe()+t,s=Ae();return Bo(s,i,n,a)?Fo(s,i+2,r?e.call(r,n,a):e(n,a)):Vo(s,i+2)}function Fp(t,e,n,a,r,i){const s=Qe()+t,u=Ae();return zo(u,s,n,a,r)?Fo(u,s+3,i?e.call(i,n,a,r):e(n,a,r)):Vo(u,s+3)}function Vp(t,e,n,a,r,i,s){const u=Qe()+t,o=Ae();return Yo(o,u,n,a,r,i)?Fo(o,u+4,s?e.call(s,n,a,r,i):e(n,a,r,i)):Vo(o,u+4)}function Gp(t,e,n,a,r,i,s,u){const o=Qe()+t,l=Ae(),d=Yo(l,o,n,a,r,i);return Go(l,o+4,s)||d?Fo(l,o+5,u?e.call(u,n,a,r,i,s):e(n,a,r,i,s)):Vo(l,o+5)}function Bp(t,e,n,a,r,i,s,u,o){const l=Qe()+t,d=Ae(),c=Yo(d,l,n,a,r,i);return Bo(d,l+4,s,u)||c?Fo(d,l+6,o?e.call(o,n,a,r,i,s,u):e(n,a,r,i,s,u)):Vo(d,l+6)}function zp(t,e,n,a,r,i,s,u,o,l){const d=Qe()+t,c=Ae();let f=Yo(c,d,n,a,r,i);return zo(c,d+4,s,u,o)||f?Fo(c,d+7,l?e.call(l,n,a,r,i,s,u,o):e(n,a,r,i,s,u,o)):Vo(c,d+7)}function Yp(t,e,n,a,r,i,s,u,o,l,d){const c=Qe()+t,f=Ae(),h=Yo(f,c,n,a,r,i);return Yo(f,c+4,s,u,o,l)||h?Fo(f,c+8,d?e.call(d,n,a,r,i,s,u,o,l):e(n,a,r,i,s,u,o,l)):Vo(f,c+8)}function Hp(t,e,n,a){let r=Qe()+t,i=!1;const s=Ae();for(let u=0;u<n.length;u++)Go(s,r++,n[u])&&(i=!0);return i?Fo(s,r,e.apply(a,n)):Vo(s,r)}function Up(t,e){const n=Ae()[1];let a;const r=t+19;n.firstTemplatePass?(a=function(t,e){if(e)for(let n=e.length-1;n>=0;n--){const a=e[n];if(t===a.name)return a}throw new Error(`The pipe '${t}' could not be found!`)}(e,n.pipeRegistry),n.data[r]=a,a.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(r,a.onDestroy)):a=n.data[r];const i=a.factory();return vl(t,i),i}function Wp(t,e,n){const a=_l(t);return Xp(Qp(t)?qp(e,a.transform,n,a):a.transform(n))}function Kp(t,e,n,a){const r=_l(t);return Xp(Qp(t)?jp(e,r.transform,n,a,r):r.transform(n,a))}function $p(t,e,n,a,r){const i=_l(t);return Xp(Qp(t)?Fp(e,i.transform,n,a,r,i):i.transform(n,a,r))}function Jp(t,e,n,a,r,i){const s=_l(t);return Xp(Qp(t)?Vp(e,s.transform,n,a,r,i,s):s.transform(n,a,r,i))}function Zp(t,e,n){const a=_l(t);return Xp(Qp(t)?Hp(e,a.transform,n,a):a.transform.apply(a,n))}function Qp(t){return Ae()[1].data[t+19].pure}function Xp(t){if(Mo.isWrapped(t)){t=Mo.unwrap(t);const e=Ae();e[e[7]]=ci}return t}class tb extends a.a{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,e,n){let a,i=t=>null,s=()=>null;t&&"object"==typeof t?(a=this.__isAsync?e=>{setTimeout(()=>t.next(e))}:e=>{t.next(e)},t.error&&(i=this.__isAsync?e=>{setTimeout(()=>t.error(e))}:e=>{t.error(e)}),t.complete&&(s=this.__isAsync?()=>{setTimeout(()=>t.complete())}:()=>{t.complete()})):(a=this.__isAsync?e=>{setTimeout(()=>t(e))}:e=>{t(e)},e&&(i=this.__isAsync?t=>{setTimeout(()=>e(t))}:t=>{e(t)}),n&&(s=this.__isAsync?()=>{setTimeout(()=>n())}:()=>{n()}));const u=super.subscribe(a,i,s);return t instanceof r.a&&t.add(u),u}}function eb(){return this._results[Lo()]()}class nb{constructor(){this.dirty=!0,this._results=[],this.changes=new tb,this.length=0;const t=Lo(),e=nb.prototype;e[t]||(e[t]=eb)}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,e){return this._results.reduce(t,e)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t){this._results=pt(t),this.dirty=!1,this.length=this._results.length,this.last=this._results[this.length-1],this.first=this._results[0]}notifyOnChanges(){this.changes.emit(this)}setDirty(){this.dirty=!0}destroy(){this.changes.complete(),this.changes.unsubscribe()}}class ab{constructor(t){this.queryList=t,this.matches=null}clone(){return new ab(this.queryList)}setDirty(){this.queryList.setDirty()}}class rb{constructor(t=[]){this.queries=t}createEmbeddedView(t){const e=t.queries;if(null!==e){const n=null!==t.contentQueries?t.contentQueries[0]:e.length,a=new Array(n);for(let t=0;t<n;t++){const n=e.getByIndex(t);a[t]=this.queries[n.indexInDeclarationView].clone()}return new rb(a)}return null}insertView(t){this.dirtyQueriesWithMatches(t)}detachView(t){this.dirtyQueriesWithMatches(t)}dirtyQueriesWithMatches(t){for(let e=0;e<this.queries.length;e++)null!==wb(t,e).matches&&this.queries[e].setDirty()}}class ib{constructor(t,e,n,a=null){this.predicate=t,this.descendants=e,this.isStatic=n,this.read=a}}class sb{constructor(t=[]){this.queries=t}elementStart(t,e){for(let n of this.queries)n.elementStart(t,e)}elementEnd(t){for(let e of this.queries)e.elementEnd(t)}embeddedTView(t){let e=null;for(let n=0;n<this.length;n++){const a=null!==e?e.length:0,r=this.getByIndex(n).embeddedTView(t,a);r&&(r.indexInDeclarationView=n,null!==e?e.push(r):e=[r])}return null!==e?new sb(e):null}template(t,e){for(let n of this.queries)n.template(t,e)}getByIndex(t){return this.queries[t]}get length(){return this.queries.length}track(t){this.queries.push(t)}}class ub{constructor(t,e=-1){this.metadata=t,this.matches=null,this.indexInDeclarationView=-1,this.crossesNgTemplate=!1,this._appliesToNextNode=!0,this._declarationNodeIndex=e}elementStart(t,e){this.isApplyingToNode(e)&&this.matchTNode(t,e)}elementEnd(t){this._declarationNodeIndex===t.index&&(this._appliesToNextNode=!1)}template(t,e){this.elementStart(t,e)}embeddedTView(t,e){return this.isApplyingToNode(t)?(this.crossesNgTemplate=!0,this.addMatch(-t.index,e),new ub(this.metadata)):null}isApplyingToNode(t){return this._appliesToNextNode&&!1===this.metadata.descendants?this._declarationNodeIndex===(t.parent?t.parent.index:-1):this._appliesToNextNode}matchTNode(t,e){if(Array.isArray(this.metadata.predicate)){const n=this.metadata.predicate;for(let a=0;a<n.length;a++)this.matchTNodeWithReadOption(t,e,ob(e,n[a]))}else{const n=this.metadata.predicate;n===Of?0===e.type&&this.matchTNodeWithReadOption(t,e,-1):this.matchTNodeWithReadOption(t,e,Oa(e,t,n,!1,!1))}}matchTNodeWithReadOption(t,e,n){if(null!==n){const a=this.metadata.read;if(null!==a)if(a===Kc||a===Nf||a===Of&&0===e.type)this.addMatch(e.index,-2);else{const n=Oa(e,t,a,!1,!1);null!==n&&this.addMatch(e.index,n)}else this.addMatch(e.index,n)}}addMatch(t,e){null===this.matches?this.matches=[t,e]:this.matches.push(t,e)}}function ob(t,e){const n=t.localNames;if(null!==n)for(let a=0;a<n.length;a+=2)if(n[a]===e)return n[a+1];return null}function lb(t,e,n,a){return-1===n?function(t,e){return 3===t.type||4===t.type?$s(Kc,t,e):0===t.type?Js(Of,Kc,t,e):null}(e,t):-2===n?function(t,e,n){return n===Kc?$s(Kc,e,t):n===Of?Js(Of,Kc,e,t):n===Nf?Zs(Nf,Kc,e,t):void 0}(t,e,a):Sa(t[1].data,t,n,e)}function db(t,e,n){const a=t[5].queries[n];if(null===a.matches){const n=t[1].data,r=e.matches,i=new Array(r.length/2);for(let a=0;a<r.length;a+=2){const s=r[a];i[a/2]=s<0?null:lb(t,n[s],r[a+1],e.metadata.read)}a.matches=i}return a.matches}function cb(t){const e=Ae(),n=en();nn(n+1);const a=wb(e[1],n);if(t.dirty&&Ue()===a.metadata.isStatic){if(null===a.matches)t.reset([]);else{const r=a.crossesNgTemplate?function t(e,n,a){const r=e[1].queries.getByIndex(n),i=r.matches;if(null!==i){const s=db(e,r,n);for(let n=0;n<i.length;n+=2){const r=i[n];if(r>0)a.push(s[n/2]);else{const s=i[n+1],u=e[-r];for(let e=9;e<u.length;e++){const n=u[e];n[17]===n[3]&&t(n,s,a)}if(null!==u[5])for(let e of u[5])t(e,s,a)}}}return a}(e,n,[]):db(e,a,n);t.reset(r),t.notifyOnChanges()}return!0}return!1}function fb(t,e,n){gb(Ae(),t,e,n,!0)}function hb(t,e,n){gb(Ae(),t,e,n,!1)}function gb(t,e,n,a,r){const i=t[1];i.firstTemplatePass&&(Tb(i,new ib(e,n,r,a),-1),r&&(i.staticViewQueries=!0)),_b(t)}function pb(){return xb(Ae(),en())}function bb(t,e,n,a){yb(Ae(),e,n,a,!1,Ge(),t)}function mb(t,e,n,a){yb(Ae(),e,n,a,!0,Ge(),t)}function yb(t,e,n,a,r,i,s){const u=t[1];u.firstTemplatePass&&(Tb(u,new ib(e,n,r,a),i.index),function(t,e){const n=t.contentQueries||(t.contentQueries=[]);e!==(t.contentQueries.length?n[n.length-1]:-1)&&n.push(t.queries.length-1,e)}(u,s),r&&(u.staticContentQueries=!0)),_b(t)}function vb(){return xb(Ae(),en())}function xb(t,e){return t[5].queries[e].queryList}function _b(t){const e=new nb;!function(t,e,n){const a=gs(t);a.push(e),t[1].firstTemplatePass&&ps(t).push(n,a.length-1)}(t,e,e.destroy),null===t[5]&&(t[5]=new rb),t[5].queries.push(new ab(e))}function Tb(t,e,n){null===t.queries&&(t.queries=new sb),t.queries.track(new ub(e,n))}function wb(t,e){return t.queries.getByIndex(e)}function Ob(t,e){return Js(Of,Kc,t,e)}function Sb(t=C.Default){const e=Qs(!0);if(null!=e||t&C.Optional)return e;throw new Error("No provider for ChangeDetectorRef!")}const Ib=(()=>({"ɵɵattribute":Wo,"ɵɵattributeInterpolate1":al,"ɵɵattributeInterpolate2":rl,"ɵɵattributeInterpolate3":il,"ɵɵattributeInterpolate4":sl,"ɵɵattributeInterpolate5":ul,"ɵɵattributeInterpolate6":ol,"ɵɵattributeInterpolate7":ll,"ɵɵattributeInterpolate8":dl,"ɵɵattributeInterpolateV":cl,"ɵɵdefineBase":Bt,"ɵɵdefineComponent":Pt,"ɵɵdefineDirective":zt,"ɵɵdefineInjectable":k,"ɵɵdefineInjector":L,"ɵɵdefineNgModule":Ft,"ɵɵdefinePipe":Yt,"ɵɵdirectiveInject":Tl,"ɵɵgetFactoryOf":Ra,"ɵɵgetInheritedFactory":Aa,"ɵɵinject":rt,"ɵɵinjectAttribute":wl,"ɵɵinjectPipeChangeDetectorRef":Sb,"ɵɵtemplateRefExtractor":Ob,"ɵɵNgOnChangesFeature":wc,"ɵɵProvidersFeature":jc,"ɵɵInheritDefinitionFeature":Nc,"ɵɵcontainer":gl,"ɵɵnextContext":ud,"ɵɵcontainerRefreshStart":bl,"ɵɵcontainerRefreshEnd":ml,"ɵɵnamespaceHTML":gn,"ɵɵnamespaceMathML":hn,"ɵɵnamespaceSVG":fn,"ɵɵenableBindings":Ce,"ɵɵdisableBindings":Re,"ɵɵallocHostVars":ko,"ɵɵelementStart":zl,"ɵɵelementEnd":Yl,"ɵɵelement":Hl,"ɵɵelementContainerStart":Kl,"ɵɵelementContainerEnd":$l,"ɵɵelementContainer":Jl,"ɵɵpureFunction0":Mp,"ɵɵpureFunction1":qp,"ɵɵpureFunction2":jp,"ɵɵpureFunction3":Fp,"ɵɵpureFunction4":Vp,"ɵɵpureFunction5":Gp,"ɵɵpureFunction6":Bp,"ɵɵpureFunction7":zp,"ɵɵpureFunction8":Yp,"ɵɵpureFunctionV":Hp,"ɵɵgetCurrentView":Xl,"ɵɵrestoreView":Ve,"ɵɵlistener":nd,"ɵɵload":_l,"ɵɵprojection":fd,"ɵɵupdateSyntheticHostBinding":tc,"ɵɵcomponentHostSyntheticListener":ad,"ɵɵpipeBind1":Wp,"ɵɵpipeBind2":Kp,"ɵɵpipeBind3":$p,"ɵɵpipeBind4":Jp,"ɵɵpipeBindV":Zp,"ɵɵprojectionDef":ld,"ɵɵhostProperty":Xd,"ɵɵproperty":Ho,"ɵɵpropertyInterpolate":hd,"ɵɵpropertyInterpolate1":gd,"ɵɵpropertyInterpolate2":pd,"ɵɵpropertyInterpolate3":bd,"ɵɵpropertyInterpolate4":md,"ɵɵpropertyInterpolate5":yd,"ɵɵpropertyInterpolate6":vd,"ɵɵpropertyInterpolate7":xd,"ɵɵpropertyInterpolate8":_d,"ɵɵpropertyInterpolateV":Td,"ɵɵpipe":Up,"ɵɵqueryRefresh":cb,"ɵɵviewQuery":hb,"ɵɵstaticViewQuery":fb,"ɵɵstaticContentQuery":mb,"ɵɵloadViewQuery":pb,"ɵɵcontentQuery":bb,"ɵɵloadContentQuery":vb,"ɵɵreference":xl,"ɵɵelementHostAttrs":Ul,"ɵɵclassMap":kl,"ɵɵclassMapInterpolate1":Pd,"ɵɵclassMapInterpolate2":Md,"ɵɵclassMapInterpolate3":qd,"ɵɵclassMapInterpolate4":jd,"ɵɵclassMapInterpolate5":Fd,"ɵɵclassMapInterpolate6":Vd,"ɵɵclassMapInterpolate7":Gd,"ɵɵclassMapInterpolate8":Bd,"ɵɵclassMapInterpolateV":zd,"ɵɵstyling":Ol,"ɵɵstyleMap":Al,"ɵɵstyleProp":Il,"ɵɵstylePropInterpolate1":Yd,"ɵɵstylePropInterpolate2":Hd,"ɵɵstylePropInterpolate3":Ud,"ɵɵstylePropInterpolate4":Wd,"ɵɵstylePropInterpolate5":Kd,"ɵɵstylePropInterpolate6":$d,"ɵɵstylePropInterpolate7":Jd,"ɵɵstylePropInterpolate8":Zd,"ɵɵstylePropInterpolateV":Qd,"ɵɵstyleSanitizer":Sl,"ɵɵstylingApply":Pl,"ɵɵclassProp":Cl,"ɵɵselect":wi,"ɵɵtemplate":pl,"ɵɵtext":wd,"ɵɵtextBinding":Od,"ɵɵtextInterpolate":Sd,"ɵɵtextInterpolate1":Id,"ɵɵtextInterpolate2":Nd,"ɵɵtextInterpolate3":Cd,"ɵɵtextInterpolate4":Rd,"ɵɵtextInterpolate5":Ad,"ɵɵtextInterpolate6":kd,"ɵɵtextInterpolate7":Ed,"ɵɵtextInterpolate8":Ld,"ɵɵtextInterpolateV":Dd,"ɵɵembeddedViewStart":Zl,"ɵɵembeddedViewEnd":Ql,"ɵɵi18n":dp,"ɵɵi18nAttributes":cp,"ɵɵi18nExp":gp,"ɵɵi18nStart":np,"ɵɵi18nEnd":sp,"ɵɵi18nApply":pp,"ɵɵi18nPostprocess":ip,"ɵɵi18nLocalize":Op,"ɵɵresolveWindow":Tn,"ɵɵresolveDocument":wn,"ɵɵresolveBody":On,"ɵɵsetComponentScope":Mt,"ɵɵsetNgModuleScope":Vt,"ɵɵsanitizeHtml":wr,"ɵɵsanitizeStyle":Or,"ɵɵdefaultStyleSanitizer":Ar,"ɵɵsanitizeResourceUrl":Ir,"ɵɵsanitizeScript":Nr,"ɵɵsanitizeUrl":Sr,"ɵɵsanitizeUrlOrResourceUrl":Rr}))(),Nb=[],Cb=[];let Rb=!1;function Ab(){if(!Rb){Rb=!0;try{for(let t=Cb.length-1;t>=0;t--){const{moduleType:e,ngModule:n}=Cb[t];n.declarations&&n.declarations.every(kb)&&(Cb.splice(t,1),qb(e,n))}}finally{Rb=!1}}}function kb(t){return Array.isArray(t)?t.every(kb):!!G(t)}function Eb(t,e={}){Lb(t,e),function(t,e){Cb.push({moduleType:t,ngModule:e})}(t,e)}function Lb(t,e,n=!1){const a=pt(e.declarations||Nb);let r=null;Object.defineProperty(t,At,{configurable:!0,get:()=>(null===r&&(r=W().compileNgModule(Ib,`ng:///${t.name}/ngModuleDef.js`,{type:t,bootstrap:pt(e.bootstrap||Nb).map(G),declarations:a.map(G),imports:pt(e.imports||Nb).map(G).map(Vb),exports:pt(e.exports||Nb).map(G).map(Vb),emitInline:!0,schemas:e.schemas?pt(e.schemas):null,id:e.id||null})),r)});let i=null;Object.defineProperty(t,q,{get:()=>{if(null===i){const n={name:t.name,type:t,deps:hu(t),providers:e.providers||Nb,imports:[(e.imports||Nb).map(G),(e.exports||Nb).map(G)]};i=W().compileInjector(Ib,`ng:///${t.name}/ngInjectorDef.js`,n)}return i},configurable:!1})}let Db=new Map,Pb=new Map;function Mb(){Db=new Map,Pb=new Map,Cb.length=0}function qb(t,e){const n=pt(e.declarations||Nb),a=Fb(t);n.forEach(e=>{e.hasOwnProperty(Nt)?jb(Ht(e),a):e.hasOwnProperty(Ct)||e.hasOwnProperty(Rt)||(e.ngSelectorScope=t)})}function jb(t,e){t.directiveDefs=()=>Array.from(e.compilation.directives).map(t=>t.hasOwnProperty(Nt)?Ht(t):Ut(t)).filter(t=>!!t),t.pipeDefs=()=>Array.from(e.compilation.pipes).map(t=>Wt(t)),t.schemas=e.schemas,t.tView=null}function Fb(t,e){if(!Gb(t))throw new Error(t.name+" does not have an ngModuleDef");const n=$t(t);if(null!==n.transitiveCompileScopes)return n.transitiveCompileScopes;const a={schemas:n.schemas||null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set}};return In(n.declarations).forEach(t=>{Wt(t)?a.compilation.pipes.add(t):a.compilation.directives.add(t)}),In(n.imports).forEach(t=>{const n=t;if(!Gb(n))throw new Error(`Importing ${n.name} which does not have an ngModuleDef`);e&&e(n);const r=Fb(n,e);r.exported.directives.forEach(t=>a.compilation.directives.add(t)),r.exported.pipes.forEach(t=>a.compilation.pipes.add(t))}),In(n.exports).forEach(t=>{const n=t;if(Gb(n)){const t=Fb(n,e);t.exported.directives.forEach(t=>{a.compilation.directives.add(t),a.exported.directives.add(t)}),t.exported.pipes.forEach(t=>{a.compilation.pipes.add(t),a.exported.pipes.add(t)})}else Wt(n)?a.exported.pipes.add(n):a.exported.directives.add(n)}),n.transitiveCompileScopes=a,a}function Vb(t){return function(t){return void 0!==t.ngModule}(t)?t.ngModule:t}function Gb(t){return!!$t(t)}function Bb(t,e){let n=null;!function(t,e){Co(e)&&(Io.set(t,e),No.add(t))}(t,e),Object.defineProperty(t,Nt,{get:()=>{const a=W();if(null===n){if(Co(e)){const n=[`Component '${t.name}' is not resolved:`];throw e.templateUrl&&n.push(" - templateUrl: "+e.templateUrl),e.styleUrls&&e.styleUrls.length&&n.push(" - styleUrls: "+JSON.stringify(e.styleUrls)),n.push("Did you run and wait for 'resolveComponentResources()'?"),new Error(n.join("\n"))}const r=e.templateUrl||`ng:///${t.name}/template.html`,i=Object.assign({},Hb(t,e),{typeSourceSpan:a.createParseSourceSpan("Component",t.name,r),template:e.template||"",preserveWhitespaces:e.preserveWhitespaces||!1,styles:e.styles||It,animations:e.animations,directives:[],changeDetection:e.changeDetection,pipes:new Map,encapsulation:e.encapsulation||wt.Emulated,interpolation:e.interpolation,viewProviders:e.viewProviders||null});if(i.usesInheritance&&Ub(t),n=a.compileComponent(Ib,r,i),Ab(),void 0!==t.ngSelectorScope){const e=Fb(t.ngSelectorScope);jb(n,e)}}return n},configurable:!1}),pu(t)}function zb(t,e){let n=null;Object.defineProperty(t,Ct,{get:()=>{if(null===n){const a=t&&t.name,r=`ng:///${a}/ngDirectiveDef.js`,i=W(),s=Hb(t,e);s.typeSourceSpan=i.createParseSourceSpan("Directive",a,r),s.usesInheritance&&Ub(t),n=i.compileDirective(Ib,r,s)}return n},configurable:!1}),pu(t)}function Yb(t){return Object.getPrototypeOf(t.prototype)===Object.prototype}function Hb(t,e){const n=fu().ownPropMetadata(t);return{name:t.name,type:t,typeArgumentCount:0,selector:e.selector,deps:hu(t),host:e.host||St,propMetadata:n,inputs:e.inputs||It,outputs:e.outputs||It,queries:Jb(t,n,Zb),lifecycle:{usesOnChanges:t.prototype.hasOwnProperty("ngOnChanges")},typeSourceSpan:null,usesInheritance:!Yb(t),exportAs:(a=e.exportAs,void 0===a?null:a.split(",").map(t=>t.trim())),providers:e.providers||null,viewQueries:Jb(t,n,Qb)};var a}function Ub(t){const e=Object.prototype;let n=Object.getPrototypeOf(t);for(;n&&n!==e;){if(!Ut(n)&&!Ht(n)&&!Kt(n)){const t=Kb(n);t&&Wb(n,t)}n=Object.getPrototypeOf(n)}}function Wb(t,e){let n=null;Object.defineProperty(t,Et,{get:()=>{if(null===n){const a=`ng://${t&&t.name}/ngBaseDef.js`,r=W();n=r.compileBase(Ib,a,e)}return n},configurable:!1})}function Kb(t){const e=fu().ownPropMetadata(t),n=Jb(t,e,Qb),a=Jb(t,e,Zb);let r,i,s=!1;for(const u in e)e[u].forEach(t=>{const e=t.ngMetadataName;"Input"===e?(r=r||{},r[u]=t.bindingPropertyName?[t.bindingPropertyName,u]:u):"Output"===e?(i=i||{},i[u]=t.bindingPropertyName||u):"HostBinding"!==e&&"HostListener"!==e||(s=!0)});return r||i||n.length||a.length||s?{name:t.name,type:t,inputs:r,outputs:i,viewQueries:n,queries:a,propMetadata:e}:null}function $b(t,e){return{propertyName:t,predicate:(n=e.selector,"string"==typeof n?n.split(",").map(t=>t.trim()):G(n)),descendants:e.descendants,first:e.first,read:e.read?e.read:null,static:!!e.static};var n}function Jb(t,e,n){const a=[];for(const r in e)if(e.hasOwnProperty(r)){const i=e[r];i.forEach(e=>{if(n(e)){if(!e.selector)throw new Error(`Can't construct a query for the property "${r}" of "${xn(t)}" since the query selector wasn't defined.`);if(i.some(Xb))throw new Error("Cannot combine @Input decorators with query decorators");a.push($b(r,e))}})}return a}function Zb(t){const e=t.ngMetadataName;return"ContentChild"===e||"ContentChildren"===e}function Qb(t){const e=t.ngMetadataName;return"ViewChild"===e||"ViewChildren"===e}function Xb(t){return"Input"===t.ngMetadataName}function tm(t,e){let n=null;Object.defineProperty(t,Rt,{get:()=>{if(null===n){const a=t.name;n=W().compilePipe(Ib,`ng:///${a}/ngPipeDef.js`,{type:t,typeArgumentCount:0,name:a,deps:hu(t),pipeName:e.name,pure:void 0===e.pure||e.pure})}return n},configurable:!1})}const em=y("Directive",(t={})=>t,void 0,void 0,(t,e)=>fm(t,e)),nm=y("Component",(t={})=>Object.assign({changeDetection:xt.Default},t),em,void 0,(t,e)=>cm(t,e)),am=y("Pipe",t=>Object.assign({pure:!0},t),void 0,void 0,(t,e)=>hm(t,e)),rm=_("Input",t=>({bindingPropertyName:t})),im=_("Output",t=>({bindingPropertyName:t})),sm=_("HostBinding",t=>({hostPropertyName:t})),um=_("HostListener",(t,e)=>({eventName:t,args:e})),om=Bb,lm=zb,dm=tm,cm=Wc,fm=Wc,hm=Wc,gm=y("NgModule",t=>t,void 0,void 0,(t,e)=>bm(t,e)),pm=Eb,bm=function(t,e){let n=e&&e.imports||[];e&&e.exports&&(n=[...n,e.exports]),t.ngInjectorDef=L({factory:wu(t,{useClass:t}),providers:e&&e.providers,imports:n})},mm=new K("Application Initializer");class ym{constructor(t){this.appInits=t,this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}runInitializers(){if(this.initialized)return;const t=[],e=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let n=0;n<this.appInits.length;n++){const e=this.appInits[n]();td(e)&&t.push(e)}Promise.all(t).then(()=>{e()}).catch(t=>{this.reject(t)}),0===t.length&&e(),this.initialized=!0}}const vm=new K("AppId");function xm(){return`${Tm()}${Tm()}${Tm()}`}const _m={provide:vm,useFactory:xm,deps:[]};function Tm(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const wm=new K("Platform Initializer"),Om=new K("Platform ID"),Sm=new K("appBootstrapListener"),Im=new K("Application Packages Root URL");class Nm{log(t){console.log(t)}warn(t){console.warn(t)}}const Cm=new K("LocaleId"),Rm=new K("Translations"),Am=new K("TranslationsFormat"),km=function(){var t={Error:0,Warning:1,Ignore:2};return t[t.Error]="Error",t[t.Warning]="Warning",t[t.Ignore]="Ignore",t}(),Em=!0,Lm=!1;class Dm{constructor(t,e){this.ngModuleFactory=t,this.componentFactories=e}}function Pm(){throw new Error("Runtime compiler is not loaded")}const Mm=function(t){return new Dp(t)},qm=Pm,jm=function(t){return Promise.resolve(Mm(t))},Fm=Pm,Vm=function(t){const e=Mm(t),n=In($t(t).declarations).reduce((t,e)=>{const n=Ht(e);return n&&t.push(new Ig(n)),t},[]);return new Dm(e,n)},Gm=Pm,Bm=function(t){return Promise.resolve(Vm(t))},zm=Pm;class Ym{constructor(){this.compileModuleSync=qm,this.compileModuleAsync=Fm,this.compileModuleAndAllComponentsSync=Gm,this.compileModuleAndAllComponentsAsync=zm}clearCache(){}clearCacheFor(t){}getModuleId(t){}}const Hm=new K("compilerOptions");class Um{}let Wm,Km;function $m(){const t=U.wtf;return!(!t||(Wm=t.trace,!Wm)||(Km=Wm.events,0))}function Jm(t,e=null){return Km.createScope(t,e)}function Zm(t,e){return Wm.leaveScope(t,e),e}function Qm(t,e){return Wm.beginTimeRange(t,e)}function Xm(t){Wm.endTimeRange(t)}const ty=$m();function ey(t,e){return null}const ny=ty?Jm:(t,e)=>ey,ay=ty?Zm:(t,e)=>e,ry=ty?Qm:(t,e)=>null,iy=ty?Xm:t=>null,sy=(()=>Promise.resolve(0))();function uy(t){"undefined"==typeof Zone?sy.then(()=>{t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}class oy{constructor({enableLongStackTrace:t=!1}){if(this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new tb(!1),this.onMicrotaskEmpty=new tb(!1),this.onStable=new tb(!1),this.onError=new tb(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");var e;Zone.assertZonePatched(),this._nesting=0,this._outer=this._inner=Zone.current,Zone.wtfZoneSpec&&(this._inner=this._inner.fork(Zone.wtfZoneSpec)),Zone.TaskTrackingZoneSpec&&(this._inner=this._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(this._inner=this._inner.fork(Zone.longStackTraceZoneSpec)),(e=this)._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(t,n,a,r,i,s)=>{try{return fy(e),t.invokeTask(a,r,i,s)}finally{hy(e)}},onInvoke:(t,n,a,r,i,s,u)=>{try{return fy(e),t.invoke(a,r,i,s,u)}finally{hy(e)}},onHasTask:(t,n,a,r)=>{t.hasTask(a,r),n===a&&("microTask"==r.change?(e.hasPendingMicrotasks=r.microTask,cy(e)):"macroTask"==r.change&&(e.hasPendingMacrotasks=r.macroTask))},onHandleError:(t,n,a,r)=>(t.handleError(a,r),e.runOutsideAngular(()=>e.onError.emit(r)),!1)})}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!oy.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(oy.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(t,e,n){return this._inner.run(t,e,n)}runTask(t,e,n,a){const r=this._inner,i=r.scheduleEventTask("NgZoneEvent: "+a,t,dy,ly,ly);try{return r.runTask(i,e,n)}finally{r.cancelTask(i)}}runGuarded(t,e,n){return this._inner.runGuarded(t,e,n)}runOutsideAngular(t){return this._outer.run(t)}}function ly(){}const dy={};function cy(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function fy(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function hy(t){t._nesting--,cy(t)}class gy{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new tb,this.onMicrotaskEmpty=new tb,this.onStable=new tb,this.onError=new tb}run(t){return t()}runGuarded(t){return t()}runOutsideAngular(t){return t()}runTask(t){return t()}}class py{constructor(t){this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{oy.assertNotInAngularZone(),uy(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())uy(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb(this._didWork)}this._didWork=!1});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(e=>!e.updateCb||!e.updateCb(t)||(clearTimeout(e.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,e,n){let a=-1;e&&e>0&&(a=setTimeout(()=>{this._callbacks=this._callbacks.filter(t=>t.timeoutId!==a),t(this._didWork,this.getPendingTasks())},e)),this._callbacks.push({doneCb:t,timeoutId:a,updateCb:n})}whenStable(t,e,n){if(n&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');this.addCallback(t,e,n),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(t,e,n){return[]}}class by{constructor(){this._applications=new Map,xy.addToWindow(this)}registerApplication(t,e){this._applications.set(t,e)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,e=!0){return xy.findTestabilityInTree(this,t,e)}}class my{addToWindow(t){}findTestabilityInTree(t,e,n){return null}}function yy(t){xy=t}let vy,xy=new my;function _y(t,e,n){const a=new Dp(n);if(0===Io.size)return Promise.resolve(a);const r=function(t){const e=[];return t.forEach(t=>t&&e.push(...t)),e}(t.get(Hm,[]).concat(e).map(t=>t.providers));if(0===r.length)return Promise.resolve(a);const i=W(),s=Bu.create({providers:r}).get(i.ResourceLoader);return So(t=>Promise.resolve(s.get(t))).then(()=>a)}function Ty(t){return t.isBoundToModule}const wy=new K("AllowMultipleToken");class Oy{constructor(t,e){this.name=t,this.token=e}}function Sy(t){if(vy&&!vy.destroyed&&!vy.injector.get(wy,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");vy=t.get(Ay);const e=t.get(wm,null);return e&&e.forEach(t=>t()),vy}function Iy(t,e,n=[]){const a="Platform: "+e,r=new K(a);return(e=[])=>{let i=Ry();if(!i||i.injector.get(wy,!1))if(t)t(n.concat(e).concat({provide:r,useValue:!0}));else{const t=n.concat(e).concat({provide:r,useValue:!0});Sy(Bu.create({providers:t,name:a}))}return Ny(r)}}function Ny(t){const e=Ry();if(!e)throw new Error("No platform exists!");if(!e.injector.get(t,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return e}function Cy(){vy&&!vy.destroyed&&vy.destroy()}function Ry(){return vy&&!vy.destroyed?vy:null}class Ay{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,e){const n=function(t){let e;return e="noop"===t?new gy:("zone.js"===t?void 0:t)||new oy({enableLongStackTrace:Wa()}),e}(e?e.ngZone:void 0),a=[{provide:oy,useValue:n}];return n.run(()=>{const e=Bu.create({providers:a,parent:this.injector,name:t.moduleType.name}),r=t.create(e),i=r.injector.get(Da,null);if(!i)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return Lm&&Ip(r.injector.get(Cm,Dg)||Dg),r.onDestroy(()=>Ly(this._modules,r)),n.runOutsideAngular(()=>n.onError.subscribe({next:t=>{i.handleError(t)}})),function(t,e,n){try{const a=n();return td(a)?a.catch(n=>{throw e.runOutsideAngular(()=>t.handleError(n)),n}):a}catch(a){throw e.runOutsideAngular(()=>t.handleError(a)),a}}(i,n,()=>{const t=r.injector.get(ym);return t.runInitializers(),t.donePromise.then(()=>(this._moduleDoBootstrap(r),r))})})}bootstrapModule(t,e=[]){const n=ky({},e);return function(t,e,n){return t.get(Um).createCompiler([e]).compileModuleAsync(n)}(this.injector,n,t).then(t=>this.bootstrapModuleFactory(t,n))}_moduleDoBootstrap(t){const e=t.injector.get(Ey);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(t=>e.bootstrap(t));else{if(!t.instance.ngDoBootstrap)throw new Error(`The module ${j(t.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`);t.instance.ngDoBootstrap(e)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(t=>t.destroy()),this._destroyListeners.forEach(t=>t()),this._destroyed=!0}get destroyed(){return this._destroyed}}function ky(t,e){return Array.isArray(e)?e.reduce(ky,t):Object.assign({},t,e)}let Ey=(()=>{class t{constructor(t,e,n,a,r,u){this._zone=t,this._console=e,this._injector=n,this._exceptionHandler=a,this._componentFactoryResolver=r,this._initStatus=u,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=Wa(),this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const l=new i.a(t=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{t.next(this._stable),t.complete()})}),d=new i.a(t=>{let e;this._zone.runOutsideAngular(()=>{e=this._zone.onStable.subscribe(()=>{oy.assertNotInAngularZone(),uy(()=>{this._stable||this._zone.hasPendingMacrotasks||this._zone.hasPendingMicrotasks||(this._stable=!0,t.next(!0))})})});const n=this._zone.onUnstable.subscribe(()=>{oy.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{t.next(!1)}))});return()=>{e.unsubscribe(),n.unsubscribe()}});this.isStable=Object(s.a)(l,d.pipe(t=>{return o()((e=g,function(t){let n;n="function"==typeof e?e:function(){return e};const a=Object.create(t,f);return a.source=t,a.subjectFactory=n,a})(t));var e}))}bootstrap(t,e){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let n;n=t instanceof Vc?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);const a=n instanceof Uc?null:this._injector.get(ft),r=n.create(Bu.NULL,[],e||n.selector,a);r.onDestroy(()=>{this._unloadComponent(r)});const i=r.injector.get(py,null);return i&&r.injector.get(by).registerApplication(r.location.nativeElement,i),this._loadComponent(r),Wa()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),r}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");const e=t._tickScope();try{this._runningTick=!0;for(let t of this._views)t.detectChanges();if(this._enforceNoNewChanges)for(let t of this._views)t.checkNoChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1,ay(e)}}attachView(t){const e=t;this._views.push(e),e.attachToAppRef(this)}detachView(t){const e=t;Ly(this._views,e),e.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(Sm,[]).concat(this._bootstrapListeners).forEach(e=>e(t))}_unloadComponent(t){this.detachView(t.hostView),Ly(this.components,t)}ngOnDestroy(){this._views.slice().forEach(t=>t.destroy())}get viewCount(){return this._views.length}}return t._tickScope=ny("ApplicationRef#tick()"),t})();function Ly(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}class Dy{}function Py(t){const e=kp(t);if(!e)throw jy(t);return e}function My(t){const e=kp(t);if(!e)throw jy(t);return new Dp(e)}const qy=Py;function jy(t){return new Error(`No module with ID ${t} loaded`)}class Fy{}const Vy={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"};class Gy{constructor(t,e){this._compiler=t,this._config=e||Vy}load(t){return!Lm&&this._compiler instanceof Ym?this.loadFactory(t):this.loadAndCompile(t)}loadAndCompile(t){let[e,a]=t.split("#");return void 0===a&&(a="default"),n("crnd")(e).then(t=>t[a]).then(t=>By(t,e,a)).then(t=>this._compiler.compileModuleAsync(t))}loadFactory(t){let[e,a]=t.split("#"),r="NgFactory";return void 0===a&&(a="default",r=""),n("crnd")(this._config.factoryPathPrefix+e+this._config.factoryPathSuffix).then(t=>t[a+r]).then(t=>By(t,e,a))}}function By(t,e,n){if(!t)throw new Error(`Cannot find '${n}' in '${e}'`);return t}class zy extends Xs{}class Yy extends zy{}class Hy{constructor(t,e){this.name=t,this.callback=e}}class Uy{constructor(t,e,n){this.listeners=[],this.parent=null,this._debugContext=n,this.nativeNode=t,e&&e instanceof Wy&&e.addChild(this)}get injector(){return this._debugContext.injector}get componentInstance(){return this._debugContext.component}get context(){return this._debugContext.context}get references(){return this._debugContext.references}get providerTokens(){return this._debugContext.providerTokens}}class Wy extends Uy{constructor(t,e,n){super(t,e,n),this.properties={},this.attributes={},this.classes={},this.styles={},this.childNodes=[],this.nativeElement=t}addChild(t){t&&(this.childNodes.push(t),t.parent=this)}removeChild(t){const e=this.childNodes.indexOf(t);-1!==e&&(t.parent=null,this.childNodes.splice(e,1))}insertChildrenAfter(t,e){const n=this.childNodes.indexOf(t);-1!==n&&(this.childNodes.splice(n+1,0,...e),e.forEach(e=>{e.parent&&e.parent.removeChild(e),t.parent=this}))}insertBefore(t,e){const n=this.childNodes.indexOf(t);-1===n?this.addChild(e):(e.parent&&e.parent.removeChild(e),e.parent=this,this.childNodes.splice(n,0,e))}query(t){return this.queryAll(t)[0]||null}queryAll(t){const e=[];return function t(e,n,a){e.childNodes.forEach(e=>{e instanceof Wy&&(n(e)&&a.push(e),t(e,n,a))})}(this,t,e),e}queryAllNodes(t){const e=[];return function t(e,n,a){e instanceof Wy&&e.childNodes.forEach(e=>{n(e)&&a.push(e),e instanceof Wy&&t(e,n,a)})}(this,t,e),e}get children(){return this.childNodes.filter(t=>t instanceof Wy)}triggerEventHandler(t,e){this.listeners.forEach(n=>{n.name==t&&n.callback(e)})}}function Ky(t){return t.map(t=>t.nativeElement)}class $y{constructor(t){this.nativeNode=t}get parent(){const t=this.nativeNode.parentNode;return t?new Jy(t):null}get injector(){return ic(this.nativeNode)}get componentInstance(){const t=this.nativeNode;return t&&(ec(t)||ac(t))}get context(){return ec(this.nativeNode)||nc(this.nativeNode)}get listeners(){return cc(this.nativeNode).filter(dc)}get references(){return function(t){const e=uc(t);return void 0===e.localRefs&&(e.localRefs=function(t,e){const n=t[1].data[e];if(n&&n.localNames){const e={};let a=n.index+1;for(let r=0;r<n.localNames.length;r+=2)e[n.localNames[r]]=t[a],a++;return e}return null}(e.lView,e.nodeIndex)),e.localRefs||{}}(this.nativeNode)}get providerTokens(){return function(t){const e=uc(t,!1);if(!e)return[];const n=e.lView[1],a=n.data[e.nodeIndex],r=[],i=a.directiveEnd;for(let u=65535&a.providerIndexes;u<i;u++){let t=n.data[u];void 0!==(s=t).type&&void 0!==s.template&&void 0!==s.declaredInputs&&(t=t.type),r.push(t)}var s;return r}(this.nativeNode)}}class Jy extends $y{constructor(t){super(t)}get nativeElement(){return this.nativeNode.nodeType==Node.ELEMENT_NODE?this.nativeNode:null}get name(){return this.nativeElement.nodeName}get properties(){const t=uc(this.nativeNode),e=t.lView,n=e[1].data,a=n[t.nodeIndex],r=function(t,e,n){const a={};let r=function(t,e){let n=t-1,a=e[n];for(;"string"==typeof a&&!Sn(a);)a=e[--n];return n+1}(t.propertyMetadataStartIndex,n);for(;r<t.propertyMetadataEndIndex;){let t,i=n[r];for(;!Sn(i);)t=(t||"")+vn(e[r])+n[r],i=n[++r];t=void 0===t?e[r]:t+=e[r];const s=i.split("�"),u=s[0];u&&(a[u]=s[1]&&s[2]?s[1]+t+s[2]:t),r++}return a}(a,e,n),i=function(t,e,n){const a={};let r=t.directiveEnd,i=n[r];for(;"string"==typeof i;)a[i.split("�")[0]]=e[r],i=n[++r];return a}(a,e,n),s=function(t){const e=t.classes;let n="";for(const a of Object.keys(e))e[a]&&(n=n?n+" "+a:a);return n}(this),u=Object.assign({},r,i);return s&&(u.className=u.className?u.className+" "+s:s),u}get attributes(){const t={},e=this.nativeElement;if(!e)return t;const n=uc(e),a=n.lView[1].data[n.nodeIndex].attrs,r=[];if(a){let e=0;for(;e<a.length;){const n=a[e];if("string"!=typeof n)break;t[n]=a[e+1],r.push(n.toLowerCase()),e+=2}}const i=e.attributes;for(let s=0;s<i.length;s++){const e=i[s];-1===r.indexOf(e.name)&&(t[e.name]=e.value)}return t}get styles(){return Zy(this.nativeElement,!1)}get classes(){return Zy(this.nativeElement,!0)}get childNodes(){const t=this.nativeNode.childNodes,e=[];for(let n=0;n<t.length;n++)e.push(av(t[n]));return e}get children(){const t=this.nativeElement;if(!t)return[];const e=t.children,n=[];for(let a=0;a<e.length;a++)n.push(av(e[a]));return n}query(t){return this.queryAll(t)[0]||null}queryAll(t){const e=[];return Qy(this,t,e,!0),e}queryAllNodes(t){const e=[];return Qy(this,t,e,!1),e}triggerEventHandler(t,e){this.listeners.forEach(n=>{n.name===t&&n.callback(e)})}}function Zy(t,e){if(t){const n=lc(t),a=n.lView,r=a[1].data[n.nodeIndex];return e?Un(r.classes)?new Ti(r.classes,a,!0).values:_i(r.classes):Un(r.styles)?new Ti(r.styles,a,!1).values:_i(r.styles)}return{}}function Qy(t,e,n,a){const r=uc(t.nativeNode);Xy(r.lView[1].data[r.nodeIndex],r.lView,e,n,a,t.nativeNode)}function Xy(t,e,n,a,r,i){const s=me(t,e);if(3===t.type||4===t.type){if(ev(s,n,a,r,i),Xt(t)){const s=xe(t.index,e);s&&s[1].firstChild&&Xy(s[1].firstChild,s,n,a,r,i)}else t.child&&Xy(t.child,e,n,a,r,i),s&&function t(e,n,a,r){const i=e.childNodes,s=i.length;for(let u=0;u<s;u++){const e=i[u],s=rv(e);s&&((r&&s instanceof Jy&&n(s)&&-1===a.indexOf(s)||!r&&n(s)&&-1===a.indexOf(s))&&a.push(s),t(e,n,a,r))}}(s,n,a,r);const u=e[t.index];Zt(u)&&tv(u,n,a,r,i)}else if(0===t.type){const s=e[t.index];ev(s[7],n,a,r,i),tv(s,n,a,r,i)}else if(1===t.type){const s=da(e),u=s[6].projection[t.projection];if(Array.isArray(u))for(let t of u)ev(t,n,a,r,i);else if(u){const t=s[3];Xy(t[1].data[u.index],t,n,a,r,i)}}else t.child&&Xy(t.child,e,n,a,r,i);if(i!==s){const s=2&t.flags?t.projectionNext:t.next;s&&Xy(s,e,n,a,r,i)}}function tv(t,e,n,a,r){for(let i=9;i<t.length;i++){const s=t[i];Xy(s[1].node,s,e,n,a,r)}}function ev(t,e,n,a,r){if(r!==t){const r=rv(t);if(!r)return;(a&&r instanceof Jy&&e(r)&&-1===n.indexOf(r)||!a&&e(r)&&-1===n.indexOf(r))&&n.push(r)}}const nv=new Map;function av(t){return t instanceof Node?(t.hasOwnProperty("__ng_debug__")||(t.__ng_debug__=t.nodeType==Node.ELEMENT_NODE?new Jy(t):new $y(t)),t.__ng_debug__):null}const rv=function(t){return nv.get(t)||null};function iv(t){nv.set(t.nativeNode,t)}const sv=Uy,uv=Wy,ov=Iy(null,"core",[{provide:Om,useValue:"unknown"},{provide:Ay,deps:[Bu]},{provide:by,deps:[]},{provide:Nm,deps:[]}]);function lv(){return Tf}function dv(){return wf}function cv(t){return t?(Lm&&Ip(t),t):Dg}const fv=[{provide:Ey,useClass:Ey,deps:[oy,Nm,Bu,Da,Yc,ym]},{provide:Sg,deps:[oy],useFactory:hv},{provide:ym,useClass:ym,deps:[[new w,mm]]},{provide:Ym,useClass:Ym,deps:[]},_m,{provide:vf,useFactory:lv,deps:[]},{provide:xf,useFactory:dv,deps:[]},{provide:Cm,useFactory:cv,deps:[[new T(Cm),new w,new S]]}];function hv(t){let e=[];return t.onStable.subscribe(()=>{for(;e.length;)e.pop()()}),function(t){e.push(t)}}class gv{constructor(t){}}function pv(t,e,n,a,r,i){t|=1;const{matchedQueries:s,references:u,matchedQueryIds:o}=sh(e);return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,flags:t,checkIndex:-1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:s,matchedQueryIds:o,references:u,ngContentIndex:n,childCount:a,bindings:[],bindingFlags:0,outputs:[],element:{ns:null,name:null,attrs:null,template:i?dh(i):null,componentProvider:null,componentView:null,componentRendererType:null,publicProviders:null,allProviders:null,handleEvent:r||Bf},provider:null,text:null,query:null,ngContent:null}}function bv(t,e,n,a,r,i,s=[],u,o,l,d,c){l||(l=Bf);const{matchedQueries:f,references:h,matchedQueryIds:g}=sh(n);let p=null,b=null;i&&([p,b]=mh(i)),u=u||[];const m=new Array(u.length);for(let x=0;x<u.length;x++){const[t,e,n]=u[x],[a,r]=mh(e);let i=void 0,s=void 0;switch(15&t){case 4:s=n;break;case 1:case 8:i=n}m[x]={flags:t,ns:a,name:r,nonMinifiedName:r,securityContext:i,suffix:s}}o=o||[];const y=new Array(o.length);for(let x=0;x<o.length;x++){const[t,e]=o[x];y[x]={type:0,target:t,eventName:e,propName:null}}const v=(s=s||[]).map(([t,e])=>{const[n,a]=mh(t);return[n,a,e]});return c=function(t){if(t&&"$$undefined"===t.id){const e=null!=t.encapsulation&&t.encapsulation!==wt.None||t.styles.length||Object.keys(t.data).length;t.id=e?"c"+Wf++:"$$empty"}return t&&"$$empty"===t.id&&(t=null),t||null}(c),d&&(e|=33554432),{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e|=1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:f,matchedQueryIds:g,references:h,ngContentIndex:a,childCount:r,bindings:m,bindingFlags:yh(m),outputs:y,element:{ns:p,name:b,attrs:v,template:null,componentProvider:null,componentView:d||null,componentRendererType:c,publicProviders:null,allProviders:null,handleEvent:l||Bf},provider:null,text:null,query:null,ngContent:null}}function mv(t,e,n){const a=n.element,r=t.root.selectorOrNode,i=t.renderer;let s;if(t.parent||!r){s=a.name?i.createElement(a.name,a.ns):i.createComment("");const r=oh(t,e,n);r&&i.appendChild(r,s)}else s=i.selectRootElement(r,!!a.componentRendererType&&a.componentRendererType.encapsulation===wt.ShadowDom);if(a.attrs)for(let u=0;u<a.attrs.length;u++){const[t,e,n]=a.attrs[u];i.setAttribute(s,e,n,t)}return s}function yv(t,e,n,a){for(let s=0;s<n.outputs.length;s++){const u=n.outputs[s],o=vv(t,n.nodeIndex,(i=u.eventName,(r=u.target)?`${r}:${i}`:i));let l=u.target,d=t;"component"===u.target&&(l=null,d=e);const c=d.renderer.listen(l||a,u.eventName,o);t.disposables[n.outputIndex+s]=c}var r,i}function vv(t,e,n){return a=>Xf(t,e,n,a)}function xv(t,e,n,a){if(!$f(t,e,n,a))return!1;const r=e.bindings[n],i=Mf(t,e.nodeIndex),s=i.renderElement,u=r.name;switch(15&r.flags){case 1:!function(t,e,n,a,r,i){const s=e.securityContext;let u=s?t.root.sanitizer.sanitize(s,i):i;u=null!=u?u.toString():null;const o=t.renderer;null!=i?o.setAttribute(n,r,u,a):o.removeAttribute(n,r,a)}(t,r,s,r.ns,u,a);break;case 2:!function(t,e,n,a){const r=t.renderer;a?r.addClass(e,n):r.removeClass(e,n)}(t,s,u,a);break;case 4:!function(t,e,n,a,r){let i=t.root.sanitizer.sanitize(yr.STYLE,r);if(null!=i){i=i.toString();const t=e.suffix;null!=t&&(i+=t)}else i=null;const s=t.renderer;null!=i?s.setStyle(n,a,i):s.removeStyle(n,a)}(t,r,s,u,a);break;case 8:!function(t,e,n,a,r){const i=e.securityContext;let s=i?t.root.sanitizer.sanitize(i,r):r;t.renderer.setProperty(n,a,s)}(33554432&e.flags&&32&r.flags?i.componentView:t,r,s,u,a)}return!0}function _v(t,e,n){let a=[];for(let r in n)a.push({propName:r,bindingType:n[r]});return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:-1,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,ngContentIndex:-1,matchedQueries:{},matchedQueryIds:0,references:{},childCount:0,bindings:[],bindingFlags:0,outputs:[],element:null,provider:null,text:null,query:{id:e,filterId:ih(e),bindings:a},ngContent:null}}function Tv(t){const e=t.def.nodeMatchedQueries;for(;t.parent&&rh(t);){let n=t.parentNodeDef;t=t.parent;const a=n.nodeIndex+n.childCount;for(let r=0;r<=a;r++){const a=t.def.nodes[r];67108864&a.flags&&536870912&a.flags&&(a.query.filterId&e)===a.query.filterId&&Ff(t,r).setDirty(),!(1&a.flags&&r+a.childCount<n.nodeIndex)&&67108864&a.childFlags&&536870912&a.childFlags||(r+=a.childCount)}}if(134217728&t.def.nodeFlags)for(let n=0;n<t.def.nodes.length;n++){const e=t.def.nodes[n];134217728&e.flags&&536870912&e.flags&&Ff(t,n).setDirty(),n+=e.childCount}}function wv(t,e){const n=Ff(t,e.nodeIndex);if(!n.dirty)return;let a,r=void 0;if(67108864&e.flags){const n=e.parent.parent;r=Ov(t,n.nodeIndex,n.nodeIndex+n.childCount,e.query,[]),a=qf(t,e.parent.nodeIndex).instance}else 134217728&e.flags&&(r=Ov(t,0,t.def.nodes.length-1,e.query,[]),a=t.component);n.reset(r);const i=e.query.bindings;let s=!1;for(let u=0;u<i.length;u++){const t=i[u];let e;switch(t.bindingType){case 0:e=n.first;break;case 1:e=n,s=!0}a[t.propName]=e}s&&n.notifyOnChanges()}function Ov(t,e,n,a,r){for(let i=e;i<=n;i++){const e=t.def.nodes[i],n=e.matchedQueries[a.id];if(null!=n&&r.push(Sv(t,e,n)),1&e.flags&&e.element.template&&(e.element.template.nodeMatchedQueries&a.filterId)===a.filterId){const n=Mf(t,i);if((e.childMatchedQueries&a.filterId)===a.filterId&&(Ov(t,i+1,i+e.childCount,a,r),i+=e.childCount),16777216&e.flags){const t=n.viewContainer._embeddedViews;for(let e=0;e<t.length;e++){const i=t[e],s=th(i);s&&s===n&&Ov(i,0,i.def.nodes.length-1,a,r)}}const s=n.template._projectedViews;if(s)for(let t=0;t<s.length;t++){const e=s[t];Ov(e,0,e.def.nodes.length-1,a,r)}}(e.childMatchedQueries&a.filterId)!==a.filterId&&(i+=e.childCount)}return r}function Sv(t,e,n){if(null!=n)switch(n){case 1:return Mf(t,e.nodeIndex).renderElement;case 0:return new Kc(Mf(t,e.nodeIndex).renderElement);case 2:return Mf(t,e.nodeIndex).template;case 3:return Mf(t,e.nodeIndex).viewContainer;case 4:return qf(t,e.nodeIndex).instance}}function Iv(t,e){return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:-1,flags:8,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:t,childCount:0,bindings:[],bindingFlags:0,outputs:[],element:null,provider:null,text:null,query:null,ngContent:{index:e}}}function Nv(t,e,n){const a=oh(t,e,n);a&&hh(t,n.ngContent.index,1,a,null,void 0)}function Cv(t,e){return kv(128,t,new Array(e+1))}function Rv(t,e){return kv(32,t,new Array(e))}function Av(t,e){const n=Object.keys(e),a=n.length,r=new Array(a);for(let i=0;i<a;i++){const t=n[i];r[e[t]]=t}return kv(64,t,r)}function kv(t,e,n){const a=new Array(n.length);for(let r=0;r<n.length;r++){const t=n[r];a[r]={flags:8,name:t,ns:null,nonMinifiedName:t,securityContext:null,suffix:null}}return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:e,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:-1,childCount:0,bindings:a,bindingFlags:yh(a),outputs:[],element:null,provider:null,text:null,query:null,ngContent:null}}function Ev(t,e,n){const a=new Array(n.length-1);for(let r=1;r<n.length;r++)a[r-1]={flags:8,name:null,ns:null,nonMinifiedName:null,securityContext:null,suffix:n[r]};return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:2,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:e,childCount:0,bindings:a,bindingFlags:8,outputs:[],element:null,provider:null,text:{prefix:n[0]},query:null,ngContent:null}}function Lv(t,e,n){let a;const r=t.renderer;a=r.createText(n.text.prefix);const i=oh(t,e,n);return i&&r.appendChild(i,a),{renderText:a}}function Dv(t,e){return(null!=t?t.toString():"")+e.suffix}function Pv(t,e,n,a){let r=0,i=0,s=0,u=0,o=0,l=null,d=null,c=!1,f=!1,h=null;for(let g=0;g<e.length;g++){const t=e[g];if(t.nodeIndex=g,t.parent=l,t.bindingIndex=r,t.outputIndex=i,t.renderParent=d,s|=t.flags,o|=t.matchedQueryIds,t.element){const e=t.element;e.publicProviders=l?l.element.publicProviders:Object.create(null),e.allProviders=e.publicProviders,c=!1,f=!1,t.element.template&&(o|=t.element.template.nodeMatchedQueries)}if(qv(l,t,e.length),r+=t.bindings.length,i+=t.outputs.length,!d&&3&t.flags&&(h=t),20224&t.flags){c||(c=!0,l.element.publicProviders=Object.create(l.element.publicProviders),l.element.allProviders=l.element.publicProviders);const e=0!=(32768&t.flags);0==(8192&t.flags)||e?l.element.publicProviders[Yf(t.provider.token)]=t:(f||(f=!0,l.element.allProviders=Object.create(l.element.publicProviders)),l.element.allProviders[Yf(t.provider.token)]=t),e&&(l.element.componentProvider=t)}if(l?(l.childFlags|=t.flags,l.directChildFlags|=t.flags,l.childMatchedQueries|=t.matchedQueryIds,t.element&&t.element.template&&(l.childMatchedQueries|=t.element.template.nodeMatchedQueries)):u|=t.flags,t.childCount>0)l=t,Mv(t)||(d=t);else for(;l&&g===l.nodeIndex+l.childCount;){const t=l.parent;t&&(t.childFlags|=l.childFlags,t.childMatchedQueries|=l.childMatchedQueries),l=t,d=l&&Mv(l)?l.renderParent:l}}return{factory:null,nodeFlags:s,rootNodeFlags:u,nodeMatchedQueries:o,flags:t,nodes:e,updateDirectives:n||Bf,updateRenderer:a||Bf,handleEvent:(t,n,a,r)=>e[n].element.handleEvent(t,a,r),bindingCount:r,outputCount:i,lastRenderRootNode:h}}function Mv(t){return 0!=(1&t.flags)&&null===t.element.name}function qv(t,e,n){const a=e.element&&e.element.template;if(a){if(!a.lastRenderRootNode)throw new Error("Illegal State: Embedded templates without nodes are not allowed!");if(a.lastRenderRootNode&&16777216&a.lastRenderRootNode.flags)throw new Error(`Illegal State: Last root node of a template can't have embedded views, at index ${e.nodeIndex}!`)}if(20224&e.flags&&0==(1&(t?t.flags:0)))throw new Error(`Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index ${e.nodeIndex}!`);if(e.query){if(67108864&e.flags&&(!t||0==(16384&t.flags)))throw new Error(`Illegal State: Content Query nodes need to be children of directives, at index ${e.nodeIndex}!`);if(134217728&e.flags&&t)throw new Error(`Illegal State: View Query nodes have to be top level nodes, at index ${e.nodeIndex}!`)}if(e.childCount){const a=t?t.nodeIndex+t.childCount:n-1;if(e.nodeIndex<=a&&e.nodeIndex+e.childCount>a)throw new Error(`Illegal State: childCount of node leads outside of parent, at index ${e.nodeIndex}!`)}}function jv(t,e,n,a){const r=Gv(t.root,t.renderer,t,e,n);return Bv(r,t.component,a),zv(r),r}function Fv(t,e,n){const a=Gv(t,t.renderer,null,null,e);return Bv(a,n,n),zv(a),a}function Vv(t,e,n,a){const r=e.element.componentRendererType;let i;return i=r?t.root.rendererFactory.createRenderer(a,r):t.root.renderer,Gv(t.root,i,t,e.element.componentProvider,n)}function Gv(t,e,n,a,r){const i=new Array(r.nodes.length),s=r.outputCount?new Array(r.outputCount):null;return{def:r,parent:n,viewContainerParent:null,parentNodeDef:a,context:null,component:null,nodes:i,state:13,root:t,renderer:e,oldValues:new Array(r.bindingCount),disposables:s,initIndex:-1}}function Bv(t,e,n){t.component=e,t.context=n}function zv(t){let e;ah(t)&&(e=Mf(t.parent,t.parentNodeDef.parent.nodeIndex).renderElement);const n=t.def,a=t.nodes;for(let r=0;r<n.nodes.length;r++){const i=n.nodes[r];let s;switch(Gf.setCurrentNode(t,r),201347067&i.flags){case 1:const n=mv(t,e,i);let u=void 0;if(33554432&i.flags){const e=dh(i.element.componentView);u=Gf.createComponentView(t,i,e,n)}yv(t,u,i,n),s={renderElement:n,componentView:u,viewContainer:null,template:i.element.template?Yh(t,i):void 0},16777216&i.flags&&(s.viewContainer=Vh(t,i,s));break;case 2:s=Lv(t,e,i);break;case 512:case 1024:case 2048:case 256:s=a[r],s||4096&i.flags||(s={instance:cg(t,i)});break;case 16:s={instance:fg(t,i)};break;case 16384:s=a[r],s||(s={instance:hg(t,i)}),32768&i.flags&&Bv(Mf(t,i.parent.nodeIndex).componentView,s.instance,s.instance);break;case 32:case 64:case 128:s={value:void 0};break;case 67108864:case 134217728:s=new nb;break;case 8:Nv(t,e,i),s=void 0}a[r]=s}Qv(t,Zv.CreateViewNodes),nx(t,201326592,268435456,0)}function Yv(t){Wv(t),Gf.updateDirectives(t,1),Xv(t,Zv.CheckNoChanges),Gf.updateRenderer(t,1),Qv(t,Zv.CheckNoChanges),t.state&=-97}function Hv(t){1&t.state?(t.state&=-2,t.state|=2):t.state&=-3,Lf(t,0,256),Wv(t),Gf.updateDirectives(t,0),Xv(t,Zv.CheckAndUpdate),nx(t,67108864,536870912,0);let e=Lf(t,256,512);_g(t,2097152|(e?1048576:0)),Gf.updateRenderer(t,0),Qv(t,Zv.CheckAndUpdate),nx(t,134217728,536870912,0),e=Lf(t,512,768),_g(t,8388608|(e?4194304:0)),2&t.def.flags&&(t.state&=-9),t.state&=-97,Lf(t,768,1024)}function Uv(t,e,n,a,r,i,s,u,o,l,d,c,f){return 0===n?function(t,e,n,a,r,i,s,u,o,l,d,c){switch(201347067&e.flags){case 1:return function(t,e,n,a,r,i,s,u,o,l,d,c){const f=e.bindings.length;let h=!1;return f>0&&xv(t,e,0,n)&&(h=!0),f>1&&xv(t,e,1,a)&&(h=!0),f>2&&xv(t,e,2,r)&&(h=!0),f>3&&xv(t,e,3,i)&&(h=!0),f>4&&xv(t,e,4,s)&&(h=!0),f>5&&xv(t,e,5,u)&&(h=!0),f>6&&xv(t,e,6,o)&&(h=!0),f>7&&xv(t,e,7,l)&&(h=!0),f>8&&xv(t,e,8,d)&&(h=!0),f>9&&xv(t,e,9,c)&&(h=!0),h}(t,e,n,a,r,i,s,u,o,l,d,c);case 2:return function(t,e,n,a,r,i,s,u,o,l,d,c){let f=!1;const h=e.bindings,g=h.length;if(g>0&&$f(t,e,0,n)&&(f=!0),g>1&&$f(t,e,1,a)&&(f=!0),g>2&&$f(t,e,2,r)&&(f=!0),g>3&&$f(t,e,3,i)&&(f=!0),g>4&&$f(t,e,4,s)&&(f=!0),g>5&&$f(t,e,5,u)&&(f=!0),g>6&&$f(t,e,6,o)&&(f=!0),g>7&&$f(t,e,7,l)&&(f=!0),g>8&&$f(t,e,8,d)&&(f=!0),g>9&&$f(t,e,9,c)&&(f=!0),f){let f=e.text.prefix;g>0&&(f+=Dv(n,h[0])),g>1&&(f+=Dv(a,h[1])),g>2&&(f+=Dv(r,h[2])),g>3&&(f+=Dv(i,h[3])),g>4&&(f+=Dv(s,h[4])),g>5&&(f+=Dv(u,h[5])),g>6&&(f+=Dv(o,h[6])),g>7&&(f+=Dv(l,h[7])),g>8&&(f+=Dv(d,h[8])),g>9&&(f+=Dv(c,h[9]));const p=Pf(t,e.nodeIndex).renderText;t.renderer.setValue(p,f)}return f}(t,e,n,a,r,i,s,u,o,l,d,c);case 16384:return function(t,e,n,a,r,i,s,u,o,l,d,c){const f=qf(t,e.nodeIndex),h=f.instance;let g=!1,p=void 0;const b=e.bindings.length;return b>0&&Kf(t,e,0,n)&&(g=!0,p=xg(t,f,e,0,n,p)),b>1&&Kf(t,e,1,a)&&(g=!0,p=xg(t,f,e,1,a,p)),b>2&&Kf(t,e,2,r)&&(g=!0,p=xg(t,f,e,2,r,p)),b>3&&Kf(t,e,3,i)&&(g=!0,p=xg(t,f,e,3,i,p)),b>4&&Kf(t,e,4,s)&&(g=!0,p=xg(t,f,e,4,s,p)),b>5&&Kf(t,e,5,u)&&(g=!0,p=xg(t,f,e,5,u,p)),b>6&&Kf(t,e,6,o)&&(g=!0,p=xg(t,f,e,6,o,p)),b>7&&Kf(t,e,7,l)&&(g=!0,p=xg(t,f,e,7,l,p)),b>8&&Kf(t,e,8,d)&&(g=!0,p=xg(t,f,e,8,d,p)),b>9&&Kf(t,e,9,c)&&(g=!0,p=xg(t,f,e,9,c,p)),p&&h.ngOnChanges(p),65536&e.flags&&Df(t,256,e.nodeIndex)&&h.ngOnInit(),262144&e.flags&&h.ngDoCheck(),g}(t,e,n,a,r,i,s,u,o,l,d,c);case 32:case 64:case 128:return function(t,e,n,a,r,i,s,u,o,l,d,c){const f=e.bindings;let h=!1;const g=f.length;if(g>0&&$f(t,e,0,n)&&(h=!0),g>1&&$f(t,e,1,a)&&(h=!0),g>2&&$f(t,e,2,r)&&(h=!0),g>3&&$f(t,e,3,i)&&(h=!0),g>4&&$f(t,e,4,s)&&(h=!0),g>5&&$f(t,e,5,u)&&(h=!0),g>6&&$f(t,e,6,o)&&(h=!0),g>7&&$f(t,e,7,l)&&(h=!0),g>8&&$f(t,e,8,d)&&(h=!0),g>9&&$f(t,e,9,c)&&(h=!0),h){const h=jf(t,e.nodeIndex);let p;switch(201347067&e.flags){case 32:p=new Array(f.length),g>0&&(p[0]=n),g>1&&(p[1]=a),g>2&&(p[2]=r),g>3&&(p[3]=i),g>4&&(p[4]=s),g>5&&(p[5]=u),g>6&&(p[6]=o),g>7&&(p[7]=l),g>8&&(p[8]=d),g>9&&(p[9]=c);break;case 64:p={},g>0&&(p[f[0].name]=n),g>1&&(p[f[1].name]=a),g>2&&(p[f[2].name]=r),g>3&&(p[f[3].name]=i),g>4&&(p[f[4].name]=s),g>5&&(p[f[5].name]=u),g>6&&(p[f[6].name]=o),g>7&&(p[f[7].name]=l),g>8&&(p[f[8].name]=d),g>9&&(p[f[9].name]=c);break;case 128:const t=n;switch(g){case 1:p=t.transform(n);break;case 2:p=t.transform(a);break;case 3:p=t.transform(a,r);break;case 4:p=t.transform(a,r,i);break;case 5:p=t.transform(a,r,i,s);break;case 6:p=t.transform(a,r,i,s,u);break;case 7:p=t.transform(a,r,i,s,u,o);break;case 8:p=t.transform(a,r,i,s,u,o,l);break;case 9:p=t.transform(a,r,i,s,u,o,l,d);break;case 10:p=t.transform(a,r,i,s,u,o,l,d,c)}}h.value=p}return h}(t,e,n,a,r,i,s,u,o,l,d,c);default:throw"unreachable"}}(t,e,a,r,i,s,u,o,l,d,c,f):function(t,e,n){switch(201347067&e.flags){case 1:return function(t,e,n){let a=!1;for(let r=0;r<n.length;r++)xv(t,e,r,n[r])&&(a=!0);return a}(t,e,n);case 2:return function(t,e,n){const a=e.bindings;let r=!1;for(let i=0;i<n.length;i++)$f(t,e,i,n[i])&&(r=!0);if(r){let r="";for(let t=0;t<n.length;t++)r+=Dv(n[t],a[t]);r=e.text.prefix+r;const i=Pf(t,e.nodeIndex).renderText;t.renderer.setValue(i,r)}return r}(t,e,n);case 16384:return function(t,e,n){const a=qf(t,e.nodeIndex),r=a.instance;let i=!1,s=void 0;for(let u=0;u<n.length;u++)Kf(t,e,u,n[u])&&(i=!0,s=xg(t,a,e,u,n[u],s));return s&&r.ngOnChanges(s),65536&e.flags&&Df(t,256,e.nodeIndex)&&r.ngOnInit(),262144&e.flags&&r.ngDoCheck(),i}(t,e,n);case 32:case 64:case 128:return function(t,e,n){const a=e.bindings;let r=!1;for(let i=0;i<n.length;i++)$f(t,e,i,n[i])&&(r=!0);if(r){const r=jf(t,e.nodeIndex);let i;switch(201347067&e.flags){case 32:i=n;break;case 64:i={};for(let r=0;r<n.length;r++)i[a[r].name]=n[r];break;case 128:const t=n[0],e=n.slice(1);i=t.transform(...e)}r.value=i}return r}(t,e,n);default:throw"unreachable"}}(t,e,a)}function Wv(t){const e=t.def;if(4&e.nodeFlags)for(let n=0;n<e.nodes.length;n++){const a=e.nodes[n];if(4&a.flags){const e=Mf(t,n).template._projectedViews;if(e)for(let n=0;n<e.length;n++){const a=e[n];a.state|=32,Qf(a,t)}}else 0==(4&a.childFlags)&&(n+=a.childCount)}}function Kv(t,e,n,a,r,i,s,u,o,l,d,c,f){return 0===n?function(t,e,n,a,r,i,s,u,o,l,d,c){const f=e.bindings.length;f>0&&Jf(t,e,0,n),f>1&&Jf(t,e,1,a),f>2&&Jf(t,e,2,r),f>3&&Jf(t,e,3,i),f>4&&Jf(t,e,4,s),f>5&&Jf(t,e,5,u),f>6&&Jf(t,e,6,o),f>7&&Jf(t,e,7,l),f>8&&Jf(t,e,8,d),f>9&&Jf(t,e,9,c)}(t,e,a,r,i,s,u,o,l,d,c,f):function(t,e,n){for(let a=0;a<n.length;a++)Jf(t,e,a,n[a])}(t,e,a),!1}function $v(t,e){if(Ff(t,e.nodeIndex).dirty)throw Af(Gf.createDebugContext(t,e.nodeIndex),`Query ${e.query.id} not dirty`,`Query ${e.query.id} dirty`,0!=(1&t.state))}function Jv(t){if(!(128&t.state)){if(Xv(t,Zv.Destroy),Qv(t,Zv.Destroy),_g(t,131072),t.disposables)for(let e=0;e<t.disposables.length;e++)t.disposables[e]();!function(t){if(!(16&t.state))return;const e=th(t);if(e){const n=e.template._projectedViews;n&&(yt(n,n.indexOf(t)),Gf.dirtyParentQueries(t))}}(t),t.renderer.destroyNode&&function(t){const e=t.def.nodes.length;for(let n=0;n<e;n++){const e=t.def.nodes[n];1&e.flags?t.renderer.destroyNode(Mf(t,n).renderElement):2&e.flags?t.renderer.destroyNode(Pf(t,n).renderText):(67108864&e.flags||134217728&e.flags)&&Ff(t,n).destroy()}}(t),ah(t)&&t.renderer.destroy(),t.state|=128}}const Zv=function(){var t={CreateViewNodes:0,CheckNoChanges:1,CheckNoChangesProjectedViews:2,CheckAndUpdate:3,CheckAndUpdateProjectedViews:4,Destroy:5};return t[t.CreateViewNodes]="CreateViewNodes",t[t.CheckNoChanges]="CheckNoChanges",t[t.CheckNoChangesProjectedViews]="CheckNoChangesProjectedViews",t[t.CheckAndUpdate]="CheckAndUpdate",t[t.CheckAndUpdateProjectedViews]="CheckAndUpdateProjectedViews",t[t.Destroy]="Destroy",t}();function Qv(t,e){const n=t.def;if(33554432&n.nodeFlags)for(let a=0;a<n.nodes.length;a++){const r=n.nodes[a];33554432&r.flags?tx(Mf(t,a).componentView,e):0==(33554432&r.childFlags)&&(a+=r.childCount)}}function Xv(t,e){const n=t.def;if(16777216&n.nodeFlags)for(let a=0;a<n.nodes.length;a++){const r=n.nodes[a];if(16777216&r.flags){const n=Mf(t,a).viewContainer._embeddedViews;for(let t=0;t<n.length;t++)tx(n[t],e)}else 0==(16777216&r.childFlags)&&(a+=r.childCount)}}function tx(t,e){const n=t.state;switch(e){case Zv.CheckNoChanges:0==(128&n)&&(12==(12&n)?Yv(t):64&n&&ex(t,Zv.CheckNoChangesProjectedViews));break;case Zv.CheckNoChangesProjectedViews:0==(128&n)&&(32&n?Yv(t):64&n&&ex(t,e));break;case Zv.CheckAndUpdate:0==(128&n)&&(12==(12&n)?Hv(t):64&n&&ex(t,Zv.CheckAndUpdateProjectedViews));break;case Zv.CheckAndUpdateProjectedViews:0==(128&n)&&(32&n?Hv(t):64&n&&ex(t,e));break;case Zv.Destroy:Jv(t);break;case Zv.CreateViewNodes:zv(t)}}function ex(t,e){Xv(t,e),Qv(t,e)}function nx(t,e,n,a){if(!(t.def.nodeFlags&e&&t.def.nodeFlags&n))return;const r=t.def.nodes.length;for(let i=0;i<r;i++){const r=t.def.nodes[i];if(r.flags&e&&r.flags&n)switch(Gf.setCurrentNode(t,r.nodeIndex),a){case 0:wv(t,r);break;case 1:$v(t,r)}r.childFlags&e&&r.childFlags&n||(i+=r.childCount)}}let ax=!1;function rx(){if(ax)return;ax=!0;const t=Wa()?{setCurrentNode:Nx,createRootView:sx,createEmbeddedView:ox,createComponentView:lx,createNgModuleRef:dx,overrideProvider:gx,overrideComponentView:px,clearOverrides:bx,checkAndUpdateView:xx,checkNoChangesView:_x,destroyView:Tx,createDebugContext:(t,e)=>new Px(t,e),handleEvent:Cx,updateDirectives:Rx,updateRenderer:Ax}:{setCurrentNode:()=>{},createRootView:ix,createEmbeddedView:jv,createComponentView:Vv,createNgModuleRef:Zh,overrideProvider:Bf,overrideComponentView:Bf,clearOverrides:Bf,checkAndUpdateView:Hv,checkNoChangesView:Yv,destroyView:Jv,createDebugContext:(t,e)=>new Px(t,e),handleEvent:(t,e,n,a)=>t.def.handleEvent(t,e,n,a),updateDirectives:(t,e)=>t.def.updateDirectives(0===e?yx:vx,t),updateRenderer:(t,e)=>t.def.updateRenderer(0===e?yx:vx,t)};Gf.setCurrentNode=t.setCurrentNode,Gf.createRootView=t.createRootView,Gf.createEmbeddedView=t.createEmbeddedView,Gf.createComponentView=t.createComponentView,Gf.createNgModuleRef=t.createNgModuleRef,Gf.overrideProvider=t.overrideProvider,Gf.overrideComponentView=t.overrideComponentView,Gf.clearOverrides=t.clearOverrides,Gf.checkAndUpdateView=t.checkAndUpdateView,Gf.checkNoChangesView=t.checkNoChangesView,Gf.destroyView=t.destroyView,Gf.resolveDep=yg,Gf.createDebugContext=t.createDebugContext,Gf.handleEvent=t.handleEvent,Gf.updateDirectives=t.updateDirectives,Gf.updateRenderer=t.updateRenderer,Gf.dirtyParentQueries=Tv}function ix(t,e,n,a,r,i){const s=r.injector.get(ef);return Fv(ux(t,r,s,e,n),a,i)}function sx(t,e,n,a,r,i){const s=r.injector.get(ef),u=ux(t,r,new Fx(s),e,n),o=mx(a);return qx(wx.create,Fv,null,[u,o,i])}function ux(t,e,n,a,r){const i=e.injector.get(vr),s=e.injector.get(Da),u=n.createRenderer(null,null);return{ngModule:e,injector:t,projectableNodes:a,selectorOrNode:r,sanitizer:i,rendererFactory:n,renderer:u,errorHandler:s}}function ox(t,e,n,a){const r=mx(n);return qx(wx.create,jv,null,[t,e,r,a])}function lx(t,e,n,a){return n=hx.get(e.element.componentProvider.provider.token)||mx(n),qx(wx.create,Vv,null,[t,e,n,a])}function dx(t,e,n,a){return Zh(t,e,n,function(t){const{hasOverrides:e,hasDeprecatedOverrides:n}=function(t){let e=!1,n=!1;return 0===cx.size||(t.providers.forEach(t=>{const a=cx.get(t.token);3840&t.flags&&a&&(e=!0,n=n||a.deprecatedBehavior)}),t.modules.forEach(t=>{fx.forEach((a,r)=>{D(r).providedIn===t&&(e=!0,n=n||a.deprecatedBehavior)})})),{hasOverrides:e,hasDeprecatedOverrides:n}}(t);return e?(function(t){for(let e=0;e<t.providers.length;e++){const a=t.providers[e];n&&(a.flags|=4096);const r=cx.get(a.token);r&&(a.flags=-3841&a.flags|r.flags,a.deps=uh(r.deps),a.value=r.value)}if(fx.size>0){let e=new Set(t.modules);fx.forEach((a,r)=>{if(e.has(D(r).providedIn)){let e={token:r,flags:a.flags|(n?4096:0),deps:uh(a.deps),value:a.value,index:t.providers.length};t.providers.push(e),t.providersByKey[Yf(r)]=e}})}}(t=t.factory(()=>Bf)),t):t}(a))}const cx=new Map,fx=new Map,hx=new Map;function gx(t){let e;cx.set(t.token,t),"function"==typeof t.token&&(e=D(t.token))&&"function"==typeof e.providedIn&&fx.set(t.token,t)}function px(t,e){const n=dh(qh(e)),a=dh(n.nodes[0].element.componentView);hx.set(t,a)}function bx(){cx.clear(),fx.clear(),hx.clear()}function mx(t){if(0===cx.size)return t;const e=function(t){const e=[];let n=null;for(let a=0;a<t.nodes.length;a++){const r=t.nodes[a];1&r.flags&&(n=r),n&&3840&r.flags&&cx.has(r.provider.token)&&(e.push(n.nodeIndex),n=null)}return e}(t);if(0===e.length)return t;t=t.factory(()=>Bf);for(let a=0;a<e.length;a++)n(t,e[a]);return t;function n(t,e){for(let n=e+1;n<t.nodes.length;n++){const e=t.nodes[n];if(1&e.flags)return;if(3840&e.flags){const t=e.provider,n=cx.get(t.token);n&&(e.flags=-3841&e.flags|n.flags,t.deps=uh(n.deps),t.value=n.value)}}}}function yx(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=t.def.nodes[e];return Uv(t,h,n,a,r,i,s,u,o,l,d,c,f),224&h.flags?jf(t,e).value:void 0}function vx(t,e,n,a,r,i,s,u,o,l,d,c,f){const h=t.def.nodes[e];return Kv(t,h,n,a,r,i,s,u,o,l,d,c,f),224&h.flags?jf(t,e).value:void 0}function xx(t){return qx(wx.detectChanges,Hv,null,[t])}function _x(t){return qx(wx.checkNoChanges,Yv,null,[t])}function Tx(t){return qx(wx.destroy,Jv,null,[t])}const wx=function(){var t={create:0,detectChanges:1,checkNoChanges:2,destroy:3,handleEvent:4};return t[t.create]="create",t[t.detectChanges]="detectChanges",t[t.checkNoChanges]="checkNoChanges",t[t.destroy]="destroy",t[t.handleEvent]="handleEvent",t}();let Ox,Sx,Ix;function Nx(t,e){Sx=t,Ix=e}function Cx(t,e,n,a){return Nx(t,e),qx(wx.handleEvent,t.def.handleEvent,null,[t,e,n,a])}function Rx(t,e){if(128&t.state)throw Ef(wx[Ox]);return Nx(t,Lx(t,0)),t.def.updateDirectives((function(t,n,a,...r){const i=t.def.nodes[n];return 0===e?kx(t,i,a,r):Ex(t,i,a,r),16384&i.flags&&Nx(t,Lx(t,n)),224&i.flags?jf(t,i.nodeIndex).value:void 0}),t)}function Ax(t,e){if(128&t.state)throw Ef(wx[Ox]);return Nx(t,Dx(t,0)),t.def.updateRenderer((function(t,n,a,...r){const i=t.def.nodes[n];return 0===e?kx(t,i,a,r):Ex(t,i,a,r),3&i.flags&&Nx(t,Dx(t,n)),224&i.flags?jf(t,i.nodeIndex).value:void 0}),t)}function kx(t,e,n,a){if(Uv(t,e,n,...a)){const i=1===n?a[0]:a;if(16384&e.flags){const n={};for(let t=0;t<e.bindings.length;t++){const a=e.bindings[t],s=i[t];8&a.flags&&(n[(r=a.nonMinifiedName,"ng-reflect-"+r.replace(/[$@]/g,"_").replace(Er,(...t)=>"-"+t[1].toLowerCase()))]=Lr(s))}const a=e.parent,s=Mf(t,a.nodeIndex).renderElement;if(a.element.name)for(let e in n){const a=n[e];null!=a?t.renderer.setAttribute(s,e,a):t.renderer.removeAttribute(s,e)}else t.renderer.setValue(s,"bindings="+JSON.stringify(n,null,2))}}var r}function Ex(t,e,n,a){Kv(t,e,n,...a)}function Lx(t,e){for(let n=e;n<t.def.nodes.length;n++){const e=t.def.nodes[n];if(16384&e.flags&&e.bindings&&e.bindings.length)return n}return null}function Dx(t,e){for(let n=e;n<t.def.nodes.length;n++){const e=t.def.nodes[n];if(3&e.flags&&e.bindings&&e.bindings.length)return n}return null}class Px{constructor(t,e){this.view=t,this.nodeIndex=e,null==e&&(this.nodeIndex=e=0),this.nodeDef=t.def.nodes[e];let n=this.nodeDef,a=t;for(;n&&0==(1&n.flags);)n=n.parent;if(!n)for(;!n&&a;)n=eh(a),a=a.parent;this.elDef=n,this.elView=a}get elOrCompView(){return Mf(this.elView,this.elDef.nodeIndex).componentView||this.view}get injector(){return Uh(this.elView,this.elDef)}get component(){return this.elOrCompView.component}get context(){return this.elOrCompView.context}get providerTokens(){const t=[];if(this.elDef)for(let e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){const n=this.elView.def.nodes[e];20224&n.flags&&t.push(n.provider.token),e+=n.childCount}return t}get references(){const t={};if(this.elDef){Mx(this.elView,this.elDef,t);for(let e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){const n=this.elView.def.nodes[e];20224&n.flags&&Mx(this.elView,n,t),e+=n.childCount}}return t}get componentRenderElement(){const t=function(t){for(;t&&!ah(t);)t=t.parent;return t.parent?Mf(t.parent,eh(t).nodeIndex):null}(this.elOrCompView);return t?t.renderElement:void 0}get renderNode(){return 2&this.nodeDef.flags?nh(this.view,this.nodeDef):nh(this.elView,this.elDef)}logError(t,...e){let n,a;2&this.nodeDef.flags?(n=this.view.def,a=this.nodeDef.nodeIndex):(n=this.elView.def,a=this.elDef.nodeIndex);const r=function(t,e){let n=-1;for(let a=0;a<=e;a++)3&t.nodes[a].flags&&n++;return n}(n,a);let i=-1;n.factory(()=>(i++,i===r?t.error.bind(t,...e):Bf)),i<r&&(t.error("Illegal state: the ViewDefinitionFactory did not call the logger!"),t.error(...e))}}function Mx(t,e,n){for(let a in e.references)n[a]=Sv(t,e,e.references[a])}function qx(t,e,n,a){const r=Ox,i=Sx,s=Ix;try{Ox=t;const u=e.apply(n,a);return Sx=i,Ix=s,Ox=r,u}catch(u){if(ka(u)||!Sx)throw u;throw function(t,e){return t instanceof Error||(t=new Error(t.toString())),kf(t,e),t}(u,jx())}}function jx(){return Sx?new Px(Sx,Ix):null}class Fx{constructor(t){this.delegate=t}createRenderer(t,e){return new Vx(this.delegate.createRenderer(t,e))}begin(){this.delegate.begin&&this.delegate.begin()}end(){this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.delegate.whenRenderingDone?this.delegate.whenRenderingDone():Promise.resolve(null)}}class Vx{constructor(t){this.delegate=t,this.debugContextFactory=jx,this.data=this.delegate.data}createDebugContext(t){return this.debugContextFactory(t)}destroyNode(t){const e=rv(t);!function(t){nv.delete(t.nativeNode)}(e),e instanceof Uy&&(e.listeners.length=0),this.delegate.destroyNode&&this.delegate.destroyNode(t)}destroy(){this.delegate.destroy()}createElement(t,e){const n=this.delegate.createElement(t,e),a=this.createDebugContext(n);if(a){const e=new Wy(n,null,a);e.name=t,iv(e)}return n}createComment(t){const e=this.delegate.createComment(t),n=this.createDebugContext(e);return n&&iv(new Uy(e,null,n)),e}createText(t){const e=this.delegate.createText(t),n=this.createDebugContext(e);return n&&iv(new Uy(e,null,n)),e}appendChild(t,e){const n=rv(t),a=rv(e);n&&a&&n instanceof Wy&&n.addChild(a),this.delegate.appendChild(t,e)}insertBefore(t,e,n){const a=rv(t),r=rv(e),i=rv(n);a&&r&&a instanceof Wy&&a.insertBefore(i,r),this.delegate.insertBefore(t,e,n)}removeChild(t,e){const n=rv(t),a=rv(e);n&&a&&n instanceof Wy&&n.removeChild(a),this.delegate.removeChild(t,e)}selectRootElement(t,e){const n=this.delegate.selectRootElement(t,e),a=jx();return a&&iv(new Wy(n,null,a)),n}setAttribute(t,e,n,a){const r=rv(t);r&&r instanceof Wy&&(r.attributes[a?a+":"+e:e]=n),this.delegate.setAttribute(t,e,n,a)}removeAttribute(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.attributes[n?n+":"+e:e]=null),this.delegate.removeAttribute(t,e,n)}addClass(t,e){const n=rv(t);n&&n instanceof Wy&&(n.classes[e]=!0),this.delegate.addClass(t,e)}removeClass(t,e){const n=rv(t);n&&n instanceof Wy&&(n.classes[e]=!1),this.delegate.removeClass(t,e)}setStyle(t,e,n,a){const r=rv(t);r&&r instanceof Wy&&(r.styles[e]=n),this.delegate.setStyle(t,e,n,a)}removeStyle(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.styles[e]=null),this.delegate.removeStyle(t,e,n)}setProperty(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.properties[e]=n),this.delegate.setProperty(t,e,n)}listen(t,e,n){if("string"!=typeof t){const a=rv(t);a&&a.listeners.push(new Hy(e,n))}return this.delegate.listen(t,e,n)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setValue(t,e){return this.delegate.setValue(t,e)}}function Gx(t){return rx(),Gf.overrideProvider(t)}function Bx(t,e){return rx(),Gf.overrideComponentView(t,e)}function zx(){return rx(),Gf.clearOverrides()}function Yx(t,e,n){return new Hx(t,e,n)}class Hx extends ht{constructor(t,e,n){super(),this.moduleType=t,this._bootstrapComponents=e,this._ngModuleDefFactory=n}create(t){rx();const e=function(t){const e=Array.from(t.providers),n=Array.from(t.modules),a={};for(const r in t.providersByKey)a[r]=t.providersByKey[r];return{factory:t.factory,isRoot:t.isRoot,providers:e,modules:n,providersByKey:a}}(dh(this._ngModuleDefFactory));return Gf.createNgModuleRef(this.moduleType,t||Bu.NULL,this._bootstrapComponents,e)}}},"8YOa":function(t,e,n){var a=n("I+eb"),r=n("4zBA"),i=n("0BK2"),s=n("hh1v"),u=n("Gi26"),o=n("m/L8").f,l=n("JBy8"),d=n("BX/b"),c=n("T63f"),f=n("kOOl"),h=n("uy83"),g=!1,p=f("meta"),b=0,m=function(t){o(t,p,{value:{objectID:"O"+b++,weakData:{}}})},y=t.exports={enable:function(){y.enable=function(){},g=!0;var t=l.f,e=r([].splice),n={};n[p]=1,t(n).length&&(l.f=function(n){for(var a=t(n),r=0,i=a.length;r<i;r++)if(a[r]===p){e(a,r,1);break}return a},a({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:d.f}))},fastKey:function(t,e){if(!s(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!u(t,p)){if(!c(t))return"F";if(!e)return"E";m(t)}return t[p].objectID},getWeakData:function(t,e){if(!u(t,p)){if(!c(t))return!0;if(!e)return!1;m(t)}return t[p].weakData},onFreeze:function(t){return h&&g&&c(t)&&!u(t,p)&&m(t),t}};i[p]=!0},"8a/S":function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},"8j5A":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="it-IT">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Attiva/Disattiva barra di navigazione</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dashboard</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servizi</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configurazione</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mappa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Moduli Manager</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Log</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blocco</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Immagini</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Esecuzione della copia speculare</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI </target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>File system</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Utenti</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartimenti</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Selezionare una lingua</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Caricamento pannello dati in corso...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Selezione ora di Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Impostazioni di ripristino</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Indietro</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Non è stato possibile caricare i dati.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>selezionato</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>trovato</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>totale</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descrizione</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descrizione lunga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Default</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Default del daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valori</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Salva</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visualizzatore mappa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Caricamento in corso...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Questo campo è obbligatorio.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sì.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annulla</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Chiudi</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Elenco degli host</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Prestazioni complessive</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nessuna voce trovata</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Log dei cluster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Log delle revisioni</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Caricamento della configurazione in corso...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Impossibile caricare la configurazione.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Modifica modulo Manager</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Il valore immesso non è un UUID valido, ad es.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Il valore immesso deve essere un indirizzo IP valido.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Il valore immesso deve essere un numero.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Il valore immesso deve essere un numero o un decimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aggiorna</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID cluster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>mappa mon modificata</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>epoca mappa mon</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con richiesta</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon richiesto</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Nel quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Non nel quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Aggiungi</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funzioni</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD in tutto il cluster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Invia</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzate...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorità di recupero OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorità</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizza valori di priorità</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Questo campo è obbligatorio.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Il valore deve essere compreso tra 0 e 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ripesa</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Elenco degli OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valore</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifica</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Elimina</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiche</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Client</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Può accedere qualsiasi client</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Indirizzi</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obbligatorio</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Deve contenere uno o più valori delimitati da virgole</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Ad esempio:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo di accesso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Esegui squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Aggiungi client</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Nessun cluster disponibile --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Selezionare il cluster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Aggiungi daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend di storage</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Nessun pool di dati disponibile --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Selezionare il backend di storage --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Utente Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Nessun utente disponibile --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selezionare l\'utente Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID utente CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Nessun client disponibile --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Selezionare il client Cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nome CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etichetta di sicurezza</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Abilita etichetta di sicurezza</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Percorso CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Il percorso deve iniziare con una barra \'/\' e può essere seguito da una parola</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Viene creata la nuova directory</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Percorso</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Il percorso può essere solo una singola barra \'/\' o parola</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Viene creato il nuovo compartimento</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocollo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>I client non possono montare le sottodirectory (ad es. se Tag = foo, il client non può montare foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Utilizzando diverse opzioni Tag, è possibile esportare più volte lo stesso percorso.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Utilizzando diverse opzioni Pseudo, è possibile esportare più volte lo stesso percorso.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Nessun tipo di accesso disponibile --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Selezionare il tipo di accesso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Nessuno squash disponibile --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>--Selezionare il tipo di squash dell\'ID utente da eseguire --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocollo di trasporto</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Benvenuto in Ceph.</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nome utente necessario</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Password richiesta</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Login</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Spiacenti, l\'utente non esiste in Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Non consentito</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Spiacenti, non è consentito visualizzare ciò che si stava cercando.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configurazione RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Rimuovere il valore della configurazione locale. Al suo posto verrà ereditato e utilizzato il valore della configurazione superiore.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Il valore minimo è 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Elenco dei pool</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Il nome può contenere solo caratteri alfanumerici, trattini e caratteri di sottolineatura.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Il nome del profilo del codice di cancellazione selezionato è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Porzioni di dati (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Deve essere uguale o maggiore di 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Porzioni di codice (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Deve essere uguale o maggiore di 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Stima durata (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Località (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dominio di errore Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Località Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nessuno</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Tecnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Dimensione del pacchetto</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Radice Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe dispositivo Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>qualsiasi</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Directory</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nome...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Il nome del pool Ceph scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo di pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Selezionare un tipo di pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Gruppi di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>È necessario almeno un gruppo di posizionamento.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Il cluster non può gestire questo numero eccessivo di gruppi di posizionamento. Ricalcolare il numero di gruppi di posizionamento necessari.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Guida per il calcolo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Dimensioni replicate</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flag</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sovrascritture EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Applicazioni</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profilo del codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Nessun profilo del codice di cancellazione disponibile --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Selezionare un profilo del codice di cancellazione --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Set di regole Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selezionare una regola Crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regola Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Passaggi Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compressione</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modalità</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Nessun algoritmo di compressione della cancellazione disponibile --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Dimensioni minime del blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>ad es. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Il valore deve essere maggiore di 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Dimensioni massime del blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>ad es. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Il valore deve essere maggiore delle dimensioni minime del blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rapporto</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rapporto di compressione</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Il valore deve essere compreso tra 0,0 e 1,0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ad es. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Dettagli</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Dettagli sulle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Dettagli livelli cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Sposta un\'immagine nel cestino</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protezione scade alle</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NON PROTETTO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato data errato. Utilizzare "AAAA-MM-GG HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protezione è già scaduta. Selezionare una data futura o lasciarla vuota.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Sposta immagine</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Panoramica</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinazioni</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticazione rilevazione</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utente</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e\n              possono contenere solo lettere, \'.\', \'@\', \'-\', \'_\' o \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Password</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Utente reciproco</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Password reciproca</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informazioni disponibili:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinazioni iSCSI non disponibili</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool di dati</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Creato</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Dimensioni</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Oggetti</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Dimensioni oggetto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Soggetto al provisioning</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/D</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Totale soggetto al provisioning</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unità di striping</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Conteggio di striping</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Superiore</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefisso nome blocco</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Ordine</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshot</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Immagine</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Questa impostazione sostituisce il valore globale</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globale</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Questo è il valore globale. Nessun valore di opzione è stato impostato per questa immagine.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' non sono consentiti.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Nessun pool rbd disponibile --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Selezionare un pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utilizza un pool di dati dedicato</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool di dati</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool dedicato che archivia i dati oggetto dell\'RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>È necessario aumentare le dimensioni.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanzate</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Striping</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unità di striping</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selezionare l\'unità di striping --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Questo campo è obbligatorio perché è specificato il numero di striping.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>L\'unità di striping è maggiore delle dimensioni dell\'oggetto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Numero di striping</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Questo campo è obbligatorio perché è specificata l\'unità di striping.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Il numero di striping deve essere maggiore di 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Si sta per eseguire il rollback</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Elimina definitivamente contenuto del cestino</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tutto</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nome pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Ripristina immagine</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Per ripristinare,</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>digitare il nuovo nome dell\'immagine e fare clic su</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nuovo nome</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Scaduto alle</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protetto fino alle</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Di solito non è necessario modificare questi parametri rispetto ai valori di default.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Impostazioni</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Conferma</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Impostazioni avanzate</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN di destinazione</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN contiene un modello errato.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Ad esempio: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Ulteriori informazioni</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Questa destinazione contiene impostazioni avanzate modificate.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portali</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Aggiungi portale</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Questa immagine contiene impostazioni modificate.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Aggiungi immagine</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticazione ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniziatori</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniziatore</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN client</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>L\'IQN dell\'iniziatore deve essere univoco.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e\n                        possono contenere solo lettere, \'.\', \'@\', \'-\', \'_\' o \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'iniziatore appartiene a un gruppo. Le immagini verranno configurate nel gruppo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nessun elemento aggiunto.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Aggiungi iniziatore</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Gruppi</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Gruppo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Aggiungi gruppo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Cestino</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemi</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizzazione in corso</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Pronto</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Modifica modalità speculare per il pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>È necessario rimuovere i cluster peer prima di disabilitare la copia speculare.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nome cluster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Il nome del cluster non è valido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>L\'ID CephX non è valido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Indirizzi dei monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Indirizzi con valori delimitati da virgole...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>L\'indirizzo del monitor non è valido.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Chiave CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Chiave con codifica Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La chiave CephX deve essere con codifica Base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contatori delle prestazioni non disponibili</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Elenco dei daemon</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contatori delle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Caricamento dati compartimento in corso...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Il valore non è valido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Il nome scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Proprietario</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selezionare un utente --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Abilitato</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo di indice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regola di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Contrassegno</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Contrassegno massimo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versione</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versione master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Ora di modifica</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Gruppo di zone</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota compartimenti</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Dimensioni massime</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Illimitato</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Numero massimo di oggetti</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome utente</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selezionare un nome utente --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Generazione automatica chiave</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Chiave di accesso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Chiave segreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nome completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Indirizzo e-mail</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Sospeso</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Numero massimo di compartimenti</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Sottoutenti</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacità</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Quota utenti</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostra</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chiavi</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Selezionare un tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Autorizzazione</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selezionare un\'autorizzazione --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Sottoutente</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>L\'ID del sottoutente scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lettura, scrittura</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pieno</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Chiave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Generazione automatica segreto</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Caricamento dati utente in corso...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Impossibile caricare i dati utente.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>L\'ID utente scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Non è un indirizzo e-mail valido.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>L\'indirizzo e-mail scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Numero max. di compartimenti</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Disabilitato</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizzato</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chiave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Non esistono sottoutenti.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Non esistono chiavi.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Non esistono capacità.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Dimensioni illimitate</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Dimensione max.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Oggetti illimitati</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Numero max. di oggetti</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Il valore immesso deve essere &gt;= a 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descrizione...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Autorizzazioni</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Ruoli</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Conferma password</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>La password di conferma non corrisponde alla password.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>E-mail non valida.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Si stanno per rimuovere le autorizzazioni di "lettura/aggiornamento utente" dal proprio utente.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Se si continua, non è più possibile aggiungere o rimuovere ruoli da qualsiasi utente.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Continuare?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Guida</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentazione</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Informazioni su</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Impostazioni del dashboard</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestione utenti</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Utente connesso</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Disconnetti</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attributi (mappa OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadati non disponibili</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadati</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contatore delle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Scritture</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Letture</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Istogramma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valori attuali</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origine</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Livello</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Può essere aggiornato al runtime (modificabile)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tag</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valori di enumerazione</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Vedere anche</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Stato del cluster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manager Daemon</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Server di metadati</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI Gateway</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS client</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Velocità effettiva client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lettura/scrittura client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Velocità effettiva di recupero</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Pulitura</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Prestazioni</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacità di base</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Gruppi di posizionamento per OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stato gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacità</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Classificazioni</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Attuale</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticazione rilevazione aggiornata</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Non sono disponibili pool.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Non sono disponibili immagini.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Non sono disponibili immagini. Assicurarsi di aggiungere un\'immagine alla destinazione.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Non sono disponibili iniziatori. Assicurarsi di aggiungere un iniziatore alla destinazione.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destinazione</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Byte letti</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operazioni di lettura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operazioni di scrittura</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O da</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Istanza</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Avanzamento</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modalità di modifica</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Aggiungi peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Modifica peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Elimina peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Sequenza iniziale</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Locale</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Remoto</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>peer copia speculare</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Chiave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Appiattimento profondo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Su strati</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Blocco esclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mappa oggetti (richiede il blocco escluso)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journaling (richiede il blocco esclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROTETTO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Esegui rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Eliminato alle</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stato</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versione</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>root</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon in standby</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Classificazione</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Task</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentry</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Utilizzo</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aggiornato</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>È possibile aggiornare il valore al runtime.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>I daemon/client non estraggono questo valore dal\n      database della configurazione di monitoraggio. Non è consentito impostare questa opzione tramite \'ceph config\n      set ...\'. È necessario configurare questa opzione tramite ceph.conf o dalla\n      riga di comando.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>L\'opzione diventa attiva solo all\'avvio del daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>L\'opzione interessa solo la creazione del cluster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>L\'opzione interessa solo la creazione del daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servizio</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valore attuale</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Modificabile</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Abilita</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Disabilita</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Riconnessione in corso. Attendere.</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Indirizzo pubblico</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessioni aperte</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Nessuno in entrata</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Gli OSD che sono stati contrassegnati come disattivi in precedenza non verranno contrassegnati nuovamente come attivi all\'avvio</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Nessuno in uscita</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Gli OSD non verranno disattivati automaticamente dopo l\'intervallo configurato</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nessuno attivo</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Non è consentito l\'avvio degli OSD</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nessuno disattivo</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>I rapporti di errore degli OSD vengono ignorati in modo che i monitor non disattivino gli OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Sospendi</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Sospende le operazioni di lettura e scrittura</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nessuna pulitura</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Pulitura disabilitata</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nessun pulitura approfondita</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Pulitura approfondita disabilitata</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Nessuna operazione di recupero</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Recupero dei gruppi di posizionamento sospeso</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nessun recupero</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recupero dei gruppi di posizionamento sospeso</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Ordinamento bitwise</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usa ordinamento bitwise</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdir eliminate definitivamente</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Gli OSD contengono set di snap convertiti</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Eliminazioni recuperi</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Eliminazioni eseguite durante il recupero invece del peering</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite rigido log gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Inserisce un limite rigido alla lunghezza del log del gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flag OSD aggiornati</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>esterno</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>interno</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>in basso</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Contrassegna</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perso</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>contrassegnato come perso</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>elimina</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Gruppi di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Byte letti</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operazioni di lettura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operazioni di scrittura</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Numero max di recuperi informazioni</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Numero max di recuperi attivi</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Avvio singolo numero max di recuperi</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Sospensione recupero</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Lavoro</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravità</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Avviato</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilizzato</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispon.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Pulisci</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>In funzione</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Avviso</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Sconosciuto</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>su</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>nessun file system</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>attivo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/d</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon attivo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target> quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Il servizio NFS Ganesha non è configurato.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Trasporto</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Utente CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>File system CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(ereditato dalla configurazione globale)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>importato dalla configurazione globale</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Selezionare il tipo di squash dell\'ID utente che viene eseguito --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Non vi sono daemon disponibili.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modalità cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Numero minimo di giorni per la rimozione</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Numero minimo di giorni per la cancellazione</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Numero max di byte di destinazione</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Numero max di oggetti di destinazione</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Non sono state aggiunte applicazioni.</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Raggiunto il limite di applicazioni</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Un pool può contenere solo fino a quattro definizioni delle applicazioni.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caratteri consentiti \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La lunghezza massima è di 128 caratteri</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtra o aggiungi applicazioni</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Aggiungi applicazione</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profilo del codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Dimensioni della replica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Ultima modifica</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profilo con codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Set di regole Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartimento</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimenti</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>utente</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utenti</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Ambito</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lettura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crea</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Ruolo di sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aggiorna utente</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continua</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Si è stati automaticamente disconnessi perché i ruoli sono stati modificati.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Ogni oggetto è suddiviso in porzioni di dati, ciascuna delle quali è memorizzata su un diverso OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcola le porzioni di codice relative a ciascun oggetto e le memorizza su diversi OSD.\n      Il numero di porzioni di codice è anche il numero degli OSD che è possibile disattivare senza perdere i dati.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Il plugin jerasure è il plugin più generico e flessibile,\n          ed è anche il plugin di default dei pool con codice di cancellazione di Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La tecnica più flessibile è reed_sol_van: è sufficiente impostare k\n          ed m. La tecnica cauchy_good può essere più rapida ma occorre selezionare attentamente la dimensione del\n          pacchetto. reed_sol_r6_op, liberation, blaum_roth, liber8tion sono tutti equivalenti a RAID6,\n          nel senso che è possibile configurarli solo con m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>La codifica viene eseguita su pacchetti di dimensioni in byte, uno alla volta.\n          È difficile scegliere la dimensione del pacchetto corretta.\n          La documentazione su jerasure fornisce informazioni esaustive su questo argomento.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Con il plugin di jerasure, quando un oggetto con codice di cancellazione viene memorizzato su\n          più OSD, il recupero della perdita di un OSD richiede la lettura di tutti gli altri.\n          Ad esempio, se jerasure è configurato con k=8 e m=4, la perdita di un OSD richiede la lettura\n          degli altri undici per il ripristino.\n\n          Il plugin del codice di cancellazione lrc crea porzioni di parità locali che è possibile recuperare utilizzando un\n          minor numero di OSD. Ad esempio, se lrc è configurato con k=8, m=4 e l=4, crea\n          una porzione di parità aggiuntiva ogni quattro OSD. Quando si perde un singolo OSD, è possibile\n          recuperarlo solo con quattro OSD invece che con undici.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Raggruppa le porzioni di codice e dati in set di località dimensione. Ad esempio,\n          per k=4 e m=2, se località=3 vengono creati due gruppi su tre. È possibile recuperare ciascun set\n          senza leggere le porzioni di un altro set.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Il tipo di compartimento Crush in cui viene memorizzato ciascun set di porzioni definito\n          dall\'utente. Ad esempio, se è impostato su rack, ciascun gruppo di porzioni viene\n          posizionato in un diverso rack. Viene utilizzato per creare un passaggio della regola CRUSH come il passaggio choose\n          rack. Se non è impostato, il raggruppamento non viene eseguito.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Il plugin ISA incapsula la libreria ISA. Viene eseguito solo su processori Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Il plugin ISA è disponibile in due formati Reed Solomon.\n          Se è impostato reed_sol_van, il formato è Vandermonde, se è impostato cauchy, il formato è Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Il plugin shec incapsula la libreria SHEC multipla.\n          Consente a Ceph di recuperare i dati in modo più efficiente rispetto ai codici Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Il numero di compartimenti di parità, ciascuno dei quali include i singoli compartimenti di dati\n          nell\'intervallo di calcolo. Il numero viene utilizzato come strumento di stima della durabilità. Ad esempio, se c=2,\n          è possibile disattivare 2 OSD senza perdere i dati.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Il nome del compartimento Crush utilizzato per il primo passaggio della regola CRUSH.\n      Ad esempio il passaggio take default.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Assicurarsi che non esistano due porzioni in un compartimento con lo stesso dominio\n      di errore. Ad esempio, se il dominio di errore è l\'host, non verranno memorizzate due porzioni sullo stesso\n      host. Viene utilizzato per creare un passaggio della regola CRUSH come passaggio chooseleaf host.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Limitare il posizionamento ai dispositivi di una classe specifica\n      (ad es. ssd o hdd) usando i nomi delle classi di dispositivi Crush nella mappa CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Impostare il nome della directory da cui viene caricato il plugin del codice di cancellazione.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Consente tutte le operazioni</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Consente solo le operazioni che non modificano il server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Non consente operazioni di lettura o scrittura, ma consente qualsiasi altra operazione</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Non consente operazioni di lettura o scrittura o qualsiasi operazione che modifichi gli attributi dei file o il contenuto della directory</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Non consente alcun accesso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Selezionare la priorità --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Bassa</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informazioni</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Ultimi 5 minuti</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Ultimi 15 minuti</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Ultimi 30 minuti</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Ultima ora (Default)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Ultime 3 ore</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Ultime 6 ore</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Ultime 12 ore</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Ultime 24 ore</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ieri</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Oggi</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Fino a oggi</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Giorno prima di ieri</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Ultimi 2 giorni</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Questo giorno della scorsa settimana</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Settimana precedente</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Questa settimana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Fino a questa settimana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Ultimi 7 giorni</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Mese precedente</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Questo mese</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Fino a questo mese</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Ultimi 30 giorni</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Ultimi 90 giorni</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Ultimi 6 mesi</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Ultimo anno</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Anno precedente</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Quest\'anno</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Fino a quest\'anno</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Ultimi 2 anni</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Ultimi 5 anni</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nessun elemento selezionato.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Deselezionare l\'elemento per selezionare di nuovo</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target> Raggiunto il limite per la selezione</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtra tag</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Aggiungi badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Non vi sono elementi disponibili.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clona</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copia</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Pulitura approfondita</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Eliminazione definitiva</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Appiattisci</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Declassa</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Attiva</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Contrassegna come perso</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Disattiva</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteggi</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Rinomina</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Ripristina</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Sposta nel cestino</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Rimuovi protezione</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Eliminato</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonato</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiato</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Appiattito</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Ripristinato</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback eseguito</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sì</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>No</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualità di servizio</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite di BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Il limite desiderato di byte I/O al secondo.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite di IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Il limite desiderato di operazioni I/O al secondo.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite BPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Il limite desiderato dei byte letti al secondo.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite di IOPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Il limite desiderato di operazioni di lettura al secondo.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite di BPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Il limite desiderato di byte scritti al secondo.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite di IOPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Il limite desiderato di operazioni di scrittura al secondo.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Burst BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Il limite di burst desiderato dei byte di I/O.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Burst IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di I/O.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Burst BPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Il limite di burst desiderato dei byte letti.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Burst IOPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di lettura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Burst BPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Il limite di burst desiderato dei byte scritti.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Burst di IOPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di scrittura.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>In esecuzione</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>esegui</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Eseguito</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>task sconosciuto</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Creazione in corso</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>crea</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aggiornamento in corso</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aggiorna</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Eliminazione in corso</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonazione in corso</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clona</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copia in corso</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copia</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Appiattimento</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>appiattisci</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback in corso</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Spostamento in corso</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>sposta</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Spostato</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Impossibile trovare l\'immagine.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Ripristino in corso</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>ripristina</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Eliminazione in corso</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>tutti i pool</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossibile disabilitare l\'esecuzione della copia speculare perché contiene un peer.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"8mBD":function(t,e,n){!function(t){"use strict";t.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},"8rQ2":function(t,e,n){var a=n("6MU2"),r=n("/Gx3"),i=n("Uqmq"),s=n("qjUL"),u=r((function(t){return t.push(void 0,i),a(s,void 0,t)}));t.exports=u},"8xTl":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t){return a.upperFirst(t)}}},"9/5/":function(t,e){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,i=/^0o[0-7]+$/i,s=parseInt,u="object"==typeof global&&global&&global.Object===Object&&global,o="object"==typeof self&&self&&self.Object===Object&&self,l=u||o||Function("return this")(),d=Object.prototype.toString,c=Math.max,f=Math.min,h=function(){return l.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function p(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==d.call(t)}(t))return NaN;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(n,"");var u=r.test(t);return u||i.test(t)?s(t.slice(2),u?2:8):a.test(t)?NaN:+t}t.exports=function(t,e,n){var a,r,i,s,u,o,l=0,d=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=a,i=r;return a=r=void 0,l=e,s=t.apply(i,n)}function v(t){return l=t,u=setTimeout(_,e),d?y(t):s}function x(t){var n=t-o;return void 0===o||n>=e||n<0||b&&t-l>=i}function _(){var t=h();if(x(t))return T(t);u=setTimeout(_,function(t){var n=e-(t-o);return b?f(n,i-(t-l)):n}(t))}function T(t){return u=void 0,m&&a?y(t):(a=r=void 0,s)}function w(){var t=h(),n=x(t);if(a=arguments,r=this,o=t,n){if(void 0===u)return v(o);if(b)return u=setTimeout(_,e),y(o)}return void 0===u&&(u=setTimeout(_,e)),s}return e=p(e)||0,g(n)&&(d=!!n.leading,i=(b="maxWait"in n)?c(p(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),w.cancel=function(){void 0!==u&&clearTimeout(u),l=0,a=o=r=u=void 0},w.flush=function(){return void 0===u?s:T(h())},w}},"93I0":function(t,e,n){var a=n("VpIT"),r=n("kOOl"),i=a("keys");t.exports=function(t){return i[t]||(i[t]=r(t))}},"978R":function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return h}));var a=n("8Y7J"),r=n("hpHm"),i=n("mrSG"),s=n("z/SZ"),u=n("2uy1"),o=n("PqYM");class l{constructor(){this.adaptivePosition=!0,this.placement="top",this.triggers="hover focus",this.delay=0}}class d{constructor(t){Object.assign(this,t)}get isBs3(){return Object(r.d)()}ngAfterViewInit(){this.classMap={in:!1,fade:!1},this.classMap[this.placement]=!0,this.classMap["tooltip-"+this.placement]=!0,this.classMap.in=!0,this.animation&&(this.classMap.fade=!0),this.containerClass&&(this.classMap[this.containerClass]=!0)}}let c=0,f=(()=>{class t{constructor(t,e,n,r,i,s){this._elementRef=r,this._renderer=i,this._positionService=s,this.tooltipId=c++,this.tooltipChange=new a.EventEmitter,this.containerClass="",this.tooltipAnimation=!0,this.tooltipFadeDuration=150,this.tooltipStateChanged=new a.EventEmitter,this._tooltip=e.createLoader(this._elementRef,t,this._renderer).provide({provide:l,useValue:n}),Object.assign(this,n),this.onShown=this._tooltip.onShown,this.onHidden=this._tooltip.onHidden}get isOpen(){return this._tooltip.isShown}set isOpen(t){t?this.show():this.hide()}set htmlContent(t){Object(r.i)("tooltipHtml was deprecated, please use `tooltip` instead"),this.tooltip=t}set _placement(t){Object(r.i)("tooltipPlacement was deprecated, please use `placement` instead"),this.placement=t}set _isOpen(t){Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen=t}get _isOpen(){return Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen}set _enable(t){Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled=!t}get _enable(){return Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled}set _appendToBody(t){Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),this.container=t?"body":this.container}get _appendToBody(){return Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),"body"===this.container}set _popupClass(t){Object(r.i)("tooltipClass deprecated")}set _tooltipContext(t){Object(r.i)("tooltipContext deprecated")}set _tooltipPopupDelay(t){Object(r.i)("tooltipPopupDelay is deprecated, use `delay` instead"),this.delay=t}get _tooltipTrigger(){return Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers}set _tooltipTrigger(t){Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers=(t||"").toString()}ngOnInit(){this._tooltip.listen({triggers:this.triggers,show:()=>this.show()}),this.tooltipChange.subscribe(t=>{t||this._tooltip.hide()}),this.onShown.subscribe(()=>{this.setAriaDescribedBy()}),this.onHidden.subscribe(()=>{this.setAriaDescribedBy()})}setAriaDescribedBy(){this._ariaDescribedby=this.isOpen?"tooltip-"+this.tooltipId:null,this._ariaDescribedby?this._renderer.setAttribute(this._elementRef.nativeElement,"aria-describedby",this._ariaDescribedby):this._renderer.removeAttribute(this._elementRef.nativeElement,"aria-describedby")}toggle(){if(this.isOpen)return this.hide();this.show()}show(){if(this._positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition},preventOverflow:{enabled:this.adaptivePosition}}}),this.isOpen||this.isDisabled||this._delayTimeoutId||!this.tooltip)return;const t=()=>{this._delayTimeoutId&&(this._delayTimeoutId=void 0),this._tooltip.attach(d).to(this.container).position({attachment:this.placement}).show({content:this.tooltip,placement:this.placement,containerClass:this.containerClass,id:"tooltip-"+this.tooltipId})},e=()=>{this._tooltipCancelShowFn&&this._tooltipCancelShowFn()};if(this.delay){const n=Object(o.a)(this.delay).subscribe(()=>{t(),e()});this.triggers&&Object(r.f)(this.triggers).forEach(t=>{this._tooltipCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,t.close,()=>{n.unsubscribe(),e()})})}else t()}hide(){this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this._tooltip.isShown&&(this._tooltip.instance.classMap.in=!1,setTimeout(()=>{this._tooltip.hide()},this.tooltipFadeDuration))}ngOnDestroy(){this._tooltip.dispose(),this.tooltipChange.unsubscribe(),this.onShown.unsubscribe(),this.onHidden.unsubscribe()}}return Object(i.__decorate)([Object(r.a)(),Object(i.__metadata)("design:type",Object)],t.prototype,"tooltip",void 0),t})();class h{static forRoot(){return{ngModule:h,providers:[l,s.a,u.a]}}}},"9Xeq":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},"9d/t":function(t,e,n){var a=n("2oRo"),r=n("AO7/"),i=n("Fib7"),s=n("xrYK"),u=n("tiKp")("toStringTag"),o=a.Object,l="Arguments"==s(function(){return arguments}());t.exports=r?s:function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(n){}}(e=o(t),u))?n:l?s(e):"Object"==(a=s(e))&&i(e.callee)?"Arguments":a}},"9nlD":function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("LvDl"),r=n("2Vo4"),i=n("XNiG"),s=n("mtw6"),u=n("G1I9"),o=n("a0VL"),l=n("ufoC"),d=n("8Y7J"),c=n("EApP");let f=(()=>{class t{constructor(t,e,n){this.toastr=t,this.taskMessageService=e,this.cdDatePipe=n,this.hideToasties=!1,this.dataSource=new r.a([]),this.data$=this.dataSource.asObservable(),this.sidebarSubject=new i.a,this.queued=[],this.KEY="cdNotifications";const s=localStorage.getItem(this.KEY);let o=[];a.isString(s)&&(o=JSON.parse(s,(t,e)=>a.isPlainObject(e)?a.assign(new u.a,e):e)),this.dataSource.next(o)}removeAll(){localStorage.removeItem(this.KEY),this.dataSource.next([])}remove(t){const e=this.dataSource.getValue();e.splice(t,1),this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))}save(t){const e=this.dataSource.getValue();for(e.push(t),e.sort((t,e)=>t.timestamp>e.timestamp?-1:1);e.length>10;)e.pop();this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))}show(t,e,n,r,i){return window.setTimeout(()=>{let s;s=a.isFunction(t)?t():a.isObject(t)?t:new u.b(t,e,n,r,i),this.queueToShow(s)},10)}queueToShow(t){this.cancel(this.queuedTimeoutId),this.queued.find(e=>a.isEqual(e,t))||this.queued.push(t),this.queuedTimeoutId=window.setTimeout(()=>{this.showQueued()},500)}showQueued(){this.getUnifiedTitleQueue().forEach(t=>{const e=new u.a(t);e.isFinishedTask||this.save(e),this.showToasty(e)})}getUnifiedTitleQueue(){return Object.values(this.queueShiftByTitle()).map(t=>{const e=t[0];return t.length>1&&(e.message="<ul>"+t.map(t=>`<li>${t.message}</li>`).join("")+"</ul>"),e})}queueShiftByTitle(){const t={};let e;for(;e=this.queued.shift();)t[e.title]||(t[e.title]=[]),t[e.title].push(e);return t}showToasty(t){this.hideToasties||this.toastr[["error","info","success"][t.type]]((t.message?t.message+"<br>":"")+this.renderTimeAndApplicationHtml(t),t.title,t.options)}renderTimeAndApplicationHtml(t){return`<small class="date">${this.cdDatePipe.transform(t.timestamp)}</small><i class="float-right custom-icon ${t.applicationClass}" title="${t.application}"></i>`}notifyTask(t,e=!0){const n=this.finishedTaskToNotification(t,e);return n.isFinishedTask=!0,this.show(n)}finishedTaskToNotification(t,e=!0){let n;return n=t.success&&e?new u.b(s.a.success,this.taskMessageService.getSuccessTitle(t)):new u.b(s.a.error,this.taskMessageService.getErrorTitle(t),this.taskMessageService.getErrorMessage(t)),n.isFinishedTask=!0,n}cancel(t){window.clearTimeout(t)}suspendToasties(t){this.hideToasties=t}toggleSidebar(t=!1){this.sidebarSubject.next(t)}}return t.ngInjectableDef=d["ɵɵdefineInjectable"]({factory:function(){return new t(d["ɵɵinject"](c.j),d["ɵɵinject"](l.a),d["ɵɵinject"](o.a))},token:t,providedIn:"root"}),t})()},"9ppp":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return t.prototype=Object.create(Error.prototype),t})()},"9rRi":function(t,e,n){!function(t){"use strict";t.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},"A+xa":function(t,e,n){!function(t){"use strict";t.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(t){return t+(/сехет$/i.exec(t)?"рен":/ҫул$/i.exec(t)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("wd/R"))},A2ZE:function(t,e,n){var a=n("4zBA"),r=n("We1y"),i=a(a.bind);t.exports=function(t,e){return r(t),void 0===e?t:i?i(t,e):function(){return t.apply(e,arguments)}}},ANnk:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aexS"),n("f/UV");class a{constructor(t,e,n){this.formScope=t,this.authStorageService=e,this.elementRef=n}ngAfterViewInit(){this.permissions=this.authStorageService.getPermissions(),null!==this.formScope&&(this.service_name=this.formScope.cdFormScope),this.service_name&&!this.permissions[this.service_name].update&&(this.elementRef.nativeElement.disabled=!0)}}},"AO7/":function(t,e,n){var a={};a[n("tiKp")("toStringTag")]="z",t.exports="[object z]"===String(a)},AQ68:function(t,e,n){!function(t){"use strict";t.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("wd/R"))},AWcq:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("yJti");class r{constructor(){this.vcs=a.a}ngOnInit(){}}},AfCQ:function(t,e,n){"use strict";var a=n("2Vo4"),r=n("qgXg"),i=n("HDdC"),s=n("pxpQ"),u=n("Kqap"),o=n("lJxs"),l=n("7o/Q");class d{constructor(t,e){this.compare=t,this.keySelector=e}call(t,e){return e.subscribe(new c(t,this.compare,this.keySelector))}}class c extends l.a{constructor(t,e,n){super(t),this.keySelector=n,this.hasKey=!1,"function"==typeof e&&(this.compare=e)}compare(t,e){return t===e}_next(t){let e;try{const{keySelector:n}=this;e=n?n(t):t}catch(a){return this.destination.error(a)}let n=!1;if(this.hasKey)try{const{compare:t}=this;n=t(this.key,e)}catch(a){return this.destination.error(a)}else this.hasKey=!0;n||(this.key=e,this.destination.next(t))}}n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return h}));class f extends a.a{constructor(t,e,n){super(t),e.pipe(Object(s.b)(r.a)).pipe(Object(u.a)((t,e)=>e?n(t,e):t,t)).subscribe(t=>this.next(t))}}class h extends i.a{constructor(t,e,n){super(),this._dispatcher=t,this._reducer=e,this.source=n}select(t){return this.source.pipe(Object(o.a)(t)).pipe(t=>t.lift(new d(void 0,void 0)))}lift(t){const e=new h(this._dispatcher,this._reducer,this);return e.operator=t,e}dispatch(t){this._dispatcher.next(t)}next(t){this._dispatcher.next(t)}error(t){this._dispatcher.error(t)}complete(){}}},AiMb:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="zh-CN">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>切换导航</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>仪表盘</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>集群</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>主机</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>对应的服务</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>配置项</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH 索引</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager 扩展模块</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>日志</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>存储池</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>块设备</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>映像</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>镜像</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>文件系统</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>对象网关</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>守护进程</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>请选择语言</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>正在加载面板的相关数据…</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana 时间选择工具</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>重新设置</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>返回</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>无法加载数据。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>选中个数</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>命中个数</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>总数</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名称</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>解释</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>更详尽的解释</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>缺省值</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>守护进程的缺省值</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>可选值</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>保存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>检查 CRUSH 索引图</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>正在加载…</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>主机名</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>请填写此栏目!</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>是的,我确定。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>取消</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>关闭</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>主机列表</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>总体性能</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>无法找到相关条目</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>集群日志</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>审计日志</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>正在加载相关配置信息...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>配置信息无法加载。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>编辑 Manager 扩展模块</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>输入值不是有效的 UUID,如:67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>输入的应该是个有效的 IP 地址。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>输入须为数字。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>输入的应该是一个浮点数或者十进制整数。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>集群 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap 修改时间</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con </target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>仲裁成员</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非仲裁成员</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>添加</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>特性</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>集群范围的 OSD 标志</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>提交</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>高级设置…</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 恢复优先级</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>优先级</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>自定义优先级</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>这个字段是必填的!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>权重值必须在 0 和 1 之间</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>重设权重</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深度}}</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深度} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 列表</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>编辑</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>删除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>健康状况</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>统计数据</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>客户端</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任何客户端均可访问</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>地址</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必填项</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>必须包含一个或多个逗号分隔值</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例如:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>访问类型</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>添加客户端</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 无可用集群 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 请选择一个集群 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>添加守护进程</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>存储后端</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 没有可用的数据存储池 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 请选择存储后端 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>对象网关用户</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 无可选用户 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 请选择对象网关用户 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 用户 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 无可用客户端 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- 请选择 cephx 客户端 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 名称</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>安全标签</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>启用安全标签</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 路径</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>路径需以“/”开头,后面可跟单词</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>将创建新文件夹</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>路径</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>路径只能是单个“/”或单词</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>将创建新的桶</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 协议</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 标签</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>客户端不能装入子目录(即如果标记为 foo,则客户端无法装入 foo/baz)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>通过使用不同标记选项,可将同一路径导出多次。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>伪</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>通过使用不同伪选项,可将同一路径导出多次。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 没有可用的访问类型 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 选择访问类型 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 没有可用的 squash --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 选择执行哪种类型的用户 ID 匿名访问 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>传输协议</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>欢迎使用 Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>请输入用户名</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>请输入密码</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>登录</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>抱歉,此用户不存在。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>禁止访问</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>抱歉,您无权访问这个页面。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 配置</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>删除本地的配置项,改用更高作用域的配置值。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小值为 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>存储池列表</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名称只能由字母、数字、短划线和下划线组成。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>此纠删码配置名称已被使用。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>纠删码算法</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>数据块 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>必须大于等于 2</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>校验块 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>必须大于等于 1</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>持久因子 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>局部性因子 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH 故障域</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH 局部性</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>无</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>算法</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>packetsize</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH 根</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH 设备类型</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任意</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>目录</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名称…</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>此 Ceph 存储池名称已被使用。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>存储池类型</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 请选择存储池的类型 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>归置组 (PG)</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>至少需要一个归置组!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>您的集群没法支持这么多的 PG。请重新计算需要的 PG 个数。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>在线 PG 计算器</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>副本个数</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>标志</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 重写 (overwrite)</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>应用类型</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 无纠删码配置可选 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 请选择一个纠删码配置 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH 算法规则组</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 选择 CRUSH 规则 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH 规则</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH 步骤</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>压缩</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>模式</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>算法</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 无可用的纠删码压缩算法 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>blob 大小下限</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>比如 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>取值必须大于 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>blob 大小上限</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>如 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>取值必须大于 blob 大小下限</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>比例</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>压缩率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>取值必须在 0.0 和 1.0 之间</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>如 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>详情</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>性能详情</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>缓存层详细信息</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>将映像移至回收站</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保护期一直到</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>无保护</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日期格式有问题。请使用“YYYY-MM-DD HH:mm:ss”。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保护期限已经过了。请设置一个将来的日期,或者清空不填。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>移动映像</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>概览</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>目标</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>发现身份验证</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>用户名长度必须在 8 到 64 个字符之间,且只能包含\n以下字符:英文字母、“.”、“@”、“-”、“_”或“:”。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>密码</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>互认证用户</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>互认证密码</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>可用信息:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>无可用 iSCSI 目标</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>存储池</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>数据存储池</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>创建</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>对象数</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>对象大小</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>供给容量</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>总供给容量</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>条带单元</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>条带个数</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>父节点</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>块存储名字前缀</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>order</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>快照</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>映像</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>此设置会覆盖全局值</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>全局</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>该值为全局值。没有为此映像设置此选项的值。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>不允许使用“/”和“@”。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 没有可用的 RBD 存储池 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 请选择存储池 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>使用一个专用的数据池</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>数据池</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>为保存 RBD 的对象数据单独分配的存储池。</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>您需要设置大一些的容量。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>高级设置</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>条带</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>条带单元大小</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 选择条带单元大小 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>因为设置了条带个数,所以这个字段是必选的!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>条带单元大小超过了对象大小。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>条带个数</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>因为设置了条带单元大小,所以这个字段是必选的!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>条带的个数必须大于 0。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>您即将进行回滚操作</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>清空回收站</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>全选</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>存储池:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>存储池名称…</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>恢复映像</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>要恢复</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>输入映像的新名称,并点击</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新名称</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>过期时间</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保护期限</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 结构图</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常无须改变这些默认参数值。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>设置</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>后备存储</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>确认</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>高级设置</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>目标限定名</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN 格式错误。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例如:iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>更多信息</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>此目标的高级设置项存在修改。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>端口</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>添加端口</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>此映像的设置项存在修改。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>添加映像</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 身份验证</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>授权人</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>授权人</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>客户端 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>授权人 IQN 必须唯一。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>用户名长度必须在 8 到 64 个字符之间,且只能包含\n以下字符:英文字母、“.”、“@”、“-”、“_”或“:”。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>授权人属于群组。映像须在群组中进行设置。</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>无项目添加。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>添加授权人</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>群组</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>群组</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>添加群组</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>回收站</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>问题</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>正在同步</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>已就绪</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>编辑存储池镜像模式</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>在禁用镜像功能前必须先移除同伴集群。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {编辑} other {添加} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>集群名称</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>集群名称无效。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID 无效。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Monitor 地址</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>逗号分割的地址...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Monitor 地址无效。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 密钥</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 编码的密钥...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 密钥必须是 base64 编码的。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>无法读取性能计数器</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>守护进程列表</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>性能计数器</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>正在加载存储桶数据…</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>输入值无效。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>所选名称已经被使用。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>所有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 请选择一个用户 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>开启</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>索引类型</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>归置规则</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>标识</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>max marker</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>主版本</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>修改时间</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>zonegroup</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>存储桶配额</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大数目</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>无限制</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大对象数目</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>用户名</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 请选择用户名 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>自动生成密钥</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>访问密钥</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>秘密密钥</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>全名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>邮箱</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>冻结</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>系统</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大存储桶数目</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>子用户</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>用户权限</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>用户配额</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>显示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>密钥</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>类型</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 请选择一个类型 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>权限</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 请选择权限类型 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>子用户</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>所选的子用户 ID 已被使用。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>读、写</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>全部</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift 密钥</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>自动生成密钥</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>正在加载用户数据…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>用户数据无法加载。 </target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>所选的用户 ID 已被使用。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>无效的邮箱地址。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>此邮箱地址已被使用。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>存储桶个数的上限</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>禁用</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>自定义</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 密钥</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>没有子用户。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>没有任何密钥。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>权限为空。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>空间无限制</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>空间上限</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>对象个数无限制</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>对象个数上限</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>设置的值必须 &gt;= 0。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>描述…</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>权限</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>角色</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>确认密码</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>密码和之前的输入不匹配。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>邮箱</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>邮箱地址无效。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>您即将取消您自己用户的 "user read / update" 权限。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>如果您继续的话,您以后就没办法为其他用户添加或者删除角色了。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>您确实要继续吗?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>帮助</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>文档</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>关于</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>仪表盘设置</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>用户管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>登录的用户</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>登出</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>OSD map</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>元数据不可用</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>相关元数据</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>性能计数器</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>写入请求</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>读取请求</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>直方图</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>当前值</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>下限</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>上限</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>来源</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>级别</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>可在运行时更新(可编辑)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>标记</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>可选项</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>参见</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>集群状态</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>manager 守护进程</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>对象网关</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>metadata 服务器</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 网关</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>客户端 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>客户端吞吐量</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>客户端读/写</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>恢复吞吐量</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>洗刷</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>性能</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>基本容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>每个 OSD 的 PG 数</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 状态</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>排位</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>当前</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>已更新发现身份验证</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>无可用端口。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>无可用映像。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>无可用映像。请确保为目标添加一个映像。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>无可用授权人。请确保为目标添加一个授权人。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>目标</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>读字节数</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>写字节数</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>读请求数</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>写请求数</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>活动/优化自</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>实例</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>问题</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>进度</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>编辑模式</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>添加 peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>编辑 peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>删除 peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># 本地</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># 远程</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>镜像 peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>密钥</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>完全展开</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>分层</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>互斥锁</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>object map(要求互斥锁支持)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>日志(要求互斥锁支持)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>无保护的</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 快照回滚</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>回滚</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 快照</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>定点删除</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>类型</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>主机</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>根</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>备用服务</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>排位</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>守护进程</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>活跃度</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用率</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>更新完成</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>该值可在运行时更新。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>服务器或客户端不会主动从 monitor 的配置数据库读取这个配置。\n 所以不能用“ceph config set ...”设置它。但是可以通过\n ceph.conf 或者用命令行进行配置。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>该配置只有在服务启动的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>该配置只在创建集群的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>该配置只在服务创建的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>服务</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>当前值</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>可编辑</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>启用</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>禁用</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>正在重新连接,请稍候…</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>外部地址</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>活动会话</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>禁止加入</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>之前被除名的 OSD 在启动之后,不会被加入集群</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>禁止除名</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>在发现 OSD 没有响应之后一段时间,该 OSD 会被踢出集群。该标志会禁止这个功能。</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>禁止启用</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>不允许 OSD 启动</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>禁止停用</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>当前不受理对 OSD 的失效报告,因而 monitor 不会停用 OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>暂停</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>暂停读写</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>禁止洗刷</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>洗刷已禁止</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>禁止深层洗刷</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>深层洗刷已禁止</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>禁止回填</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG 回填已推迟</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>禁止恢复</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG 恢复已推迟</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>逐位排序</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>使用逐位排序</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>老版本的快照已全部升级</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD 上的快照已全部转换完毕</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>在恢复时进行删除操作</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>在恢复时,而非对齐阶段进行删除</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 日志硬限制</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>为 pg 日志长度添加硬限制</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>已更新 OSD 标志</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>除名</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>加入</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>停用</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>标记</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 丢失</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>已标记丢失</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>销毁</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>已销毁</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>删除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>读字节数</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>写字节数</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>读请求数</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>写请求数</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大回填量</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>最大活跃恢复请求数</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>最大单次恢复操作数</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>恢复/回填操作间隔睡眠时间</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>任务</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>严重程度</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>已启动</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>已使用</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>空闲</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>正常</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>运行中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警报</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>未知</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>启用中</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>无文件系统</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>工作</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>待机</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>工作的守护进程</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganesha 服务的配置还没有完成。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>传输</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 用户</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 文件系统</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(继承自全局配置)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>继承自全局配置</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 选择执行哪种类型的用户 ID 匿名访问 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>没有可用的守护进程。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>缓存模式</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>最少延迟赶出时间</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>最少延迟刷回时间</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>目标器最大字节数</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>目标器最大对象数</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>还没有任何应用标记</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>应用标记到了上限</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>一个存储池最多能有四个应用标记。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>可用的字符为“_a-zA-Z0-9”</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>长度限制为 128 个字符</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>添加应用标记或根据其进行筛选</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>添加应用标记</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>副本个数</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>最后修改时间</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH 规则集</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>作用范围</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>读权限</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>新建</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>系统角色</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>更新用户</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>继续</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>您被自动登出,因为您的角色有了变动。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target> 各对象都被分割为数据块,分别存储于不同 OSD 。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>计算各对象的编码块、并存储于不同 OSD 。\n编码块的数量等同于在不丢数据的前提下允许同时失效的 OSD 数量。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>jerasure 插件是最通用、最灵活的插件,\n也是 Ceph 纠删码存储池的默认插件。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>reed_sol_van 技术更灵活:它足以设置 k 和 m 值。 \ncauchy_good 技术更快,但你得谨慎地选择 packetsize 值。\nreed_sol_r6_op 、 liberation 、 blaum_roth 、 liber8tion 都是与 RAID6 等价的技术,\n它们只能配置为 m=2 。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target> 以 bytes 大小的包为单位进行编码。\n确定合适的包尺寸很难, \njerasure 文档对此有很详细的描述。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>用 jerasure 插件时,纠删码编码的对象存储在多个 OSD 上,\n丢失一个 OSD 的恢复过程需读取所有其他的 OSD 。\n比如 jerasure 的配置为 k=8 且 m=4 ,丢失一个 OSD 后需读取其他 11 个 OSD 才能恢复。\n\nlrc 纠删码插件创建的是局部校验块,这样只需较少的 OSD 即可恢复。\n比如 lrc 的配置为 k=8 、 m=4 且 l=4 ,它将为每四个 OSD 创建额外的校验块,\n当一个 OSD 丢失时,它只需四个 OSD 即可恢复,而不需要十一个。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>把编码块和数据块分组为大小为 locality 的集合。\n比如, k=4 且 m=2 时,若设置 locality=3 ,将会分组为大小为三的两组,\n这样各组都能自行恢复,无需从另一组读数据块。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>由 l 定义的块集合将按哪种 crush 桶类型存储。\n比如,若设置为 rack ,大小为 l 块的各组将被存入不同的机架,\n此值会被用于创建类似 step choose rack 的规则集。\n如果没设置,就不会这样分组。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 插件封装了 ISA 库。它只能运行在 Intel 处理器上。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 插件包含两种 Reed Solomon 编码形式。\n设置为 reed_sol_van 表示用 Vandermonde 算法,设置为 cauchy 表示用 Cauchy 算法。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec 插件封装了 multiple SHEC 库。\n与 Reed Solomon 编码相比,它能使 Ceph 更高效地恢复数据。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target> 奇偶校验块数量,它们在各自的计算范围内包含了各数据块。\n此数值被用作持久性估值。\n例如,假设 c=2 ,就是说不丟数据的情况下可损失 2 个 OSD 。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>规则集第一步所指向的 CRUSH 桶之名,\n如 step take default 。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>确保两个编码块不会存在于同一故障域的桶里面。\n比如,假设故障域是 host ,就不会有两个编码块存储到同一主机;\n此值用于在规则集中创建类似 step chooseleaf host 的步骤。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>使用 CRUSH 索引中的 crush 设备类名,\n将归置限制于特定类的设备(例如,ssd 或 hdd)。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>设置纠删码插件所在目录。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>允许所有操作</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>只允许不修改服务器端数据的操作</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>禁止读写,但是允许其他的操作</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>禁止读、写以及任何可能修改文件内容的操作</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>完全禁止访问</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 选择优先级 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>信息</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>过去 5 分钟</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>过去 15 分钟</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>过去 30 分钟</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>过去 1 小时(默认)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>过去 3 小时</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>过去 6 小时</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>过去 12 小时</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>过去 24 小时</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨天</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>今天</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>今天到现在为止</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>前天</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>过去 2 天</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>上周的今天</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>上个星期</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>本周</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>本周以来</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>过去 7 天</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>上个月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>当月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>本月以来</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>过去 30 天</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>过去 90 天</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>过去 6 个月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>过去 1 年</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>去年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年以来</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>过去 2 年</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>过去 5 年</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>无选中项目。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>取消选择</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>达到选择项数上限。</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>过滤标签</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>添加 badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>无可选项目。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>复制</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>深层洗刷</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>销毁</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>展开</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>标记为停用</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>标记为加入</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>标记为丢失</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>标记为已除名</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保护</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>重命名</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>恢复</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>移至回收站</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>解除保护</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>删除完成</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>克隆完成</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>复制完成</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>展开完成</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>已经把</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>回滚完成</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>是</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>否</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>服务质量 (QoS)</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>指定的每秒 IO 字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>指定的每秒 IO 操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>读 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>指定的每秒内读取的字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>读 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>指定的每秒读操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>写 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>指定的每秒内写入的字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>写 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>指定的每秒写操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>指定的 IO 字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>指定的 IO 操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>读 BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>指定的读取的字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>读 IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>指定的读操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>写 BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>指定的写入的字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>写 IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>指定的写操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>正在执行</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>执行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>执行完毕</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>未知任务</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>正在创建</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>创建</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>正在更新</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>正在删除</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>正在克隆</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>正在复制</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>复制</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>正在展开</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>展开</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>正在回滚</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>回滚</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>正在把</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>把</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>已经把</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>无法找到映像。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>正在把</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>把</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>正在清除</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>所有存储池</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>因为包含同伴集群,无法禁用镜像功能</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},Avrn:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("aexS"),r=n("8Y7J"),i=n("iInd");let s=(()=>{class t{constructor(t,e){this.router=t,this.authStorageService=e}canActivate(t,e){return!!this.authStorageService.isLoggedIn()||(this.router.navigate(["/login"],{queryParams:{returnUrl:e.url}}),!1)}canActivateChild(t,e){return this.canActivate(t,e)}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.m),r["ɵɵinject"](a.a))},token:t,providedIn:"root"}),t})()},AvvY:function(t,e,n){!function(t){"use strict";t.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(t,e){return 12===t&&(t=0),"രാത്രി"===e&&t>=4||"ഉച്ച കഴിഞ്ഞ്"===e||"വൈകുന്നേരം"===e?t+12:t},meridiem:function(t,e,n){return t<4?"രാത്രി":t<12?"രാവിലെ":t<17?"ഉച്ച കഴിഞ്ഞ്":t<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("wd/R"))},AxL3:function(t,e){var n=!("undefined"==typeof window||!window.document||!window.document.createElement);t.exports=n},"B/qT":function(t,e,n){var a=n("UMSQ");t.exports=function(t){return a(t.length)}},B55N:function(t,e,n){!function(t){"use strict";t.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(t){return"午後"===t},meridiem:function(t,e,n){return t<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(t){return t.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(t){return this.week()<t.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("wd/R"))},BFxc:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("4I5i"),i=n("EY2u");function s(t){return function(e){return 0===t?Object(i.b)():e.lift(new u(t))}}class u{constructor(t){if(this.total=t,this.total<0)throw new r.a}call(t,e){return e.subscribe(new o(t,this.total))}}class o extends a.a{constructor(t,e){super(t),this.total=e,this.ring=new Array,this.count=0}_next(t){const e=this.ring,n=this.total,a=this.count++;e.length<n?e.push(t):e[a%n]=t}_complete(){const t=this.destination;let e=this.count;if(e>0){const n=this.count>=this.total?this.total:this.count,a=this.ring;for(let r=0;r<n;r++){const r=e++%n;t.next(a[r])}}t.complete()}}},BJMh:function(t,e,n){var a=n("KFwg")(n("Wa4q"),"Promise");t.exports=a},BQkM:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return t+" IOPS"}}},BVg3:function(t,e,n){!function(t){"use strict";function e(t){return t%100==11||t%10!=1}function n(t,n,a,r){var i=t+" ";switch(a){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return e(t)?i+(n||r?"sekúndur":"sekúndum"):i+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return e(t)?i+(n||r?"mínútur":"mínútum"):n?i+"mínúta":i+"mínútu";case"hh":return e(t)?i+(n||r?"klukkustundir":"klukkustundum"):i+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return e(t)?n?i+"dagar":i+(r?"daga":"dögum"):n?i+"dagur":i+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return e(t)?n?i+"mánuðir":i+(r?"mánuði":"mánuðum"):n?i+"mánuður":i+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return e(t)?i+(n||r?"ár":"árum"):i+(n||r?"ár":"ári")}}t.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},BVkS:function(t,e,n){var a=n("2zzJ"),r=n("Eey9");t.exports=function(t,e){return e.length<2?t:a(t,r(e,0,-1))}},"BX/b":function(t,e,n){var a=n("xrYK"),r=n("/GqU"),i=n("JBy8").f,s=n("Ta7t"),u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"Window"==a(t)?function(t){try{return i(t)}catch(e){return s(u)}}(t):i(r(t))}},BkBO:function(t,e,n){var a=n("43VP");t.exports=function(t,e){var n=!0;return a(t,(function(t,a,r){return n=!!e(t,a,r)})),n}},Bs8V:function(t,e,n){var a=n("g6v/"),r=n("xluM"),i=n("0eef"),s=n("XGwC"),u=n("/GqU"),o=n("oEtG"),l=n("Gi26"),d=n("DPsx"),c=Object.getOwnPropertyDescriptor;e.f=a?c:function(t,e){if(t=u(t),e=o(e),d)try{return c(t,e)}catch(n){}if(l(t,e))return s(!r(i.f,t,e),t[e])}},ByF4:function(t,e,n){!function(t){"use strict";t.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},C0Ia:function(t,e,n){var a=n("2oRo"),r=n("6LWA"),i=n("aO6C"),s=n("hh1v"),u=n("tiKp")("species"),o=a.Array;t.exports=function(t){var e;return r(t)&&(i(e=t.constructor)&&(e===o||r(e.prototype))||s(e)&&null===(e=e[u]))&&(e=void 0),void 0===e?o:e}},C523:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("gk6K"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(t,e,n,a){this.el=t,this.renderer=e,this.treeDraggedElement=n,this.ngZone=a,this.dragEventHandler=this.onDrag.bind(this)}return t.prototype.ngAfterViewInit=function(){var t=this,e=this.el.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("drag",t.dragEventHandler)}))},t.prototype.ngDoCheck=function(){this.renderer.setAttribute(this.el.nativeElement,"draggable",this.treeDragEnabled?"true":"false")},t.prototype.ngOnDestroy=function(){this.el.nativeElement.removeEventListener("drag",this.dragEventHandler)},t.prototype.onDragStart=function(t){t.dataTransfer.setData("text",t.target.id),this.treeDraggedElement.set(this.draggedElement),this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragStart",t)},t.prototype.onDrag=function(t){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("drag",t)},t.prototype.onDragEnd=function(){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragEnd"),this.treeDraggedElement.set(null)},i([Object(a.Input)("treeDrag"),s("design:type",Object)],t.prototype,"draggedElement",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"treeDragEnabled",void 0),i([Object(a.HostListener)("dragstart",["$event"]),s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",void 0)],t.prototype,"onDragStart",null),i([Object(a.HostListener)("dragend"),s("design:type",Function),s("design:paramtypes",[]),s("design:returntype",void 0)],t.prototype,"onDragEnd",null),i([Object(a.Directive)({selector:"[treeDrag]"}),s("design:paramtypes",[a.ElementRef,a.Renderer2,r.a,a.NgZone])],t)}()},C6Ij:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("DqMs"),i=n("/NlG"),s=n("GiVz"),u=n("SVse");n("AWcq"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return p}));var o=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","info"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Retrieving data"])),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[". Please wait..."]))],(function(t,e){var n=e.component;t(e,1,0,"info"),t(e,5,0,n.statusFor)}),null)}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","warning"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Displaying previously cached data"])),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,["."]))],(function(t,e){var n=e.component;t(e,1,0,"warning"),t(e,5,0,n.statusFor)}),null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","error"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Could not load data"])),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[". Please check the cluster health."]))],(function(t,e){var n=e.component;t(e,1,0,"error"),t(e,5,0,n.statusFor)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](1,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](3,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.status===n.vcs.ValueNone),t(e,3,0,n.status===n.vcs.ValueStale),t(e,5,0,n.status===n.vcs.ValueException)}),null)}},CFvb:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a={LEFT:37,UP:38,RIGHT:39,DOWN:40,ENTER:13,SPACE:32,CONTEXT_MENU:32}},CNMR:function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return o}));var a=n("mrSG"),r=n("8Y7J"),i=n("hpHm");class s{constructor(){this.type="warning",this.dismissible=!1,this.dismissOnTimeout=void 0}}let u=(()=>{class t{constructor(t,e){this.changeDetection=e,this.type="warning",this.dismissible=!1,this.isOpen=!0,this.onClose=new r.EventEmitter,this.onClosed=new r.EventEmitter,this.classes="",this.dismissibleChange=new r.EventEmitter,Object.assign(this,t),this.dismissibleChange.subscribe(t=>{this.classes=this.dismissible?"alert-dismissible":"",this.changeDetection.markForCheck()})}ngOnInit(){this.dismissOnTimeout&&setTimeout(()=>this.close(),parseInt(this.dismissOnTimeout,10))}close(){this.isOpen&&(this.onClose.emit(this),this.isOpen=!1,this.changeDetection.markForCheck(),this.onClosed.emit(this))}}return Object(a.__decorate)([Object(i.a)(),Object(a.__metadata)("design:type",Object)],t.prototype,"dismissible",void 0),t})();class o{static forRoot(){return{ngModule:o,providers:[s]}}}},CNUl:function(t,e,n){var a=n("XhiP");t.exports=function(t){var e=new t.constructor(t.byteLength);return new a(e).set(new a(t)),e}},CUJ1:function(t,e,n){var a=n("xAZD"),r=n("J9xi"),i=n("kna9"),s=n("MOZO"),u=n("77kF"),o=n("tpUd"),l=n("LJNh"),d=n("mOnh"),c=l((function(t,e){var n={};if(null==t)return n;var l=!1;e=a(e,(function(e){return e=s(e,t),l||(l=e.length>1),e})),u(t,d(t),n),l&&(n=r(n,7,o));for(var c=e.length;c--;)i(n,e[c]);return n}));t.exports=c},Cfvw:function(t,e,n){"use strict";var a=n("HDdC"),r=n("SeVD"),i=n("quSY"),s=n("kJWO"),u=n("jZKg"),o=n("Lhse"),l=n("c2HN"),d=n("I55L");function c(t,e){return e?function(t,e){if(null!=t){if(function(t){return t&&"function"==typeof t[s.a]}(t))return function(t,e){return new a.a(n=>{const a=new i.a;return a.add(e.schedule(()=>{const r=t[s.a]();a.add(r.subscribe({next(t){a.add(e.schedule(()=>n.next(t)))},error(t){a.add(e.schedule(()=>n.error(t)))},complete(){a.add(e.schedule(()=>n.complete()))}}))})),a})}(t,e);if(Object(l.a)(t))return function(t,e){return new a.a(n=>{const a=new i.a;return a.add(e.schedule(()=>t.then(t=>{a.add(e.schedule(()=>{n.next(t),a.add(e.schedule(()=>n.complete()))}))},t=>{a.add(e.schedule(()=>n.error(t)))}))),a})}(t,e);if(Object(d.a)(t))return Object(u.a)(t,e);if(function(t){return t&&"function"==typeof t[o.a]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new a.a(n=>{const a=new i.a;let r;return a.add(()=>{r&&"function"==typeof r.return&&r.return()}),a.add(e.schedule(()=>{r=t[o.a](),a.add(e.schedule((function(){if(n.closed)return;let t,e;try{const n=r.next();t=n.value,e=n.done}catch(a){return void n.error(a)}e?n.complete():(n.next(t),this.schedule())})))})),a})}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}(t,e):t instanceof a.a?t:new a.a(Object(r.a)(t))}n.d(e,"a",(function(){return c}))},ChqD:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},CjzT:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},CoRJ:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n("wd/R"))},CoVI:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("2vnA"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(t,e){this.templateRef=t,this.viewContainer=e,this.templateBindings={}}return t.prototype.ngOnInit=function(){this.view=this.viewContainer.createEmbeddedView(this.templateRef),this.dispose&&this.dispose(),this.shouldDetach()&&this.view.detach(),this.autoDetect(this.view)},t.prototype.shouldDetach=function(){return this.treeMobxAutorun&&this.treeMobxAutorun.detach},t.prototype.autoDetect=function(t){this.dispose=Object(r.b)((function(){return t.detectChanges()}))},t.prototype.ngOnDestroy=function(){this.dispose&&this.dispose()},i([Object(a.Input)(),s("design:type",Object)],t.prototype,"treeMobxAutorun",void 0),i([Object(a.Directive)({selector:"[treeMobxAutorun]"}),s("design:paramtypes",[a.TemplateRef,a.ViewContainerRef])],t)}()},CqXF:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t){return e=>e.lift(new i(t))}class i{constructor(t){this.value=t}call(t,e){return e.subscribe(new s(t,this.value))}}class s extends a.a{constructor(t,e){super(t),this.value=e}_next(t){this.destination.next(this.value)}}},CslI:function(t,e,n){var a=n("LaC8"),r=n("+FhV"),i=n("x3F9"),s=Function.prototype.toString,u=Object.prototype.hasOwnProperty,o=s.call(Object);t.exports=function(t){if(!i(t)||"[object Object]"!=a(t))return!1;var e=r(t);if(null===e)return!0;var n=u.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==o}},CwBR:function(t,e,n){var a=n("pMcL"),r=n("PHub"),i=n("0GLT"),s=a?a.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||r(t)||!!(s&&t&&t[s])}},"D/JM":function(t,e,n){!function(t){"use strict";t.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},D0XW:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("3N8a");const r=new(n("IjjT").a)(a.a)},D4zM:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e){this.elementRef=t,this.renderer=e}ngOnInit(){this.renderer.setAttribute(this.elementRef.nativeElement,"tabindex","-1"),this.iElement=this.renderer.createElement("i"),this.renderer.addClass(this.iElement,"fa"),this.renderer.appendChild(this.elementRef.nativeElement,this.iElement),this.update()}getInputElement(){return document.getElementById(this.cdPasswordButton)}update(){const t=this.getInputElement();t&&"text"===t.type?(this.renderer.removeClass(this.iElement,"fa-eye"),this.renderer.addClass(this.iElement,"fa-eye-slash")):(this.renderer.removeClass(this.iElement,"fa-eye-slash"),this.renderer.addClass(this.iElement,"fa-eye"))}onClick(){const t=this.getInputElement();t.type="password"===t.type?"text":"password",this.update()}}},DH7j:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>Array.isArray||(t=>t&&"number"==typeof t.length))()},"DKr+":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["thodde secondanim","thodde second"],ss:[t+" secondanim",t+" second"],m:["eka mintan","ek minute"],mm:[t+" mintanim",t+" mintam"],h:["eka voran","ek vor"],hh:[t+" voranim",t+" voram"],d:["eka disan","ek dis"],dd:[t+" disanim",t+" dis"],M:["eka mhoinean","ek mhoino"],MM:[t+" mhoineanim",t+" mhoine"],y:["eka vorsan","ek voros"],yy:[t+" vorsanim",t+" vorsam"]};return e?r[n][0]:r[n][1]}t.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(t,e){switch(e){case"D":return t+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return t}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(t,e){return 12===t&&(t=0),"rati"===e?t<4?t:t+12:"sokalli"===e?t:"donparam"===e?t>12?t:t+12:"sanje"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"rati":t<12?"sokalli":t<16?"donparam":t<20?"sanje":"rati"}})}(n("wd/R"))},DLK6:function(t,e,n){var a=n("4zBA"),r=n("ewvW"),i=Math.floor,s=a("".charAt),u=a("".replace),o=a("".slice),l=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,d=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,a,c,f){var h=n+t.length,g=a.length,p=d;return void 0!==c&&(c=r(c),p=l),u(f,p,(function(r,u){var l;switch(s(u,0)){case"$":return"$";case"&":return t;case"`":return o(e,0,n);case"'":return o(e,h);case"<":l=c[o(u,1,-1)];break;default:var d=+u;if(0===d)return r;if(d>g){var f=i(d/10);return 0===f?r:f<=g?void 0===a[f-1]?s(u,1):a[f-1]+s(u,1):r}l=a[d-1]}return void 0===l?"":l}))}},DNAf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{constructor(t,e){this.customValidations={},this.i18n=e,this.empty=this.i18n("No items selected."),this.selectionLimit={tooltip:this.i18n("Deselect item to select again"),text:this.i18n("Selection limit reached")},this.filter=this.i18n("Filter tags"),this.add=this.i18n("Add badge"),this.noOptions=this.i18n("There are no items available."),a.merge(this,t)}}},DPsx:function(t,e,n){var a=n("g6v/"),r=n("0Dky"),i=n("zBJ4");t.exports=!a&&!r((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},DSvg:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("vkgz"),r=n("aexS"),i=n("8Y7J"),s=n("IheW"),u=n("iInd"),o=n("pL04");let l=(()=>{class t{constructor(t,e,n){this.authStorageService=t,this.http=e,this.router=n}check(t){return this.http.post("api/auth/check",{token:t})}login(t){return this.http.post("api/auth",t).pipe(Object(a.a)(t=>{this.authStorageService.set(t.username,t.permissions,t.sso,t.pwdExpirationDate,t.pwdUpdateRequired)}))}logout(t=null){return this.http.post("api/auth/logout",null).subscribe(e=>{this.authStorageService.remove(),this.router.navigate(["/login"],{skipLocationChange:!0}),t&&t(),window.location.replace(e.redirect_url)})}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](r.a),i["ɵɵinject"](s.c),i["ɵɵinject"](u.m))},token:t,providedIn:o.a}),t})()},DVFp:function(t,e,n){var a=n("2oRo").String;t.exports=function(t){try{return a(t)}catch(e){return"Object"}}},Dd78:function(t,e,n){var a=n("qG07"),r=n("aT2Y"),i=n("Gf4A");t.exports=function(){this.size=0,this.__data__={hash:new a,map:new(i||r),string:new a}}},Dkky:function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},Dmvi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},DoHr:function(t,e,n){!function(t){"use strict";var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};t.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'ıncı";var a=t%10;return t+(e[a]||e[t%100-a]||e[t>=100?100:null])}},week:{dow:1,doy:7}})}(n("wd/R"))},DqMs:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("IZUe"),s=n("MdoF"),u=n("CNMR");n("/NlG"),n("GiVz"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return v}));var o=a["ɵcrt"]({encapsulation:0,styles:[[".alert-panel-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:.5em}.alert-panel-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"td",[["class","alert-panel-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpad"](4,1)],(function(t,e){var n=e.component,r=a["ɵinlineInterpolate"](2,"alert-",n.bootstrapClass," ",n.typeIcon,""),i=t(e,4,0,n.icons.large3x);t(e,3,0,r,i)}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-title"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,2,"td",[["class","alert-panel-text"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](9,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.showIcon),t(e,5,0,n.showTitle),t(e,9,0,a["ɵnov"](e.parent,6))}),null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-icon"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"i",[["aria-hidden","true"]],[[8,"className",0]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](2,"alert-",n.bootstrapClass," ",n.typeIcon,""))}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-title"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](5,0,null,null,2,"td",[["class","alert-panel-text"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.showIcon),t(e,4,0,n.showTitle),t(e,7,0,a["ɵnov"](e.parent,6))}),null)}function m(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"button",[["autofocus",""],["class","btn btn-light tc_backButton"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.backAction.emit()&&a),a}),null,null)),a["ɵdid"](2,4210688,null,0,i.a,[a.ElementRef],{autofocus:[0,"autofocus"]},null),(t()(),a["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,2,0,"")}),null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"alert",[],null,[[null,"onClose"]],(function(t,e,n){var a=!0;return"onClose"===e&&(a=!1!==t.component.onClose()&&a),a}),s.c,s.b)),a["ɵdid"](1,114688,null,0,u.a,[u.b,a.ChangeDetectorRef],{type:[0,"type"],dismissible:[1,"dismissible"]},{onClose:"onClose"}),(t()(),a["ɵeld"](2,0,null,0,3,"table",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["slim",2]],null,0,null,b)),(t()(),a["ɵand"](0,[["content",2]],null,0,null,m)),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](8,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](1,"",n.bootstrapClass,""),n.dismissible),t(e,4,0,"normal"===n.size,a["ɵnov"](e,5)),t(e,8,0,n.backAction.observers.length>0)}),null)}},Dwqy:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("wd/R");class r{constructor(){}transform(t){return t?a(1e3*t).fromNow():"unknown"}}},DxQv:function(t,e,n){!function(t){"use strict";t.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},Dzi0:function(t,e,n){!function(t){"use strict";t.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},"E+lV":function(t,e,n){!function(t){"use strict";var e={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},E2fk:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return"[INF]"===t?"info":"[WRN]"===t?"warn":"[ERR]"===t?"err":""}}},E9XD:function(t,e,n){"use strict";var a=n("I+eb"),r=n("1Y/n").left,i=n("pkCn"),s=n("LQDL"),u=n("YF1G");a({target:"Array",proto:!0,forced:!i("reduce")||!u&&s>79&&s<83},{reduce:function(t){var e=arguments.length;return r(this,t,e,e>1?arguments[1]:void 0)}})},EApP:function(t,e,n){"use strict";n.d(e,"a",(function(){return _})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return v})),n.d(e,"d",(function(){return u})),n.d(e,"e",(function(){return S})),n.d(e,"f",(function(){return N})),n.d(e,"g",(function(){return o})),n.d(e,"h",(function(){return w})),n.d(e,"i",(function(){return T})),n.d(e,"j",(function(){return y}));var a=n("8Y7J"),r=n("XNiG"),i=n("cUpR"),s=n("SVse");let u=class{};class o{constructor(t,e,n,a,i,s){this.toastId=t,this.config=e,this.message=n,this.title=a,this.toastType=i,this.toastRef=s,this._onTap=new r.a,this._onAction=new r.a,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(t){this._onAction.next(t)}onAction(){return this._onAction.asObservable()}}const l={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing"},d=new a.InjectionToken("ToastConfig");class c{constructor(t,e){this.component=t,this.injector=e}attach(t,e){return this._attachedHost=t,t.attach(this,e)}detach(){const t=this._attachedHost;if(t)return this._attachedHost=void 0,t.detach()}get isAttached(){return null!=this._attachedHost}setAttachedHost(t){this._attachedHost=t}}class f extends class{attach(t,e){return this._attachedPortal=t,this.attachComponentPortal(t,e)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(t){this._disposeFn=t}}{constructor(t,e,n){super(),this._hostDomElement=t,this._componentFactoryResolver=e,this._appRef=n}attachComponentPortal(t,e){const n=this._componentFactoryResolver.resolveComponentFactory(t.component);let a;return a=n.create(t.injector),this._appRef.attachView(a.hostView),this.setDisposeFn(()=>{this._appRef.detachView(a.hostView),a.destroy()}),e?this._hostDomElement.insertBefore(this._getComponentRootNode(a),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(a)),a}_getComponentRootNode(t){return t.hostView.rootNodes[0]}}let h=(()=>{let t=class{constructor(t){this._document=t}ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const t=this._document.createElement("div");t.classList.add("overlay-container"),this._document.body.appendChild(t),this._containerElement=t}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(s.DOCUMENT))},token:t,providedIn:"root"}),t})();class g{constructor(t){this._portalHost=t}attach(t,e=!0){return this._portalHost.attach(t,e)}detach(){return this._portalHost.detach()}}let p=(()=>{let t=class{constructor(t,e,n,a){this._overlayContainer=t,this._componentFactoryResolver=e,this._appRef=n,this._document=a,this._paneElements=new Map}create(t,e){return this._createOverlayRef(this.getPaneElement(t,e))}getPaneElement(t="",e){return this._paneElements.get(e)||this._paneElements.set(e,{}),this._paneElements.get(e)[t]||(this._paneElements.get(e)[t]=this._createPaneElement(t,e)),this._paneElements.get(e)[t]}_createPaneElement(t,e){const n=this._document.createElement("div");return n.id="toast-container",n.classList.add(t),n.classList.add("toast-container"),e?e.getContainerElement().appendChild(n):this._overlayContainer.getContainerElement().appendChild(n),n}_createPortalHost(t){return new f(t,this._componentFactoryResolver,this._appRef)}_createOverlayRef(t){return new g(this._createPortalHost(t))}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(h),Object(a["ɵɵinject"])(a.ComponentFactoryResolver),Object(a["ɵɵinject"])(a.ApplicationRef),Object(a["ɵɵinject"])(s.DOCUMENT))},token:t,providedIn:"root"}),t})();class b{constructor(t){this._overlayRef=t,this.duplicatesCount=0,this._afterClosed=new r.a,this._activate=new r.a,this._manualClose=new r.a,this._resetTimeout=new r.a,this._countDuplicate=new r.a}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(t,e){t&&this._resetTimeout.next(),e&&this._countDuplicate.next(++this.duplicatesCount)}}class m{constructor(t,e){this._toastPackage=t,this._parentInjector=e}get(t,e,n){return t===o?this._toastPackage:this._parentInjector.get(t,e,n)}}let y=(()=>{let t=class{constructor(t,e,n,a,r){this.overlay=e,this._injector=n,this.sanitizer=a,this.ngZone=r,this.currentlyActive=0,this.toasts=[],this.index=0,this.toastrConfig=Object.assign({},t.default,t.config),t.config.iconClasses&&(this.toastrConfig.iconClasses=Object.assign({},t.default.iconClasses,t.config.iconClasses))}show(t,e,n={},a=""){return this._preBuildNotification(a,t,e,this.applyConfig(n))}success(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.success||"",t,e,this.applyConfig(n))}error(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.error||"",t,e,this.applyConfig(n))}info(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.info||"",t,e,this.applyConfig(n))}warning(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.warning||"",t,e,this.applyConfig(n))}clear(t){for(const e of this.toasts)if(void 0!==t){if(e.toastId===t)return void e.toastRef.manualClose()}else e.toastRef.manualClose()}remove(t){const e=this._findToast(t);if(!e)return!1;if(e.activeToast.toastRef.close(),this.toasts.splice(e.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length)return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){const t=this.toasts[this.currentlyActive].toastRef;t.isInactive()||(this.currentlyActive=this.currentlyActive+1,t.activate())}return!0}findDuplicate(t,e,n){for(const a of this.toasts)if(a.message===t)return a.toastRef.onDuplicate(e,n),a;return null}applyConfig(t={}){return Object.assign({},this.toastrConfig,t)}_findToast(t){for(let e=0;e<this.toasts.length;e++)if(this.toasts[e].toastId===t)return{index:e,activeToast:this.toasts[e]};return null}_preBuildNotification(t,e,n,a){return a.onActivateTick?this.ngZone.run(()=>this._buildNotification(t,e,n,a)):this._buildNotification(t,e,n,a)}_buildNotification(t,e,n,r){if(!r.toastComponent)throw new Error("toastComponent required");const i=this.findDuplicate(e,this.toastrConfig.resetTimeoutOnDuplicate&&r.timeOut>0,this.toastrConfig.countDuplicates);if(e&&this.toastrConfig.preventDuplicates&&null!==i)return i;this.previousToastMessage=e;let s=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(s=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));const u=this.overlay.create(r.positionClass,this.overlayContainer);this.index=this.index+1;let l=e;e&&r.enableHtml&&(l=this.sanitizer.sanitize(a.SecurityContext.HTML,e));const d=new b(u),f=new o(this.index,r,l,n,t,d),h=new m(f,this._injector),g=new c(r.toastComponent,h),p=u.attach(g,this.toastrConfig.newestOnTop);d.componentInstance=p._component;const y={toastId:this.index,message:e||"",toastRef:d,onShown:d.afterActivate(),onHidden:d.afterClosed(),onTap:f.onTap(),onAction:f.onAction(),portal:p};return s||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{y.toastRef.activate()})),this.toasts.push(y),y}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(d),Object(a["ɵɵinject"])(p),Object(a["ɵɵinject"])(a.INJECTOR),Object(a["ɵɵinject"])(i.b),Object(a["ɵɵinject"])(a.NgZone))},token:t,providedIn:"root"}),t})(),v=class{constructor(t,e,n){this.toastrService=t,this.toastPackage=e,this.ngZone=n,this.width=-1,this.toastClasses="",this.state={value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}},this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(t=>{this.duplicatesCount=t})}get displayStyle(){if("inactive"===this.state.value)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state=Object.assign({},this.state,{value:"active"}),!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const t=(new Date).getTime();this.width=(this.hideTime-t)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state=Object.assign({},this.state,{value:"active"}),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.state=Object.assign({},this.state,{value:"removed"}),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){"removed"!==this.state.value&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0!==this.options.disableTimeOut&&"extendedTimeOut"!==this.options.disableTimeOut&&0!==this.options.extendedTimeOut&&"removed"!==this.state.value&&(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(t,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(t),e)):this.timeout=setTimeout(()=>t(),e)}outsideInterval(t,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(t),e)):this.intervalId=setInterval(()=>t(),e)}runInsideAngular(t){this.ngZone?this.ngZone.run(()=>t()):t()}};var x;const _=Object.assign({},l,{toastComponent:v});let T=x=class{static forRoot(t={}){return{ngModule:x,providers:[{provide:d,useValue:{default:_,config:t}}]}}},w=class{static forRoot(t={}){return{ngModule:T,providers:[{provide:d,useValue:{default:l,config:t}}]}}};var O;let S=class{constructor(t,e,n){this.toastrService=t,this.toastPackage=e,this.appRef=n,this.width=-1,this.toastClasses="",this.state="inactive",this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(t=>{this.duplicatesCount=t})}get displayStyle(){if("inactive"===this.state)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state="active",!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const t=(new Date).getTime();this.width=(this.hideTime-t)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state="active",this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=(new Date).getTime()+(this.originalTimeout||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){"removed"!==this.state&&(clearTimeout(this.timeout),this.state="removed",this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){"removed"!==this.state&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0!==this.options.disableTimeOut&&"extendedTimeOut"!==this.options.disableTimeOut&&0!==this.options.extendedTimeOut&&"removed"!==this.state&&(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}};const I=Object.assign({},l,{toastComponent:S});let N=O=class{static forRoot(t={}){return{ngModule:O,providers:[{provide:d,useValue:{default:I,config:t}}]}}}},EEJc:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("ajRT");n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return s})),n.d(e,"a",(function(){return o}));var i=a["ɵcrt"]({encapsulation:0,styles:[[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #d1d1d1;background-color:#f5f5f5;border-radius:5px 5px 0 0}  .modal-footer{border-bottom:1px solid #d1d1d1;background-color:#f5f5f5;border-radius:0 0 5px 5px}  .modal-body{max-height:70vh;overflow-y:auto;overflow-x:hidden}"]],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"h4",[["class","modal-title float-left"]],null,null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵeld"](3,0,null,null,2,"button",[["aria-label","Close"],["class","close float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.close()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["×"])),a["ɵncd"](null,1)],null,null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-modal",[],null,null,null,s,i)),a["ɵdid"](1,49152,null,0,r.a,[],null,null)],null,null)}var o=a["ɵccf"]("cd-modal",r.a,u,{modalRef:"modalRef"},{hide:"hide"},[".modal-title",".modal-content"])},EHx7:function(t,e,n){var a=n("0Dky"),r=n("2oRo").RegExp;t.exports=a((function(){var t=r("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")}))},ENF9:function(t,e,n){"use strict";var a,r=n("2oRo"),i=n("4zBA"),s=n("4syw"),u=n("8YOa"),o=n("bWFh"),l=n("rKzb"),d=n("hh1v"),c=n("T63f"),f=n("afO8").enforce,h=n("f5p1"),g=!r.ActiveXObject&&"ActiveXObject"in r,p=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},b=o("WeakMap",p,l);if(h&&g){a=l.getConstructor(p,"WeakMap",!0),u.enable();var m=b.prototype,y=i(m.delete),v=i(m.has),x=i(m.get),_=i(m.set);s(m,{delete:function(t){if(d(t)&&!c(t)){var e=f(this);return e.frozen||(e.frozen=new a),y(this,t)||e.frozen.delete(t)}return y(this,t)},has:function(t){if(d(t)&&!c(t)){var e=f(this);return e.frozen||(e.frozen=new a),v(this,t)||e.frozen.has(t)}return v(this,t)},get:function(t){if(d(t)&&!c(t)){var e=f(this);return e.frozen||(e.frozen=new a),v(this,t)?x(this,t):e.frozen.get(t)}return x(this,t)},set:function(t,e){if(d(t)&&!c(t)){var n=f(this);n.frozen||(n.frozen=new a),v(this,t)?_(this,t,e):n.frozen.set(t,e)}else _(this,t,e);return this}})}},EOgW:function(t,e,n){!function(t){"use strict";t.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(t){return"หลังเที่ยง"===t},meridiem:function(t,e,n){return t<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("wd/R"))},ES0t:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("KOzp"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:[".bs3.popover-top[_nghost-%COMP%] {\n      margin-bottom: 10px;\n    }\n    .bs3.popover.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -2px;\n    }\n    .bs3.popover.top[_nghost-%COMP%] {\n      margin-bottom: 10px;\n    }\n    .popover.bottom[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -4px;\n    }\n    .bs3.bs-popover-left[_nghost-%COMP%] {\n      margin-right: .5rem;\n    }\n    .bs3.bs-popover-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs3.bs-popover-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%]{\n      margin: .3rem 0;\n    }"],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"h3",[["class","popover-title popover-header"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function o(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","popover-arrow arrow"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"div",[["class","popover-content popover-body"]],null,null,null,null,null)),a["ɵncd"](null,0)],(function(t,e){t(e,2,0,e.component.title)}),null)}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"popover-container",[["role","tooltip"],["style","display:block;"]],[[8,"className",0],[2,"show",null],[2,"bs3",null]],null,null,o,s)),a["ɵdid"](1,49152,null,0,r.b,[r.a],null,null)],null,(function(t,e){t(e,0,0,"popover in popover-"+a["ɵnov"](e,1).placement+" bs-popover-"+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).containerClass,!a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).isBs3)}))}var d=a["ɵccf"]("popover-container",r.b,l,{placement:"placement",title:"title"},{},["*"])},EWmY:function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},EY2u:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("HDdC");const r=new a.a(t=>t.complete());function i(t){return t?function(t){return new a.a(e=>t.schedule(()=>e.complete()))}(t):r}},Eey9:function(t,e){t.exports=function(t,e,n){var a=-1,r=t.length;e<0&&(e=-e>r?0:r+e),(n=n>r?r:n)<0&&(n+=r),r=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(r);++a<r;)i[a]=t[a+e];return i}},EgGo:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("SVse"),r=n("sne2");class i{constructor(t){this.base=t}static concatURLSegments(t){return t.reduce(a.Location.joinWithSlash)}static buildURL(t,...e){return i.concatURLSegments([...t?["/"]:[],...e])}getURL(t,e=!0,...n){return i.buildURL(e,this.base,t,...n)}getCreate(t=!0){return this.getURL(r.e.CREATE,t)}getCreateFrom(t,e=!0){return this.getURL(r.e.CREATE,e,t)}getDelete(t=!0){return this.getURL(r.e.DELETE,t)}getEdit(t,e=!0){return this.getURL(r.e.EDIT,e,t)}getUpdate(t,e=!0){return this.getURL(r.e.UPDATE,e,t)}getAdd(t=!0){return this.getURL(r.e.ADD,t)}getRemove(t=!0){return this.getURL(r.e.REMOVE,t)}getRecreate(t,e=!0){return this.getURL(r.e.RECREATE,e,t)}}},EiPl:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="de-DE">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Navigation umschalten</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dashboard</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Verzeichnis</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitore</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfiguration</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH-Zuordnung</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager-Module</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Protokolle</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Überwachung</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pools</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Block</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Images</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Spiegelung</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Dateisysteme</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektgateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Buckets</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Daten \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> für\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>werden abgerufen. Bitte warten...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Zuvor zwischengespeicherte Daten\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  für \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> werden angezeigt.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Daten\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> für\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> konnten nicht geladen werden.\n  Prüfen Sie die Clusterintegrität.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Benachrichtigungen löschen</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Benachrichtigungen entfernen</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Dauer:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>Es sind keine Benachrichtigungen verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Aufträge und Benachrichtigungen</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sprache auswählen</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Bereichsdaten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Lesen Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Überwachungsfunktion.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Das Grafana-Dashboard ist nicht vorhanden. In der\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> wird beschrieben,\n  wie Grafana Dashboards hinzugefügt werden.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana-Zeitauswahl</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Einstellungen für Zurücksetzungen</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Entfernen Sie den aktuellen Konfigurationswert. Stattdessen wird der Standard-Konfigurationswert übernommen und verwendet.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zurück</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Das Passwort läuft in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>weniger als 1 \n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>Tag ab. Klicken Sie \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> hier \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, um es jetzt zu ändern.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Das Passwort läuft in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>Tag(en) ab. Klicken Sie \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> hier \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, um es jetzt zu ändern.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Das Modul "Orchestrator" ist nicht verfügbar. Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>zum Konfigurieren und Aktivieren dieses Moduls.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Daten konnten nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Filter löschen</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>ausgewählt</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>gefunden</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>insgesamt</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Name</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Beschreibung</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Detaillierte Beschreibung</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Standard</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon-Standard</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Werte</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Standard --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>wahr</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>falsch</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Speichern</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH-Betrachter</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Laden...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Hostname</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Dies ist ein Pflichtfeld.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>Der ausgewählte Hostname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Sind Sie sicher dass Sie die ausgewählten Einträge \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> möchten?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Sind Sie sicher dass Sie die ausgewählten \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> möchten?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ja, ich bin sicher.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Abbrechen</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Schließen</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste mit Hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Gesamtleistung</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Laufwerke</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Keine Einträge gefunden</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Clusterprotokolle</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Revisionsprotokoll</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priorität:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Schlüsselwort:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Datum:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datumsauswahl</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Zeitraum:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Konfiguration wird geladen...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Die Konfiguration konnte nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Manager-Modul bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Der eingegebene Wert ist kein gültiger UUID, z. B.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Der eingegebene Wert muss eine gültige IP-Adresse sein.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er muss kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/> sein oder diesem Wert entsprechen.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er muss größer als \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/> sein oder diesem Wert entsprechen.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Der eingegebene Wert muss eine Zahl sein.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Der eingegebene Wert muss eine Zahl oder Dezimalzahl sein.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aktualisiere</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Cluster-ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Monmap geändert</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>Monmap-Epoche</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>erforderliche Verbindung</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>erforderliche Überwachung</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>In Quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nicht in Quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>Vorschau der OSD-Erstellung</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> Laufwerke\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Löschen</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Geteilte Laufwerke</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL Slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>Wie viele OSDs pro WAL-Laufwerk.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Geben Sie 0 an, um das Orchestrator-Backend entscheiden zu lassen.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Der Wert sollte größer als oder gleich 0 sein</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB Slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>Wie viele OSDs pro DB-Laufwerk.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funktionen</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Vorschau</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Clusterweite OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Absenden</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Erweitert...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Erweiterte Konfigurationsoptionen</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD-Wiederherstellungspriorität</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorität</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Prioritätswerte anpassen</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Dies ist ein Pflichtfeld!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Der Wert muss zwischen 0 und 1 liegen.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Neu gewichten</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Tief } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {tief } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD-Liste</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Aktive Warnungen</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>Alle Warnungen</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Wählen Sie das zu vergleichende Attribut --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Wert</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Regulären Ausdruck verwenden</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Löschen</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Das Bearbeiten einer Stummschaltung löscht die Vorherige und legt eine neue Stummschaltung an.</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Ersteller</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Kommentar</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Startzeit</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>Wenn die Startzeit in der Vergangenheit liegt, wird die Erstellungszeit verwendet</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Dauer</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>Ende</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Integrität</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiken</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für NFS Ganesha.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clients</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Jeder Client hat Zugriff</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adressen</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Pflichtfeld</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Muss mindestens einen kommagetrennten Wert enthalten</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Beispielsweise:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Zugriffstyp</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Clients hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Kein Cluster verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Cluster auswählen --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Daemon hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Speicher-Back-End</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Keine Datenpools verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Speicher-Back-End auswählen --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Objektgatewaybenutzer</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Keine Benutzer verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Objektgatewaybenutzer auswählen --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS-Benutzer-ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- keine Clients verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx-Client auswählen --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS-Name</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- Kein CephFS Dateisystem verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- CephFS Dateisystem auswählen --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Sicherheitsbezeichnung</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Sicherheitsbezeichnung aktivieren</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS-Pfad</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Pfad muss mit einem \'/\' beginnen und kann von einem Wort gefolgt werden</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Neues Verzeichnis wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Pfad</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Pfad darf nur ein einzelner \'/\' oder ein Wort sein</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Neuer Bucket wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS-Protokoll</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS-Tag</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternativer Zugriff für \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>-Mountpunkte (dürfen keinen führenden / enthalten)\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Clients können Unterverzeichnisse möglicherweise nicht mounten (d. h. wenn der Pfad = foo ist, kann der Client foo/baz möglicherweise nicht mounten).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Wenn unterschiedliche Tag-Optionen verwendet werden, wird derselbe Pfad möglicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>Die Position dieses \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>-Exports\n                auf dem \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo-Dateisystem\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (muss eindeutig sein).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Wenn unterschiedliche Pseudo-Optionen verwendet werden, wird derselbe Pfad möglicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Kein Zugriffstyp verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Zugriffstyp auswählen --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>Das NFS-Backend für das Objektgateway besitzt eine Reihe von\n Einschränkungen, die Schreibvorgänge von Anwendungen auf diese\n Freigaben ernsthaft beeinträchtigen. Bitte konsultieren Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> Dokumentation \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> für weitere Informationen, bevor Sie den Schreibzugriff aktivieren.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Kein Squash verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Durchzuführende Benutzer-ID-Squashing-Art auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportprotokoll</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Altes Passwort</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>Das alte und neue Passwort müssen unterschiedlich sein.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>Neues Passwort</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Neues Passwort bestätigen</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Passwortbestätigung stimmt nicht mit dem neuen Passwort überein.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Bitte legen Sie ein neues Passwort fest.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>Sie werden anschließend auf die Login-Seite weitergeleitet.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Willkommen bei Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Benutzername ist erforderlich</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Passwort ist erforderlich</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Anmeldung</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Der Benutzer ist in Ceph leider nicht enthalten.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Kehren Sie zur \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Anmeldeseite\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zurück. Sie werden vom Identitätsanbieter abgemeldet, wenn Sie versuchen, sich erneut anzumelden.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Verboten</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Leider sind Sie nicht berechtigt, den gewünschten Inhalt anzuzeigen.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Leider konnte der gewünschte Inhalt nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Weder Hostname noch OSD ID angegeben</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>bestanden</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>fehlgeschlagen</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Laufwerksinformationen</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>Keine SMART-Daten für dieses Laufwerk verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART-Daten werden geladen.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD-Konfiguration</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Entfernen Sie den lokalen Konfigurationswert. Stattdessen wird der übergeordnete Konfigurationswert übernommen und verwendet.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Der Mindestwert lautet 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Pool-Liste</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Der Name darf nur alphanumerische Zeichen, Bindestriche und Unterstriche enthalten.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Der ausgewählte Erasure-Coding-Profilname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Laufwerksklasse</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Datenblöcke (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Muss größer oder gleich 2 sein.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Datenblöcke für die Codierung (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Muss größer oder gleich 1 sein.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Dauerhaftigkeitsschätzung (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Standort (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush-Ausfalldomäne</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush-Standort</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Keine</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technik</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Paketgröße</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush-Stamm</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crush-Geräteklasse</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>beliebig</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Verzeichnis</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Name...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Der ausgewählte Poolname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Pooltyp</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Pooltyp auswählen --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoskalierung</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Platzierungsgruppen</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Es wird mindestens eine Platzierungsgruppe benötigt.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Ihr Cluster kann nicht so viele Platzierungsgruppen verarbeiten. Berechnen Sie die benötigte Anzahl an Platzierungsgruppen.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Hilfe zur Berechnung</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>Die aktuellen Einstellungen für die Platzierungsgruppen wurden für Sie berechnet.\n                    Stellen Sie vor dem Senden sicher, dass die Werte Ihren Anforderungen entsprechen.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Reproduzierte Größe</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>Die angegebene Größe liegt außerhalb des Bereichs. Gültige Werte liegen zwischen\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> und \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flags</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC-Überschreibungen</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Anwendungen</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Kein Erasure-Coding-Profil verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Erasure-Coding-Profil auswählen --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crush-Regelsatz</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>Ein neuer CRUSH Regelsatz wird implizit erstellt.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>Keine Regeln vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crush-Regel auswählen --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush-Regel</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush-Schritte</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Komprimierung</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modus</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorithmus</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Kein Komprimierungsalgorithmus für Erasure-Coding verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimale Blobgröße</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>z. B. 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Wert sollte größer als 0 sein</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Wert sollte niedriger als die maximale Blobgröße sein</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maximale Blobgröße</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>z. B. 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Wert sollte größer als die minimale Blobgröße sein</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Verhältnis</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Komprimierungsverhältnis</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Wert sollte zwischen 0,0 und 1,0 liegen</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Kontingente</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max. Bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Lassen Sie das Feld leer oder geben Sie 0 an, um dieses Quota zu deaktivieren.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>Ein gültiges Kontingent sollte größer als 0 sein.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>z. B. 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max. Objekte</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>Der Wert sollte größer als oder gleich 0 sein</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Details</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Leistungsdetails</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Details zu den Cache-Ebenen</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Bootstrap-Token erstellen</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site-Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>Mindestens ein Pool ist erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Erzeugen</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Erzeugtes Token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Bootstrap-Token importieren</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Richtung</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>Der Token ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Site-Namen bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site-Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Image in Papierkorb verschieben</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Schutz läuft ab am</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NICHT GESCHÜTZT</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Falsches Datumsformat. Verwenden Sie "TT.MM.JJJJ HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Schutz ist bereits abgelaufen. Wählen Sie ein künftiges Datum aus oder lassen Sie es leer.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Image verschieben</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Muss grösser oder gleich \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Muss kleiner oder gleich \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Übersicht</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Ziele</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ermittlungsauthentifizierung</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Benutzernamen müssen zwischen 8 und 64 Zeichen lang sein und\n              dürfen nur Buchstaben, \'.\', \'@\', \'-\', \'_\' oder \':\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Passwort</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Gemeinsamer Benutzer</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Gemeinsames Passwort</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Lesen Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für iSCSI-Ziele.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Verfügbare Informationen:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI-Ziele nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Ermittlungsauthentifizierung</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Nur für RBD-Images verfügbar, bei denen \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> aktiviert ist\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datenpool</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Erstellt</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Größe</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objekte</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Objektgröße</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Bereitgestellt</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>n. v.</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Bereitgestellt gesamt</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Striping-Einheit</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Striping-Anzahl</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Übergeordnet</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Präfix für Blockname</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Reihenfolge</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshots</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Diese Einstellung überschreibt den globalen Wert</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Dies ist der globale Wert. Kein Wert für diese Option wurde für dieses Image festgelegt.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' und \'@\' sind nicht zulässig.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Keine rbd-Pools verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pool auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- Keine Namensräume verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Namensraum auswählen --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Dedizierten Datenpool verwenden</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datenpool</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Dedizierter Pool zur Speicherung von RBD-Objektdaten.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Sie müssen die Größe erhöhen.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Erweitert</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Striping</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Stripe-Einheit</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Stripe-Einheit auswählen --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Dies ist ein Pflichtfeld, da eine Stripe-Anzahl definiert wurde!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Die Stripe-Einheit ist größer als die Objektgröße.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Stripe-Anzahl</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Dies ist ein Pflichtfeld, da eine Stripe-Einheit definiert wurde!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Die Stripe-Anzahl muss größer als 0 sein.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Namensraum anlegen</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namensraum existiert bereits.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Sie sind dabei, ein Rollback durchzuführen</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Papierkorb bereinigen</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Alle</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Poolname...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Image wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Zum Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>Neuen Namen des Images eingeben und klicken</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Neuer Name</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Abgelaufen am</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Geschützt bis</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>Dieses Image ist geschützt bis \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI-Topologie</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Konfigurieren</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Eine Änderung dieser Parameter von ihren Standardwerten ist in der Regel nicht erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Bezeichner</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Bestätigen</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Erweiterte Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Ziel-IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN hat ein fehlerhaftes Muster.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Eine IQN hat die folgende Notation \n\'iqn.$jahr-$monat.$umkehradresse:$definierterName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Zum Beispiel: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Weitere Informationen</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Erweiterte Einstellungen bei diesem Ziel wurden geändert.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portale</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Portal hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Es sind mindestens \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> Gateways erforderlich.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Einstellungen bei diesem Image wurden geändert.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Image hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL-Authentifizierung</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Initiatoren</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Initiator</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Client-IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Initiator-IQN muss eindeutig sein.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Benutzernamen müssen zwischen 8 und 64 Zeichen lang sein und\n                        dürfen nur Buchstaben, \'.\', \'@\', \'-\', \'_\' oder \':\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Der Initiator gehört zu einer Gruppe. Images werden in der Gruppe konfiguriert.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Keine Elemente hinzugefügt.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Initiator hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Gruppen</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Gruppe</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Gruppe hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namensräume</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Papierkorb</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Probleme</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Wird synchronisiert</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Fertig</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Spiegelungsmodus für Pool bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Wählen Sie zum Bearbeiten des Spiegelungsmodus für den Pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> einen neuen Modus aus der Liste aus und klicken Sie auf \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aktualisieren\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Vor dem Deaktivieren der Spiegelung müssen Peer-Cluster entfernt werden.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  Peer für Poolspiegelung\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Bearbeiten} other {Hinzufügen} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Clustername</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Der Clustername ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX-ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX-ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>Die CephX ID ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adressen der Monitore</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Kommagetrennte Adressen...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Die Anrede ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-codierter Schlüssel...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX-Schlüssel muss base64-codiert sein.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Leistungsindikatoren nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für das Objektgateway.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Liste der Daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Leistungsindikatoren</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Bucket-Daten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Der Wert ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Der ausgewählte Name wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Inhaber</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Benutzer auswählen --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Aktiviert</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Indextyp</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Platzierungsregel</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marker</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Maximum für Marker</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Masterversion</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Änderungszeit</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Zonengruppe</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Bucket-Quote</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maximale Größe</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Unbegrenzt</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Maximale Objekte</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Benutzername</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Benutzername auswählen --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Schlüssel automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Zugriffsschlüssel</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Geheimer Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Vollständiger Name</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-Mail-Adresse</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Angehalten</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Maximale Buckets</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Befähigungen</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Benutzerquote</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Anzeigen</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Typ auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Berechtigung</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Berechtigung auswählen --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Die ausgewählte Unterbenutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lesen, schreiben</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>voll</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Geheimnis automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Benutzerdaten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Die Benutzerdaten konnten nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Die ausgewählte Benutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Dies ist keine gültige E-Mail-Adresse.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Die ausgewählte E-Mail-Adresse wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Max. Buckets</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Benutzerdefiniert</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Keine Unterbenutzer vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Keine Schlüssel vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Keine Befähigungen vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Unbegrenzte Größe</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. Größe</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Unbegrenzte Objekte</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Max. Objekte</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Der eingegebene Wert muss &gt;=0 sein.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Beschreibung...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Berechtigungen</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Rollen</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Passwort bestätigen</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Passwortbestätigung stimmt nicht mit dem Passwort überein.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Ablaufdatum des Passworts</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Ablaufdatum des Passworts...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-Mail-Adresse</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Ungültige E-Mail-Adresse.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>Benutzer muss das Passwort bei der nächsten Anmeldung ändern</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Sie sind dabei, die Lese-/Aktualisierungsberechtigungen für Benutzer von Ihrem eigenen Benutzer zu entfernen.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Wenn Sie den Vorgang fortsetzen, können Sie Benutzerrollen nicht mehr hinzufügen oder entfernen.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Möchten Sie den Vorgang wirklich fortsetzen?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Hilfe</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentation</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Über</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Dashboard-Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Benutzerverwaltung</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Angemeldeter Benutzer</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Angemeldet als\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Passwort ändern</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Abmelden</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attribute (OSD-Zuordnung)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadaten nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadaten</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Laufwerkszustand</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Leistungsindikator</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogramm nicht verfügbar: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Schreiben</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lesen</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogramm</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>Hostname nicht gefunden.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Aktuelle Werte</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Quelle</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Ebene</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Kann zur Laufzeit aktualisiert werden (bearbeitbar)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tags</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Auflistungswerte</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Siehe auch</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Clusterstatus</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manager-Daemons</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektgateways</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Metadatenserver</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI-Gateways</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>Client-IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Clientdurchsatz</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Client-Lese-/Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Wiederherstellungsdurchsatz</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Scrub</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Leistung</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Rohkapazität</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Platzierungsgruppen pro OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Platzierungsgruppenstatus</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapazität</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> Weitere Details finden Sie in den \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Protokollen\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Ränge</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS Leistungsindikatoren</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Verzeichnisse</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Aktuell</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target> Ermittlungsauthentifizierung aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Keine Portale verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Keine Images verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Keine Images verfügbar. Fügen Sie dem Ziel ein Image hinzu.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Keine Initiatoren verfügen. Fügen Sie dem Ziel einen Initiator hinzu.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Ziel</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Zustand</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes für Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes für Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O seit</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instanz</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problem</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Fortschritt</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Bearbeitungsmodus</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Peer hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Peer bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Peer löschen</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># lokal</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># remote</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>Peer spiegeln</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Umfassende Vereinfachung</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Schichtung</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Exklusive Sperre</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Objektzuordnung (erfordert exklusive Sperre)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journaling (erfordert exklusive Sperre)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namensraum</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Images insgesamt</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namensraum enthält Images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NICHT GESCHÜTZT</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback für RBD-Snapshot</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD-Snapshot</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Gelöscht am</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>Zustand</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>Stamm</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Standby-Daemons</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Rang</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivität</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Nutzung</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Der Wert kann zur Laufzeit aktualisiert werden.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemons/Clients rufen diesen Wert nicht aus der\n      Datenbank \'monitor config\' ab. Es ist nicht zulässig, diese Option über \'ceph config\n      set ...\' festzulegen. Diese Option sollte über \'ceph.conf\' oder an der\n      Befehlszeile konfiguriert werden.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Die Option wird nur während des Daemon-Starts wirksam.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Die Option wirkt sich nur auf die Cluster-Erstellung aus.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Die Option wirkt sich nur auf die Daemon-Erstellung aus.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Aktualisierte Konfigurationsoption \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Service</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Aktueller Wert</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Bearbeitbar</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Laufwerkspfad</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identifiziere Laufwerk \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifikation von \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' auf Host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\' gestartet\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Aktivieren</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Deaktivieren</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Verbindung wird erneut hergestellt, bitte warten...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Öffentliche Adresse</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Offene Sitzungen</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Kein In-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSDs, die zuvor als \'out\' markiert wurden, werden beim Start nicht wieder markiert</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Kein Out-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSDs werden nach dem konfigurierten Intervall nicht automatisch als \'out\' markiert</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Kein Up-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSDs dürfen nicht gestartet werden</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Kein Down-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>OSD-Fehlerberichte werden ignoriert, sodass die Monitore die OSDs nicht als ausgefallen markieren</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pause</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Hält Lese- und Schreibvorgänge an</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Kein Scrub</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Scrubbing ist deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Kein umfassender Scrub</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Umfassendes Scrubbing ist deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Kein Abgleich</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Abgleich der Platzierungsgruppen ist ausgesetzt</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Keine Wiederherstellung</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Wiederherstellung der Platzierungsgruppen ist ausgesetzt</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitweise Sortierung</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Bitweise Sortierung verwenden</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Bereinigte Snapdirs</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDs besitzen konvertierte Snapsets</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Löschvorgänge bei Wiederherstellungen</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Bei der Wiederherstellung anstelle des Peerings durchgeführte Löschvorgänge</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Hardlimit für Platzierungsgruppen-Protokoll</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Legt ein Hardlimit für die Platzierungsgruppen-Protokolllänge fest</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualisierte OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>aus</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>ein</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ausgefallen</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Markieren</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD verloren</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>markierter Verlust</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Bereinigen</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>bereinigt</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>vernichten</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>vernichtet</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>löschen</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Wiederherstellungspriorität</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG Scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Platzierungsgruppen</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes für Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes für Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/> markieren\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/> markieren\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG Scrub-Optionen</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Aktualisierte PG Scrub-Optionen</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max. Abgleiche</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Wiederherstellung, max. aktiv</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Wiederherstellung, max. - einzelner Start</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Wiederherstellung - Inaktivität</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Auftrag</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Schweregrad</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Gestartet</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attributname</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regulärer Ausdruck</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Bitte fügen Sie Ihren Prometheus-Host zur Dashboard-Konfiguration hinzu und aktualisieren die Seite</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Erstellt von</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Endet</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Verwendet</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Verf.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Bereinigen</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>In Bearbeitung</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Warnung</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Unbekannt</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktiv</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>keine Dateisysteme</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktiv</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>Standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n. v.</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktiver Daemon</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>Quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Der NFS Ganesha-Dienst ist nicht konfiguriert.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS-Benutzer</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS-Dateisystem</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(aus globaler Konfiguration übernommen)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>aus globaler Konfiguration übernommen</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Durchzuführende Benutzer-ID-Squashing-Art auswählen --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Keine Daemons verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS-Export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC-Profil</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Cache-Modus</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min. Alter für Vertreibung</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min. Alter für Leerung</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max. Bytes für Ziel</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max. Objekte für Ziel</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Keine Anwendungen hinzugefügt</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Anwendungslimit erreicht</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Ein Pool kann nur bis zu vier Anwendungsdefinitionen aufweisen.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Zulässige Zeichen \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Maximale Länge beträgt 128 Zeichen</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Anwendungen filtern oder hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Anwendung hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Größe des Replikats</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Letzte Änderung</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crush-Regelsatz</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Das Löschen des Pools ist durch die Konfigurationsoption mon_allow_pool_delete deaktiviert.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>Bucket</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Buckets</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Laufwerks-ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Laufwerksname</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Bereich</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lesen</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Erstelle</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>Rolle</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' erstellt\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' aktualisiert\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Systemrolle</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' gelöscht\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Benutzer aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Fortfahren</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Sie wurden automatisch abgemeldet, da Ihre Rollen geändert wurden.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>Passwort</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Benutzerpasswort aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Jedes Objekt wird in Datenblöcke aufgeteilt und jeweils auf einem anderen OSD gespeichert.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Berechnen Sie Codierungsdatenblöcke für jedes Objekt und speichern Sie sie auf unterschiedlichen OSDs.\n      Die Anzahl der Codierungsdatenblöcke entspricht auch der Anzahl der OSDs, die ausfallen können, ohne dass Daten verloren gehen.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Das jerasure-Modul ist das allgemeinste und flexibelste Modul\n          und fungiert auch als der Standard für Ceph-Pools mit Löschcodierung.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Die flexiblere Technik ist \'reed_sol_van :\', wobei es ausreicht, k\n          und m festzulegen. Die Technik \'cauchy_good\' kann schneller sein. Sie müssen jedoch die Paketgröße sorgfältig\n          auswählen. Sämtliche \'reed_sol_r6_op\'-, \'liberation\'-, \'blaum_roth\'- und \'liber8tion\'-Vorgänge sind dahingehend RAID6-Entsprechungen,\n          dass sie nur mit \'m=2\' konfiguriert werden können.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Die Codierung wird jeweils für Pakete auf Bytes-Größe vorgenommen.\n          Die Auswahl der richtigen Paketgröße ist schwierig.\n          In der Jerasure-Dokumentation sind ausführliche Informationen zu diesem Thema enthalten.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Bei Verwendung des Jerasure-Moduls, wenn ein Objekt mit Löschcodierung auf mehreren OSDs gespeichert ist,\n          müssen alle anderen OSDs gelesen werden, um die verloren gegangenen Daten eines OSDs wiederherzustellen.\n          Wenn jerasure beispielsweise mit \'k=8\' und \'m=4\' konfiguriert ist,\n          müssen bei Verlust eines OSDs zum Reparieren die elf anderen gelesen werden.\n\n          Das lrc-Löschcode-Modul erstellt lokale Paritätsdatenblöcke, um die Wiederherstellung mit weniger OSDs auszuführen.\n          Wenn lrc beispielsweise mit \'k=8\', \'m=4\' und \'l=4\' konfiguriert ist, wird ein zusätzlicher Paritätsdatenblock für jeweils vier OSDs erstellt.\n          Geht ein einzelnes OSD verloren, kann es mit nur vier OSDs anstelle\n          von elf wiederhergestellt werden.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Gruppieren Sie die Codierungs- und Datenblöcke in Sätze entsprechend dem Speicherort.\n          Beispielsweise werden für \'k=4\' und \'m=2\', wenn der Speicherort \'3\' entspricht, zwei Dreiergruppen erstellt.\n          Jeder Satz kann wiederhergestellt werden, ohne dass Datenblöcke aus einem anderen Satz gelesen werden.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Der Typ des Crush-Buckets, in dem jeder durch l definierte Satz von Datenblöcken gespeichert wird.\n          Wenn er beispielsweise auf \'rack\' festgelegt ist, wird jede Gruppe an l-Datenblöcken in einem anderen Rack platziert.\n          Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise für einen Schritt zum Auswählen des Racks.\n          Wenn er nicht festgelegt ist, wird keine solche Gruppierung vorgenommen.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Das isa-Modul kapselt die ISA-Bibliothek und wird nur auf Intel-Prozessoren ausgeführt.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Das ISA-Modul wird in zwei Reed Solomon-Formularen bereitgestellt.\n          Wenn \'reed_sol_van\' festgelegt ist, entspricht dies Vandermonde. Ist \'cauchy\' festgelegt, entspricht dies \'Cauchy\'.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Das shec-Modul kapselt die SHEC-Mehrfachbibliothek.\n          Dadurch kann ceph Daten effizienter wiederherstellen als Reed Solomon-Codes.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Die Anzahl der Paritätsdatenblöcke, von denen jeder jeden Datenblock in seinem Berechnungsbereich enthält.\n          Die Anzahl wird als eine Dauerhaftigkeitsschätzung verwendet. Wenn beispielsweise \'c=2\' vorliegt,\n          können 2 OSDs ausfallen, ohne dass Daten verloren gehen.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Der Name des für den ersten Schritt der CRUSH-Regel verwendeten Crush-Buckets.\n      Beispielsweise \'step take default\'.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Stellen Sie sicher, dass sich keine zwei Datenblöcke in einem Bucket mit derselben Ausfalldomäne befinden.\n      Wenn die Ausfalldomäne beispielsweise als Host fungiert, werden keine zwei Datenblöcke auf demselben Host gespeichert.\n      Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise \'step chooseleaf host\'.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Schränken Sie mithilfe der Klassennamen für Crush-Geräte in der CRUSH-Zuordnung die Platzierung\n      auf Geräte einer bestimmten Klasse (z. B. SSD oder HDD) ein.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Legen Sie den Verzeichnisnamen fest, über den das Löschcode-Modul geladen wird.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Lässt alle Vorgänge zu</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Lässt nur Vorgänge zu, die den Server nicht ändern</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Lässt weder Lese- noch Schreibvorgänge zu, jedoch alle anderen Vorgänge</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Lässt Lese-/Schreibvorgänge und andere Vorgänge nicht zu, die Dateiattribute oder Verzeichnisinhalte ändern</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Lässt überhaupt keinen Zugriff zu</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Priorität auswählen --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Niedrig</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Hoch</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informationen</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Letzte 5 Minuten</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Letzte 15 Minuten</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Letzte 30 Minuten</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Letzte Stunde (Standard)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Letzte 3 Stunden</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Letzte 6 Stunden</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Letzte 12 Stunden</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Letzte 24 Stunden</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Gestern</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Heute</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Heute bisher</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Vorgestern</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Letzte 2 Tage</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Dieser Tag letzte Woche</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Vorwoche</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Diese Woche</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Diese Woche bisher</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Letzte 7 Tage</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Vormonat</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Dieser Monat</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Dieser Monat bisher</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Letzte 30 Tage</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Letzte 90 Tage</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Letzte 6 Monate</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Letztes Jahr</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Vorjahr</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Dieses Jahr</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Dieses Jahr bisher</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Letzte 2 Jahre</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Letzte 5 Jahre</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Keine Elemente ausgewählt.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Elementauswahl zum erneuten Auswählen aufheben</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Auswahllimit erreicht</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tags filtern</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Badge hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Keine Elemente verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Entfernen</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonen</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopieren</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Umfassender Scrub</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Vernichten</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Vereinfachen</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Als ausgefallen markieren</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Mit Befehl \'In\' markieren</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Als verloren markieren</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Mit Befehl \'Out\' markieren</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Schützen</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Umbenennen</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>In Papierkorb verschieben</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Schutz aufheben</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Ändern</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Gelöscht</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Hinzugefügt</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Entfernt</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Bearbeitet</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Abgebrochen</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Geklont</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Kopiert</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Vereinfacht</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Geschützt</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Bereinigt</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Umbenannt</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Wiederhergestellt</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback wurde ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>In den Papierkorb verschoben</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Schutz aufgehoben</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Abgelaufen</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ja</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Nein</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Erforderliche Regeln für Passwörter:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>keine aktiven Warnungen</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 aktive Warnung</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> aktive Warnungen\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> mit \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Quality of Service</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS-Limit</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Das gewünschte Limit der E/A-Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS-Limit</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Das gewünschte Limit der E/A-Vorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>BPS-Limit für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Das gewünschte Limit der gelesenen Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>IOPS-Limit für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Das gewünschte Limit für Lesevorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>BPS-Limit für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Das gewünschte Limit der geschriebenen Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>IOPS-Limit für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Das gewünschte Limit für Schreibvorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS-Block</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Das gewünschte Blocklimit der E/A-Bytes.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS-Block</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Das gewünschte Blocklimit der E/A-Vorgänge.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>BPS-Block für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Das gewünschte Blocklimit der gelesenen Bytes.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>IOPS-Block für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Das gewünschte Blocklimit der Lesevorgänge.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>BPS-Block für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Das gewünschte Blocklimit der geschriebenen Bytes.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>IOPS-Block für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Das gewünschte Blocklimit der Schreibvorgänge.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Wird ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ausführen</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>Unbekannte Aufgabe</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>erstellen</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Wird aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Wird gelöscht</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD-Snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Spiegelungsmodus für Pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>Alle Dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> enthält Snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Wird geklont</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klonen</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot von \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> muss geschützt sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Wird kopiert</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>kopieren</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Wird vereinfacht</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>vereinfachen</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Der Schutz von \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> kann aufgrund untergeordneter Images nicht aufgehoben werden.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> kann nicht gelöscht werden, da es geschützt ist.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback wird ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>Rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Wird verschoben</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>verschieben</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Verschoben</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in Papierkorb verschieben\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Image konnte nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Wird wiederhergestellt</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\' verschieben\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image-Name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' wird bereits verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Wird bereinigt</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>bereinigen</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>alle Pools</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>Images von \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Spiegelung kann nicht deaktiviert werden, da sie einen Peer enthält.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>Pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>Erasure-Coding-Profil \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>Ziel \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},Ekvf:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("mrSG"),r=n("IheW"),i=n("lJxs"),s=n("xTzq"),u=n("o8EM"),o=n("8Y7J"),l=n("pL04");let d=(()=>{let t=class{constructor(t,e){this.http=t,this.rbdConfigurationService=e,this.apiPath="api/pool"}create(t){return this.http.post(this.apiPath,t,{observe:"response"})}update(t){let e;return t.hasOwnProperty("srcpool")?(e=t.srcpool,delete t.srcpool):(e=t.pool,delete t.pool),this.http.put(`${this.apiPath}/${encodeURIComponent(e)}`,t,{observe:"response"})}delete(t){return this.http.delete(`${this.apiPath}/${t}`,{observe:"response"})}get(t){return this.http.get(`${this.apiPath}/${t}`)}getList(){return this.http.get(this.apiPath+"?stats=true")}getConfiguration(t){return this.http.get(`${this.apiPath}/${t}/configuration`).pipe(Object(i.a)(t=>t.map(t=>Object.assign(t,this.rbdConfigurationService.getOptionByName(t.name)))))}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}list(t=[]){const e=t.join(",");return this.http.get(`${this.apiPath}?attrs=${e}`).toPromise().then(t=>t)}};return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](r.c),o["ɵɵinject"](u.a))},token:t,providedIn:l.a}),t=a.__decorate([s.a,a.__metadata("design:paramtypes",[r.c,u.a])],t),t})()},EmSq:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("8Y7J"),r=n("LvDl");n("Fgil"),n("aXbf");class i{constructor(t,e,n,r){this.elementRef=t,this.control=e,this.dimlessBinaryPipe=n,this.formatter=r,this.ngModelChange=new a.EventEmitter,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value)}setValue(t){/^[\d.]+$/.test(t)&&(t+=this.defaultUnit||"m");const e=this.formatter.toBytes(t),n=this.round(e);this.el.value=this.dimlessBinaryPipe.transform(n),null!==e?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(t){if(null!==t&&0!==t){if(!r.isUndefined(this.minBytes)&&t<this.minBytes)return this.minBytes;if(!r.isUndefined(this.maxBytes)&&t>this.maxBytes)return this.maxBytes;if(!r.isUndefined(this.roundPower)){const e=Math.round(Math.log(t)/Math.log(this.roundPower));return Math.pow(this.roundPower,e)}}return t}onBlur(t){this.setValue(t)}}},"F+uO":function(t,e,n){var a={"./messages.cs.xlf":"ViD7","./messages.de-DE.xlf":"EiPl","./messages.es-ES.xlf":"yt+r","./messages.fr-FR.xlf":"V5SL","./messages.id-ID.xlf":"jqst","./messages.it-IT.xlf":"8j5A","./messages.ja-JP.xlf":"bN42","./messages.ko-KR.xlf":"3+CB","./messages.pl-PL.xlf":"SPu7","./messages.pt-BR.xlf":"+Wg/","./messages.zh-CN.xlf":"AiMb","./messages.zh-TW.xlf":"HjS5"};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="F+uO"},F8JR:function(t,e,n){"use strict";var a=n("tycR").forEach,r=n("pkCn")("forEach");t.exports=r?[].forEach:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}},FE24:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return h})),n.d(e,"d",(function(){return g})),n.d(e,"e",(function(){return b})),n.d(e,"f",(function(){return d})),n.d(e,"g",(function(){return p}));var a=n("8Y7J"),r=n("pLZG"),i=n("z/SZ"),s=n("hpHm"),u=n("GS7A"),o=n("2uy1");class l{constructor(){this.autoClose=!0,this.insideClick=!1,this.isAnimated=!1}}class d{constructor(){this.direction="down",this.isOpenChange=new a.EventEmitter,this.isDisabledChange=new a.EventEmitter,this.toggleClick=new a.EventEmitter,this.dropdownMenu=new Promise(t=>{this.resolveDropdownMenu=t})}}const c=[Object(u.h)({height:0,overflow:"hidden"}),Object(u.e)("220ms cubic-bezier(0, 0, 0.2, 1)",Object(u.h)({height:"*",overflow:"hidden"}))];class f{constructor(t,e,n,a,r){this._state=t,this.cd=e,this._renderer=n,this._element=a,this.isOpen=!1,this._factoryDropDownAnimation=r.build(c),this._subscription=t.isOpenChange.subscribe(t=>{this.isOpen=t;const e=this._element.nativeElement.querySelector(".dropdown-menu");this._renderer.addClass(this._element.nativeElement.querySelector("div"),"open"),e&&!Object(s.d)()&&(this._renderer.addClass(e,"show"),e.classList.contains("dropdown-menu-right")&&(this._renderer.setStyle(e,"left","auto"),this._renderer.setStyle(e,"right","0")),"up"===this.direction&&(this._renderer.setStyle(e,"top","auto"),this._renderer.setStyle(e,"transform","translateY(-101%)"))),e&&this._state.isAnimated&&this._factoryDropDownAnimation.create(e).play(),this.cd.markForCheck(),this.cd.detectChanges()})}get direction(){return this._state.direction}_contains(t){return this._element.nativeElement.contains(t)}ngOnDestroy(){this._subscription.unsubscribe()}}class h{constructor(t,e,n,a,r,i,s){this._elementRef=t,this._renderer=e,this._viewContainerRef=n,this._cis=a,this._state=r,this._config=i,this._isInlineOpen=!1,this._subscriptions=[],this._isInited=!1,this._state.autoClose=this._config.autoClose,this._state.insideClick=this._config.insideClick,this._state.isAnimated=this._config.isAnimated,this._factoryDropDownAnimation=s.build(c),this._dropdown=this._cis.createLoader(this._elementRef,this._viewContainerRef,this._renderer).provide({provide:d,useValue:this._state}),this.onShown=this._dropdown.onShown,this.onHidden=this._dropdown.onHidden,this.isOpenChange=this._state.isOpenChange}set autoClose(t){this._state.autoClose=t}get autoClose(){return this._state.autoClose}set isAnimated(t){this._state.isAnimated=t}get isAnimated(){return this._state.isAnimated}set insideClick(t){this._state.insideClick=t}get insideClick(){return this._state.insideClick}set isDisabled(t){this._isDisabled=t,this._state.isDisabledChange.emit(t),t&&this.hide()}get isDisabled(){return this._isDisabled}get isOpen(){return this._showInline?this._isInlineOpen:this._dropdown.isShown}set isOpen(t){t?this.show():this.hide()}get isBs4(){return!Object(s.d)()}get _showInline(){return!this.container}ngOnInit(){this._isInited||(this._isInited=!0,this._dropdown.listen({outsideClick:!1,triggers:this.triggers,show:()=>this.show()}),this._subscriptions.push(this._state.toggleClick.subscribe(t=>this.toggle(t))),this._subscriptions.push(this._state.isDisabledChange.pipe(Object(r.a)(t=>t)).subscribe(t=>this.hide())))}show(){if(!this.isOpen&&!this.isDisabled)return this._showInline?(this._inlinedMenu||this._state.dropdownMenu.then(t=>{this._dropdown.attachInline(t.viewContainer,t.templateRef),this._inlinedMenu=this._dropdown._inlineViewRef,this.addBs4Polyfills(),this._renderer.addClass(this._inlinedMenu.rootNodes[0].parentNode,"open"),this.playAnimation()}).catch(),this.addBs4Polyfills(),this._isInlineOpen=!0,this.onShown.emit(!0),this._state.isOpenChange.emit(!0),void this.playAnimation()):void this._state.dropdownMenu.then(t=>{const e=this.dropup||void 0!==this.dropup&&this.dropup;this._state.direction=e?"up":"down";const n=this.placement||(e?"top start":"bottom start");this._dropdown.attach(f).to(this.container).position({attachment:n}).show({content:t.templateRef,placement:n}),this._state.isOpenChange.emit(!0)}).catch()}hide(){this.isOpen&&(this._showInline?(this.removeShowClass(),this.removeDropupStyles(),this._isInlineOpen=!1,this.onHidden.emit(!0)):this._dropdown.hide(),this._state.isOpenChange.emit(!1))}toggle(t){return this.isOpen||!t?this.hide():this.show()}_contains(t){return this._elementRef.nativeElement.contains(t.target)||this._dropdown.instance&&this._dropdown.instance._contains(t.target)}ngOnDestroy(){for(const t of this._subscriptions)t.unsubscribe();this._dropdown.dispose()}addBs4Polyfills(){Object(s.d)()||(this.addShowClass(),this.checkRightAlignment(),this.addDropupStyles())}playAnimation(){this._state.isAnimated&&this._inlinedMenu&&this._factoryDropDownAnimation.create(this._inlinedMenu.rootNodes[0]).play()}addShowClass(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.addClass(this._inlinedMenu.rootNodes[0],"show")}removeShowClass(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.removeClass(this._inlinedMenu.rootNodes[0],"show")}checkRightAlignment(){if(this._inlinedMenu&&this._inlinedMenu.rootNodes[0]){const t=this._inlinedMenu.rootNodes[0].classList.contains("dropdown-menu-right");this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"left",t?"auto":"0"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"right",t?"0":"auto")}}addDropupStyles(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&(this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"top",this.dropup?"auto":"100%"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"transform",this.dropup?"translateY(-101%)":"translateY(0)"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"bottom","auto"))}removeDropupStyles(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&(this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"top"),this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"transform"),this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"bottom"))}}class g{constructor(t,e,n){t.resolveDropdownMenu({templateRef:n,viewContainer:e})}}class p{constructor(t,e,n,a,r){this._changeDetectorRef=t,this._dropdown=e,this._element=n,this._renderer=a,this._state=r,this.isDisabled=null,this._subscriptions=[],this._subscriptions.push(this._state.isOpenChange.subscribe(t=>{this.isOpen=t,t?(this._documentClickListener=this._renderer.listen("document","click",t=>{!this._state.autoClose||2===t.button||this._element.nativeElement.contains(t.target)||this._state.insideClick&&this._dropdown._contains(t)||(this._state.toggleClick.emit(!1),this._changeDetectorRef.detectChanges())}),this._escKeyUpListener=this._renderer.listen(this._element.nativeElement,"keyup.esc",()=>{this._state.autoClose&&(this._state.toggleClick.emit(!1),this._changeDetectorRef.detectChanges())})):(this._documentClickListener(),this._escKeyUpListener())})),this._subscriptions.push(this._state.isDisabledChange.subscribe(t=>this.isDisabled=t||null))}onClick(){this.isDisabled||this._state.toggleClick.emit(!0)}ngOnDestroy(){this._documentClickListener&&this._documentClickListener(),this._escKeyUpListener&&this._escKeyUpListener();for(const t of this._subscriptions)t.unsubscribe()}}class b{static forRoot(t){return{ngModule:b,providers:[i.a,o.a,d,{provide:l,useValue:t||{autoClose:!0,insideClick:!1}}]}}}},FFMq:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return t.join(", ")}}},FGWQ:function(t,e,n){var a=n("pmjB"),r=n("p33Q"),i=n("im1V");t.exports=function(t){return i(t)?a(t):r(t)}},FMNM:function(t,e,n){var a=n("2oRo"),r=n("xluM"),i=n("glrk"),s=n("Fib7"),u=n("xrYK"),o=n("kmMV"),l=a.TypeError;t.exports=function(t,e){var n=t.exec;if(s(n)){var a=r(n,t,e);return null!==a&&i(a),a}if("RegExp"===u(t))return r(o,t,e);throw l("RegExp#exec called on incompatible receiver")}},FSuO:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("LvDl"),i=n("x38r");n("a0VL"),n("uIqm");class s{constructor(t){this.datePipe=t,this.autoReload=5e3,this.renderObjects=!1,this.appendParentKey=!0,this.hideEmpty=!1,this.hideKeys=[],this.columns=[],this.fetchData=new a.EventEmitter}ngOnInit(){this.columns=[{prop:"key",flexGrow:1,cellTransformation:i.a.bold},{prop:"value",flexGrow:3}],this.customCss&&(this.columns[1].cellTransformation=i.a.classAdding),this.fetchData.observers.length>0&&this.table.fetchData.subscribe(()=>{this.fetchData.emit()}),this.useData()}ngOnChanges(){this.useData()}useData(){if(!this.data)return;let t=this.makePairs(this.data);this.hideKeys&&(t=t.filter(t=>!this.hideKeys.includes(t.key))),this.tableData=t}makePairs(t){let e=[];if(t){if(r.isArray(t))e=this.makePairsFromArray(t);else{if(!r.isObject(t))throw new Error("Wrong data format");e=this.makePairsFromObject(t)}return e=e.map(t=>(t.value=this.convertValue(t.value),t)).filter(t=>null!==t.value),r.sortBy(this.renderObjects?this.insertFlattenObjects(e):e,"key")}}makePairsFromArray(t){let e=[];const n=t[0];if(r.isArray(n)){if(2!==n.length)throw new Error(`Array contains too many elements (${n.length}). Needs to be of type [string, any][]`);e=t.map(t=>({key:t[0],value:t[1]}))}else r.isObject(n)&&(e=r.has(n,"key")&&r.has(n,"value")?[...t]:t.reduce((t,e)=>t.concat(this.makePairsFromObject(e)),e));return e}makePairsFromObject(t){return Object.keys(t).map(e=>({key:e,value:t[e]}))}insertFlattenObjects(t){return r.flattenDeep(t.map(t=>{const e=t.value,n=r.isObject(e);return!n||r.isEmpty(e)?(n&&(t.value=""),t):this.splitItemIntoItems(t)}))}splitItemIntoItems(t){return this.makePairs(t.value).map(e=>(this.appendParentKey&&(e.key=t.key+" "+e.key),e))}convertValue(t){if(r.isArray(t)){if(r.isEmpty(t)&&this.hideEmpty)return null;t=t.map(t=>r.isObject(t)?JSON.stringify(t):t).join(", ")}else if(r.isObject(t)){if(this.hideEmpty&&r.isEmpty(t)||!this.renderObjects)return null}else if(r.isString(t)){if(""===t&&this.hideEmpty)return null;this.isDate(t)&&(t=this.datePipe.transform(t)||t)}return t}isDate(t){const e="\\d{2}[ -:.TZ]";return t.match(new RegExp("^\\d{4}[ -:.TZ]"+e+e+e+e+e+"\\d*Z?$"))}}},FZtP:function(t,e,n){var a=n("2oRo"),r=n("/byt"),i=n("eFrH"),s=n("F8JR"),u=n("kRJp"),o=function(t){if(t&&t.forEach!==s)try{u(t,"forEach",s)}catch(e){t.forEach=s}};for(var l in r)r[l]&&o(a[l]&&a[l].prototype);o(i)},Fgil:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1024,["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"])}}},Fib7:function(t,e){t.exports=function(t){return"function"==typeof t}},Fwy9:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("gk6K"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(t,e,n,r){this.el=t,this.renderer=e,this.treeDraggedElement=n,this.ngZone=r,this.allowDragoverStyling=!0,this.onDropCallback=new a.EventEmitter,this.onDragOverCallback=new a.EventEmitter,this.onDragLeaveCallback=new a.EventEmitter,this.onDragEnterCallback=new a.EventEmitter,this._allowDrop=function(t,e){return!0},this.dragOverEventHandler=this.onDragOver.bind(this),this.dragEnterEventHandler=this.onDragEnter.bind(this),this.dragLeaveEventHandler=this.onDragLeave.bind(this)}return Object.defineProperty(t.prototype,"treeAllowDrop",{set:function(t){this._allowDrop=t instanceof Function?t:function(e,n){return t}},enumerable:!0,configurable:!0}),t.prototype.allowDrop=function(t){return this._allowDrop(this.treeDraggedElement.get(),t)},t.prototype.ngAfterViewInit=function(){var t=this,e=this.el.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("dragover",t.dragOverEventHandler),e.addEventListener("dragenter",t.dragEnterEventHandler),e.addEventListener("dragleave",t.dragLeaveEventHandler)}))},t.prototype.ngOnDestroy=function(){var t=this.el.nativeElement;t.removeEventListener("dragover",this.dragOverEventHandler),t.removeEventListener("dragenter",this.dragEnterEventHandler),t.removeEventListener("dragleave",this.dragLeaveEventHandler)},t.prototype.onDragOver=function(t){if(!this.allowDrop(t))return this.allowDragoverStyling?this.addDisabledClass():void 0;this.onDragOverCallback.emit({event:t,element:this.treeDraggedElement.get()}),t.preventDefault(),this.allowDragoverStyling&&this.addClass()},t.prototype.onDragEnter=function(t){this.allowDrop(t)&&(t.preventDefault(),this.onDragEnterCallback.emit({event:t,element:this.treeDraggedElement.get()}))},t.prototype.onDragLeave=function(t){if(!this.allowDrop(t))return this.allowDragoverStyling?this.removeDisabledClass():void 0;this.onDragLeaveCallback.emit({event:t,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass()},t.prototype.onDrop=function(t){this.allowDrop(t)&&(t.preventDefault(),this.onDropCallback.emit({event:t,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass(),this.treeDraggedElement.set(null))},t.prototype.addClass=function(){this.renderer.addClass(this.el.nativeElement,"is-dragging-over")},t.prototype.removeClass=function(){this.renderer.removeClass(this.el.nativeElement,"is-dragging-over")},t.prototype.addDisabledClass=function(){this.renderer.addClass(this.el.nativeElement,"is-dragging-over-disabled")},t.prototype.removeDisabledClass=function(){this.renderer.removeClass(this.el.nativeElement,"is-dragging-over-disabled")},i([Object(a.Input)(),s("design:type",Object)],t.prototype,"allowDragoverStyling",void 0),i([Object(a.Output)("treeDrop"),s("design:type",Object)],t.prototype,"onDropCallback",void 0),i([Object(a.Output)("treeDropDragOver"),s("design:type",Object)],t.prototype,"onDragOverCallback",void 0),i([Object(a.Output)("treeDropDragLeave"),s("design:type",Object)],t.prototype,"onDragLeaveCallback",void 0),i([Object(a.Output)("treeDropDragEnter"),s("design:type",Object)],t.prototype,"onDragEnterCallback",void 0),i([Object(a.Input)(),s("design:type",Object),s("design:paramtypes",[Object])],t.prototype,"treeAllowDrop",null),i([Object(a.HostListener)("drop",["$event"]),s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",void 0)],t.prototype,"onDrop",null),i([Object(a.Directive)({selector:"[treeDrop]"}),s("design:paramtypes",[a.ElementRef,a.Renderer2,r.a,a.NgZone])],t)}()},"G+Rx":function(t,e,n){var a=n("0GbY");t.exports=a("document","documentElement")},G0Uy:function(t,e,n){!function(t){"use strict";t.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},"G1/K":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.i18n=t}transform(t){return""===t?this.i18n("n/a"):t}}},G1I9:function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return s}));var a=n("oxzT"),r=n("mtw6");class i{constructor(t=r.a.info,e,n,a,i="Ceph"){this.type=t,this.title=e,this.message=n,this.options=a,this.application=i,this.isFinishedTask=!1,this.classes={Ceph:"ceph-icon",Prometheus:"prometheus-icon"},this.applicationClass=this.classes[this.application]}}class s extends i{constructor(t=new i){super(t.type,t.title,t.message,t.options,t.application),this.config=t,this.textClasses=["text-danger","text-info","text-success"],this.iconClasses=[a.a.warning,a.a.info,a.a.check],delete this.config,this.timestamp=(new Date).toJSON(),this.iconClass=this.iconClasses[this.type],this.textClass=this.textClasses[this.type],this.isFinishedTask=t.isFinishedTask}}},G3dZ:function(t,e,n){var a=n("77kF"),r=n("Z2DA");t.exports=function(t,e){return a(t,r(t),e)}},G3uG:function(t,e){var n=Date.now;t.exports=function(t){var e=0,a=0;return function(){var r=n(),i=16-(r-a);if(a=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},"G6Q+":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},GS7A:function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"c",(function(){return r})),n.d(e,"a",(function(){return i})),n.d(e,"e",(function(){return u})),n.d(e,"f",(function(){return o})),n.d(e,"g",(function(){return d})),n.d(e,"h",(function(){return l})),n.d(e,"i",(function(){return c})),n.d(e,"j",(function(){return s})),n.d(e,"d",(function(){return h})),n.d(e,"k",(function(){return g})),n.d(e,"l",(function(){return p}));class a{}class r{}const i="*";function s(t,e){return{type:7,name:t,definitions:e,options:{}}}function u(t,e=null){return{type:4,styles:e,timings:t}}function o(t,e=null){return{type:2,steps:t,options:e}}function l(t){return{type:6,styles:t,offset:null}}function d(t,e,n){return{type:0,name:t,styles:e,options:n}}function c(t,e,n=null){return{type:1,expr:t,animation:e,options:n}}function f(t){Promise.resolve(null).then(t)}class h{constructor(t=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this.parentPlayer=null,this.totalTime=t+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){f(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){}setPosition(t){}getPosition(){return 0}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}class g{constructor(t){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;let e=0,n=0,a=0;const r=this.players.length;0==r?f(()=>this._onFinish()):this.players.forEach(t=>{t.onDone(()=>{++e==r&&this._onFinish()}),t.onDestroy(()=>{++n==r&&this._onDestroy()}),t.onStart(()=>{++a==r&&this._onStart()})}),this.totalTime=this.players.reduce((t,e)=>Math.max(t,e.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this.players.forEach(t=>t.init())}onStart(t){this._onStartFns.push(t)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(t=>t()),this._onStartFns=[])}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(t=>t.play())}pause(){this.players.forEach(t=>t.pause())}restart(){this.players.forEach(t=>t.restart())}finish(){this._onFinish(),this.players.forEach(t=>t.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(t=>t.destroy()),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this.players.forEach(t=>t.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(t){const e=t*this.totalTime;this.players.forEach(t=>{const n=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(n)})}getPosition(){let t=0;return this.players.forEach(e=>{const n=e.getPosition();t=Math.min(n,t)}),t}beforeDestroy(){this.players.forEach(t=>{t.beforeDestroy&&t.beforeDestroy()})}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}const p="!"},GarU:function(t,e,n){var a=n("2oRo"),r=n("OpvP"),i=a.TypeError;t.exports=function(t,e){if(r(e,t))return t;throw i("Incorrect invocation")}},Gf4A:function(t,e,n){var a=n("KFwg")(n("Wa4q"),"Map");t.exports=a},GgAd:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(){this.isBinary=!0,this.decimals=0}ngOnChanges(){this.usedPercentage=this.total>0?this.used/this.total*100:0,this.freePercentage=100-this.usedPercentage}}},Gi26:function(t,e,n){var a=n("4zBA"),r=n("ewvW"),i=a({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(r(t),e)}},GiVz:function(t,e,n){"use strict";n.d(e,"a",(function(){return We})),n.d(e,"b",(function(){return Ue}));var a=n("SVse"),r=n("8Y7J");class i{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitText(this,e)}}class s{constructor(t,e,n,a,r){this.switchValue=t,this.type=e,this.cases=n,this.sourceSpan=a,this.switchValueSourceSpan=r}visit(t,e){return t.visitExpansion(this,e)}}class u{constructor(t,e,n,a,r){this.value=t,this.expression=e,this.sourceSpan=n,this.valueSourceSpan=a,this.expSourceSpan=r}visit(t,e){return t.visitExpansionCase(this,e)}}class o{constructor(t,e,n,a){this.name=t,this.value=e,this.sourceSpan=n,this.valueSpan=a}visit(t,e){return t.visitAttribute(this,e)}}class l{constructor(t,e,n,a,r=null,i=null){this.name=t,this.attrs=e,this.children=n,this.sourceSpan=a,this.startSourceSpan=r,this.endSourceSpan=i}visit(t,e){return t.visitElement(this,e)}}class d{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitComment(this,e)}}function c(t,e,n=null){const a=[],r=t.visit?e=>t.visit(e,n)||e.visit(t,n):e=>e.visit(t,n);return e.forEach(t=>{const e=r(t);e&&a.push(e)}),a}class f{constructor(t,e,n,a,r,i){this.nodes=t,this.placeholders=e,this.placeholderToMessage=n,this.meaning=a,this.description=r,this.id=i,this.sources=t.length?[{filePath:t[0].sourceSpan.start.file.url,startLine:t[0].sourceSpan.start.line+1,startCol:t[0].sourceSpan.start.col+1,endLine:t[t.length-1].sourceSpan.end.line+1,endCol:t[0].sourceSpan.start.col+1}]:[]}}class h{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitText(this,e)}}class g{constructor(t,e){this.children=t,this.sourceSpan=e}visit(t,e){return t.visitContainer(this,e)}}class p{constructor(t,e,n,a){this.expression=t,this.type=e,this.cases=n,this.sourceSpan=a}visit(t,e){return t.visitIcu(this,e)}}class b{constructor(t,e,n,a,r,i,s){this.tag=t,this.attrs=e,this.startName=n,this.closeName=a,this.children=r,this.isVoid=i,this.sourceSpan=s}visit(t,e){return t.visitTagPlaceholder(this,e)}}class m{constructor(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}visit(t,e){return t.visitPlaceholder(this,e)}}class y{constructor(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}visit(t,e){return t.visitIcuPlaceholder(this,e)}}class v{constructor(t,e,n,a){this.file=t,this.offset=e,this.line=n,this.col=a}toString(){return null!=this.offset?`${this.line}:${this.col}`:""}getContext(t,e){const n=this.file.content;let a=this.offset;if(null!=a){a>n.length-1&&(a=n.length-1);let r=a,i=0,s=0;for(;i<t&&a>0&&(a--,i++,"\n"!==n[a]||++s!==e););for(i=0,s=0;i<t&&r<n.length-1&&(r++,i++,"\n"!==n[r]||++s!==e););return{before:n.substring(a,this.offset),after:n.substring(this.offset,r+1)}}return null}}class x{constructor(t,e=""){this.content=t,this.url=e}}class _{constructor(t,e,n=null){this.start=t,this.end=e,this.details=n}toString(){return this.start.file.content.substring(this.start.offset,this.end.offset)}}const T=function(){var t={WARNING:0,ERROR:1};return t[t.WARNING]="WARNING",t[t.ERROR]="ERROR",t}();class w{constructor(t,e,n=T.ERROR){this.span=t,this.msg=e,this.level=n}contextualMessage(){const t=this.span.start.getContext(100,3);return t?` ("${t.before}[${T[this.level]} ->]${t.after}")`:""}toString(){const t=this.span.details?", "+this.span.details:"";return`${this.msg}${this.contextualMessage()}: ${this.span.start}${t}`}}class O extends w{constructor(t,e){super(t,e)}}function S(t){return t.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}class I{constructor(t,e){this.start=t,this.end=e}}const N=new I("{{","}}");function C(t){return t>=9&&t<=32||160===t}function R(t){return 48<=t&&t<=57}function A(t){return t>=97&&t<=122||t>=65&&t<=90}const k=function(){var t={RAW_TEXT:0,ESCAPABLE_RAW_TEXT:1,PARSABLE_DATA:2};return t[t.RAW_TEXT]="RAW_TEXT",t[t.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",t[t.PARSABLE_DATA]="PARSABLE_DATA",t}();function E(t){if(":"!==t[0])return[null,t];const e=t.indexOf(":",1);if(-1===e)throw new Error(`Unsupported format "${t}" expecting ":namespace:name"`);return[t.slice(1,e),t.slice(e+1)]}function L(t){return null===t?null:E(t)[0]}function D(t,e){return t?`:${t}:${e}`:e}const P={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",alefsym:"ℵ",Alpha:"Α",alpha:"α",amp:"&",and:"∧",ang:"∠",apos:"'",Aring:"Å",aring:"å",asymp:"≈",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",bdquo:"„",Beta:"Β",beta:"β",brvbar:"¦",bull:"•",cap:"∩",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",Chi:"Χ",chi:"χ",circ:"ˆ",clubs:"♣",cong:"≅",copy:"©",crarr:"↵",cup:"∪",curren:"¤",dagger:"†",Dagger:"‡",darr:"↓",dArr:"⇓",deg:"°",Delta:"Δ",delta:"δ",diams:"♦",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",empty:"∅",emsp:" ",ensp:" ",Epsilon:"Ε",epsilon:"ε",equiv:"≡",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",exist:"∃",fnof:"ƒ",forall:"∀",frac12:"½",frac14:"¼",frac34:"¾",frasl:"⁄",Gamma:"Γ",gamma:"γ",ge:"≥",gt:">",harr:"↔",hArr:"⇔",hearts:"♥",hellip:"…",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",image:"ℑ",infin:"∞",int:"∫",Iota:"Ι",iota:"ι",iquest:"¿",isin:"∈",Iuml:"Ï",iuml:"ï",Kappa:"Κ",kappa:"κ",Lambda:"Λ",lambda:"λ",lang:"⟨",laquo:"«",larr:"←",lArr:"⇐",lceil:"⌈",ldquo:"“",le:"≤",lfloor:"⌊",lowast:"∗",loz:"◊",lrm:"‎",lsaquo:"‹",lsquo:"‘",lt:"<",macr:"¯",mdash:"—",micro:"µ",middot:"·",minus:"−",Mu:"Μ",mu:"μ",nabla:"∇",nbsp:" ",ndash:"–",ne:"≠",ni:"∋",not:"¬",notin:"∉",nsub:"⊄",Ntilde:"Ñ",ntilde:"ñ",Nu:"Ν",nu:"ν",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",OElig:"Œ",oelig:"œ",Ograve:"Ò",ograve:"ò",oline:"‾",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",oplus:"⊕",or:"∨",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",otimes:"⊗",Ouml:"Ö",ouml:"ö",para:"¶",permil:"‰",perp:"⊥",Phi:"Φ",phi:"φ",Pi:"Π",pi:"π",piv:"ϖ",plusmn:"±",pound:"£",prime:"′",Prime:"″",prod:"∏",prop:"∝",Psi:"Ψ",psi:"ψ",quot:'"',radic:"√",rang:"⟩",raquo:"»",rarr:"→",rArr:"⇒",rceil:"⌉",rdquo:"”",real:"ℜ",reg:"®",rfloor:"⌋",Rho:"Ρ",rho:"ρ",rlm:"‏",rsaquo:"›",rsquo:"’",sbquo:"‚",Scaron:"Š",scaron:"š",sdot:"⋅",sect:"§",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sim:"∼",spades:"♠",sub:"⊂",sube:"⊆",sum:"∑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supe:"⊇",szlig:"ß",Tau:"Τ",tau:"τ",there4:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thinsp:" ",THORN:"Þ",thorn:"þ",tilde:"˜",times:"×",trade:"™",Uacute:"Ú",uacute:"ú",uarr:"↑",uArr:"⇑",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",Uuml:"Ü",uuml:"ü",weierp:"℘",Xi:"Ξ",xi:"ξ",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ",Yuml:"Ÿ",Zeta:"Ζ",zeta:"ζ",zwj:"‍",zwnj:"‌",ngsp:""},M=function(){var t={TAG_OPEN_START:0,TAG_OPEN_END:1,TAG_OPEN_END_VOID:2,TAG_CLOSE:3,TEXT:4,ESCAPABLE_RAW_TEXT:5,RAW_TEXT:6,COMMENT_START:7,COMMENT_END:8,CDATA_START:9,CDATA_END:10,ATTR_NAME:11,ATTR_VALUE:12,DOC_TYPE:13,EXPANSION_FORM_START:14,EXPANSION_CASE_VALUE:15,EXPANSION_CASE_EXP_START:16,EXPANSION_CASE_EXP_END:17,EXPANSION_FORM_END:18,EOF:19};return t[t.TAG_OPEN_START]="TAG_OPEN_START",t[t.TAG_OPEN_END]="TAG_OPEN_END",t[t.TAG_OPEN_END_VOID]="TAG_OPEN_END_VOID",t[t.TAG_CLOSE]="TAG_CLOSE",t[t.TEXT]="TEXT",t[t.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",t[t.RAW_TEXT]="RAW_TEXT",t[t.COMMENT_START]="COMMENT_START",t[t.COMMENT_END]="COMMENT_END",t[t.CDATA_START]="CDATA_START",t[t.CDATA_END]="CDATA_END",t[t.ATTR_NAME]="ATTR_NAME",t[t.ATTR_VALUE]="ATTR_VALUE",t[t.DOC_TYPE]="DOC_TYPE",t[t.EXPANSION_FORM_START]="EXPANSION_FORM_START",t[t.EXPANSION_CASE_VALUE]="EXPANSION_CASE_VALUE",t[t.EXPANSION_CASE_EXP_START]="EXPANSION_CASE_EXP_START",t[t.EXPANSION_CASE_EXP_END]="EXPANSION_CASE_EXP_END",t[t.EXPANSION_FORM_END]="EXPANSION_FORM_END",t[t.EOF]="EOF",t}();class q{constructor(t,e,n){this.type=t,this.parts=e,this.sourceSpan=n}}class j extends w{constructor(t,e,n){super(n,t),this.tokenType=e}}class F{constructor(t,e){this.tokens=t,this.errors=e}}const V=/\r\n?/g;function G(t){return`Unexpected character "${0===t?"EOF":String.fromCharCode(t)}"`}function B(t){return`Unknown entity "${t}" - use the "&#<decimal>;" or  "&#x<hex>;" syntax`}class z{constructor(t){this.error=t}}class Y{constructor(t,e,n,a=N){this._file=t,this._getTagDefinition=e,this._tokenizeIcu=n,this._interpolationConfig=a,this._peek=-1,this._nextPeek=-1,this._index=-1,this._line=0,this._column=-1,this._expansionCaseStack=[],this._inInterpolation=!1,this.tokens=[],this.errors=[],this._input=t.content,this._length=t.content.length,this._advance()}_processCarriageReturns(t){return t.replace(V,"\n")}tokenize(){for(;0!==this._peek;){const e=this._getLocation();try{this._attemptCharCode(60)?this._attemptCharCode(33)?this._attemptCharCode(91)?this._consumeCdata(e):this._attemptCharCode(45)?this._consumeComment(e):this._consumeDocType(e):this._attemptCharCode(47)?this._consumeTagClose(e):this._consumeTagOpen(e):this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(t){if(!(t instanceof z))throw t;this.errors.push(t.error)}}return this._beginToken(M.EOF),this._endToken([]),new F(function(t){const e=[];let n=void 0;for(let a=0;a<t.length;a++){const r=t[a];n&&n.type===M.TEXT&&r.type===M.TEXT?(n.parts[0]+=r.parts[0],n.sourceSpan.end=r.sourceSpan.end):(n=r,e.push(n))}return e}(this.tokens),this.errors)}_tokenizeExpansionForm(){if($(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if((61===(t=this._peek)||A(t)||R(t))&&this._isInExpansionForm())return this._consumeExpansionCaseStart(),!0;var t;if(125===this._peek){if(this._isInExpansionCase())return this._consumeExpansionCaseEnd(),!0;if(this._isInExpansionForm())return this._consumeExpansionFormEnd(),!0}return!1}_getLocation(){return new v(this._file,this._index,this._line,this._column)}_getSpan(t=this._getLocation(),e=this._getLocation()){return new _(t,e)}_beginToken(t,e=this._getLocation()){this._currentTokenStart=e,this._currentTokenType=t}_endToken(t,e=this._getLocation()){const n=new q(this._currentTokenType,t,new _(this._currentTokenStart,e));return this.tokens.push(n),this._currentTokenStart=null,this._currentTokenType=null,n}_createError(t,e){this._isInExpansionForm()&&(t+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');const n=new j(t,this._currentTokenType,e);return this._currentTokenStart=null,this._currentTokenType=null,new z(n)}_advance(){if(this._index>=this._length)throw this._createError(G(0),this._getSpan());10===this._peek?(this._line++,this._column=0):10!==this._peek&&13!==this._peek&&this._column++,this._index++,this._peek=this._index>=this._length?0:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?0:this._input.charCodeAt(this._index+1)}_attemptCharCode(t){return this._peek===t&&(this._advance(),!0)}_attemptCharCodeCaseInsensitive(t){return e=t,J(this._peek)===J(e)&&(this._advance(),!0);var e}_requireCharCode(t){const e=this._getLocation();if(!this._attemptCharCode(t))throw this._createError(G(this._peek),this._getSpan(e,e))}_attemptStr(t){const e=t.length;if(this._index+e>this._length)return!1;const n=this._savePosition();for(let a=0;a<e;a++)if(!this._attemptCharCode(t.charCodeAt(a)))return this._restorePosition(n),!1;return!0}_attemptStrCaseInsensitive(t){for(let e=0;e<t.length;e++)if(!this._attemptCharCodeCaseInsensitive(t.charCodeAt(e)))return!1;return!0}_requireStr(t){const e=this._getLocation();if(!this._attemptStr(t))throw this._createError(G(this._peek),this._getSpan(e))}_attemptCharCodeUntilFn(t){for(;!t(this._peek);)this._advance()}_requireCharCodeUntilFn(t,e){const n=this._getLocation();if(this._attemptCharCodeUntilFn(t),this._index-n.offset<e)throw this._createError(G(this._peek),this._getSpan(n,n))}_attemptUntilChar(t){for(;this._peek!==t;)this._advance()}_readChar(t){if(t&&38===this._peek)return this._decodeEntity();{const t=this._index;return this._advance(),this._input[t]}}_decodeEntity(){const t=this._getLocation();if(this._advance(),!this._attemptCharCode(35)){const e=this._savePosition();if(this._attemptCharCodeUntilFn(K),59!==this._peek)return this._restorePosition(e),"&";this._advance();const n=this._input.substring(t.offset+1,this._index-1),a=P[n];if(!a)throw this._createError(B(n),this._getSpan(t));return a}{const n=this._attemptCharCode(120)||this._attemptCharCode(88),a=this._getLocation().offset;if(this._attemptCharCodeUntilFn(W),59!==this._peek)throw this._createError(G(this._peek),this._getSpan());this._advance();const r=this._input.substring(a,this._index-1);try{const t=parseInt(r,n?16:10);return String.fromCharCode(t)}catch(e){const n=this._input.substring(t.offset+1,this._index-1);throw this._createError(B(n),this._getSpan(t))}}}_consumeRawText(t,e,n){let a;const r=this._getLocation();this._beginToken(t?M.ESCAPABLE_RAW_TEXT:M.RAW_TEXT,r);const i=[];for(;a=this._getLocation(),!this._attemptCharCode(e)||!n();)for(this._index>a.offset&&i.push(this._input.substring(a.offset,this._index));this._peek!==e;)i.push(this._readChar(t));return this._endToken([this._processCarriageReturns(i.join(""))],a)}_consumeComment(t){this._beginToken(M.COMMENT_START,t),this._requireCharCode(45),this._endToken([]);const e=this._consumeRawText(!1,45,()=>this._attemptStr("->"));this._beginToken(M.COMMENT_END,e.sourceSpan.end),this._endToken([])}_consumeCdata(t){this._beginToken(M.CDATA_START,t),this._requireStr("CDATA["),this._endToken([]);const e=this._consumeRawText(!1,93,()=>this._attemptStr("]>"));this._beginToken(M.CDATA_END,e.sourceSpan.end),this._endToken([])}_consumeDocType(t){this._beginToken(M.DOC_TYPE,t),this._attemptUntilChar(62),this._advance(),this._endToken([this._input.substring(t.offset+2,this._index-1)])}_consumePrefixAndName(){const t=this._index;let e=null;for(;58!==this._peek&&!(((n=this._peek)<97||122<n)&&(n<65||90<n)&&(n<48||n>57));)this._advance();var n;let a;return 58===this._peek?(this._advance(),e=this._input.substring(t,this._index-1),a=this._index):a=t,this._requireCharCodeUntilFn(U,this._index===a?1:0),[e,this._input.substring(a,this._index)]}_consumeTagOpen(t){const e=this._savePosition();let n,a;try{if(!A(this._peek))throw this._createError(G(this._peek),this._getSpan());const e=this._index;for(this._consumeTagOpenStart(t),n=this._input.substring(e,this._index),a=n.toLowerCase(),this._attemptCharCodeUntilFn(H);47!==this._peek&&62!==this._peek;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(H),this._attemptCharCode(61)&&(this._attemptCharCodeUntilFn(H),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(H);this._consumeTagOpenEnd()}catch(i){if(i instanceof z)return this._restorePosition(e),this._beginToken(M.TEXT,t),void this._endToken(["<"]);throw i}const r=this._getTagDefinition(n).contentType;r===k.RAW_TEXT?this._consumeRawTextWithTagClose(a,!1):r===k.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(a,!0)}_consumeRawTextWithTagClose(t,e){const n=this._consumeRawText(e,60,()=>!!this._attemptCharCode(47)&&(this._attemptCharCodeUntilFn(H),!!this._attemptStrCaseInsensitive(t)&&(this._attemptCharCodeUntilFn(H),this._attemptCharCode(62))));this._beginToken(M.TAG_CLOSE,n.sourceSpan.end),this._endToken([null,t])}_consumeTagOpenStart(t){this._beginToken(M.TAG_OPEN_START,t);const e=this._consumePrefixAndName();this._endToken(e)}_consumeAttributeName(){this._beginToken(M.ATTR_NAME);const t=this._consumePrefixAndName();this._endToken(t)}_consumeAttributeValue(){let t;if(this._beginToken(M.ATTR_VALUE),39===this._peek||34===this._peek){const e=this._peek;this._advance();const n=[];for(;this._peek!==e;)n.push(this._readChar(!0));t=n.join(""),this._advance()}else{const e=this._index;this._requireCharCodeUntilFn(U,1),t=this._input.substring(e,this._index)}this._endToken([this._processCarriageReturns(t)])}_consumeTagOpenEnd(){const t=this._attemptCharCode(47)?M.TAG_OPEN_END_VOID:M.TAG_OPEN_END;this._beginToken(t),this._requireCharCode(62),this._endToken([])}_consumeTagClose(t){this._beginToken(M.TAG_CLOSE,t),this._attemptCharCodeUntilFn(H);const e=this._consumePrefixAndName();this._attemptCharCodeUntilFn(H),this._requireCharCode(62),this._endToken(e)}_consumeExpansionFormStart(){this._beginToken(M.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(123),this._endToken([]),this._expansionCaseStack.push(M.EXPANSION_FORM_START),this._beginToken(M.RAW_TEXT,this._getLocation());const t=this._readUntil(44);this._endToken([t],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(H),this._beginToken(M.RAW_TEXT,this._getLocation());const e=this._readUntil(44);this._endToken([e],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(H)}_consumeExpansionCaseStart(){this._beginToken(M.EXPANSION_CASE_VALUE,this._getLocation());const t=this._readUntil(123).trim();this._endToken([t],this._getLocation()),this._attemptCharCodeUntilFn(H),this._beginToken(M.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(123),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(H),this._expansionCaseStack.push(M.EXPANSION_CASE_EXP_START)}_consumeExpansionCaseEnd(){this._beginToken(M.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(125),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(H),this._expansionCaseStack.pop()}_consumeExpansionFormEnd(){this._beginToken(M.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(125),this._endToken([]),this._expansionCaseStack.pop()}_consumeText(){const t=this._getLocation();this._beginToken(M.TEXT,t);const e=[];do{this._interpolationConfig&&this._attemptStr(this._interpolationConfig.start)?(e.push(this._interpolationConfig.start),this._inInterpolation=!0):this._interpolationConfig&&this._inInterpolation&&this._attemptStr(this._interpolationConfig.end)?(e.push(this._interpolationConfig.end),this._inInterpolation=!1):e.push(this._readChar(!0))}while(!this._isTextEnd());this._endToken([this._processCarriageReturns(e.join(""))])}_isTextEnd(){if(60===this._peek||0===this._peek)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if($(this._input,this._index,this._interpolationConfig))return!0;if(125===this._peek&&this._isInExpansionCase())return!0}return!1}_savePosition(){return[this._peek,this._index,this._column,this._line,this.tokens.length]}_readUntil(t){const e=this._index;return this._attemptUntilChar(t),this._input.substring(e,this._index)}_restorePosition(t){this._peek=t[0],this._index=t[1],this._column=t[2],this._line=t[3];const e=t[4];e<this.tokens.length&&(this.tokens=this.tokens.slice(0,e))}_isInExpansionCase(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===M.EXPANSION_CASE_EXP_START}_isInExpansionForm(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===M.EXPANSION_FORM_START}}function H(t){return!C(t)||0===t}function U(t){return C(t)||62===t||47===t||39===t||34===t||61===t}function W(t){return 59===t||0===t||!function(t){return t>=97&&t<=102||t>=65&&t<=70||R(t)}(t)}function K(t){return 59===t||0===t||!A(t)}function $(t,e,n){const a=!!n&&t.indexOf(n.start,e)===e;return 123===t.charCodeAt(e)&&!a}function J(t){return t>=97&&t<=122?t-97+65:t}class Z extends w{constructor(t,e,n){super(e,n),this.elementName=t}static create(t,e,n){return new Z(t,e,n)}}class Q{constructor(t,e){this.rootNodes=t,this.errors=e}}class X{constructor(t){this.getTagDefinition=t}parse(t,e,n=!1,a=N){const r=function(t,e,n,a=!1,r=N){return new Y(new x(t,e),n,a,r).tokenize()}(t,e,this.getTagDefinition,n,a),i=new tt(r.tokens,this.getTagDefinition).build();return new Q(i.rootNodes,r.errors.concat(i.errors))}}class tt{constructor(t,e){this.tokens=t,this.getTagDefinition=e,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}build(){for(;this._peek.type!==M.EOF;)this._peek.type===M.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===M.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===M.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===M.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===M.TEXT||this._peek.type===M.RAW_TEXT||this._peek.type===M.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===M.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._advance();return new Q(this._rootNodes,this._errors)}_advance(){const t=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],t}_advanceIf(t){return this._peek.type===t?this._advance():null}_consumeCdata(t){this._consumeText(this._advance()),this._advanceIf(M.CDATA_END)}_consumeComment(t){const e=this._advanceIf(M.RAW_TEXT);this._advanceIf(M.COMMENT_END);const n=null!==e?e.parts[0].trim():null;this._addToParent(new d(n,t.sourceSpan))}_consumeExpansion(t){const e=this._advance(),n=this._advance(),a=[];for(;this._peek.type===M.EXPANSION_CASE_VALUE;){const t=this._parseExpansionCase();if(!t)return;a.push(t)}if(this._peek.type!==M.EXPANSION_FORM_END)return void this._errors.push(Z.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."));const r=new _(t.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new s(e.parts[0],n.parts[0],a,r,e.sourceSpan)),this._advance()}_parseExpansionCase(){const t=this._advance();if(this._peek.type!==M.EXPANSION_CASE_EXP_START)return this._errors.push(Z.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;const e=this._advance(),n=this._collectExpansionExpTokens(e);if(!n)return null;const a=this._advance();n.push(new q(M.EOF,[],a.sourceSpan));const r=new tt(n,this.getTagDefinition).build();if(r.errors.length>0)return this._errors=this._errors.concat(r.errors),null;const i=new _(t.sourceSpan.start,a.sourceSpan.end),s=new _(e.sourceSpan.start,a.sourceSpan.end);return new u(t.parts[0],r.rootNodes,i,t.sourceSpan,s)}_collectExpansionExpTokens(t){const e=[],n=[M.EXPANSION_CASE_EXP_START];for(;;){if(this._peek.type!==M.EXPANSION_FORM_START&&this._peek.type!==M.EXPANSION_CASE_EXP_START||n.push(this._peek.type),this._peek.type===M.EXPANSION_CASE_EXP_END){if(!et(n,M.EXPANSION_CASE_EXP_START))return this._errors.push(Z.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(n.pop(),0===n.length)return e}if(this._peek.type===M.EXPANSION_FORM_END){if(!et(n,M.EXPANSION_FORM_START))return this._errors.push(Z.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;n.pop()}if(this._peek.type===M.EOF)return this._errors.push(Z.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;e.push(this._advance())}}_consumeText(t){let e=t.parts[0];if(e.length>0&&"\n"===e[0]){const t=this._getParentElement();null!==t&&0===t.children.length&&this.getTagDefinition(t.name).ignoreFirstLf&&(e=e.substring(1))}e.length>0&&this._addToParent(new i(e,t.sourceSpan))}_closeVoidElement(){const t=this._getParentElement();t&&this.getTagDefinition(t.name).isVoid&&this._elementStack.pop()}_consumeStartTag(t){const e=t.parts[0],n=t.parts[1],a=[];for(;this._peek.type===M.ATTR_NAME;)a.push(this._consumeAttr(this._advance()));const r=this._getElementFullName(e,n,this._getParentElement());let i=!1;if(this._peek.type===M.TAG_OPEN_END_VOID){this._advance(),i=!0;const e=this.getTagDefinition(r);e.canSelfClose||null!==L(r)||e.isVoid||this._errors.push(Z.create(r,t.sourceSpan,`Only void and foreign elements can be self closed "${t.parts[1]}"`))}else this._peek.type===M.TAG_OPEN_END&&(this._advance(),i=!1);const s=new _(t.sourceSpan.start,this._peek.sourceSpan.start),u=new l(r,a,[],s,s,void 0);this._pushElement(u),i&&(this._popElement(r),u.endSourceSpan=s)}_pushElement(t){const e=this._getParentElement();e&&this.getTagDefinition(e.name).isClosedByChild(t.name)&&this._elementStack.pop();const n=this.getTagDefinition(t.name),{parent:a,container:r}=this._getParentElementSkippingContainers();if(a&&n.requireExtraParent(a.name)){const e=new l(n.parentToAdd,[],[],t.sourceSpan,t.startSourceSpan,t.endSourceSpan);this._insertBeforeContainer(a,r,e)}this._addToParent(t),this._elementStack.push(t)}_consumeEndTag(t){const e=this._getElementFullName(t.parts[0],t.parts[1],this._getParentElement());this._getParentElement()&&(this._getParentElement().endSourceSpan=t.sourceSpan),this.getTagDefinition(e).isVoid?this._errors.push(Z.create(e,t.sourceSpan,`Void elements do not have end tags "${t.parts[1]}"`)):this._popElement(e)||this._errors.push(Z.create(e,t.sourceSpan,`Unexpected closing tag "${e}". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`))}_popElement(t){for(let e=this._elementStack.length-1;e>=0;e--){const n=this._elementStack[e];if(n.name===t)return this._elementStack.splice(e,this._elementStack.length-e),!0;if(!this.getTagDefinition(n.name).closedByParent)return!1}return!1}_consumeAttr(t){const e=D(t.parts[0],t.parts[1]);let n=t.sourceSpan.end,a="",r=void 0;if(this._peek.type===M.ATTR_VALUE){const t=this._advance();a=t.parts[0],n=t.sourceSpan.end,r=t.sourceSpan}return new o(e,a,new _(t.sourceSpan.start,n),r)}_getParentElement(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null}_getParentElementSkippingContainers(){let t=null;for(let e=this._elementStack.length-1;e>=0;e--){if("ng-container"!==E(this._elementStack[e].name)[1])return{parent:this._elementStack[e],container:t};t=this._elementStack[e]}return{parent:null,container:t}}_addToParent(t){const e=this._getParentElement();null!==e?e.children.push(t):this._rootNodes.push(t)}_insertBeforeContainer(t,e,n){if(e){if(t){const a=t.children.indexOf(e);t.children[a]=n}else this._rootNodes.push(n);n.children.push(e),this._elementStack.splice(this._elementStack.indexOf(e),0,n)}else this._addToParent(n),this._elementStack.push(n)}_getElementFullName(t,e,n){return null===t&&null===(t=this.getTagDefinition(e).implicitNamespacePrefix)&&null!==n&&(t=L(n.name)),D(t,e)}}function et(t,e){return t.length>0&&t[t.length-1]===e}class nt{constructor(){this.closedByParent=!1,this.contentType=k.PARSABLE_DATA,this.isVoid=!1,this.ignoreFirstLf=!1,this.canSelfClose=!0}requireExtraParent(t){return!1}isClosedByChild(t){return!1}}const at=new nt;function rt(t){return at}class it{constructor({closedByChildren:t,requiredParents:e,implicitNamespacePrefix:n,contentType:a=k.PARSABLE_DATA,closedByParent:r=!1,isVoid:i=!1,ignoreFirstLf:s=!1}={}){this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,t&&t.length>0&&t.forEach(t=>this.closedByChildren[t]=!0),this.isVoid=i,this.closedByParent=r||i,e&&e.length>0&&(this.requiredParents={},this.parentToAdd=e[0],e.forEach(t=>this.requiredParents[t]=!0)),this.implicitNamespacePrefix=n||null,this.contentType=a,this.ignoreFirstLf=s}requireExtraParent(t){if(!this.requiredParents)return!1;if(!t)return!0;const e=t.toLowerCase();return!("template"===e||"ng-template"===t)&&!0!==this.requiredParents[e]}isClosedByChild(t){return this.isVoid||t.toLowerCase()in this.closedByChildren}}const st={base:new it({isVoid:!0}),meta:new it({isVoid:!0}),area:new it({isVoid:!0}),embed:new it({isVoid:!0}),link:new it({isVoid:!0}),img:new it({isVoid:!0}),input:new it({isVoid:!0}),param:new it({isVoid:!0}),hr:new it({isVoid:!0}),br:new it({isVoid:!0}),source:new it({isVoid:!0}),track:new it({isVoid:!0}),wbr:new it({isVoid:!0}),p:new it({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new it({closedByChildren:["tbody","tfoot"]}),tbody:new it({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new it({closedByChildren:["tbody"],closedByParent:!0}),tr:new it({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new it({closedByChildren:["td","th"],closedByParent:!0}),th:new it({closedByChildren:["td","th"],closedByParent:!0}),col:new it({requiredParents:["colgroup"],isVoid:!0}),svg:new it({implicitNamespacePrefix:"svg"}),math:new it({implicitNamespacePrefix:"math"}),li:new it({closedByChildren:["li"],closedByParent:!0}),dt:new it({closedByChildren:["dt","dd"]}),dd:new it({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new it({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new it({closedByChildren:["optgroup"],closedByParent:!0}),option:new it({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new it({ignoreFirstLf:!0}),listing:new it({ignoreFirstLf:!0}),style:new it({contentType:k.RAW_TEXT}),script:new it({contentType:k.RAW_TEXT}),title:new it({contentType:k.ESCAPABLE_RAW_TEXT}),textarea:new it({contentType:k.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})},ut=new it;function ot(t){return st[t.toLowerCase()]||ut}class lt extends class{visitText(t,e){}visitContainer(t,e){t.children.forEach(t=>t.visit(this))}visitIcu(t,e){Object.keys(t.cases).forEach(e=>{t.cases[e].visit(this)})}visitTagPlaceholder(t,e){t.children.forEach(t=>t.visit(this))}visitPlaceholder(t,e){}visitIcuPlaceholder(t,e){}}{constructor(t,e){super(),this.mapName=e,this.internalToPublic={},this.publicToNextId={},this.publicToInternal={},t.nodes.forEach(t=>t.visit(this))}toPublicName(t){return this.internalToPublic.hasOwnProperty(t)?this.internalToPublic[t]:null}toInternalName(t){return this.publicToInternal.hasOwnProperty(t)?this.publicToInternal[t]:null}visitText(t,e){return null}visitTagPlaceholder(t,e){this.visitPlaceholderName(t.startName),super.visitTagPlaceholder(t,e),this.visitPlaceholderName(t.closeName)}visitPlaceholder(t,e){this.visitPlaceholderName(t.name)}visitIcuPlaceholder(t,e){this.visitPlaceholderName(t.name)}visitPlaceholderName(t){if(!t||this.internalToPublic.hasOwnProperty(t))return;let e=this.mapName(t);if(this.publicToInternal.hasOwnProperty(e)){const t=this.publicToNextId[e];this.publicToNextId[e]=t+1,e=`${e}_${t}`}else this.publicToNextId[e]=1;this.internalToPublic[t]=e,this.publicToInternal[e]=t}}const dt=new a.I18nSelectPipe;class ct{constructor(t,e){this.params=e,this.i18nPluralPipe=new a.I18nPluralPipe(new a.NgLocaleLocalization(t))}visitElement(t,e){return ot(t.name).isVoid?`<${t.name}${this.serializeNodes(t.attrs," ")}/>`:`<${t.name}${this.serializeNodes(t.attrs," ")}>${this.serializeNodes(t.children)}</${t.name}>`}visitAttribute(t,e){return`${t.name}="${t.value}"`}visitText(t,e){return t.value}visitComment(t,e){return`\x3c!--${t.value}--\x3e`}visitExpansion(t,e){const n={};switch(t.cases.forEach(t=>n[t.value]=this.serializeNodes(t.expression)),t.type){case"select":return dt.transform(this.params[t.switchValue]||"",n);case"plural":return this.i18nPluralPipe.transform(this.params[t.switchValue],n)}throw new Error(`Unknown expansion type "${t.type}"`)}visitExpansionCase(t,e){return` ${t.value} {${this.serializeNodes(t.expression)}}`}serializeNodes(t,e=""){return 0===t.length?"":e+t.map(t=>t.visit(this,null)).join(e)}}function ft(t){return t.id||function(t){const e=At(t),n=function(t,e){const n=Array(t.length+3>>>2);for(let a=0;a<n.length;a++)n[a]=It(t,4*a,e);return n}(e,xt.Big),a=8*e.length,r=new Array(80);let[i,s,u,o,l]=[1732584193,4023233417,2562383102,271733878,3285377520];n[a>>5]|=128<<24-a%32,n[15+(a+64>>9<<4)]=a;for(let d=0;d<n.length;d+=16){const[t,e,a,c,f]=[i,s,u,o,l];for(let h=0;h<80;h++){r[h]=h<16?n[d+h]:Ot(r[h-3]^r[h-8]^r[h-14]^r[h-16],1);const[t,e]=bt(h,s,u,o),a=[Ot(i,5),t,l,e,r[h]].reduce(_t);[l,o,u,s,i]=[o,u,Ot(s,30),i,a]}[i,s,u,o,l]=[_t(i,t),_t(s,e),_t(u,a),_t(o,c),_t(l,f)]}return function(t){let e="";for(let n=0;n<t.length;n++){const a=St(t,n);e+=(a>>>4).toString(16)+(15&a).toString(16)}return e.toLowerCase()}(Nt([i,s,u,o,l]))}((e=t.nodes,e.map(t=>t.visit(gt,null))).join("")+`[${t.meaning}]`);var e}class ht{visitText(t,e){return t.value}visitContainer(t,e){return`[${t.children.map(t=>t.visit(this)).join(", ")}]`}visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${t.expression}, ${t.type}, ${n.join(", ")}}`}visitTagPlaceholder(t,e){return t.isVoid?`<ph tag name="${t.startName}"/>`:`<ph tag name="${t.startName}">${t.children.map(t=>t.visit(this)).join(", ")}</ph name="${t.closeName}">`}visitPlaceholder(t,e){return t.value?`<ph name="${t.name}">${t.value}</ph>`:`<ph name="${t.name}"/>`}visitIcuPlaceholder(t,e){return`<ph icu name="${t.name}">${t.value.visit(this)}</ph>`}}const gt=new ht;class pt extends ht{visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${t.type}, ${n.join(", ")}}`}}function bt(t,e,n,a){return t<20?[e&n|~e&a,1518500249]:t<40?[e^n^a,1859775393]:t<60?[e&n|e&a|n&a,2400959708]:[e^n^a,3395469782]}function mt(t){const e=At(t);let[n,a]=[yt(e,0),yt(e,102072)];return 0!==n||0!==a&&1!==a||(n^=319790063,a^=-1801410264),[n,a]}function yt(t,e){let n,[a,r]=[2654435769,2654435769];const i=t.length;for(n=0;n+12<=i;n+=12)a=_t(a,It(t,n,xt.Little)),r=_t(r,It(t,n+4,xt.Little)),e=_t(e,It(t,n+8,xt.Little)),[a,r,e]=vt([a,r,e]);return a=_t(a,It(t,n,xt.Little)),r=_t(r,It(t,n+4,xt.Little)),e=_t(e,i),vt([a,r,e=_t(e,It(t,n+8,xt.Little)<<8)])[2]}function vt([t,e,n]){return t=wt(t,e),t=wt(t,n),t^=n>>>13,e=wt(e,n),e=wt(e,t),e^=t<<8,n=wt(n,t),n=wt(n,e),n^=e>>>13,t=wt(t,e),t=wt(t,n),t^=n>>>12,e=wt(e,n),e=wt(e,t),e^=t<<16,n=wt(n,t),n=wt(n,e),n^=e>>>5,t=wt(t,e),t=wt(t,n),t^=n>>>3,e=wt(e,n),e=wt(e,t),e^=t<<10,n=wt(n,t),n=wt(n,e),[t,e,n^=e>>>15]}const xt=function(){var t={Little:0,Big:1};return t[t.Little]="Little",t[t.Big]="Big",t}();function _t(t,e){return Tt(t,e)[1]}function Tt(t,e){const n=(65535&t)+(65535&e),a=(t>>>16)+(e>>>16)+(n>>>16);return[a>>>16,a<<16|65535&n]}function wt(t,e){const n=(65535&t)-(65535&e);return(t>>16)-(e>>16)+(n>>16)<<16|65535&n}function Ot(t,e){return t<<e|t>>>32-e}function St(t,e){return e>=t.length?0:255&t.charCodeAt(e)}function It(t,e,n){let a=0;if(n===xt.Big)for(let r=0;r<4;r++)a+=St(t,e+r)<<24-8*r;else for(let r=0;r<4;r++)a+=St(t,e+r)<<8*r;return a}function Nt(t){return t.reduce((t,e)=>t+function(t){let e="";for(let n=0;n<4;n++)e+=String.fromCharCode(t>>>8*(3-n)&255);return e}(e),"")}function Ct(t,e){let n="";const a=Math.max(t.length,e.length);for(let r=0,i=0;r<a||i;r++){const a=i+ +(t[r]||0)+ +(e[r]||0);a>=10?(i=1,n+=a-10):(i=0,n+=a)}return n}function Rt(t,e){let n="",a=e;for(;0!==t;t>>>=1)1&t&&(n=Ct(n,a)),a=Ct(a,a);return n}function At(t){let e="";for(let n=0;n<t.length;n++){let a=t.charCodeAt(n);if(a>=55296&&a<=56319&&t.length>n+1){const e=t.charCodeAt(n+1);e>=56320&&e<=57343&&(n++,a=(a-55296<<10)+e-56320+65536)}a<=127?e+=String.fromCharCode(a):a<=2047?e+=String.fromCharCode(a>>6&31|192,63&a|128):a<=65535?e+=String.fromCharCode(a>>12|224,a>>6&63|128,63&a|128):a<=2097151&&(e+=String.fromCharCode(a>>18&7|240,a>>12&63|128,a>>6&63|128,63&a|128))}return e}function kt(t){const e=new Lt,{msgIdToHtml:n,errors:a}=e.parse(t),r={},i=new Dt;if(Object.keys(n).forEach(t=>{const{i18nNodes:e,errors:s}=i.convert(n[t]);a.push(...s),r[t]=e}),a.length)throw new Error("xliff parse errors:\n"+a.join("\n"));return r}const Et=ft;class Lt{parse(t){this._unitMlString=null,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"trans-unit":this._unitMlString=null;const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;this._msgIdToHtml.hasOwnProperty(n)?this._addError(t,"Duplicated translations for msg "+n):(c(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[n]=this._unitMlString:this._addError(t,`Message ${n} misses a translation`))}else this._addError(t,'<trans-unit> misses the "id" attribute');break;case"source":break;case"target":const n=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=n;break;case"file":c(this,t.children,null);break;default:c(this,t.children,null)}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}class Dt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:c(this,e.rootNodes),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitElement(t,e){if("x"===t.name){const e=t.attrs.find(t=>"id"===t.name);if(e)return new m("",e.value,t.sourceSpan);this._addError(t,'<x> misses the "id" attribute')}else this._addError(t,"Unexpected tag");return null}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:c(this,t.expression)}}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}function Pt(t){const e=new qt,{msgIdToHtml:n,errors:a}=e.parse(t),r={},i=new jt;if(Object.keys(n).forEach(t=>{const{i18nNodes:e,errors:s}=i.convert(n[t]);a.push(...s),r[t]=e}),a.length)throw new Error("xliff2 parse errors:\n"+a.join("\n"));return r}const Mt=function(t){if(t.id)return t.id;const e=new pt;return function(t,e){let[n,a]=mt(t);if(e){const[t,r]=mt(e);[n,a]=function([t,e],[n,a]){const[r,i]=Tt(e,a);return[_t(_t(t,n),r),i]}(function([t,e],n){return[t<<n|e>>>32-n,e<<n|t>>>32-n]}([n,a],1),[t,r])}return function(t){let e="",n="1";for(let a=t.length-1;a>=0;a--)e=Ct(e,Rt(St(t,a),n)),n=Rt(256,n);return e.split("").reverse().join("")}(Nt([2147483647&n,a]))}(t.nodes.map(t=>t.visit(e,null)).join(""),t.meaning)};class qt{parse(t){this._unitMlString=null,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"unit":this._unitMlString=null;const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;this._msgIdToHtml.hasOwnProperty(n)?this._addError(t,"Duplicated translations for msg "+n):(c(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[n]=this._unitMlString:this._addError(t,`Message ${n} misses a translation`))}else this._addError(t,'<unit> misses the "id" attribute');break;case"source":break;case"target":const n=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=n;break;case"xliff":const a=t.attrs.find(t=>"version"===t.name);if(a){const e=a.value;"2.0"!==e?this._addError(t,`The XLIFF file version ${e} is not compatible with XLIFF 2.0 serializer`):c(this,t.children,null)}break;default:c(this,t.children,null)}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}class jt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:[].concat(...c(this,e.rootNodes)),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitElement(t,e){switch(t.name){case"ph":const e=t.attrs.find(t=>"equiv"===t.name);if(e)return[new m("",e.value,t.sourceSpan)];this._addError(t,'<ph> misses the "equiv" attribute');break;case"pc":const n=t.attrs.find(t=>"equivStart"===t.name),a=t.attrs.find(t=>"equivEnd"===t.name);if(n){if(a){const e=a.value;return[].concat(new m("",n.value,t.sourceSpan),...t.children.map(t=>t.visit(this,null)),new m("",e,t.sourceSpan))}this._addError(t,'<ph> misses the "equivEnd" attribute')}else this._addError(t,'<ph> misses the "equivStart" attribute');break;default:this._addError(t,"Unexpected tag")}return null}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:[].concat(...c(this,t.expression))}}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}function Ft(t){return t.toUpperCase().replace(/[^A-Z0-9_]/g,"_")}function Vt(t){const e=new zt,{msgIdToHtml:n,errors:a}=e.parse(t);if(a.length)throw new Error("xtb parse errors:\n"+a.join("\n"));const r={},i=new Yt;return Object.keys(n).forEach(t=>{var e,a;e=r,a=t,Object.defineProperty(e,a,{configurable:!0,enumerable:!0,get:()=>{const r=(()=>{const{i18nNodes:e,errors:a}=i.convert(n[t]);if(a.length)throw new Error("xtb parse errors:\n"+a.join("\n"));return e})();return Object.defineProperty(e,a,{enumerable:!0,value:r}),r},set:t=>{throw new Error("Could not overwrite an XTB translation")}})}),r}const Gt=ft,Bt=function(t){return new lt(t,Ft)};class zt{parse(t){this._bundleDepth=0,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"translationbundle":this._bundleDepth++,this._bundleDepth>1&&this._addError(t,"<translationbundle> elements can not be nested"),c(this,t.children,null),this._bundleDepth--;break;case"translation":const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;if(this._msgIdToHtml.hasOwnProperty(n))this._addError(t,"Duplicated translations for msg "+n);else{const e=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._msgIdToHtml[n]=e}}else this._addError(t,'<translation> misses the "id" attribute');break;default:this._addError(t,"Unexpected tag")}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}class Yt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:c(this,e.rootNodes),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:c(this,t.expression)}}visitElement(t,e){if("ph"===t.name){const e=t.attrs.find(t=>"name"===t.name);if(e)return new m("",e.value,t.sourceSpan);this._addError(t,'<ph> misses the "name" attribute')}else this._addError(t,"Unexpected tag");return null}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}class Ht{constructor(t,e,n,a){this.input=e,this.errLocation=n,this.ctxLocation=a,this.message=`Parser Error: ${t} ${n} [${e}] in ${a}`}}class Ut{constructor(t,e){this.start=t,this.end=e}}class Wt{constructor(t){this.span=t}visit(t,e=null){return null}toString(){return"AST"}}class Kt extends Wt{constructor(t,e,n,a){super(t),this.prefix=e,this.uninterpretedExpression=n,this.location=a}visit(t,e=null){return t.visitQuote(this,e)}toString(){return"Quote"}}class $t extends Wt{visit(t,e=null){}}class Jt extends Wt{visit(t,e=null){return t.visitImplicitReceiver(this,e)}}class Zt extends Wt{constructor(t,e){super(t),this.expressions=e}visit(t,e=null){return t.visitChain(this,e)}}class Qt extends Wt{constructor(t,e,n,a){super(t),this.condition=e,this.trueExp=n,this.falseExp=a}visit(t,e=null){return t.visitConditional(this,e)}}class Xt extends Wt{constructor(t,e,n){super(t),this.receiver=e,this.name=n}visit(t,e=null){return t.visitPropertyRead(this,e)}}class te extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.value=a}visit(t,e=null){return t.visitPropertyWrite(this,e)}}class ee extends Wt{constructor(t,e,n){super(t),this.receiver=e,this.name=n}visit(t,e=null){return t.visitSafePropertyRead(this,e)}}class ne extends Wt{constructor(t,e,n){super(t),this.obj=e,this.key=n}visit(t,e=null){return t.visitKeyedRead(this,e)}}class ae extends Wt{constructor(t,e,n,a){super(t),this.obj=e,this.key=n,this.value=a}visit(t,e=null){return t.visitKeyedWrite(this,e)}}class re extends Wt{constructor(t,e,n,a){super(t),this.exp=e,this.name=n,this.args=a}visit(t,e=null){return t.visitPipe(this,e)}}class ie extends Wt{constructor(t,e){super(t),this.value=e}visit(t,e=null){return t.visitLiteralPrimitive(this,e)}}class se extends Wt{constructor(t,e){super(t),this.expressions=e}visit(t,e=null){return t.visitLiteralArray(this,e)}}class ue extends Wt{constructor(t,e,n){super(t),this.keys=e,this.values=n}visit(t,e=null){return t.visitLiteralMap(this,e)}}class oe extends Wt{constructor(t,e,n){super(t),this.strings=e,this.expressions=n}visit(t,e=null){return t.visitInterpolation(this,e)}}class le extends Wt{constructor(t,e,n,a){super(t),this.operation=e,this.left=n,this.right=a}visit(t,e=null){return t.visitBinary(this,e)}}class de extends Wt{constructor(t,e){super(t),this.expression=e}visit(t,e=null){return t.visitPrefixNot(this,e)}}class ce extends Wt{constructor(t,e){super(t),this.expression=e}visit(t,e=null){return t.visitNonNullAssert(this,e)}}class fe extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.args=a}visit(t,e=null){return t.visitMethodCall(this,e)}}class he extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.args=a}visit(t,e=null){return t.visitSafeMethodCall(this,e)}}class ge extends Wt{constructor(t,e,n){super(t),this.target=e,this.args=n}visit(t,e=null){return t.visitFunctionCall(this,e)}}class pe extends Wt{constructor(t,e,n,a){super(new Ut(0,null==e?0:e.length)),this.ast=t,this.source=e,this.location=n,this.errors=a}visit(t,e=null){return this.ast.visit(t,e)}toString(){return`${this.source} in ${this.location}`}}class be{constructor(t,e,n,a,r){this.span=t,this.key=e,this.keyIsVar=n,this.name=a,this.expression=r}}const me=function(){var t={Character:0,Identifier:1,Keyword:2,String:3,Operator:4,Number:5,Error:6};return t[t.Character]="Character",t[t.Identifier]="Identifier",t[t.Keyword]="Keyword",t[t.String]="String",t[t.Operator]="Operator",t[t.Number]="Number",t[t.Error]="Error",t}(),ye=["var","let","as","null","undefined","true","false","if","else","this"];class ve{tokenize(t){const e=new Oe(t),n=[];let a=e.scanToken();for(;null!=a;)n.push(a),a=e.scanToken();return n}}class xe{constructor(t,e,n,a){this.index=t,this.type=e,this.numValue=n,this.strValue=a}isCharacter(t){return this.type===me.Character&&this.numValue===t}isNumber(){return this.type===me.Number}isString(){return this.type===me.String}isOperator(t){return this.type===me.Operator&&this.strValue===t}isIdentifier(){return this.type===me.Identifier}isKeyword(){return this.type===me.Keyword}isKeywordLet(){return this.type===me.Keyword&&"let"===this.strValue}isKeywordAs(){return this.type===me.Keyword&&"as"===this.strValue}isKeywordNull(){return this.type===me.Keyword&&"null"===this.strValue}isKeywordUndefined(){return this.type===me.Keyword&&"undefined"===this.strValue}isKeywordTrue(){return this.type===me.Keyword&&"true"===this.strValue}isKeywordFalse(){return this.type===me.Keyword&&"false"===this.strValue}isKeywordThis(){return this.type===me.Keyword&&"this"===this.strValue}isError(){return this.type===me.Error}toNumber(){return this.type===me.Number?this.numValue:-1}toString(){switch(this.type){case me.Character:case me.Identifier:case me.Keyword:case me.Operator:case me.String:case me.Error:return this.strValue;case me.Number:return this.numValue.toString();default:return null}}}function _e(t,e){return new xe(t,me.Character,e,String.fromCharCode(e))}function Te(t,e){return new xe(t,me.Operator,0,e)}const we=new xe(-1,me.Character,0,"");class Oe{constructor(t){this.input=t,this.peek=0,this.index=-1,this.length=t.length,this.advance()}advance(){this.peek=++this.index>=this.length?0:this.input.charCodeAt(this.index)}scanToken(){const t=this.input,e=this.length;let n=this.peek,a=this.index;for(;n<=32;){if(++a>=e){n=0;break}n=t.charCodeAt(a)}if(this.peek=n,this.index=a,a>=e)return null;if(Se(n))return this.scanIdentifier();if(R(n))return this.scanNumber(a);const r=a;switch(n){case 46:return this.advance(),R(this.peek)?this.scanNumber(r):_e(r,46);case 40:case 41:case 123:case 125:case 91:case 93:case 44:case 58:case 59:return this.scanCharacter(r,n);case 39:case 34:return this.scanString();case 35:case 43:case 45:case 42:case 47:case 37:case 94:return this.scanOperator(r,String.fromCharCode(n));case 63:return this.scanComplexOperator(r,"?",46,".");case 60:case 62:return this.scanComplexOperator(r,String.fromCharCode(n),61,"=");case 33:case 61:return this.scanComplexOperator(r,String.fromCharCode(n),61,"=",61,"=");case 38:return this.scanComplexOperator(r,"&",38,"&");case 124:return this.scanComplexOperator(r,"|",124,"|");case 160:for(;C(this.peek);)this.advance();return this.scanToken()}return this.advance(),this.error(`Unexpected character [${String.fromCharCode(n)}]`,0)}scanCharacter(t,e){return this.advance(),_e(t,e)}scanOperator(t,e){return this.advance(),Te(t,e)}scanComplexOperator(t,e,n,a,r,i){this.advance();let s=e;return this.peek===n&&(this.advance(),s+=a),null!=r&&this.peek===r&&(this.advance(),s+=i),Te(t,s)}scanIdentifier(){const t=this.index;for(this.advance();Ie(this.peek);)this.advance();const e=this.input.substring(t,this.index);return ye.indexOf(e)>-1?new xe(t,me.Keyword,0,e):function(t,e){return new xe(t,me.Identifier,0,e)}(t,e)}scanNumber(t){let e=this.index===t;for(this.advance();;){if(R(this.peek));else if(46===this.peek)e=!1;else{if(101!==(n=this.peek)&&69!==n)break;if(this.advance(),Ne(this.peek)&&this.advance(),!R(this.peek))return this.error("Invalid exponent",-1);e=!1}this.advance()}var n;const a=this.input.substring(t,this.index),r=e?function(t){const e=parseInt(t,10);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}(a):parseFloat(a);return new xe(t,me.Number,r,"")}scanString(){const t=this.index,e=this.peek;this.advance();let n="",a=this.index;const r=this.input;for(;this.peek!==e;)if(92===this.peek){let t;if(n+=r.substring(a,this.index),this.advance(),this.peek=this.peek,117===this.peek){const e=r.substring(this.index+1,this.index+5);if(!/^[0-9a-f]+$/i.test(e))return this.error(`Invalid unicode escape [\\u${e}]`,0);t=parseInt(e,16);for(let t=0;t<5;t++)this.advance()}else t=Ce(this.peek),this.advance();n+=String.fromCharCode(t),a=this.index}else{if(0===this.peek)return this.error("Unterminated quote",0);this.advance()}const i=r.substring(a,this.index);return this.advance(),new xe(t,me.String,0,n+i)}error(t,e){const n=this.index+e;return function(t,e){return new xe(t,me.Error,0,e)}(n,`Lexer Error: ${t} at column ${n} in expression [${this.input}]`)}}function Se(t){return 97<=t&&t<=122||65<=t&&t<=90||95===t||36===t}function Ie(t){return A(t)||R(t)||95===t||36===t}function Ne(t){return 45===t||43===t}function Ce(t){switch(t){case 110:return 10;case 102:return 12;case 114:return 13;case 116:return 9;case 118:return 11;default:return t}}class Re{constructor(t,e,n){this.strings=t,this.expressions=e,this.offsets=n}}class Ae{constructor(t,e,n){this.templateBindings=t,this.warnings=e,this.errors=n}}function ke(t){const e=S(t.start)+"([\\s\\S]*?)"+S(t.end);return new RegExp(e,"g")}class Ee{constructor(t){this._lexer=t,this.errors=[]}parseAction(t,e,n=N){this._checkNoInterpolation(t,e,n);const a=this._stripComments(t),r=this._lexer.tokenize(this._stripComments(t)),i=new Le(t,e,r,a.length,!0,this.errors,t.length-a.length).parseChain();return new pe(i,t,e,this.errors)}parseBinding(t,e,n=N){const a=this._parseBindingAst(t,e,n);return new pe(a,t,e,this.errors)}parseSimpleBinding(t,e,n=N){const a=this._parseBindingAst(t,e,n),r=De.check(a);return r.length>0&&this._reportError("Host binding expression cannot contain "+r.join(" "),t,e),new pe(a,t,e,this.errors)}_reportError(t,e,n,a){this.errors.push(new Ht(t,e,n,a))}_parseBindingAst(t,e,n){const a=this._parseQuote(t,e);if(null!=a)return a;this._checkNoInterpolation(t,e,n);const r=this._stripComments(t),i=this._lexer.tokenize(r);return new Le(t,e,i,r.length,!1,this.errors,t.length-r.length).parseChain()}_parseQuote(t,e){if(null===t)return null;const n=t.indexOf(":");if(-1===n)return null;const a=t.substring(0,n).trim();if(!function(t){if(0===t.length)return!1;const e=new Oe(t);if(!Se(e.peek))return!1;for(e.advance();0!==e.peek;){if(!Ie(e.peek))return!1;e.advance()}return!0}(a))return null;const r=t.substring(n+1);return new Kt(new Ut(0,t.length),a,r,e)}parseTemplateBindings(t,e,n){const a=this._lexer.tokenize(e);if(t){const e=this._lexer.tokenize(t).map(t=>(t.index=0,t));a.unshift(...e)}return new Le(e,n,a,e.length,!1,this.errors,0).parseTemplateBindings()}parseInterpolation(t,e,n=N){const a=this.splitInterpolation(t,e,n);if(null===a)return null;const r=[];for(let i=0;i<a.expressions.length;++i){const n=a.expressions[i],s=this._stripComments(n),u=this._lexer.tokenize(s),o=new Le(t,e,u,s.length,!1,this.errors,a.offsets[i]+(n.length-s.length)).parseChain();r.push(o)}return new pe(new oe(new Ut(0,null===t?0:t.length),a.strings,r),t,e,this.errors)}splitInterpolation(t,e,n=N){const a=ke(n),r=t.split(a);if(r.length<=1)return null;const i=[],s=[],u=[];let o=0;for(let l=0;l<r.length;l++){const a=r[l];l%2==0?(i.push(a),o+=a.length):a.trim().length>0?(o+=n.start.length,s.push(a),u.push(o),o+=a.length+n.end.length):(this._reportError("Blank expressions are not allowed in interpolated strings",t,`at column ${this._findInterpolationErrorColumn(r,l,n)} in`,e),s.push("$implict"),u.push(o))}return new Re(i,s,u)}wrapLiteralPrimitive(t,e){return new pe(new ie(new Ut(0,null===t?0:t.length),t),t,e,this.errors)}_stripComments(t){const e=this._commentStart(t);return null!=e?t.substring(0,e).trim():t}_commentStart(t){let e=null;for(let a=0;a<t.length-1;a++){const r=t.charCodeAt(a),i=t.charCodeAt(a+1);if(47===r&&47===i&&null===e)return a;e===r?e=null:null===e&&(39===(n=r)||34===n||96===n)&&(e=r)}var n;return null}_checkNoInterpolation(t,e,n){const a=ke(n),r=t.split(a);r.length>1&&this._reportError(`Got interpolation (${n.start}${n.end}) where expression was expected`,t,`at column ${this._findInterpolationErrorColumn(r,1,n)} in`,e)}_findInterpolationErrorColumn(t,e,n){let a="";for(let r=0;r<e;r++)a+=r%2==0?t[r]:`${n.start}${t[r]}${n.end}`;return a.length}}class Le{constructor(t,e,n,a,r,i,s){this.input=t,this.location=e,this.tokens=n,this.inputLength=a,this.parseAction=r,this.errors=i,this.offset=s,this.rparensExpected=0,this.rbracketsExpected=0,this.rbracesExpected=0,this.index=0}peek(t){const e=this.index+t;return e<this.tokens.length?this.tokens[e]:we}get next(){return this.peek(0)}get inputIndex(){return this.index<this.tokens.length?this.next.index+this.offset:this.inputLength+this.offset}span(t){return new Ut(t,this.inputIndex)}advance(){this.index++}optionalCharacter(t){return!!this.next.isCharacter(t)&&(this.advance(),!0)}peekKeywordLet(){return this.next.isKeywordLet()}peekKeywordAs(){return this.next.isKeywordAs()}expectCharacter(t){this.optionalCharacter(t)||this.error("Missing expected "+String.fromCharCode(t))}optionalOperator(t){return!!this.next.isOperator(t)&&(this.advance(),!0)}expectOperator(t){this.optionalOperator(t)||this.error("Missing expected operator "+t)}expectIdentifierOrKeyword(){const t=this.next;return t.isIdentifier()||t.isKeyword()?(this.advance(),t.toString()):(this.error(`Unexpected token ${t}, expected identifier or keyword`),"")}expectIdentifierOrKeywordOrString(){const t=this.next;return t.isIdentifier()||t.isKeyword()||t.isString()?(this.advance(),t.toString()):(this.error(`Unexpected token ${t}, expected identifier, keyword, or string`),"")}parseChain(){const t=[],e=this.inputIndex;for(;this.index<this.tokens.length;){const e=this.parsePipe();if(t.push(e),this.optionalCharacter(59))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(59););else this.index<this.tokens.length&&this.error(`Unexpected token '${this.next}'`)}return 0===t.length?new $t(this.span(e)):1===t.length?t[0]:new Zt(this.span(e),t)}parsePipe(){let t=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{const e=this.expectIdentifierOrKeyword(),n=[];for(;this.optionalCharacter(58);)n.push(this.parseExpression());t=new re(this.span(t.span.start),t,e,n)}while(this.optionalOperator("|"))}return t}parseExpression(){return this.parseConditional()}parseConditional(){const t=this.inputIndex,e=this.parseLogicalOr();if(this.optionalOperator("?")){const n=this.parsePipe();let a;if(this.optionalCharacter(58))a=this.parsePipe();else{const e=this.input.substring(t,this.inputIndex);this.error(`Conditional expression ${e} requires all 3 expressions`),a=new $t(this.span(t))}return new Qt(this.span(t),e,n,a)}return e}parseLogicalOr(){let t=this.parseLogicalAnd();for(;this.optionalOperator("||");){const e=this.parseLogicalAnd();t=new le(this.span(t.span.start),"||",t,e)}return t}parseLogicalAnd(){let t=this.parseEquality();for(;this.optionalOperator("&&");){const e=this.parseEquality();t=new le(this.span(t.span.start),"&&",t,e)}return t}parseEquality(){let t=this.parseRelational();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"==":case"===":case"!=":case"!==":this.advance();const n=this.parseRelational();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseRelational(){let t=this.parseAdditive();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"<":case">":case"<=":case">=":this.advance();const n=this.parseAdditive();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseAdditive(){let t=this.parseMultiplicative();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"+":case"-":this.advance();const n=this.parseMultiplicative();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseMultiplicative(){let t=this.parsePrefix();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"*":case"%":case"/":this.advance();const n=this.parsePrefix();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parsePrefix(){if(this.next.type===me.Operator){const t=this.inputIndex,e=this.next.strValue;let n;switch(e){case"+":return this.advance(),this.parsePrefix();case"-":return this.advance(),n=this.parsePrefix(),new le(this.span(t),e,new ie(new Ut(t,t),0),n);case"!":return this.advance(),n=this.parsePrefix(),new de(this.span(t),n)}}return this.parseCallChain()}parseCallChain(){let t=this.parsePrimary();for(;;)if(this.optionalCharacter(46))t=this.parseAccessMemberOrMethodCall(t,!1);else if(this.optionalOperator("?."))t=this.parseAccessMemberOrMethodCall(t,!0);else if(this.optionalCharacter(91)){this.rbracketsExpected++;const e=this.parsePipe();if(this.rbracketsExpected--,this.expectCharacter(93),this.optionalOperator("=")){const n=this.parseConditional();t=new ae(this.span(t.span.start),t,e,n)}else t=new ne(this.span(t.span.start),t,e)}else if(this.optionalCharacter(40)){this.rparensExpected++;const e=this.parseCallArguments();this.rparensExpected--,this.expectCharacter(41),t=new ge(this.span(t.span.start),t,e)}else{if(!this.optionalOperator("!"))return t;t=new ce(this.span(t.span.start),t)}}parsePrimary(){const t=this.inputIndex;if(this.optionalCharacter(40)){this.rparensExpected++;const t=this.parsePipe();return this.rparensExpected--,this.expectCharacter(41),t}if(this.next.isKeywordNull())return this.advance(),new ie(this.span(t),null);if(this.next.isKeywordUndefined())return this.advance(),new ie(this.span(t),void 0);if(this.next.isKeywordTrue())return this.advance(),new ie(this.span(t),!0);if(this.next.isKeywordFalse())return this.advance(),new ie(this.span(t),!1);if(this.next.isKeywordThis())return this.advance(),new Jt(this.span(t));if(this.optionalCharacter(91)){this.rbracketsExpected++;const e=this.parseExpressionList(93);return this.rbracketsExpected--,this.expectCharacter(93),new se(this.span(t),e)}if(this.next.isCharacter(123))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(new Jt(this.span(t)),!1);if(this.next.isNumber()){const e=this.next.toNumber();return this.advance(),new ie(this.span(t),e)}if(this.next.isString()){const e=this.next.toString();return this.advance(),new ie(this.span(t),e)}return this.index>=this.tokens.length?(this.error("Unexpected end of expression: "+this.input),new $t(this.span(t))):(this.error("Unexpected token "+this.next),new $t(this.span(t)))}parseExpressionList(t){const e=[];if(!this.next.isCharacter(t))do{e.push(this.parsePipe())}while(this.optionalCharacter(44));return e}parseLiteralMap(){const t=[],e=[],n=this.inputIndex;if(this.expectCharacter(123),!this.optionalCharacter(125)){this.rbracesExpected++;do{const n=this.next.isString(),a=this.expectIdentifierOrKeywordOrString();t.push({key:a,quoted:n}),this.expectCharacter(58),e.push(this.parsePipe())}while(this.optionalCharacter(44));this.rbracesExpected--,this.expectCharacter(125)}return new ue(this.span(n),t,e)}parseAccessMemberOrMethodCall(t,e=!1){const n=t.span.start,a=this.expectIdentifierOrKeyword();if(this.optionalCharacter(40)){this.rparensExpected++;const r=this.parseCallArguments();this.expectCharacter(41),this.rparensExpected--;const i=this.span(n);return e?new he(i,t,a,r):new fe(i,t,a,r)}if(e)return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),new $t(this.span(n))):new ee(this.span(n),t,a);if(this.optionalOperator("=")){if(!this.parseAction)return this.error("Bindings cannot contain assignments"),new $t(this.span(n));const e=this.parseConditional();return new te(this.span(n),t,a,e)}return new Xt(this.span(n),t,a)}parseCallArguments(){if(this.next.isCharacter(41))return[];const t=[];do{t.push(this.parsePipe())}while(this.optionalCharacter(44));return t}expectTemplateBindingKey(){let t="",e=!1;do{t+=this.expectIdentifierOrKeywordOrString(),e=this.optionalOperator("-"),e&&(t+="-")}while(e);return t.toString()}parseTemplateBindings(){const t=[];let e=null;for(;this.index<this.tokens.length;){const n=this.inputIndex;let a=this.peekKeywordLet();a&&this.advance();const r=this.expectTemplateBindingKey();let i=r;a||(null===e?e=i:i=e+i[0].toUpperCase()+i.substring(1)),this.optionalCharacter(58);let s=null,u=null;if(a)s=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.peekKeywordAs())this.advance(),s=r,i=this.expectTemplateBindingKey(),a=!0;else if(this.next!==we&&!this.peekKeywordLet()){const t=this.inputIndex,e=this.parsePipe(),n=this.input.substring(t-this.offset,this.inputIndex-this.offset);u=new pe(e,n,this.location,this.errors)}if(t.push(new be(this.span(n),i,a,s,u)),this.peekKeywordAs()&&!a){const e=this.inputIndex;this.advance();const n=this.expectTemplateBindingKey();t.push(new be(this.span(e),n,!0,i,null))}this.optionalCharacter(59)||this.optionalCharacter(44)}return new Ae(t,[],this.errors)}error(t,e=null){this.errors.push(new Ht(t,this.input,this.locationText(e),this.location)),this.skip()}locationText(t=null){return null===t&&(t=this.index),t<this.tokens.length?`at column ${this.tokens[t].index+1} in`:"at the end of the expression"}skip(){let t=this.next;for(;this.index<this.tokens.length&&!t.isCharacter(59)&&(this.rparensExpected<=0||!t.isCharacter(41))&&(this.rbracesExpected<=0||!t.isCharacter(125))&&(this.rbracketsExpected<=0||!t.isCharacter(93));)this.next.isError()&&this.errors.push(new Ht(this.next.toString(),this.input,this.locationText(),this.location)),this.advance(),t=this.next}}class De{constructor(){this.errors=[]}static check(t){const e=new De;return t.visit(e),e.errors}visitImplicitReceiver(t,e){}visitInterpolation(t,e){}visitLiteralPrimitive(t,e){}visitPropertyRead(t,e){}visitPropertyWrite(t,e){}visitSafePropertyRead(t,e){}visitMethodCall(t,e){}visitSafeMethodCall(t,e){}visitFunctionCall(t,e){}visitLiteralArray(t,e){this.visitAll(t.expressions)}visitLiteralMap(t,e){this.visitAll(t.values)}visitBinary(t,e){}visitPrefixNot(t,e){}visitNonNullAssert(t,e){}visitConditional(t,e){}visitPipe(t,e){this.errors.push("pipes")}visitKeyedRead(t,e){}visitKeyedWrite(t,e){}visitAll(t){return t.map(t=>t.visit(this))}visitChain(t,e){}visitQuote(t,e){}}const Pe={A:"LINK",B:"BOLD_TEXT",BR:"LINE_BREAK",EM:"EMPHASISED_TEXT",H1:"HEADING_LEVEL1",H2:"HEADING_LEVEL2",H3:"HEADING_LEVEL3",H4:"HEADING_LEVEL4",H5:"HEADING_LEVEL5",H6:"HEADING_LEVEL6",HR:"HORIZONTAL_RULE",I:"ITALIC_TEXT",LI:"LIST_ITEM",LINK:"MEDIA_LINK",OL:"ORDERED_LIST",P:"PARAGRAPH",Q:"QUOTATION",S:"STRIKETHROUGH_TEXT",SMALL:"SMALL_TEXT",SUB:"SUBSTRIPT",SUP:"SUPERSCRIPT",TBODY:"TABLE_BODY",TD:"TABLE_CELL",TFOOT:"TABLE_FOOTER",TH:"TABLE_HEADER_CELL",THEAD:"TABLE_HEADER",TR:"TABLE_ROW",TT:"MONOSPACED_TEXT",U:"UNDERLINED_TEXT",UL:"UNORDERED_LIST"};class Me{constructor(){this._placeHolderNameCounts={},this._signatureToName={}}getStartTagPlaceholderName(t,e,n){const a=this._hashTag(t,e,n);if(this._signatureToName[a])return this._signatureToName[a];const r=t.toUpperCase(),i=Pe[r]||"TAG_"+r,s=this._generateUniqueName(n?i:"START_"+i);return this._signatureToName[a]=s,s}getCloseTagPlaceholderName(t){const e=this._hashClosingTag(t);if(this._signatureToName[e])return this._signatureToName[e];const n=t.toUpperCase(),a=this._generateUniqueName("CLOSE_"+(Pe[n]||"TAG_"+n));return this._signatureToName[e]=a,a}getPlaceholderName(t,e){const n=t.toUpperCase(),a=`PH: ${n}=${e}`;if(this._signatureToName[a])return this._signatureToName[a];const r=this._generateUniqueName(n);return this._signatureToName[a]=r,r}getUniquePlaceholder(t){return this._generateUniqueName(t.toUpperCase())}_hashTag(t,e,n){return"<"+t+Object.keys(e).sort().map(t=>` ${t}=${e[t]}`).join("")+(n?"/>":`></${t}>`)}_hashClosingTag(t){return this._hashTag("/"+t,{},!1)}_generateUniqueName(t){if(!this._placeHolderNameCounts.hasOwnProperty(t))return this._placeHolderNameCounts[t]=1,t;const e=this._placeHolderNameCounts[t];return this._placeHolderNameCounts[t]=e+1,`${t}_${e}`}}const qe=new Ee(new ve);class je{constructor(t,e){this._expressionParser=t,this._interpolationConfig=e}toI18nMessage(t,e,n,a){this._isIcu=1===t.length&&t[0]instanceof s,this._icuDepth=0,this._placeholderRegistry=new Me,this._placeholderToContent={},this._placeholderToMessage={};const r=c(this,t,{});return new f(r,this._placeholderToContent,this._placeholderToMessage,e,n,a)}visitElement(t,e){const n=c(this,t.children),a={};t.attrs.forEach(t=>{a[t.name]=t.value});const r=ot(t.name).isVoid,i=this._placeholderRegistry.getStartTagPlaceholderName(t.name,a,r);this._placeholderToContent[i]=t.sourceSpan?t.sourceSpan.toString():"";let s="";return r||(s=this._placeholderRegistry.getCloseTagPlaceholderName(t.name),this._placeholderToContent[s]=`</${t.name}>`),new b(t.name,a,i,s,n,r,t.sourceSpan)}visitAttribute(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)}visitText(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)}visitComment(t,e){return null}visitExpansion(t,e){this._icuDepth++;const n={},a=new p(t.switchValue,t.type,n,t.sourceSpan);if(t.cases.forEach(t=>{n[t.value]=new g(t.expression.map(t=>t.visit(this,{})),t.expSourceSpan)}),this._icuDepth--,this._isIcu||this._icuDepth>0){const e=this._placeholderRegistry.getUniquePlaceholder("VAR_"+t.type);return a.expressionPlaceholder=e,this._placeholderToContent[e]=t.switchValue,a}const r=this._placeholderRegistry.getPlaceholderName("ICU",t.sourceSpan.toString()),i=new je(this._expressionParser,this._interpolationConfig);return this._placeholderToMessage[r]=i.toI18nMessage([t],"","",""),new y(a,r,t.sourceSpan)}visitExpansionCase(t,e){throw new Error("Unreachable code")}_visitTextWithInterpolation(t,e){const n=this._expressionParser.splitInterpolation(t,e.start.toString(),this._interpolationConfig);if(!n)return new h(t,e);const a=[],r=new g(a,e),{start:i,end:s}=this._interpolationConfig;for(let o=0;o<n.strings.length-1;o++){const t=n.expressions[o],r=t.split(Fe)[2]||"INTERPOLATION",u=this._placeholderRegistry.getPlaceholderName(r,t);n.strings[o].length&&a.push(new h(n.strings[o],e)),a.push(new m(t,u,e)),this._placeholderToContent[u]=i+t+s}const u=n.strings.length-1;return n.strings[u].length&&a.push(new h(n.strings[u],e)),r}}const Fe=/\/\/[\s\S]*i18n[\s\S]*\([\s\S]*ph[\s\S]*=[\s\S]*("|')([\s\S]*?)\1[\s\S]*\)/g;class Ve extends X{constructor(t=N){super(ot),this.interpolationConfig=t}parse(t,e,n=!1){return super.parse(t,e,n,this.interpolationConfig)}extractMessages(t){const e=new He(["wrapper"]),n=new l("wrapper",[],t,void 0,void 0,void 0);return e.extract(n,this.interpolationConfig)}mergeTranslations(t,e,n,a,r=[]){const i=new He(r),s=new l("wrapper",[],t,void 0,void 0,void 0);return i.merge(s,e,this.interpolationConfig,n,a)}}class Ge{constructor(t,e){this.messages=t,this.errors=e}}class Be{constructor(t={},e,n,a,r,i){this.i18nNodesByMsgId=t,this.digest=e,this.mapperFactory=r,this.i18nToHtml=new ze(t,e,r,a,n,i)}static load(t,e,n,a,r,i,s=N){const u=r(t,e);return new Be(u,t=>n(t),s,i,t=>a(t),console)}get(t,e){const n=this.i18nToHtml.convert(t,e);if(n.errors.length)throw new Error(n.errors.join("\n"));return n.nodes}has(t){return this.digest(t)in this.i18nNodesByMsgId}}class ze{constructor(t={},e,n,a,r,i){this._i18nNodesByMsgId=t,this._digest=e,this._mapperFactory=n,this._missingTranslationStrategy=a,this._interpolationConfig=r,this._console=i,this._contextStack=[],this._errors=[]}convert(t,e){this._contextStack.length=0,this._errors.length=0,this._params=e,this._paramKeys=Object.keys(e);const n=this.convertToText(t),a=t.nodes[0].sourceSpan.start.file.url,r=(new Ve).parse(n,a,!0);return{nodes:r.rootNodes,errors:[...this._errors,...r.errors]}}visitText(t,e){return t.value}visitContainer(t,e){return t.children.map(t=>t.visit(this)).join("")}visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${this._srcMsg.placeholders.hasOwnProperty(t.expression)?this._srcMsg.placeholders[t.expression]:t.expression}, ${t.type}, ${n.join(" ")}}`}visitPlaceholder(t,e){const n=this._mapper(t.name);return this._srcMsg.placeholders.hasOwnProperty(n)?this.convertToValue(this._srcMsg.placeholders[n]):this._srcMsg.placeholderToMessage.hasOwnProperty(n)?this.convertToText(this._srcMsg.placeholderToMessage[n]):(this._addError(t,`Unknown placeholder "${t.name}"`),"")}visitTagPlaceholder(t,e){const n=""+t.tag,a=Object.keys(t.attrs).map(e=>`${e}="${t.attrs[e]}"`).join(" ");return t.isVoid?`<${n} ${a}/>`:`<${n} ${a}>${t.children.map(t=>t.visit(this)).join("")}</${n}>`}visitIcuPlaceholder(t,e){return this.convertToText(this._srcMsg.placeholderToMessage[t.name])}convertToText(t){const e=this._digest(t),n=this._mapperFactory?this._mapperFactory(t):null;let a;this._contextStack.push({msg:this._srcMsg,mapper:this._mapper}),this._srcMsg=t,this._i18nNodesByMsgId.hasOwnProperty(e)?(a=this._i18nNodesByMsgId[e],this._mapper=t=>n?n.toInternalName(t):t):(this._missingTranslationStrategy===r.MissingTranslationStrategy.Error?this._addError(t.nodes[0],`Missing translation for message "${e}"`):this._console&&this._missingTranslationStrategy===r.MissingTranslationStrategy.Warning&&this._console.warn(`Missing translation for message "${e}"`),a=t.nodes,this._mapper=t=>t);const i=a.map(t=>t.visit(this)).join(""),s=this._contextStack.pop();return this._srcMsg=s.msg,this._mapper=s.mapper,i}convertToValue(t){const e=t.replace(this._interpolationConfig.start,"").replace(this._interpolationConfig.end,"");return-1!==this._paramKeys.indexOf(e)?this._params[e]:t}_addError(t,e){this._errors.push(new O(t.sourceSpan,e))}}const Ye=function(){var t={Extract:0,Merge:1};return t[t.Extract]="Extract",t[t.Merge]="Merge",t}();class He{constructor(t=[]){this._implicitTags=t,this.blockChildren=[]}extract(t,e){return this.init(Ye.Extract,e),t.visit(this,null),this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Ge(this.messages,this.errors)}merge(t,e,n,a,r={}){this.init(Ye.Merge,n,a),this.translations=e,this.metadata=r;const i=t.visit(this,null);return this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Q(i.children,this.errors)}visitExpansionCase(t,e){const n=c(this,t.expression,e);if(this.mode===Ye.Merge)return new u(t.value,n,t.sourceSpan,t.valueSourceSpan,t.expSourceSpan)}visitExpansion(t,e){this.mayBeAddBlockChildren(t);const n=this.inIcu;this.inIcu||(this.isInTranslatableSection&&this.addMessage([t]),this.inIcu=!0);const a=c(this,t.cases,e);return this.mode===Ye.Merge&&(t=new s(t.switchValue,t.type,a,t.sourceSpan,t.switchValueSourceSpan)),this.inIcu=n,t}visitComment(t,e){}visitText(t,e){return this.isInTranslatableSection&&this.mayBeAddBlockChildren(t),t}visitElement(t,e){this.mayBeAddBlockChildren(t),this.depth++;const n=this.inI18nNode,a=this.inImplicitNode;let r=[],i=void 0;const s=t.attrs.find(t=>"i18n"===t.name)||null,u=this._implicitTags.some(e=>t.name===e)&&!this.inIcu&&!this.isInTranslatableSection,o=!a&&u;if(this.inImplicitNode=a||u,this.isInTranslatableSection||this.inIcu)(s||o)&&this._reportError(t,"Could not mark an element as translatable inside a translatable section"),this.mode===Ye.Extract&&c(this,t.children);else{if(s||o){this.inI18nNode=!0;const e=this.addMessage(t.children,this.metadata);i=this.translateMessage(t,e)}if(this.mode===Ye.Extract){const e=s||o;e&&this.openTranslatableSection(t),c(this,t.children),e&&this._closeTranslatableSection(t,t.children)}}return this.mode===Ye.Merge&&(i||t.children).forEach(t=>{const n=t.visit(this,e);n&&!this.isInTranslatableSection&&(r=r.concat(n))}),this.depth--,this.inI18nNode=n,this.inImplicitNode=a,this.mode===Ye.Merge?new l(t.name,[],r,t.sourceSpan,t.startSourceSpan,t.endSourceSpan):null}visitAttribute(t,e){throw new Error("unreachable code")}init(t,e,n={}){this.mode=t,this.inI18nBlock=!1,this.inI18nNode=!1,this.depth=0,this.inIcu=!1,this.msgCountAtSectionStart=void 0,this.errors=[],this.messages=[],this.inImplicitNode=!1,this.createI18nMessage=function(t){const e=new je(qe,t);return(t,n,a,r)=>e.toI18nMessage(t,n,a,r)}(e),this.params=n}addMessage(t,{meaning:e="",description:n="",id:a=""}={}){if(0===t.length||1===t.length&&t[0]instanceof o&&!t[0].value)return null;const r=this.createI18nMessage(t,e,n,a);return this.messages.push(r),r}translateMessage(t,e){if(e&&this.mode===Ye.Merge){const n=this.translations.get(e,this.params);if(n)return n;this._reportError(t,`Translation unavailable for message id="${this.translations.digest(e)}"`)}return[]}mayBeAddBlockChildren(t){this.inI18nBlock&&!this.inIcu&&this.depth===this.blockStartDepth&&this.blockChildren.push(t)}openTranslatableSection(t){this.isInTranslatableSection?this._reportError(t,"Unexpected section start"):this.msgCountAtSectionStart=this.messages.length}get isInTranslatableSection(){return void 0!==this.msgCountAtSectionStart}_closeTranslatableSection(t,e){if(!this.isInTranslatableSection)return void this._reportError(t,"Unexpected section end");const n=this.msgCountAtSectionStart;if(1===e.reduce((t,e)=>t+(e instanceof d?0:1),0))for(let a=this.messages.length-1;a>=n;a--){const t=this.messages[a].nodes;if(!(1===t.length&&t[0]instanceof h)){this.messages.splice(a,1);break}}this.msgCountAtSectionStart=void 0}_reportError(t,e){this.errors.push(new O(t.sourceSpan,e))}}const Ue=new r.InjectionToken("MissingTranslationStrategy");class We{constructor(t,e,n,a=r.MissingTranslationStrategy.Warning){let i,s,u=t=>null;switch(t=(t||"xlf").toLowerCase()){case"xtb":i=Vt,s=Gt,u=Bt;break;case"xliff2":case"xlf2":i=Pt,s=Mt;break;case"xliff":case"xlf":i=kt,s=Et;break;default:throw new Error("Unknown translations format "+t)}const o=new Ve,l=Be.load(e,"i18n",s,u,i,a);return(t,e={})=>{const a="string"==typeof t?t:t.value,r={};"object"==typeof t&&(r.id=t.id,r.meaning=t.meaning,r.description=t.description);const i=o.parse(a,"",!0);if(i.errors.length)throw i.errors;return function(t,e,n){return t.map(t=>t.visit(new ct(e,n),null))}(o.mergeTranslations(i.rootNodes,l,e,r,["wrapper"]).rootNodes,n,e).join("")}}}},GyhO:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LRne"),r=n("0EUg");function i(...t){return Object(r.a)()(Object(a.a)(...t))}},"H+zY":function(t,e,n){var a=n("5EpR");t.exports=function(t){var e=a(t),n=e%1;return e==e?n?e-n:e:0}},H8ED:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"хвіліна":"хвіліну":"h"===n?e?"гадзіна":"гадзіну":t+" "+(a=+t,r={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:e?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}t.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:e,mm:e,h:e,hh:e,d:"дзень",dd:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(t){return/^(дня|вечара)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночы":t<12?"раніцы":t<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t%10!=2&&t%10!=3||t%100==12||t%100==13?t+"-ы":t+"-і";case"D":return t+"-га";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},HDdC:function(t,e,n){"use strict";var a=n("7o/Q"),r=n("2QA8"),i=n("gRHU"),s=n("kJWO"),u=n("mCNh"),o=n("2fFW");n.d(e,"a",(function(){return l}));let l=(()=>{class t{constructor(t){this._isScalar=!1,t&&(this._subscribe=t)}lift(e){const n=new t;return n.source=this,n.operator=e,n}subscribe(t,e,n){const{operator:s}=this,u=function(t,e,n){if(t){if(t instanceof a.a)return t;if(t[r.a])return t[r.a]()}return t||e||n?new a.a(t,e,n):new a.a(i.a)}(t,e,n);if(u.add(s?s.call(u,this.source):this.source||o.a.useDeprecatedSynchronousErrorHandling&&!u.syncErrorThrowable?this._subscribe(u):this._trySubscribe(u)),o.a.useDeprecatedSynchronousErrorHandling&&u.syncErrorThrowable&&(u.syncErrorThrowable=!1,u.syncErrorThrown))throw u.syncErrorValue;return u}_trySubscribe(t){try{return this._subscribe(t)}catch(e){o.a.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),function(t){for(;t;){const{closed:e,destination:n,isStopped:r}=t;if(e||r)return!1;t=n&&n instanceof a.a?n:null}return!0}(t)?t.error(e):console.warn(e)}}forEach(t,e){return new(e=d(e))((e,n)=>{let a;a=this.subscribe(e=>{try{t(e)}catch(r){n(r),a&&a.unsubscribe()}},n,e)})}_subscribe(t){const{source:e}=this;return e&&e.subscribe(t)}[s.a](){return this}pipe(...t){return 0===t.length?this:Object(u.b)(t)(this)}toPromise(t){return new(t=d(t))((t,e)=>{let n;this.subscribe(t=>n=t,t=>e(t),()=>t(n))})}}return t.create=e=>new t(e),t})();function d(t){if(t||(t=o.a.Promise||Promise),!t)throw new Error("no Promise impl found");return t}},HH4o:function(t,e,n){var a=n("tiKp")("iterator"),r=!1;try{var i=0,s={next:function(){return{done:!!i++}},return:function(){r=!0}};s[a]=function(){return this},Array.from(s,(function(){throw 2}))}catch(u){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i={};i[a]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(u){}return n}},HIU9:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("dApe"),i=n("X+05"),s=n("2316"),u=n.n(s),o=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},l=function(){function t(t,e,n){var a=this;this.elementRef=t,this.ngZone=e,this.virtualScroll=n,this.setViewport=u()((function(){a.virtualScroll.setViewport(a.elementRef.nativeElement)}),17),this.scrollEventHandler=this.setViewport.bind(this)}return t.prototype.ngOnInit=function(){this.virtualScroll.init()},t.prototype.ngAfterViewInit=function(){var t=this;setTimeout((function(){t.setViewport(),t.virtualScroll.fireEvent({eventName:i.a.initialized})}));var e=this.elementRef.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("scroll",t.scrollEventHandler)}))},t.prototype.ngOnDestroy=function(){this.virtualScroll.clear(),this.elementRef.nativeElement.removeEventListener("scroll",this.scrollEventHandler)},t.prototype.getTotalHeight=function(){return this.virtualScroll.isEnabled()&&this.virtualScroll.totalHeight+"px"||"auto"},function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.Component)({selector:"tree-viewport",styles:[],providers:[r.a],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div [style.height]="getTotalHeight()">\n        <ng-content></ng-content>\n      </div>\n    </ng-container>\n  '}),o("design:paramtypes",[a.ElementRef,a.NgZone,r.a])],t)}()},HP3h:function(t,e,n){!function(t){"use strict";var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},a={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(t){return function(e,r,i,s){var u=n(e),o=a[t][n(e)];return 2===u&&(o=o[r?0:1]),o.replace(/%d/i,e)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];t.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},HYAF:function(t,e,n){var a=n("2oRo").TypeError;t.exports=function(t){if(null==t)throw a("Can't call method on "+t);return t}},Hd5f:function(t,e,n){var a=n("0Dky"),r=n("tiKp"),i=n("LQDL"),s=r("species");t.exports=function(t){return i>=51||!a((function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},HjS5:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="zh-TW">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>切換導覽</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>儀表板</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>叢集</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>主機</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>監控程式</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>服務</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>組態</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH 地圖</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>管理員模組</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>記錄</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>池</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>區塊</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>影像</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>鏡像</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>檔案系統</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>物件閘道</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>精靈</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>刪除通知</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>沒有通知。</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>任務與通知</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>選取語言</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>正在載入面板資料...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana 時間選擇器</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>重設設定</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>刷新</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>返回</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>無法載入資料。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>選取的數目</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>找到的數目</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>總計</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名稱</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>描述</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>詳細描述</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>預設值</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>精靈預設值</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>儲存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH 地圖檢視器</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>正在載入...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>主機名稱</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>此欄位為必填欄位。</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>是的,我確定。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>取消</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>關閉</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>主機清單</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>整體效能</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>找不到項目</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>叢集記錄</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>稽核記錄</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>正在載入組態...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>無法載入組態。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>編輯管理員模組</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>輸入的值不是有效的 UUID,例如 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>輸入的值必須是有效的  IP 位址。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>輸入的值必須為數字。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>輸入的值必須為數字或小數。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>叢集 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap 修改時間</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap 版本編號</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>仲裁成員</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非仲裁成員</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>新增</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>功能</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>叢集範圍的 OSD 旗標</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>提交</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>進階...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 復原優先程度</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>優先程度</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>自訂優先程度值</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>此欄位為必填欄位!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>該值必須介於 0 至 1 之間。</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>重新設定權數</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深層} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深層} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 清單</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>編輯</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>刪除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>統計資料</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>用戶端</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任何用戶端均可存取</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>位址</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必填欄位</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>必須包含一或多個逗號分隔值</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例如︰</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>存取類型</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>新增用戶端</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 沒有可用的叢集 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 選取叢集 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>新增精靈</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>儲存後端</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 沒有可用的資料池 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 選取儲存後端 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>物件閘道使用者</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 沒有可用的使用者 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 選取物件閘道使用者 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 使用者 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 沒有可用的用戶端 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- 選取 cephx 用戶端 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 名稱</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>安全標籤</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>啟用安全標籤</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 路徑</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>路徑必須以「/」開頭,後面可接單詞</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>將建立新目錄</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>路徑</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>路徑只能以單一「/」或單詞開頭</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>將建立新桶</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 通訊協定</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 標記</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>用戶端不能掛接子目錄 (即如果標記為 foo,則用戶端無法掛接 foo/baz)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>透過使用不同標記選項,可將同一路徑輸出多次。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>虛擬</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>透過使用不同虛擬選項,可將同一路徑輸出多次。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 沒有可用的存取類型 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 選取存取類型 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 沒有可用的 squash --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 選取執行哪種類型的使用者 ID 匿名存取 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>傳輸通訊協定</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>歡迎使用 Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>需要指定使用者名稱</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>需要指定密碼</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>登入</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>抱歉,該使用者不存在於 Ceph 中。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>已禁止</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>抱歉,您無權查看您要尋找的內容。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 組態</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>移除本地組態值。將繼承並使用父組態值。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小值為 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>池清單</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名稱只能由英數字元、破折號和底線組成。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>所選的糾刪碼設定檔名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>外掛程式</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>資料區塊 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>必須大於或等於 2。</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>編碼區塊 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>必須大於或等於 1。</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>持久性估值 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>本地性 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH 故障網域</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH 本地性</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>技術</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>封包大小</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH 根</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH 裝置類別</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任何</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>目錄</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名稱...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>所選的 Ceph 池名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>池類型</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 選取池類型 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>放置群組</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>至少需要一個放置群組!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>您的叢集無法處理這麼多的 PG。請重新計算所需的 PG 數量。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>計算說明</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>複製大小</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>旗標</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 覆寫</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>應用程式</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 沒有可用的糾刪碼設定檔 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 選取糾刪碼設定檔 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH 規則集</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 選取 CRUSH 規則 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH 規則</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH 步驟</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>壓縮</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>模式</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>演算法</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 沒有可用的糾刪壓縮演算法 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Blob 最小大小</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>例如 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>值應大於 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Blob 最大大小</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>例如 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>值應大於 blob 最小大小</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>比率</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>壓縮率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>值應介於 0.0 至 1.0 之間</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>例如 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>詳細資料</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>效能詳細資料</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>快取層詳細資料</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>將影像移至垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保護的過期日為</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>無保護</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日期格式錯誤。請使用「YYYY-MM-DD HH:mm:ss」。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保護已過期。請選取一個未來的日期或保留空白。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>移動影像</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>綜覽</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>目標</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>探查驗證</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>使用者名稱的長度必須介於 8 至 64 個字元之間,並且只能包含以下\n                        字元︰字母、「.」、「@」、「-」、「_」或「:」。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>密碼</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>雙向驗證使用者</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>雙向驗證密碼</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>可用資訊︰</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>無法使用 iSCSI 目標</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>池</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>資料池</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>已建立</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>大小</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>物件</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>物件大小</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>已佈建</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>總佈建數</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>分割單位</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>分割計數</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>父</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>區塊名稱字首</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>順序</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>快照</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>影像</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>此設定會覆寫全域值</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>全域</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>此值為全域值。未為此影像設定此選項的值。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>不允許使用「/」和「@」。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 沒有可用的 RBD 池 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 選取池 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>使用專屬的資料池</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>資料池</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>專用於儲存 RBD 的物件資料的池</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>您必須增加大小。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>進階</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>分割</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>分割單位</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 選取分割單位 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>由於已定義分割計數,因此必須填寫此欄位!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>分割單位大於物件大小。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>分割計數</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>由於已定義分割單位,因此必須填寫此欄位!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>分割計數必須大於 0。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>您正要復原</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>清除垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>全部</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>池︰</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>池名稱...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>回存影像</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>若要回存</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>鍵入影像的新名稱并按一下</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新名稱</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>過期日為</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保護過期日為</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 拓撲</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常不需要變更這些參數的預設值。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>支援儲存</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>確認</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>進階設定</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>目標 IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN 模式錯誤。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例如:iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>更多資訊</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>此目標的進階設定存在修改。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>入口網站</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>新增入口網站</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>此影像的設定存在修改。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>新增影像</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 驗證</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>啟動器</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>啟動器</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>用戶端 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>啟動器 IQN 必須唯一。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>使用者名稱的長度必須介於 8 至 64 個字元之間,並且只能包含以下\n                        字元︰字母、「.」、「@」、「-」、「_」或「:」。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>啟動器屬於群組。影像須在群組中進行設定。 </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>未新增項目。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>新增啟動器</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>群組</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>群組</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>新增群組</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>正在同步</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>準備就緒</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>編輯池鏡像模式</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>在停用鏡像之前,必須先移除對等叢集。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {編輯} other {新增} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>叢集名稱</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>叢集名稱無效。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID 無效。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>監控程式位址</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>逗號分隔的位址...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>監控程式位址無效。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 金鑰</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 編碼的金鑰...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 金鑰必須為 Base64 編碼的金鑰。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>沒有可用的效能計數器</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>精靈清單</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>效能計數器</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>正在載入桶資料...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>該值無效。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>所選的名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>擁有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 選取使用者 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>已啟用</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>索引類型</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>放置規則</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>標記</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>最大標記數</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>主版本</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>修改時間</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>區域群組</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>桶定額</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大大小</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>無限制</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大物件數</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>使用者名稱</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 選取使用者名稱 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>自動產生金鑰</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>存取金鑰</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>機密金鑰</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>全名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>電子郵件地址</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>已暫停</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>系統</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大桶數</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>子使用者</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>功能</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>使用者定額</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>顯示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>金鑰</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>類型</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 選取類型 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>許可權</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 選取許可權 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>子使用者</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>所選的子使用者 ID 已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>讀取、寫入</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>完整</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift 金鑰</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>自動產生機密金鑰</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>正在載入使用者資料...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>無法載入使用者資料。</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>所選的使用者 ID 已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>電子郵件地址無效。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>所選的電子郵件地址已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>最大桶數</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>已停用</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>自訂</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 金鑰</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>沒有子使用者。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>沒有金鑰。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>沒有功能。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>大小不限</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>最大大小</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>物件數不限</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>最大物件數</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>輸入的值必須大於或等於 0。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>描述...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>許可權</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>角色</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>確認密碼</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>確認的密碼與之前輸入的密碼不符。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>電子郵件</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>電子郵件無效。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>您正要為您自己的使用者移除「使用者讀取/寫入」許可權。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>若繼續,您將再也無法為任何使用者新增或移除角色。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>確定要繼續嗎?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>說明</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>文件</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>關於</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>儀表板設定</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>使用者管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>登入的使用者</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>登出</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>屬性 (OSD 地圖)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>無法使用中繼資料</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>中繼資料</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>效能計數器</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>寫入</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>讀取</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>長條圖</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>目前的值</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>最小值</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>最大值</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>來源</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>層級</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>可在執行時期更新 (可編輯)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>標記</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>列舉值</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>另請參閱</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>叢集狀態</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>管理員精靈</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>物件閘道</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>中繼資料伺服器</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 閘道</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>用戶端 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>用戶端輸送量</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>用戶端讀取/寫入</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>復原輸送量</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>整理</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>效能</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>原始容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>每個 OSD 的 PG 數</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 狀態</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>階層</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>目前</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>已更新探查驗證</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>沒有可用的入口網站。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>沒有可用的影像。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>沒有可用的影像。請確定為目標新增一個影像。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>沒有可用的啟動器。請確定為目標新增一個啟動器。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>目標</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>讀取位元組數</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>寫入位元組數</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>讀取操作數</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>寫入操作數</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>使用中/最佳化開始時間</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>例項</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>進度</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>編輯模式</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>新增對等</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>編輯對等</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>刪除對等</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>本地數量</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>遠端數量</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>鏡像對等</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>金鑰</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>深層壓平</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>分層</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>獨佔鎖定</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>物件對應 (需要獨佔鎖定)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>記錄 (需要獨佔鎖定)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>未受保護</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 快照復原</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>復原</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 快照</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>刪除位置</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>類型</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>主機</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>根</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>待命精靈</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>階層</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>精靈</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>活動</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentry</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用率</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>已更新</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>該值可在執行時期更新。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>精靈/用戶端不會從監控程式組態資料庫\n      提取此值。我們不允許透過「ceph config set ...」\n      設定此選項。應透過 ceph.conf 或使用指令行\n      進行設定。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>該選項僅在精靈啟動期間生效。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>該選項僅影響叢集建立。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>該選項僅影響精靈建立。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>服務</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>目前的值</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>可編輯</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>啟用</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>停用</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>正在重新連接,請稍候...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>公用位址</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>開啟的工作階段</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>禁止標示為 In</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>之前標示為 out 的 OSD 在啟動時將不會重新標示為 in</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>禁止標示為 Out</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD 在設定的間隔過後將不會自動標示為 out</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>禁止標示為 Up</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>不允許 OSD 啟動</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>禁止標示為 Down</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>將會忽略 OSD 故障報告,如此監控程式便不會將 OSD 標示為 down</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>暫停</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>暫停讀取和寫入</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>禁止整理</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>整理已停用</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>禁止深層整理</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>深層整理已停用</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>禁止回填</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG 回填已暫停</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>禁止復原</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG 復原已暫停</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>按位元排序</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>使用按位元排序</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>已清除 Snapdir</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD 已轉換 snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>復原刪除</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>在復原期間,而非在建立互聯時執行刪除</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 記錄硬限制</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>為 pg 記錄長度設定硬限制</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>已更新 OSD 旗標</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>out</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>in</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>down</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>標示</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 遺失</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>已標示為遺失</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>損毀</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>已損毀</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>刪除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>讀取位元組數</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>寫入位元組數</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>讀取操作數</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>寫入操作數</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大回填數</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>處於使用中狀態的最大復原操作數</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>單次啟動的最大復原操作數</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>復原操作間隔睡眠時間</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>工作</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>嚴重性</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>已啟動</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>已使用</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>可用</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>乾淨</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>工作中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警告</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>未知</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>啟用中</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>無檔案系統</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>使用中</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>待命</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>使用中的精靈</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>未設定 NFS Ganesha 服務。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>傳輸</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 使用者</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 檔案系統</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(繼承自全域組態)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>繼承自全域組態</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 選取執行哪種類型的使用者 ID 匿名存取 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>沒有可用的精靈。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>快取模式</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>逐出前至少可留存的時間</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>衝洗前至少可留存的時間</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>目標最大位元組數</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>目標最大物件數</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>未新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>已達到應用程式上限</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>一個池最多只能四個應用程式定義。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>允許的字元為「_a-zA-Z0-9」</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>最大長度為 128 個字元</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>過濾或新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>複本大小</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>上次變更時間</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH 規則集</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>範圍</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>讀取</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>建立</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>系統角色</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>更新使用者</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>繼續</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>您已被自動登出,因為您的角色發生了變更。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>各物件都被分割成資料區塊部分,分別儲存於不同的 OSD。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>運算各物件的編碼區塊并將它們儲存到不同的 OSD。\n      編碼區塊的數量等同於在不遺失資料的前提下,可停機的 OSD 數量。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Jerasure 外掛程式是最一般、最靈活的外掛程式,\n          也是 Ceph 糾刪碼池的預設外掛程式。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Reed_sol_van 方法更靈活︰它足以設定 k\n          和 m。Cauchy_good 方法更快,但您需要小心選取封包大小。\n          所有 reed_sol_r6_op、liberation、blaum_roth、liber8tion 都\n          等同於 RAID6,它們只能設定為 m=2。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>將以位元組大小的封包為單位進行編碼。\n          選取合適的封包大小很難。\n          Jerasure 文件包含有關此主題的詳細資訊。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>使用 jerasure 外掛程式時,若糾刪碼物件儲存於\n          多個 OSD 上,則復原一個遺失的 OSD 時需要讀取所有其他 OSD。\n          例如,若 jerasure 設定為 k=8 且 m=4,則遺失一個 OSD 後需讀取\n          其他十一個 OSD 才能修復。\n\n          lrc 糾刪碼外掛程式會建立本地同位區塊,因此只需較少的 OSD 即\n          可復原。例如,若 lrc 設定為 k=8、m=4 且 l=4,它將為每四個 OSD\n          建立額外的同位區塊。這樣,當一個 OSD 遺失時,它只需四個 OSD\n          即可復原,而不需要十一個。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>將編碼區塊和資料區塊分組為大小為 locality 的集合。例如,\n          k=4 且 m=2 時,若 locality=3,則會建立 2 個大小為 3 的組。這樣,各組都能\n          自行復原,而無需從另一組讀取區塊。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>由 l 定義的區塊集將按哪種 CRUSH 桶類型儲存。\n          例如,若設定為機架,則各組 l 區塊將會被放置到不同的\n          機架中。該值用於建立類似 step choose rack 的 CRUSH\n          規則步驟。若未設定,則不會進行此類分組。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 外掛程式封包了 ISA 程式庫。它只能在 Intel 處理器上執行。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 外掛程式包含兩種 Reed Solomon 格式。\n          若設定為 reed_sol_van,則為 Vandermonde。若設定為 cauchy,則為 Cauchy。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec 外掛程式封包了多個 SHEC 程式庫。\n          與 Reed Solomon 代碼相比,它能更有效地復原資料。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>同位區塊的數量,它們在各自的計算範圍內包含了\n          各資料區塊。該數值被用做持久性估值。例如,若 c=2,\n          則在不遺失資料的前提下,可有 2 個 OSD 停機。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSH 規則的第一步所指向的 CRUSH 桶名稱。\n      例如 step take default。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>確定兩個區塊不會存在於同一故障網域的桶中。\n      例如,若故障網域為主機,則不會有兩個區塊儲存於同一主機中。\n      該值用於建立類似 step chooseleaf host 的 CRUSH 規則步驟。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>使用 CRUSH 地圖中的 crush 裝置類別名稱,\n      將放置限制於特定類別的裝置 (例如 ssd 或 hdd)。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>設定糾刪碼外掛程式所在目錄。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>允許所有操作</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>僅允許不修改伺服器的操作</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>不允許讀取或寫入操作,但是允許任何其他操作</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>不允許讀取、寫入或任何可能修改檔案屬性或目錄內容的操作</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>完全禁止存取</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 選取優先程度 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>資訊</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>過去 5 分鐘</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>過去 15 分鐘</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>過去 30 分鐘</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>過去 1 小時 (預設值)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>過去 3 小時</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>過去 6 小時</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>過去 12 小時</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>過去 24 小時</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨天</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>今天</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>今天到目前為止</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>前天</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>過去 2 天</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>上週的今天</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>上週</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>本週</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>本週目前為止</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>過去 7 天</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>上個月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>本月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>本月目前為止</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>過去 30 天</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>過去 90 天</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>過去 6 個月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>過去 1 年</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>去年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年目前為止</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>過去 2 年</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>過去 5 年</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>未選取項目。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>取消選取項目以再次選取</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>已達到選取上限</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>過濾標記</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>新增徽章</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>沒有可用的項目。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>深層整理</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>損毀</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>壓平</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>標示為 Down</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>標示為 In</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>標示為遺失</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>標示為 Out</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保護</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>重新命名</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>還原</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>移至垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>取消保護</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>已刪除</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>已克隆</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>已複製</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>已壓平</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>已還原</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>已復原</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>是</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>否</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>服務品質</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>指定的每秒 IO 位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>指定的每秒 IO 操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>讀取 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>指定的每秒內讀取的位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>讀取 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>指定的每秒讀取操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>寫入 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>指定的每秒內寫入的位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>寫入 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>指定的每秒寫入操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>指定的 IO 位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>指定的 IO 操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>讀取 BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>指定的讀取的位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>讀取 IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>指定的讀取操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>寫入 BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>指定的寫入的位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>寫入 IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>指定的寫入操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>正在執行</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>執行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>已執行</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>未知任務</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>正在建立</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>建立</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>正在更新</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>正在刪除</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>正在克隆</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>正在複製</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>正在壓平</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>壓平</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>正在復原</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>復原</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>正在移動</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>移動</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>已移動</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>找不到影像。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>正在還原</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>還原</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>正在清除</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>所有池</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>無法停用鏡像,因為其包含對等。</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"I+eb":function(t,e,n){var a=n("2oRo"),r=n("Bs8V").f,i=n("kRJp"),s=n("busE"),u=n("zk60"),o=n("6JNq"),l=n("lMq5");t.exports=function(t,e){var n,d,c,f,h,g=t.target,p=t.global,b=t.stat;if(n=p?a:b?a[g]||u(g,{}):(a[g]||{}).prototype)for(d in e){if(f=e[d],c=t.noTargetGet?(h=r(n,d))&&h.value:n[d],!l(p?d:g+(b?".":"#")+d,t.forced)&&void 0!==c){if(typeof f==typeof c)continue;o(f,c)}(t.sham||c&&c.sham)&&i(f,"sham",!0),s(n,d,f,t)}}},I55L:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=t=>t&&"number"==typeof t.length&&"function"!=typeof t},I8vh:function(t,e,n){var a=n("WSbT"),r=Math.max,i=Math.min;t.exports=function(t,e){var n=a(t);return n<0?r(n+e,0):i(n,e)}},IBtZ:function(t,e,n){!function(t){"use strict";t.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(t){return/(წამი|წუთი|საათი|წელი)/.test(t)?t.replace(/ი$/,"ში"):t+"ში"},past:function(t){return/(წამი|წუთი|საათი|დღე|თვე)/.test(t)?t.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(t)?t.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(t){return 0===t?t:1===t?t+"-ლი":t<20||t<=100&&t%20==0||t%100==0?"მე-"+t:t+"-ე"},week:{dow:1,doy:7}})}(n("wd/R"))},IMTC:function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},IWUC:function(t,e,n){var a=n("qwH+"),r=n("x3F9");t.exports=function(t){return r(t)&&"[object Set]"==a(t)}},IZUe:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{constructor(t){this.elementRef=t,this.focus=!0}ngAfterViewInit(){const t=this.elementRef.nativeElement;this.focus&&a.isFunction(t.focus)&&t.focus()}set autofocus(t){a.isBoolean(t)?this.focus=t:a.isFunction(t)&&(this.focus=t())}}},Iab2:function(t,e,n){var a,r;void 0===(r="function"==typeof(a=function(){"use strict";function e(t,e,n){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){s(a.response,e,n)},a.onerror=function(){console.error("could not download file")},a.send()}function n(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return 200<=e.status&&299>=e.status}function a(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(e){var n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(n)}}var r="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,i=r.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=r.saveAs||("object"!=typeof window||window!==r?function(){}:"download"in HTMLAnchorElement.prototype&&!i?function(t,i,s){var u=r.URL||r.webkitURL,o=document.createElement("a");o.download=i=i||t.name||"download",o.rel="noopener","string"==typeof t?(o.href=t,o.origin===location.origin?a(o):n(o.href)?e(t,i,s):a(o,o.target="_blank")):(o.href=u.createObjectURL(t),setTimeout((function(){u.revokeObjectURL(o.href)}),4e4),setTimeout((function(){a(o)}),0))}:"msSaveOrOpenBlob"in navigator?function(t,r,i){if(r=r||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,i),r);else if(n(t))e(t,r,i);else{var s=document.createElement("a");s.href=t,s.target="_blank",setTimeout((function(){a(s)}))}}:function(t,n,a,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,a);var u="application/octet-stream"===t.type,o=/constructor/i.test(r.HTMLElement)||r.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||u&&o||i)&&"undefined"!=typeof FileReader){var d=new FileReader;d.onloadend=function(){var t=d.result;t=l?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=t:location=t,s=null},d.readAsDataURL(t)}else{var c=r.URL||r.webkitURL,f=c.createObjectURL(t);s?s.location=f:location.href=f,s=null,setTimeout((function(){c.revokeObjectURL(f)}),4e4)}});r.saveAs=s.saveAs=s,t.exports=s})?a.apply(e,[]):a)||(t.exports=r)},IeEY:function(t,e,n){var a=n("vJUC"),r=n("CwBR");t.exports=function t(e,n,i,s,u){var o=-1,l=e.length;for(i||(i=r),u||(u=[]);++o<l;){var d=e[o];n>0&&i(d)?n>1?t(d,n-1,i,s,u):a(u,d):s||(u[u.length]=d)}return u}},IfUl:function(t,e,n){var a=n("ZPW6"),r=n("JEWA");t.exports=function(t,e,n){(void 0!==n&&!r(t[e],n)||void 0===n&&!(e in t))&&a(t,e,n)}},IheW:function(t,e,n){"use strict";n.d(e,"m",(function(){return E})),n.d(e,"p",(function(){return q})),n.d(e,"q",(function(){return j})),n.d(e,"n",(function(){return D})),n.d(e,"o",(function(){return P})),n.d(e,"b",(function(){return c})),n.d(e,"g",(function(){return d})),n.d(e,"c",(function(){return I})),n.d(e,"a",(function(){return C})),n.d(e,"d",(function(){return G})),n.d(e,"e",(function(){return V})),n.d(e,"l",(function(){return F})),n.d(e,"h",(function(){return p})),n.d(e,"f",(function(){return O})),n.d(e,"i",(function(){return L})),n.d(e,"k",(function(){return k})),n.d(e,"j",(function(){return M}));var a=n("8Y7J"),r=n("LRne"),i=n("HDdC"),s=n("bOdf"),u=n("pLZG"),o=n("lJxs"),l=n("SVse");class d{}class c{}class f{constructor(t){this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?()=>{this.headers=new Map,t.split("\n").forEach(t=>{const e=t.indexOf(":");if(e>0){const n=t.slice(0,e),a=n.toLowerCase(),r=t.slice(e+1).trim();this.maybeSetNormalizedName(n,a),this.headers.has(a)?this.headers.get(a).push(r):this.headers.set(a,[r])}})}:()=>{this.headers=new Map,Object.keys(t).forEach(e=>{let n=t[e];const a=e.toLowerCase();"string"==typeof n&&(n=[n]),n.length>0&&(this.headers.set(a,n),this.maybeSetNormalizedName(e,a))})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();const e=this.headers.get(t.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,e){return this.clone({name:t,value:e,op:"a"})}set(t,e){return this.clone({name:t,value:e,op:"s"})}delete(t,e){return this.clone({name:t,value:e,op:"d"})}maybeSetNormalizedName(t,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,t)}init(){this.lazyInit&&(this.lazyInit instanceof f?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init(),Array.from(t.headers.keys()).forEach(e=>{this.headers.set(e,t.headers.get(e)),this.normalizedNames.set(e,t.normalizedNames.get(e))})}clone(t){const e=new f;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof f?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([t]),e}applyUpdate(t){const e=t.name.toLowerCase();switch(t.op){case"a":case"s":let n=t.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(t.name,e);const a=("a"===t.op?this.headers.get(e):void 0)||[];a.push(...n),this.headers.set(e,a);break;case"d":const r=t.value;if(r){let t=this.headers.get(e);if(!t)return;t=t.filter(t=>-1===r.indexOf(t)),0===t.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,t)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>t(this.normalizedNames.get(e),this.headers.get(e)))}}class h{encodeKey(t){return g(t)}encodeValue(t){return g(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}}function g(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/gi,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%2B/gi,"+").replace(/%3D/gi,"=").replace(/%3F/gi,"?").replace(/%2F/gi,"/")}class p{constructor(t={}){if(this.updates=null,this.cloneFrom=null,this.encoder=t.encoder||new h,t.fromString){if(t.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function(t,e){const n=new Map;return t.length>0&&t.split("&").forEach(t=>{const a=t.indexOf("="),[r,i]=-1==a?[e.decodeKey(t),""]:[e.decodeKey(t.slice(0,a)),e.decodeValue(t.slice(a+1))],s=n.get(r)||[];s.push(i),n.set(r,s)}),n}(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(e=>{const n=t.fromObject[e];this.map.set(e,Array.isArray(n)?n:[n])})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();const e=this.map.get(t);return e?e[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,e){return this.clone({param:t,value:e,op:"a"})}set(t,e){return this.clone({param:t,value:e,op:"s"})}delete(t,e){return this.clone({param:t,value:e,op:"d"})}toString(){return this.init(),this.keys().map(t=>{const e=this.encoder.encodeKey(t);return this.map.get(t).map(t=>e+"="+this.encoder.encodeValue(t)).join("&")}).join("&")}clone(t){const e=new p({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat([t]),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(t=>this.map.set(t,this.cloneFrom.map.get(t))),this.updates.forEach(t=>{switch(t.op){case"a":case"s":const e=("a"===t.op?this.map.get(t.param):void 0)||[];e.push(t.value),this.map.set(t.param,e);break;case"d":if(void 0===t.value){this.map.delete(t.param);break}{let e=this.map.get(t.param)||[];const n=e.indexOf(t.value);-1!==n&&e.splice(n,1),e.length>0?this.map.set(t.param,e):this.map.delete(t.param)}}}),this.cloneFrom=this.updates=null)}}function b(t){return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer}function m(t){return"undefined"!=typeof Blob&&t instanceof Blob}function y(t){return"undefined"!=typeof FormData&&t instanceof FormData}class v{constructor(t,e,n,a){let r;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=t.toUpperCase(),function(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||a?(this.body=void 0!==n?n:null,r=a):r=n,r&&(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.params&&(this.params=r.params)),this.headers||(this.headers=new f),this.params){const t=this.params.toString();if(0===t.length)this.urlWithParams=e;else{const n=e.indexOf("?");this.urlWithParams=e+(-1===n?"?":n<e.length-1?"&":"")+t}}else this.params=new p,this.urlWithParams=e}serializeBody(){return null===this.body?null:b(this.body)||m(this.body)||y(this.body)||"string"==typeof this.body?this.body:this.body instanceof p?this.body.toString():"object"==typeof this.body||"boolean"==typeof this.body||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return null===this.body||y(this.body)?null:m(this.body)?this.body.type||null:b(this.body)?null:"string"==typeof this.body?"text/plain":this.body instanceof p?"application/x-www-form-urlencoded;charset=UTF-8":"object"==typeof this.body||"number"==typeof this.body||Array.isArray(this.body)?"application/json":null}clone(t={}){const e=t.method||this.method,n=t.url||this.url,a=t.responseType||this.responseType,r=void 0!==t.body?t.body:this.body,i=void 0!==t.withCredentials?t.withCredentials:this.withCredentials,s=void 0!==t.reportProgress?t.reportProgress:this.reportProgress;let u=t.headers||this.headers,o=t.params||this.params;return void 0!==t.setHeaders&&(u=Object.keys(t.setHeaders).reduce((e,n)=>e.set(n,t.setHeaders[n]),u)),t.setParams&&(o=Object.keys(t.setParams).reduce((e,n)=>e.set(n,t.setParams[n]),o)),new v(e,n,r,{params:o,headers:u,reportProgress:s,responseType:a,withCredentials:i})}}const x=function(){var t={Sent:0,UploadProgress:1,ResponseHeader:2,DownloadProgress:3,Response:4,User:5};return t[t.Sent]="Sent",t[t.UploadProgress]="UploadProgress",t[t.ResponseHeader]="ResponseHeader",t[t.DownloadProgress]="DownloadProgress",t[t.Response]="Response",t[t.User]="User",t}();class _{constructor(t,e=200,n="OK"){this.headers=t.headers||new f,this.status=void 0!==t.status?t.status:e,this.statusText=t.statusText||n,this.url=t.url||null,this.ok=this.status>=200&&this.status<300}}class T extends _{constructor(t={}){super(t),this.type=x.ResponseHeader}clone(t={}){return new T({headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class w extends _{constructor(t={}){super(t),this.type=x.Response,this.body=void 0!==t.body?t.body:null}clone(t={}){return new w({body:void 0!==t.body?t.body:this.body,headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class O extends _{constructor(t){super(t,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?"Http failure during parsing for "+(t.url||"(unknown url)"):`Http failure response for ${t.url||"(unknown url)"}: ${t.status} ${t.statusText}`,this.error=t.error||null}}function S(t,e){return{body:e,headers:t.headers,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}class I{constructor(t){this.handler=t}request(t,e,n={}){let a;if(t instanceof v)a=t;else{let r=void 0;r=n.headers instanceof f?n.headers:new f(n.headers);let i=void 0;n.params&&(i=n.params instanceof p?n.params:new p({fromObject:n.params})),a=new v(t,e,void 0!==n.body?n.body:null,{headers:r,params:i,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials})}const i=Object(r.a)(a).pipe(Object(s.a)(t=>this.handler.handle(t)));if(t instanceof v||"events"===n.observe)return i;const l=i.pipe(Object(u.a)(t=>t instanceof w));switch(n.observe||"body"){case"body":switch(a.responseType){case"arraybuffer":return l.pipe(Object(o.a)(t=>{if(null!==t.body&&!(t.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return t.body}));case"blob":return l.pipe(Object(o.a)(t=>{if(null!==t.body&&!(t.body instanceof Blob))throw new Error("Response is not a Blob.");return t.body}));case"text":return l.pipe(Object(o.a)(t=>{if(null!==t.body&&"string"!=typeof t.body)throw new Error("Response is not a string.");return t.body}));case"json":default:return l.pipe(Object(o.a)(t=>t.body))}case"response":return l;default:throw new Error(`Unreachable: unhandled observe type ${n.observe}}`)}}delete(t,e={}){return this.request("DELETE",t,e)}get(t,e={}){return this.request("GET",t,e)}head(t,e={}){return this.request("HEAD",t,e)}jsonp(t,e){return this.request("JSONP",t,{params:(new p).append(e,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,e={}){return this.request("OPTIONS",t,e)}patch(t,e,n={}){return this.request("PATCH",t,S(n,e))}post(t,e,n={}){return this.request("POST",t,S(n,e))}put(t,e,n={}){return this.request("PUT",t,S(n,e))}}class N{constructor(t,e){this.next=t,this.interceptor=e}handle(t){return this.interceptor.intercept(t,this.next)}}const C=new a.InjectionToken("HTTP_INTERCEPTORS");class R{intercept(t,e){return e.handle(t)}}const A=/^\)\]\}',?\n/;class k{}class E{constructor(){}build(){return new XMLHttpRequest}}class L{constructor(t){this.xhrFactory=t}handle(t){if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without JsonpClientModule installed.");return new i.a(e=>{const n=this.xhrFactory.build();if(n.open(t.method,t.urlWithParams),t.withCredentials&&(n.withCredentials=!0),t.headers.forEach((t,e)=>n.setRequestHeader(t,e.join(","))),t.headers.has("Accept")||n.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){const e=t.detectContentTypeHeader();null!==e&&n.setRequestHeader("Content-Type",e)}if(t.responseType){const e=t.responseType.toLowerCase();n.responseType="json"!==e?e:"text"}const a=t.serializeBody();let r=null;const i=()=>{if(null!==r)return r;const e=1223===n.status?204:n.status,a=n.statusText||"OK",i=new f(n.getAllResponseHeaders()),s=function(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(n)||t.url;return r=new T({headers:i,status:e,statusText:a,url:s}),r},s=()=>{let{headers:a,status:r,statusText:s,url:u}=i(),o=null;204!==r&&(o=void 0===n.response?n.responseText:n.response),0===r&&(r=o?200:0);let l=r>=200&&r<300;if("json"===t.responseType&&"string"==typeof o){const t=o;o=o.replace(A,"");try{o=""!==o?JSON.parse(o):null}catch(d){o=t,l&&(l=!1,o={error:d,text:o})}}l?(e.next(new w({body:o,headers:a,status:r,statusText:s,url:u||void 0})),e.complete()):e.error(new O({error:o,headers:a,status:r,statusText:s,url:u||void 0}))},u=t=>{const{url:a}=i(),r=new O({error:t,status:n.status||0,statusText:n.statusText||"Unknown Error",url:a||void 0});e.error(r)};let o=!1;const l=a=>{o||(e.next(i()),o=!0);let r={type:x.DownloadProgress,loaded:a.loaded};a.lengthComputable&&(r.total=a.total),"text"===t.responseType&&n.responseText&&(r.partialText=n.responseText),e.next(r)},d=t=>{let n={type:x.UploadProgress,loaded:t.loaded};t.lengthComputable&&(n.total=t.total),e.next(n)};return n.addEventListener("load",s),n.addEventListener("error",u),t.reportProgress&&(n.addEventListener("progress",l),null!==a&&n.upload&&n.upload.addEventListener("progress",d)),n.send(a),e.next({type:x.Sent}),()=>{n.removeEventListener("error",u),n.removeEventListener("load",s),t.reportProgress&&(n.removeEventListener("progress",l),null!==a&&n.upload&&n.upload.removeEventListener("progress",d)),n.abort()}})}}const D=new a.InjectionToken("XSRF_COOKIE_NAME"),P=new a.InjectionToken("XSRF_HEADER_NAME");class M{}class q{constructor(t,e,n){this.doc=t,this.platform=e,this.cookieName=n,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=Object(l["ɵparseCookieValue"])(t,this.cookieName),this.lastCookieString=t),this.lastToken}}class j{constructor(t,e){this.tokenService=t,this.headerName=e}intercept(t,e){const n=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||n.startsWith("http://")||n.startsWith("https://"))return e.handle(t);const a=this.tokenService.getToken();return null===a||t.headers.has(this.headerName)||(t=t.clone({headers:t.headers.set(this.headerName,a)})),e.handle(t)}}class F{constructor(t,e){this.backend=t,this.injector=e,this.chain=null}handle(t){if(null===this.chain){const t=this.injector.get(C,[]);this.chain=t.reduceRight((t,e)=>new N(t,e),this.backend)}return this.chain.handle(t)}}class V{static disable(){return{ngModule:V,providers:[{provide:j,useClass:R}]}}static withOptions(t={}){return{ngModule:V,providers:[t.cookieName?{provide:D,useValue:t.cookieName}:[],t.headerName?{provide:P,useValue:t.headerName}:[]]}}}class G{}},IjjT:function(t,e,n){"use strict";let a=(()=>{class t{constructor(e,n=t.now){this.SchedulerAction=e,this.now=n}schedule(t,e=0,n){return new this.SchedulerAction(this,t).schedule(n,e)}}return t.now=()=>Date.now(),t})();n.d(e,"a",(function(){return r}));class r extends a{constructor(t,e=a.now){super(t,()=>r.delegate&&r.delegate!==this?r.delegate.now():e()),this.actions=[],this.active=!1,this.scheduled=void 0}schedule(t,e=0,n){return r.delegate&&r.delegate!==this?r.delegate.schedule(t,e,n):super.schedule(t,e,n)}flush(t){const{actions:e}=this;if(this.active)return void e.push(t);let n;this.active=!0;do{if(n=t.execute(t.state,t.delay))break}while(t=e.shift());if(this.active=!1,n){for(;t=e.shift();)t.unsubscribe();throw n}}}},ImZN:function(t,e,n){var a=n("2oRo"),r=n("A2ZE"),i=n("xluM"),s=n("glrk"),u=n("DVFp"),o=n("6VoE"),l=n("B/qT"),d=n("OpvP"),c=n("mh/w"),f=n("NaFW"),h=n("KmKo"),g=a.TypeError,p=function(t,e){this.stopped=t,this.result=e},b=p.prototype;t.exports=function(t,e,n){var a,m,y,v,x,_,T,w=!(!n||!n.AS_ENTRIES),O=!(!n||!n.IS_ITERATOR),S=!(!n||!n.INTERRUPTED),I=r(e,n&&n.that),N=function(t){return a&&h(a,"normal",t),new p(!0,t)},C=function(t){return w?(s(t),S?I(t[0],t[1],N):I(t[0],t[1])):S?I(t,N):I(t)};if(O)a=t;else{if(!(m=f(t)))throw g(u(t)+" is not iterable");if(o(m)){for(y=0,v=l(t);v>y;y++)if((x=C(t[y]))&&d(b,x))return x;return new p(!1)}a=c(t,m)}for(_=a.next;!(T=i(_,a)).done;){try{x=C(T.value)}catch(R){h(a,"throw",R)}if("object"==typeof x&&x&&d(b,x))return x}return new p(!1)}},"Ivi+":function(t,e,n){!function(t){"use strict";t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}})}(n("wd/R"))},IyEx:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}},IzCI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1024,["B/s","kB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"])}}},IzEk:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("4I5i"),i=n("EY2u");function s(t){return e=>0===t?Object(i.b)():e.lift(new u(t))}class u{constructor(t){if(this.total=t,this.total<0)throw new r.a}call(t,e){return e.subscribe(new o(t,this.total))}}class o extends a.a{constructor(t,e){super(t),this.total=e,this.count=0}_next(t){const e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))}}},J3wx:function(t,e,n){var a=n("qN6l");t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=a&&void 0===e?"__lodash_hash_undefined__":e,this}},J9xi:function(t,e,n){var a=n("rk81"),r=n("5DBd"),i=n("bQrF"),s=n("xOlK"),u=n("pYe4"),o=n("j09V"),l=n("Y3RO"),d=n("+GxX"),c=n("G3dZ"),f=n("iQ+a"),h=n("mOnh"),g=n("qwH+"),p=n("8+Q7"),b=n("hTsC"),m=n("pcUq"),y=n("0GLT"),v=n("y/5f"),x=n("8Tpr"),_=n("hmSm"),T=n("8+is"),w=n("FGWQ"),O=n("MBcj"),S={};S["[object Arguments]"]=S["[object Array]"]=S["[object ArrayBuffer]"]=S["[object DataView]"]=S["[object Boolean]"]=S["[object Date]"]=S["[object Float32Array]"]=S["[object Float64Array]"]=S["[object Int8Array]"]=S["[object Int16Array]"]=S["[object Int32Array]"]=S["[object Map]"]=S["[object Number]"]=S["[object Object]"]=S["[object RegExp]"]=S["[object Set]"]=S["[object String]"]=S["[object Symbol]"]=S["[object Uint8Array]"]=S["[object Uint8ClampedArray]"]=S["[object Uint16Array]"]=S["[object Uint32Array]"]=!0,S["[object Error]"]=S["[object Function]"]=S["[object WeakMap]"]=!1,t.exports=function t(e,n,I,N,C,R){var A,k=1&n,E=2&n,L=4&n;if(I&&(A=C?I(e,N,C,R):I(e)),void 0!==A)return A;if(!_(e))return e;var D=y(e);if(D){if(A=p(e),!k)return l(e,A)}else{var P=g(e),M="[object Function]"==P||"[object GeneratorFunction]"==P;if(v(e))return o(e,k);if("[object Object]"==P||"[object Arguments]"==P||M&&!C){if(A=E||M?{}:m(e),!k)return E?c(e,u(A,e)):d(e,s(A,e))}else{if(!S[P])return C?e:{};A=b(e,P,k)}}R||(R=new a);var q=R.get(e);if(q)return q;R.set(e,A),T(e)?e.forEach((function(a){A.add(t(a,n,I,a,e,R))})):x(e)&&e.forEach((function(a,r){A.set(r,t(a,n,I,r,e,R))}));var j=D?void 0:(L?E?h:f:E?O:w)(e);return r(j||e,(function(a,r){j&&(a=e[r=a]),i(A,r,t(a,n,I,r,e,R))})),A}},JBy8:function(t,e,n){var a=n("yoRg"),r=n("eDl+").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return a(t,r)}},"JCF/":function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(t){return/ئێواره‌/.test(t)},meridiem:function(t,e,n){return t<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},JEWA:function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},JIr8:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("l7GE"),r=n("51Dv"),i=n("ZUHj");function s(t){return function(e){const n=new u(t),a=e.lift(n);return n.caught=a}}class u{constructor(t){this.selector=t}call(t,e){return e.subscribe(new o(t,this.selector,this.caught))}}class o extends a.a{constructor(t,e,n){super(t),this.selector=e,this.caught=n}error(t){if(!this.isStopped){let n;try{n=this.selector(t,this.caught)}catch(e){return void super.error(e)}this._unsubscribeAndRecycle();const a=new r.a(this,void 0,void 0);this.add(a);const s=Object(i.a)(this,n,void 0,void 0,a);s!==a&&this.add(s)}}}},JTPl:function(t,e,n){var a,r=n("isl5"),i=(a=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";t.exports=function(t){return!!i&&i in t}},JVSJ:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return a+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return a+(1===t?"dan":"dana");case"MM":return a+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return a+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},JvlW:function(t,e,n){!function(t){"use strict";var e={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(t,e,n,a){return e?r(n)[0]:a?r(n)[1]:r(n)[2]}function a(t){return t%10==0||t>10&&t<20}function r(t){return e[t].split("_")}function i(t,e,i,s){var u=t+" ";return 1===t?u+n(0,e,i[0],s):e?u+(a(t)?r(i)[1]:r(i)[0]):s?u+r(i)[1]:u+(a(t)?r(i)[1]:r(i)[2])}t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(t,e,n,a){return e?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"},ss:i,m:n,mm:i,h:n,hh:i,d:n,dd:i,M:n,MM:i,y:n,yy:i},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}})}(n("wd/R"))},JxMD:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("hrfs");n("dgut"),n("Fgil"),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return u}));var s=a["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto;cursor:pointer;overflow:visible;position:static!important}']],data:{}});function u(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{chartCanvasRef:0}),a["ɵqud"](402653184,2,{chartTooltipRef:0}),(t()(),a["ɵeld"](2,0,null,null,6,"div",[["class","chart-container"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgStyleImpl"],r["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgStyle,[r["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵeld"](5,0,[[1,0],["sparkCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),a["ɵdid"](6,999424,null,0,i.a,[a.ElementRef,i.c],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),a["ɵeld"](7,0,[[2,0],["sparkTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),a["ɵeld"](8,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.style),t(e,6,0,n.datasets,n.labels,n.options,"line",n.colors)}),null)}},"K/tc":function(t,e,n){!function(t){"use strict";t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},K1DE:function(t,e){t.exports=function(t,e){return t.has(e)}},K3g9:function(t,e){t.exports=function(t){return t&&t.length?t[0]:void 0}},K6Rb:function(t,e){var n=Function.prototype,a=n.apply,r=n.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n.bind?r.bind(a):function(){return r.apply(a,arguments)})},KFwg:function(t,e,n){var a=n("r467"),r=n("k9+3");t.exports=function(t,e){var n=r(t,e);return a(n)?n:void 0}},KNDS:function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},KOzp:function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return l})),n.d(e,"d",(function(){return d}));var a=n("z/SZ"),r=n("hpHm"),i=n("2uy1"),s=n("PqYM");class u{constructor(){this.adaptivePosition=!0,this.placement="top",this.triggers="click",this.outsideClick=!1,this.delay=0}}class o{constructor(t){Object.assign(this,t)}get isBs3(){return Object(r.d)()}}class l{constructor(t,e,n,a,r,i){this._elementRef=e,this._renderer=n,this._positionService=i,this.outsideClick=!1,this.containerClass="",this._isInited=!1,this._popover=r.createLoader(e,a,n).provide({provide:u,useValue:t}),Object.assign(this,t),this.onShown=this._popover.onShown,this.onHidden=this._popover.onHidden,"undefined"!=typeof window&&e.nativeElement.addEventListener("click",(function(){try{e.nativeElement.focus()}catch(t){return}}))}get isOpen(){return this._popover.isShown}set isOpen(t){t?this.show():this.hide()}show(){if(this._popover.isShown||!this.popover||this._delayTimeoutId)return;this._positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition},preventOverflow:{enabled:this.adaptivePosition}}});const t=()=>{this._delayTimeoutId&&(this._delayTimeoutId=void 0),this._popover.attach(o).to(this.container).position({attachment:this.placement}).show({content:this.popover,context:this.popoverContext,placement:this.placement,title:this.popoverTitle,containerClass:this.containerClass}),this.adaptivePosition||(this._positionService.calcPosition(),this._positionService.deletePositionElement(this._popover._componentRef.location)),this.isOpen=!0},e=()=>{this._popoverCancelShowFn&&this._popoverCancelShowFn()};if(this.delay){const n=Object(s.a)(this.delay).subscribe(()=>{t(),e()});this.triggers&&Object(r.f)(this.triggers).forEach(t=>{this._popoverCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,t.close,()=>{n.unsubscribe(),e()})})}else t()}hide(){this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this.isOpen&&(this._popover.hide(),this.isOpen=!1)}toggle(){if(this.isOpen)return this.hide();this.show()}ngOnInit(){this._isInited||(this._isInited=!0,this._popover.listen({triggers:this.triggers,outsideClick:this.outsideClick,show:()=>this.show()}))}ngOnDestroy(){this._popover.dispose()}}class d{static forRoot(){return{ngModule:d,providers:[u,a.a,i.a]}}}},KQir:function(t,e){t.exports=function(){return!1}},KSF8:function(t,e,n){!function(t){"use strict";t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},KTz0:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},KVJa:function(t,e,n){"use strict";var a=n("8Y7J");n("Z21x"),n("SVse"),n("sne2"),n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var r=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["class","btn btn-light tc_backButton"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.back()&&a),a}),null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.name)}))}},KmKo:function(t,e,n){var a=n("xluM"),r=n("glrk"),i=n("3Eq5");t.exports=function(t,e,n){var s,u;r(t);try{if(!(s=i(t,"return"))){if("throw"===e)throw n;return n}s=a(s,t)}catch(o){u=!0,s=o}if("throw"===e)throw n;if(u)throw s;return r(s),n}},Kqap:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){let n=!1;return arguments.length>=2&&(n=!0),function(a){return a.lift(new i(t,e,n))}}class i{constructor(t,e,n=!1){this.accumulator=t,this.seed=e,this.hasSeed=n}call(t,e){return e.subscribe(new s(t,this.accumulator,this.seed,this.hasSeed))}}class s extends a.a{constructor(t,e,n,a){super(t),this.accumulator=e,this._seed=n,this.hasSeed=a,this.index=0}get seed(){return this._seed}set seed(t){this.hasSeed=!0,this._seed=t}_next(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)}_tryNext(t){const e=this.index++;let n;try{n=this.accumulator(this.seed,t,e)}catch(a){this.destination.error(a)}this.seed=n,this.destination.next(n)}}},KqfI:function(t,e,n){"use strict";function a(){}n.d(e,"a",(function(){return a}))},L0Z1:function(t,e,n){(function(t){var a=n("qzZ1"),r=e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,s=i&&i.exports===r&&a.process,u=function(){try{return i&&i.require&&i.require("util").types||s&&s.binding&&s.binding("util")}catch(t){}}();t.exports=u}).call(this,n("YuTi")(t))},LJNh:function(t,e,n){var a=n("zDBQ"),r=n("8V0S"),i=n("/F2L");t.exports=function(t){return i(r(t,void 0,a),t+"")}},LOMR:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("Fwy9"),i=n("gk6K"),s=n("woSy"),u=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[["class","node-drop-slot"]],null,[[null,"treeDrop"],[null,"drop"]],(function(t,e,n){var r=!0,i=t.component;return"drop"===e&&(r=!1!==a["ɵnov"](t,1).onDrop(n)&&r),"treeDrop"===e&&(r=!1!==i.onDrop(n)&&r),r}),null,null)),a["ɵdid"](1,4341760,null,0,r.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{allowDragoverStyling:[0,"allowDragoverStyling"],treeAllowDrop:[1,"treeAllowDrop"]},{onDropCallback:"treeDrop"})],(function(t,e){var n=e.component;t(e,1,0,!0,n.allowDrop.bind(n))}),null)}var l=n("SVse"),d=n("CoVI"),c=n("uNpg"),f=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["class","tree-node-checkbox"],["type","checkbox"]],[[8,"checked",0],[8,"indeterminate",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.node.mouseAction("checkboxClick",n)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,1,0,n.node.isSelected,n.node.isPartiallySelected)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,h)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var p=n("jV1L"),b=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","toggle-children-wrapper"]],[[2,"toggle-children-wrapper-expanded",null],[2,"toggle-children-wrapper-collapsed",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.node.mouseAction("expanderClick",n)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"span",[["class","toggle-children"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.node.isExpanded,n.node.isCollapsed)}))}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[["class","toggle-children-placeholder"]],null,null,null,null,null))],null,null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](4,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.node.hasChildren),t(e,4,0,!n.node.hasChildren)}),null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,v)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var _=n("C523"),T=n("rZud"),w=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.node.displayField)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0,node:1,index:2})],(function(t,e){var n=e.component;t(e,1,0,!n.template);var a=t(e,4,0,n.node,n.node,n.index);t(e,3,0,a,n.template)}),null)}var I=n("OIDT"),N=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-checkbox",[],null,null,null,g,f)),a["ɵdid"](1,49152,null,0,c.a,[],{node:[0,"node"]},null)],(function(t,e){t(e,1,0,e.component.node)}),null)}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","node-wrapper"]],[[4,"padding-left",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"tree-node-expander",[],null,null,null,x,b)),a["ɵdid"](4,49152,null,0,p.a,[],{node:[0,"node"]},null),(t()(),a["ɵeld"](5,0,null,null,4,"div",[["class","node-content-wrapper"]],[[2,"node-content-wrapper-active",null],[2,"node-content-wrapper-focused",null]],[[null,"click"],[null,"dblclick"],[null,"mouseover"],[null,"mouseout"],[null,"contextmenu"],[null,"treeDrop"],[null,"treeDropDragOver"],[null,"treeDropDragLeave"],[null,"treeDropDragEnter"],[null,"drop"],[null,"dragstart"],[null,"dragend"]],(function(t,e,n){var r=!0,i=t.component;return"drop"===e&&(r=!1!==a["ɵnov"](t,6).onDrop(n)&&r),"dragstart"===e&&(r=!1!==a["ɵnov"](t,7).onDragStart(n)&&r),"dragend"===e&&(r=!1!==a["ɵnov"](t,7).onDragEnd()&&r),"click"===e&&(r=!1!==i.node.mouseAction("click",n)&&r),"dblclick"===e&&(r=!1!==i.node.mouseAction("dblClick",n)&&r),"mouseover"===e&&(r=!1!==i.node.mouseAction("mouseOver",n)&&r),"mouseout"===e&&(r=!1!==i.node.mouseAction("mouseOut",n)&&r),"contextmenu"===e&&(r=!1!==i.node.mouseAction("contextMenu",n)&&r),"treeDrop"===e&&(r=!1!==i.node.onDrop(n)&&r),"treeDropDragOver"===e&&(r=!1!==i.node.mouseAction("dragOver",n)&&r),"treeDropDragLeave"===e&&(r=!1!==i.node.mouseAction("dragLeave",n)&&r),"treeDropDragEnter"===e&&(r=!1!==i.node.mouseAction("dragEnter",n)&&r),r}),null,null)),a["ɵdid"](6,4341760,null,0,r.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{allowDragoverStyling:[0,"allowDragoverStyling"],treeAllowDrop:[1,"treeAllowDrop"]},{onDropCallback:"treeDrop",onDragOverCallback:"treeDropDragOver",onDragLeaveCallback:"treeDropDragLeave",onDragEnterCallback:"treeDropDragEnter"}),a["ɵdid"](7,4603904,null,0,_.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{draggedElement:[0,"draggedElement"],treeDragEnabled:[1,"treeDragEnabled"]},null),(t()(),a["ɵeld"](8,0,null,null,1,"tree-node-content",[],null,null,null,S,w)),a["ɵdid"](9,49152,null,0,T.a,[],{node:[0,"node"],index:[1,"index"],template:[2,"template"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.node.options.useCheckbox),t(e,4,0,n.node),t(e,6,0,n.node.allowDragoverStyling(),n.node.allowDrop),t(e,7,0,n.node,n.node.allowDrag()),t(e,9,0,n.node,n.index,n.templates.treeNodeTemplate)}),(function(t,e){var n=e.component;t(e,0,0,n.node.getNodePadding()),t(e,5,0,n.node.isActive,n.node.isFocused)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,R)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0,node:1,index:2,templates:3})],(function(t,e){var n=e.component;t(e,1,0,!n.templates.treeNodeWrapperTemplate);var a=t(e,4,0,n.node,n.node,n.index,n.templates);t(e,3,0,a,n.templates.treeNodeWrapperTemplate)}),null)}var k=n("WaXT"),E=n("ZhuC"),L=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["loading..."]))],null,null)}function P(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,D)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0})],(function(t,e){var n=e.component;t(e,1,0,!n.template);var a=t(e,4,0,n.node);t(e,3,0,a,n.template)}),null)}var M=n("4Dmd"),q=n("pcHL"),j=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-collection",[],null,null,null,X,J)),a["ɵdid"](1,245760,null,0,k.a,[],{nodes:[0,"nodes"],treeModel:[1,"treeModel"],templates:[2,"templates"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.node.children,n.node.treeModel,n.templates)}),null)}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-loading-component",[["class","tree-node-loading"]],[[4,"padding-left",null]],null,null,P,L)),a["ɵdid"](1,49152,null,0,E.a,[],{template:[0,"template"],node:[1,"node"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.templates.loadingTemplate,n.node)}),(function(t,e){t(e,0,0,e.component.node.getNodePadding())}))}function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[2,"tree-children",null],[2,"tree-children-no-padding",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,F)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](4,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.node.children),t(e,4,0,!n.node.children)}),(function(t,e){t(e,0,0,!0,e.component.node.options.levelPadding)}))}function B(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](2,16384,null,0,M.a,[a.Renderer2,a.TemplateRef,a.ViewContainerRef],{animateSpeed:[0,"animateSpeed"],animateAcceleration:[1,"animateAcceleration"],isEnabled:[2,"isEnabled"],isOpen:[3,"isOpen"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.node.options.animateSpeed,n.node.options.animateAcceleration,n.node.options.animateExpand,n.node.isExpanded)}),null)}function z(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,B)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var Y=n("TNUL"),H=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function U(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-drop-slot",[],null,null,null,o,u)),a["ɵdid"](1,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.node.parent,n.node.index)}),null)}function W(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[],[[8,"className",0],[2,"tree-node",null],[2,"tree-node-expanded",null],[2,"tree-node-collapsed",null],[2,"tree-node-leaf",null],[2,"tree-node-active",null],[2,"tree-node-focused",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,U)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"tree-node-wrapper",[],null,null,null,A,N)),a["ɵdid"](4,49152,null,0,I.a,[],{node:[0,"node"],index:[1,"index"],templates:[2,"templates"]},null),(t()(),a["ɵeld"](5,0,null,null,1,"tree-node-children",[],null,null,null,z,j)),a["ɵdid"](6,49152,null,0,q.a,[],{node:[0,"node"],templates:[1,"templates"]},null),(t()(),a["ɵeld"](7,0,null,null,1,"tree-node-drop-slot",[],null,null,null,o,u)),a["ɵdid"](8,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){var n=e.component;t(e,2,0,0===n.index),t(e,4,0,n.node,n.index,n.templates),t(e,6,0,n.node,n.templates),t(e,8,0,n.node.parent,n.node.index+1)}),(function(t,e){var n=e.component;t(e,0,0,n.node.getClass(),!0,n.node.isExpanded&&n.node.hasChildren,n.node.isCollapsed&&n.node.hasChildren,n.node.isLeaf,n.node.isActive,n.node.isFocused)}))}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,W)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](4,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](5,{$implicit:0,node:1,index:2,templates:3}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!n.templates.treeNodeFullTemplate);var a=t(e,5,0,n.node,n.node,n.index,n.templates);t(e,4,0,a,n.templates.treeNodeFullTemplate)}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,K)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var J=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node",[],null,null,null,$,H)),a["ɵdid"](1,49152,null,0,Y.a,[],{node:[0,"node"],index:[1,"index"],templates:[2,"templates"]},null)],(function(t,e){t(e,1,0,e.context.$implicit,e.context.index,e.component.templates)}),null)}function Q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"div",[],[[4,"margin-top",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Z)),a["ɵdid"](3,278528,null,0,l.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.viewportNodes,n.trackNode)}),(function(t,e){t(e,1,0,e.component.marginTop)}))}function X(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,Q)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var tt=n("dApe"),et=n("MP8s"),nt=n("HIU9"),at=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[],[[4,"height",null]],null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){t(e,1,0,e.component.getTotalHeight())}))}function it(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,rt)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}n("fxL3"),n.d(e,"a",(function(){return st})),n.d(e,"b",(function(){return lt}));var st=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tree-node-collection",[],null,null,null,X,J)),a["ɵdid"](1,245760,null,0,k.a,[],{nodes:[0,"nodes"],treeModel:[1,"treeModel"],templates:[2,"templates"]},null),a["ɵpod"](2,{loadingTemplate:0,treeNodeTemplate:1,treeNodeWrapperTemplate:2,treeNodeFullTemplate:3})],(function(t,e){var n=e.component,a=n.treeModel.roots,r=n.treeModel,i=t(e,2,0,n.loadingTemplate,n.treeNodeTemplate,n.treeNodeWrapperTemplate,n.treeNodeFullTemplate);t(e,1,0,a,r,i)}),null)}function ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-drop-slot",[["class","empty-tree-drop-slot"]],null,null,null,o,u)),a["ɵdid"](1,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){t(e,1,0,e.component.treeModel.virtualRoot,0)}),null)}function lt(t){return a["ɵvid"](0,[a["ɵqud"](671088640,1,{viewportComponent:0}),(t()(),a["ɵeld"](1,0,null,null,7,"tree-viewport",[],null,null,null,it,at)),a["ɵprd"](512,null,tt.a,tt.a,[et.a]),a["ɵdid"](3,4440064,[[1,4],["viewport",4]],0,nt.a,[a.ElementRef,a.NgZone,tt.a],null,null),(t()(),a["ɵeld"](4,0,null,0,4,"div",[["class","angular-tree-component"]],[[2,"node-dragging",null],[2,"angular-tree-component-rtl",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ut)),a["ɵdid"](6,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ot)),a["ɵdid"](8,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0),t(e,6,0,n.treeModel.roots),t(e,8,0,n.treeModel.isEmptyTree())}),(function(t,e){var n=e.component;t(e,4,0,n.treeDraggedElement.isDragging(),n.treeModel.options.rtl)}))}},LQDL:function(t,e,n){var a,r,i=n("2oRo"),s=n("NC/Y"),u=i.process,o=i.Deno,l=u&&u.versions||o&&o.version,d=l&&l.v8;d&&(r=(a=d.split("."))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!r&&s&&(!(a=s.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=s.match(/Chrome\/(\d+)/))&&(r=+a[1]),t.exports=r},LRne:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("z+Ro"),r=n("yCtX"),i=n("jZKg");function s(...t){let e=t[t.length-1];return Object(a.a)(e)?(t.pop(),Object(i.a)(t,e)):Object(r.a)(t)}},LWR0:function(t,e,n){var a=n("hmSm"),r=n("fIUv"),i=n("jNLg"),s=Math.max,u=Math.min;t.exports=function(t,e,n){var o,l,d,c,f,h,g=0,p=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=o,a=l;return o=l=void 0,g=e,c=t.apply(a,n)}function v(t){return g=t,f=setTimeout(_,e),p?y(t):c}function x(t){var n=t-h;return void 0===h||n>=e||n<0||b&&t-g>=d}function _(){var t=r();if(x(t))return T(t);f=setTimeout(_,function(t){var n=e-(t-h);return b?u(n,d-(t-g)):n}(t))}function T(t){return f=void 0,m&&o?y(t):(o=l=void 0,c)}function w(){var t=r(),n=x(t);if(o=arguments,l=this,h=t,n){if(void 0===f)return v(h);if(b)return clearTimeout(f),f=setTimeout(_,e),y(h)}return void 0===f&&(f=setTimeout(_,e)),c}return e=i(e)||0,a(n)&&(p=!!n.leading,d=(b="maxWait"in n)?s(i(n.maxWait)||0,e):d,m="trailing"in n?!!n.trailing:m),w.cancel=function(){void 0!==f&&clearTimeout(f),g=0,o=h=l=f=void 0},w.flush=function(){return void 0===f?c:T(r())},w}},LaC8:function(t,e,n){var a=n("pMcL"),r=n("sA22"),i=n("eNG0"),s=a?a.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?r(t):i(t)}},LceX:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return c})),n.d(e,"c",(function(){return i})),n.d(e,"d",(function(){return s})),n.d(e,"e",(function(){return u})),n.d(e,"f",(function(){return o})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return d}));var a=n("sne2");n("eTJe"),n("n/D3"),n("V3my"),n("ZEkX");class r{}const i={breadcrumbs:"Users"},s={breadcrumbs:a.a.CREATE},u={breadcrumbs:a.a.EDIT},o={breadcrumbs:"Roles"},l={breadcrumbs:a.a.CREATE},d={breadcrumbs:a.a.EDIT};class c{}},LgIp:function(t,e){t.exports=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r}},Lhse:function(t,e,n){"use strict";function a(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}n.d(e,"a",(function(){return r}));const r=a()},Loxo:function(t,e,n){!function(t){"use strict";t.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("wd/R"))},LqlI:function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return d})),n.d(e,"e",(function(){return h})),n.d(e,"f",(function(){return o}));var a=n("8Y7J"),r=n("hpHm"),i=n("z/SZ"),s=n("2uy1");class u{constructor(){this.hide=Function,this.setClass=Function}}class o{}const l={backdrop:!0,keyboard:!0,focus:!0,show:!1,ignoreBackdropClick:!1,class:"",animated:!0,initialState:{}};class d{constructor(t,e,n){this._element=e,this._renderer=n,this.isShown=!1,this.isModalHiding=!1,this.clickStartedInContent=!1,this.config=Object.assign({},t)}ngOnInit(){this.isAnimated&&this._renderer.addClass(this._element.nativeElement,"fade"),this._renderer.setStyle(this._element.nativeElement,"display","block"),setTimeout(()=>{this.isShown=!0,this._renderer.addClass(this._element.nativeElement,Object(r.d)()?"in":"show")},this.isAnimated?150:0),document&&document.body&&(1===this.bsModalService.getModalsCount()&&(this.bsModalService.checkScrollbar(),this.bsModalService.setScrollbar()),this._renderer.addClass(document.body,"modal-open")),this._element.nativeElement&&this._element.nativeElement.focus()}onClickStarted(t){this.clickStartedInContent=t.target!==this._element.nativeElement}onClickStop(t){this.config.ignoreBackdropClick||"static"===this.config.backdrop||t.target!==this._element.nativeElement||this.clickStartedInContent?this.clickStartedInContent=!1:(this.bsModalService.setDismissReason("backdrop-click"),this.hide())}onEsc(t){this.isShown&&(27!==t.keyCode&&"Escape"!==t.key||t.preventDefault(),this.config.keyboard&&this.level===this.bsModalService.getModalsCount()&&(this.bsModalService.setDismissReason("esc"),this.hide()))}ngOnDestroy(){this.isShown&&this.hide()}hide(){!this.isModalHiding&&this.isShown&&(this.isModalHiding=!0,this._renderer.removeClass(this._element.nativeElement,Object(r.d)()?"in":"show"),setTimeout(()=>{this.isShown=!1,document&&document.body&&1===this.bsModalService.getModalsCount()&&this._renderer.removeClass(document.body,"modal-open"),this.bsModalService.hide(this.level),this.isModalHiding=!1},this.isAnimated?300:0))}}class c{constructor(t,e){this._isShown=!1,this.element=t,this.renderer=e}get isAnimated(){return this._isAnimated}set isAnimated(t){this._isAnimated=t}get isShown(){return this._isShown}set isShown(t){this._isShown=t,t?this.renderer.addClass(this.element.nativeElement,"in"):this.renderer.removeClass(this.element.nativeElement,"in"),Object(r.d)()||(t?this.renderer.addClass(this.element.nativeElement,"show"):this.renderer.removeClass(this.element.nativeElement,"show"))}ngOnInit(){this.isAnimated&&(this.renderer.addClass(this.element.nativeElement,"fade"),r.b.reflow(this.element.nativeElement)),this.isShown=!0}}class f{constructor(t,e){this.clf=e,this.config=l,this.onShow=new a.EventEmitter,this.onShown=new a.EventEmitter,this.onHide=new a.EventEmitter,this.onHidden=new a.EventEmitter,this.isBodyOverflowing=!1,this.originalBodyPadding=0,this.scrollbarWidth=0,this.modalsCount=0,this.lastDismissReason="",this.loaders=[],this._backdropLoader=this.clf.createLoader(null,null,null),this._renderer=t.createRenderer(null,null)}show(t,e){return this.modalsCount++,this._createLoaders(),this.config=Object.assign({},l,e),this._showBackdrop(),this.lastDismissReason=null,this._showModal(t)}hide(t){1===this.modalsCount&&(this._hideBackdrop(),this.resetScrollbar()),this.modalsCount=this.modalsCount>=1?this.modalsCount-1:0,setTimeout(()=>{this._hideModal(t),this.removeLoaders(t)},this.config.animated?150:0)}_showBackdrop(){const t=this.config.backdrop||"static"===this.config.backdrop,e=!this.backdropRef||!this.backdropRef.instance.isShown;1===this.modalsCount&&(this.removeBackdrop(),t&&e&&(this._backdropLoader.attach(c).to("body").show({isAnimated:this.config.animated}),this.backdropRef=this._backdropLoader._componentRef))}_hideBackdrop(){this.backdropRef&&(this.backdropRef.instance.isShown=!1,setTimeout(()=>this.removeBackdrop(),this.config.animated?150:0))}_showModal(t){const e=this.loaders[this.loaders.length-1],n=new u,a=e.provide({provide:o,useValue:this.config}).provide({provide:u,useValue:n}).attach(d).to("body").show({content:t,isAnimated:this.config.animated,initialState:this.config.initialState,bsModalService:this});return a.instance.level=this.getModalsCount(),n.hide=()=>{setTimeout(()=>a.instance.hide(),this.config.animated?300:0)},n.content=e.getInnerComponent()||null,n.setClass=t=>{a.instance.config.class=t},n}_hideModal(t){const e=this.loaders[t-1];e&&e.hide()}getModalsCount(){return this.modalsCount}setDismissReason(t){this.lastDismissReason=t}removeBackdrop(){this._backdropLoader.hide(),this.backdropRef=null}checkScrollbar(){this.isBodyOverflowing=document.body.clientWidth<window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()}setScrollbar(){document&&(this.originalBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")||"0",10),this.isBodyOverflowing&&(document.body.style.paddingRight=this.originalBodyPadding+this.scrollbarWidth+"px"))}resetScrollbar(){document.body.style.paddingRight=this.originalBodyPadding+"px"}getScrollbarWidth(){const t=this._renderer.createElement("div");this._renderer.addClass(t,"modal-scrollbar-measure"),this._renderer.appendChild(document.body,t);const e=t.offsetWidth-t.clientWidth;return this._renderer.removeChild(document.body,t),e}_createLoaders(){const t=this.clf.createLoader(null,null,null);this.copyEvent(t.onBeforeShow,this.onShow),this.copyEvent(t.onShown,this.onShown),this.copyEvent(t.onBeforeHide,this.onHide),this.copyEvent(t.onHidden,this.onHidden),this.loaders.push(t)}removeLoaders(t){this.loaders.splice(t-1,1),this.loaders.forEach((t,e)=>{t.instance.level=e+1})}copyEvent(t,e){t.subscribe(()=>{e.emit(this.lastDismissReason)})}}class h{static forRoot(){return{ngModule:h,providers:[f,i.a,s.a]}}static forChild(){return{ngModule:h,providers:[f,i.a,s.a]}}}},LvDl:function(t,e,n){(function(t){var a;(function(){var r="Expected a function",i="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],u="[object Arguments]",o="[object Array]",l="[object Boolean]",d="[object Date]",c="[object Error]",f="[object Function]",h="[object GeneratorFunction]",g="[object Map]",p="[object Number]",b="[object Object]",m="[object RegExp]",y="[object Set]",v="[object String]",x="[object Symbol]",_="[object WeakMap]",T="[object ArrayBuffer]",w="[object DataView]",O="[object Float32Array]",S="[object Float64Array]",I="[object Int8Array]",N="[object Int16Array]",C="[object Int32Array]",R="[object Uint8Array]",A="[object Uint16Array]",k="[object Uint32Array]",E=/\b__p \+= '';/g,L=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,M=/[&<>"']/g,q=RegExp(P.source),j=RegExp(M.source),F=/<%-([\s\S]+?)%>/g,V=/<%([\s\S]+?)%>/g,G=/<%=([\s\S]+?)%>/g,B=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,z=/^\w*$/,Y=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,H=/[\\^$.*+?()[\]{}|]/g,U=RegExp(H.source),W=/^\s+|\s+$/g,K=/^\s+/,$=/\s+$/,J=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Z=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,X=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,at=/^[-+]0x[0-9a-f]+$/i,rt=/^0b[01]+$/i,it=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,ut=/^(?:0|[1-9]\d*)$/,ot=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt=/($^)/,dt=/['\n\r\u2028\u2029\\]/g,ct="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ft="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ht="["+ft+"]",gt="["+ct+"]",pt="\\d+",bt="[a-z\\xdf-\\xf6\\xf8-\\xff]",mt="[^\\ud800-\\udfff"+ft+pt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",yt="\\ud83c[\\udffb-\\udfff]",vt="[^\\ud800-\\udfff]",xt="(?:\\ud83c[\\udde6-\\uddff]){2}",_t="[\\ud800-\\udbff][\\udc00-\\udfff]",Tt="[A-Z\\xc0-\\xd6\\xd8-\\xde]",wt="(?:"+bt+"|"+mt+")",Ot="(?:"+Tt+"|"+mt+")",St="(?:"+gt+"|"+yt+")?",It="[\\ufe0e\\ufe0f]?"+St+"(?:\\u200d(?:"+[vt,xt,_t].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*",Nt="(?:"+["[\\u2700-\\u27bf]",xt,_t].join("|")+")"+It,Ct="(?:"+[vt+gt+"?",gt,xt,_t,"[\\ud800-\\udfff]"].join("|")+")",Rt=RegExp("['’]","g"),At=RegExp(gt,"g"),kt=RegExp(yt+"(?="+yt+")|"+Ct+It,"g"),Et=RegExp([Tt+"?"+bt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ht,Tt,"$"].join("|")+")",Ot+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ht,Tt+wt,"$"].join("|")+")",Tt+"?"+wt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Tt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",pt,Nt].join("|"),"g"),Lt=RegExp("[\\u200d\\ud800-\\udfff"+ct+"\\ufe0e\\ufe0f]"),Dt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Mt=-1,qt={};qt[O]=qt[S]=qt[I]=qt[N]=qt[C]=qt[R]=qt["[object Uint8ClampedArray]"]=qt[A]=qt[k]=!0,qt[u]=qt[o]=qt[T]=qt[l]=qt[w]=qt[d]=qt[c]=qt[f]=qt[g]=qt[p]=qt[b]=qt[m]=qt[y]=qt[v]=qt[_]=!1;var jt={};jt[u]=jt[o]=jt[T]=jt[w]=jt[l]=jt[d]=jt[O]=jt[S]=jt[I]=jt[N]=jt[C]=jt[g]=jt[p]=jt[b]=jt[m]=jt[y]=jt[v]=jt[x]=jt[R]=jt["[object Uint8ClampedArray]"]=jt[A]=jt[k]=!0,jt[c]=jt[f]=jt[_]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Vt=parseFloat,Gt=parseInt,Bt="object"==typeof global&&global&&global.Object===Object&&global,zt="object"==typeof self&&self&&self.Object===Object&&self,Yt=Bt||zt||Function("return this")(),Ht=e&&!e.nodeType&&e,Ut=Ht&&"object"==typeof t&&t&&!t.nodeType&&t,Wt=Ut&&Ut.exports===Ht,Kt=Wt&&Bt.process,$t=function(){try{return Ut&&Ut.require&&Ut.require("util").types||Kt&&Kt.binding&&Kt.binding("util")}catch(t){}}(),Jt=$t&&$t.isArrayBuffer,Zt=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,te=$t&&$t.isSet,ee=$t&&$t.isTypedArray;function ne(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function ae(t,e,n,a){for(var r=-1,i=null==t?0:t.length;++r<i;){var s=t[r];e(a,s,n(s),t)}return a}function re(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}function ie(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function se(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}function ue(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}function oe(t,e){return!(null==t||!t.length)&&ye(t,e,0)>-1}function le(t,e,n){for(var a=-1,r=null==t?0:t.length;++a<r;)if(n(e,t[a]))return!0;return!1}function de(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}function ce(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}function fe(t,e,n,a){var r=-1,i=null==t?0:t.length;for(a&&i&&(n=t[++r]);++r<i;)n=e(n,t[r],r,t);return n}function he(t,e,n,a){var r=null==t?0:t.length;for(a&&r&&(n=t[--r]);r--;)n=e(n,t[r],r,t);return n}function ge(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}var pe=Te("length");function be(t,e,n){var a;return n(t,(function(t,n,r){if(e(t,n,r))return a=n,!1})),a}function me(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}function ye(t,e,n){return e==e?function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}(t,e,n):me(t,xe,n)}function ve(t,e,n,a){for(var r=n-1,i=t.length;++r<i;)if(a(t[r],e))return r;return-1}function xe(t){return t!=t}function _e(t,e){var n=null==t?0:t.length;return n?Se(t,e)/n:NaN}function Te(t){return function(e){return null==e?void 0:e[t]}}function we(t){return function(e){return null==t?void 0:t[e]}}function Oe(t,e,n,a,r){return r(t,(function(t,r,i){n=a?(a=!1,t):e(n,t,r,i)})),n}function Se(t,e){for(var n,a=-1,r=t.length;++a<r;){var i=e(t[a]);void 0!==i&&(n=void 0===n?i:n+i)}return n}function Ie(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}function Ne(t){return function(e){return t(e)}}function Ce(t,e){return de(e,(function(e){return t[e]}))}function Re(t,e){return t.has(e)}function Ae(t,e){for(var n=-1,a=t.length;++n<a&&ye(e,t[n],0)>-1;);return n}function ke(t,e){for(var n=t.length;n--&&ye(e,t[n],0)>-1;);return n}function Ee(t,e){for(var n=t.length,a=0;n--;)t[n]===e&&++a;return a}var Le=we({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),De=we({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function Pe(t){return"\\"+Ft[t]}function Me(t){return Lt.test(t)}function qe(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}function je(t,e){return function(n){return t(e(n))}}function Fe(t,e){for(var n=-1,a=t.length,r=0,s=[];++n<a;){var u=t[n];u!==e&&u!==i||(t[n]=i,s[r++]=n)}return s}function Ve(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}function Ge(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=[t,t]})),n}function Be(t){return Me(t)?function(t){for(var e=kt.lastIndex=0;kt.test(t);)++e;return e}(t):pe(t)}function ze(t){return Me(t)?function(t){return t.match(kt)||[]}(t):function(t){return t.split("")}(t)}var Ye=we({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),He=function t(e){var n,a=(e=null==e?Yt:He.defaults(Yt.Object(),e,He.pick(Yt,Pt))).Array,ct=e.Date,ft=e.Error,ht=e.Function,gt=e.Math,pt=e.Object,bt=e.RegExp,mt=e.String,yt=e.TypeError,vt=a.prototype,xt=pt.prototype,_t=e["__core-js_shared__"],Tt=ht.prototype.toString,wt=xt.hasOwnProperty,Ot=0,St=(n=/[^.]+$/.exec(_t&&_t.keys&&_t.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",It=xt.toString,Nt=Tt.call(pt),Ct=Yt._,kt=bt("^"+Tt.call(wt).replace(H,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Lt=Wt?e.Buffer:void 0,Ft=e.Symbol,Bt=e.Uint8Array,zt=Lt?Lt.allocUnsafe:void 0,Ht=je(pt.getPrototypeOf,pt),Ut=pt.create,Kt=xt.propertyIsEnumerable,$t=vt.splice,pe=Ft?Ft.isConcatSpreadable:void 0,we=Ft?Ft.iterator:void 0,Ue=Ft?Ft.toStringTag:void 0,We=function(){try{var t=Zr(pt,"defineProperty");return t({},"",{}),t}catch(e){}}(),Ke=e.clearTimeout!==Yt.clearTimeout&&e.clearTimeout,$e=ct&&ct.now!==Yt.Date.now&&ct.now,Je=e.setTimeout!==Yt.setTimeout&&e.setTimeout,Ze=gt.ceil,Qe=gt.floor,Xe=pt.getOwnPropertySymbols,tn=Lt?Lt.isBuffer:void 0,en=e.isFinite,nn=vt.join,an=je(pt.keys,pt),rn=gt.max,sn=gt.min,un=ct.now,on=e.parseInt,ln=gt.random,dn=vt.reverse,cn=Zr(e,"DataView"),fn=Zr(e,"Map"),hn=Zr(e,"Promise"),gn=Zr(e,"Set"),pn=Zr(e,"WeakMap"),bn=Zr(pt,"create"),mn=pn&&new pn,yn={},vn=Ii(cn),xn=Ii(fn),_n=Ii(hn),Tn=Ii(gn),wn=Ii(pn),On=Ft?Ft.prototype:void 0,Sn=On?On.valueOf:void 0,In=On?On.toString:void 0;function Nn(t){if(zs(t)&&!Es(t)&&!(t instanceof kn)){if(t instanceof An)return t;if(wt.call(t,"__wrapped__"))return Ni(t)}return new An(t)}var Cn=function(){function t(){}return function(e){if(!Bs(e))return{};if(Ut)return Ut(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Rn(){}function An(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function kn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function En(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Ln(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Dn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Pn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Dn;++e<n;)this.add(t[e])}function Mn(t){var e=this.__data__=new Ln(t);this.size=e.size}function qn(t,e){var n=Es(t),a=!n&&ks(t),r=!n&&!a&&Ms(t),i=!n&&!a&&!r&&Zs(t),s=n||a||r||i,u=s?Ie(t.length,mt):[],o=u.length;for(var l in t)!e&&!wt.call(t,l)||s&&("length"==l||r&&("offset"==l||"parent"==l)||i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||ri(l,o))||u.push(l);return u}function jn(t){var e=t.length;return e?t[Da(0,e-1)]:void 0}function Fn(t,e){return _i(pr(t),Kn(e,0,t.length))}function Vn(t){return _i(pr(t))}function Gn(t,e,n){(void 0!==n&&!Cs(t[e],n)||void 0===n&&!(e in t))&&Un(t,e,n)}function Bn(t,e,n){var a=t[e];wt.call(t,e)&&Cs(a,n)&&(void 0!==n||e in t)||Un(t,e,n)}function zn(t,e){for(var n=t.length;n--;)if(Cs(t[n][0],e))return n;return-1}function Yn(t,e,n,a){return Xn(t,(function(t,r,i){e(a,t,n(t),i)})),a}function Hn(t,e){return t&&br(e,vu(e),t)}function Un(t,e,n){"__proto__"==e&&We?We(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Wn(t,e){for(var n=-1,r=e.length,i=a(r),s=null==t;++n<r;)i[n]=s?void 0:gu(t,e[n]);return i}function Kn(t,e,n){return t==t&&(void 0!==n&&(t=t<=n?t:n),void 0!==e&&(t=t>=e?t:e)),t}function $n(t,e,n,a,r,i){var s,o=1&e,c=2&e,_=4&e;if(n&&(s=r?n(t,a,r,i):n(t)),void 0!==s)return s;if(!Bs(t))return t;var E=Es(t);if(E){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&wt.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!o)return pr(t,s)}else{var L=ti(t),D=L==f||L==h;if(Ms(t))return lr(t,o);if(L==b||L==u||D&&!r){if(s=c||D?{}:ni(t),!o)return c?function(t,e){return br(t,Xr(t),e)}(t,function(t,e){return t&&br(e,xu(e),t)}(s,t)):function(t,e){return br(t,Qr(t),e)}(t,Hn(s,t))}else{if(!jt[L])return r?t:{};s=function(t,e,n){var a=t.constructor;switch(e){case T:return dr(t);case l:case d:return new a(+t);case w:return function(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case O:case S:case I:case N:case C:case R:case"[object Uint8ClampedArray]":case A:case k:return cr(t,n);case g:return new a;case p:case v:return new a(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new a;case x:return Sn?pt(Sn.call(t)):{}}}(t,L,o)}}i||(i=new Mn);var P=i.get(t);if(P)return P;i.set(t,s),Ks(t)?t.forEach((function(a){s.add($n(a,e,n,a,t,i))})):Ys(t)&&t.forEach((function(a,r){s.set(r,$n(a,e,n,r,t,i))}));var M=E?void 0:(_?c?Yr:zr:c?xu:vu)(t);return re(M||t,(function(a,r){M&&(a=t[r=a]),Bn(s,r,$n(a,e,n,r,t,i))})),s}function Jn(t,e,n){var a=n.length;if(null==t)return!a;for(t=pt(t);a--;){var r=n[a],i=t[r];if(void 0===i&&!(r in t)||!(0,e[r])(i))return!1}return!0}function Zn(t,e,n){if("function"!=typeof t)throw new yt(r);return mi((function(){t.apply(void 0,n)}),e)}function Qn(t,e,n,a){var r=-1,i=oe,s=!0,u=t.length,o=[],l=e.length;if(!u)return o;n&&(e=de(e,Ne(n))),a?(i=le,s=!1):e.length>=200&&(i=Re,s=!1,e=new Pn(e));t:for(;++r<u;){var d=t[r],c=null==n?d:n(d);if(d=a||0!==d?d:0,s&&c==c){for(var f=l;f--;)if(e[f]===c)continue t;o.push(d)}else i(e,c,a)||o.push(d)}return o}Nn.templateSettings={escape:F,evaluate:V,interpolate:G,variable:"",imports:{_:Nn}},(Nn.prototype=Rn.prototype).constructor=Nn,(An.prototype=Cn(Rn.prototype)).constructor=An,(kn.prototype=Cn(Rn.prototype)).constructor=kn,En.prototype.clear=function(){this.__data__=bn?bn(null):{},this.size=0},En.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},En.prototype.get=function(t){var e=this.__data__;if(bn){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return wt.call(e,t)?e[t]:void 0},En.prototype.has=function(t){var e=this.__data__;return bn?void 0!==e[t]:wt.call(e,t)},En.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=bn&&void 0===e?"__lodash_hash_undefined__":e,this},Ln.prototype.clear=function(){this.__data__=[],this.size=0},Ln.prototype.delete=function(t){var e=this.__data__,n=zn(e,t);return!(n<0||(n==e.length-1?e.pop():$t.call(e,n,1),--this.size,0))},Ln.prototype.get=function(t){var e=this.__data__,n=zn(e,t);return n<0?void 0:e[n][1]},Ln.prototype.has=function(t){return zn(this.__data__,t)>-1},Ln.prototype.set=function(t,e){var n=this.__data__,a=zn(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new En,map:new(fn||Ln),string:new En}},Dn.prototype.delete=function(t){var e=$r(this,t).delete(t);return this.size-=e?1:0,e},Dn.prototype.get=function(t){return $r(this,t).get(t)},Dn.prototype.has=function(t){return $r(this,t).has(t)},Dn.prototype.set=function(t,e){var n=$r(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this},Pn.prototype.add=Pn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.clear=function(){this.__data__=new Ln,this.size=0},Mn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Mn.prototype.get=function(t){return this.__data__.get(t)},Mn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Ln){var a=n.__data__;if(!fn||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new Dn(a)}return n.set(t,e),this.size=n.size,this};var Xn=vr(ua),ta=vr(oa,!0);function ea(t,e){var n=!0;return Xn(t,(function(t,a,r){return n=!!e(t,a,r)})),n}function na(t,e,n){for(var a=-1,r=t.length;++a<r;){var i=t[a],s=e(i);if(null!=s&&(void 0===u?s==s&&!Js(s):n(s,u)))var u=s,o=i}return o}function aa(t,e){var n=[];return Xn(t,(function(t,a,r){e(t,a,r)&&n.push(t)})),n}function ra(t,e,n,a,r){var i=-1,s=t.length;for(n||(n=ai),r||(r=[]);++i<s;){var u=t[i];e>0&&n(u)?e>1?ra(u,e-1,n,a,r):ce(r,u):a||(r[r.length]=u)}return r}var ia=xr(),sa=xr(!0);function ua(t,e){return t&&ia(t,e,vu)}function oa(t,e){return t&&sa(t,e,vu)}function la(t,e){return ue(e,(function(e){return Fs(t[e])}))}function da(t,e){for(var n=0,a=(e=ir(e,t)).length;null!=t&&n<a;)t=t[Si(e[n++])];return n&&n==a?t:void 0}function ca(t,e,n){var a=e(t);return Es(t)?a:ce(a,n(t))}function fa(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Ue&&Ue in pt(t)?function(t){var e=wt.call(t,Ue),n=t[Ue];try{t[Ue]=void 0;var a=!0}catch(i){}var r=It.call(t);return a&&(e?t[Ue]=n:delete t[Ue]),r}(t):function(t){return It.call(t)}(t)}function ha(t,e){return t>e}function ga(t,e){return null!=t&&wt.call(t,e)}function pa(t,e){return null!=t&&e in pt(t)}function ba(t,e,n){for(var r=n?le:oe,i=t[0].length,s=t.length,u=s,o=a(s),l=1/0,d=[];u--;){var c=t[u];u&&e&&(c=de(c,Ne(e))),l=sn(c.length,l),o[u]=!n&&(e||i>=120&&c.length>=120)?new Pn(u&&c):void 0}c=t[0];var f=-1,h=o[0];t:for(;++f<i&&d.length<l;){var g=c[f],p=e?e(g):g;if(g=n||0!==g?g:0,!(h?Re(h,p):r(d,p,n))){for(u=s;--u;){var b=o[u];if(!(b?Re(b,p):r(t[u],p,n)))continue t}h&&h.push(p),d.push(g)}}return d}function ma(t,e,n){var a=null==(t=hi(t,e=ir(e,t)))?t:t[Si(ji(e))];return null==a?void 0:ne(a,t,n)}function ya(t){return zs(t)&&fa(t)==u}function va(t,e,n,a,r){return t===e||(null==t||null==e||!zs(t)&&!zs(e)?t!=t&&e!=e:function(t,e,n,a,r,i){var s=Es(t),f=Es(e),h=s?o:ti(t),_=f?o:ti(e),O=(h=h==u?b:h)==b,S=(_=_==u?b:_)==b,I=h==_;if(I&&Ms(t)){if(!Ms(e))return!1;s=!0,O=!1}if(I&&!O)return i||(i=new Mn),s||Zs(t)?Gr(t,e,n,a,r,i):function(t,e,n,a,r,i,s){switch(n){case w:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case T:return!(t.byteLength!=e.byteLength||!i(new Bt(t),new Bt(e)));case l:case d:case p:return Cs(+t,+e);case c:return t.name==e.name&&t.message==e.message;case m:case v:return t==e+"";case g:var u=qe;case y:if(u||(u=Ve),t.size!=e.size&&!(1&a))return!1;var o=s.get(t);if(o)return o==e;a|=2,s.set(t,e);var f=Gr(u(t),u(e),a,r,i,s);return s.delete(t),f;case x:if(Sn)return Sn.call(t)==Sn.call(e)}return!1}(t,e,h,n,a,r,i);if(!(1&n)){var N=O&&wt.call(t,"__wrapped__"),C=S&&wt.call(e,"__wrapped__");if(N||C){var R=N?t.value():t,A=C?e.value():e;return i||(i=new Mn),r(R,A,n,a,i)}}return!!I&&(i||(i=new Mn),function(t,e,n,a,r,i){var s=1&n,u=zr(t),o=u.length;if(o!=zr(e).length&&!s)return!1;for(var l=o;l--;){var d=u[l];if(!(s?d in e:wt.call(e,d)))return!1}var c=i.get(t),f=i.get(e);if(c&&f)return c==e&&f==t;var h=!0;i.set(t,e),i.set(e,t);for(var g=s;++l<o;){var p=t[d=u[l]],b=e[d];if(a)var m=s?a(b,p,d,e,t,i):a(p,b,d,t,e,i);if(!(void 0===m?p===b||r(p,b,n,a,i):m)){h=!1;break}g||(g="constructor"==d)}if(h&&!g){var y=t.constructor,v=e.constructor;y==v||!("constructor"in t)||!("constructor"in e)||"function"==typeof y&&y instanceof y&&"function"==typeof v&&v instanceof v||(h=!1)}return i.delete(t),i.delete(e),h}(t,e,n,a,r,i))}(t,e,n,a,va,r))}function xa(t,e,n,a){var r=n.length,i=r,s=!a;if(null==t)return!i;for(t=pt(t);r--;){var u=n[r];if(s&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++r<i;){var o=(u=n[r])[0],l=t[o],d=u[1];if(s&&u[2]){if(void 0===l&&!(o in t))return!1}else{var c=new Mn;if(a)var f=a(l,d,o,t,e,c);if(!(void 0===f?va(d,l,3,a,c):f))return!1}}return!0}function _a(t){return!(!Bs(t)||(e=t,St&&St in e))&&(Fs(t)?kt:it).test(Ii(t));var e}function Ta(t){return"function"==typeof t?t:null==t?Hu:"object"==typeof t?Es(t)?Na(t[0],t[1]):Ia(t):to(t)}function wa(t){if(!li(t))return an(t);var e=[];for(var n in pt(t))wt.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Oa(t,e){return t<e}function Sa(t,e){var n=-1,r=Ds(t)?a(t.length):[];return Xn(t,(function(t,a,i){r[++n]=e(t,a,i)})),r}function Ia(t){var e=Jr(t);return 1==e.length&&e[0][2]?ci(e[0][0],e[0][1]):function(n){return n===t||xa(n,t,e)}}function Na(t,e){return si(t)&&di(e)?ci(Si(t),e):function(n){var a=gu(n,t);return void 0===a&&a===e?pu(n,t):va(e,a,3)}}function Ca(t,e,n,a,r){t!==e&&ia(e,(function(i,s){if(r||(r=new Mn),Bs(i))!function(t,e,n,a,r,i,s){var u=pi(t,n),o=pi(e,n),l=s.get(o);if(l)Gn(t,n,l);else{var d=i?i(u,o,n+"",t,e,s):void 0,c=void 0===d;if(c){var f=Es(o),h=!f&&Ms(o),g=!f&&!h&&Zs(o);d=o,f||h||g?Es(u)?d=u:Ps(u)?d=pr(u):h?(c=!1,d=lr(o,!0)):g?(c=!1,d=cr(o,!0)):d=[]:Us(o)||ks(o)?(d=u,ks(u)?d=iu(u):Bs(u)&&!Fs(u)||(d=ni(o))):c=!1}c&&(s.set(o,d),r(d,o,a,i,s),s.delete(o)),Gn(t,n,d)}}(t,e,s,n,Ca,a,r);else{var u=a?a(pi(t,s),i,s+"",t,e,r):void 0;void 0===u&&(u=i),Gn(t,s,u)}}),xu)}function Ra(t,e){var n=t.length;if(n)return ri(e+=e<0?n:0,n)?t[e]:void 0}function Aa(t,e,n){e=e.length?de(e,(function(t){return Es(t)?function(e){return da(e,1===t.length?t[0]:t)}:t})):[Hu];var a=-1;return e=de(e,Ne(Kr())),function(t,e){var a=t.length;for(t.sort((function(t,e){return function(t,e,n){for(var a=-1,r=t.criteria,i=e.criteria,s=r.length,u=n.length;++a<s;){var o=fr(r[a],i[a]);if(o)return a>=u?o:o*("desc"==n[a]?-1:1)}return t.index-e.index}(t,e,n)}));a--;)t[a]=t[a].value;return t}(Sa(t,(function(t,n,r){return{criteria:de(e,(function(e){return e(t)})),index:++a,value:t}})))}function ka(t,e,n){for(var a=-1,r=e.length,i={};++a<r;){var s=e[a],u=da(t,s);n(u,s)&&Fa(i,ir(s,t),u)}return i}function Ea(t,e,n,a){var r=a?ve:ye,i=-1,s=e.length,u=t;for(t===e&&(e=pr(e)),n&&(u=de(t,Ne(n)));++i<s;)for(var o=0,l=e[i],d=n?n(l):l;(o=r(u,d,o,a))>-1;)u!==t&&$t.call(u,o,1),$t.call(t,o,1);return t}function La(t,e){for(var n=t?e.length:0,a=n-1;n--;){var r=e[n];if(n==a||r!==i){var i=r;ri(r)?$t.call(t,r,1):Za(t,r)}}return t}function Da(t,e){return t+Qe(ln()*(e-t+1))}function Pa(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=Qe(e/2))&&(t+=t)}while(e);return n}function Ma(t,e){return yi(fi(t,e,Hu),t+"")}function qa(t){return jn(Cu(t))}function ja(t,e){var n=Cu(t);return _i(n,Kn(e,0,n.length))}function Fa(t,e,n,a){if(!Bs(t))return t;for(var r=-1,i=(e=ir(e,t)).length,s=i-1,u=t;null!=u&&++r<i;){var o=Si(e[r]),l=n;if("__proto__"===o||"constructor"===o||"prototype"===o)return t;if(r!=s){var d=u[o];void 0===(l=a?a(d,o,u):void 0)&&(l=Bs(d)?d:ri(e[r+1])?[]:{})}Bn(u,o,l),u=u[o]}return t}var Va=mn?function(t,e){return mn.set(t,e),t}:Hu,Ga=We?function(t,e){return We(t,"toString",{configurable:!0,enumerable:!1,value:Bu(e),writable:!0})}:Hu;function Ba(t){return _i(Cu(t))}function za(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var s=a(i);++r<i;)s[r]=t[r+e];return s}function Ya(t,e){var n;return Xn(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}function Ha(t,e,n){var a=0,r=null==t?a:t.length;if("number"==typeof e&&e==e&&r<=2147483647){for(;a<r;){var i=a+r>>>1,s=t[i];null!==s&&!Js(s)&&(n?s<=e:s<e)?a=i+1:r=i}return r}return Ua(t,e,Hu,n)}function Ua(t,e,n,a){var r=0,i=null==t?0:t.length;if(0===i)return 0;for(var s=(e=n(e))!=e,u=null===e,o=Js(e),l=void 0===e;r<i;){var d=Qe((r+i)/2),c=n(t[d]),f=void 0!==c,h=null===c,g=c==c,p=Js(c);if(s)var b=a||g;else b=l?g&&(a||f):u?g&&f&&(a||!h):o?g&&f&&!h&&(a||!p):!h&&!p&&(a?c<=e:c<e);b?r=d+1:i=d}return sn(i,4294967294)}function Wa(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var s=t[n],u=e?e(s):s;if(!n||!Cs(u,o)){var o=u;i[r++]=0===s?0:s}}return i}function Ka(t){return"number"==typeof t?t:Js(t)?NaN:+t}function $a(t){if("string"==typeof t)return t;if(Es(t))return de(t,$a)+"";if(Js(t))return In?In.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ja(t,e,n){var a=-1,r=oe,i=t.length,s=!0,u=[],o=u;if(n)s=!1,r=le;else if(i>=200){var l=e?null:Pr(t);if(l)return Ve(l);s=!1,r=Re,o=new Pn}else o=e?[]:u;t:for(;++a<i;){var d=t[a],c=e?e(d):d;if(d=n||0!==d?d:0,s&&c==c){for(var f=o.length;f--;)if(o[f]===c)continue t;e&&o.push(c),u.push(d)}else r(o,c,n)||(o!==u&&o.push(c),u.push(d))}return u}function Za(t,e){return null==(t=hi(t,e=ir(e,t)))||delete t[Si(ji(e))]}function Qa(t,e,n,a){return Fa(t,e,n(da(t,e)),a)}function Xa(t,e,n,a){for(var r=t.length,i=a?r:-1;(a?i--:++i<r)&&e(t[i],i,t););return n?za(t,a?0:i,a?i+1:r):za(t,a?i+1:0,a?r:i)}function tr(t,e){var n=t;return n instanceof kn&&(n=n.value()),fe(e,(function(t,e){return e.func.apply(e.thisArg,ce([t],e.args))}),n)}function er(t,e,n){var r=t.length;if(r<2)return r?Ja(t[0]):[];for(var i=-1,s=a(r);++i<r;)for(var u=t[i],o=-1;++o<r;)o!=i&&(s[i]=Qn(s[i]||u,t[o],e,n));return Ja(ra(s,1),e,n)}function nr(t,e,n){for(var a=-1,r=t.length,i=e.length,s={};++a<r;)n(s,t[a],a<i?e[a]:void 0);return s}function ar(t){return Ps(t)?t:[]}function rr(t){return"function"==typeof t?t:Hu}function ir(t,e){return Es(t)?t:si(t,e)?[t]:Oi(su(t))}var sr=Ma;function ur(t,e,n){var a=t.length;return n=void 0===n?a:n,!e&&n>=a?t:za(t,e,n)}var or=Ke||function(t){return Yt.clearTimeout(t)};function lr(t,e){if(e)return t.slice();var n=t.length,a=zt?zt(n):new t.constructor(n);return t.copy(a),a}function dr(t){var e=new t.constructor(t.byteLength);return new Bt(e).set(new Bt(t)),e}function cr(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function fr(t,e){if(t!==e){var n=void 0!==t,a=null===t,r=t==t,i=Js(t),s=void 0!==e,u=null===e,o=e==e,l=Js(e);if(!u&&!l&&!i&&t>e||i&&s&&o&&!u&&!l||a&&s&&o||!n&&o||!r)return 1;if(!a&&!i&&!l&&t<e||l&&n&&r&&!a&&!i||u&&n&&r||!s&&r||!o)return-1}return 0}function hr(t,e,n,r){for(var i=-1,s=t.length,u=n.length,o=-1,l=e.length,d=rn(s-u,0),c=a(l+d),f=!r;++o<l;)c[o]=e[o];for(;++i<u;)(f||i<s)&&(c[n[i]]=t[i]);for(;d--;)c[o++]=t[i++];return c}function gr(t,e,n,r){for(var i=-1,s=t.length,u=-1,o=n.length,l=-1,d=e.length,c=rn(s-o,0),f=a(c+d),h=!r;++i<c;)f[i]=t[i];for(var g=i;++l<d;)f[g+l]=e[l];for(;++u<o;)(h||i<s)&&(f[g+n[u]]=t[i++]);return f}function pr(t,e){var n=-1,r=t.length;for(e||(e=a(r));++n<r;)e[n]=t[n];return e}function br(t,e,n,a){var r=!n;n||(n={});for(var i=-1,s=e.length;++i<s;){var u=e[i],o=a?a(n[u],t[u],u,n,t):void 0;void 0===o&&(o=t[u]),r?Un(n,u,o):Bn(n,u,o)}return n}function mr(t,e){return function(n,a){var r=Es(n)?ae:Yn,i=e?e():{};return r(n,t,Kr(a,2),i)}}function yr(t){return Ma((function(e,n){var a=-1,r=n.length,i=r>1?n[r-1]:void 0,s=r>2?n[2]:void 0;for(i=t.length>3&&"function"==typeof i?(r--,i):void 0,s&&ii(n[0],n[1],s)&&(i=r<3?void 0:i,r=1),e=pt(e);++a<r;){var u=n[a];u&&t(e,u,a,i)}return e}))}function vr(t,e){return function(n,a){if(null==n)return n;if(!Ds(n))return t(n,a);for(var r=n.length,i=e?r:-1,s=pt(n);(e?i--:++i<r)&&!1!==a(s[i],i,s););return n}}function xr(t){return function(e,n,a){for(var r=-1,i=pt(e),s=a(e),u=s.length;u--;){var o=s[t?u:++r];if(!1===n(i[o],o,i))break}return e}}function _r(t){return function(e){var n=Me(e=su(e))?ze(e):void 0,a=n?n[0]:e.charAt(0),r=n?ur(n,1).join(""):e.slice(1);return a[t]()+r}}function Tr(t){return function(e){return fe(Fu(ku(e).replace(Rt,"")),t,"")}}function wr(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=Cn(t.prototype),a=t.apply(n,e);return Bs(a)?a:n}}function Or(t){return function(e,n,a){var r=pt(e);if(!Ds(e)){var i=Kr(n,3);e=vu(e),n=function(t){return i(r[t],t,r)}}var s=t(e,n,a);return s>-1?r[i?e[s]:s]:void 0}}function Sr(t){return Br((function(e){var n=e.length,a=n,i=An.prototype.thru;for(t&&e.reverse();a--;){var s=e[a];if("function"!=typeof s)throw new yt(r);if(i&&!u&&"wrapper"==Ur(s))var u=new An([],!0)}for(a=u?a:n;++a<n;){var o=Ur(s=e[a]),l="wrapper"==o?Hr(s):void 0;u=l&&ui(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?u[Ur(l[0])].apply(u,l[3]):1==s.length&&ui(s)?u[o]():u.thru(s)}return function(){var t=arguments,a=t[0];if(u&&1==t.length&&Es(a))return u.plant(a).value();for(var r=0,i=n?e[r].apply(this,t):a;++r<n;)i=e[r].call(this,i);return i}}))}function Ir(t,e,n,r,i,s,u,o,l,d){var c=128&e,f=1&e,h=2&e,g=24&e,p=512&e,b=h?void 0:wr(t);return function m(){for(var y=arguments.length,v=a(y),x=y;x--;)v[x]=arguments[x];if(g)var _=Wr(m),T=Ee(v,_);if(r&&(v=hr(v,r,i,g)),s&&(v=gr(v,s,u,g)),y-=T,g&&y<d){var w=Fe(v,_);return Lr(t,e,Ir,m.placeholder,n,v,w,o,l,d-y)}var O=f?n:this,S=h?O[t]:t;return y=v.length,o?v=gi(v,o):p&&y>1&&v.reverse(),c&&l<y&&(v.length=l),this&&this!==Yt&&this instanceof m&&(S=b||wr(S)),S.apply(O,v)}}function Nr(t,e){return function(n,a){return function(t,e,n,a){return ua(t,(function(t,r,i){e(a,n(t),r,i)})),a}(n,t,e(a),{})}}function Cr(t,e){return function(n,a){var r;if(void 0===n&&void 0===a)return e;if(void 0!==n&&(r=n),void 0!==a){if(void 0===r)return a;"string"==typeof n||"string"==typeof a?(n=$a(n),a=$a(a)):(n=Ka(n),a=Ka(a)),r=t(n,a)}return r}}function Rr(t){return Br((function(e){return e=de(e,Ne(Kr())),Ma((function(n){var a=this;return t(e,(function(t){return ne(t,a,n)}))}))}))}function Ar(t,e){var n=(e=void 0===e?" ":$a(e)).length;if(n<2)return n?Pa(e,t):e;var a=Pa(e,Ze(t/Be(e)));return Me(e)?ur(ze(a),0,t).join(""):a.slice(0,t)}function kr(t){return function(e,n,r){return r&&"number"!=typeof r&&ii(e,n,r)&&(n=r=void 0),e=eu(e),void 0===n?(n=e,e=0):n=eu(n),function(t,e,n,r){for(var i=-1,s=rn(Ze((e-t)/(n||1)),0),u=a(s);s--;)u[r?s:++i]=t,t+=n;return u}(e,n,r=void 0===r?e<n?1:-1:eu(r),t)}}function Er(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=ru(e),n=ru(n)),t(e,n)}}function Lr(t,e,n,a,r,i,s,u,o,l){var d=8&e;e|=d?32:64,4&(e&=~(d?64:32))||(e&=-4);var c=[t,e,r,d?i:void 0,d?s:void 0,d?void 0:i,d?void 0:s,u,o,l],f=n.apply(void 0,c);return ui(t)&&bi(f,c),f.placeholder=a,vi(f,t,e)}function Dr(t){var e=gt[t];return function(t,n){if(t=ru(t),(n=null==n?0:sn(nu(n),292))&&en(t)){var a=(su(t)+"e").split("e");return+((a=(su(e(a[0]+"e"+(+a[1]+n)))+"e").split("e"))[0]+"e"+(+a[1]-n))}return e(t)}}var Pr=gn&&1/Ve(new gn([,-0]))[1]==1/0?function(t){return new gn(t)}:Ju;function Mr(t){return function(e){var n=ti(e);return n==g?qe(e):n==y?Ge(e):function(t,e){return de(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function qr(t,e,n,s,u,o,l,d){var c=2&e;if(!c&&"function"!=typeof t)throw new yt(r);var f=s?s.length:0;if(f||(e&=-97,s=u=void 0),l=void 0===l?l:rn(nu(l),0),d=void 0===d?d:nu(d),f-=u?u.length:0,64&e){var h=s,g=u;s=u=void 0}var p=c?void 0:Hr(t),b=[t,e,n,s,u,h,g,o,l,d];if(p&&function(t,e){var n=t[1],a=e[1],r=n|a;if(!(r<131||128==a&&8==n||128==a&&256==n&&t[7].length<=e[8]||384==a&&e[7].length<=e[8]&&8==n))return t;1&a&&(t[2]=e[2],r|=1&n?0:4);var s=e[3];if(s){var u=t[3];t[3]=u?hr(u,s,e[4]):s,t[4]=u?Fe(t[3],i):e[4]}(s=e[5])&&(t[5]=(u=t[5])?gr(u,s,e[6]):s,t[6]=u?Fe(t[5],i):e[6]),(s=e[7])&&(t[7]=s),128&a&&(t[8]=null==t[8]?e[8]:sn(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=r}(b,p),t=b[0],e=b[1],n=b[2],s=b[3],u=b[4],!(d=b[9]=void 0===b[9]?c?0:t.length:rn(b[9]-f,0))&&24&e&&(e&=-25),e&&1!=e)m=8==e||16==e?function(t,e,n){var r=wr(t);return function i(){for(var s=arguments.length,u=a(s),o=s,l=Wr(i);o--;)u[o]=arguments[o];var d=s<3&&u[0]!==l&&u[s-1]!==l?[]:Fe(u,l);if((s-=d.length)<n)return Lr(t,e,Ir,i.placeholder,void 0,u,d,void 0,void 0,n-s);var c=this&&this!==Yt&&this instanceof i?r:t;return ne(c,this,u)}}(t,e,d):32!=e&&33!=e||u.length?Ir.apply(void 0,b):function(t,e,n,r){var i=1&e,s=wr(t);return function e(){for(var u=-1,o=arguments.length,l=-1,d=r.length,c=a(d+o),f=this&&this!==Yt&&this instanceof e?s:t;++l<d;)c[l]=r[l];for(;o--;)c[l++]=arguments[++u];return ne(f,i?n:this,c)}}(t,e,n,s);else var m=function(t,e,n){var a=1&e,r=wr(t);return function e(){var i=this&&this!==Yt&&this instanceof e?r:t;return i.apply(a?n:this,arguments)}}(t,e,n);return vi((p?Va:bi)(m,b),t,e)}function jr(t,e,n,a){return void 0===t||Cs(t,xt[n])&&!wt.call(a,n)?e:t}function Fr(t,e,n,a,r,i){return Bs(t)&&Bs(e)&&(i.set(e,t),Ca(t,e,void 0,Fr,i),i.delete(e)),t}function Vr(t){return Us(t)?void 0:t}function Gr(t,e,n,a,r,i){var s=1&n,u=t.length,o=e.length;if(u!=o&&!(s&&o>u))return!1;var l=i.get(t),d=i.get(e);if(l&&d)return l==e&&d==t;var c=-1,f=!0,h=2&n?new Pn:void 0;for(i.set(t,e),i.set(e,t);++c<u;){var g=t[c],p=e[c];if(a)var b=s?a(p,g,c,e,t,i):a(g,p,c,t,e,i);if(void 0!==b){if(b)continue;f=!1;break}if(h){if(!ge(e,(function(t,e){if(!Re(h,e)&&(g===t||r(g,t,n,a,i)))return h.push(e)}))){f=!1;break}}else if(g!==p&&!r(g,p,n,a,i)){f=!1;break}}return i.delete(t),i.delete(e),f}function Br(t){return yi(fi(t,void 0,Li),t+"")}function zr(t){return ca(t,vu,Qr)}function Yr(t){return ca(t,xu,Xr)}var Hr=mn?function(t){return mn.get(t)}:Ju;function Ur(t){for(var e=t.name+"",n=yn[e],a=wt.call(yn,e)?n.length:0;a--;){var r=n[a],i=r.func;if(null==i||i==t)return r.name}return e}function Wr(t){return(wt.call(Nn,"placeholder")?Nn:t).placeholder}function Kr(){var t=Nn.iteratee||Uu;return t=t===Uu?Ta:t,arguments.length?t(arguments[0],arguments[1]):t}function $r(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function Jr(t){for(var e=vu(t),n=e.length;n--;){var a=e[n],r=t[a];e[n]=[a,r,di(r)]}return e}function Zr(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return _a(n)?n:void 0}var Qr=Xe?function(t){return null==t?[]:(t=pt(t),ue(Xe(t),(function(e){return Kt.call(t,e)})))}:ao,Xr=Xe?function(t){for(var e=[];t;)ce(e,Qr(t)),t=Ht(t);return e}:ao,ti=fa;function ei(t,e,n){for(var a=-1,r=(e=ir(e,t)).length,i=!1;++a<r;){var s=Si(e[a]);if(!(i=null!=t&&n(t,s)))break;t=t[s]}return i||++a!=r?i:!!(r=null==t?0:t.length)&&Gs(r)&&ri(s,r)&&(Es(t)||ks(t))}function ni(t){return"function"!=typeof t.constructor||li(t)?{}:Cn(Ht(t))}function ai(t){return Es(t)||ks(t)||!!(pe&&t&&t[pe])}function ri(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&ut.test(t))&&t>-1&&t%1==0&&t<e}function ii(t,e,n){if(!Bs(n))return!1;var a=typeof e;return!!("number"==a?Ds(n)&&ri(e,n.length):"string"==a&&e in n)&&Cs(n[e],t)}function si(t,e){if(Es(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Js(t))||z.test(t)||!B.test(t)||null!=e&&t in pt(e)}function ui(t){var e=Ur(t),n=Nn[e];if("function"!=typeof n||!(e in kn.prototype))return!1;if(t===n)return!0;var a=Hr(n);return!!a&&t===a[0]}(cn&&ti(new cn(new ArrayBuffer(1)))!=w||fn&&ti(new fn)!=g||hn&&"[object Promise]"!=ti(hn.resolve())||gn&&ti(new gn)!=y||pn&&ti(new pn)!=_)&&(ti=function(t){var e=fa(t),n=e==b?t.constructor:void 0,a=n?Ii(n):"";if(a)switch(a){case vn:return w;case xn:return g;case _n:return"[object Promise]";case Tn:return y;case wn:return _}return e});var oi=_t?Fs:ro;function li(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||xt)}function di(t){return t==t&&!Bs(t)}function ci(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in pt(n))}}function fi(t,e,n){return e=rn(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,s=rn(r.length-e,0),u=a(s);++i<s;)u[i]=r[e+i];i=-1;for(var o=a(e+1);++i<e;)o[i]=r[i];return o[e]=n(u),ne(t,this,o)}}function hi(t,e){return e.length<2?t:da(t,za(e,0,-1))}function gi(t,e){for(var n=t.length,a=sn(e.length,n),r=pr(t);a--;){var i=e[a];t[a]=ri(i,n)?r[i]:void 0}return t}function pi(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var bi=xi(Va),mi=Je||function(t,e){return Yt.setTimeout(t,e)},yi=xi(Ga);function vi(t,e,n){var a=e+"";return yi(t,function(t,e){var n=e.length;if(!n)return t;var a=n-1;return e[a]=(n>1?"& ":"")+e[a],e=e.join(n>2?", ":" "),t.replace(J,"{\n/* [wrapped with "+e+"] */\n")}(a,function(t,e){return re(s,(function(n){var a="_."+n[0];e&n[1]&&!oe(t,a)&&t.push(a)})),t.sort()}(function(t){var e=t.match(Z);return e?e[1].split(Q):[]}(a),n)))}function xi(t){var e=0,n=0;return function(){var a=un(),r=16-(a-n);if(n=a,r>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function _i(t,e){var n=-1,a=t.length,r=a-1;for(e=void 0===e?a:e;++n<e;){var i=Da(n,r),s=t[i];t[i]=t[n],t[n]=s}return t.length=e,t}var Ti,wi,Oi=(Ti=Ts((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Y,(function(t,n,a,r){e.push(a?r.replace(tt,"$1"):n||t)})),e}),(function(t){return 500===wi.size&&wi.clear(),t})),wi=Ti.cache,Ti);function Si(t){if("string"==typeof t||Js(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ii(t){if(null!=t){try{return Tt.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function Ni(t){if(t instanceof kn)return t.clone();var e=new An(t.__wrapped__,t.__chain__);return e.__actions__=pr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Ci=Ma((function(t,e){return Ps(t)?Qn(t,ra(e,1,Ps,!0)):[]})),Ri=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),Kr(n,2)):[]})),Ai=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),void 0,n):[]}));function ki(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:nu(n);return r<0&&(r=rn(a+r,0)),me(t,Kr(e,3),r)}function Ei(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a-1;return void 0!==n&&(r=nu(n),r=n<0?rn(a+r,0):sn(r,a-1)),me(t,Kr(e,3),r,!0)}function Li(t){return null!=t&&t.length?ra(t,1):[]}function Di(t){return t&&t.length?t[0]:void 0}var Pi=Ma((function(t){var e=de(t,ar);return e.length&&e[0]===t[0]?ba(e):[]})),Mi=Ma((function(t){var e=ji(t),n=de(t,ar);return e===ji(n)?e=void 0:n.pop(),n.length&&n[0]===t[0]?ba(n,Kr(e,2)):[]})),qi=Ma((function(t){var e=ji(t),n=de(t,ar);return(e="function"==typeof e?e:void 0)&&n.pop(),n.length&&n[0]===t[0]?ba(n,void 0,e):[]}));function ji(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}var Fi=Ma(Vi);function Vi(t,e){return t&&t.length&&e&&e.length?Ea(t,e):t}var Gi=Br((function(t,e){var n=null==t?0:t.length,a=Wn(t,e);return La(t,de(e,(function(t){return ri(t,n)?+t:t})).sort(fr)),a}));function Bi(t){return null==t?t:dn.call(t)}var zi=Ma((function(t){return Ja(ra(t,1,Ps,!0))})),Yi=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),Ja(ra(t,1,Ps,!0),Kr(e,2))})),Hi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,Ja(ra(t,1,Ps,!0),void 0,e)}));function Ui(t){if(!t||!t.length)return[];var e=0;return t=ue(t,(function(t){if(Ps(t))return e=rn(t.length,e),!0})),Ie(e,(function(e){return de(t,Te(e))}))}function Wi(t,e){if(!t||!t.length)return[];var n=Ui(t);return null==e?n:de(n,(function(t){return ne(e,void 0,t)}))}var Ki=Ma((function(t,e){return Ps(t)?Qn(t,e):[]})),$i=Ma((function(t){return er(ue(t,Ps))})),Ji=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),er(ue(t,Ps),Kr(e,2))})),Zi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,er(ue(t,Ps),void 0,e)})),Qi=Ma(Ui),Xi=Ma((function(t){var e=t.length,n=e>1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Wi(t,n)}));function ts(t){var e=Nn(t);return e.__chain__=!0,e}function es(t,e){return e(t)}var ns=Br((function(t){var e=t.length,n=e?t[0]:0,a=this.__wrapped__,r=function(e){return Wn(e,t)};return!(e>1||this.__actions__.length)&&a instanceof kn&&ri(n)?((a=a.slice(n,+n+(e?1:0))).__actions__.push({func:es,args:[r],thisArg:void 0}),new An(a,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(r)})),as=mr((function(t,e,n){wt.call(t,n)?++t[n]:Un(t,n,1)})),rs=Or(ki),is=Or(Ei);function ss(t,e){return(Es(t)?re:Xn)(t,Kr(e,3))}function us(t,e){return(Es(t)?ie:ta)(t,Kr(e,3))}var os=mr((function(t,e,n){wt.call(t,n)?t[n].push(e):Un(t,n,[e])})),ls=Ma((function(t,e,n){var r=-1,i="function"==typeof e,s=Ds(t)?a(t.length):[];return Xn(t,(function(t){s[++r]=i?ne(e,t,n):ma(t,e,n)})),s})),ds=mr((function(t,e,n){Un(t,n,e)}));function cs(t,e){return(Es(t)?de:Sa)(t,Kr(e,3))}var fs=mr((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]})),hs=Ma((function(t,e){if(null==t)return[];var n=e.length;return n>1&&ii(t,e[0],e[1])?e=[]:n>2&&ii(e[0],e[1],e[2])&&(e=[e[0]]),Aa(t,ra(e,1),[])})),gs=$e||function(){return Yt.Date.now()};function ps(t,e,n){return e=n?void 0:e,qr(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function bs(t,e){var n;if("function"!=typeof e)throw new yt(r);return t=nu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var ms=Ma((function(t,e,n){var a=1;if(n.length){var r=Fe(n,Wr(ms));a|=32}return qr(t,a,e,n,r)})),ys=Ma((function(t,e,n){var a=3;if(n.length){var r=Fe(n,Wr(ys));a|=32}return qr(e,a,t,n,r)}));function vs(t,e,n){var a,i,s,u,o,l,d=0,c=!1,f=!1,h=!0;if("function"!=typeof t)throw new yt(r);function g(e){var n=a,r=i;return a=i=void 0,d=e,u=t.apply(r,n)}function p(t){return d=t,o=mi(m,e),c?g(t):u}function b(t){var n=t-l;return void 0===l||n>=e||n<0||f&&t-d>=s}function m(){var t=gs();if(b(t))return y(t);o=mi(m,function(t){var n=e-(t-l);return f?sn(n,s-(t-d)):n}(t))}function y(t){return o=void 0,h&&a?g(t):(a=i=void 0,u)}function v(){var t=gs(),n=b(t);if(a=arguments,i=this,l=t,n){if(void 0===o)return p(l);if(f)return or(o),o=mi(m,e),g(l)}return void 0===o&&(o=mi(m,e)),u}return e=ru(e)||0,Bs(n)&&(c=!!n.leading,s=(f="maxWait"in n)?rn(ru(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h),v.cancel=function(){void 0!==o&&or(o),d=0,a=l=i=o=void 0},v.flush=function(){return void 0===o?u:y(gs())},v}var xs=Ma((function(t,e){return Zn(t,1,e)})),_s=Ma((function(t,e,n){return Zn(t,ru(e)||0,n)}));function Ts(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new yt(r);var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(Ts.Cache||Dn),n}function ws(t){if("function"!=typeof t)throw new yt(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ts.Cache=Dn;var Os=sr((function(t,e){var n=(e=1==e.length&&Es(e[0])?de(e[0],Ne(Kr())):de(ra(e,1),Ne(Kr()))).length;return Ma((function(a){for(var r=-1,i=sn(a.length,n);++r<i;)a[r]=e[r].call(this,a[r]);return ne(t,this,a)}))})),Ss=Ma((function(t,e){return qr(t,32,void 0,e,Fe(e,Wr(Ss)))})),Is=Ma((function(t,e){return qr(t,64,void 0,e,Fe(e,Wr(Is)))})),Ns=Br((function(t,e){return qr(t,256,void 0,void 0,void 0,e)}));function Cs(t,e){return t===e||t!=t&&e!=e}var Rs=Er(ha),As=Er((function(t,e){return t>=e})),ks=ya(function(){return arguments}())?ya:function(t){return zs(t)&&wt.call(t,"callee")&&!Kt.call(t,"callee")},Es=a.isArray,Ls=Jt?Ne(Jt):function(t){return zs(t)&&fa(t)==T};function Ds(t){return null!=t&&Gs(t.length)&&!Fs(t)}function Ps(t){return zs(t)&&Ds(t)}var Ms=tn||ro,qs=Zt?Ne(Zt):function(t){return zs(t)&&fa(t)==d};function js(t){if(!zs(t))return!1;var e=fa(t);return e==c||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Us(t)}function Fs(t){if(!Bs(t))return!1;var e=fa(t);return e==f||e==h||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Vs(t){return"number"==typeof t&&t==nu(t)}function Gs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function Bs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function zs(t){return null!=t&&"object"==typeof t}var Ys=Qt?Ne(Qt):function(t){return zs(t)&&ti(t)==g};function Hs(t){return"number"==typeof t||zs(t)&&fa(t)==p}function Us(t){if(!zs(t)||fa(t)!=b)return!1;var e=Ht(t);if(null===e)return!0;var n=wt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Nt}var Ws=Xt?Ne(Xt):function(t){return zs(t)&&fa(t)==m},Ks=te?Ne(te):function(t){return zs(t)&&ti(t)==y};function $s(t){return"string"==typeof t||!Es(t)&&zs(t)&&fa(t)==v}function Js(t){return"symbol"==typeof t||zs(t)&&fa(t)==x}var Zs=ee?Ne(ee):function(t){return zs(t)&&Gs(t.length)&&!!qt[fa(t)]},Qs=Er(Oa),Xs=Er((function(t,e){return t<=e}));function tu(t){if(!t)return[];if(Ds(t))return $s(t)?ze(t):pr(t);if(we&&t[we])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[we]());var e=ti(t);return(e==g?qe:e==y?Ve:Cu)(t)}function eu(t){return t?(t=ru(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function nu(t){var e=eu(t),n=e%1;return e==e?n?e-n:e:0}function au(t){return t?Kn(nu(t),0,4294967295):0}function ru(t){if("number"==typeof t)return t;if(Js(t))return NaN;if(Bs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Bs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(W,"");var n=rt.test(t);return n||st.test(t)?Gt(t.slice(2),n?2:8):at.test(t)?NaN:+t}function iu(t){return br(t,xu(t))}function su(t){return null==t?"":$a(t)}var uu=yr((function(t,e){if(li(e)||Ds(e))br(e,vu(e),t);else for(var n in e)wt.call(e,n)&&Bn(t,n,e[n])})),ou=yr((function(t,e){br(e,xu(e),t)})),lu=yr((function(t,e,n,a){br(e,xu(e),t,a)})),du=yr((function(t,e,n,a){br(e,vu(e),t,a)})),cu=Br(Wn),fu=Ma((function(t,e){t=pt(t);var n=-1,a=e.length,r=a>2?e[2]:void 0;for(r&&ii(e[0],e[1],r)&&(a=1);++n<a;)for(var i=e[n],s=xu(i),u=-1,o=s.length;++u<o;){var l=s[u],d=t[l];(void 0===d||Cs(d,xt[l])&&!wt.call(t,l))&&(t[l]=i[l])}return t})),hu=Ma((function(t){return t.push(void 0,Fr),ne(Tu,void 0,t)}));function gu(t,e,n){var a=null==t?void 0:da(t,e);return void 0===a?n:a}function pu(t,e){return null!=t&&ei(t,e,pa)}var bu=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),t[e]=n}),Bu(Hu)),mu=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),wt.call(t,e)?t[e].push(n):t[e]=[n]}),Kr),yu=Ma(ma);function vu(t){return Ds(t)?qn(t):wa(t)}function xu(t){return Ds(t)?qn(t,!0):function(t){if(!Bs(t))return function(t){var e=[];if(null!=t)for(var n in pt(t))e.push(n);return e}(t);var e=li(t),n=[];for(var a in t)("constructor"!=a||!e&&wt.call(t,a))&&n.push(a);return n}(t)}var _u=yr((function(t,e,n){Ca(t,e,n)})),Tu=yr((function(t,e,n,a){Ca(t,e,n,a)})),wu=Br((function(t,e){var n={};if(null==t)return n;var a=!1;e=de(e,(function(e){return e=ir(e,t),a||(a=e.length>1),e})),br(t,Yr(t),n),a&&(n=$n(n,7,Vr));for(var r=e.length;r--;)Za(n,e[r]);return n})),Ou=Br((function(t,e){return null==t?{}:function(t,e){return ka(t,e,(function(e,n){return pu(t,n)}))}(t,e)}));function Su(t,e){if(null==t)return{};var n=de(Yr(t),(function(t){return[t]}));return e=Kr(e),ka(t,n,(function(t,n){return e(t,n[0])}))}var Iu=Mr(vu),Nu=Mr(xu);function Cu(t){return null==t?[]:Ce(t,vu(t))}var Ru=Tr((function(t,e,n){return e=e.toLowerCase(),t+(n?Au(e):e)}));function Au(t){return ju(su(t).toLowerCase())}function ku(t){return(t=su(t))&&t.replace(ot,Le).replace(At,"")}var Eu=Tr((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Lu=Tr((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Du=_r("toLowerCase"),Pu=Tr((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()})),Mu=Tr((function(t,e,n){return t+(n?" ":"")+ju(e)})),qu=Tr((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),ju=_r("toUpperCase");function Fu(t,e,n){return t=su(t),void 0===(e=n?void 0:e)?function(t){return Dt.test(t)}(t)?function(t){return t.match(Et)||[]}(t):function(t){return t.match(X)||[]}(t):t.match(e)||[]}var Vu=Ma((function(t,e){try{return ne(t,void 0,e)}catch(n){return js(n)?n:new ft(n)}})),Gu=Br((function(t,e){return re(e,(function(e){e=Si(e),Un(t,e,ms(t[e],t))})),t}));function Bu(t){return function(){return t}}var zu=Sr(),Yu=Sr(!0);function Hu(t){return t}function Uu(t){return Ta("function"==typeof t?t:$n(t,1))}var Wu=Ma((function(t,e){return function(n){return ma(n,t,e)}})),Ku=Ma((function(t,e){return function(n){return ma(t,n,e)}}));function $u(t,e,n){var a=vu(e),r=la(e,a);null!=n||Bs(e)&&(r.length||!a.length)||(n=e,e=t,t=this,r=la(e,vu(e)));var i=!(Bs(n)&&"chain"in n&&!n.chain),s=Fs(t);return re(r,(function(n){var a=e[n];t[n]=a,s&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),r=n.__actions__=pr(this.__actions__);return r.push({func:a,args:arguments,thisArg:t}),n.__chain__=e,n}return a.apply(t,ce([this.value()],arguments))})})),t}function Ju(){}var Zu=Rr(de),Qu=Rr(se),Xu=Rr(ge);function to(t){return si(t)?Te(Si(t)):function(t){return function(e){return da(e,t)}}(t)}var eo=kr(),no=kr(!0);function ao(){return[]}function ro(){return!1}var io,so=Cr((function(t,e){return t+e}),0),uo=Dr("ceil"),oo=Cr((function(t,e){return t/e}),1),lo=Dr("floor"),co=Cr((function(t,e){return t*e}),1),fo=Dr("round"),ho=Cr((function(t,e){return t-e}),0);return Nn.after=function(t,e){if("function"!=typeof e)throw new yt(r);return t=nu(t),function(){if(--t<1)return e.apply(this,arguments)}},Nn.ary=ps,Nn.assign=uu,Nn.assignIn=ou,Nn.assignInWith=lu,Nn.assignWith=du,Nn.at=cu,Nn.before=bs,Nn.bind=ms,Nn.bindAll=Gu,Nn.bindKey=ys,Nn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Es(t)?t:[t]},Nn.chain=ts,Nn.chunk=function(t,e,n){e=(n?ii(t,e,n):void 0===e)?1:rn(nu(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,s=0,u=a(Ze(r/e));i<r;)u[s++]=za(t,i,i+=e);return u},Nn.compact=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r},Nn.concat=function(){var t=arguments.length;if(!t)return[];for(var e=a(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return ce(Es(n)?pr(n):[n],ra(e,1))},Nn.cond=function(t){var e=null==t?0:t.length,n=Kr();return t=e?de(t,(function(t){if("function"!=typeof t[1])throw new yt(r);return[n(t[0]),t[1]]})):[],Ma((function(n){for(var a=-1;++a<e;){var r=t[a];if(ne(r[0],this,n))return ne(r[1],this,n)}}))},Nn.conforms=function(t){return function(t){var e=vu(t);return function(n){return Jn(n,t,e)}}($n(t,1))},Nn.constant=Bu,Nn.countBy=as,Nn.create=function(t,e){var n=Cn(t);return null==e?n:Hn(n,e)},Nn.curry=function t(e,n,a){var r=qr(e,8,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.curryRight=function t(e,n,a){var r=qr(e,16,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.debounce=vs,Nn.defaults=fu,Nn.defaultsDeep=hu,Nn.defer=xs,Nn.delay=_s,Nn.difference=Ci,Nn.differenceBy=Ri,Nn.differenceWith=Ai,Nn.drop=function(t,e,n){var a=null==t?0:t.length;return a?za(t,(e=n||void 0===e?1:nu(e))<0?0:e,a):[]},Nn.dropRight=function(t,e,n){var a=null==t?0:t.length;return a?za(t,0,(e=a-(e=n||void 0===e?1:nu(e)))<0?0:e):[]},Nn.dropRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0,!0):[]},Nn.dropWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0):[]},Nn.fill=function(t,e,n,a){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&ii(t,e,n)&&(n=0,a=r),function(t,e,n,a){var r=t.length;for((n=nu(n))<0&&(n=-n>r?0:r+n),(a=void 0===a||a>r?r:nu(a))<0&&(a+=r),a=n>a?0:au(a);n<a;)t[n++]=e;return t}(t,e,n,a)):[]},Nn.filter=function(t,e){return(Es(t)?ue:aa)(t,Kr(e,3))},Nn.flatMap=function(t,e){return ra(cs(t,e),1)},Nn.flatMapDeep=function(t,e){return ra(cs(t,e),1/0)},Nn.flatMapDepth=function(t,e,n){return n=void 0===n?1:nu(n),ra(cs(t,e),n)},Nn.flatten=Li,Nn.flattenDeep=function(t){return null!=t&&t.length?ra(t,1/0):[]},Nn.flattenDepth=function(t,e){return null!=t&&t.length?ra(t,e=void 0===e?1:nu(e)):[]},Nn.flip=function(t){return qr(t,512)},Nn.flow=zu,Nn.flowRight=Yu,Nn.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,a={};++e<n;){var r=t[e];a[r[0]]=r[1]}return a},Nn.functions=function(t){return null==t?[]:la(t,vu(t))},Nn.functionsIn=function(t){return null==t?[]:la(t,xu(t))},Nn.groupBy=os,Nn.initial=function(t){return null!=t&&t.length?za(t,0,-1):[]},Nn.intersection=Pi,Nn.intersectionBy=Mi,Nn.intersectionWith=qi,Nn.invert=bu,Nn.invertBy=mu,Nn.invokeMap=ls,Nn.iteratee=Uu,Nn.keyBy=ds,Nn.keys=vu,Nn.keysIn=xu,Nn.map=cs,Nn.mapKeys=function(t,e){var n={};return e=Kr(e,3),ua(t,(function(t,a,r){Un(n,e(t,a,r),t)})),n},Nn.mapValues=function(t,e){var n={};return e=Kr(e,3),ua(t,(function(t,a,r){Un(n,a,e(t,a,r))})),n},Nn.matches=function(t){return Ia($n(t,1))},Nn.matchesProperty=function(t,e){return Na(t,$n(e,1))},Nn.memoize=Ts,Nn.merge=_u,Nn.mergeWith=Tu,Nn.method=Wu,Nn.methodOf=Ku,Nn.mixin=$u,Nn.negate=ws,Nn.nthArg=function(t){return t=nu(t),Ma((function(e){return Ra(e,t)}))},Nn.omit=wu,Nn.omitBy=function(t,e){return Su(t,ws(Kr(e)))},Nn.once=function(t){return bs(2,t)},Nn.orderBy=function(t,e,n,a){return null==t?[]:(Es(e)||(e=null==e?[]:[e]),Es(n=a?void 0:n)||(n=null==n?[]:[n]),Aa(t,e,n))},Nn.over=Zu,Nn.overArgs=Os,Nn.overEvery=Qu,Nn.overSome=Xu,Nn.partial=Ss,Nn.partialRight=Is,Nn.partition=fs,Nn.pick=Ou,Nn.pickBy=Su,Nn.property=to,Nn.propertyOf=function(t){return function(e){return null==t?void 0:da(t,e)}},Nn.pull=Fi,Nn.pullAll=Vi,Nn.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,Kr(n,2)):t},Nn.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,void 0,n):t},Nn.pullAt=Gi,Nn.range=eo,Nn.rangeRight=no,Nn.rearg=Ns,Nn.reject=function(t,e){return(Es(t)?ue:aa)(t,ws(Kr(e,3)))},Nn.remove=function(t,e){var n=[];if(!t||!t.length)return n;var a=-1,r=[],i=t.length;for(e=Kr(e,3);++a<i;){var s=t[a];e(s,a,t)&&(n.push(s),r.push(a))}return La(t,r),n},Nn.rest=function(t,e){if("function"!=typeof t)throw new yt(r);return Ma(t,e=void 0===e?e:nu(e))},Nn.reverse=Bi,Nn.sampleSize=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:nu(e),(Es(t)?Fn:ja)(t,e)},Nn.set=function(t,e,n){return null==t?t:Fa(t,e,n)},Nn.setWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Fa(t,e,n,a)},Nn.shuffle=function(t){return(Es(t)?Vn:Ba)(t)},Nn.slice=function(t,e,n){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&ii(t,e,n)?(e=0,n=a):(e=null==e?0:nu(e),n=void 0===n?a:nu(n)),za(t,e,n)):[]},Nn.sortBy=hs,Nn.sortedUniq=function(t){return t&&t.length?Wa(t):[]},Nn.sortedUniqBy=function(t,e){return t&&t.length?Wa(t,Kr(e,2)):[]},Nn.split=function(t,e,n){return n&&"number"!=typeof n&&ii(t,e,n)&&(e=n=void 0),(n=void 0===n?4294967295:n>>>0)?(t=su(t))&&("string"==typeof e||null!=e&&!Ws(e))&&!(e=$a(e))&&Me(t)?ur(ze(t),0,n):t.split(e,n):[]},Nn.spread=function(t,e){if("function"!=typeof t)throw new yt(r);return e=null==e?0:rn(nu(e),0),Ma((function(n){var a=n[e],r=ur(n,0,e);return a&&ce(r,a),ne(t,this,r)}))},Nn.tail=function(t){var e=null==t?0:t.length;return e?za(t,1,e):[]},Nn.take=function(t,e,n){return t&&t.length?za(t,0,(e=n||void 0===e?1:nu(e))<0?0:e):[]},Nn.takeRight=function(t,e,n){var a=null==t?0:t.length;return a?za(t,(e=a-(e=n||void 0===e?1:nu(e)))<0?0:e,a):[]},Nn.takeRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!1,!0):[]},Nn.takeWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3)):[]},Nn.tap=function(t,e){return e(t),t},Nn.throttle=function(t,e,n){var a=!0,i=!0;if("function"!=typeof t)throw new yt(r);return Bs(n)&&(a="leading"in n?!!n.leading:a,i="trailing"in n?!!n.trailing:i),vs(t,e,{leading:a,maxWait:e,trailing:i})},Nn.thru=es,Nn.toArray=tu,Nn.toPairs=Iu,Nn.toPairsIn=Nu,Nn.toPath=function(t){return Es(t)?de(t,Si):Js(t)?[t]:pr(Oi(su(t)))},Nn.toPlainObject=iu,Nn.transform=function(t,e,n){var a=Es(t),r=a||Ms(t)||Zs(t);if(e=Kr(e,4),null==n){var i=t&&t.constructor;n=r?a?new i:[]:Bs(t)&&Fs(i)?Cn(Ht(t)):{}}return(r?re:ua)(t,(function(t,a,r){return e(n,t,a,r)})),n},Nn.unary=function(t){return ps(t,1)},Nn.union=zi,Nn.unionBy=Yi,Nn.unionWith=Hi,Nn.uniq=function(t){return t&&t.length?Ja(t):[]},Nn.uniqBy=function(t,e){return t&&t.length?Ja(t,Kr(e,2)):[]},Nn.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Ja(t,void 0,e):[]},Nn.unset=function(t,e){return null==t||Za(t,e)},Nn.unzip=Ui,Nn.unzipWith=Wi,Nn.update=function(t,e,n){return null==t?t:Qa(t,e,rr(n))},Nn.updateWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Qa(t,e,rr(n),a)},Nn.values=Cu,Nn.valuesIn=function(t){return null==t?[]:Ce(t,xu(t))},Nn.without=Ki,Nn.words=Fu,Nn.wrap=function(t,e){return Ss(rr(e),t)},Nn.xor=$i,Nn.xorBy=Ji,Nn.xorWith=Zi,Nn.zip=Qi,Nn.zipObject=function(t,e){return nr(t||[],e||[],Bn)},Nn.zipObjectDeep=function(t,e){return nr(t||[],e||[],Fa)},Nn.zipWith=Xi,Nn.entries=Iu,Nn.entriesIn=Nu,Nn.extend=ou,Nn.extendWith=lu,$u(Nn,Nn),Nn.add=so,Nn.attempt=Vu,Nn.camelCase=Ru,Nn.capitalize=Au,Nn.ceil=uo,Nn.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=ru(n))==n?n:0),void 0!==e&&(e=(e=ru(e))==e?e:0),Kn(ru(t),e,n)},Nn.clone=function(t){return $n(t,4)},Nn.cloneDeep=function(t){return $n(t,5)},Nn.cloneDeepWith=function(t,e){return $n(t,5,e="function"==typeof e?e:void 0)},Nn.cloneWith=function(t,e){return $n(t,4,e="function"==typeof e?e:void 0)},Nn.conformsTo=function(t,e){return null==e||Jn(t,e,vu(e))},Nn.deburr=ku,Nn.defaultTo=function(t,e){return null==t||t!=t?e:t},Nn.divide=oo,Nn.endsWith=function(t,e,n){t=su(t),e=$a(e);var a=t.length,r=n=void 0===n?a:Kn(nu(n),0,a);return(n-=e.length)>=0&&t.slice(n,r)==e},Nn.eq=Cs,Nn.escape=function(t){return(t=su(t))&&j.test(t)?t.replace(M,De):t},Nn.escapeRegExp=function(t){return(t=su(t))&&U.test(t)?t.replace(H,"\\$&"):t},Nn.every=function(t,e,n){var a=Es(t)?se:ea;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.find=rs,Nn.findIndex=ki,Nn.findKey=function(t,e){return be(t,Kr(e,3),ua)},Nn.findLast=is,Nn.findLastIndex=Ei,Nn.findLastKey=function(t,e){return be(t,Kr(e,3),oa)},Nn.floor=lo,Nn.forEach=ss,Nn.forEachRight=us,Nn.forIn=function(t,e){return null==t?t:ia(t,Kr(e,3),xu)},Nn.forInRight=function(t,e){return null==t?t:sa(t,Kr(e,3),xu)},Nn.forOwn=function(t,e){return t&&ua(t,Kr(e,3))},Nn.forOwnRight=function(t,e){return t&&oa(t,Kr(e,3))},Nn.get=gu,Nn.gt=Rs,Nn.gte=As,Nn.has=function(t,e){return null!=t&&ei(t,e,ga)},Nn.hasIn=pu,Nn.head=Di,Nn.identity=Hu,Nn.includes=function(t,e,n,a){t=Ds(t)?t:Cu(t),n=n&&!a?nu(n):0;var r=t.length;return n<0&&(n=rn(r+n,0)),$s(t)?n<=r&&t.indexOf(e,n)>-1:!!r&&ye(t,e,n)>-1},Nn.indexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:nu(n);return r<0&&(r=rn(a+r,0)),ye(t,e,r)},Nn.inRange=function(t,e,n){return e=eu(e),void 0===n?(n=e,e=0):n=eu(n),function(t,e,n){return t>=sn(e,n)&&t<rn(e,n)}(t=ru(t),e,n)},Nn.invoke=yu,Nn.isArguments=ks,Nn.isArray=Es,Nn.isArrayBuffer=Ls,Nn.isArrayLike=Ds,Nn.isArrayLikeObject=Ps,Nn.isBoolean=function(t){return!0===t||!1===t||zs(t)&&fa(t)==l},Nn.isBuffer=Ms,Nn.isDate=qs,Nn.isElement=function(t){return zs(t)&&1===t.nodeType&&!Us(t)},Nn.isEmpty=function(t){if(null==t)return!0;if(Ds(t)&&(Es(t)||"string"==typeof t||"function"==typeof t.splice||Ms(t)||Zs(t)||ks(t)))return!t.length;var e=ti(t);if(e==g||e==y)return!t.size;if(li(t))return!wa(t).length;for(var n in t)if(wt.call(t,n))return!1;return!0},Nn.isEqual=function(t,e){return va(t,e)},Nn.isEqualWith=function(t,e,n){var a=(n="function"==typeof n?n:void 0)?n(t,e):void 0;return void 0===a?va(t,e,void 0,n):!!a},Nn.isError=js,Nn.isFinite=function(t){return"number"==typeof t&&en(t)},Nn.isFunction=Fs,Nn.isInteger=Vs,Nn.isLength=Gs,Nn.isMap=Ys,Nn.isMatch=function(t,e){return t===e||xa(t,e,Jr(e))},Nn.isMatchWith=function(t,e,n){return n="function"==typeof n?n:void 0,xa(t,e,Jr(e),n)},Nn.isNaN=function(t){return Hs(t)&&t!=+t},Nn.isNative=function(t){if(oi(t))throw new ft("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return _a(t)},Nn.isNil=function(t){return null==t},Nn.isNull=function(t){return null===t},Nn.isNumber=Hs,Nn.isObject=Bs,Nn.isObjectLike=zs,Nn.isPlainObject=Us,Nn.isRegExp=Ws,Nn.isSafeInteger=function(t){return Vs(t)&&t>=-9007199254740991&&t<=9007199254740991},Nn.isSet=Ks,Nn.isString=$s,Nn.isSymbol=Js,Nn.isTypedArray=Zs,Nn.isUndefined=function(t){return void 0===t},Nn.isWeakMap=function(t){return zs(t)&&ti(t)==_},Nn.isWeakSet=function(t){return zs(t)&&"[object WeakSet]"==fa(t)},Nn.join=function(t,e){return null==t?"":nn.call(t,e)},Nn.kebabCase=Eu,Nn.last=ji,Nn.lastIndexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a;return void 0!==n&&(r=(r=nu(n))<0?rn(a+r,0):sn(r,a-1)),e==e?function(t,e,n){for(var a=n+1;a--;)if(t[a]===e)return a;return a}(t,e,r):me(t,xe,r,!0)},Nn.lowerCase=Lu,Nn.lowerFirst=Du,Nn.lt=Qs,Nn.lte=Xs,Nn.max=function(t){return t&&t.length?na(t,Hu,ha):void 0},Nn.maxBy=function(t,e){return t&&t.length?na(t,Kr(e,2),ha):void 0},Nn.mean=function(t){return _e(t,Hu)},Nn.meanBy=function(t,e){return _e(t,Kr(e,2))},Nn.min=function(t){return t&&t.length?na(t,Hu,Oa):void 0},Nn.minBy=function(t,e){return t&&t.length?na(t,Kr(e,2),Oa):void 0},Nn.stubArray=ao,Nn.stubFalse=ro,Nn.stubObject=function(){return{}},Nn.stubString=function(){return""},Nn.stubTrue=function(){return!0},Nn.multiply=co,Nn.nth=function(t,e){return t&&t.length?Ra(t,nu(e)):void 0},Nn.noConflict=function(){return Yt._===this&&(Yt._=Ct),this},Nn.noop=Ju,Nn.now=gs,Nn.pad=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;if(!e||a>=e)return t;var r=(e-a)/2;return Ar(Qe(r),n)+t+Ar(Ze(r),n)},Nn.padEnd=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;return e&&a<e?t+Ar(e-a,n):t},Nn.padStart=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;return e&&a<e?Ar(e-a,n)+t:t},Nn.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),on(su(t).replace(K,""),e||0)},Nn.random=function(t,e,n){if(n&&"boolean"!=typeof n&&ii(t,e,n)&&(e=n=void 0),void 0===n&&("boolean"==typeof e?(n=e,e=void 0):"boolean"==typeof t&&(n=t,t=void 0)),void 0===t&&void 0===e?(t=0,e=1):(t=eu(t),void 0===e?(e=t,t=0):e=eu(e)),t>e){var a=t;t=e,e=a}if(n||t%1||e%1){var r=ln();return sn(t+r*(e-t+Vt("1e-"+((r+"").length-1))),e)}return Da(t,e)},Nn.reduce=function(t,e,n){var a=Es(t)?fe:Oe,r=arguments.length<3;return a(t,Kr(e,4),n,r,Xn)},Nn.reduceRight=function(t,e,n){var a=Es(t)?he:Oe,r=arguments.length<3;return a(t,Kr(e,4),n,r,ta)},Nn.repeat=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:nu(e),Pa(su(t),e)},Nn.replace=function(){var t=arguments,e=su(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Nn.result=function(t,e,n){var a=-1,r=(e=ir(e,t)).length;for(r||(r=1,t=void 0);++a<r;){var i=null==t?void 0:t[Si(e[a])];void 0===i&&(a=r,i=n),t=Fs(i)?i.call(t):i}return t},Nn.round=fo,Nn.runInContext=t,Nn.sample=function(t){return(Es(t)?jn:qa)(t)},Nn.size=function(t){if(null==t)return 0;if(Ds(t))return $s(t)?Be(t):t.length;var e=ti(t);return e==g||e==y?t.size:wa(t).length},Nn.snakeCase=Pu,Nn.some=function(t,e,n){var a=Es(t)?ge:Ya;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.sortedIndex=function(t,e){return Ha(t,e)},Nn.sortedIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2))},Nn.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var a=Ha(t,e);if(a<n&&Cs(t[a],e))return a}return-1},Nn.sortedLastIndex=function(t,e){return Ha(t,e,!0)},Nn.sortedLastIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2),!0)},Nn.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var n=Ha(t,e,!0)-1;if(Cs(t[n],e))return n}return-1},Nn.startCase=Mu,Nn.startsWith=function(t,e,n){return t=su(t),n=null==n?0:Kn(nu(n),0,t.length),e=$a(e),t.slice(n,n+e.length)==e},Nn.subtract=ho,Nn.sum=function(t){return t&&t.length?Se(t,Hu):0},Nn.sumBy=function(t,e){return t&&t.length?Se(t,Kr(e,2)):0},Nn.template=function(t,e,n){var a=Nn.templateSettings;n&&ii(t,e,n)&&(e=void 0),t=su(t),e=lu({},e,a,jr);var r,i,s=lu({},e.imports,a.imports,jr),u=vu(s),o=Ce(s,u),l=0,d=e.interpolate||lt,c="__p += '",f=bt((e.escape||lt).source+"|"+d.source+"|"+(d===G?et:lt).source+"|"+(e.evaluate||lt).source+"|$","g"),h="//# sourceURL="+(wt.call(e,"sourceURL")?(e.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Mt+"]")+"\n";t.replace(f,(function(e,n,a,s,u,o){return a||(a=s),c+=t.slice(l,o).replace(dt,Pe),n&&(r=!0,c+="' +\n__e("+n+") +\n'"),u&&(i=!0,c+="';\n"+u+";\n__p += '"),a&&(c+="' +\n((__t = ("+a+")) == null ? '' : __t) +\n'"),l=o+e.length,e})),c+="';\n";var g=wt.call(e,"variable")&&e.variable;g||(c="with (obj) {\n"+c+"\n}\n"),c=(i?c.replace(E,""):c).replace(L,"$1").replace(D,"$1;"),c="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(r?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+c+"return __p\n}";var p=Vu((function(){return ht(u,h+"return "+c).apply(void 0,o)}));if(p.source=c,js(p))throw p;return p},Nn.times=function(t,e){if((t=nu(t))<1||t>9007199254740991)return[];var n=4294967295,a=sn(t,4294967295);t-=4294967295;for(var r=Ie(a,e=Kr(e));++n<t;)e(n);return r},Nn.toFinite=eu,Nn.toInteger=nu,Nn.toLength=au,Nn.toLower=function(t){return su(t).toLowerCase()},Nn.toNumber=ru,Nn.toSafeInteger=function(t){return t?Kn(nu(t),-9007199254740991,9007199254740991):0===t?t:0},Nn.toString=su,Nn.toUpper=function(t){return su(t).toUpperCase()},Nn.trim=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace(W,"");if(!t||!(e=$a(e)))return t;var a=ze(t),r=ze(e);return ur(a,Ae(a,r),ke(a,r)+1).join("")},Nn.trimEnd=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace($,"");if(!t||!(e=$a(e)))return t;var a=ze(t);return ur(a,0,ke(a,ze(e))+1).join("")},Nn.trimStart=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace(K,"");if(!t||!(e=$a(e)))return t;var a=ze(t);return ur(a,Ae(a,ze(e))).join("")},Nn.truncate=function(t,e){var n=30,a="...";if(Bs(e)){var r="separator"in e?e.separator:r;n="length"in e?nu(e.length):n,a="omission"in e?$a(e.omission):a}var i=(t=su(t)).length;if(Me(t)){var s=ze(t);i=s.length}if(n>=i)return t;var u=n-Be(a);if(u<1)return a;var o=s?ur(s,0,u).join(""):t.slice(0,u);if(void 0===r)return o+a;if(s&&(u+=o.length-u),Ws(r)){if(t.slice(u).search(r)){var l,d=o;for(r.global||(r=bt(r.source,su(nt.exec(r))+"g")),r.lastIndex=0;l=r.exec(d);)var c=l.index;o=o.slice(0,void 0===c?u:c)}}else if(t.indexOf($a(r),u)!=u){var f=o.lastIndexOf(r);f>-1&&(o=o.slice(0,f))}return o+a},Nn.unescape=function(t){return(t=su(t))&&q.test(t)?t.replace(P,Ye):t},Nn.uniqueId=function(t){var e=++Ot;return su(t)+e},Nn.upperCase=qu,Nn.upperFirst=ju,Nn.each=ss,Nn.eachRight=us,Nn.first=Di,$u(Nn,(io={},ua(Nn,(function(t,e){wt.call(Nn.prototype,e)||(io[e]=t)})),io),{chain:!1}),Nn.VERSION="4.17.20",re(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Nn[t].placeholder=Nn})),re(["drop","take"],(function(t,e){kn.prototype[t]=function(n){n=void 0===n?1:rn(nu(n),0);var a=this.__filtered__&&!e?new kn(this):this.clone();return a.__filtered__?a.__takeCount__=sn(n,a.__takeCount__):a.__views__.push({size:sn(n,4294967295),type:t+(a.__dir__<0?"Right":"")}),a},kn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),re(["filter","map","takeWhile"],(function(t,e){var n=e+1,a=1==n||3==n;kn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Kr(t,3),type:n}),e.__filtered__=e.__filtered__||a,e}})),re(["head","last"],(function(t,e){var n="take"+(e?"Right":"");kn.prototype[t]=function(){return this[n](1).value()[0]}})),re(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");kn.prototype[t]=function(){return this.__filtered__?new kn(this):this[n](1)}})),kn.prototype.compact=function(){return this.filter(Hu)},kn.prototype.find=function(t){return this.filter(t).head()},kn.prototype.findLast=function(t){return this.reverse().find(t)},kn.prototype.invokeMap=Ma((function(t,e){return"function"==typeof t?new kn(this):this.map((function(n){return ma(n,t,e)}))})),kn.prototype.reject=function(t){return this.filter(ws(Kr(t)))},kn.prototype.slice=function(t,e){t=nu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new kn(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=nu(e))<0?n.dropRight(-e):n.take(e-t)),n)},kn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},kn.prototype.toArray=function(){return this.take(4294967295)},ua(kn.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),a=/^(?:head|last)$/.test(e),r=Nn[a?"take"+("last"==e?"Right":""):e],i=a||/^find/.test(e);r&&(Nn.prototype[e]=function(){var e=this.__wrapped__,s=a?[1]:arguments,u=e instanceof kn,o=s[0],l=u||Es(e),d=function(t){var e=r.apply(Nn,ce([t],s));return a&&c?e[0]:e};l&&n&&"function"==typeof o&&1!=o.length&&(u=l=!1);var c=this.__chain__,f=!!this.__actions__.length,h=i&&!c,g=u&&!f;if(!i&&l){e=g?e:new kn(this);var p=t.apply(e,s);return p.__actions__.push({func:es,args:[d],thisArg:void 0}),new An(p,c)}return h&&g?t.apply(this,s):(p=this.thru(d),h?a?p.value()[0]:p.value():p)})})),re(["pop","push","shift","sort","splice","unshift"],(function(t){var e=vt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",a=/^(?:pop|shift)$/.test(t);Nn.prototype[t]=function(){var t=arguments;if(a&&!this.__chain__){var r=this.value();return e.apply(Es(r)?r:[],t)}return this[n]((function(n){return e.apply(Es(n)?n:[],t)}))}})),ua(kn.prototype,(function(t,e){var n=Nn[e];if(n){var a=n.name+"";wt.call(yn,a)||(yn[a]=[]),yn[a].push({name:e,func:n})}})),yn[Ir(void 0,2).name]=[{name:"wrapper",func:void 0}],kn.prototype.clone=function(){var t=new kn(this.__wrapped__);return t.__actions__=pr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=pr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=pr(this.__views__),t},kn.prototype.reverse=function(){if(this.__filtered__){var t=new kn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},kn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Es(t),a=e<0,r=n?t.length:0,i=function(t,e,n){for(var a=-1,r=n.length;++a<r;){var i=n[a],s=i.size;switch(i.type){case"drop":t+=s;break;case"dropRight":e-=s;break;case"take":e=sn(e,t+s);break;case"takeRight":t=rn(t,e-s)}}return{start:t,end:e}}(0,r,this.__views__),s=i.start,u=i.end,o=u-s,l=a?u:s-1,d=this.__iteratees__,c=d.length,f=0,h=sn(o,this.__takeCount__);if(!n||!a&&r==o&&h==o)return tr(t,this.__actions__);var g=[];t:for(;o--&&f<h;){for(var p=-1,b=t[l+=e];++p<c;){var m=d[p],y=m.type,v=(0,m.iteratee)(b);if(2==y)b=v;else if(!v){if(1==y)continue t;break t}}g[f++]=b}return g},Nn.prototype.at=ns,Nn.prototype.chain=function(){return ts(this)},Nn.prototype.commit=function(){return new An(this.value(),this.__chain__)},Nn.prototype.next=function(){void 0===this.__values__&&(this.__values__=tu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},Nn.prototype.plant=function(t){for(var e,n=this;n instanceof Rn;){var a=Ni(n);a.__index__=0,a.__values__=void 0,e?r.__wrapped__=a:e=a;var r=a;n=n.__wrapped__}return r.__wrapped__=t,e},Nn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof kn){var e=t;return this.__actions__.length&&(e=new kn(this)),(e=e.reverse()).__actions__.push({func:es,args:[Bi],thisArg:void 0}),new An(e,this.__chain__)}return this.thru(Bi)},Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return tr(this.__wrapped__,this.__actions__)},Nn.prototype.first=Nn.prototype.head,we&&(Nn.prototype[we]=function(){return this}),Nn}();Yt._=He,void 0===(a=(function(){return He}).call(e,n,e,t))||(t.exports=a)}).call(this)}).call(this,n("YuTi")(t))},LxgN:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}},"M+Mf":function(t,e,n){var a=n("rk81"),r=n("IfUl"),i=n("PjNX"),s=n("02OF"),u=n("hmSm"),o=n("MBcj"),l=n("dCge");t.exports=function t(e,n,d,c,f){e!==n&&i(n,(function(i,o){if(f||(f=new a),u(i))s(e,n,o,d,t,c,f);else{var h=c?c(l(e,o),i,o+"",e,n,f):void 0;void 0===h&&(h=i),r(e,o,h)}}),o)}},MBcj:function(t,e,n){var a=n("pmjB"),r=n("6eui"),i=n("im1V");t.exports=function(t){return i(t)?a(t,!0):r(t)}},"MO+k":function(t,e,n){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={rgb2hsl:n,rgb2hsv:a,rgb2hwb:i,rgb2cmyk:s,rgb2keyword:u,rgb2xyz:o,rgb2lab:l,rgb2lch:function(t){return v(l(t))},hsl2rgb:d,hsl2hsv:function(t){var e=t[1]/100,n=t[2]/100;return 0===n?[0,0,0]:[t[0],2*(e*=(n*=2)<=1?n:2-n)/(n+e)*100,(n+e)/2*100]},hsl2hwb:function(t){return i(d(t))},hsl2cmyk:function(t){return s(d(t))},hsl2keyword:function(t){return u(d(t))},hsv2rgb:c,hsv2hsl:function(t){var e,n,a=t[1]/100,r=t[2]/100;return e=a*r,[t[0],100*(e=(e/=(n=(2-a)*r)<=1?n:2-n)||0),100*(n/=2)]},hsv2hwb:function(t){return i(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return u(c(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return u(f(t))},cmyk2rgb:h,cmyk2hsl:function(t){return n(h(t))},cmyk2hsv:function(t){return a(h(t))},cmyk2hwb:function(t){return i(h(t))},cmyk2keyword:function(t){return u(h(t))},keyword2rgb:T,keyword2hsl:function(t){return n(T(t))},keyword2hsv:function(t){return a(T(t))},keyword2hwb:function(t){return i(T(t))},keyword2cmyk:function(t){return s(T(t))},keyword2lab:function(t){return l(T(t))},keyword2xyz:function(t){return o(T(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return v(m(t))},lab2xyz:y,lab2rgb:x,lab2lch:v,lch2lab:_,lch2xyz:function(t){return y(_(t))},lch2rgb:function(t){return x(_(t))}};function n(t){var e,n,a=t[0]/255,r=t[1]/255,i=t[2]/255,s=Math.min(a,r,i),u=Math.max(a,r,i),o=u-s;return u==s?e=0:a==u?e=(r-i)/o:r==u?e=2+(i-a)/o:i==u&&(e=4+(a-r)/o),(e=Math.min(60*e,360))<0&&(e+=360),n=(s+u)/2,[e,100*(u==s?0:n<=.5?o/(u+s):o/(2-u-s)),100*n]}function a(t){var e,n,a=t[0],r=t[1],i=t[2],s=Math.min(a,r,i),u=Math.max(a,r,i),o=u-s;return n=0==u?0:o/u*1e3/10,u==s?e=0:a==u?e=(r-i)/o:r==u?e=2+(i-a)/o:i==u&&(e=4+(a-r)/o),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,u/255*1e3/10]}function i(t){var e=t[0],a=t[1],r=t[2];return[n(t)[0],1/255*Math.min(e,Math.min(a,r))*100,100*(r=1-1/255*Math.max(e,Math.max(a,r)))]}function s(t){var e,n=t[0]/255,a=t[1]/255,r=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-a,1-r)))/(1-e)||0),100*((1-a-e)/(1-e)||0),100*((1-r-e)/(1-e)||0),100*e]}function u(t){return O[JSON.stringify(t)]}function o(t){var e=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92)),100*(.2126*e+.7152*n+.0722*a),100*(.0193*e+.1192*n+.9505*a)]}function l(t){var e=o(t),n=e[0],a=e[1],r=e[2];return a/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116)-16,500*(n-a),200*(a-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]}function d(t){var e,n,a,r,i,s=t[0]/360,u=t[1]/100,o=t[2]/100;if(0==u)return[i=255*o,i,i];e=2*o-(n=o<.5?o*(1+u):o+u-o*u),r=[0,0,0];for(var l=0;l<3;l++)(a=s+1/3*-(l-1))<0&&a++,a>1&&a--,r[l]=255*(i=6*a<1?e+6*(n-e)*a:2*a<1?n:3*a<2?e+(n-e)*(2/3-a)*6:e);return r}function c(t){var e=t[0]/60,n=t[1]/100,a=t[2]/100,r=Math.floor(e)%6,i=e-Math.floor(e),s=255*a*(1-n),u=255*a*(1-n*i),o=255*a*(1-n*(1-i));switch(a*=255,r){case 0:return[a,o,s];case 1:return[u,a,s];case 2:return[s,a,o];case 3:return[s,u,a];case 4:return[o,s,a];case 5:return[a,s,u]}}function f(t){var e,n,a,i,s=t[0]/360,u=t[1]/100,o=t[2]/100,l=u+o;switch(l>1&&(u/=l,o/=l),a=6*s-(e=Math.floor(6*s)),0!=(1&e)&&(a=1-a),i=u+a*((n=1-o)-u),e){default:case 6:case 0:r=n,g=i,b=u;break;case 1:r=i,g=n,b=u;break;case 2:r=u,g=n,b=i;break;case 3:r=u,g=i,b=n;break;case 4:r=i,g=u,b=n;break;case 5:r=n,g=u,b=i}return[255*r,255*g,255*b]}function h(t){var e=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,t[0]/100*(1-a)+a)),255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,n,a,r=t[0]/100,i=t[1]/100,s=t[2]/100;return n=-.9689*r+1.8758*i+.0415*s,a=.0557*r+-.204*i+1.057*s,e=(e=3.2406*r+-1.5372*i+-.4986*s)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:a*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(a=Math.min(Math.max(0,a),1))]}function m(t){var e=t[0],n=t[1],a=t[2];return n/=100,a/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function y(t){var e,n,a,r,i=t[0],s=t[1],u=t[2];return i<=8?r=(n=100*i/903.3)/100*7.787+16/116:(n=100*Math.pow((i+16)/116,3),r=Math.pow(n/100,1/3)),[e=e/95.047<=.008856?e=95.047*(s/500+r-16/116)/7.787:95.047*Math.pow(s/500+r,3),n,a=a/108.883<=.008859?a=108.883*(r-u/200-16/116)/7.787:108.883*Math.pow(r-u/200,3)]}function v(t){var e,n=t[0],a=t[1],r=t[2];return(e=360*Math.atan2(r,a)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(a*a+r*r),e]}function x(t){return p(y(t))}function _(t){var e,n=t[1];return e=t[2]/360*2*Math.PI,[t[0],n*Math.cos(e),n*Math.sin(e)]}function T(t){return w[t]}var w={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},O={};for(var S in w)O[JSON.stringify(w[S])]=S;var I=function(){return new k};for(var N in e){I[N+"Raw"]=function(t){return function(n){return"number"==typeof n&&(n=Array.prototype.slice.call(arguments)),e[t](n)}}(N);var C=/(\w+)2(\w+)/.exec(N),R=C[1],A=C[2];(I[R]=I[R]||{})[A]=I[N]=function(t){return function(n){"number"==typeof n&&(n=Array.prototype.slice.call(arguments));var a=e[t](n);if("string"==typeof a||void 0===a)return a;for(var r=0;r<a.length;r++)a[r]=Math.round(a[r]);return a}}(N)}var k=function(){this.convs={}};k.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},k.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},k.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space;e=I[n][t](this.convs[n]),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach((function(t){k.prototype[t]=function(e){return this.routeSpace(t,arguments)}}));var E=I,L={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},D={getRgba:P,getHsla:M,getRgb:function(t){var e=P(t);return e&&e.slice(0,3)},getHsl:function(t){var e=M(t);return e&&e.slice(0,3)},getHwb:q,getAlpha:function(t){var e=P(t);return e||(e=M(t))||(e=q(t))?e[3]:void 0},hexString:function(t,e){return e=void 0!==e&&3===t.length?e:t[3],"#"+B(t[0])+B(t[1])+B(t[2])+(e>=0&&e<1?B(Math.round(255*e)):"")},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?j(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:j,percentString:function(t,e){return e<1||t[3]&&t[3]<1?F(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:F,hslString:function(t,e){return e<1||t[3]&&t[3]<1?V(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:V,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return z[t.slice(0,3)]}};function P(t){if(t){var e=[0,0,0],n=1,a=t.match(/^#([a-fA-F0-9]{3,4})$/i),r="";if(a){r=(a=a[1])[3];for(var i=0;i<e.length;i++)e[i]=parseInt(a[i]+a[i],16);r&&(n=Math.round(parseInt(r+r,16)/255*100)/100)}else if(a=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(r=a[2],a=a[1],i=0;i<e.length;i++)e[i]=parseInt(a.slice(2*i,2*i+2),16);r&&(n=Math.round(parseInt(r,16)/255*100)/100)}else if(a=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(i=0;i<e.length;i++)e[i]=parseInt(a[i+1]);n=parseFloat(a[4])}else if(a=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(i=0;i<e.length;i++)e[i]=Math.round(2.55*parseFloat(a[i+1]));n=parseFloat(a[4])}else if(a=t.match(/(\w+)/)){if("transparent"==a[1])return[0,0,0,0];if(!(e=L[a[1]]))return}for(i=0;i<e.length;i++)e[i]=G(e[i],0,255);return n=n||0==n?G(n,0,1):1,e[3]=n,e}}function M(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[G(parseInt(e[1]),0,360),G(parseFloat(e[2]),0,100),G(parseFloat(e[3]),0,100),G(isNaN(n)?1:n,0,1)]}}}function q(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[G(parseInt(e[1]),0,360),G(parseFloat(e[2]),0,100),G(parseFloat(e[3]),0,100),G(isNaN(n)?1:n,0,1)]}}}function j(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function F(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function V(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function G(t,e,n){return Math.min(Math.max(e,t),n)}function B(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var z={};for(var Y in L)z[L[Y]]=Y;var H=function(t){return t instanceof H?t:this instanceof H?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=D.getRgba(t))?this.setValues("rgb",e):(e=D.getHsla(t))?this.setValues("hsl",e):(e=D.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new H(t);var e};H.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return D.hexString(this.values.rgb)},rgbString:function(){return D.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return D.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return D.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return D.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return D.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return D.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return D.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var a=t[n]/255;e[n]=a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,a=void 0===e?.5:e,r=2*a-1,i=this.alpha()-n.alpha(),s=((r*i==-1?r:(r+i)/(1+r*i))+1)/2,u=1-s;return this.rgb(s*this.red()+u*n.red(),s*this.green()+u*n.green(),s*this.blue()+u*n.blue()).alpha(this.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new H,a=this.values,r=n.values;for(var i in a)a.hasOwnProperty(i)&&("[object Array]"===(e={}.toString.call(t=a[i]))?r[i]=t.slice(0):"[object Number]"===e?r[i]=t:console.error("unexpected color value:",t));return n}},H.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},H.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},H.prototype.getValues=function(t){for(var e=this.values,n={},a=0;a<t.length;a++)n[t.charAt(a)]=e[t][a];return 1!==e.alpha&&(n.a=e.alpha),n},H.prototype.setValues=function(t,e){var n,a,r=this.values,i=this.spaces,s=this.maxes,u=1;if(this.valid=!0,"alpha"===t)u=e;else if(e.length)r[t]=e.slice(0,t.length),u=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)r[t][n]=e[t.charAt(n)];u=e.a}else if(void 0!==e[i[t][0]]){var o=i[t];for(n=0;n<t.length;n++)r[t][n]=e[o[n]];u=e.alpha}if(r.alpha=Math.max(0,Math.min(1,void 0===u?r.alpha:u)),"alpha"===t)return!1;for(n=0;n<t.length;n++)a=Math.max(0,Math.min(s[t][n],r[t][n])),r[t][n]=Math.round(a);for(var l in i)l!==t&&(r[l]=E[t][l](r[t]));return!0},H.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},H.prototype.setChannel=function(t,e,n){var a=this.values[t];return void 0===n?a[e]:(n===a[e]||(a[e]=n,this.setValues(t,a)),this)},"undefined"!=typeof window&&(window.Color=H);var U,W=H,K={noop:function(){},uid:(U=0,function(){return U++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return K.valueOrDefault(K.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var r,i,s;if(K.isArray(t))if(i=t.length,a)for(r=i-1;r>=0;r--)e.call(n,t[r],r);else for(r=0;r<i;r++)e.call(n,t[r],r);else if(K.isObject(t))for(i=(s=Object.keys(t)).length,r=0;r<i;r++)e.call(n,t[s[r]],s[r])},arrayEquals:function(t,e){var n,a,r,i;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(i=e[n],(r=t[n])instanceof Array&&i instanceof Array){if(!K.arrayEquals(r,i))return!1}else if(r!==i)return!1;return!0},clone:function(t){if(K.isArray(t))return t.map(K.clone);if(K.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,r=0;r<a;++r)e[n[r]]=K.clone(t[n[r]]);return e}return t},_merger:function(t,e,n,a){var r=e[t],i=n[t];K.isObject(r)&&K.isObject(i)?K.merge(r,i,a):e[t]=K.clone(i)},_mergerIf:function(t,e,n){var a=e[t],r=n[t];K.isObject(a)&&K.isObject(r)?K.mergeIf(a,r):e.hasOwnProperty(t)||(e[t]=K.clone(r))},merge:function(t,e,n){var a,r,i,s,u,o=K.isArray(e)?e:[e],l=o.length;if(!K.isObject(t))return t;for(a=(n=n||{}).merger||K._merger,r=0;r<l;++r)if(K.isObject(e=o[r]))for(u=0,s=(i=Object.keys(e)).length;u<s;++u)a(i[u],t,e,n);return t},mergeIf:function(t,e){return K.merge(t,e,{merger:K._mergerIf})},extend:function(t){for(var e=function(e,n){t[n]=e},n=1,a=arguments.length;n<a;++n)K.each(arguments[n],e);return t},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=n};return a.prototype=e.prototype,n.prototype=new a,n.extend=K.inherits,t&&K.extend(n.prototype,t),n.__super__=e.prototype,n}},$=K;K.callCallback=K.callback,K.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},K.getValueOrDefault=K.valueOrDefault,K.getValueAtIndexOrDefault=K.valueAtIndexOrDefault;var J={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:1===t?1:(n||(n=.3),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),-a*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:1===t?1:(n||(n=.3),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),a*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),t<1?a*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:a*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-J.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*J.easeInBounce(2*t):.5*J.easeOutBounce(2*t-1)+.5}},Z={effects:J};$.easingEffects=J;var Q=Math.PI,X=Q/180,tt=2*Q,et=Q/2,nt=Q/4,at=2*Q/3,rt={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,a,r,i){if(i){var s=Math.min(i,r/2,a/2),u=e+s,o=n+s,l=e+a-s,d=n+r-s;t.moveTo(e,o),u<l&&o<d?(t.arc(u,o,s,-Q,-et),t.arc(l,o,s,-et,0),t.arc(l,d,s,0,et),t.arc(u,d,s,et,Q)):u<l?(t.moveTo(u,n),t.arc(l,o,s,-et,et),t.arc(u,o,s,et,Q+et)):o<d?(t.arc(u,o,s,-Q,0),t.arc(u,d,s,0,Q)):t.arc(u,o,s,-Q,Q),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,a,r)},drawPoint:function(t,e,n,a,r,i){var s,u,o,l,d,c=(i||0)*X;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(s=e.toString())&&"[object HTMLCanvasElement]"!==s){if(!(isNaN(n)||n<=0)){switch(t.beginPath(),e){default:t.arc(a,r,n,0,tt),t.closePath();break;case"triangle":t.moveTo(a+Math.sin(c)*n,r-Math.cos(c)*n),c+=at,t.lineTo(a+Math.sin(c)*n,r-Math.cos(c)*n),c+=at,t.lineTo(a+Math.sin(c)*n,r-Math.cos(c)*n),t.closePath();break;case"rectRounded":l=n-(d=.516*n),u=Math.cos(c+nt)*l,o=Math.sin(c+nt)*l,t.arc(a-u,r-o,d,c-Q,c-et),t.arc(a+o,r-u,d,c-et,c),t.arc(a+u,r+o,d,c,c+et),t.arc(a-o,r+u,d,c+et,c+Q),t.closePath();break;case"rect":if(!i){l=Math.SQRT1_2*n,t.rect(a-l,r-l,2*l,2*l);break}c+=nt;case"rectRot":u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+o,r-u),t.lineTo(a+u,r+o),t.lineTo(a-o,r+u),t.closePath();break;case"crossRot":c+=nt;case"cross":u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+u,r+o),t.moveTo(a+o,r-u),t.lineTo(a-o,r+u);break;case"star":u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+u,r+o),t.moveTo(a+o,r-u),t.lineTo(a-o,r+u),c+=nt,u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+u,r+o),t.moveTo(a+o,r-u),t.lineTo(a-o,r+u);break;case"line":u=Math.cos(c)*n,o=Math.sin(c)*n,t.moveTo(a-u,r-o),t.lineTo(a+u,r+o);break;case"dash":t.moveTo(a,r),t.lineTo(a+Math.cos(c)*n,r+Math.sin(c)*n)}t.fill(),t.stroke()}}else t.drawImage(e,a-e.width/2,r-e.height/2,e.width,e.height)},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,a){var r=n.steppedLine;if(r){if("middle"===r){var i=(e.x+n.x)/2;t.lineTo(i,a?n.y:e.y),t.lineTo(i,a?e.y:n.y)}else"after"===r&&!a||"after"!==r&&a?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y);t.lineTo(n.x,n.y)}else n.tension?t.bezierCurveTo(a?e.controlPointPreviousX:e.controlPointNextX,a?e.controlPointPreviousY:e.controlPointNextY,a?n.controlPointNextX:n.controlPointPreviousX,a?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},it=rt;$.clear=rt.clear,$.drawRoundedRectangle=function(t){t.beginPath(),rt.roundedRect.apply(rt,arguments)};var st={_set:function(t,e){return $.merge(this[t]||(this[t]={}),e)}};st._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var ut=st,ot=$.valueOrDefault,lt={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,r;return $.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,r=+t.left||0):e=n=a=r=+t||0,{top:e,right:n,bottom:a,left:r,height:e+a,width:r+n}},_parseFont:function(t){var e=ut.global,n=ot(t.fontSize,e.defaultFontSize),a={family:ot(t.fontFamily,e.defaultFontFamily),lineHeight:$.options.toLineHeight(ot(t.lineHeight,e.defaultLineHeight),n),size:n,style:ot(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return a.string=function(t){return!t||$.isNullOrUndef(t.size)||$.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(a),a},resolve:function(t,e,n){var a,r,i;for(a=0,r=t.length;a<r;++a)if(void 0!==(i=t[a])&&(void 0!==e&&"function"==typeof i&&(i=i(e)),void 0!==n&&$.isArray(i)&&(i=i[n]),void 0!==i))return i}},dt=$,ct=it,ft=lt;dt.easing=Z,dt.canvas=ct,dt.options=ft;var ht=function(t){dt.extend(this,t),this.initialize.apply(this,arguments)};dt.extend(ht.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=dt.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,a=e._start,r=e._view;return n&&1!==t?(r||(r=e._view={}),a||(a=e._start={}),function(t,e,n,a){var r,i,s,u,o,l,d,c,f,h=Object.keys(n);for(r=0,i=h.length;r<i;++r)if(l=n[s=h[r]],e.hasOwnProperty(s)||(e[s]=l),(u=e[s])!==l&&"_"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=u),(d=typeof l)==typeof(o=t[s]))if("string"===d){if((c=W(o)).valid&&(f=W(l)).valid){e[s]=f.mix(c,a).rgbString();continue}}else if(dt.isFinite(o)&&dt.isFinite(l)){e[s]=o+(l-o)*a;continue}e[s]=l}}(a,r,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return dt.isNumber(this._model.x)&&dt.isNumber(this._model.y)}}),ht.extend=dt.inherits;var gt=ht,pt=gt.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),bt=pt;Object.defineProperty(pt.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(pt.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),ut._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:dt.noop,onComplete:dt.noop}});var mt={animations:[],request:null,addAnimation:function(t,e,n,a){var r,i,s=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=n,a||(t.animating=!0),r=0,i=s.length;r<i;++r)if(s[r].chart===t)return void(s[r]=e);s.push(e),1===s.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=dt.findIndex(this.animations,(function(e){return e.chart===t}));-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=dt.requestAnimFrame.call(window,(function(){t.request=null,t.startDigest()})))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,a,r=this.animations,i=0;i<r.length;)e=(t=r[i]).chart,n=t.numSteps,a=Math.floor((Date.now()-t.startTime)/t.duration*n)+1,t.currentStep=Math.min(a,n),dt.callback(t.render,[e,t],e),dt.callback(t.onAnimationProgress,[t],e),t.currentStep>=n?(dt.callback(t.onAnimationComplete,[t],e),e.animating=!1,r.splice(i,1)):++i}},yt=dt.options.resolve,vt=["push","pop","shift","splice","unshift"];function xt(t,e){var n=t._chartjs;if(n){var a=n.listeners,r=a.indexOf(e);-1!==r&&a.splice(r,1),a.length>0||(vt.forEach((function(e){delete t[e]})),delete t._chartjs)}}var _t=function(t,e){this.initialize(t,e)};dt.extend(_t.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&xt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),a=this.getDataset().data||[],r=n.data;for(t=0,e=a.length;t<e;++t)r[t]=r[t]||this.createMetaData(t);n.dataset=n.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,n=this,a=n.getDataset(),r=a.data||(a.data=[]);n._data!==r&&(n._data&&xt(n._data,n),r&&Object.isExtensible(r)&&(e=n,(t=r)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),vt.forEach((function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),r=a.apply(this,e);return dt.each(t._chartjs.listeners,(function(t){"function"==typeof t[n]&&t[n].apply(t,e)})),r}})})))),n._data=r),n.resyncElements()},update:dt.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],a=n.length,r=0;r<a;++r)n[r].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,a=0;for(t.dataset&&t.dataset.draw();a<n;++a)e[a].draw()},removeHoverStyle:function(t){dt.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},r=t._model,i=dt.getHoverColor;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth},r.backgroundColor=yt([a.hoverBackgroundColor,e.hoverBackgroundColor,i(r.backgroundColor)],void 0,n),r.borderColor=yt([a.hoverBorderColor,e.hoverBorderColor,i(r.borderColor)],void 0,n),r.borderWidth=yt([a.hoverBorderWidth,e.hoverBorderWidth,r.borderWidth],void 0,n)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,a=e.length;a<n?t.data.splice(a,n-a):a>n&&this.insertElements(n,a-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),_t.extend=dt.inherits;var Tt=_t;ut._set("global",{elements:{arc:{backgroundColor:ut.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var wt=gt.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var a=dt.getAngleFromPoint(n,{x:t,y:e}),r=a.angle,i=a.distance,s=n.startAngle,u=n.endAngle;u<s;)u+=2*Math.PI;for(;r>u;)r-=2*Math.PI;for(;r<s;)r+=2*Math.PI;return r>=s&&r<=u&&i>=n.innerRadius&&i<=n.outerRadius}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,a=n.startAngle,r=n.endAngle,i="inner"===n.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(n.x,n.y,Math.max(n.outerRadius-i,0),a,r),e.arc(n.x,n.y,n.innerRadius,r,a,!0),e.closePath(),e.fillStyle=n.backgroundColor,e.fill(),n.borderWidth&&("inner"===n.borderAlign?(e.beginPath(),e.arc(n.x,n.y,n.outerRadius,a-(t=i/n.outerRadius),r+t),n.innerRadius>i?e.arc(n.x,n.y,n.innerRadius-i,r+(t=i/n.innerRadius),a-t,!0):e.arc(n.x,n.y,i,r+Math.PI/2,a-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(n.x,n.y,n.outerRadius,a,r),e.arc(n.x,n.y,n.innerRadius,r,a,!0),e.closePath(),e.lineWidth=2*n.borderWidth,e.lineJoin="round"):(e.lineWidth=n.borderWidth,e.lineJoin="bevel"),e.strokeStyle=n.borderColor,e.stroke()),e.restore()}}),Ot=dt.valueOrDefault,St=ut.global.defaultColor;ut._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var It=gt.extend({draw:function(){var t,e,n,a,r=this._view,i=this._chart.ctx,s=r.spanGaps,u=this._children.slice(),o=ut.global,l=o.elements.line,d=-1;for(this._loop&&u.length&&u.push(u[0]),i.save(),i.lineCap=r.borderCapStyle||l.borderCapStyle,i.setLineDash&&i.setLineDash(r.borderDash||l.borderDash),i.lineDashOffset=Ot(r.borderDashOffset,l.borderDashOffset),i.lineJoin=r.borderJoinStyle||l.borderJoinStyle,i.lineWidth=Ot(r.borderWidth,l.borderWidth),i.strokeStyle=r.borderColor||o.defaultColor,i.beginPath(),d=-1,t=0;t<u.length;++t)e=u[t],n=dt.previousItem(u,t),a=e._view,0===t?a.skip||(i.moveTo(a.x,a.y),d=t):(n=-1===d?n:u[d],a.skip||(d!==t-1&&!s||-1===d?i.moveTo(a.x,a.y):dt.canvas.lineTo(i,n._view,e._view),d=t));i.stroke(),i.restore()}}),Nt=dt.valueOrDefault,Ct=ut.global.defaultColor;function Rt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}ut._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:Ct,borderColor:Ct,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var At=gt.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:Rt,inXRange:Rt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._chart.ctx,a=e.pointStyle,r=e.rotation,i=e.radius,s=e.x,u=e.y,o=ut.global,l=o.defaultColor;e.skip||(void 0===t||dt.canvas._isPointInArea(e,t))&&(n.strokeStyle=e.borderColor||l,n.lineWidth=Nt(e.borderWidth,o.elements.point.borderWidth),n.fillStyle=e.backgroundColor||l,dt.canvas.drawPoint(n,a,i,s,u,r))}}),kt=ut.global.defaultColor;function Et(t){return t&&void 0!==t.width}function Lt(t){var e,n,a,r,i;return Et(t)?(e=t.x-(i=t.width/2),n=t.x+i,a=Math.min(t.y,t.base),r=Math.max(t.y,t.base)):(i=t.height/2,e=Math.min(t.x,t.base),n=Math.max(t.x,t.base),a=t.y-i,r=t.y+i),{left:e,top:a,right:n,bottom:r}}function Dt(t,e,n){return t===e?n:t===n?e:t}function Pt(t,e,n){var a=null===e,r=null===n,i=!(!t||a&&r)&&Lt(t);return i&&(a||e>=i.left&&e<=i.right)&&(r||n>=i.top&&n<=i.bottom)}ut._set("global",{elements:{rectangle:{backgroundColor:kt,borderColor:kt,borderSkipped:"bottom",borderWidth:0}}});var Mt=gt.extend({draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=Lt(t),n=e.right-e.left,a=e.bottom-e.top,r=function(t,e,n){var a,r,i,s,u=t.borderWidth,o=function(t){var e=t.borderSkipped,n={};return e?(t.horizontal?t.base>t.x&&(e=Dt(e,"left","right")):t.base<t.y&&(e=Dt(e,"bottom","top")),n[e]=!0,n):n}(t);return dt.isObject(u)?(a=+u.top||0,r=+u.right||0,i=+u.bottom||0,s=+u.left||0):a=r=i=s=+u||0,{t:o.top||a<0?0:a>n?n:a,r:o.right||r<0?0:r>e?e:r,b:o.bottom||i<0?0:i>n?n:i,l:o.left||s<0?0:s>e?e:s}}(t,n/2,a/2);return{outer:{x:e.left,y:e.top,w:n,h:a},inner:{x:e.left+r.l,y:e.top+r.t,w:n-r.l-r.r,h:a-r.t-r.b}}}(e),a=n.outer,r=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(a.x,a.y,a.w,a.h),a.w===r.w&&a.h===r.h||(t.save(),t.beginPath(),t.rect(a.x,a.y,a.w,a.h),t.clip(),t.fillStyle=e.borderColor,t.rect(r.x,r.y,r.w,r.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Pt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return Et(n)?Pt(n,t,null):Pt(n,null,e)},inXRange:function(t){return Pt(this._view,t,null)},inYRange:function(t){return Pt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return Et(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return Et(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),qt={},jt=It,Ft=At,Vt=Mt;qt.Arc=wt,qt.Line=jt,qt.Point=Ft,qt.Rectangle=Vt;var Gt=dt.options.resolve;ut._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var Bt=Tt.extend({dataElementType:qt.Rectangle,initialize:function(){var t,e=this;Tt.prototype.initialize.apply(e,arguments),(t=e.getMeta()).stack=e.getDataset().stack,t.bar=!0},update:function(t){var e,n,a=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=a.length;e<n;++e)this.updateElement(a[e],e,t)},updateElement:function(t,e,n){var a=this,r=a.getMeta(),i=a.getDataset(),s=a._resolveElementOptions(t,e);t._xScale=a.getScaleForId(r.xAxisID),t._yScale=a.getScaleForId(r.yAxisID),t._datasetIndex=a.index,t._index=e,t._model={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderSkipped:s.borderSkipped,borderWidth:s.borderWidth,datasetLabel:i.label,label:a.chart.data.labels[e]},a._updateElementGeometry(t,e,n),t.pivot()},_updateElementGeometry:function(t,e,n){var a=this,r=t._model,i=a._getValueScale(),s=i.getBasePixel(),u=i.isHorizontal(),o=a._ruler||a.getRuler(),l=a.calculateBarValuePixels(a.index,e),d=a.calculateBarIndexPixels(a.index,e,o);r.horizontal=u,r.base=n?s:l.base,r.x=u?n?s:l.head:d.center,r.y=u?d.center:n?s:l.head,r.height=u?d.size:void 0,r.width=u?void 0:d.size},_getStacks:function(t){var e,n,a=this.chart,r=this._getIndexScale().options.stacked,i=void 0===t?a.data.datasets.length:t+1,s=[];for(e=0;e<i;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===r||!0===r&&-1===s.indexOf(n.stack)||void 0===r&&(void 0===n.stack||-1===s.indexOf(n.stack)))&&s.push(n.stack);return s},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),a=void 0!==e?n.indexOf(e):-1;return-1===a?n.length-1:a},getRuler:function(){var t,e,n=this._getIndexScale(),a=this.getStackCount(),r=this.index,i=n.isHorizontal(),s=i?n.left:n.top,u=s+(i?n.width:n.height),o=[];for(t=0,e=this.getMeta().data.length;t<e;++t)o.push(n.getPixelForValue(null,t,r));return{min:dt.isNullOrUndef(n.options.barThickness)?function(t,e){var n,a,r,i,s=t.isHorizontal()?t.width:t.height,u=t.getTicks();for(r=1,i=e.length;r<i;++r)s=Math.min(s,Math.abs(e[r]-e[r-1]));for(r=0,i=u.length;r<i;++r)a=t.getPixelForTick(r),s=r>0?Math.min(s,a-n):s,n=a;return s}(n,o):-1,pixels:o,start:s,end:u,stackCount:a,scale:n}},calculateBarValuePixels:function(t,e){var n,a,r,i,s,u,o=this.chart,l=this.getMeta(),d=this._getValueScale(),c=d.isHorizontal(),f=o.data.datasets,h=+d.getRightValue(f[t].data[e]),g=d.options.minBarLength,p=d.options.stacked,b=l.stack,m=0;if(p||void 0===p&&void 0!==b)for(n=0;n<t;++n)(a=o.getDatasetMeta(n)).bar&&a.stack===b&&a.controller._getValueScaleId()===d.id&&o.isDatasetVisible(n)&&(r=+d.getRightValue(f[n].data[e]),(h<0&&r<0||h>=0&&r>0)&&(m+=r));return i=d.getPixelForValue(m),u=(s=d.getPixelForValue(m+h))-i,void 0!==g&&Math.abs(u)<g&&(u=g,s=h>=0&&!c||h<0&&c?i-g:i+g),{size:u,base:i,head:s,center:s+u/2}},calculateBarIndexPixels:function(t,e,n){var a=n.scale.options,r="flex"===a.barThickness?function(t,e,n){var a,r=e.pixels,i=r[t],s=t>0?r[t-1]:null,u=t<r.length-1?r[t+1]:null,o=n.categoryPercentage;return null===s&&(s=i-(null===u?e.end-e.start:u-i)),null===u&&(u=i+i-s),a=i-(i-Math.min(s,u))/2*o,{chunk:Math.abs(u-s)/2*o/e.stackCount,ratio:n.barPercentage,start:a}}(e,n,a):function(t,e,n){var a,r,i=n.barThickness,s=e.stackCount,u=e.pixels[t];return dt.isNullOrUndef(i)?(a=e.min*n.categoryPercentage,r=n.barPercentage):(a=i*s,r=1),{chunk:a/s,ratio:r,start:u-a/2}}(e,n,a),i=this.getStackIndex(t,this.getMeta().stack),s=r.start+r.chunk*i+r.chunk/2,u=Math.min(dt.valueOrDefault(a.maxBarThickness,1/0),r.chunk*r.ratio);return{base:s-u/2,head:s+u/2,center:s,size:u}},draw:function(){var t=this.chart,e=this._getValueScale(),n=this.getMeta().data,a=this.getDataset(),r=n.length,i=0;for(dt.canvas.clipArea(t.ctx,t.chartArea);i<r;++i)isNaN(e.getRightValue(a.data[i]))||n[i].draw();dt.canvas.unclipArea(t.ctx)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],u=t.custom||{},o=i.options.elements.rectangle,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderSkipped","borderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=Gt([u[r],s[r],o[r]],d,e);return l}}),zt=dt.valueOrDefault,Yt=dt.options.resolve;ut._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": ("+t.xLabel+", "+t.yLabel+", "+e.datasets[t.datasetIndex].data[t.index].r+")"}}}});var Ht=Tt.extend({dataElementType:qt.Point,update:function(t){var e=this,n=e.getMeta();dt.each(n.data,(function(n,a){e.updateElement(n,a,t)}))},updateElement:function(t,e,n){var a=this,r=a.getMeta(),i=t.custom||{},s=a.getScaleForId(r.xAxisID),u=a.getScaleForId(r.yAxisID),o=a._resolveElementOptions(t,e),l=a.getDataset().data[e],d=a.index,c=n?s.getPixelForDecimal(.5):s.getPixelForValue("object"==typeof l?l:NaN,e,d),f=n?u.getBasePixel():u.getPixelForValue(l,e,d);t._xScale=s,t._yScale=u,t._options=o,t._datasetIndex=d,t._index=e,t._model={backgroundColor:o.backgroundColor,borderColor:o.borderColor,borderWidth:o.borderWidth,hitRadius:o.hitRadius,pointStyle:o.pointStyle,rotation:o.rotation,radius:n?0:o.radius,skip:i.skip||isNaN(c)||isNaN(f),x:c,y:f},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=zt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=zt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=zt(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],u=t.custom||{},o=i.options.elements.point,l=s.data[e],d={},c={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},f=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,a=f.length;n<a;++n)d[r=f[n]]=Yt([u[r],s[r],o[r]],c,e);return d.radius=Yt([u.radius,l?l.r:void 0,s.radius,o.radius],c,e),d}}),Ut=dt.options.resolve,Wt=dt.valueOrDefault;ut._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,a=n.datasets,r=n.labels;if(a.length)for(var i=0;i<a[0].data.length;++i)e.push('<li><span style="background-color:'+a[0].backgroundColor[i]+'"></span>'),r[i]&&e.push(r[i]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,a){var r=t.getDatasetMeta(0),i=e.datasets[0],s=r.data[a],u=s&&s.custom||{},o=t.options.elements.arc;return{text:n,fillStyle:Ut([u.backgroundColor,i.backgroundColor,o.backgroundColor],void 0,a),strokeStyle:Ut([u.borderColor,i.borderColor,o.borderColor],void 0,a),lineWidth:Ut([u.borderWidth,i.borderWidth,o.borderWidth],void 0,a),hidden:isNaN(i.data[a])||r.data[a].hidden,index:a}})):[]}},onClick:function(t,e){var n,a,r,i=e.index,s=this.chart;for(n=0,a=(s.data.datasets||[]).length;n<a;++n)(r=s.getDatasetMeta(n)).data[i]&&(r.data[i].hidden=!r.data[i].hidden);s.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],a=": "+e.datasets[t.datasetIndex].data[t.index];return dt.isArray(n)?(n=n.slice())[0]+=a:n+=a,n}}}});var Kt=Tt.extend({dataElementType:qt.Arc,linkScales:dt.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e,n,a=this,r=a.chart,i=r.chartArea,s=r.options,u=i.right-i.left,o=i.bottom-i.top,l=Math.min(u,o),d={x:0,y:0},c=a.getMeta(),f=c.data,h=s.cutoutPercentage,g=s.circumference,p=a._getRingWeight(a.index);if(g<2*Math.PI){var b=s.rotation%(2*Math.PI),m=(b+=2*Math.PI*(b>=Math.PI?-1:b<-Math.PI?1:0))+g,y={x:Math.cos(b),y:Math.sin(b)},v={x:Math.cos(m),y:Math.sin(m)},x=b<=0&&m>=0||b<=2*Math.PI&&2*Math.PI<=m,_=b<=.5*Math.PI&&.5*Math.PI<=m||b<=2.5*Math.PI&&2.5*Math.PI<=m,T=b<=-Math.PI&&-Math.PI<=m||b<=Math.PI&&Math.PI<=m,w=b<=.5*-Math.PI&&.5*-Math.PI<=m||b<=1.5*Math.PI&&1.5*Math.PI<=m,O=h/100,S={x:T?-1:Math.min(y.x*(y.x<0?1:O),v.x*(v.x<0?1:O)),y:w?-1:Math.min(y.y*(y.y<0?1:O),v.y*(v.y<0?1:O))},I={x:x?1:Math.max(y.x*(y.x>0?1:O),v.x*(v.x>0?1:O)),y:_?1:Math.max(y.y*(y.y>0?1:O),v.y*(v.y>0?1:O))},N={width:.5*(I.x-S.x),height:.5*(I.y-S.y)};l=Math.min(u/N.width,o/N.height),d={x:-.5*(I.x+S.x),y:-.5*(I.y+S.y)}}for(e=0,n=f.length;e<n;++e)f[e]._options=a._resolveElementOptions(f[e],e);for(r.borderWidth=a.getMaxBorderWidth(),r.outerRadius=Math.max((l-r.borderWidth)/2,0),r.innerRadius=Math.max(h?r.outerRadius/100*h:0,0),r.radiusLength=(r.outerRadius-r.innerRadius)/(a._getVisibleDatasetWeightTotal()||1),r.offsetX=d.x*r.outerRadius,r.offsetY=d.y*r.outerRadius,c.total=a.calculateTotal(),a.outerRadius=r.outerRadius-r.radiusLength*a._getRingWeightOffset(a.index),a.innerRadius=Math.max(a.outerRadius-r.radiusLength*p,0),e=0,n=f.length;e<n;++e)a.updateElement(f[e],e,t)},updateElement:function(t,e,n){var a=this,r=a.chart,i=r.chartArea,s=r.options,u=s.animation,o=(i.left+i.right)/2,l=(i.top+i.bottom)/2,d=s.rotation,c=s.rotation,f=a.getDataset(),h=n&&u.animateRotate||t.hidden?0:a.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),g=t._options||{};dt.extend(t,{_datasetIndex:a.index,_index:e,_model:{backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,borderAlign:g.borderAlign,x:o+r.offsetX,y:l+r.offsetY,startAngle:d,endAngle:c,circumference:h,outerRadius:n&&u.animateScale?0:a.outerRadius,innerRadius:n&&u.animateScale?0:a.innerRadius,label:dt.valueAtIndexOrDefault(f.label,e,r.data.labels[e])}});var p=t._model;n&&u.animateRotate||(p.startAngle=0===e?s.rotation:a.getMeta().data[e-1]._model.endAngle,p.endAngle=p.startAngle+p.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),a=0;return dt.each(n.data,(function(n,r){t=e.data[r],isNaN(t)||n.hidden||(a+=Math.abs(t))})),a},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,a,r,i,s,u,o,l=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e<n;++e)if(d.isDatasetVisible(e)){t=(a=d.getDatasetMeta(e)).data,e!==this.index&&(i=a.controller);break}if(!t)return 0;for(e=0,n=t.length;e<n;++e)r=t[e],"inner"!==(s=i?i._resolveElementOptions(r,e):r._options).borderAlign&&(l=(o=s.hoverBorderWidth)>(l=(u=s.borderWidth)>l?u:l)?o:l);return l},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Wt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Wt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Wt(n.hoverBorderWidth,n.borderWidth)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=this.getDataset(),u=t.custom||{},o=i.options.elements.arc,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=Ut([u[r],s[r],o[r]],d,e);return l},_getRingWeightOffset:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&(e+=this._getRingWeight(n));return e},_getRingWeight:function(t){return Math.max(Wt(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});ut._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}});var $t=Bt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),Jt=dt.valueOrDefault,Zt=dt.options.resolve,Qt=dt.canvas._isPointInArea;function Xt(t,e){return Jt(t.showLine,e.showLines)}ut._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var te=Tt.extend({datasetElementType:qt.Line,dataElementType:qt.Point,update:function(t){var e,n,a=this,r=a.getMeta(),i=r.dataset,s=r.data||[],u=a.getScaleForId(r.yAxisID),o=a.getDataset(),l=Xt(o,a.chart.options);for(l&&(void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),i._scale=u,i._datasetIndex=a.index,i._children=s,i._model=a._resolveLineOptions(i),i.pivot()),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(l&&0!==i._model.tension&&a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},updateElement:function(t,e,n){var a,r,i=this,s=i.getMeta(),u=t.custom||{},o=i.getDataset(),l=i.index,d=o.data[e],c=i.getScaleForId(s.yAxisID),f=i.getScaleForId(s.xAxisID),h=s.dataset._model,g=i._resolvePointOptions(t,e);a=f.getPixelForValue("object"==typeof d?d:NaN,e,l),r=n?c.getBasePixel():i.calculatePointY(d,e,l),t._xScale=f,t._yScale=c,t._options=g,t._datasetIndex=l,t._index=e,t._model={x:a,y:r,skip:u.skip||isNaN(a)||isNaN(r),radius:g.radius,pointStyle:g.pointStyle,rotation:g.rotation,backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,tension:Jt(u.tension,h?h.tension:0),steppedLine:!!h&&h.steppedLine,hitRadius:g.hitRadius}},_resolvePointOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],u=t.custom||{},o=i.options.elements.point,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},f=Object.keys(c);for(n=0,a=f.length;n<a;++n)l[r=f[n]]=Zt([u[r],s[c[r]],s[r],o[r]],d,e);return l},_resolveLineOptions:function(t){var e,n,a,r=this.chart,i=r.data.datasets[this.index],s=t.custom||{},u=r.options,o=u.elements.line,l={},d=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill","cubicInterpolationMode"];for(e=0,n=d.length;e<n;++e)l[a=d[e]]=Zt([s[a],i[a],o[a]]);return l.spanGaps=Jt(i.spanGaps,u.spanGaps),l.tension=Jt(i.lineTension,o.tension),l.steppedLine=Zt([s.steppedLine,i.steppedLine,o.stepped]),l},calculatePointY:function(t,e,n){var a,r,i,s=this.chart,u=this.getMeta(),o=this.getScaleForId(u.yAxisID),l=0,d=0;if(o.options.stacked){for(a=0;a<n;a++)if(r=s.data.datasets[a],"line"===(i=s.getDatasetMeta(a)).type&&i.yAxisID===o.id&&s.isDatasetVisible(a)){var c=Number(o.getRightValue(r.data[e]));c<0?d+=c||0:l+=c||0}var f=Number(o.getRightValue(t));return o.getPixelForValue(f<0?d+f:l+f)}return o.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,a,r=this.chart,i=this.getMeta(),s=i.dataset._model,u=r.chartArea,o=i.data||[];function l(t,e,n){return Math.max(Math.min(t,n),e)}if(s.spanGaps&&(o=o.filter((function(t){return!t._model.skip}))),"monotone"===s.cubicInterpolationMode)dt.splineCurveMonotone(o);else for(t=0,e=o.length;t<e;++t)n=o[t]._model,a=dt.splineCurve(dt.previousItem(o,t)._model,n,dt.nextItem(o,t)._model,s.tension),n.controlPointPreviousX=a.previous.x,n.controlPointPreviousY=a.previous.y,n.controlPointNextX=a.next.x,n.controlPointNextY=a.next.y;if(r.options.elements.line.capBezierPoints)for(t=0,e=o.length;t<e;++t)Qt(n=o[t]._model,u)&&(t>0&&Qt(o[t-1]._model,u)&&(n.controlPointPreviousX=l(n.controlPointPreviousX,u.left,u.right),n.controlPointPreviousY=l(n.controlPointPreviousY,u.top,u.bottom)),t<o.length-1&&Qt(o[t+1]._model,u)&&(n.controlPointNextX=l(n.controlPointNextX,u.left,u.right),n.controlPointNextY=l(n.controlPointNextY,u.top,u.bottom)))},draw:function(){var t,e=this.chart,n=this.getMeta(),a=n.data||[],r=e.chartArea,i=a.length,s=0;for(Xt(this.getDataset(),e.options)&&(dt.canvas.clipArea(e.ctx,{left:r.left,right:r.right,top:r.top-(t=(n.dataset._model.borderWidth||0)/2),bottom:r.bottom+t}),n.dataset.draw(),dt.canvas.unclipArea(e.ctx));s<i;++s)a[s].draw(r)},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Jt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Jt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Jt(n.hoverBorderWidth,n.borderWidth),e.radius=Jt(n.hoverRadius,n.radius)}}),ee=dt.options.resolve;ut._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,a=n.datasets,r=n.labels;if(a.length)for(var i=0;i<a[0].data.length;++i)e.push('<li><span style="background-color:'+a[0].backgroundColor[i]+'"></span>'),r[i]&&e.push(r[i]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,a){var r=t.getDatasetMeta(0),i=e.datasets[0],s=r.data[a].custom||{},u=t.options.elements.arc;return{text:n,fillStyle:ee([s.backgroundColor,i.backgroundColor,u.backgroundColor],void 0,a),strokeStyle:ee([s.borderColor,i.borderColor,u.borderColor],void 0,a),lineWidth:ee([s.borderWidth,i.borderWidth,u.borderWidth],void 0,a),hidden:isNaN(i.data[a])||r.data[a].hidden,index:a}})):[]}},onClick:function(t,e){var n,a,r,i=e.index,s=this.chart;for(n=0,a=(s.data.datasets||[]).length;n<a;++n)(r=s.getDatasetMeta(n)).data[i].hidden=!r.data[i].hidden;s.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var ne=Tt.extend({dataElementType:qt.Arc,linkScales:dt.noop,update:function(t){var e,n,a,r=this,i=r.getDataset(),s=r.getMeta(),u=r.chart.options.startAngle||0,o=r._starts=[],l=r._angles=[],d=s.data;for(r._updateRadius(),s.count=r.countVisibleElements(),e=0,n=i.data.length;e<n;e++)o[e]=u,a=r._computeAngle(e),l[e]=a,u+=a;for(e=0,n=d.length;e<n;++e)d[e]._options=r._resolveElementOptions(d[e],e),r.updateElement(d[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,a=e.options,r=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max(r/2,0),e.innerRadius=Math.max(a.cutoutPercentage?e.outerRadius/100*a.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,n){var a=this,r=a.chart,i=a.getDataset(),s=r.options,u=s.animation,o=r.scale,l=r.data.labels,d=o.xCenter,c=o.yCenter,f=s.startAngle,h=t.hidden?0:o.getDistanceFromCenterForValue(i.data[e]),g=a._starts[e],p=g+(t.hidden?0:a._angles[e]),b=u.animateScale?0:o.getDistanceFromCenterForValue(i.data[e]),m=t._options||{};dt.extend(t,{_datasetIndex:a.index,_index:e,_scale:o,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:d,y:c,innerRadius:0,outerRadius:n?b:h,startAngle:n&&u.animateRotate?f:g,endAngle:n&&u.animateRotate?f:p,label:dt.valueAtIndexOrDefault(l,e,l[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return dt.each(e.data,(function(e,a){isNaN(t.data[a])||e.hidden||n++})),n},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor,r=dt.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=r(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=r(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=r(n.hoverBorderWidth,n.borderWidth)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=this.getDataset(),u=t.custom||{},o=i.options.elements.arc,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=ee([u[r],s[r],o[r]],d,e);return l},_computeAngle:function(t){var e=this,n=this.getMeta().count,a=e.getDataset(),r=e.getMeta();return isNaN(a.data[t])||r.data[t].hidden?0:ee([e.chart.options.elements.arc.angle,2*Math.PI/n],{chart:e.chart,dataIndex:t,dataset:a,datasetIndex:e.index},t)}});ut._set("pie",dt.clone(ut.doughnut)),ut._set("pie",{cutoutPercentage:0});var ae=Kt,re=dt.valueOrDefault,ie=dt.options.resolve;ut._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}});var se=Tt.extend({datasetElementType:qt.Line,dataElementType:qt.Point,linkScales:dt.noop,update:function(t){var e,n,a=this,r=a.getMeta(),i=r.dataset,s=r.data||[],u=a.chart.scale,o=a.getDataset();for(void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),i._scale=u,i._datasetIndex=a.index,i._children=s,i._loop=!0,i._model=a._resolveLineOptions(i),i.pivot(),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},updateElement:function(t,e,n){var a=this,r=t.custom||{},i=a.getDataset(),s=a.chart.scale,u=s.getPointPositionForValue(e,i.data[e]),o=a._resolvePointOptions(t,e),l=a.getMeta().dataset._model,d=n?s.xCenter:u.x,c=n?s.yCenter:u.y;t._scale=s,t._options=o,t._datasetIndex=a.index,t._index=e,t._model={x:d,y:c,skip:r.skip||isNaN(d)||isNaN(c),radius:o.radius,pointStyle:o.pointStyle,rotation:o.rotation,backgroundColor:o.backgroundColor,borderColor:o.borderColor,borderWidth:o.borderWidth,tension:re(r.tension,l?l.tension:0),hitRadius:o.hitRadius}},_resolvePointOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],u=t.custom||{},o=i.options.elements.point,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},f=Object.keys(c);for(n=0,a=f.length;n<a;++n)l[r=f[n]]=ie([u[r],s[c[r]],s[r],o[r]],d,e);return l},_resolveLineOptions:function(t){var e,n,a,r=this.chart,i=r.data.datasets[this.index],s=t.custom||{},u=r.options.elements.line,o={},l=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"];for(e=0,n=l.length;e<n;++e)o[a=l[e]]=ie([s[a],i[a],u[a]]);return o.tension=re(i.lineTension,u.tension),o},updateBezierControlPoints:function(){var t,e,n,a,r=this.getMeta(),i=this.chart.chartArea,s=r.data||[];function u(t,e,n){return Math.max(Math.min(t,n),e)}for(t=0,e=s.length;t<e;++t)n=s[t]._model,a=dt.splineCurve(dt.previousItem(s,t,!0)._model,n,dt.nextItem(s,t,!0)._model,n.tension),n.controlPointPreviousX=u(a.previous.x,i.left,i.right),n.controlPointPreviousY=u(a.previous.y,i.top,i.bottom),n.controlPointNextX=u(a.next.x,i.left,i.right),n.controlPointNextY=u(a.next.y,i.top,i.bottom)},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=re(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=re(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=re(n.hoverBorderWidth,n.borderWidth),e.radius=re(n.hoverRadius,n.radius)}});ut._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}});var ue={bar:Bt,bubble:Ht,doughnut:Kt,horizontalBar:$t,line:te,polarArea:ne,pie:ae,radar:se,scatter:te};function oe(t,e){return t.native?{x:t.x,y:t.y}:dt.getRelativePosition(t,e)}function le(t,e){var n,a,r,i,s;for(a=0,i=t.data.datasets.length;a<i;++a)if(t.isDatasetVisible(a))for(r=0,s=(n=t.getDatasetMeta(a)).data.length;r<s;++r){var u=n.data[r];u._view.skip||e(u)}}function de(t,e){var n=[];return le(t,(function(t){t.inRange(e.x,e.y)&&n.push(t)})),n}function ce(t,e,n,a){var r=Number.POSITIVE_INFINITY,i=[];return le(t,(function(t){if(!n||t.inRange(e.x,e.y)){var s=t.getCenterPoint(),u=a(e,s);u<r?(i=[t],r=u):u===r&&i.push(t)}})),i}function fe(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,a){var r=e?Math.abs(t.x-a.x):0,i=n?Math.abs(t.y-a.y):0;return Math.sqrt(Math.pow(r,2)+Math.pow(i,2))}}function he(t,e,n){var a=oe(e,t);n.axis=n.axis||"x";var r=fe(n.axis),i=n.intersect?de(t,a):ce(t,a,!1,r),s=[];return i.length?(t.data.datasets.forEach((function(e,n){if(t.isDatasetVisible(n)){var a=t.getDatasetMeta(n).data[i[0]._index];a&&!a._view.skip&&s.push(a)}})),s):[]}var ge={modes:{single:function(t,e){var n=oe(e,t),a=[];return le(t,(function(t){if(t.inRange(n.x,n.y))return a.push(t),a})),a.slice(0,1)},label:he,index:he,dataset:function(t,e,n){var a=oe(e,t);n.axis=n.axis||"xy";var r=fe(n.axis),i=n.intersect?de(t,a):ce(t,a,!1,r);return i.length>0&&(i=t.getDatasetMeta(i[0]._datasetIndex).data),i},"x-axis":function(t,e){return he(t,e,{intersect:!1})},point:function(t,e){return de(t,oe(e,t))},nearest:function(t,e,n){var a=oe(e,t);n.axis=n.axis||"xy";var r=fe(n.axis);return ce(t,a,n.intersect,r)},x:function(t,e,n){var a=oe(e,t),r=[],i=!1;return le(t,(function(t){t.inXRange(a.x)&&r.push(t),t.inRange(a.x,a.y)&&(i=!0)})),n.intersect&&!i&&(r=[]),r},y:function(t,e,n){var a=oe(e,t),r=[],i=!1;return le(t,(function(t){t.inYRange(a.y)&&r.push(t),t.inRange(a.x,a.y)&&(i=!0)})),n.intersect&&!i&&(r=[]),r}}};function pe(t,e){return dt.where(t,(function(t){return t.position===e}))}function be(t,e){t.forEach((function(t,e){return t._tmpIndex_=e,t})),t.sort((function(t,n){var a=e?n:t,r=e?t:n;return a.weight===r.weight?a._tmpIndex_-r._tmpIndex_:a.weight-r.weight})),t.forEach((function(t){delete t._tmpIndex_}))}function me(t,e){dt.each(t,(function(t){e[t.position]+=t.isHorizontal()?t.height:t.width}))}ut._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var ye,ve={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var a,r=["fullWidth","position","weight"],i=r.length,s=0;s<i;++s)n.hasOwnProperty(a=r[s])&&(e[a]=n[a])},update:function(t,e,n){if(t){var a=dt.options.toPadding((t.options.layout||{}).padding),r=a.left,i=a.right,s=a.top,u=a.bottom,o=pe(t.boxes,"left"),l=pe(t.boxes,"right"),d=pe(t.boxes,"top"),c=pe(t.boxes,"bottom"),f=pe(t.boxes,"chartArea");be(o,!0),be(l,!1),be(d,!0),be(c,!1);var h,g=o.concat(l),p=d.concat(c),b=g.concat(p),m=e-r-i,y=n-s-u,v=(e-m/2)/g.length,x=m,_=y,T={top:s,left:r,bottom:u,right:i},w=[];dt.each(b,(function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?m:x,y/2),_-=e.height):(e=t.update(v,_),x-=e.width),w.push({horizontal:n,width:e.width,box:t})})),h=function(t){var e=0,n=0,a=0,r=0;return dt.each(t,(function(t){if(t.getPadding){var i=t.getPadding();e=Math.max(e,i.top),n=Math.max(n,i.left),a=Math.max(a,i.bottom),r=Math.max(r,i.right)}})),{top:e,left:n,bottom:a,right:r}}(b),dt.each(g,A),me(g,T),dt.each(p,A),me(p,T),dt.each(g,(function(t){var e=dt.findNextWhere(w,(function(e){return e.box===t}));e&&t.update(e.width,_,{left:0,right:0,top:T.top,bottom:T.bottom})})),me(b,T={top:s,left:r,bottom:u,right:i});var O=Math.max(h.left-T.left,0);T.left+=O,T.right+=Math.max(h.right-T.right,0);var S=Math.max(h.top-T.top,0);T.top+=S,T.bottom+=Math.max(h.bottom-T.bottom,0);var I=n-T.top-T.bottom,N=e-T.left-T.right;N===x&&I===_||(dt.each(g,(function(t){t.height=I})),dt.each(p,(function(t){t.fullWidth||(t.width=N)})),_=I,x=N);var C=r+O,R=s+S;dt.each(o.concat(d),k),C+=x,R+=_,dt.each(l,k),dt.each(c,k),t.chartArea={left:T.left,top:T.top,right:T.left+x,bottom:T.top+_},dt.each(f,(function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(x,_)}))}function A(t){var e=dt.findNextWhere(w,(function(e){return e.box===t}));if(e)if(e.horizontal){var n={left:Math.max(T.left,h.left),right:Math.max(T.right,h.right),top:0,bottom:0};t.update(t.fullWidth?m:x,y/2,n)}else t.update(e.width,_)}function k(t){t.isHorizontal()?(t.left=t.fullWidth?r:T.left,t.right=t.fullWidth?e-i:T.left+x,t.top=R,t.bottom=R+t.height,R=t.bottom):(t.left=C,t.right=C+t.width,t.top=T.top,t.bottom=T.top+_,C=t.right)}}},xe=(ye=Object.freeze({default:"/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"}))&&ye.default||ye,_e=["animationstart","webkitAnimationStart"],Te={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function we(t,e){var n=dt.getStyle(t,e),a=n&&n.match(/^(\d+)(\.\d+)?px$/);return a?Number(a[1]):void 0}var Oe=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(n){}return t}()&&{passive:!0};function Se(t,e,n){t.addEventListener(e,n,Oe)}function Ie(t,e,n){t.removeEventListener(e,n,Oe)}function Ne(t,e,n,a,r){return{type:t,chart:e,native:r||null,x:void 0!==n?n:null,y:void 0!==a?a:null}}function Ce(t){var e=document.createElement("div");return e.className=t||"",e}var Re={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(){this._loaded||(this._loaded=!0,this.disableCSSInjection||function(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}(this,xe))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return this._ensureLoaded(),n&&n.canvas===t?(function(t,e){var n=t.style,a=t.getAttribute("height"),r=t.getAttribute("width");if(t.$chartjs={initial:{height:a,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===r||""===r){var i=we(t,"width");void 0!==i&&(t.width=i)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=we(t,"height");void 0!==i&&(t.height=s)}}(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e.$chartjs){var n=e.$chartjs.initial;["height","width"].forEach((function(t){var a=n[t];dt.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)})),dt.each(n.style||{},(function(t,n){e.style[n]=t})),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var a=t.canvas;if("resize"!==e){var r=n.$chartjs||(n.$chartjs={});Se(a,e,(r.proxies||(r.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=Te[t.type]||t.type,a=dt.getRelativePosition(t,e);return Ne(n,e,a.x,a.y,t)}(e,t))})}else!function(t,e,n){var a,r,i,s,u=t.$chartjs||(t.$chartjs={}),o=u.resizer=function(t){var e=Ce("chartjs-size-monitor"),n=Ce("chartjs-size-monitor-expand"),a=Ce("chartjs-size-monitor-shrink");n.appendChild(Ce()),a.appendChild(Ce()),e.appendChild(n),e.appendChild(a),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,a.scrollLeft=1e6,a.scrollTop=1e6};var r=function(){e._reset(),t()};return Se(n,"scroll",r.bind(n,"expand")),Se(a,"scroll",r.bind(a,"shrink")),e}((a=function(){if(u.resizer){var a=n.options.maintainAspectRatio&&t.parentNode,r=a?a.clientWidth:0;e(Ne("resize",n)),a&&a.clientWidth<r&&n.canvas&&e(Ne("resize",n))}},i=!1,s=[],function(){s=Array.prototype.slice.call(arguments),r=r||this,i||(i=!0,dt.requestAnimFrame.call(window,(function(){i=!1,a.apply(r,s)})))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),a=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};dt.each(_e,(function(e){Se(t,e,a)})),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,(function(){if(u.resizer){var e=t.parentNode;e&&e!==o.parentNode&&e.insertBefore(o,e.firstChild),o._reset()}}))}(a,n,t)},removeEventListener:function(t,e,n){var a,r,i,s=t.canvas;if("resize"!==e){var u=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];u&&Ie(s,e,u)}else i=(r=(a=s).$chartjs||{}).resizer,delete r.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(dt.each(_e,(function(e){Ie(t,e,n)})),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(a),i&&i.parentNode&&i.parentNode.removeChild(i)}};dt.addEvent=Se,dt.removeEvent=Ie;var Ae=dt.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},Re._enabled?Re:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}});ut._set("global",{plugins:{}});var ke={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach((function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)})),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var a,r,i,s,u,o=this.descriptors(t),l=o.length;for(a=0;a<l;++a)if("function"==typeof(u=(i=(r=o[a]).plugin)[e])&&((s=[t].concat(n||[])).push(r.options),!1===u.apply(i,s)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],a=[],r=t&&t.config||{},i=r.options&&r.options.plugins||{};return this._plugins.concat(r.plugins||[]).forEach((function(t){if(-1===n.indexOf(t)){var e=t.id,r=i[e];!1!==r&&(!0===r&&(r=dt.clone(ut.global.plugins[e])),n.push(t),a.push({plugin:t,options:r||{}}))}})),e.descriptors=a,e.id=this._cacheId,a},_invalidate:function(t){delete t.$plugins}},Ee={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=dt.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?dt.merge({},[ut.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=dt.extend(this.defaults[t],e))},addScalesToLayout:function(t){dt.each(t.scales,(function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,ve.addBox(t,e)}))}},Le=dt.valueOrDefault;ut._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:dt.noop,title:function(t,e){var n="",a=e.labels,r=a?a.length:0;if(t.length>0){var i=t[0];i.label?n=i.label:i.xLabel?n=i.xLabel:r>0&&i.index<r&&(n=a[i.index])}return n},afterTitle:dt.noop,beforeBody:dt.noop,beforeLabel:dt.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),dt.isNullOrUndef(t.value)?n+=t.yLabel:n+=t.value,n},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:dt.noop,afterBody:dt.noop,beforeFooter:dt.noop,footer:dt.noop,afterFooter:dt.noop}}});var De={average:function(t){if(!t.length)return!1;var e,n,a=0,r=0,i=0;for(e=0,n=t.length;e<n;++e){var s=t[e];if(s&&s.hasValue()){var u=s.tooltipPosition();a+=u.x,r+=u.y,++i}}return{x:a/i,y:r/i}},nearest:function(t,e){var n,a,r,i=e.x,s=e.y,u=Number.POSITIVE_INFINITY;for(n=0,a=t.length;n<a;++n){var o=t[n];if(o&&o.hasValue()){var l=o.getCenterPoint(),d=dt.distanceBetweenPoints(e,l);d<u&&(u=d,r=o)}}if(r){var c=r.tooltipPosition();i=c.x,s=c.y}return{x:i,y:s}}};function Pe(t,e){return e&&(dt.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Me(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function qe(t){var e=ut.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Le(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Le(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Le(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Le(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Le(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Le(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Le(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Le(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Le(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function je(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Fe(t){return Pe([],Me(t))}var Ve=gt.extend({initialize:function(){this._model=qe(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,a=n.beforeTitle.apply(t,arguments),r=n.title.apply(t,arguments),i=n.afterTitle.apply(t,arguments),s=[];return s=Pe(s,Me(a)),s=Pe(s,Me(r)),Pe(s,Me(i))},getBeforeBody:function(){return Fe(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,a=n._options.callbacks,r=[];return dt.each(t,(function(t){var i={before:[],lines:[],after:[]};Pe(i.before,Me(a.beforeLabel.call(n,t,e))),Pe(i.lines,a.label.call(n,t,e)),Pe(i.after,Me(a.afterLabel.call(n,t,e))),r.push(i)})),r},getAfterBody:function(){return Fe(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),r=e.afterFooter.apply(t,arguments),i=[];return i=Pe(i,Me(n)),i=Pe(i,Me(a)),Pe(i,Me(r))},update:function(t){var e,n,a,r,i,s,u,o,l,d,c=this,f=c._options,h=c._model,g=c._model=qe(f),p=c._active,b=c._data,m={xAlign:h.xAlign,yAlign:h.yAlign},y={x:h.x,y:h.y},v={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(p.length){g.opacity=1;var _=[],T=[];x=De[f.position].call(c,p,c._eventPosition);var w=[];for(e=0,n=p.length;e<n;++e)w.push((r=void 0,i=void 0,o=void 0,l=void 0,d=void 0,r=(a=p[e])._xScale,i=a._yScale||a._scale,s=a._index,l=(o=a._chart.getDatasetMeta(u=a._datasetIndex).controller)._getIndexScale(),d=o._getValueScale(),{xLabel:r?r.getLabelForIndex(s,u):"",yLabel:i?i.getLabelForIndex(s,u):"",label:l?""+l.getLabelForIndex(s,u):"",value:d?""+d.getLabelForIndex(s,u):"",index:s,datasetIndex:u,x:a._model.x,y:a._model.y}));f.filter&&(w=w.filter((function(t){return f.filter(t,b)}))),f.itemSort&&(w=w.sort((function(t,e){return f.itemSort(t,e,b)}))),dt.each(w,(function(t){_.push(f.callbacks.labelColor.call(c,t,c._chart)),T.push(f.callbacks.labelTextColor.call(c,t,c._chart))})),g.title=c.getTitle(w,b),g.beforeBody=c.getBeforeBody(w,b),g.body=c.getBody(w,b),g.afterBody=c.getAfterBody(w,b),g.footer=c.getFooter(w,b),g.x=x.x,g.y=x.y,g.caretPadding=f.caretPadding,g.labelColors=_,g.labelTextColors=T,g.dataPoints=w,v=function(t,e){var n=t._chart.ctx,a=2*e.yPadding,r=0,i=e.body,s=i.reduce((function(t,e){return t+e.before.length+e.lines.length+e.after.length}),0),u=e.title.length,o=e.footer.length,l=e.titleFontSize,d=e.bodyFontSize,c=e.footerFontSize;a+=u*l,a+=u?(u-1)*e.titleSpacing:0,a+=u?e.titleMarginBottom:0,a+=(s+=e.beforeBody.length+e.afterBody.length)*d,a+=s?(s-1)*e.bodySpacing:0,a+=o?e.footerMarginTop:0,a+=o*c,a+=o?(o-1)*e.footerSpacing:0;var f=0,h=function(t){r=Math.max(r,n.measureText(t).width+f)};return n.font=dt.fontString(l,e._titleFontStyle,e._titleFontFamily),dt.each(e.title,h),n.font=dt.fontString(d,e._bodyFontStyle,e._bodyFontFamily),dt.each(e.beforeBody.concat(e.afterBody),h),f=e.displayColors?d+2:0,dt.each(i,(function(t){dt.each(t.before,h),dt.each(t.lines,h),dt.each(t.after,h)})),f=0,n.font=dt.fontString(c,e._footerFontStyle,e._footerFontFamily),dt.each(e.footer,h),{width:r+=2*e.xPadding,height:a}}(this,g),y=function(t,e,n,a){var r=t.x,i=t.y,s=t.caretPadding,u=n.xAlign,o=n.yAlign,l=t.caretSize+s,d=t.cornerRadius+s;return"right"===u?r-=e.width:"center"===u&&((r-=e.width/2)+e.width>a.width&&(r=a.width-e.width),r<0&&(r=0)),"top"===o?i+=l:i-="bottom"===o?e.height+l:e.height/2,"center"===o?"left"===u?r+=l:"right"===u&&(r-=l):"left"===u?r-=d:"right"===u&&(r+=d),{x:r,y:i}}(g,v,m=function(t,e){var n,a,r,i,s,u=t._model,o=t._chart,l=t._chart.chartArea,d="center",c="center";u.y<e.height?c="top":u.y>o.height-e.height&&(c="bottom");var f=(l.left+l.right)/2,h=(l.top+l.bottom)/2;"center"===c?(n=function(t){return t<=f},a=function(t){return t>f}):(n=function(t){return t<=e.width/2},a=function(t){return t>=o.width-e.width/2}),r=function(t){return t+e.width+u.caretSize+u.caretPadding>o.width},i=function(t){return t-e.width-u.caretSize-u.caretPadding<0},s=function(t){return t<=h?"top":"bottom"},n(u.x)?(d="left",r(u.x)&&(d="center",c=s(u.y))):a(u.x)&&(d="right",i(u.x)&&(d="center",c=s(u.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,v),c._chart)}else g.opacity=0;return g.xAlign=m.xAlign,g.yAlign=m.yAlign,g.x=y.x,g.y=y.y,g.width=v.width,g.height=v.height,g.caretX=x.x,g.caretY=x.y,c._model=g,t&&f.custom&&f.custom.call(c,g),c},drawCaret:function(t,e){var n=this._chart.ctx,a=this.getCaretPosition(t,e,this._view);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var a,r,i,s,u,o,l=n.caretSize,d=n.cornerRadius,c=n.xAlign,f=n.yAlign,h=t.x,g=t.y,p=e.width,b=e.height;if("center"===f)u=g+b/2,"left"===c?(r=(a=h)-l,i=a,s=u+l,o=u-l):(r=(a=h+p)+l,i=a,s=u-l,o=u+l);else if("left"===c?(a=(r=h+d+l)-l,i=r+l):"right"===c?(a=(r=h+p-d-l)-l,i=r+l):(a=(r=n.caretX)-l,i=r+l),"top"===f)u=(s=g)-l,o=s;else{u=(s=g+b)+l,o=s;var m=i;i=a,a=m}return{x1:a,x2:r,x3:i,y1:s,y2:u,y3:o}},drawTitle:function(t,e,n){var a=e.title;if(a.length){t.x=je(e,e._titleAlign),n.textAlign=e._titleAlign,n.textBaseline="top";var r,i,s=e.titleFontSize,u=e.titleSpacing;for(n.fillStyle=e.titleFontColor,n.font=dt.fontString(s,e._titleFontStyle,e._titleFontFamily),r=0,i=a.length;r<i;++r)n.fillText(a[r],t.x,t.y),t.y+=s+u,r+1===a.length&&(t.y+=e.titleMarginBottom-u)}},drawBody:function(t,e,n){var a,r=e.bodyFontSize,i=e.bodySpacing,s=e._bodyAlign,u=e.body,o=e.displayColors,l=e.labelColors,d=0,c=o?je(e,"left"):0;n.textAlign=s,n.textBaseline="top",n.font=dt.fontString(r,e._bodyFontStyle,e._bodyFontFamily),t.x=je(e,s);var f=function(e){n.fillText(e,t.x+d,t.y),t.y+=r+i};n.fillStyle=e.bodyFontColor,dt.each(e.beforeBody,f),d=o&&"right"!==s?"center"===s?r/2+1:r+2:0,dt.each(u,(function(i,s){n.fillStyle=a=e.labelTextColors[s],dt.each(i.before,f),dt.each(i.lines,(function(i){o&&(n.fillStyle=e.legendColorBackground,n.fillRect(c,t.y,r,r),n.lineWidth=1,n.strokeStyle=l[s].borderColor,n.strokeRect(c,t.y,r,r),n.fillStyle=l[s].backgroundColor,n.fillRect(c+1,t.y+1,r-2,r-2),n.fillStyle=a),f(i)})),dt.each(i.after,f)})),d=0,dt.each(e.afterBody,f),t.y-=i},drawFooter:function(t,e,n){var a=e.footer;a.length&&(t.x=je(e,e._footerAlign),t.y+=e.footerMarginTop,n.textAlign=e._footerAlign,n.textBaseline="top",n.fillStyle=e.footerFontColor,n.font=dt.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),dt.each(a,(function(a){n.fillText(a,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing})))},drawBackground:function(t,e,n,a){n.fillStyle=e.backgroundColor,n.strokeStyle=e.borderColor,n.lineWidth=e.borderWidth;var r=e.xAlign,i=e.yAlign,s=t.x,u=t.y,o=a.width,l=a.height,d=e.cornerRadius;n.beginPath(),n.moveTo(s+d,u),"top"===i&&this.drawCaret(t,a),n.lineTo(s+o-d,u),n.quadraticCurveTo(s+o,u,s+o,u+d),"center"===i&&"right"===r&&this.drawCaret(t,a),n.lineTo(s+o,u+l-d),n.quadraticCurveTo(s+o,u+l,s+o-d,u+l),"bottom"===i&&this.drawCaret(t,a),n.lineTo(s+d,u+l),n.quadraticCurveTo(s,u+l,s,u+l-d),"center"===i&&"left"===r&&this.drawCaret(t,a),n.lineTo(s,u+d),n.quadraticCurveTo(s,u,s+d,u),n.closePath(),n.fill(),e.borderWidth>0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},a={x:e.x,y:e.y},r=Math.abs(e.opacity<.001)?0:e.opacity;this._options.enabled&&(e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length)&&(t.save(),t.globalAlpha=r,this.drawBackground(a,e,t,n),a.y+=e.yPadding,this.drawTitle(a,e,t),this.drawBody(a,e,t),this.drawFooter(a,e,t),t.restore())}},handleEvent:function(t){var e,n=this,a=n._options;return n._lastActive=n._lastActive||[],n._active="mouseout"===t.type?[]:n._chart.getElementsAtEventForMode(t,a.mode,a),(e=!dt.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(a.enabled||a.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}});Ve.positioners=De;var Ge=dt.valueOrDefault;function Be(){return dt.merge({},[].slice.call(arguments),{merger:function(t,e,n,a){if("xAxes"===t||"yAxes"===t){var r,i,s,u=n[t].length;for(e[t]||(e[t]=[]),r=0;r<u;++r)i=Ge((s=n[t][r]).type,"xAxes"===t?"category":"linear"),r>=e[t].length&&e[t].push({}),dt.merge(e[t][r],!e[t][r].type||s.type&&s.type!==e[t][r].type?[Ee.getScaleDefaults(i),s]:s)}else dt._merger(t,e,n,a)}})}function ze(){return dt.merge({},[].slice.call(arguments),{merger:function(t,e,n,a){var r=e[t]||{},i=n[t];"scales"===t?e[t]=Be(r,i):"scale"===t?e[t]=dt.merge(r,[Ee.getScaleDefaults(i.type),i]):dt._merger(t,e,n,a)}})}function Ye(t){var e=t.options;dt.each(t.scales,(function(e){ve.removeBox(t,e)})),e=ze(ut.global,ut[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function He(t){return"top"===t||"bottom"===t}ut._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Ue=function(t,e){return this.construct(t,e),this};dt.extend(Ue.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=ze(ut.global,ut[t.type],t.options||{}),t}(e);var a=Ae.acquireContext(t,e),r=a&&a.canvas,i=r&&r.height,s=r&&r.width;n.id=dt.uid(),n.ctx=a,n.canvas=r,n.config=e,n.width=s,n.height=i,n.aspectRatio=i?s/i:null,n.options=e.options,n._bufferedRender=!1,n.chart=n,n.controller=n,Ue.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),a&&r?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return ke.notify(t,"beforeInit"),dt.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),ke.notify(t,"afterInit"),t},clear:function(){return dt.canvas.clear(this),this},stop:function(){return mt.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,a=e.canvas,r=n.maintainAspectRatio&&e.aspectRatio||null,i=Math.max(0,Math.floor(dt.getMaximumWidth(a))),s=Math.max(0,Math.floor(r?i/r:dt.getMaximumHeight(a)));if((e.width!==i||e.height!==s)&&(a.width=e.width=i,a.height=e.height=s,a.style.width=i+"px",a.style.height=s+"px",dt.retinaScale(e,n.devicePixelRatio),!t)){var u={width:i,height:s};ke.notify(e,"resize",[u]),n.onResize&&n.onResize(e,u),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;dt.each(e.xAxes,(function(t,e){t.id=t.id||"x-axis-"+e})),dt.each(e.yAxes,(function(t,e){t.id=t.id||"y-axis-"+e})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},a=[],r=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(a=a.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&a.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),dt.each(a,(function(e){var a=e.options,i=a.id,s=Ge(a.type,e.dtype);He(a.position)!==He(e.dposition)&&(a.position=e.dposition),r[i]=!0;var u=null;if(i in n&&n[i].type===s)(u=n[i]).options=a,u.ctx=t.ctx,u.chart=t;else{var o=Ee.getScaleConstructor(s);if(!o)return;u=new o({id:i,type:s,options:a,ctx:t.ctx,chart:t}),n[u.id]=u}u.mergeTicksOptions(),e.isDefault&&(t.scale=u)})),dt.each(r,(function(t,e){t||delete n[e]})),t.scales=n,Ee.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return dt.each(t.data.datasets,(function(n,a){var r=t.getDatasetMeta(a),i=n.type||t.config.type;if(r.type&&r.type!==i&&(t.destroyDatasetMeta(a),r=t.getDatasetMeta(a)),r.type=i,r.controller)r.controller.updateIndex(a),r.controller.linkScales();else{var s=ue[r.type];if(void 0===s)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new s(t,a),e.push(r.controller)}}),t),e},resetElements:function(){var t=this;dt.each(t.data.datasets,(function(e,n){t.getDatasetMeta(n).controller.reset()}),t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),Ye(e),ke._invalidate(e),!1!==ke.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var n=e.buildOrUpdateControllers();dt.each(e.data.datasets,(function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()}),e),e.updateLayout(),e.options.animation&&e.options.animation.duration&&dt.each(n,(function(t){t.reset()})),e.updateDatasets(),e.tooltip.initialize(),e.lastActive=[],ke.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){!1!==ke.notify(this,"beforeLayout")&&(ve.update(this,this.width,this.height),ke.notify(this,"afterScaleUpdate"),ke.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==ke.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);ke.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==ke.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),ke.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=e.options.animation,a=Ge(t.duration,n&&n.duration),r=t.lazy;if(!1!==ke.notify(e,"beforeRender")){var i=function(t){ke.notify(e,"afterRender"),dt.callback(n&&n.onComplete,[t],e)};if(n&&a){var s=new bt({numSteps:a/16.66,easing:t.easing||n.easing,render:function(t,e){var n=e.currentStep,a=n/e.numSteps;t.draw((0,dt.easing.effects[e.easing])(a),a,n)},onAnimationProgress:n.onProgress,onAnimationComplete:i});mt.addAnimation(e,s,a,r)}else e.draw(),i(new bt({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),dt.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==ke.notify(e,"beforeDraw",[t])&&(dt.each(e.boxes,(function(t){t.draw(e.chartArea)}),e),e.drawDatasets(t),e._drawTooltip(t),ke.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,n=(this.data.datasets||[]).length;e<n;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==ke.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);ke.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),a={meta:n,index:t,easingValue:e};!1!==ke.notify(this,"beforeDatasetDraw",[a])&&(n.controller.draw(e),ke.notify(this,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==ke.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),ke.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return ge.modes.single(this,t)},getElementsAtEvent:function(t){return ge.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ge.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var a=ge.modes[e];return"function"==typeof a?a(this,t,n):[]},getDatasetAtEvent:function(t){return ge.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],a=n._meta&&n._meta[e];a&&(a.controller.destroy(),delete n._meta[e])},destroy:function(){var t,e,n=this,a=n.canvas;for(n.stop(),t=0,e=n.data.datasets.length;t<e;++t)n.destroyDatasetMeta(t);a&&(n.unbindEvents(),dt.canvas.clear(n),Ae.releaseContext(n.ctx),n.canvas=null,n.ctx=null),ke.notify(n,"destroy"),delete Ue.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Ve({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};dt.each(t.options.events,(function(a){Ae.addEventListener(t,a,n),e[a]=n})),t.options.responsive&&(n=function(){t.resize()},Ae.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,dt.each(e,(function(e,n){Ae.removeEventListener(t,n,e)})))},updateHoverStyle:function(t,e,n){var a,r,i,s=n?"setHoverStyle":"removeHoverStyle";for(r=0,i=t.length;r<i;++r)(a=t[r])&&this.getDatasetMeta(a._datasetIndex).controller[s](a)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==ke.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var a=e.handleEvent(t);n&&(a=n._start?n.handleEvent(t):a|n.handleEvent(t)),ke.notify(e,"afterEvent",[t]);var r=e._bufferedRequest;return r?e.render(r):a&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,n=this,a=n.options||{},r=a.hover;return n.lastActive=n.lastActive||[],n.active="mouseout"===t.type?[]:n.getElementsAtEventForMode(t,r.mode,r),dt.callback(a.onHover||a.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||a.onClick&&a.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,r.mode,!1),n.active.length&&r.mode&&n.updateHoverStyle(n.active,r.mode,!0),e=!dt.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),Ue.instances={};var We=Ue;function Ke(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function $e(t){this.options=t||{}}Ue.Controller=Ue,Ue.types={},dt.configMerge=ze,dt.scaleMerge=Be,dt.extend($e.prototype,{formats:Ke,parse:Ke,format:Ke,add:Ke,diff:Ke,startOf:Ke,endOf:Ke,_create:function(t){return t}}),$e.override=function(t){dt.extend($e.prototype,t)};var Je={_date:$e},Ze={formatters:{values:function(t){return dt.isArray(t)?t:""+t},linear:function(t,e,n){var a=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var r=dt.log10(Math.abs(a)),i="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var s=dt.log10(Math.abs(t));i=t.toExponential(Math.floor(s)-Math.floor(r))}else{var u=-1*Math.floor(r);u=Math.max(Math.min(u,20),0),i=t.toFixed(u)}else i="0";return i},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(dt.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}},Qe=dt.valueOrDefault,Xe=dt.valueAtIndexOrDefault;function tn(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(t[e].label);return a}function en(t,e,n){return dt.isArray(e)?dt.longestText(t,n,e):t.measureText(e).width}ut._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:Ze.formatters.values,minor:{},major:{}}});var nn=gt.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){dt.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var a,r,i,s,u,o,l=this;for(l.beforeUpdate(),l.maxWidth=t,l.maxHeight=e,l.margins=dt.extend({left:0,right:0,top:0,bottom:0},n),l._maxLabelLines=0,l.longestLabelWidth=0,l.longestTextCache=l.longestTextCache||{},l.beforeSetDimensions(),l.setDimensions(),l.afterSetDimensions(),l.beforeDataLimits(),l.determineDataLimits(),l.afterDataLimits(),l.beforeBuildTicks(),u=l.buildTicks()||[],u=l.afterBuildTicks(u)||u,l.beforeTickToLabelConversion(),i=l.convertTicksToLabels(u)||l.ticks,l.afterTickToLabelConversion(),l.ticks=i,a=0,r=i.length;a<r;++a)s=i[a],(o=u[a])?o.label=s:u.push(o={label:s,major:!1});return l._ticks=u,l.beforeCalculateTickRotation(),l.calculateTickRotation(),l.afterCalculateTickRotation(),l.beforeFit(),l.fit(),l.afterFit(),l.afterUpdate(),l.minSize},afterUpdate:function(){dt.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){dt.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){dt.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){dt.callback(this.options.beforeDataLimits,[this])},determineDataLimits:dt.noop,afterDataLimits:function(){dt.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){dt.callback(this.options.beforeBuildTicks,[this])},buildTicks:dt.noop,afterBuildTicks:function(t){var e=this;return dt.isArray(t)&&t.length?dt.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=dt.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){dt.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){dt.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){dt.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,a=tn(t._ticks),r=dt.options._parseFont(n);e.font=r.string;var i=n.minRotation||0;if(a.length&&t.options.display&&t.isHorizontal())for(var s,u=dt.longestText(e,r.string,a,t.longestTextCache),o=u,l=t.getPixelForTick(1)-t.getPixelForTick(0)-6;o>l&&i<n.maxRotation;){var d=dt.toRadians(i);if(s=Math.cos(d),Math.sin(d)*u>t.maxHeight){i--;break}i++,o=s*u}t.labelRotation=i},afterCalculateTickRotation:function(){dt.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){dt.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=tn(t._ticks),a=t.options,r=a.ticks,i=a.scaleLabel,s=a.gridLines,u=t._isVisible(),o=a.position,l=t.isHorizontal(),d=dt.options._parseFont,c=d(r),f=a.gridLines.tickMarkLength;if(e.width=l?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:u&&s.drawTicks?f:0,e.height=l?u&&s.drawTicks?f:0:t.maxHeight,i.display&&u){var h=d(i),g=dt.options.toPadding(i.padding),p=h.lineHeight+g.height;l?e.height+=p:e.width+=p}if(r.display&&u){var b=dt.longestText(t.ctx,c.string,n,t.longestTextCache),m=dt.numberOfLabelLines(n),y=.5*c.size,v=t.options.ticks.padding;if(t._maxLabelLines=m,t.longestLabelWidth=b,l){var x=dt.toRadians(t.labelRotation),_=Math.cos(x),T=Math.sin(x);e.height=Math.min(t.maxHeight,e.height+(T*b+c.lineHeight*m+y)+v),t.ctx.font=c.string;var w,O,S=en(t.ctx,n[0],c.string),I=en(t.ctx,n[n.length-1],c.string),N=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(n.length-1);0!==t.labelRotation?(w="bottom"===o?_*S:_*y,O="bottom"===o?_*y:_*I):(w=S/2,O=I/2),t.paddingLeft=Math.max(w-N,0)+3,t.paddingRight=Math.max(O-C,0)+3}else r.mirror?b=0:b+=v+y,e.width=Math.min(t.maxWidth,e.width+b),t.paddingTop=c.size/2,t.paddingBottom=c.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){dt.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(dt.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:dt.noop,getPixelForValue:dt.noop,getValueForPixel:dt.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var a=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),r=a*t+e.paddingLeft;return n&&(r+=a/2),e.left+r+(e.isFullWidth()?e.margins.left:0)}return e.top+t*((e.height-(e.paddingTop+e.paddingBottom))/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;return e.isHorizontal()?e.left+((e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft)+(e.isFullWidth()?e.margins.left:0):e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,a=this,r=a.isHorizontal(),i=t.length,s=!1,u=a.options.ticks.minor.maxTicksLimit,o=a._tickSize()*(i-1),l=r?a.width-(a.paddingLeft+a.paddingRight):a.height-(a.paddingTop+a.PaddingBottom),d=[];for(o>l&&(s=1+Math.floor(o/l)),i>u&&(s=Math.max(s,1+Math.floor(i/u))),e=0;e<i;e++)n=t[e],s>1&&e%s>0&&delete n.label,d.push(n);return d},_tickSize:function(){var t=this,e=t.isHorizontal(),n=t.options.ticks.minor,a=dt.toRadians(t.labelRotation),r=Math.abs(Math.cos(a)),i=Math.abs(Math.sin(a)),s=n.autoSkipPadding||0,u=t.longestLabelWidth+s||0,o=dt.options._parseFont(n),l=t._maxLabelLines*o.lineHeight+s||0;return e?l*r>u*i?u/r:l/i:l*i<u*r?l/r:u/i},_isVisible:function(){var t,e,n,a=this.chart,r=this.options.display;if("auto"!==r)return!!r;for(t=0,e=a.data.datasets.length;t<e;++t)if(a.isDatasetVisible(t)&&((n=a.getDatasetMeta(t)).xAxisID===this.id||n.yAxisID===this.id))return!0;return!1},draw:function(t){var e=this,n=e.options;if(e._isVisible()){var a,r,i,s=e.chart,u=e.ctx,o=ut.global.defaultFontColor,l=n.ticks.minor,d=n.ticks.major||l,c=n.gridLines,f=n.scaleLabel,h=n.position,g=0!==e.labelRotation,p=l.mirror,b=e.isHorizontal(),m=dt.options._parseFont,y=l.display&&l.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=Qe(l.fontColor,o),x=m(l),_=x.lineHeight,T=Qe(d.fontColor,o),w=m(d),O=l.padding,S=l.labelOffset,I=c.drawTicks?c.tickMarkLength:0,N=Qe(f.fontColor,o),C=m(f),R=dt.options.toPadding(f.padding),A=dt.toRadians(e.labelRotation),k=[],E=c.drawBorder?Xe(c.lineWidth,0,0):0,L=dt._alignPixel;if("top"===h?(a=L(s,e.bottom,E),r=e.bottom-I,i=a-E/2):"bottom"===h?(a=L(s,e.top,E),r=a+E/2,i=e.top+I):"left"===h?(a=L(s,e.right,E),r=e.right-I,i=a-E/2):(a=L(s,e.left,E),r=a+E/2,i=e.left+I),dt.each(y,(function(a,u){if(!dt.isNullOrUndef(a.label)){var o,l,d,f,m,y,v,x,T,w,N,C,R,D,P,M,q=a.label;u===e.zeroLineIndex&&n.offset===c.offsetGridLines?(o=c.zeroLineWidth,l=c.zeroLineColor,d=c.zeroLineBorderDash||[],f=c.zeroLineBorderDashOffset||0):(o=Xe(c.lineWidth,u),l=Xe(c.color,u),d=c.borderDash||[],f=c.borderDashOffset||0);var j=dt.isArray(q)?q.length:1,F=function(t,e,n){var a=t.getPixelForTick(e);return n&&(1===t.getTicks().length?a-=t.isHorizontal()?Math.max(a-t.left,t.right-a):Math.max(a-t.top,t.bottom-a):a-=0===e?(t.getPixelForTick(1)-a)/2:(a-t.getPixelForTick(e-1))/2),a}(e,u,c.offsetGridLines);if(b){var V=I+O;F<e.left-1e-7&&(l="rgba(0,0,0,0)"),m=v=T=N=L(s,F,o),y=r,x=i,R=e.getPixelForTick(u)+S,"top"===h?(w=L(s,t.top,E)+E/2,C=t.bottom,P=((g?1:.5)-j)*_,M=g?"left":"center",D=e.bottom-V):(w=t.top,C=L(s,t.bottom,E)-E/2,P=(g?0:.5)*_,M=g?"right":"center",D=e.top+V)}else{var G=(p?0:I)+O;F<e.top-1e-7&&(l="rgba(0,0,0,0)"),m=r,v=i,y=x=w=C=L(s,F,o),D=e.getPixelForTick(u)+S,P=(1-j)*_/2,"left"===h?(T=L(s,t.left,E)+E/2,N=t.right,M=p?"left":"right",R=e.right-G):(T=t.left,N=L(s,t.right,E)-E/2,M=p?"right":"left",R=e.left+G)}k.push({tx1:m,ty1:y,tx2:v,ty2:x,x1:T,y1:w,x2:N,y2:C,labelX:R,labelY:D,glWidth:o,glColor:l,glBorderDash:d,glBorderDashOffset:f,rotation:-1*A,label:q,major:a.major,textOffset:P,textAlign:M})}})),dt.each(k,(function(t){var e=t.glWidth,n=t.glColor;if(c.display&&e&&n&&(u.save(),u.lineWidth=e,u.strokeStyle=n,u.setLineDash&&(u.setLineDash(t.glBorderDash),u.lineDashOffset=t.glBorderDashOffset),u.beginPath(),c.drawTicks&&(u.moveTo(t.tx1,t.ty1),u.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(u.moveTo(t.x1,t.y1),u.lineTo(t.x2,t.y2)),u.stroke(),u.restore()),l.display){u.save(),u.translate(t.labelX,t.labelY),u.rotate(t.rotation),u.font=t.major?w.string:x.string,u.fillStyle=t.major?T:v,u.textBaseline="middle",u.textAlign=t.textAlign;var a=t.label,r=t.textOffset;if(dt.isArray(a))for(var i=0;i<a.length;++i)u.fillText(""+a[i],0,r),r+=_;else u.fillText(a,0,r);u.restore()}})),f.display){var D,P,M=0,q=C.lineHeight/2;if(b)D=e.left+(e.right-e.left)/2,P="bottom"===h?e.bottom-q-R.bottom:e.top+q+R.top;else{var j="left"===h;D=j?e.left+q+R.top:e.right-q-R.top,P=e.top+(e.bottom-e.top)/2,M=j?-.5*Math.PI:.5*Math.PI}u.save(),u.translate(D,P),u.rotate(M),u.textAlign="center",u.textBaseline="middle",u.fillStyle=N,u.font=C.string,u.fillText(f.labelString,0,0),u.restore()}if(E){var F,V,G,B,z=E,Y=Xe(c.lineWidth,y.length-1,0);b?(F=L(s,e.left,z)-z/2,V=L(s,e.right,Y)+Y/2,G=B=a):(G=L(s,e.top,z)-z/2,B=L(s,e.bottom,Y)+Y/2,F=V=a),u.lineWidth=E,u.strokeStyle=Xe(c.color,0),u.beginPath(),u.moveTo(F,G),u.lineTo(V,B),u.stroke()}}}}),an=nn.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,n=e.getLabels();e.minIndex=0,e.maxIndex=n.length-1,void 0!==e.options.ticks.min&&(t=n.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=n.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=n[e.minIndex],e.max=n[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,a=n.chart;return a.getDatasetMeta(e).controller._getValueScaleId()===n.id?n.getRightValue(a.data.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,a=this,r=a.options.offset,i=Math.max(a.maxIndex+1-a.minIndex-(r?0:1),1);if(null!=t&&(n=a.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var s=a.getLabels().indexOf(t=n||t);e=-1!==s?s:e}if(a.isHorizontal()){var u=a.width/i,o=u*(e-a.minIndex);return r&&(o+=u/2),a.left+o}var l=a.height/i,d=l*(e-a.minIndex);return r&&(d+=l/2),a.top+d},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,a=Math.max(e._ticks.length-(n?0:1),1),r=e.isHorizontal(),i=(r?e.width:e.height)/a;return t-=r?e.left:e.top,n&&(t-=i/2),(t<=0?0:Math.round(t/i))+e.minIndex},getBasePixel:function(){return this.bottom}});an._defaults={position:"bottom"};var rn=dt.isNullOrUndef,sn=nn.extend({getRightValue:function(t){return"string"==typeof t?+t:nn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=dt.sign(t.min),a=dt.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var r=void 0!==e.min||void 0!==e.suggestedMin,i=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(t.min=null===t.min?e.suggestedMin:Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(t.max=null===t.max?e.suggestedMax:Math.max(t.max,e.suggestedMax)),r!==i&&t.min>=t.max&&(r?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,a=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),a=a||11),a&&(t=Math.min(a,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:dt.noop,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),a={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:dt.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=function(t,e){var n,a,r,i,s=[],u=t.stepSize,o=u||1,l=t.maxTicks-1,d=t.min,c=t.max,f=t.precision,h=e.min,g=e.max,p=dt.niceNum((g-h)/l/o)*o;if(p<1e-14&&rn(d)&&rn(c))return[h,g];(i=Math.ceil(g/p)-Math.floor(h/p))>l&&(p=dt.niceNum(i*p/l/o)*o),u||rn(f)?n=Math.pow(10,dt._decimalPlaces(p)):(n=Math.pow(10,f),p=Math.ceil(p*n)/n),a=Math.floor(h/p)*p,r=Math.ceil(g/p)*p,u&&(!rn(d)&&dt.almostWhole(d/p,p/1e3)&&(a=d),!rn(c)&&dt.almostWhole(c/p,p/1e3)&&(r=c)),i=dt.almostEquals(i=(r-a)/p,Math.round(i),p/1e3)?Math.round(i):Math.ceil(i),a=Math.round(a*n)/n,r=Math.round(r*n)/n,s.push(rn(d)?a:d);for(var b=1;b<i;++b)s.push(Math.round((a+b*p)*n)/n);return s.push(rn(c)?r:c),s}(a,t);t.handleDirectionalChanges(),t.max=dt.max(r),t.min=dt.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),nn.prototype.convertTicksToLabels.call(t)}}),un={position:"left",ticks:{callback:Ze.formatters.linear}},on=sn.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function i(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&dt.each(a,(function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&i(a)&&void 0!==a.stack&&(s=!0)}})),e.stacked||s){var u={};dt.each(a,(function(a,r){var s=n.getDatasetMeta(r),o=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");void 0===u[o]&&(u[o]={positiveValues:[],negativeValues:[]});var l=u[o].positiveValues,d=u[o].negativeValues;n.isDatasetVisible(r)&&i(s)&&dt.each(a.data,(function(n,a){var r=+t.getRightValue(n);isNaN(r)||s.data[a].hidden||(l[a]=l[a]||0,d[a]=d[a]||0,e.relativePoints?l[a]=100:r<0?d[a]+=r:l[a]+=r)}))})),dt.each(u,(function(e){var n=e.positiveValues.concat(e.negativeValues),a=dt.min(n),r=dt.max(n);t.min=null===t.min?a:Math.min(t.min,a),t.max=null===t.max?r:Math.max(t.max,r)}))}else dt.each(a,(function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&i(r)&&dt.each(e.data,(function(e,n){var a=+t.getRightValue(e);isNaN(a)||r.data[n].hidden||((null===t.min||a<t.min)&&(t.min=a),(null===t.max||a>t.max)&&(t.max=a))}))}));t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=dt.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,n=e.start,a=+e.getRightValue(t),r=e.end-n;return e.isHorizontal()?e.left+e.width/r*(a-n):e.bottom-e.height/r*(a-n)},getValueForPixel:function(t){var e=this,n=e.isHorizontal();return e.start+(n?t-e.left:e.bottom-t)/(n?e.width:e.height)*(e.end-e.start)},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});on._defaults=un;var ln=dt.valueOrDefault,dn={position:"left",ticks:{callback:Ze.formatters.logarithmic}};function cn(t,e){return dt.isFinite(t)&&t>=0?t:e}var fn=nn.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function i(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var s=e.stacked;if(void 0===s&&dt.each(a,(function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&i(a)&&void 0!==a.stack&&(s=!0)}})),e.stacked||s){var u={};dt.each(a,(function(a,r){var s=n.getDatasetMeta(r),o=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");n.isDatasetVisible(r)&&i(s)&&(void 0===u[o]&&(u[o]=[]),dt.each(a.data,(function(e,n){var a=u[o],r=+t.getRightValue(e);isNaN(r)||s.data[n].hidden||r<0||(a[n]=a[n]||0,a[n]+=r)})))})),dt.each(u,(function(e){if(e.length>0){var n=dt.min(e),a=dt.max(e);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?a:Math.max(t.max,a)}}))}else dt.each(a,(function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&i(r)&&dt.each(e.data,(function(e,n){var a=+t.getRightValue(e);isNaN(a)||r.data[n].hidden||a<0||((null===t.min||a<t.min)&&(t.min=a),(null===t.max||a>t.max)&&(t.max=a),0!==a&&(null===t.minNotZero||a<t.minNotZero)&&(t.minNotZero=a))}))}));this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=cn(e.min,t.min),t.max=cn(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(dt.log10(t.min))-1),t.max=Math.pow(10,Math.floor(dt.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(dt.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(dt.log10(t.min))+1):10),null===t.minNotZero&&(t.minNotZero=t.min>0?t.min:t.max<1?Math.pow(10,Math.floor(dt.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),a={min:cn(e.min),max:cn(e.max)},r=t.ticks=function(t,e){var n,a,r=[],i=ln(t.min,Math.pow(10,Math.floor(dt.log10(e.min)))),s=Math.floor(dt.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,s));0===i?(n=Math.floor(dt.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),r.push(i),i=a*Math.pow(10,n)):(n=Math.floor(dt.log10(i)),a=Math.floor(i/Math.pow(10,n)));var o=n<0?Math.pow(10,Math.abs(n)):1;do{r.push(i),10==++a&&(a=1,o=++n>=0?1:o),i=Math.round(a*Math.pow(10,n)*o)/o}while(n<s||n===s&&a<u);var l=ln(t.max,i);return r.push(l),r}(a,t);t.max=dt.max(r),t.min=dt.min(r),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&r.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),nn.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(dt.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,n,a,r,i,s=this,u=s.options.ticks,o=u.reverse,l=dt.log10,d=s._getFirstTickValue(s.minNotZero),c=0;return t=+s.getRightValue(t),o?(a=s.end,r=s.start,i=-1):(a=s.start,r=s.end,i=1),s.isHorizontal()?(e=s.width,n=o?s.right:s.left):(e=s.height,i*=-1,n=o?s.top:s.bottom),t!==a&&(0===a&&(e-=c=ln(u.fontSize,ut.global.defaultFontSize),a=d),0!==t&&(c+=e/(l(r)-l(a))*(l(t)-l(a))),n+=i*c),n},getValueForPixel:function(t){var e,n,a,r,i=this,s=i.options.ticks,u=s.reverse,o=dt.log10,l=i._getFirstTickValue(i.minNotZero);if(u?(n=i.end,a=i.start):(n=i.start,a=i.end),i.isHorizontal()?(e=i.width,r=u?i.right-t:t-i.left):(e=i.height,r=u?t-i.top:i.bottom-t),r!==n){if(0===n){var d=ln(s.fontSize,ut.global.defaultFontSize);r-=d,e-=d,n=l}r*=o(a)-o(n),r/=e,r=Math.pow(10,o(n)+r)}return r}});fn._defaults=dn;var hn=dt.valueOrDefault,gn=dt.valueAtIndexOrDefault,pn=dt.options.resolve,bn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:Ze.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function mn(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function yn(t){var e=t.ticks;return e.display&&t.display?hn(e.fontSize,ut.global.defaultFontSize)+2*e.backdropPaddingY:0}function vn(t,e,n,a,r){return t===a||t===r?{start:e-n/2,end:e+n/2}:t<a||t>r?{start:e-n,end:e}:{start:e,end:e+n}}function xn(t){return 0===t||180===t?"center":t<180?"left":"right"}function _n(t,e,n,a){var r,i,s=n.y+a/2;if(dt.isArray(e))for(r=0,i=e.length;r<i;++r)t.fillText(e[r],n.x,s),s+=a;else t.fillText(e,n.x,s)}function Tn(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function wn(t){return dt.isNumber(t)?t:0}var On=sn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=yn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;dt.each(e.data.datasets,(function(r,i){if(e.isDatasetVisible(i)){var s=e.getDatasetMeta(i);dt.each(r.data,(function(e,r){var i=+t.getRightValue(e);isNaN(i)||s.data[r].hidden||(n=Math.min(i,n),a=Math.max(i,a))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=a===Number.NEGATIVE_INFINITY?0:a,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/yn(this.options))},convertTicksToLabels:function(){var t=this;sn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,a,r=dt.options._parseFont(t.options.pointLabels),i={l:0,r:t.width,t:0,b:t.height-t.paddingTop},s={};t.ctx.font=r.string,t._pointLabelSizes=[];var u,o,l,d=mn(t);for(e=0;e<d;e++){a=t.getPointPosition(e,t.drawingArea+5),u=t.ctx,o=r.lineHeight,n=dt.isArray(l=t.pointLabels[e]||"")?{w:dt.longestText(u,u.font,l),h:l.length*o}:{w:u.measureText(l).width,h:o},t._pointLabelSizes[e]=n;var c=t.getIndexAngle(e),f=dt.toDegrees(c)%360,h=vn(f,a.x,n.w,0,180),g=vn(f,a.y,n.h,90,270);h.start<i.l&&(i.l=h.start,s.l=c),h.end>i.r&&(i.r=h.end,s.r=c),g.start<i.t&&(i.t=g.start,s.t=c),g.end>i.b&&(i.b=g.end,s.b=c)}t.setReductions(t.drawingArea,i,s)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var a=this,r=e.l/Math.sin(n.l),i=Math.max(e.r-a.width,0)/Math.sin(n.r),s=-e.t/Math.cos(n.t),u=-Math.max(e.b-(a.height-a.paddingTop),0)/Math.cos(n.b);r=wn(r),i=wn(i),s=wn(s),u=wn(u),a.drawingArea=Math.min(Math.floor(t-(r+i)/2),Math.floor(t-(s+u)/2)),a.setCenterPoint(r,i,s,u)},setCenterPoint:function(t,e,n,a){var r=this,i=n+r.drawingArea,s=r.height-r.paddingTop-a-r.drawingArea;r.xCenter=Math.floor((t+r.drawingArea+(r.width-e-r.drawingArea))/2+r.left),r.yCenter=Math.floor((i+s)/2+r.top+r.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/mn(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,a=e.ticks;if(e.display){var r=t.ctx,i=this.getIndexAngle(0),s=dt.options._parseFont(a);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,n=t.options,a=n.angleLines,r=n.gridLines,i=n.pointLabels,s=hn(a.lineWidth,r.lineWidth),u=hn(a.color,r.color),o=yn(n);e.save(),e.lineWidth=s,e.strokeStyle=u,e.setLineDash&&(e.setLineDash(pn([a.borderDash,r.borderDash,[]])),e.lineDashOffset=pn([a.borderDashOffset,r.borderDashOffset,0]));var l=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),d=dt.options._parseFont(i);e.font=d.string,e.textBaseline="middle";for(var c=mn(t)-1;c>=0;c--){if(a.display&&s&&u){var f=t.getPointPosition(c,l);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(f.x,f.y),e.stroke()}if(i.display){var h=t.getPointPosition(c,l+(0===c?o/2:0)+5),g=gn(i.fontColor,c,ut.global.defaultFontColor);e.fillStyle=g;var p=t.getIndexAngle(c),b=dt.toDegrees(p);e.textAlign=xn(b),Tn(b,t._pointLabelSizes[c],h),_n(e,t.pointLabels[c]||"",h,d.lineHeight)}}e.restore()}(t),dt.each(t.ticks,(function(e,u){if(u>0||a.reverse){var o=t.getDistanceFromCenterForValue(t.ticksAsNumbers[u]);if(n.display&&0!==u&&function(t,e,n,a){var r,i=t.ctx,s=e.circular,u=mn(t),o=gn(e.color,a-1),l=gn(e.lineWidth,a-1);if((s||u)&&o&&l){if(i.save(),i.strokeStyle=o,i.lineWidth=l,i.setLineDash&&(i.setLineDash(e.borderDash||[]),i.lineDashOffset=e.borderDashOffset||0),i.beginPath(),s)i.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{r=t.getPointPosition(0,n),i.moveTo(r.x,r.y);for(var d=1;d<u;d++)r=t.getPointPosition(d,n),i.lineTo(r.x,r.y)}i.closePath(),i.stroke(),i.restore()}}(t,n,o,u),a.display){var l=hn(a.fontColor,ut.global.defaultFontColor);if(r.font=s.string,r.save(),r.translate(t.xCenter,t.yCenter),r.rotate(i),a.showLabelBackdrop){var d=r.measureText(e).width;r.fillStyle=a.backdropColor,r.fillRect(-d/2-a.backdropPaddingX,-o-s.size/2-a.backdropPaddingY,d+2*a.backdropPaddingX,s.size+2*a.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=l,r.fillText(e,0,-o),r.restore()}}}))}}});On._defaults=bn;var Sn=dt.valueOrDefault,In=Number.MIN_SAFE_INTEGER||-9007199254740991,Nn=Number.MAX_SAFE_INTEGER||9007199254740991,Cn={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},Rn=Object.keys(Cn);function An(t,e){return t-e}function kn(t){var e,n,a,r={},i=[];for(e=0,n=t.length;e<n;++e)r[a=t[e]]||(r[a]=!0,i.push(a));return i}function En(t,e,n,a){var r=function(t,e,n){for(var a,r,i,s=0,u=t.length-1;s>=0&&s<=u;){if(i=t[a=s+u>>1],!(r=t[a-1]||null))return{lo:null,hi:i};if(i[e]<n)s=a+1;else{if(!(r[e]>n))return{lo:r,hi:i};u=a-1}}return{lo:i,hi:null}}(t,e,n),i=r.lo?r.hi?r.lo:t[t.length-2]:t[0],s=r.lo?r.hi?r.hi:t[t.length-1]:t[1],u=s[e]-i[e];return i[a]+(s[a]-i[a])*(u?(n-i[e])/u:0)}function Ln(t,e){var n=t._adapter,a=t.options.time,r=a.parser,i=r||a.format,s=e;return"function"==typeof r&&(s=r(s)),dt.isFinite(s)||(s="string"==typeof i?n.parse(s,i):n.parse(s)),null!==s?+s:(r||"function"!=typeof i||(s=i(e),dt.isFinite(s)||(s=n.parse(s))),s)}function Dn(t,e){if(dt.isNullOrUndef(e))return null;var n=t.options.time,a=Ln(t,t.getRightValue(e));return null===a||n.round&&(a=+t._adapter.startOf(a,n.round)),a}function Pn(t){for(var e=Rn.indexOf(t)+1,n=Rn.length;e<n;++e)if(Cn[Rn[e]].common)return Rn[e]}var Mn=nn.extend({initialize:function(){this.mergeTicksOptions(),nn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),a=t._adapter=new Je._date(e.adapters.date);return n.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),dt.mergeIf(n.displayFormats,a.formats()),nn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),nn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,a,r,i,s=this,u=s.chart,o=s._adapter,l=s.options.time,d=l.unit||"day",c=Nn,f=In,h=[],g=[],p=[],b=u.data.labels||[];for(t=0,n=b.length;t<n;++t)p.push(Dn(s,b[t]));for(t=0,n=(u.data.datasets||[]).length;t<n;++t)if(u.isDatasetVisible(t))if(dt.isObject((r=u.data.datasets[t].data)[0]))for(g[t]=[],e=0,a=r.length;e<a;++e)i=Dn(s,r[e]),h.push(i),g[t][e]=i;else{for(e=0,a=p.length;e<a;++e)h.push(p[e]);g[t]=p.slice(0)}else g[t]=[];p.length&&(p=kn(p).sort(An),c=Math.min(c,p[0]),f=Math.max(f,p[p.length-1])),h.length&&(h=kn(h).sort(An),c=Math.min(c,h[0]),f=Math.max(f,h[h.length-1])),c=Dn(s,l.min)||c,f=Dn(s,l.max)||f,c=c===Nn?+o.startOf(Date.now(),d):c,f=f===In?+o.endOf(Date.now(),d)+1:f,s.min=Math.min(c,f),s.max=Math.max(c+1,f),s._horizontal=s.isHorizontal(),s._table=[],s._timestamps={data:h,datasets:g,labels:p}},buildTicks:function(){var t,e,n,a=this,r=a.min,i=a.max,s=a.options,u=s.time,o=[],l=[];switch(s.ticks.source){case"data":o=a._timestamps.data;break;case"labels":o=a._timestamps.labels;break;case"auto":default:o=function(t,e,n,a){var r,i=t._adapter,s=t.options,u=s.time,o=u.unit||function(t,e,n,a){var r,i,s=Rn.length;for(r=Rn.indexOf(t);r<s-1;++r)if((i=Cn[Rn[r]]).common&&Math.ceil((n-e)/((i.steps?i.steps[i.steps.length-1]:Nn)*i.size))<=a)return Rn[r];return Rn[s-1]}(u.minUnit,e,n,a),l=Pn(o),d=Sn(u.stepSize,u.unitStepSize),c="week"===o&&u.isoWeekday,f=s.ticks.major.enabled,h=Cn[o],g=e,p=n,b=[];for(d||(d=function(t,e,n,a){var r,i,s,u=e-t,o=Cn[n],l=o.size,d=o.steps;if(!d)return Math.ceil(u/(a*l));for(r=0,i=d.length;r<i&&(s=d[r],!(Math.ceil(u/(l*s))<=a));++r);return s}(e,n,o,a)),c&&(g=+i.startOf(g,"isoWeek",c),p=+i.startOf(p,"isoWeek",c)),g=+i.startOf(g,c?"day":o),(p=+i.startOf(p,c?"day":o))<n&&(p=+i.add(p,1,o)),r=g,f&&l&&!c&&!u.round&&(r=+i.startOf(r,l),r=+i.add(r,~~((g-r)/(h.size*d))*d,o));r<p;r=+i.add(r,d,o))b.push(+r);return b.push(+r),b}(a,r,i,a.getLabelCapacity(r))}for("ticks"===s.bounds&&o.length&&(r=o[0],i=o[o.length-1]),r=Dn(a,u.min)||r,i=Dn(a,u.max)||i,t=0,e=o.length;t<e;++t)(n=o[t])>=r&&n<=i&&l.push(n);return a.min=r,a.max=i,a._unit=u.unit||function(t,e,n,a,r){var i,s;for(i=Rn.length-1;i>=Rn.indexOf(n);i--)if(Cn[s=Rn[i]].common&&t._adapter.diff(r,a,s)>=e.length)return s;return Rn[n?Rn.indexOf(n):0]}(a,l,u.minUnit,a.min,a.max),a._majorUnit=Pn(a._unit),a._table=function(t,e,n,a){if("linear"===a||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var r,i,s,u,o,l=[],d=[e];for(r=0,i=t.length;r<i;++r)(u=t[r])>e&&u<n&&d.push(u);for(d.push(n),r=0,i=d.length;r<i;++r)o=d[r+1],u=d[r],void 0!==(s=d[r-1])&&void 0!==o&&Math.round((o+s)/2)===u||l.push({time:u,pos:r/(i-1)});return l}(a._timestamps.data,r,i,s.distribution),a._offsets=function(t,e,n,a,r){var i,s,u=0,o=0;return r.offset&&e.length&&(r.time.min||(i=En(t,"time",e[0],"pos"),u=1===e.length?1-i:(En(t,"time",e[1],"pos")-i)/2),r.time.max||(s=En(t,"time",e[e.length-1],"pos"),o=1===e.length?s:(s-En(t,"time",e[e.length-2],"pos"))/2)),{start:u,end:o}}(a._table,l,0,0,s),s.ticks.reverse&&l.reverse(),function(t,e,n){var a,r,i,s,u=[];for(a=0,r=e.length;a<r;++a)i=e[a],s=!!n&&i===+t._adapter.startOf(i,n),u.push({value:i,major:s});return u}(a,l,a._majorUnit)},getLabelForIndex:function(t,e){var n=this,a=n._adapter,r=n.chart.data,i=n.options.time,s=r.labels&&t<r.labels.length?r.labels[t]:"",u=r.datasets[e].data[t];return dt.isObject(u)&&(s=n.getRightValue(u)),i.tooltipFormat?a.format(Ln(n,s),i.tooltipFormat):"string"==typeof s?s:a.format(Ln(n,s),i.displayFormats.datetime)},tickFormatFunction:function(t,e,n,a){var r=this._adapter,i=this.options,s=i.time.displayFormats,u=s[this._unit],o=this._majorUnit,l=s[o],d=+r.startOf(t,o),c=i.ticks.major,f=c.enabled&&o&&l&&t===d,h=r.format(t,a||(f?l:u)),g=f?c:i.ticks.minor,p=Sn(g.callback,g.userCallback);return p?p(h,e,n):h},convertTicksToLabels:function(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(this.tickFormatFunction(t[e].value,e,t));return a},getPixelForOffset:function(t){var e=this,n=e.options.ticks.reverse,a=e._horizontal?e.width:e.height,r=e._horizontal?n?e.right:e.left:n?e.bottom:e.top,i=En(e._table,"time",t,"pos"),s=a*(e._offsets.start+i)/(e._offsets.start+1+e._offsets.end);return n?r-s:r+s},getPixelForValue:function(t,e,n){var a=null;if(void 0!==e&&void 0!==n&&(a=this._timestamps.datasets[n][e]),null===a&&(a=Dn(this,t)),null!==a)return this.getPixelForOffset(a)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,n=e._horizontal?e.width:e.height,a=En(e._table,"pos",(n?(t-(e._horizontal?e.left:e.top))/n:0)*(e._offsets.start+1+e._offsets.start)-e._offsets.end,"time");return e._adapter._create(a)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,a=dt.toRadians(e.maxRotation),r=Math.cos(a),i=Math.sin(a);return n*r+Sn(e.fontSize,ut.global.defaultFontSize)*i},getLabelCapacity:function(t){var e=this,n=e.tickFormatFunction(t,0,[],e.options.time.displayFormats.millisecond),a=e.getLabelWidth(n),r=e.isHorizontal()?e.width:e.height,i=Math.floor(r/a);return i>0?i:1}});Mn._defaults={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};var qn={category:an,linear:on,logarithmic:fn,radialLinear:On,time:Mn},jn={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Je._date.override("function"==typeof t?{_id:"moment",formats:function(){return jn},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,a){return t(e).add(n,a).valueOf()},diff:function(e,n,a){return t.duration(t(e).diff(t(n))).as(a)},startOf:function(e,n,a){return e=t(e),"isoWeek"===n?e.isoWeekday(a).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),ut._set("global",{plugins:{filler:{propagate:!0}}});var Fn={dataset:function(t){var e=t.fill,n=t.chart,a=n.getDatasetMeta(e),r=a&&n.isDatasetVisible(e)&&a.dataset._children||[],i=r.length||0;return i?function(t,e){return e<i&&r[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,a=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===a?t.y:a}}}};function Vn(t,e,n){var a,r=t._model||{},i=r.fill;if(void 0===i&&(i=!!r.backgroundColor),!1===i||null===i)return!1;if(!0===i)return"origin";if(a=parseFloat(i,10),isFinite(a)&&Math.floor(a)===a)return"-"!==i[0]&&"+"!==i[0]||(a=e+a),!(a===e||a<0||a>=n)&&a;switch(i){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return i;default:return!1}}function Gn(t){var e,n=t.el._model||{},a=t.el._scale||{},r=t.fill,i=null;if(isFinite(r))return null;if("start"===r?i=void 0===n.scaleBottom?a.bottom:n.scaleBottom:"end"===r?i=void 0===n.scaleTop?a.top:n.scaleTop:void 0!==n.scaleZero?i=n.scaleZero:a.getBasePosition?i=a.getBasePosition():a.getBasePixel&&(i=a.getBasePixel()),null!=i){if(void 0!==i.x&&void 0!==i.y)return i;if(dt.isFinite(i))return{x:(e=a.isHorizontal())?i:null,y:e?null:i}}return null}function Bn(t,e,n){var a,r=t[e].fill,i=[e];if(!n)return r;for(;!1!==r&&-1===i.indexOf(r);){if(!isFinite(r))return r;if(!(a=t[r]))return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function zn(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),Fn[n](t))}function Yn(t){return t&&!t.skip}function Hn(t,e,n,a,r){var i;if(a&&r){for(t.moveTo(e[0].x,e[0].y),i=1;i<a;++i)dt.canvas.lineTo(t,e[i-1],e[i]);for(t.lineTo(n[r-1].x,n[r-1].y),i=r-1;i>0;--i)dt.canvas.lineTo(t,n[i],n[i-1],!0)}}var Un={id:"filler",afterDatasetsUpdate:function(t,e){var n,a,r,i,s=(t.data.datasets||[]).length,u=e.propagate,o=[];for(a=0;a<s;++a)i=null,(r=(n=t.getDatasetMeta(a)).dataset)&&r._model&&r instanceof qt.Line&&(i={visible:t.isDatasetVisible(a),fill:Vn(r,a,s),chart:t,el:r}),n.$filler=i,o.push(i);for(a=0;a<s;++a)(i=o[a])&&(i.fill=Bn(o,a,u),i.boundary=Gn(i),i.mapper=zn(i))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,r=n.el,i=r._view,s=r._children||[],u=n.mapper,o=i.backgroundColor||ut.global.defaultColor;u&&o&&s.length&&(dt.canvas.clipArea(a,t.chartArea),function(t,e,n,a,r,i){var s,u,o,l,d,c,f,h=e.length,g=a.spanGaps,p=[],b=[],m=0,y=0;for(t.beginPath(),s=0,u=h+!!i;s<u;++s)d=n(l=e[o=s%h]._view,o,a),c=Yn(l),f=Yn(d),c&&f?(m=p.push(l),y=b.push(d)):m&&y&&(g?(c&&p.push(l),f&&b.push(d)):(Hn(t,p,b,m,y),m=y=0,p=[],b=[]));Hn(t,p,b,m,y),t.closePath(),t.fillStyle=r,t.fill()}(a,s,u,i,o,r._loop),dt.canvas.unclipArea(a))}}},Wn=dt.noop,Kn=dt.valueOrDefault;function $n(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}ut._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,a=this.chart,r=a.getDatasetMeta(n);r.hidden=null===r.hidden?!a.data.datasets[n].hidden:null,a.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return dt.isArray(e.datasets)?e.datasets.map((function(e,n){return{text:e.label,fillStyle:dt.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}}),this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var Jn=gt.extend({initialize:function(t){dt.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:Wn,update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=n,a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeBuildLabels(),a.buildLabels(),a.afterBuildLabels(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:Wn,beforeSetDimensions:Wn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Wn,beforeBuildLabels:Wn,buildLabels:function(){var t=this,e=t.options.labels||{},n=dt.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter((function(n){return e.filter(n,t.chart.data)}))),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:Wn,beforeFit:Wn,fit:function(){var t=this,e=t.options,n=e.labels,a=e.display,r=t.ctx,i=dt.options._parseFont(n),s=i.size,u=t.legendHitBoxes=[],o=t.minSize,l=t.isHorizontal();if(l?(o.width=t.maxWidth,o.height=a?10:0):(o.width=a?10:0,o.height=t.maxHeight),a)if(r.font=i.string,l){var d=t.lineWidths=[0],c=0;r.textAlign="left",r.textBaseline="top",dt.each(t.legendItems,(function(t,e){var a=$n(n,s)+s/2+r.measureText(t.text).width;(0===e||d[d.length-1]+a+n.padding>o.width)&&(c+=s+n.padding,d[d.length-(e>0?0:1)]=n.padding),u[e]={left:0,top:0,width:a,height:s},d[d.length-1]+=a+n.padding})),o.height+=c}else{var f=n.padding,h=t.columnWidths=[],g=n.padding,p=0,b=0,m=s+f;dt.each(t.legendItems,(function(t,e){var a=$n(n,s)+s/2+r.measureText(t.text).width;e>0&&b+m>o.height-f&&(g+=p+n.padding,h.push(p),p=0,b=0),p=Math.max(p,a),b+=m,u[e]={left:0,top:0,width:a,height:s}})),g+=p,h.push(p),o.width+=g}t.width=o.width,t.height=o.height},afterFit:Wn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,a=ut.global,r=a.defaultColor,i=a.elements.line,s=t.width,u=t.lineWidths;if(e.display){var o,l=t.ctx,d=Kn(n.fontColor,a.defaultFontColor),c=dt.options._parseFont(n),f=c.size;l.textAlign="left",l.textBaseline="middle",l.lineWidth=.5,l.strokeStyle=d,l.fillStyle=d,l.font=c.string;var h=$n(n,f),g=t.legendHitBoxes,p=t.isHorizontal();o=p?{x:t.left+(s-u[0])/2+n.padding,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var b=f+n.padding;dt.each(t.legendItems,(function(a,d){var c=l.measureText(a.text).width,m=h+f/2+c,y=o.x,v=o.y;p?d>0&&y+m+n.padding>t.left+t.minSize.width&&(v=o.y+=b,o.line++,y=o.x=t.left+(s-u[o.line])/2+n.padding):d>0&&v+b>t.top+t.minSize.height&&(y=o.x=y+t.columnWidths[o.line]+n.padding,v=o.y=t.top+n.padding,o.line++),function(t,n,a){if(!(isNaN(h)||h<=0)){l.save();var s=Kn(a.lineWidth,i.borderWidth);if(l.fillStyle=Kn(a.fillStyle,r),l.lineCap=Kn(a.lineCap,i.borderCapStyle),l.lineDashOffset=Kn(a.lineDashOffset,i.borderDashOffset),l.lineJoin=Kn(a.lineJoin,i.borderJoinStyle),l.lineWidth=s,l.strokeStyle=Kn(a.strokeStyle,r),l.setLineDash&&l.setLineDash(Kn(a.lineDash,i.borderDash)),e.labels&&e.labels.usePointStyle){var u=h*Math.SQRT2/2;dt.canvas.drawPoint(l,a.pointStyle,u,t+h/2,n+f/2)}else 0!==s&&l.strokeRect(t,n,h,f),l.fillRect(t,n,h,f);l.restore()}}(y,v,a),g[d].left=y,g[d].top=v,function(t,e,n,a){var r=f/2,i=h+r+t,s=e+r;l.fillText(n.text,i,s),n.hidden&&(l.beginPath(),l.lineWidth=2,l.moveTo(i,s),l.lineTo(i+a,s),l.stroke())}(y,v,a,c),p?o.x+=m+n.padding:o.y+=b}))}},_getLegendItemAt:function(t,e){var n,a,r,i=this;if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)for(r=i.legendHitBoxes,n=0;n<r.length;++n)if(t>=(a=r[n]).left&&t<=a.left+a.width&&e>=a.top&&e<=a.top+a.height)return i.legendItems[n];return null},handleEvent:function(t){var e,n=this,a=n.options,r="mouseup"===t.type?"click":t.type;if("mousemove"===r){if(!a.onHover&&!a.onLeave)return}else{if("click"!==r)return;if(!a.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===r?e&&a.onClick&&a.onClick.call(n,t.native,e):(a.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&a.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),a.onHover&&e&&a.onHover.call(n,t.native,e))}});function Zn(t,e){var n=new Jn({ctx:t.ctx,options:e,chart:t});ve.configure(t,n,e),ve.addBox(t,n),t.legend=n}var Qn={id:"legend",_element:Jn,beforeInit:function(t){var e=t.options.legend;e&&Zn(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(dt.mergeIf(e,ut.global.legend),n?(ve.configure(t,n,e),n.options=e):Zn(t,e)):n&&(ve.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Xn=dt.noop;ut._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var ta=gt.extend({initialize:function(t){dt.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Xn,update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=n,a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeBuildLabels(),a.buildLabels(),a.afterBuildLabels(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:Xn,beforeSetDimensions:Xn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Xn,beforeBuildLabels:Xn,buildLabels:Xn,afterBuildLabels:Xn,beforeFit:Xn,fit:function(){var t=this,e=t.options,n=e.display,a=t.minSize,r=dt.isArray(e.text)?e.text.length:1,i=dt.options._parseFont(e),s=n?r*i.lineHeight+2*e.padding:0;t.isHorizontal()?(a.width=t.maxWidth,a.height=s):(a.width=s,a.height=t.maxHeight),t.width=a.width,t.height=a.height},afterFit:Xn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var a,r,i,s=dt.options._parseFont(n),u=s.lineHeight,o=u/2+n.padding,l=0,d=t.top,c=t.left,f=t.bottom,h=t.right;e.fillStyle=dt.valueOrDefault(n.fontColor,ut.global.defaultFontColor),e.font=s.string,t.isHorizontal()?(r=c+(h-c)/2,i=d+o,a=h-c):(r="left"===n.position?c+o:h-o,i=d+(f-d)/2,a=f-d,l=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(r,i),e.rotate(l),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(dt.isArray(g))for(var p=0,b=0;b<g.length;++b)e.fillText(g[b],0,p,a),p+=u;else e.fillText(g,0,0,a);e.restore()}}});function ea(t,e){var n=new ta({ctx:t.ctx,options:e,chart:t});ve.configure(t,n,e),ve.addBox(t,n),t.titleBlock=n}var na={},aa=Un,ra=Qn,ia={id:"title",_element:ta,beforeInit:function(t){var e=t.options.title;e&&ea(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(dt.mergeIf(e,ut.global.title),n?(ve.configure(t,n,e),n.options=e):ea(t,e)):n&&(ve.removeBox(t,n),delete t.titleBlock)}};for(var sa in na.filler=aa,na.legend=ra,na.title=ia,We.helpers=dt,function(){function t(t,e,n){var a;return"string"==typeof t?(a=parseInt(t,10),-1!==t.indexOf("%")&&(a=a/100*e.parentNode[n])):a=t,a}function e(t){return null!=t&&"none"!==t}function n(n,a,r){var i=document.defaultView,s=dt._getParentNode(n),u=i.getComputedStyle(n)[a],o=i.getComputedStyle(s)[a],l=e(u),d=e(o),c=Number.POSITIVE_INFINITY;return l||d?Math.min(l?t(u,n,r):c,d?t(o,s,r):c):"none"}dt.where=function(t,e){if(dt.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return dt.each(t,(function(t){e(t)&&n.push(t)})),n},dt.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var a=0,r=t.length;a<r;++a)if(e.call(n,t[a],a,t))return a;return-1},dt.findNextWhere=function(t,e,n){dt.isNullOrUndef(n)&&(n=-1);for(var a=n+1;a<t.length;a++){var r=t[a];if(e(r))return r}},dt.findPreviousWhere=function(t,e,n){dt.isNullOrUndef(n)&&(n=t.length);for(var a=n-1;a>=0;a--){var r=t[a];if(e(r))return r}},dt.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},dt.almostEquals=function(t,e,n){return Math.abs(t-e)<n},dt.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},dt.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},dt.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},dt.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},dt.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,n=Math.round(e);return t===Math.pow(10,n)?n:e},dt.toRadians=function(t){return t*(Math.PI/180)},dt.toDegrees=function(t){return t*(180/Math.PI)},dt._decimalPlaces=function(t){if(dt.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},dt.getAngleFromPoint=function(t,e){var n=e.x-t.x,a=e.y-t.y,r=Math.sqrt(n*n+a*a),i=Math.atan2(a,n);return i<-.5*Math.PI&&(i+=2*Math.PI),{angle:i,distance:r}},dt.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},dt.aliasPixel=function(t){return t%2==0?0:.5},dt._alignPixel=function(t,e,n){var a=t.currentDevicePixelRatio,r=n/2;return Math.round((e-r)*a)/a+r},dt.splineCurve=function(t,e,n,a){var r=t.skip?e:t,i=e,s=n.skip?e:n,u=Math.sqrt(Math.pow(i.x-r.x,2)+Math.pow(i.y-r.y,2)),o=Math.sqrt(Math.pow(s.x-i.x,2)+Math.pow(s.y-i.y,2)),l=u/(u+o),d=o/(u+o),c=a*(l=isNaN(l)?0:l),f=a*(d=isNaN(d)?0:d);return{previous:{x:i.x-c*(s.x-r.x),y:i.y-c*(s.y-r.y)},next:{x:i.x+f*(s.x-r.x),y:i.y+f*(s.y-r.y)}}},dt.EPSILON=Number.EPSILON||1e-14,dt.splineCurveMonotone=function(t){var e,n,a,r,i,s,u,o,l,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),c=d.length;for(e=0;e<c;++e)if(!(a=d[e]).model.skip){if(n=e>0?d[e-1]:null,(r=e<c-1?d[e+1]:null)&&!r.model.skip){var f=r.model.x-a.model.x;a.deltaK=0!==f?(r.model.y-a.model.y)/f:0}a.mK=!n||n.model.skip?a.deltaK:!r||r.model.skip?n.deltaK:this.sign(n.deltaK)!==this.sign(a.deltaK)?0:(n.deltaK+a.deltaK)/2}for(e=0;e<c-1;++e)r=d[e+1],(a=d[e]).model.skip||r.model.skip||(dt.almostEquals(a.deltaK,0,this.EPSILON)?a.mK=r.mK=0:(i=a.mK/a.deltaK,s=r.mK/a.deltaK,(o=Math.pow(i,2)+Math.pow(s,2))<=9||(u=3/Math.sqrt(o),a.mK=i*u*a.deltaK,r.mK=s*u*a.deltaK)));for(e=0;e<c;++e)(a=d[e]).model.skip||(r=e<c-1?d[e+1]:null,(n=e>0?d[e-1]:null)&&!n.model.skip&&(a.model.controlPointPreviousX=a.model.x-(l=(a.model.x-n.model.x)/3),a.model.controlPointPreviousY=a.model.y-l*a.mK),r&&!r.model.skip&&(a.model.controlPointNextX=a.model.x+(l=(r.model.x-a.model.x)/3),a.model.controlPointNextY=a.model.y+l*a.mK))},dt.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},dt.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},dt.niceNum=function(t,e){var n=Math.floor(dt.log10(t)),a=t/Math.pow(10,n);return(e?a<1.5?1:a<3?2:a<7?5:10:a<=1?1:a<=2?2:a<=5?5:10)*Math.pow(10,n)},dt.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},dt.getRelativePosition=function(t,e){var n,a,r=t.originalEvent||t,i=t.target||t.srcElement,s=i.getBoundingClientRect(),u=r.touches;u&&u.length>0?(n=u[0].clientX,a=u[0].clientY):(n=r.clientX,a=r.clientY);var o=parseFloat(dt.getStyle(i,"padding-left")),l=parseFloat(dt.getStyle(i,"padding-top")),d=parseFloat(dt.getStyle(i,"padding-right")),c=parseFloat(dt.getStyle(i,"padding-bottom")),f=s.bottom-s.top-l-c;return{x:n=Math.round((n-s.left-o)/(s.right-s.left-o-d)*i.width/e.currentDevicePixelRatio),y:a=Math.round((a-s.top-l)/f*i.height/e.currentDevicePixelRatio)}},dt.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},dt.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},dt._calculatePadding=function(t,e,n){return(e=dt.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},dt._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},dt.getMaximumWidth=function(t){var e=dt._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,a=n-dt._calculatePadding(e,"padding-left",n)-dt._calculatePadding(e,"padding-right",n),r=dt.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},dt.getMaximumHeight=function(t){var e=dt._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,a=n-dt._calculatePadding(e,"padding-top",n)-dt._calculatePadding(e,"padding-bottom",n),r=dt.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},dt.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},dt.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var a=t.canvas,r=t.height,i=t.width;a.height=r*n,a.width=i*n,t.ctx.scale(n,n),a.style.height||a.style.width||(a.style.height=r+"px",a.style.width=i+"px")}},dt.fontString=function(t,e,n){return e+" "+t+"px "+n},dt.longestText=function(t,e,n,a){var r=(a=a||{}).data=a.data||{},i=a.garbageCollect=a.garbageCollect||[];a.font!==e&&(r=a.data={},i=a.garbageCollect=[],a.font=e),t.font=e;var s=0;dt.each(n,(function(e){null!=e&&!0!==dt.isArray(e)?s=dt.measureText(t,r,i,s,e):dt.isArray(e)&&dt.each(e,(function(e){null==e||dt.isArray(e)||(s=dt.measureText(t,r,i,s,e))}))}));var u=i.length/2;if(u>n.length){for(var o=0;o<u;o++)delete r[i[o]];i.splice(0,u)}return s},dt.measureText=function(t,e,n,a,r){var i=e[r];return i||(i=e[r]=t.measureText(r).width,n.push(r)),i>a&&(a=i),a},dt.numberOfLabelLines=function(t){var e=1;return dt.each(t,(function(t){dt.isArray(t)&&t.length>e&&(e=t.length)})),e},dt.color=W?function(t){return t instanceof CanvasGradient&&(t=ut.global.defaultColor),W(t)}:function(t){return console.error("Color.js not found!"),t},dt.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:dt.color(t).saturate(.5).darken(.1).rgbString()}}(),We._adapters=Je,We.Animation=bt,We.animationService=mt,We.controllers=ue,We.DatasetController=Tt,We.defaults=ut,We.Element=gt,We.elements=qt,We.Interaction=ge,We.layouts=ve,We.platform=Ae,We.plugins=ke,We.Scale=nn,We.scaleService=Ee,We.Ticks=Ze,We.Tooltip=Ve,We.helpers.each(qn,(function(t,e){We.scaleService.registerScaleType(e,t,t._defaults)})),na)na.hasOwnProperty(sa)&&We.plugins.register(na[sa]);We.platform.initialize();var ua=We;return"undefined"!=typeof window&&(window.Chart=We),We.Chart=We,We.Legend=na.legend._element,We.Title=na.title._element,We.pluginService=We.plugins,We.PluginBase=We.Element.extend({}),We.canvasHelpers=We.helpers.canvas,We.layoutService=We.layouts,We.LinearScaleBase=sn,We.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){We[t]=function(e,n){return new We(e,We.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),ua}(function(){try{return n("wd/R")}catch(t){}}())},MOZO:function(t,e,n){var a=n("0GLT"),r=n("VLqJ"),i=n("fqHM"),s=n("6II+");t.exports=function(t,e){return a(t)?t:r(t,e)?[t]:i(s(t))}},MP8s:function(t,e,n){"use strict";n.d(e,"a",(function(){return T}));var a=n("8Y7J"),r=n("2vnA"),i=n("f95s"),s=n("mfoh"),u=n("X+05"),o=n("8SuI"),l=n.n(o),d=n("gBXJ"),c=n.n(d),f=n("LgIp"),h=n.n(f),g=n("n9Vz"),p=n.n(g),b=n("372+"),m=n.n(b),y=n("Q7RW"),v=n.n(y),x=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},_=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},T=function(){function t(){this.options=new s.b,this.eventNames=Object.keys(u.a),this.expandedNodeIds={},this.selectedLeafNodeIds={},this.activeNodeIds={},this.hiddenNodeIds={},this.focusedNodeId=null,this.firstUpdate=!0,this.subscriptions=[]}var e;return e=t,t.prototype.fireEvent=function(t){t.treeModel=this,this.events[t.eventName].emit(t),this.events.event.emit(t)},t.prototype.subscribe=function(t,e){var n=this.events[t].subscribe(e);this.subscriptions.push(n)},t.prototype.getFocusedNode=function(){return this.focusedNode},t.prototype.getActiveNode=function(){return this.activeNodes[0]},t.prototype.getActiveNodes=function(){return this.activeNodes},t.prototype.getVisibleRoots=function(){return this.virtualRoot.visibleChildren},t.prototype.getFirstRoot=function(t){return void 0===t&&(t=!1),l()(t?this.getVisibleRoots():this.roots)},t.prototype.getLastRoot=function(t){return void 0===t&&(t=!1),c()(t?this.getVisibleRoots():this.roots)},Object.defineProperty(t.prototype,"isFocused",{get:function(){return e.focusedTree===this},enumerable:!0,configurable:!0}),t.prototype.isNodeFocused=function(t){return this.focusedNode===t},t.prototype.isEmptyTree=function(){return this.roots&&0===this.roots.length},Object.defineProperty(t.prototype,"focusedNode",{get:function(){return this.focusedNodeId?this.getNodeById(this.focusedNodeId):null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expandedNodes",{get:function(){var t=this,e=Object.keys(this.expandedNodeIds).filter((function(e){return t.expandedNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activeNodes",{get:function(){var t=this,e=Object.keys(this.activeNodeIds).filter((function(e){return t.activeNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hiddenNodes",{get:function(){var t=this,e=Object.keys(this.hiddenNodeIds).filter((function(e){return t.hiddenNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectedLeafNodes",{get:function(){var t=this,e=Object.keys(this.selectedLeafNodeIds).filter((function(e){return t.selectedLeafNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),t.prototype.getNodeByPath=function(t,e){if(void 0===e&&(e=null),!t)return null;if(e=e||this.virtualRoot,0===t.length)return e;if(!e.children)return null;var n=t.shift(),a=p()(e.children,{id:n});return a?this.getNodeByPath(t,a):null},t.prototype.getNodeById=function(t){var e=t.toString();return this.getNodeBy((function(t){return t.id.toString()===e}))},t.prototype.getNodeBy=function(t,e){if(void 0===e&&(e=null),!(e=e||this.virtualRoot).children)return null;var n=p()(e.children,t);if(n)return n;for(var a=0,r=e.children;a<r.length;a++){var i=this.getNodeBy(t,r[a]);if(i)return i}},t.prototype.isExpanded=function(t){return this.expandedNodeIds[t.id]},t.prototype.isHidden=function(t){return this.hiddenNodeIds[t.id]},t.prototype.isActive=function(t){return this.activeNodeIds[t.id]},t.prototype.isSelected=function(t){return this.selectedLeafNodeIds[t.id]},t.prototype.ngOnDestroy=function(){this.dispose(),this.unsubscribeAll()},t.prototype.dispose=function(){this.virtualRoot&&this.virtualRoot.dispose()},t.prototype.unsubscribeAll=function(){this.subscriptions.forEach((function(t){return t.unsubscribe()})),this.subscriptions=[]},t.prototype.setData=function(t){var e=t.nodes,n=t.options,a=void 0===n?null:n,r=t.events,i=void 0===r?null:r;a&&(this.options=new s.b(a)),i&&(this.events=i),e&&(this.nodes=e),this.update()},t.prototype.update=function(){var t,e=((t={id:this.options.rootId,virtual:!0})[this.options.childrenField]=this.nodes,t);this.dispose(),this.virtualRoot=new i.a(e,null,this,0),this.roots=this.virtualRoot.children,this.firstUpdate?this.roots&&(this.firstUpdate=!1,this._calculateExpandedNodes()):this.fireEvent({eventName:u.a.updateData})},t.prototype.setFocusedNode=function(t){this.focusedNodeId=t?t.id:null},t.prototype.setFocus=function(t){e.focusedTree=t?this:null},t.prototype.doForAll=function(t){this.roots.forEach((function(e){return e.doForAll(t)}))},t.prototype.focusNextNode=function(){var t=this.getFocusedNode(),e=t?t.findNextNode(!0,!0):this.getFirstRoot(!0);e&&e.focus()},t.prototype.focusPreviousNode=function(){var t=this.getFocusedNode(),e=t?t.findPreviousNode(!0):this.getLastRoot(!0);e&&e.focus()},t.prototype.focusDrillDown=function(){var t=this.getFocusedNode();if(t&&t.isCollapsed&&t.hasChildren)t.toggleExpanded();else{var e=t?t.getFirstChild(!0):this.getFirstRoot(!0);e&&e.focus()}},t.prototype.focusDrillUp=function(){var t=this.getFocusedNode();if(t)if(t.isExpanded)t.toggleExpanded();else{var e=t.realParent;e&&e.focus()}},t.prototype.setActiveNode=function(t,e,n){void 0===n&&(n=!1),n?this._setActiveNodeMulti(t,e):this._setActiveNodeSingle(t,e),e?(t.focus(this.options.scrollOnActivate),this.fireEvent({eventName:u.a.activate,node:t}),this.fireEvent({eventName:u.a.nodeActivate,node:t})):(this.fireEvent({eventName:u.a.deactivate,node:t}),this.fireEvent({eventName:u.a.nodeDeactivate,node:t}))},t.prototype.setSelectedNode=function(t,e){var n;this.selectedLeafNodeIds=Object.assign({},this.selectedLeafNodeIds,((n={})[t.id]=e,n)),e?(t.focus(),this.fireEvent({eventName:u.a.select,node:t})):this.fireEvent({eventName:u.a.deselect,node:t})},t.prototype.setExpandedNode=function(t,e){var n;this.expandedNodeIds=Object.assign({},this.expandedNodeIds,((n={})[t.id]=e,n)),this.fireEvent({eventName:u.a.toggleExpanded,node:t,isExpanded:e})},t.prototype.expandAll=function(){this.roots.forEach((function(t){return t.expandAll()}))},t.prototype.collapseAll=function(){this.roots.forEach((function(t){return t.collapseAll()}))},t.prototype.setIsHidden=function(t,e){var n;this.hiddenNodeIds=Object.assign({},this.hiddenNodeIds,((n={})[t.id]=e,n))},t.prototype.setHiddenNodeIds=function(t){this.hiddenNodeIds=t.reduce((function(t,e){var n;return Object.assign(t,((n={})[e]=!0,n))}),{})},t.prototype.performKeyAction=function(t,e){var n=this.options.actionMapping.keys[e.keyCode];return!!n&&(e.preventDefault(),n(this,t,e),!0)},t.prototype.filterNodes=function(t,e){var n,a=this;if(void 0===e&&(e=!0),!t)return this.clearFilter();if(m()(t))n=function(e){return-1!==e.displayField.toLowerCase().indexOf(t.toLowerCase())};else{if(!v()(t))return console.error("Don't know what to do with filter",t),void console.error("Should be either a string or function");n=t}var r={};this.roots.forEach((function(t){return a._filterNode(r,t,n,e)})),this.hiddenNodeIds=r,this.fireEvent({eventName:u.a.changeFilter})},t.prototype.clearFilter=function(){this.hiddenNodeIds={},this.fireEvent({eventName:u.a.changeFilter})},t.prototype.moveNode=function(t,e){var n=t.getIndexInParent(),a=t.parent;if(this.canMoveNode(t,e,n)){var r=a.getField("children");e.parent.getField("children")||e.parent.setField("children",[]);var i=e.parent.getField("children"),s=r.splice(n,1)[0],o=a===e.parent&&e.index>n?e.index-1:e.index;i.splice(o,0,s),a.treeModel.update(),e.parent.treeModel!==a.treeModel&&e.parent.treeModel.update(),this.fireEvent({eventName:u.a.moveNode,node:s,to:{parent:e.parent.data,index:o},from:{parent:a.data,index:n}})}},t.prototype.copyNode=function(t,e){var n=t.getIndexInParent();if(this.canMoveNode(t,e,n)){e.parent.getField("children")||e.parent.setField("children",[]);var a=e.parent.getField("children"),r=this.options.getNodeClone(t);a.splice(e.index,0,r),t.treeModel.update(),e.parent.treeModel!==t.treeModel&&e.parent.treeModel.update(),this.fireEvent({eventName:u.a.copyNode,node:r,to:{parent:e.parent.data,index:e.index}})}},t.prototype.getState=function(){return{expandedNodeIds:this.expandedNodeIds,selectedLeafNodeIds:this.selectedLeafNodeIds,activeNodeIds:this.activeNodeIds,hiddenNodeIds:this.hiddenNodeIds,focusedNodeId:this.focusedNodeId}},t.prototype.setState=function(t){t&&Object.assign(this,{expandedNodeIds:t.expandedNodeIds||{},selectedLeafNodeIds:t.selectedLeafNodeIds||{},activeNodeIds:t.activeNodeIds||{},hiddenNodeIds:t.hiddenNodeIds||{},focusedNodeId:t.focusedNodeId})},t.prototype.subscribeToState=function(t){var e=this;Object(r.b)((function(){return t(e.getState())}))},t.prototype.canMoveNode=function(t,e,n){return void 0===n&&(n=void 0),n||t.getIndexInParent(),(t.parent!==e.parent||n!==e.index)&&!e.parent.isDescendantOf(t)},t.prototype.calculateExpandedNodes=function(){this._calculateExpandedNodes()},t.prototype._filterNode=function(t,e,n,a){var r=this,i=n(e);return e.children&&e.children.forEach((function(e){r._filterNode(t,e,n,a)&&(i=!0)})),i||(t[e.id]=!0),a&&i&&e.ensureVisible(),i},t.prototype._calculateExpandedNodes=function(t){var e,n=this;void 0===t&&(t=null),(t=t||this.virtualRoot).data[this.options.isExpandedField]&&(this.expandedNodeIds=Object.assign({},this.expandedNodeIds,((e={})[t.id]=!0,e))),t.children&&t.children.forEach((function(t){return n._calculateExpandedNodes(t)}))},t.prototype._setActiveNodeSingle=function(t,e){var n,a=this;this.activeNodes.filter((function(e){return e!==t})).forEach((function(t){a.fireEvent({eventName:u.a.deactivate,node:t}),a.fireEvent({eventName:u.a.nodeDeactivate,node:t})})),this.activeNodeIds=e?((n={})[t.id]=!0,n):{}},t.prototype._setActiveNodeMulti=function(t,e){var n;this.activeNodeIds=Object.assign({},this.activeNodeIds,((n={})[t.id]=e,n))},t.focusedTree=null,x([r.d,_("design:type",Array)],t.prototype,"roots",void 0),x([r.d,_("design:type",Object)],t.prototype,"expandedNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"selectedLeafNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"activeNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"hiddenNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"focusedNodeId",void 0),x([r.d,_("design:type",i.a)],t.prototype,"virtualRoot",void 0),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"focusedNode",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"expandedNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"activeNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"hiddenNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"selectedLeafNodes",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setData",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"update",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setFocusedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setFocus",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"doForAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusNextNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusPreviousNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusDrillDown",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusDrillUp",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object,Object]),_("design:returntype",void 0)],t.prototype,"setActiveNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setSelectedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setExpandedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"expandAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"collapseAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setIsHidden",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setHiddenNodeIds",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"filterNodes",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"clearFilter",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"moveNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"copyNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setState",null),e=x([Object(a.Injectable)()],t)}()},MaPG:function(t,e,n){var a=n("8a/S"),r=n("3a3P"),i=n("VLqJ"),s=n("Wv1A");t.exports=function(t){return i(t)?a(s(t)):r(t)}},MdoF:function(t,e,n){"use strict";n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n("8Y7J"),r=n("CNMR"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"button",[["aria-label","Close"],["class","close"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.close()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["×"])),(t()(),a["ɵeld"](3,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Close"]))],null,null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["role","alert"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](4,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"alert alert-"+n.type,n.classes),t(e,4,0,n.dismissible)}),null)}function l(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.isOpen)}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"alert",[],null,null,null,l,s)),a["ɵdid"](1,114688,null,0,r.a,[r.b,a.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}var c=a["ɵccf"]("alert,bs-alert",r.a,d,{type:"type",dismissible:"dismissible",dismissOnTimeout:"dismissOnTimeout",isOpen:"isOpen"},{onClose:"onClose",onClosed:"onClosed"},["*"])},MuvH:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("IheW"),i=n("pL04");let s=(()=>{class t{constructor(t){this.http=t}findValue(t,e){if(t.value)return t.value.find(t=>t.section===e)}getValue(t,e){let n=this.findValue(t,e);if(!n){const a=e.indexOf(".");-1!==a&&(n=this.findValue(t,e.substring(0,a)))}return n||(n=this.findValue(t,"global")),n?n.value:t.default}getConfigData(){return this.http.get("api/cluster_conf/")}get(t){return this.http.get("api/cluster_conf/"+t)}filter(t){return this.http.get("api/cluster_conf/filter?names="+t.join(","))}create(t){return this.http.post("api/cluster_conf/",t)}delete(t,e){return this.http.delete(`api/cluster_conf/${t}?section=${e}`)}bulkCreate(t){return this.http.put("api/cluster_conf/",t)}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.c))},token:t,providedIn:i.a}),t})()},Mxhz:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("LRne"),r=n("CqXF"),i=n("JIr8"),s=n("8Y7J"),u=n("IheW"),o=n("pL04");let l=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("api/user")}delete(t){return this.http.delete("api/user/"+t)}get(t){return this.http.get("api/user/"+t)}create(t){return this.http.post("api/user",t)}update(t){return this.http.put("api/user/"+t.username,t)}changePassword(t,e,n){return this.http.post(`api/user/${t}/change_password`,{old_password:e,new_password:n})}validateUserName(t){return this.get(t).pipe(Object(r.a)(!0),Object(i.a)(t=>(t.preventDefault(),Object(a.a)(!1))))}validatePassword(t,e=null,n=null){return this.http.post("api/user/validate_password",{password:t,username:e,old_password:n})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](u.c))},token:t,providedIn:o.a}),t})()},"N+g0":function(t,e,n){var a=n("g6v/"),r=n("m/L8"),i=n("glrk"),s=n("/GqU"),u=n("33Wh");t.exports=a?Object.defineProperties:function(t,e){i(t);for(var n,a=s(e),o=u(e),l=o.length,d=0;l>d;)r.f(t,n=o[d++],a[n]);return t}},"NC/Y":function(t,e,n){var a=n("0GbY");t.exports=a("navigator","userAgent")||""},NEZu:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a){this.customColors={backgroundColor:void 0,borderColor:void 0},this.checkOffset=!1,this.chartEl=t.nativeElement,this.getStyleLeft=n,this.getStyleTop=a,this.tooltipEl=e.nativeElement}customTooltips(t){if(0===t.opacity)return void(this.tooltipEl.style.opacity=0);if(this.tooltipEl.classList.remove("above","below","no-transform"),this.tooltipEl.classList.add(t.yAlign?t.yAlign:"no-transform"),t.body){const e=t.title||[],n=t.body.map(t=>t.lines);let a="<thead>";e.forEach(t=>{a+="<tr><th>"+this.getTitle(t)+"</th></tr>"}),a+="</thead><tbody>",n.forEach((e,n)=>{const r=t.labelColors[n];let i="background:"+(this.customColors.backgroundColor||r.backgroundColor);i+="; border-color:"+(this.customColors.borderColor||r.borderColor),i+="; border-width: 2px",a+='<tr><td nowrap><span class="chartjs-tooltip-key" style="'+i+'"></span>'+this.getBody(e)+"</td></tr>"}),a+="</tbody>",this.tooltipEl.querySelector("table").innerHTML=a}const e=this.chartEl.offsetTop,n=this.chartEl.offsetLeft;if(this.checkOffset){const e=t.width/2;this.tooltipEl.classList.remove("transform-left"),this.tooltipEl.classList.remove("transform-right"),t.caretX-e<0?this.tooltipEl.classList.add("transform-left"):t.caretX+e>this.chartEl.width&&this.tooltipEl.classList.add("transform-right")}this.tooltipEl.style.left=this.getStyleLeft(t,n),this.tooltipEl.style.top=this.getStyleTop(t,e),this.tooltipEl.style.opacity=1,this.tooltipEl.style.fontFamily=t._fontFamily,this.tooltipEl.style.fontSize=t.fontSize,this.tooltipEl.style.fontStyle=t._fontStyle,this.tooltipEl.style.padding=t.yPadding+"px "+t.xPadding+"px"}getBody(t){return t}getTitle(t){return t}}},NJ4a:function(t,e,n){"use strict";function a(t){setTimeout(()=>{throw t},0)}n.d(e,"a",(function(){return a}))},NJ9Y:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("sVev"),r=n("pLZG"),i=n("BFxc"),s=n("XDbj"),u=n("xbPD"),o=n("SpAZ");function l(t,e){const n=arguments.length>=2;return l=>l.pipe(t?Object(r.a)((e,n)=>t(e,n,l)):o.a,Object(i.a)(1),n?Object(u.a)(e):Object(s.a)(()=>new a.a))}},NSEa:function(t,e,n){var a=n("CNUl");t.exports=function(t,e){var n=e?a(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}},NUGo:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("iInd"),s=n("FE24"),u=n("z/SZ"),o=n("GS7A");n("S7zO"),n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return b}));var l=a["ɵcrt"]({encapsulation:0,styles:[[".dropdown-menu[_ngcontent-%COMP%] > .disabled[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]{pointer-events:auto;cursor:default!important}"]],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,10,"button",[["type","button"]],null,[[null,"click"]],(function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["ɵnov"](t,5).onClick()&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.ngIf)&&r),r}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](4,{disabled:0}),a["ɵdid"](5,16384,null,0,i.n,[i.m,i.a,[8,null],a.Renderer2,a.ElementRef],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](8,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](9,1),(t()(),a["ɵeld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](11,null,["",""]))],(function(t,e){var n=e.component,r=a["ɵinlineInterpolate"](1,"btn btn-",n.btnColor,""),i=t(e,4,0,n.disableSelectionAction(e.context.ngIf));t(e,3,0,r,i),t(e,5,0,e.context.ngIf.preserveFragment?"":null,n.useRouterLink(e.context.ngIf));var s=t(e,9,0,e.context.ngIf.icon);t(e,8,0,s)}),(function(t,e){t(e,11,0,e.context.ngIf.name)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](1,null,[""," "]))],null,(function(t,e){t(e,1,0,e.component.dropDownOnly)}))}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[["class","sr-only"]],null,null,null,null,null))],null,null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"button",[["dropdownToggle",""],["type","button"]],[[8,"className",0],[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick()&&r),r}),null,null)),a["ɵdid"](1,147456,null,0,s.g,[a.ChangeDetectorRef,s.c,a.ElementRef,a.Renderer2,s.f],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.dropDownOnly),t(e,5,0,!n.dropDownOnly)}),(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"btn btn-",e.component.btnColor," dropdown-toggle dropdown-toggle-split"),!0,a["ɵnov"](e,1).isDisabled,a["ɵnov"](e,1).isOpen)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,12,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,11,"li",[["data-toggle","tooltip"],["role","menuitem"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,10,"a",[["class","dropdown-item"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.$implicit)&&r),r}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](5,{disabled:0}),a["ɵdid"](6,671744,null,0,i.p,[i.m,i.a,r.LocationStrategy],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),a["ɵeld"](7,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](9,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](10,1),(t()(),a["ɵeld"](11,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](12,null,["",""]))],(function(t,e){var n=e.component,a=t(e,5,0,n.disableSelectionAction(e.context.$implicit));t(e,4,0,"dropdown-item",a),t(e,6,0,e.context.$implicit.preserveFragment?"":null,n.useRouterLink(e.context.$implicit));var r=t(e,10,0,e.context.$implicit.icon);t(e,9,0,r)}),(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](1,"",n.toClassName(e.context.$implicit.name),""),a["ɵinlineInterpolate"](1,"",n.useDisableDesc(e.context.$implicit),"")),t(e,2,0,a["ɵnov"](e,6).target,a["ɵnov"](e,6).href),t(e,12,0,e.context.$implicit.name)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](2,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.dropDownActions)}),null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,8,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,s.f,s.f,[]),a["ɵdid"](2,212992,null,0,s.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,u.a,s.f,s.a,o.b],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](8,16384,null,0,s.d,[s.f,a.ViewContainerRef,a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0,n.getCurrentButton()),t(e,6,0,n.showDropDownActions())}),(function(t,e){t(e,0,0,a["ɵnov"](e,2).dropup,a["ɵnov"](e,2).isOpen,a["ɵnov"](e,2).isOpen&&a["ɵnov"](e,2).isBs4)}))}},NaFW:function(t,e,n){var a=n("9d/t"),r=n("3Eq5"),i=n("P4y1"),s=n("tiKp")("iterator");t.exports=function(t){if(null!=t)return r(t,s)||r(t,"@@iterator")||i[a(t)]}},NtIB:function(t,e,n){var a=n("uy3s"),r=n("eQba"),i=n("jqoL"),s=n("VLqJ"),u=n("kXVT"),o=n("YLnZ"),l=n("Wv1A");t.exports=function(t,e){return s(t)&&u(e)?o(l(t),e):function(n){var s=r(n,t);return void 0===s&&s===e?i(n,t):a(e,s,3)}}},O741:function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=a.String,s=a.TypeError;t.exports=function(t){if("object"==typeof t||r(t))return t;throw s("Can't set "+i(t)+" as a prototype")}},O9Tv:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("YzqF");e.Mutex=a.default},OIDT:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"tree-node-wrapper",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n      <div *ngIf="!templates.treeNodeWrapperTemplate" class="node-wrapper" [style.padding-left]="node.getNodePadding()">\n          <tree-node-checkbox *ngIf="node.options.useCheckbox" [node]="node"></tree-node-checkbox>\n          <tree-node-expander [node]="node"></tree-node-expander>\n          <div class="node-content-wrapper"\n               [class.node-content-wrapper-active]="node.isActive"\n               [class.node-content-wrapper-focused]="node.isFocused"\n               (click)="node.mouseAction(\'click\', $event)"\n               (dblclick)="node.mouseAction(\'dblClick\', $event)"\n               (mouseover)="node.mouseAction(\'mouseOver\', $event)"\n               (mouseout)="node.mouseAction(\'mouseOut\', $event)"\n               (contextmenu)="node.mouseAction(\'contextMenu\', $event)"\n               (treeDrop)="node.onDrop($event)"\n               (treeDropDragOver)="node.mouseAction(\'dragOver\', $event)"\n               (treeDropDragLeave)="node.mouseAction(\'dragLeave\', $event)"\n               (treeDropDragEnter)="node.mouseAction(\'dragEnter\', $event)"\n               [treeAllowDrop]="node.allowDrop"\n               [allowDragoverStyling]="node.allowDragoverStyling()"\n               [treeDrag]="node"\n               [treeDragEnabled]="node.allowDrag()">\n\n              <tree-node-content [node]="node" [index]="index" [template]="templates.treeNodeTemplate">\n              </tree-node-content>\n          </div>\n      </div>\n      <ng-container\n              [ngTemplateOutlet]="templates.treeNodeWrapperTemplate"\n              [ngTemplateOutletContext]="{ $implicit: node, node: node, index: index, templates: templates }">\n      </ng-container>\n  '}),s("design:paramtypes",[])],t)}()},OIYi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},OLbh:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("s7LF");class r{constructor(t,e){this.modalRef=t,this.modalService=e,this.boundCancel=this.cancel.bind(this),this.canceled=!1,this.confirmationForm=new a.k({}),this.onHide=this.modalService.onHide.subscribe(t=>{this.onCancel&&(t||this.canceled)&&this.onCancel()})}ngOnInit(){if(this.bodyContext=this.bodyContext||{},this.bodyContext.$implicit=this.bodyData,!this.onSubmit)throw new Error("No submit action defined");if(!this.buttonText)throw new Error("No action name defined");if(!this.titleText)throw new Error("No title defined");if(!this.bodyTpl&&!this.description)throw new Error("No description defined")}ngOnDestroy(){this.onHide.unsubscribe()}cancel(){this.canceled=!0,this.modalRef.hide()}stopLoadingSpinner(){this.confirmationForm.setErrors({cdSubmitButton:!0})}}},Oaa7:function(t,e,n){!function(t){"use strict";t.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},Ob0Z:function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function a(t,e,n,a){var r="";if(e)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,t)}t.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात्री"===e?t<4?t:t+12:"सकाळी"===e?t:"दुपारी"===e?t>=10?t:t+12:"सायंकाळी"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात्री":t<10?"सकाळी":t<17?"दुपारी":t<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("wd/R"))},OcYo:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("e0ae");class r{constructor(t,e,n,a){this.elementRef=t,this.renderer=e,this.toastr=n,this.i18n=a}ngOnInit(){const t=this.renderer.createElement("i");this.renderer.addClass(t,"fa"),this.renderer.addClass(t,"fa-clipboard"),this.renderer.setAttribute(t,"title",this.i18n("Copy to clipboard")),this.renderer.appendChild(this.elementRef.nativeElement,t)}getText(){return document.getElementById(this.cdCopy2ClipboardButton).value}onClick(){try{const t=Object(a.a)(),e=this.getText(),n=()=>{this.toastr.success("Copied text to the clipboard successfully.")};["firefox","ie","ios","safari"].includes(t.name)?navigator.clipboard.writeText(e).then(()=>n()):navigator.permissions.query({name:"clipboard-write"}).then(t=>{"granted"!==t.state&&"prompt"!==t.state||navigator.clipboard.writeText(e).then(()=>n())})}catch(t){this.toastr.error("Failed to copy text to the clipboard.")}}}},OjkT:function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};t.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(t,e){return 12===t&&(t=0),"राति"===e?t<4?t:t+12:"बिहान"===e?t:"दिउँसो"===e?t>=10?t:t+12:"साँझ"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"राति":t<12?"बिहान":t<16?"दिउँसो":t<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("wd/R"))},OpvP:function(t,e,n){var a=n("4zBA");t.exports=a({}.isPrototypeOf)},Oxv6:function(t,e,n){!function(t){"use strict";var e={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};t.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(t,e){return 12===t&&(t=0),"шаб"===e?t<4?t:t+12:"субҳ"===e?t:"рӯз"===e?t>=11?t:t+12:"бегоҳ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"шаб":t<11?"субҳ":t<16?"рӯз":t<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},P4y1:function(t,e){t.exports={}},P8lu:function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n("mrSG"),r=n("IheW"),i=n("LvDl"),s=n("cp0P"),u=n("LRne"),o=n("5+tZ"),l=n("CqXF"),d=n("JIr8"),c=n("xTzq"),f=n("8Y7J"),h=n("pL04");let g=(()=>{let t=class{constructor(t){this.http=t,this.url="api/rgw/user"}list(){return this.enumerate().pipe(Object(o.a)(t=>t.length>0?Object(s.a)(t.map(t=>this.get(t))):Object(u.a)([])))}enumerate(){return this.http.get(this.url)}enumerateEmail(){return this.http.get(this.url+"/get_emails")}get(t){return this.http.get(`${this.url}/${t}`)}getQuota(t){return this.http.get(`${this.url}/${t}/quota`)}create(t){let e=new r.h;return i.keys(t).forEach(n=>{e=e.append(n,t[n])}),this.http.post(this.url,null,{params:e})}update(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.put(`${this.url}/${t}`,null,{params:n})}updateQuota(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.put(`${this.url}/${t}/quota`,null,{params:n})}delete(t){return this.http.delete(`${this.url}/${t}`)}createSubuser(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.post(`${this.url}/${t}/subuser`,null,{params:n})}deleteSubuser(t,e){return this.http.delete(`${this.url}/${t}/subuser/${e}`)}addCapability(t,e,n){let a=new r.h;return a=a.append("type",e),a=a.append("perm",n),this.http.post(`${this.url}/${t}/capability`,null,{params:a})}deleteCapability(t,e,n){let a=new r.h;return a=a.append("type",e),a=a.append("perm",n),this.http.delete(`${this.url}/${t}/capability`,{params:a})}addS3Key(t,e){let n=new r.h;return n=n.append("key_type","s3"),i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.post(`${this.url}/${t}/key`,null,{params:n})}deleteS3Key(t,e){let n=new r.h;return n=n.append("key_type","s3"),n=n.append("access_key",e),this.http.delete(`${this.url}/${t}/key`,{params:n})}exists(t){return this.get(t).pipe(Object(l.a)(!0),Object(d.a)(t=>(i.isFunction(t.preventDefault)&&t.preventDefault(),Object(u.a)(!1))))}emailExists(t){return t=decodeURIComponent(t),this.enumerateEmail().pipe(Object(o.a)(e=>{const n=i.indexOf(e,t);return Object(u.a)(-1!==n)}))}};return t.ngInjectableDef=f["ɵɵdefineInjectable"]({factory:function(){return new t(f["ɵɵinject"](r.c))},token:t,providedIn:h.a}),t=a.__decorate([c.a,a.__metadata("design:paramtypes",[r.c])],t),t})()},PA2r:function(t,e,n){!function(t){"use strict";var e="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),a=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function i(t){return t>1&&t<5&&1!=~~(t/10)}function s(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"pár sekund":"pár sekundami";case"ss":return e||a?r+(i(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(i(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(i(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(i(t)?"dny":"dní"):r+"dny";case"M":return e||a?"měsíc":"měsícem";case"MM":return e||a?r+(i(t)?"měsíce":"měsíců"):r+"měsíci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(i(t)?"roky":"let"):r+"lety"}}t.defineLocale("cs",{months:e,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},PCNd:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},"PEr+":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("EEJc"),s=n("ajRT"),u=n("s7LF"),o=n("+gVj"),l=n("mXUL"),d=n("IZUe"),c=n("ANnk"),f=n("f/UV"),h=n("aexS"),g=n("gp3X"),p=n("sb0X"),b=n("KVJa"),m=n("Z21x"),y=n("sne2"),v=n("0+/T"),x=n("LqlI");n.d(e,"a",(function(){return D}));var _=a["ɵcrt"]({encapsulation:0,styles:[[".modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]{margin-top:1em}.modal-body[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," "])),a["ɵppd"](2,1),(t()(),a["ɵeld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](4,null,["",""])),(t()(),a["ɵted"](-1,null,["?"]))],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r),t(e,4,0,n.itemNames[0])}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," the selected items?"])),a["ɵppd"](2,1),(t()(),a["ɵeld"](3,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,S)),a["ɵdid"](5,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,5,0,e.component.itemNames)}),(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r)}))}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["manyNames",2]],null,0,null,I))],(function(t,e){t(e,2,0,1===e.component.itemNames.length,a["ɵnov"](e,3))}),null)}function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," the selected ","?"])),a["ɵppd"](2,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,0),n.actionDescription));t(e,1,0,r,n.itemDescription)}))}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," ","\n"])),a["ɵppd"](1,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,0,0,t(e,1,0,a["ɵnov"](e.parent,1),n.actionDescription));t(e,0,0,r,n.itemDescription)}))}function E(t){return a["ɵvid"](0,[a["ɵpid"](0,r.LowerCasePipe,[]),a["ɵpid"](0,r.TitleCasePipe,[]),a["ɵqud"](402653184,1,{submitButton:0}),(t()(),a["ɵeld"](3,0,null,null,44,"cd-modal",[],null,null,null,i.c,i.b)),a["ɵdid"](4,49152,[["modal",4]],0,s.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["ɵeld"](5,0,null,0,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](8,0,null,1,39,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](9,0,null,null,38,"form",[["name","deletionForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,11).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,11).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,14).onSubmit()&&r),r}),null,null)),a["ɵdid"](10,16384,null,0,u.G,[],null,null),a["ɵdid"](11,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,u.d,null,[u.l]),a["ɵdid"](13,16384,null,0,u.s,[[4,u.d]],null,null),a["ɵdid"](14,16384,null,0,o.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](15,0,null,null,25,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](17,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](18,0,null,null,22,"div",[["class","question"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](20,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["noNames",2]],null,0,null,C)),(t()(),a["ɵand"](16777216,null,null,2,null,R)),a["ɵdid"](23,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](24,{form:0}),(t()(),a["ɵeld"](25,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,l.b,l.a)),a["ɵdid"](26,1163264,null,2,o.c,[a.ElementRef,o.g],null,null),a["ɵqud"](603979776,2,{FormControlNames:1}),a["ɵqud"](603979776,3,{messagesBlock:0}),(t()(),a["ɵeld"](29,0,null,0,11,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](30,0,null,null,8,"input",[["autofocus",""],["class","custom-control-input"],["formControlName","confirmation"],["id","confirmation"],["name","confirmation"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t,31).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,31).onTouched()&&r),r}),null,null)),a["ɵdid"](31,16384,null,0,u.c,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,u.p,(function(t){return[t]}),[u.c]),a["ɵdid"](33,671744,[[2,4]],0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,u.q,null,[u.j]),a["ɵdid"](35,16384,null,0,u.r,[[4,u.q]],null,null),a["ɵdid"](36,4210688,null,0,d.a,[a.ElementRef],{autofocus:[0,"autofocus"]},null),a["ɵdid"](37,4210688,null,0,c.a,[[2,f.a],h.a,a.ElementRef],null,null),a["ɵdid"](38,16384,null,0,o.h,[[3,u.d],o.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵeld"](39,0,null,null,1,"label",[["class","custom-control-label"],["for","confirmation"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Yes, I am sure."])),(t()(),a["ɵeld"](41,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](42,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.callSubmitAction()&&a),a}),g.b,g.a)),a["ɵdid"](43,114688,[[1,4],["submitButton",4]],0,p.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵand"](16777216,null,0,1,null,A)),a["ɵdid"](45,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](46,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,b.b,b.a)),a["ɵdid"](47,49152,null,0,m.a,[r.Location,y.b],{name:[0,"name"],back:[1,"back"]},null),(t()(),a["ɵand"](0,[["deletionHeading",2]],null,0,null,k))],(function(t,e){var n=e.component;t(e,4,0,n.modalRef),t(e,7,0,a["ɵnov"](e,48)),t(e,11,0,n.deletionForm),t(e,14,0,n.deletionForm),t(e,17,0,n.bodyContext,n.bodyTemplate),t(e,20,0,n.itemNames,a["ɵnov"](e,21));var r=t(e,24,0,n.deletionForm);t(e,23,0,r,n.childFormGroupTemplate),t(e,26,0),t(e,33,0,"confirmation"),t(e,36,0,""),t(e,38,0,"confirmation"),t(e,43,0,n.deletionForm),t(e,45,0,a["ɵnov"](e,48)),t(e,47,0,"Cancel",n.modalRef.hide)}),(function(t,e){t(e,9,0,a["ɵnov"](e,13).ngClassUntouched,a["ɵnov"](e,13).ngClassTouched,a["ɵnov"](e,13).ngClassPristine,a["ɵnov"](e,13).ngClassDirty,a["ɵnov"](e,13).ngClassValid,a["ɵnov"](e,13).ngClassInvalid,a["ɵnov"](e,13).ngClassPending),t(e,25,0,a["ɵnov"](e,26).hasErrors,a["ɵnov"](e,26).hasSuccess),t(e,30,0,a["ɵnov"](e,35).ngClassUntouched,a["ɵnov"](e,35).ngClassTouched,a["ɵnov"](e,35).ngClassPristine,a["ɵnov"](e,35).ngClassDirty,a["ɵnov"](e,35).ngClassValid,a["ɵnov"](e,35).ngClassInvalid,a["ɵnov"](e,35).ngClassPending,a["ɵnov"](e,38).validClass,a["ɵnov"](e,38).invalidClass)}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-deletion-modal",[],null,null,null,E,_)),a["ɵdid"](1,114688,null,0,v.a,[x.a],null,null)],(function(t,e){t(e,1,0)}),null)}var D=a["ɵccf"]("cd-deletion-modal",v.a,L,{},{},[])},PHub:function(t,e,n){var a=n("PnUS"),r=n("x3F9"),i=Object.prototype,s=i.hasOwnProperty,u=i.propertyIsEnumerable,o=a(function(){return arguments}())?a:function(t){return r(t)&&s.call(t,"callee")&&!u.call(t,"callee")};t.exports=o},PKPk:function(t,e,n){"use strict";var a=n("ZUd8").charAt,r=n("V37c"),i=n("afO8"),s=n("fdAy"),u=i.set,o=i.getterFor("String Iterator");s(String,"String",(function(t){u(this,{type:"String Iterator",string:r(t),index:0})}),(function(){var t,e=o(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=a(n,r),e.index+=t.length,{value:t,done:!1})}))},PeUW:function(t,e,n){!function(t){"use strict";var e={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};t.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(t){return t+"வது"},preparse:function(t){return t.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(t,e,n){return t<2?" யாமம்":t<6?" வைகறை":t<10?" காலை":t<14?" நண்பகல்":t<18?" எற்பாடு":t<22?" மாலை":" யாமம்"},meridiemHour:function(t,e){return 12===t&&(t=0),"யாமம்"===e?t<2?t:t+12:"வைகறை"===e||"காலை"===e||"நண்பகல்"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})}(n("wd/R"))},PhyI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return r}));var a=function(t){return t[t.global=0]="global",t[t.pool=1]="pool",t[t.image=2]="image",t}({}),r=function(t){return t[t.bps=0]="bps",t[t.iops=1]="iops",t[t.milliseconds=2]="milliseconds",t}({})},PjNX:function(t,e,n){var a=n("eH2F")();t.exports=a},PnUS:function(t,e,n){var a=n("LaC8"),r=n("x3F9");t.exports=function(t){return r(t)&&"[object Arguments]"==a(t)}},PpIw:function(t,e,n){!function(t){"use strict";var e={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};t.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(t){return t.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ರಾತ್ರಿ"===e?t<4?t:t+12:"ಬೆಳಿಗ್ಗೆ"===e?t:"ಮಧ್ಯಾಹ್ನ"===e?t>=10?t:t+12:"ಸಂಜೆ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ರಾತ್ರಿ":t<10?"ಬೆಳಿಗ್ಗೆ":t<17?"ಮಧ್ಯಾಹ್ನ":t<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(t){return t+"ನೇ"},week:{dow:0,doy:6}})}(n("wd/R"))},PqYM:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("HDdC"),r=n("D0XW"),i=n("Y7HM"),s=n("z+Ro");function u(t=0,e,n){let u=-1;return Object(i.a)(e)?u=Number(e)<1?1:Number(e):Object(s.a)(e)&&(n=e),Object(s.a)(n)||(n=r.a),new a.a(e=>{const a=Object(i.a)(t)?t:+t-n.now();return n.schedule(o,a,{index:0,period:u,subscriber:e})})}function o(t){const{index:e,period:n,subscriber:a}=t;if(a.next(e),!a.closed){if(-1===n)return a.complete();t.index=e+1,this.schedule(t,n)}}},Q7RW:function(t,e,n){var a=n("LaC8"),r=n("hmSm");t.exports=function(t){if(!r(t))return!1;var e=a(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},QC43:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("MdoF"),i=n("CNMR"),s=n("SVse");n("XFyV"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return o}));var u=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"alert",[["type","info"]],null,null,null,r.c,r.b)),a["ɵdid"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,"strong",[],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,s["ɵNgClassImpl"],s["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,s.NgClass,[s["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,2),a["ɵncd"](0,0)],(function(t,e){var n=e.component;t(e,1,0,"info");var a=t(e,6,0,n.icons.spinner,n.icons.spin);t(e,5,0,a)}),null)}},QCZx:function(t,e,n){var a=n("2zzJ"),r=n("7+rY"),i=n("MOZO");t.exports=function(t,e,n){for(var s=-1,u=e.length,o={};++s<u;){var l=e[s],d=a(t,l);n(d,l)&&r(o,i(l,t),d)}return o}},QFaf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("s7LF");class r extends a.k{constructor(t,e,n){super(t,e,n),this.controls=t}get(t){const e=this._get(t);if(!e)throw new Error(`Control '${t}' could not be found!`);return e}_get(t){return super.get(t)||Object.values(this.controls).filter(t=>t.get).map(e=>e instanceof r?e._get(t):e.get(t)).find(t=>Boolean(t))}getValue(t){return this.get(t).value}silentSet(t,e){this.get(t).setValue(e,{emitEvent:!1})}showError(t,e,n){const a=this.get(t);return(e.submitted||a.dirty)&&(n?a.hasError(n):a.invalid)}}},QTAa:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("t/zF");class r extends a.a{}},QUkU:function(t,e,n){var a=n("JEWA"),r=n("im1V"),i=n("Uies"),s=n("hmSm");t.exports=function(t,e,n){if(!s(n))return!1;var u=typeof e;return!!("number"==u?r(n)&&i(e,n.length):"string"==u&&e in n)&&a(n[e],t)}},QWBl:function(t,e,n){"use strict";var a=n("I+eb"),r=n("F8JR");a({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},Qj4J:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("wd/R"))},QjCD:function(t,e,n){var a=n("kGkW"),r=n("nC65"),i=n("YLnZ");t.exports=function(t){var e=r(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||a(n,t,e)}}},QpVZ:function(t,e,n){var a=n("LaC8"),r=n("x3F9");t.exports=function(t){return"symbol"==typeof t||r(t)&&"[object Symbol]"==a(t)}},QuoE:function(t,e,n){var a=n("bX23"),r=n("vIot"),i=n("0rEg");t.exports=function(t,e,n){return e==e?i(t,e,n):a(t,r,n)}},R2cF:function(t,e){var n=/\w*$/;t.exports=function(t){var e=new t.constructor(t.source,n.exec(t));return e.lastIndex=t.lastIndex,e}},R6RA:function(t,e,n){var a=n("hmSm"),r=Object.create,i=function(){function t(){}return function(e){if(!a(e))return{};if(r)return r(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();t.exports=i},R8cQ:function(t,e,n){var a=n("pMcL"),r=n("xAZD"),i=n("0GLT"),s=n("QpVZ"),u=a?a.prototype:void 0,o=u?u.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return r(e,t)+"";if(s(e))return o?o.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}},RAwQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?r[n][0]:r[n][1]}function n(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10;return n(0===e?t/10:e)}if(t<1e4){for(;t>=10;)t/=10;return n(t)}return n(t/=1e3)}t.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(t){return n(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t},past:function(t){return n(t.substr(0,t.indexOf(" ")))?"viru "+t:"virun "+t},s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},RBUI:function(t,e){t.exports=function(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}},RK3t:function(t,e,n){var a=n("2oRo"),r=n("4zBA"),i=n("0Dky"),s=n("xrYK"),u=a.Object,o=r("".split);t.exports=i((function(){return!u("z").propertyIsEnumerable(0)}))?function(t){return"String"==s(t)?o(t,""):u(t)}:u},RNIs:function(t,e,n){var a=n("tiKp"),r=n("fHMY"),i=n("m/L8"),s=a("unscopables"),u=Array.prototype;null==u[s]&&i.f(u,s,{configurable:!0,value:r(null)}),t.exports=function(t){u[s][t]=!0}},Rf2I:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("s7LF"),r=n("LvDl");n("2EZI"),n("Fgil"),n("aXbf");class i{constructor(t,e,n,a,r){this.bsModalRef=t,this.formBuilder=e,this.formatter=n,this.dimlessBinaryPipe=a,this.i18n=r}ngOnInit(){this.createForm()}createForm(){const t={};this.fields.forEach(e=>{t[e.name]=this.createFormControl(e)}),this.formGroup=this.formBuilder.group(t)}createFormControl(t){let e=[];return r.isBoolean(t.required)&&t.required&&e.push(a.B.required),t.validators&&(e=e.concat(t.validators)),new a.i(r.defaultTo("binary"===t.type?this.dimlessBinaryPipe.transform(t.value):t.value,null),{validators:e})}getError(t){const e=this.formGroup.get(t.name).errors;return Object.keys(e).map(n=>this.getErrorMessage(n,e[n],t.errors)).join("<br>")}getErrorMessage(t,e,n){if(n){const e=n[t];if(e)return e}return["binaryMin","binaryMax"].includes(t)?e(this.i18n):this.i18n("required"===t?"This field is required.":"An error occurred.")}onSubmitForm(t){this.fields.filter(t=>"binary"===t.type).map(t=>t.name).forEach(e=>{const n=t[e];n&&(t[e]=this.formatter.toBytes(n))}),this.bsModalRef.hide(),r.isFunction(this.onSubmit)&&this.onSubmit(t)}}},Rm1S:function(t,e,n){"use strict";var a=n("xluM"),r=n("14Sl"),i=n("glrk"),s=n("UMSQ"),u=n("V37c"),o=n("HYAF"),l=n("3Eq5"),d=n("iqWW"),c=n("FMNM");r("match",(function(t,e,n){return[function(e){var n=o(this),r=null==e?void 0:l(e,t);return r?a(r,e,n):new RegExp(e)[t](u(n))},function(t){var a=i(this),r=u(t),o=n(e,a,r);if(o.done)return o.value;if(!a.global)return c(a,r);var l=a.unicode;a.lastIndex=0;for(var f,h=[],g=0;null!==(f=c(a,r));){var p=u(f[0]);h[g]=p,""===p&&(a.lastIndex=d(r,s(a.lastIndex),l)),g++}return 0===g?null:h}]}))},RnhZ:function(t,e,n){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="RnhZ"},RvDp:function(t,e,n){var a=n("MOZO"),r=n("PHub"),i=n("0GLT"),s=n("Uies"),u=n("KNDS"),o=n("Wv1A");t.exports=function(t,e,n){for(var l=-1,d=(e=a(e,t)).length,c=!1;++l<d;){var f=o(e[l]);if(!(c=null!=t&&n(t,f)))break;t=t[f]}return c||++l!=d?c:!!(d=null==t?0:t.length)&&u(d)&&s(f,d)&&(i(t)||r(t))}},S6ln:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return a+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return a+(1===t?"dan":"dana");case"MM":return a+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return a+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},S7zO:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LvDl"),r=n("oxzT");n("vCyI"),n("jKX/");class i{constructor(){this.btnColor="secondary",this.dropDownActions=[],this.icons=r.a}ngOnInit(){this.removeActionsWithNoPermissions(),this.updateDropDownActions()}toClassName(t){return t.replace(/ /g,"-").replace(/[^a-z-]/gi,"").toLowerCase()}removeActionsWithNoPermissions(){if(!this.permission)return void(this.tableActions=[]);const t=Object.keys(this.permission).filter(t=>this.permission[t]);this.tableActions=this.tableActions.filter(e=>t.includes(e.permission))}updateDropDownActions(){this.dropDownActions=this.tableActions.filter(t=>t.visible?t.visible(this.selection):t)}getCurrentButton(){if(this.dropDownOnly)return;let t=this.dropDownActions.find(t=>this.showableAction(t));return!t&&this.dropDownActions.length>0&&(t=this.dropDownActions[0]),t}showableAction(t){const e=t.canBePrimary,n=this.selection.hasSingleSelection,a="create"===t.permission?!n:n;return e&&e(this.selection)||!e&&a}useRouterLink(t){if(t.routerLink&&!this.disableSelectionAction(t))return a.isString(t.routerLink)?t.routerLink:t.routerLink()}disableSelectionAction(t){const e=t.disable;if(e)return Boolean(e(this.selection));const n=t.permission,a=this.selection.hasSingleSelection&&this.selection.first();return Boolean(["update","delete"].includes(n)&&(!a||a.cdExecuting))}showDropDownActions(){return this.updateDropDownActions(),this.dropDownActions.length>1}useClickAction(t){return!this.disableSelectionAction(t)&&t.click&&t.click()}useDisableDesc(t){if(t.disable){const e=t.disable(this.selection);return a.isString(e)?e:void 0}}}},"SB+Q":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return encodeURIComponent(t)}}},SDUG:function(t,e,n){var a=n("PjNX"),r=n("FGWQ");t.exports=function(t,e){return t&&a(t,e,r)}},SFrS:function(t,e,n){var a=n("2oRo"),r=n("xluM"),i=n("Fib7"),s=n("hh1v"),u=a.TypeError;t.exports=function(t,e){var n,a;if("string"===e&&i(n=t.toString)&&!s(a=r(n,t)))return a;if(i(n=t.valueOf)&&!s(a=r(n,t)))return a;if("string"!==e&&i(n=t.toString)&&!s(a=r(n,t)))return a;throw u("Can't convert object to primitive value")}},SFxW:function(t,e,n){!function(t){"use strict";var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10;return t+(e[n]||e[t%100-n]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},SPu7:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="pl-PL">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Rozwiń</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Pulpit</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klaster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosty</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Usługi</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD-ki</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfiguracja</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH mapa</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Zarządca modułów</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Logi</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pule</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Dostęp blokowy</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Obrazy</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Kopia lustrzana</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>Sieciowy system plików NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systemy plików</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Dostęp obiektowy</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Demony</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Wiadra</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Wybierz język</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Trwa ładowanie danych...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Wybór czasu Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Zresetuj ustawienia</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Wstecz</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Błąd wczytywania danych.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>Wybrane</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>Znaleziono</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>Razem</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nazwa</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Opis</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Długi opis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Domyślna</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Domyślny demon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Wartości</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Zapisz</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>widok CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Ładowanie...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nazwa hosta</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Tak, jestem pewny.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Anuluj</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zamknij</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista hostów</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Całkowita wydajność</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nie znaleziono wejść</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Logi z klastra </target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Audyt logów</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Ładowanie konfiguracji.</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Nie można załadować konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edytuj moduł zarządzania</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Wpisana wartość nie jest poprawnym UUID, np. 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Wpisana wartość musi być poprawnym adresem IP</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Podana wartość musi być liczbą</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Podana wartość musi być liczbą albo dziesiętną.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Zaktualizuj</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Klaster ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Zmodyfikowana monmapa</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>epoka monmap</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kworum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kworum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>wymagany con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>Wymagane mon </target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>W kworum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nie w kworum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Dodaj</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funkcje</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flagi OSD w całym klastrze</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Zatwierdź</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Zaawansowane...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorytet odzyskiwania OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorytet</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Dostosuj wartości priorytetowe</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>To pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Wartość powinna być pomiędzy 0 a 1. </target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ponowne ważenie</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, wybierz, 1 {Głębokość} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, wybierz, 1 {głębokość} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista OSD-ków </target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Wartość</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edytuj</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Usuń</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdrowie</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statystyki</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klienci</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Każdy klient ma dostęp</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresy</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Obowiązkowe pole</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Musi zawierać jedną albo więcej ,rozdzielonych przecinkiem, wartości </target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Na przykład: </target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ dostępu</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Dodaj klientów </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Brak dostępnego klastra -- </target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Wybierz klaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Dodaj demona</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Pamięć Podręczna</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Brak danych puli -- </target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Wybierz pamięć podręczną -- </target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Użytkownik dostępu obiektowego</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Brak dostępnych użytkowników -- </target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Wybierz użytkownika dostępu obiektowego -- </target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS Użytkownik ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Brak dostępnych klientów -- </target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Wybierz klienta cephx -- </target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nazwa CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etykieta bezpieczeństwa</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Uruchom etykietę bezpieczeństwa</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Ścieżka CephFS </target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Ścieżka powinna zaczynać się z \'/\' i następne może być słowo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Nowy katalog będzie stworzony. </target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Ścieżka</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Ścieżką może być tylko \'/\' albo słowo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Nowe wiadro będzie stworzone </target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protokół NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klient może nie montować podkatalogów ( np. jeśli Tag = foo, klient może nie montować foo/baz) </target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Używając różnych opcji Tagu, ta sama Ścieżka może być wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Używając różnych opcji Pseudo, ta sama Ścieżka może być wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Brak dostępnych typów dostępu --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Wybierz typ dostępu --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>- Brak squasha -</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Wybierz, jakiego rodzaju identyfikacja użytkownika ma być przeprowadzana --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protokół Transportu </target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Witamy w Cephie! </target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nazwa użytkownika jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Hasło jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Zaloguj</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Przepraszam, użytkownik nie istnieje w  Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Zakazany</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Przepraszam, nie masz dostępu do tego czego szukasz. </target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Konfiguracja RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Usuń wartość konfiguracji lokalnej. Wartość konfiguracji rodzica będzie odziedziczona i zostanie użyta zamiast tej.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minimalna wartość wynosi 0.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista puli</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nazwa może składać się z alfanumerycznych znaków, kresek i podkreśleń.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Wybrana nazwa profilu kodu kasowania jest już używana.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Wtyczka</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Ramka danych (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Musi być większa bądź równa 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Kodowanie kawałka (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Musi być większa bądź równa 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estymator trwałości (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalność  (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domena niepowodzenia Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalność Crusha</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nic</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technika</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Rozmiar pakietu</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>korzeń Crusha</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>urządzenie klasy Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>którykolwiek</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Katalog</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nazwa...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Wybrana nazwa Ceph pula jest już użyta.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Typ pula</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Wybierz typ pula --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupa umieszczenia</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Przynajmniej jedna grupa umieszczenia jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Twój klaster nie obsługuje tylu PG. Skalkuluj proszę potrzebną ilość PG.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Pomoc obliczeniowa</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikowany rozmiar</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flagi</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC Nadpisuje</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Zastosowania</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Skasuj profil kodu.</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Brak profilu kasowania --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Wybierz profil kodu wymazywania --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>zbiór zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Wybierz zasadę Crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>zasada Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Kroki Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Kompresja</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Tryb</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorytm</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Brak algorytmu kompresji wymazywania --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>np. 128 KB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Wartość powinna być większa niż 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maksymalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>np. 512 KB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Wartość powinna być większa niż minimalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Stosunek</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Skompresowany stosunek</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Wartość powinna być pomiędzy 0.0, a 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>np. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Szczegóły</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Szczegóły wydajności</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Szczegóły poziomów pamięci podręcznej</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Przenieś obraz do kosza</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Zabezpieczenie wygasa w </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NIEZABEZPIECZONY </target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Zły format daty. Proszę używać "RRRR-MM-DD GG:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Ochrona już wygasła. Proszę wybrać przyszłą datę lub zostawić pustą.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Przenieś obraz</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Przegląd</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Obiekty docelowe</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Uwierzytelnianie wykrywania</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Użytkownik</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nazwy użytkowników muszą mieć długość od 8 do 64 znaków i \nmogą zawierać jedynie litery, \'.\', \'@\', \'-\', \'_\' lub \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Hasło</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Wspólny użytkownik </target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Wspólne hasło</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Dostępne informacje: </target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>obiekty docelowe iSCSI niedostępne </target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pul</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Dane pula</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Utworzony</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Rozmiar</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Obiekty</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Rozmiar obiektu</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Zaopatrzony</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>Niedostępny</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Całkowite rezerwy</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Jednostka maskowana</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Licznik maskowania</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Rodzic</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefiks nazwy bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Zamówienie</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Migawki</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>To ustawienie zastępuję wartość globalną.</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globalne</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>To jest globalna wartość. Dla tego obrazu nie ustawiono żadnej wartości dla tej opcji.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' and \'@\' nie są dozwolone.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Brak dostępnych rbd puli --  </target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Wybierz pul --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Użyj dedykowanych danych pul </target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Dane pul</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Dedykowany pul, który przechowuje dane obiektowe z RBD</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Musisz zwiększyć rozmiar.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Zaawansowane</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Maskowanie</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednostka pasków</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Wybierz jednostkę pasków -- </target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Pole jest wymagane, ponieważ licznik pasków jest zdefiniowany. </target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Jednostka pasków jest większa niż rozmiar obiektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Licznik pasków </target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Pole jest wymagane, ponieważ jednostka pasków jest zdefiniowana! </target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Licznik pasków musi być większy od 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Zaraz się wycofasz. </target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Usuń Śmieci</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Wszystkie</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pul:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nazwa pula</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Przywróć obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Przywróć</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>Wpisz nazwe nowego obrazu i kliknij. </target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nowa Nazwa</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Wygasły w</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Zabezpieczony do</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Zmiana tych parametrów z domyślnych wartości przeważnie nie jest potrzebna.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ustawienia</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Tylny koniec przechowywania</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Potwierdź</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Ustawienia zaawansowane</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Nazwa IQN obiektu docelowego iSCSI</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Błędna składnia nazwy IQN.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Na przykład: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Więcej informacji</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Ten obiekt docelowy  zmodyfikował zaawansowane ustawienia.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portale</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Dodaj portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Ten obraz zmodyfikował ustawienia. </target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Dodaj obraz.</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Uwierzytelnianie ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inicjatory iSCSI</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inicjator iSCSI</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Klient IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Inicjator IQN powinien być unikalny.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nazwy użytkowników muszą mieć długość od 8 do 64 znaków i mogą zawierać jedynie litery,  \'.\', \'@\', \'-\', \'_\' lub  \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Inicjator iSCSI należą do grupy. Obrazy będą skonfigurowane w grupie. </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Brak dodanych pozycji.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Dodaj inicjator iSCSI</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupy</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupa</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Dodaj grupę</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Kosz</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Zagadnienia</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronizacja</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Gotowy</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Tryb edycji lustrzanego pula</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Sparowany klaster musi być usunięty  przed wyłączeniem lustra. </target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, wybierz, edytuj{Edytuj} inaczej {Dodaj} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nazwa Klastra</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Nazwa klastra jest niepoprawna </target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>ID CephX nie jest poprawne.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adres monitora </target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Adresy rozdzielane przecinkami... </target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Adres monitora nie jest poprawny.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Klucz CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Klucz zakodowany w Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Klucz CephX musi być zakodowany w Base64/</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Liczniki wydajności nie są dostępne</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista demonów</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Liczniki wydajności</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Ładowanie wiadra danych</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Number ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Wartość nie jest poprawna.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Wybrana nazwa już jest użyta.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Właściciel</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Wybierz użytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Uaktywniony</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Typ indeksu</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Zasada umieszczania</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Znacznik</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Maksymalny znacznik</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Wersja</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Główna wersja</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Czas modyfikacji</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Strefa </target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>kontyngent wiadra</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maksymalny rozmiar</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Nielimitowany</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Maksimum obiektów</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nazwa użytkownika</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Wybierz nazwę użytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Auto-generowany klucz</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Klucz dostępu</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajny klucz </target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Pełne imię </target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Adres email</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Zawieszony</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Maksimum wiader</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>pod-użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Zdolności</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Limit użytkownika</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Pokaż</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Klucze</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- wybierz typ --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Pozwolenie </target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Wybierz pozwolenie --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>pod-użytkownik</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Wybrane ID pod-użytkownika jest już użyte.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>odczyt, zapis</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pełny</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Szybki klucz</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Auto-generowany sekret</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Ładowanie danych użytkownika...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Nie można załadować danych użytkownika.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Wybrane ID użytkownika jest już użyte.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ten adres email nie jest poprawny.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Wybrany adres email jest już użyty.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Max. wiader </target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Wyłączony</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Zwyczaj</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>klucz S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nie ma pod-użytkowników.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3 (prosty serwis przechowywania) </target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Nie ma kluczy.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Szybki</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nie ma zdolności. </target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Nielimitowany rozmiar</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. rozmiar</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Nielimitowane obiekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Max. obiektów</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Podana wartość musi być &gt;= 0</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Opis...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Pozwolenia</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potwierdź hasło</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Potwierdzające hasło nie pokrywa się z hasłem.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Email</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Niepoprawny email.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Zamierzasz usunąć uprawnienia „odczytu / aktualizacji użytkownika” od własnego użytkownika.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Jeśli kontynuujesz, nie będziesz mógł dodawać albo usuwać role od użytkowników.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Jesteś pewny, że chcesz kontynuować? </target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Pomoc</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentacja</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>Interfejs API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>O</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Ustawienia Pulpitu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Zarządzanie użytkownikami</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Zalogowany użytkownik</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Wyloguj</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atrybuty (mapa OSD-ków)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Niedostępne metadane</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadane</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Licznik wydajności</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Pisze</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Czyta</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Obecne wartości </target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Źródło </target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Poziom</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Może być aktualizowany w czasie wykonywania (edytowalny)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tagi</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Wartości enumerowane </target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Zobacz także </target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status klastra</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Zarządzanie demonami</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Obiekty bram </target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Serwery metadanych</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Bramy iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>Klient IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Przepustowość klienta</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Odczyt/Zapis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Przepustowość odzyskiwania</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Szoruj</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Wydajność</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Pojemność rzędu</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PG-y na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Pojemność</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Szeregi</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Obecny</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Zaktualizowane uwierzytelnianie wykrywania</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Brak dostępnych portali.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nie ma dostępnych obrazów. </target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Nie ma dostępnych obrazów. Proszę się upewnić, że dodajesz obraz do obiektu docelowego. </target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Nie ma dostępnych inicjatorów iSCSI. Proszę upewnić się, że dodajesz inicjator iSCSI do obiektu docelowego.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>obiekt docelowy iSCSI</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stan</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Odczyt bajtów </target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Zapis bajtów</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Odczyt Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Zapis Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Od</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instancja</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Zagadnienie </target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Progres</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Tryb Edycji</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Dodaj parowanie </target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Edytuj parowanie</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Usuń parowanie</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Lider</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Lokalny</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Zdalny</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>lustrzane parowanie</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Klucz</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Głębokie spłaszczenie</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Warstwowanie </target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Wyłączna blokada</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa obiektów (wymaga wyłącznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Kronikowanie  (wymaga wyłącznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NIEZABEZPIECZONY </target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Wycofywanie migawek RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Wycofanie</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>migawka RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Usunięty o </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stan</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>wersja</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>administrator</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Czuwanie demona </target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Ranga</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Demon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktywność</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>centrale</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>i-węzły</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Użycie</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Zaktualizowany</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Wartość może być zaktualizowana w czasie wykonywania . </target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Demony/klienci nie pobierają tej wartości z\nbazy danych skonfigurowanego monitora. Nie zezwalamy na ustawienie tej opcji przez \'konfiguracje ceph\nustaw.. \'. Ta opcja powinna być skonfigurowana przez ceph.conf albo przez\nterminal.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Opcja działa tylko podczas startu demona.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Opcja dotyczy tylko tworzenia klastra.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Opcja tylko wpływa na tworzenie demona.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Usługa</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Obecna wartość</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Edytowalny</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Włączyć</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Wyłączyć</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Ponowne łączenie, proszę czekać</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Adres publiczny</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otwarte sesje</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Nie w </target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD-ki, które zostały oznaczone jako poza, nie będą oznaczone ponownie jako w gdy zostaną uruchomion</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Nie poza</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD-ki nie będą automatycznie oznaczone jako poza po konfiguracji interwału</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nie powstały </target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD-ki nie mogą startować</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nie upadły</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Raport z niepowodzenia OSD jest ignorowany, także monitory nie oznaczą OSD jako upadłego. </target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pauza </target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pauzuje czytanie i zapisywanie</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nie szoruj</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Szorowanie jest wyłączone</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nie ma głębokiego szorowania</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Głębokie szorowanie jest wyłączone</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Brak zasypywania</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasypywanie PG jest zawieszone</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nie przywrócono</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Przywrócenie PGy jest zawieszone </target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Sortuj bitowo</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Użyj sortowania bitowego</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Usuń snap katalogi</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD-ki zmieniły snapsety</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Odzyskaj usunięte</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Podczas zdrowienia zastosowano usunięcie zamiast parowania</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Twardy limit logów PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Ustawia twardy limit na długość logów PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Zaktualizowane flagi OSD-ków</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD-ik</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>poza</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>w</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>upadły</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Zaznacz</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>Stracony OSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>Zaznaczony jako stracony</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Czyść</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>Oczyszczony</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>Zniszcz</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>Zniszczony</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>Usuń</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG-y</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Czytanie bajtów</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapis bajtów </target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Czytanie ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Zapis ops</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max zasypywanie</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Max aktywność wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Max pojedynczy start wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Uśpienie wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Praca</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>surowość</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Wystartowany</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Użyty</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dostępny</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Czyść</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Działający</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Ostrzeżenie </target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Nieznany</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>Podniesiony</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>brak systemów plików</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktywny</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>Rezerwa</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>niedostępny</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktywny demon</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kworum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Usługa NFS Ganesha nie jest skonfigurowana</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Użytkownik CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>system plików CephFS </target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(Odziedziczyło z globalnej konfiguracji)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>Odziedziczyło z globalnej konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Wybierz, jakiego rodzaju identyfikacja użytkownika ma być przeprowadzana -- </target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Brak dostępnym demonów</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Tryb pamięci podręcznej</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min wiek eksmisji</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min wiek wyrównania </target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max bajtów obiektu docelowego </target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max obiektów docelowych</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nie dodano żadnego zastosowania</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Osiągnięto limit zastosowań </target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Pul może mieć maksymalnie 4 definicje aplikacji. </target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Dozwolone znaki \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Maksymalna długość wynosi 128 znaków</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtruj lub dodaj zastosowanie</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Dodaj zastosowanie</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>skasuj profil kodu</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Rozmiar repliki</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Ostatnia zmiana</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Skasuj profil zakodowany</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Zbiór zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>wiadro</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Wiadra</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>użytkownik</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Zakres</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Czytaj</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Stwórz</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>System roli </target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Zaktualizuj użytkownika</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Kontynuuj </target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Zostałeś automatycznie wylogowany, ponieważ zostały zmienione twoje role.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Każdy obiekt jest podzielony na części fragmentów danych, każdy jest przechowywany na innym OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Oblicz porcje kodu dla każdego obiektu i przechowuj je na różnych OSD.\n Liczba fragmentów kodujących to również liczba OSD, które mogą zostać wyłączone bez utraty danych.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Wtyczka jerasure jest najbardziej uniwersalną i elastyczną wtyczką,\n jest to również domyślne ustawienie dla pui kodowanych przez Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Bardziej elastyczną techniką jest reed_sol_van: wystarczy ustawić k\n oraz m. Technika cauchy_good może być szybsza, ale musisz wybrać rozmiar pakietu\n ostrożnie. Wszystkie reed_sol_r6_op, liberation, blaum_roth, liber8tion są odpowiednikami RAID6\n w tym sensie, że mogą być skonfigurowane tylko z m = 2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Kodowanie będzie wykonywane na pakietach o rozmiarze bajtów naraz.\n Wybór odpowiedniego rozmiaru pakietu jest trudny.\n Dokumentacja jerasure zawiera obszerne informacje na ten temat.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Z wtyczką jerasure, gdy obiekt zakodowany przy użyciu skasowania jest przechowywany na \n wielu OSD-kach, odzyskiwanie po utracie jednego OSD wymaga odczytu ze wszystkich pozostałych.\n Na przykład, jeśli konfiguracja skryptu ma wartość k = 8 ,m = 4 i l=4, utrata jednego OSD wymaga odczytu\n od jedenastu innych do naprawy.\n\n Wtyczka kodu wymazywania lrc tworzy fragmenty o parzystości lokalnej, aby móc je odzyskać\n mniej OSD. Na przykład, jeśli lrc jest skonfigurowane z k = 8, m = 4 i l = 4, zostanie utworzony\n dodatkowy fragment parzystości na każde cztery OSD. Gdy jeden OSD zostanie utracone, może to być\n odzyskane tylko z czterema OSD zamiast jedenastu.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Grupuj fragmenty kodu i danych w zestawy lokalizacji wielkości. Na przykład,\n dla k = 4 i m = 2, gdy lokalność = 3 tworzone są dwie grupy po trzy. Każdy zestaw może\n odzyskać bez czytania kawałków z innego zestawu.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Typ wiadra CRUSH, w którym zdefiniowano każdy zestaw porcji\n przez l zostaną zapisane. Na przykład, jeśli jest ustawiony na rack, każda grupa l porcji będzie\n umieszczona w innym raku. Służy do utworzenia kroku reguły CRUSH, takiego jak krok wyboru\n racka. Jeśli nie jest ustawiony, nie ma takiego grupowania.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Wtyczka isa zawiera bibliotekę ISA. Działa tylko na procesorach Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Wtyczka ISA jest dostępna w dwóch formach Reed Solomon.\n Jeśli ustawiono reed_sol_van, jest to Vandermonde, jeśli ustawiono cauchy, to jest to Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Wtyczka shec zawiera wiele bibliotek SHEC.\n Pozwala ceph odzyskać dane bardziej efektywnie niż kody Reeda Solomona.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Liczba kawałków parzystości, z których każdy zawiera każdą porcję danych w swoim zakresie obliczeń. Liczba jest używana jako estymator trwałości. Na przykład, jeśli c = 2,\n 2 OSD można wyłączyć bez utraty danych.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nazwa wiadra crush jest użyte do pierwszego kroku reguły CRUSH.\nNa przykład krok jest domyślny.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Upewnij się, że żadne dwie porcje nie znajdują się w wiadrze z tą samą awarią\n domeny. Na przykład, jeśli domena awarii jest hostem, nie zostaną na niej zapisane dwie porcje\n hosta. Służy do utworzenia kroku reguły CRUSH, takiego jak krok wyboru hosta.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Ogranicz umieszczanie do urządzeń określonej klasy\n (np. ssd lub hdd), używając nazw klas urządzeń zgniatających na mapie CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Ustaw nazwę katalogu, z którego ładowana jest wtyczka kodu kasowania.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Dozwolone są wszystkie operacje</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Dozwolone są operacje, które nie modyfikują serweru</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Operacje odczytu i zapisu są zakazane, wszystkie inne dozwolone</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Operacje odczytu i zapisu, oraz wszystkie operacje modyfikujące atrybuty albo katalogi są zakazane </target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Brak dostępu w ogóle</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- wybierz priorytet -- </target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Niski</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Wysoki</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informacja</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Ostatnie 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Ostatnie 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Ostatnie 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Ostatnia 1 godzina (domyślnie)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Ostatnie 3 godziny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Ostatnie 6 godzin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Ostatnie 12 godzin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Ostatnie 24 godziny</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Wczoraj</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Dzisiaj</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Do tej pory dzisiaj</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Przedwczoraj</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Ostatnie 2 dni</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Tego dnia tydzień temu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Poprzedni tydzień</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Ten tydzień </target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Do tej pory w tym tygodniu</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Ostatnie 7 dni</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Poprzedniego miesiąca</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>ten miesiąc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Do tej pory w tym miesiącu</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Ostatnie 30 dni</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Ostatnie 90 dni</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Ostatnie 6 miesięcy</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Ostatni 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Poprzedniego roku</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Bieżącego roku</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Do tej pory bieżącego roku</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Ostatnie 2 lata</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Ostatnie 5 lat</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nie wybrano żadnej pozycji</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Odznacz pozycję, żeby wybrać ponownie</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Osiągnięto limit wyboru. </target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtr tagów.</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Dodaj odznakę</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Brak dostępnych pozycji.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Sklonuj</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopia</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Szoruj głęboko</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Zniszcz</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Spłaszcz</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>zaznacz jako upadły</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Zaznacz jako w </target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Zaznacz jako stracony</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Zaznacz jako poza</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Zabezpiecz</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Zmień nazwę</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Przywróć</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Przenieś do kosza</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Odbezpiecz </target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Usunięty</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Sklonowano</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Skopiowano </target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Spłaszczony</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Oczyszczony</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Przywrócony</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Wycofaj</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Tak</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Nie</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Jakość serwisu</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Pożądany limit IO bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Pożądany limit operacji IO na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>limit odczytu BPS</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Pożądany limit odczytu bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>limit  odczytu IOPS</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Pożądany limit operacji odczytu na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit zapisu BPS</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Pożądany limit zapisu bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit zapisu IOPS</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Pożądany limit operacji zapisu na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Wiązka BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Żądana granica serii IO bajtów.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Wiązka IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Żądana granica serii operacji IO.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Odczyt wiązki BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Żądana granica serii odczytanych bajtów.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Odczyt wiązki IOPS</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target> Żądana granica serii operacji odczytu.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Zapis wiązki BPS</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Żądana granica serii bajtów zapisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Zapis wiązki IOPS</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Żądana granica serii operacji zapisu.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Wykonywanie </target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>Wykonaj</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Wykonany</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>Nieznane zadanie</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Tworzenie</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>Utwórz</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aktualizowanie </target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>Zaktualizuj</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Usuwanie</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Klonowanie</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>Sklonuj </target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kopiowanie </target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>Kopiuj</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Spłaszczanie</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>Spłaszcz</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Wycofywanie </target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>Wycofanie</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Przenoszenie</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>Przenieś</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Przeniesiono</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Nie znaleziono obrazu.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Przywracanie</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>Przywróć </target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>oczyszczać</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>oczyść</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>Wszystkie pule</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Nie można wyłączyć lustrzenia ponieważ zawiera parowanie.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},SQuY:function(t,e,n){var a=n("Dd78"),r=n("Tq0f"),i=n("lPUB"),s=n("3ENo"),u=n("wgvl");function o(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}o.prototype.clear=a,o.prototype.delete=r,o.prototype.get=i,o.prototype.has=s,o.prototype.set=u,t.exports=o},STAE:function(t,e,n){var a=n("LQDL"),r=n("0Dky");t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},SVse:function(t,e,n){"use strict";n.r(e),n.d(e,"ɵangular_packages_common_common_c",(function(){return ae})),n.d(e,"ɵangular_packages_common_common_h",(function(){return At})),n.d(e,"ɵangular_packages_common_common_g",(function(){return Ct})),n.d(e,"ɵangular_packages_common_common_f",(function(){return Nt})),n.d(e,"ɵangular_packages_common_common_k",(function(){return Qt})),n.d(e,"ɵangular_packages_common_common_j",(function(){return Jt})),n.d(e,"ɵangular_packages_common_common_i",(function(){return $t})),n.d(e,"ɵangular_packages_common_common_a",(function(){return ft})),n.d(e,"ɵangular_packages_common_common_b",(function(){return bt})),n.d(e,"ɵangular_packages_common_common_e",(function(){return Se})),n.d(e,"ɵangular_packages_common_common_d",(function(){return Ke})),n.d(e,"ɵregisterLocaleData",(function(){return mt})),n.d(e,"registerLocaleData",(function(){return mt})),n.d(e,"formatDate",(function(){return K})),n.d(e,"formatCurrency",(function(){return ut})),n.d(e,"formatNumber",(function(){return lt})),n.d(e,"formatPercent",(function(){return ot})),n.d(e,"NgLocaleLocalization",(function(){return pt})),n.d(e,"NgLocalization",(function(){return ht})),n.d(e,"Plural",(function(){return g})),n.d(e,"NumberFormatStyle",(function(){return h})),n.d(e,"FormStyle",(function(){return p})),n.d(e,"TranslationWidth",(function(){return b})),n.d(e,"FormatWidth",(function(){return m})),n.d(e,"NumberSymbol",(function(){return y})),n.d(e,"WeekDay",(function(){return v})),n.d(e,"getNumberOfCurrencyDigits",(function(){return G})),n.d(e,"getCurrencySymbol",(function(){return V})),n.d(e,"getLocaleDayPeriods",(function(){return _})),n.d(e,"getLocaleDayNames",(function(){return T})),n.d(e,"getLocaleMonthNames",(function(){return w})),n.d(e,"getLocaleId",(function(){return x})),n.d(e,"getLocaleEraNames",(function(){return O})),n.d(e,"getLocaleWeekEndRange",(function(){return I})),n.d(e,"getLocaleFirstDayOfWeek",(function(){return S})),n.d(e,"getLocaleDateFormat",(function(){return N})),n.d(e,"getLocaleDateTimeFormat",(function(){return R})),n.d(e,"getLocaleExtraDayPeriodRules",(function(){return M})),n.d(e,"getLocaleExtraDayPeriods",(function(){return q})),n.d(e,"getLocalePluralCase",(function(){return D})),n.d(e,"getLocaleTimeFormat",(function(){return C})),n.d(e,"getLocaleNumberSymbol",(function(){return A})),n.d(e,"getLocaleNumberFormat",(function(){return k})),n.d(e,"getLocaleCurrencyName",(function(){return L})),n.d(e,"getLocaleCurrencySymbol",(function(){return E})),n.d(e,"ɵparseCookieValue",(function(){return yt})),n.d(e,"CommonModule",(function(){return $e})),n.d(e,"DeprecatedI18NPipesModule",(function(){return Je})),n.d(e,"NgClass",(function(){return Lt})),n.d(e,"NgClassBase",(function(){return Et})),n.d(e,"NgForOf",(function(){return Mt})),n.d(e,"NgForOfContext",(function(){return Pt})),n.d(e,"NgIf",(function(){return jt})),n.d(e,"NgIfContext",(function(){return Ft})),n.d(e,"NgPlural",(function(){return Ht})),n.d(e,"NgPluralCase",(function(){return Ut})),n.d(e,"NgStyle",(function(){return ee})),n.d(e,"NgStyleBase",(function(){return te})),n.d(e,"NgSwitch",(function(){return Bt})),n.d(e,"NgSwitchCase",(function(){return zt})),n.d(e,"NgSwitchDefault",(function(){return Yt})),n.d(e,"NgTemplateOutlet",(function(){return ne})),n.d(e,"NgComponentOutlet",(function(){return Dt})),n.d(e,"DOCUMENT",(function(){return Ze})),n.d(e,"AsyncPipe",(function(){return Ae})),n.d(e,"DatePipe",(function(){return Pe})),n.d(e,"I18nPluralPipe",(function(){return qe})),n.d(e,"I18nSelectPipe",(function(){return je})),n.d(e,"JsonPipe",(function(){return Fe})),n.d(e,"LowerCasePipe",(function(){return ke})),n.d(e,"CurrencyPipe",(function(){return Ye})),n.d(e,"DecimalPipe",(function(){return Be})),n.d(e,"PercentPipe",(function(){return ze})),n.d(e,"SlicePipe",(function(){return We})),n.d(e,"UpperCasePipe",(function(){return De})),n.d(e,"TitleCasePipe",(function(){return Le})),n.d(e,"KeyValuePipe",(function(){return Ve})),n.d(e,"DeprecatedDatePipe",(function(){return ve})),n.d(e,"DeprecatedCurrencyPipe",(function(){return Oe})),n.d(e,"DeprecatedDecimalPipe",(function(){return Te})),n.d(e,"DeprecatedPercentPipe",(function(){return we})),n.d(e,"ɵPLATFORM_BROWSER_ID",(function(){return Qe})),n.d(e,"ɵPLATFORM_SERVER_ID",(function(){return Xe})),n.d(e,"ɵPLATFORM_WORKER_APP_ID",(function(){return tn})),n.d(e,"ɵPLATFORM_WORKER_UI_ID",(function(){return en})),n.d(e,"isPlatformBrowser",(function(){return nn})),n.d(e,"isPlatformServer",(function(){return an})),n.d(e,"isPlatformWorkerApp",(function(){return rn})),n.d(e,"isPlatformWorkerUi",(function(){return sn})),n.d(e,"VERSION",(function(){return un})),n.d(e,"ViewportScroller",(function(){return on})),n.d(e,"ɵNullViewportScroller",(function(){return dn})),n.d(e,"ɵNgClassImplProvider__POST_R3__",(function(){return Rt})),n.d(e,"ɵNgClassR2Impl",(function(){return It})),n.d(e,"ɵNgClassImpl",(function(){return St})),n.d(e,"ɵNgStyleImplProvider__POST_R3__",(function(){return Zt})),n.d(e,"ɵNgStyleR2Impl",(function(){return Kt})),n.d(e,"ɵNgStyleImpl",(function(){return Wt})),n.d(e,"ɵngStyleDirectiveDef__POST_R3__",(function(){return Xt})),n.d(e,"ɵngClassDirectiveDef__POST_R3__",(function(){return kt})),n.d(e,"PlatformLocation",(function(){return r})),n.d(e,"LOCATION_INITIALIZED",(function(){return i})),n.d(e,"LocationStrategy",(function(){return s})),n.d(e,"APP_BASE_HREF",(function(){return u})),n.d(e,"HashLocationStrategy",(function(){return d})),n.d(e,"PathLocationStrategy",(function(){return c})),n.d(e,"Location",(function(){return o}));var a=n("8Y7J");class r{}const i=new a.InjectionToken("Location Initialized");class s{}const u=new a.InjectionToken("appBaseHref");class o{constructor(t,e){this._subject=new a.EventEmitter,this._urlChangeListeners=[],this._platformStrategy=t;const n=this._platformStrategy.getBaseHref();this._platformLocation=e,this._baseHref=o.stripTrailingSlash(l(n)),this._platformStrategy.onPopState(t=>{this._subject.emit({url:this.path(!0),pop:!0,state:t.state,type:t.type})})}path(t=!1){return this.normalize(this._platformStrategy.path(t))}getState(){return this._platformLocation.getState()}isCurrentPathEqualTo(t,e=""){return this.path()==this.normalize(t+o.normalizeQueryParams(e))}normalize(t){return o.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,l(t)))}prepareExternalUrl(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)}go(t,e="",n=null){this._platformStrategy.pushState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+o.normalizeQueryParams(e)),n)}replaceState(t,e="",n=null){this._platformStrategy.replaceState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+o.normalizeQueryParams(e)),n)}forward(){this._platformStrategy.forward()}back(){this._platformStrategy.back()}onUrlChange(t){this._urlChangeListeners.push(t),this.subscribe(t=>{this._notifyUrlChangeListeners(t.url,t.state)})}_notifyUrlChangeListeners(t="",e){this._urlChangeListeners.forEach(n=>n(t,e))}subscribe(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})}static normalizeQueryParams(t){return t&&"?"!==t[0]?"?"+t:t}static joinWithSlash(t,e){if(0==t.length)return e;if(0==e.length)return t;let n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e}static stripTrailingSlash(t){const e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)}}function l(t){return t.replace(/\/index.html$/,"")}class d extends s{constructor(t,e){super(),this._platformLocation=t,this._baseHref="",null!=e&&(this._baseHref=e)}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}path(t=!1){let e=this._platformLocation.hash;return null==e&&(e="#"),e.length>0?e.substring(1):e}prepareExternalUrl(t){const e=o.joinWithSlash(this._baseHref,t);return e.length>0?"#"+e:e}pushState(t,e,n,a){let r=this.prepareExternalUrl(n+o.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(t,e,r)}replaceState(t,e,n,a){let r=this.prepareExternalUrl(n+o.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}class c extends s{constructor(t,e){if(super(),this._platformLocation=t,null==e&&(e=this._platformLocation.getBaseHrefFromDOM()),null==e)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=e}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return o.joinWithSlash(this._baseHref,t)}path(t=!1){const e=this._platformLocation.pathname+o.normalizeQueryParams(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?`${e}${n}`:e}pushState(t,e,n,a){const r=this.prepareExternalUrl(n+o.normalizeQueryParams(a));this._platformLocation.pushState(t,e,r)}replaceState(t,e,n,a){const r=this.prepareExternalUrl(n+o.normalizeQueryParams(a));this._platformLocation.replaceState(t,e,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}const f={ADP:[void 0,void 0,0],AFN:[void 0,void 0,0],ALL:[void 0,void 0,0],AMD:[void 0,void 0,0],AOA:[void 0,"Kz"],ARS:[void 0,"$"],AUD:["A$","$"],BAM:[void 0,"KM"],BBD:[void 0,"$"],BDT:[void 0,"৳"],BHD:[void 0,void 0,3],BIF:[void 0,void 0,0],BMD:[void 0,"$"],BND:[void 0,"$"],BOB:[void 0,"Bs"],BRL:["R$"],BSD:[void 0,"$"],BWP:[void 0,"P"],BYN:[void 0,"р.",2],BYR:[void 0,void 0,0],BZD:[void 0,"$"],CAD:["CA$","$",2],CHF:[void 0,void 0,2],CLF:[void 0,void 0,4],CLP:[void 0,"$",0],CNY:["CN¥","¥"],COP:[void 0,"$",0],CRC:[void 0,"₡",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"Kč",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E£"],ESP:[void 0,"₧",0],EUR:["€"],FJD:[void 0,"$"],FKP:[void 0,"£"],GBP:["£"],GEL:[void 0,"₾"],GIP:[void 0,"£"],GNF:[void 0,"FG",0],GTQ:[void 0,"Q"],GYD:[void 0,"$",0],HKD:["HK$","$"],HNL:[void 0,"L"],HRK:[void 0,"kn"],HUF:[void 0,"Ft",2],IDR:[void 0,"Rp",0],ILS:["₪"],INR:["₹"],IQD:[void 0,void 0,0],IRR:[void 0,void 0,0],ISK:[void 0,"kr",0],ITL:[void 0,void 0,0],JMD:[void 0,"$"],JOD:[void 0,void 0,3],JPY:["¥",void 0,0],KHR:[void 0,"៛"],KMF:[void 0,"CF",0],KPW:[void 0,"₩",0],KRW:["₩",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"₸"],LAK:[void 0,"₭",0],LBP:[void 0,"L£",0],LKR:[void 0,"Rs"],LRD:[void 0,"$"],LTL:[void 0,"Lt"],LUF:[void 0,void 0,0],LVL:[void 0,"Ls"],LYD:[void 0,void 0,3],MGA:[void 0,"Ar",0],MGF:[void 0,void 0,0],MMK:[void 0,"K",0],MNT:[void 0,"₮",0],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",0],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"₦"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:[void 0,"₱"],PKR:[void 0,"Rs",0],PLN:[void 0,"zł"],PYG:[void 0,"₲",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"₽"],RUR:[void 0,"р."],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"£"],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"£"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"£",0],THB:[void 0,"฿"],TMM:[void 0,void 0,0],TND:[void 0,void 0,3],TOP:[void 0,"T$"],TRL:[void 0,void 0,0],TRY:[void 0,"₺"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,0],UAH:[void 0,"₴"],UGX:[void 0,void 0,0],USD:["$"],UYI:[void 0,void 0,0],UYU:[void 0,"$"],UZS:[void 0,void 0,0],VEF:[void 0,"Bs"],VND:["₫",void 0,0],VUV:[void 0,void 0,0],XAF:["FCFA",void 0,0],XCD:["EC$","$"],XOF:["CFA",void 0,0],XPF:["CFPF",void 0,0],YER:[void 0,void 0,0],ZAR:[void 0,"R"],ZMK:[void 0,void 0,0],ZMW:[void 0,"ZK"],ZWD:[void 0,void 0,0]},h=function(){var t={Decimal:0,Percent:1,Currency:2,Scientific:3};return t[t.Decimal]="Decimal",t[t.Percent]="Percent",t[t.Currency]="Currency",t[t.Scientific]="Scientific",t}(),g=function(){var t={Zero:0,One:1,Two:2,Few:3,Many:4,Other:5};return t[t.Zero]="Zero",t[t.One]="One",t[t.Two]="Two",t[t.Few]="Few",t[t.Many]="Many",t[t.Other]="Other",t}(),p=function(){var t={Format:0,Standalone:1};return t[t.Format]="Format",t[t.Standalone]="Standalone",t}(),b=function(){var t={Narrow:0,Abbreviated:1,Wide:2,Short:3};return t[t.Narrow]="Narrow",t[t.Abbreviated]="Abbreviated",t[t.Wide]="Wide",t[t.Short]="Short",t}(),m=function(){var t={Short:0,Medium:1,Long:2,Full:3};return t[t.Short]="Short",t[t.Medium]="Medium",t[t.Long]="Long",t[t.Full]="Full",t}(),y=function(){var t={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};return t[t.Decimal]="Decimal",t[t.Group]="Group",t[t.List]="List",t[t.PercentSign]="PercentSign",t[t.PlusSign]="PlusSign",t[t.MinusSign]="MinusSign",t[t.Exponential]="Exponential",t[t.SuperscriptingExponent]="SuperscriptingExponent",t[t.PerMille]="PerMille",t[t.Infinity]="Infinity",t[t.NaN]="NaN",t[t.TimeSeparator]="TimeSeparator",t[t.CurrencyDecimal]="CurrencyDecimal",t[t.CurrencyGroup]="CurrencyGroup",t}(),v=function(){var t={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6};return t[t.Sunday]="Sunday",t[t.Monday]="Monday",t[t.Tuesday]="Tuesday",t[t.Wednesday]="Wednesday",t[t.Thursday]="Thursday",t[t.Friday]="Friday",t[t.Saturday]="Saturday",t}();function x(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].LocaleId]}function _(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].DayPeriodsFormat],r[a["ɵLocaleDataIndex"].DayPeriodsStandalone]],e);return j(i,n)}function T(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].DaysFormat],r[a["ɵLocaleDataIndex"].DaysStandalone]],e);return j(i,n)}function w(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].MonthsFormat],r[a["ɵLocaleDataIndex"].MonthsStandalone]],e);return j(i,n)}function O(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].Eras],e)}function S(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].FirstDayOfWeek]}function I(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].WeekendRange]}function N(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].DateFormat],e)}function C(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].TimeFormat],e)}function R(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].DateTimeFormat],e)}function A(t,e){const n=Object(a["ɵfindLocaleData"])(t),r=n[a["ɵLocaleDataIndex"].NumberSymbols][e];if(void 0===r){if(e===y.CurrencyDecimal)return n[a["ɵLocaleDataIndex"].NumberSymbols][y.Decimal];if(e===y.CurrencyGroup)return n[a["ɵLocaleDataIndex"].NumberSymbols][y.Group]}return r}function k(t,e){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].NumberFormats][e]}function E(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].CurrencySymbol]||null}function L(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].CurrencyName]||null}const D=a["ɵgetLocalePluralCase"];function P(t){if(!t[a["ɵLocaleDataIndex"].ExtraData])throw new Error(`Missing extra locale data for the locale "${t[a["ɵLocaleDataIndex"].LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function M(t){const e=Object(a["ɵfindLocaleData"])(t);return P(e),(e[a["ɵLocaleDataIndex"].ExtraData][2]||[]).map(t=>"string"==typeof t?F(t):[F(t[0]),F(t[1])])}function q(t,e,n){const r=Object(a["ɵfindLocaleData"])(t);P(r);const i=j([r[a["ɵLocaleDataIndex"].ExtraData][0],r[a["ɵLocaleDataIndex"].ExtraData][1]],e)||[];return j(i,n)||[]}function j(t,e){for(let n=e;n>-1;n--)if(void 0!==t[n])return t[n];throw new Error("Locale data API: locale data undefined")}function F(t){const[e,n]=t.split(":");return{hours:+e,minutes:+n}}function V(t,e,n="en"){const r=function(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].Currencies]}(n)[t]||f[t]||[],i=r[1];return"narrow"===e&&"string"==typeof i?i:r[0]||t}function G(t){let e;const n=f[t];return n&&(e=n[2]),"number"==typeof e?e:2}const B=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,z={},Y=/((?:[^GyMLwWdEabBhHmsSzZO']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,H=function(){var t={Short:0,ShortGMT:1,Long:2,Extended:3};return t[t.Short]="Short",t[t.ShortGMT]="ShortGMT",t[t.Long]="Long",t[t.Extended]="Extended",t}(),U=function(){var t={FullYear:0,Month:1,Date:2,Hours:3,Minutes:4,Seconds:5,FractionalSeconds:6,Day:7};return t[t.FullYear]="FullYear",t[t.Month]="Month",t[t.Date]="Date",t[t.Hours]="Hours",t[t.Minutes]="Minutes",t[t.Seconds]="Seconds",t[t.FractionalSeconds]="FractionalSeconds",t[t.Day]="Day",t}(),W=function(){var t={DayPeriods:0,Days:1,Months:2,Eras:3};return t[t.DayPeriods]="DayPeriods",t[t.Days]="Days",t[t.Months]="Months",t[t.Eras]="Eras",t}();function K(t,e,n,a){let r=function(t){if(rt(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){t=t.trim();const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);if(/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){const[e,n,a]=t.split("-").map(t=>+t);return new Date(e,n-1,a)}let n;if(n=t.match(B))return at(n)}const e=new Date(t);if(!rt(e))throw new Error(`Unable to convert "${t}" into a date`);return e}(t);e=function t(e,n){const a=x(e);if(z[a]=z[a]||{},z[a][n])return z[a][n];let r="";switch(n){case"shortDate":r=N(e,m.Short);break;case"mediumDate":r=N(e,m.Medium);break;case"longDate":r=N(e,m.Long);break;case"fullDate":r=N(e,m.Full);break;case"shortTime":r=C(e,m.Short);break;case"mediumTime":r=C(e,m.Medium);break;case"longTime":r=C(e,m.Long);break;case"fullTime":r=C(e,m.Full);break;case"short":const n=t(e,"shortTime"),a=t(e,"shortDate");r=$(R(e,m.Short),[n,a]);break;case"medium":const i=t(e,"mediumTime"),s=t(e,"mediumDate");r=$(R(e,m.Medium),[i,s]);break;case"long":const u=t(e,"longTime"),o=t(e,"longDate");r=$(R(e,m.Long),[u,o]);break;case"full":const l=t(e,"fullTime"),d=t(e,"fullDate");r=$(R(e,m.Full),[l,d])}return r&&(z[a][n]=r),r}(n,e)||e;let i,s=[];for(;e;){if(i=Y.exec(e),!i){s.push(e);break}{s=s.concat(i.slice(1));const t=s.pop();if(!t)break;e=t}}let u=r.getTimezoneOffset();a&&(u=nt(a,u),r=function(t,e,n){const a=t.getTimezoneOffset();return function(t,e){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+e),t}(t,-1*(nt(e,a)-a))}(r,a));let o="";return s.forEach(t=>{const e=function(t){if(et[t])return et[t];let e;switch(t){case"G":case"GG":case"GGG":e=Q(W.Eras,b.Abbreviated);break;case"GGGG":e=Q(W.Eras,b.Wide);break;case"GGGGG":e=Q(W.Eras,b.Narrow);break;case"y":e=Z(U.FullYear,1,0,!1,!0);break;case"yy":e=Z(U.FullYear,2,0,!0,!0);break;case"yyy":e=Z(U.FullYear,3,0,!1,!0);break;case"yyyy":e=Z(U.FullYear,4,0,!1,!0);break;case"M":case"L":e=Z(U.Month,1,1);break;case"MM":case"LL":e=Z(U.Month,2,1);break;case"MMM":e=Q(W.Months,b.Abbreviated);break;case"MMMM":e=Q(W.Months,b.Wide);break;case"MMMMM":e=Q(W.Months,b.Narrow);break;case"LLL":e=Q(W.Months,b.Abbreviated,p.Standalone);break;case"LLLL":e=Q(W.Months,b.Wide,p.Standalone);break;case"LLLLL":e=Q(W.Months,b.Narrow,p.Standalone);break;case"w":e=tt(1);break;case"ww":e=tt(2);break;case"W":e=tt(1,!0);break;case"d":e=Z(U.Date,1);break;case"dd":e=Z(U.Date,2);break;case"E":case"EE":case"EEE":e=Q(W.Days,b.Abbreviated);break;case"EEEE":e=Q(W.Days,b.Wide);break;case"EEEEE":e=Q(W.Days,b.Narrow);break;case"EEEEEE":e=Q(W.Days,b.Short);break;case"a":case"aa":case"aaa":e=Q(W.DayPeriods,b.Abbreviated);break;case"aaaa":e=Q(W.DayPeriods,b.Wide);break;case"aaaaa":e=Q(W.DayPeriods,b.Narrow);break;case"b":case"bb":case"bbb":e=Q(W.DayPeriods,b.Abbreviated,p.Standalone,!0);break;case"bbbb":e=Q(W.DayPeriods,b.Wide,p.Standalone,!0);break;case"bbbbb":e=Q(W.DayPeriods,b.Narrow,p.Standalone,!0);break;case"B":case"BB":case"BBB":e=Q(W.DayPeriods,b.Abbreviated,p.Format,!0);break;case"BBBB":e=Q(W.DayPeriods,b.Wide,p.Format,!0);break;case"BBBBB":e=Q(W.DayPeriods,b.Narrow,p.Format,!0);break;case"h":e=Z(U.Hours,1,-12);break;case"hh":e=Z(U.Hours,2,-12);break;case"H":e=Z(U.Hours,1);break;case"HH":e=Z(U.Hours,2);break;case"m":e=Z(U.Minutes,1);break;case"mm":e=Z(U.Minutes,2);break;case"s":e=Z(U.Seconds,1);break;case"ss":e=Z(U.Seconds,2);break;case"S":e=Z(U.FractionalSeconds,1);break;case"SS":e=Z(U.FractionalSeconds,2);break;case"SSS":e=Z(U.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=X(H.Short);break;case"ZZZZZ":e=X(H.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=X(H.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=X(H.Long);break;default:return null}return et[t]=e,e}(t);o+=e?e(r,n,u):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),o}function $(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,(function(t,n){return null!=e&&n in e?e[n]:t}))),t}function J(t,e,n="-",a,r){let i="";(t<0||r&&t<=0)&&(r?t=1-t:(t=-t,i=n));let s=String(t);for(;s.length<e;)s="0"+s;return a&&(s=s.substr(s.length-e)),i+s}function Z(t,e,n=0,a=!1,r=!1){return function(i,s){let u=function(t,e){switch(t){case U.FullYear:return e.getFullYear();case U.Month:return e.getMonth();case U.Date:return e.getDate();case U.Hours:return e.getHours();case U.Minutes:return e.getMinutes();case U.Seconds:return e.getSeconds();case U.FractionalSeconds:return e.getMilliseconds();case U.Day:return e.getDay();default:throw new Error(`Unknown DateType value "${t}".`)}}(t,i);if((n>0||u>-n)&&(u+=n),t===U.Hours)0===u&&-12===n&&(u=12);else if(t===U.FractionalSeconds)return o=e,J(u,3).substr(0,o);var o;const l=A(s,y.MinusSign);return J(u,e,l,a,r)}}function Q(t,e,n=p.Format,a=!1){return function(r,i){return function(t,e,n,a,r,i){switch(n){case W.Months:return w(e,r,a)[t.getMonth()];case W.Days:return T(e,r,a)[t.getDay()];case W.DayPeriods:const s=t.getHours(),u=t.getMinutes();if(i){const t=M(e),n=q(e,r,a);let i;if(t.forEach((t,e)=>{if(Array.isArray(t)){const{hours:a,minutes:r}=t[0],{hours:o,minutes:l}=t[1];s>=a&&u>=r&&(s<o||s===o&&u<l)&&(i=n[e])}else{const{hours:a,minutes:r}=t;a===s&&r===u&&(i=n[e])}}),i)return i}return _(e,r,a)[s<12?0:1];case W.Eras:return O(e,a)[t.getFullYear()<=0?0:1];default:throw new Error("unexpected translation type "+n)}}(r,i,t,e,n,a)}}function X(t){return function(e,n,a){const r=-1*a,i=A(n,y.MinusSign),s=r>0?Math.floor(r/60):Math.ceil(r/60);switch(t){case H.Short:return(r>=0?"+":"")+J(s,2,i)+J(Math.abs(r%60),2,i);case H.ShortGMT:return"GMT"+(r>=0?"+":"")+J(s,1,i);case H.Long:return"GMT"+(r>=0?"+":"")+J(s,2,i)+":"+J(Math.abs(r%60),2,i);case H.Extended:return 0===a?"Z":(r>=0?"+":"")+J(s,2,i)+":"+J(Math.abs(r%60),2,i);default:throw new Error(`Unknown zone width "${t}"`)}}}function tt(t,e=!1){return function(n,a){let r;if(e){const t=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,e=n.getDate();r=1+Math.floor((e+t)/7)}else{const t=function(t){const e=new Date(t,0,1).getDay();return new Date(t,0,1+(e<=4?4:11)-e)}(n.getFullYear()),e=(i=n,new Date(i.getFullYear(),i.getMonth(),i.getDate()+(4-i.getDay()))).getTime()-t.getTime();r=1+Math.round(e/6048e5)}var i;return J(r,t,A(a,y.MinusSign))}}const et={};function nt(t,e){t=t.replace(/:/g,"");const n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function at(t){const e=new Date(0);let n=0,a=0;const r=t[8]?e.setUTCFullYear:e.setFullYear,i=t[8]?e.setUTCHours:e.setHours;t[9]&&(n=Number(t[9]+t[10]),a=Number(t[9]+t[11])),r.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));const s=Number(t[4]||0)-n,u=Number(t[5]||0)-a,o=Number(t[6]||0),l=Math.round(1e3*parseFloat("0."+(t[7]||0)));return i.call(e,s,u,o,l),e}function rt(t){return t instanceof Date&&!isNaN(t.valueOf())}const it=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function st(t,e,n,a,r,i,s=!1){let u="",o=!1;if(isFinite(t)){let l=function(t){let e,n,a,r,i,s=Math.abs(t)+"",u=0;for((n=s.indexOf("."))>-1&&(s=s.replace(".","")),(a=s.search(/e/i))>0?(n<0&&(n=a),n+=+s.slice(a+1),s=s.substring(0,a)):n<0&&(n=s.length),a=0;"0"===s.charAt(a);a++);if(a===(i=s.length))e=[0],n=1;else{for(i--;"0"===s.charAt(i);)i--;for(n-=a,e=[],r=0;a<=i;a++,r++)e[r]=Number(s.charAt(a))}return n>22&&(e=e.splice(0,21),u=n-1,n=1),{digits:e,exponent:u,integerLen:n}}(t);s&&(l=function(t){if(0===t.digits[0])return t;const e=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===e?t.digits.push(0,0):1===e&&t.digits.push(0),t.integerLen+=2),t}(l));let d=e.minInt,c=e.minFrac,f=e.maxFrac;if(i){const t=i.match(it);if(null===t)throw new Error(i+" is not a valid digit info");const e=t[1],n=t[3],a=t[5];null!=e&&(d=ct(e)),null!=n&&(c=ct(n)),null!=a?f=ct(a):null!=n&&c>f&&(f=c)}!function(t,e,n){if(e>n)throw new Error(`The minimum number of digits after fraction (${e}) is higher than the maximum (${n}).`);let a=t.digits,r=a.length-t.integerLen;const i=Math.min(Math.max(e,r),n);let s=i+t.integerLen,u=a[s];if(s>0){a.splice(Math.max(t.integerLen,s));for(let t=s;t<a.length;t++)a[t]=0}else{r=Math.max(0,r),t.integerLen=1,a.length=Math.max(1,s=i+1),a[0]=0;for(let t=1;t<s;t++)a[t]=0}if(u>=5)if(s-1<0){for(let e=0;e>s;e--)a.unshift(0),t.integerLen++;a.unshift(1),t.integerLen++}else a[s-1]++;for(;r<Math.max(0,i);r++)a.push(0);let o=0!==i;const l=e+t.integerLen,d=a.reduceRight((function(t,e,n,a){return a[n]=(e+=t)<10?e:e-10,o&&(0===a[n]&&n>=l?a.pop():o=!1),e>=10?1:0}),0);d&&(a.unshift(d),t.integerLen++)}(l,c,f);let h=l.digits,g=l.integerLen;const p=l.exponent;let b=[];for(o=h.every(t=>!t);g<d;g++)h.unshift(0);for(;g<0;g++)h.unshift(0);g>0?b=h.splice(g,h.length):(b=h,h=[0]);const m=[];for(h.length>=e.lgSize&&m.unshift(h.splice(-e.lgSize,h.length).join(""));h.length>e.gSize;)m.unshift(h.splice(-e.gSize,h.length).join(""));h.length&&m.unshift(h.join("")),u=m.join(A(n,a)),b.length&&(u+=A(n,r)+b.join("")),p&&(u+=A(n,y.Exponential)+"+"+p)}else u=A(n,y.Infinity);return u=t<0&&!o?e.negPre+u+e.negSuf:e.posPre+u+e.posSuf,u}function ut(t,e,n,a,r){const i=dt(k(e,h.Currency),A(e,y.MinusSign));return i.minFrac=G(a),i.maxFrac=i.minFrac,st(t,i,e,y.CurrencyGroup,y.CurrencyDecimal,r).replace("¤",n).replace("¤","")}function ot(t,e,n){return st(t,dt(k(e,h.Percent),A(e,y.MinusSign)),e,y.Group,y.Decimal,n,!0).replace(new RegExp("%","g"),A(e,y.PercentSign))}function lt(t,e,n){return st(t,dt(k(e,h.Decimal),A(e,y.MinusSign)),e,y.Group,y.Decimal,n)}function dt(t,e="-"){const n={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},a=t.split(";"),r=a[0],i=a[1],s=-1!==r.indexOf(".")?r.split("."):[r.substring(0,r.lastIndexOf("0")+1),r.substring(r.lastIndexOf("0")+1)],u=s[0],o=s[1]||"";n.posPre=u.substr(0,u.indexOf("#"));for(let d=0;d<o.length;d++){const t=o.charAt(d);"0"===t?n.minFrac=n.maxFrac=d+1:"#"===t?n.maxFrac=d+1:n.posSuf+=t}const l=u.split(",");if(n.gSize=l[1]?l[1].length:0,n.lgSize=l[2]||l[1]?(l[2]||l[1]).length:0,i){const t=r.length-n.posPre.length-n.posSuf.length,e=i.indexOf("#");n.negPre=i.substr(0,e).replace(/'/g,""),n.negSuf=i.substr(e+t).replace(/'/g,"")}else n.negPre=e+n.posPre,n.negSuf=n.posSuf;return n}function ct(t){const e=parseInt(t);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}const ft=new a.InjectionToken("UseV4Plurals");class ht{}function gt(t,e,n,a){let r="="+t;if(e.indexOf(r)>-1)return r;if(r=n.getPluralCategory(t,a),e.indexOf(r)>-1)return r;if(e.indexOf("other")>-1)return"other";throw new Error(`No plural message found for value "${t}"`)}class pt extends ht{constructor(t,e){super(),this.locale=t,this.deprecatedPluralFn=e}getPluralCategory(t,e){switch(this.deprecatedPluralFn?this.deprecatedPluralFn(e||this.locale,t):D(e||this.locale)(t)){case g.Zero:return"zero";case g.One:return"one";case g.Two:return"two";case g.Few:return"few";case g.Many:return"many";default:return"other"}}}function bt(t,e){"string"==typeof e&&(e=parseInt(e,10));const n=e,a=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=a.length,s=parseInt(a,10),u=parseInt(n.toString().replace(/^[^.]*\.?|0+$/g,""),10)||0;switch(t.split("-")[0].toLowerCase()){case"af":case"asa":case"az":case"bem":case"bez":case"bg":case"brx":case"ce":case"cgg":case"chr":case"ckb":case"ee":case"el":case"eo":case"es":case"eu":case"fo":case"fur":case"gsw":case"ha":case"haw":case"hu":case"jgo":case"jmc":case"ka":case"kk":case"kkj":case"kl":case"ks":case"ksb":case"ky":case"lb":case"lg":case"mas":case"mgo":case"ml":case"mn":case"nb":case"nd":case"ne":case"nn":case"nnh":case"nyn":case"om":case"or":case"os":case"ps":case"rm":case"rof":case"rwk":case"saq":case"seh":case"sn":case"so":case"sq":case"ta":case"te":case"teo":case"tk":case"tr":case"ug":case"uz":case"vo":case"vun":case"wae":case"xog":return 1===n?g.One:g.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?g.One:g.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?g.One:g.Other;case"ar":return 0===n?g.Zero:1===n?g.One:2===n?g.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?g.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?g.Many:g.Other;case"ast":case"ca":case"de":case"en":case"et":case"fi":case"fy":case"gl":case"it":case"nl":case"sv":case"sw":case"ur":case"yi":return 1===r&&0===i?g.One:g.Other;case"be":return n%10==1&&n%100!=11?g.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?g.Few:n%10==0||n%10===Math.floor(n%10)&&n%10>=5&&n%10<=9||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=14?g.Many:g.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?g.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?g.Two:n%10===Math.floor(n%10)&&(n%10>=3&&n%10<=4||n%10==9)&&!(n%100>=10&&n%100<=19||n%100>=70&&n%100<=79||n%100>=90&&n%100<=99)?g.Few:0!==n&&n%1e6==0?g.Many:g.Other;case"bs":case"hr":case"sr":return 0===i&&r%10==1&&r%100!=11||s%10==1&&s%100!=11?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||s%10===Math.floor(s%10)&&s%10>=2&&s%10<=4&&!(s%100>=12&&s%100<=14)?g.Few:g.Other;case"cs":case"sk":return 1===r&&0===i?g.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?g.Few:0!==i?g.Many:g.Other;case"cy":return 0===n?g.Zero:1===n?g.One:2===n?g.Two:3===n?g.Few:6===n?g.Many:g.Other;case"da":return 1===n||0!==u&&(0===r||1===r)?g.One:g.Other;case"dsb":case"hsb":return 0===i&&r%100==1||s%100==1?g.One:0===i&&r%100==2||s%100==2?g.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||s%100===Math.floor(s%100)&&s%100>=3&&s%100<=4?g.Few:g.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?g.One:g.Other;case"fil":return 0===i&&(1===r||2===r||3===r)||0===i&&r%10!=4&&r%10!=6&&r%10!=9||0!==i&&s%10!=4&&s%10!=6&&s%10!=9?g.One:g.Other;case"ga":return 1===n?g.One:2===n?g.Two:n===Math.floor(n)&&n>=3&&n<=6?g.Few:n===Math.floor(n)&&n>=7&&n<=10?g.Many:g.Other;case"gd":return 1===n||11===n?g.One:2===n||12===n?g.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?g.Few:g.Other;case"gv":return 0===i&&r%10==1?g.One:0===i&&r%10==2?g.Two:0!==i||r%100!=0&&r%100!=20&&r%100!=40&&r%100!=60&&r%100!=80?0!==i?g.Many:g.Other:g.Few;case"he":return 1===r&&0===i?g.One:2===r&&0===i?g.Two:0!==i||n>=0&&n<=10||n%10!=0?g.Other:g.Many;case"is":return 0===u&&r%10==1&&r%100!=11||0!==u?g.One:g.Other;case"ksh":return 0===n?g.Zero:1===n?g.One:g.Other;case"kw":case"naq":case"se":case"smn":return 1===n?g.One:2===n?g.Two:g.Other;case"lag":return 0===n?g.Zero:0!==r&&1!==r||0===n?g.Other:g.One;case"lt":return n%10!=1||n%100>=11&&n%100<=19?n%10===Math.floor(n%10)&&n%10>=2&&n%10<=9&&!(n%100>=11&&n%100<=19)?g.Few:0!==s?g.Many:g.Other:g.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&s%100===Math.floor(s%100)&&s%100>=11&&s%100<=19?g.Zero:n%10==1&&n%100!=11||2===i&&s%10==1&&s%100!=11||2!==i&&s%10==1?g.One:g.Other;case"mk":return 0===i&&r%10==1||s%10==1?g.One:g.Other;case"mt":return 1===n?g.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?g.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?g.Many:g.Other;case"pl":return 1===r&&0===i?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?g.Few:0===i&&1!==r&&r%10===Math.floor(r%10)&&r%10>=0&&r%10<=1||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=12&&r%100<=14?g.Many:g.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?g.One:g.Other;case"ro":return 1===r&&0===i?g.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?g.Few:g.Other;case"ru":case"uk":return 0===i&&r%10==1&&r%100!=11?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?g.Few:0===i&&r%10==0||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=11&&r%100<=14?g.Many:g.Other;case"shi":return 0===r||1===n?g.One:n===Math.floor(n)&&n>=2&&n<=10?g.Few:g.Other;case"si":return 0===n||1===n||0===r&&1===s?g.One:g.Other;case"sl":return 0===i&&r%100==1?g.One:0===i&&r%100==2?g.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?g.Few:g.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?g.One:g.Other;default:return g.Other}}function mt(t,e,n){"string"!=typeof e&&(n=e,e=t[a["ɵLocaleDataIndex"].LocaleId]),e=e.toLowerCase().replace(/_/g,"-"),a["ɵLOCALE_DATA"][e]=t,n&&(a["ɵLOCALE_DATA"][e][a["ɵLocaleDataIndex"].ExtraData]=n)}function yt(t,e){e=encodeURIComponent(e);for(const n of t.split(";")){const t=n.indexOf("="),[a,r]=-1==t?[n,""]:[n.slice(0,t),n.slice(t+1)];if(a.trim()===e)return decodeURIComponent(r)}return null}class vt{constructor(t,e){this._name=t,this._options=e,this.value=null,this._lastSetValue=null,this._lastSetValueType=0,this._lastSetValueIdentityChange=!1}setValue(t){if(Array.isArray(t))this._lastSetValueType=4;else if(t instanceof Set)this._lastSetValueType=8;else if(t&&"string"==typeof t){if(!(4&this._options))throw new Error(this._name+" string values are not allowed");this._lastSetValueType=1}else this._lastSetValueType=t?2:0;this._lastSetValueIdentityChange=!0,this._lastSetValue=t||null}hasValueChanged(){let t=this._lastSetValueIdentityChange;if(!(t||14&this._lastSetValueType))return!1;let e=null;const n=!!(1&this._options),a=!!(8&this._options),r=!!(2&this._options);switch(this._lastSetValueType){case 1:const i=this._lastSetValue.split(/\s+/g);16&this._options?(e={},i.forEach((t,n)=>e[t]=!0)):e=i.reduce((t,e,n)=>t+(n?" ":"")+e);break;case 2:const s=this._lastSetValue,u=Object.keys(s);t||(t=!this.value||function(t,e,n){const a=t;if(!Ot(Object.keys(e),a))return!0;for(let r=0;r<a.length;r++){const t=a[r];if(e[t]!==n[t])return!0}return!1}(u,this.value,s)),t&&(e=xt(this._name,n,a,r,s,u));break;case 4:case 8:const o=Array.from(this._lastSetValue);t||(t=!Ot(Object.keys(this.value),o)),t&&(e=xt(this._name,n,a,r,o));break;default:e=null}return t&&(this.value=e),t}}function xt(t,e,n,a,r,i){const s={};if(i)for(let u=0;u<i.length;u++){let t=i[u];t=e?t.trim():t,Tt(s,t,r[t],n,a)}else for(let u=0;u<r.length;u++){let n=r[u];_t(t,n),n=e?n.trim():n,Tt(s,n,!0,!1,a)}return s}function _t(t,e){if("string"!=typeof e)throw new Error(`${t} can only toggle CSS classes expressed as strings, got ${e}`)}function Tt(t,e,n,a,r){if(r&&e.indexOf(" ")>0){const r=e.split(/\s+/g);for(let e=0;e<r.length;e++)wt(t,r[e],n,a)}else wt(t,e,n,a)}function wt(t,e,n,a){if(a){const t=function(t,e){const n=t.indexOf(".");if(n>0){const a=t.substr(n+1);t=t.substring(0,n),null!=e&&(e+=a)}return{key:t,value:e}}(e,n);n=t.value,e=t.key}t[e]=n}function Ot(t,e){if(t&&e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(-1===e.indexOf(t[n]))return!1;return!0}return!1}class St{}class It{constructor(t,e,n,a){this._iterableDiffers=t,this._keyValueDiffers=e,this._ngEl=n,this._renderer=a,this._initialClasses=[]}getValue(){return null}setClass(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}setNgClass(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(Object(a["ɵisListLikeIterable"])(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}applyChanges(){if(this._iterableDiffer){const t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){const t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}}_applyKeyValueChanges(t){t.forEachAddedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachChangedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachRemovedItem(t=>{t.previousValue&&this._toggleClass(t.key,!1)})}_applyIterableChanges(t){t.forEachAddedItem(t=>{if("string"!=typeof t.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got "+Object(a["ɵstringify"])(t.item));this._toggleClass(t.item,!0)}),t.forEachRemovedItem(t=>this._toggleClass(t.item,!1))}_applyClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!0)):Object.keys(t).forEach(e=>this._toggleClass(e,!!t[e])))}_removeClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!1)):Object.keys(t).forEach(t=>this._toggleClass(t,!1)))}_toggleClass(t,e){(t=t.trim())&&t.split(/\s+/g).forEach(t=>{e?this._renderer.addClass(this._ngEl.nativeElement,t):this._renderer.removeClass(this._ngEl.nativeElement,t)})}}class Nt{constructor(){this._value=null,this._ngClassDiffer=new vt("NgClass",23),this._classStringDiffer=null}getValue(){return this._value}setClass(t){(t||this._classStringDiffer)&&(this._classStringDiffer=this._classStringDiffer||new vt("class",20),this._classStringDiffer.setValue(t))}setNgClass(t){this._ngClassDiffer.setValue(t)}applyChanges(){const t=!!this._classStringDiffer&&this._classStringDiffer.hasValueChanged(),e=this._ngClassDiffer.hasValueChanged();if(t||e){let t=this._ngClassDiffer.value;if(this._classStringDiffer){let e=this._classStringDiffer.value;e&&(t=t?Object.assign({},e,t):e)}this._value=t}}}const Ct={provide:St,useClass:It},Rt={provide:St,useClass:Nt},At=Ct,kt=Object(a["ɵɵdefineDirective"])({type:function(){},selectors:null,factory:()=>{},hostBindings:function(t,e,n){1&t&&(Object(a["ɵɵallocHostVars"])(1),Object(a["ɵɵstyling"])()),2&t&&(Object(a["ɵɵclassMap"])(e.getValue()),Object(a["ɵɵstylingApply"])())}});let Et=(()=>{class t{constructor(t){this._delegate=t}getValue(){return this._delegate.getValue()}}return t.ngDirectiveDef=void 0,t})();class Lt extends Et{constructor(t){super(t)}set klass(t){this._delegate.setClass(t)}set ngClass(t){this._delegate.setNgClass(t)}ngDoCheck(){this._delegate.applyChanges()}}class Dt{constructor(t){this._viewContainerRef=t,this._componentRef=null,this._moduleRef=null}ngOnChanges(t){if(this._viewContainerRef.clear(),this._componentRef=null,this.ngComponentOutlet){const e=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;if(t.ngComponentOutletNgModuleFactory)if(this._moduleRef&&this._moduleRef.destroy(),this.ngComponentOutletNgModuleFactory){const t=e.get(a.NgModuleRef);this._moduleRef=this.ngComponentOutletNgModuleFactory.create(t.injector)}else this._moduleRef=null;const n=(this._moduleRef?this._moduleRef.componentFactoryResolver:e.get(a.ComponentFactoryResolver)).resolveComponentFactory(this.ngComponentOutlet);this._componentRef=this._viewContainerRef.createComponent(n,this._viewContainerRef.length,e,this.ngComponentOutletContent)}}ngOnDestroy(){this._moduleRef&&this._moduleRef.destroy()}}class Pt{constructor(t,e,n,a){this.$implicit=t,this.ngForOf=e,this.index=n,this.count=a}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}class Mt{constructor(t,e,n){this._viewContainer=t,this._template=e,this._differs=n,this._ngForOfDirty=!0,this._differ=null}set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){Object(a.isDevMode)()&&null!=t&&"function"!=typeof t&&console&&console.warn&&console.warn(`trackBy must be a function, but received ${JSON.stringify(t)}. See https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html#!#change-propagation for more information.`),this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const n=this._ngForOf;if(!this._differ&&n)try{this._differ=this._differs.find(n).create(this.ngForTrackBy)}catch(e){throw new Error(`Cannot find a differ supporting object '${n}' of type '${t=n,t.name||typeof t}'. NgFor only supports binding to Iterables such as Arrays.`)}}var t;if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const e=[];t.forEachOperation((t,n,a)=>{if(null==t.previousIndex){const n=this._viewContainer.createEmbeddedView(this._template,new Pt(null,this._ngForOf,-1,-1),null===a?void 0:a),r=new qt(t,n);e.push(r)}else if(null==a)this._viewContainer.remove(null===n?void 0:n);else if(null!==n){const r=this._viewContainer.get(n);this._viewContainer.move(r,a);const i=new qt(t,r);e.push(i)}});for(let n=0;n<e.length;n++)this._perViewChange(e[n].view,e[n].record);for(let n=0,a=this._viewContainer.length;n<a;n++){const t=this._viewContainer.get(n);t.context.index=n,t.context.count=a,t.context.ngForOf=this._ngForOf}t.forEachIdentityChange(t=>{this._viewContainer.get(t.currentIndex).context.$implicit=t.item})}_perViewChange(t,e){t.context.$implicit=e.item}static ngTemplateContextGuard(t,e){return!0}}class qt{constructor(t,e){this.record=t,this.view=e}}class jt{constructor(t,e){this._viewContainer=t,this._context=new Ft,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=e}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){Vt("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){Vt("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}}class Ft{constructor(){this.$implicit=null,this.ngIf=null}}function Vt(t,e){if(e&&!e.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${Object(a["ɵstringify"])(e)}'.`)}class Gt{constructor(t,e){this._viewContainerRef=t,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(t){t&&!this._created?this.create():!t&&this._created&&this.destroy()}}class Bt{constructor(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(t){this._ngSwitch=t,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(t){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(t)}_matchCase(t){const e=t==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||e,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),e}_updateDefaultCases(t){if(this._defaultViews&&t!==this._defaultUsed){this._defaultUsed=t;for(let e=0;e<this._defaultViews.length;e++)this._defaultViews[e].enforceState(t)}}}class zt{constructor(t,e,n){this.ngSwitch=n,n._addCase(),this._view=new Gt(t,e)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}class Yt{constructor(t,e,n){n._addDefault(new Gt(t,e))}}class Ht{constructor(t){this._localization=t,this._caseViews={}}set ngPlural(t){this._switchValue=t,this._updateView()}addCase(t,e){this._caseViews[t]=e}_updateView(){this._clearViews();const t=Object.keys(this._caseViews),e=gt(this._switchValue,t,this._localization);this._activateView(this._caseViews[e])}_clearViews(){this._activeView&&this._activeView.destroy()}_activateView(t){t&&(this._activeView=t,this._activeView.create())}}class Ut{constructor(t,e,n,a){this.value=t;const r=!isNaN(Number(t));a.addCase(r?"="+t:t,new Gt(n,e))}}class Wt{}class Kt{constructor(t,e,n){this._ngEl=t,this._differs=e,this._renderer=n}getValue(){return null}setNgStyle(t){this._ngStyle=t,!this._differ&&t&&(this._differ=this._differs.find(t).create())}applyChanges(){if(this._differ){const t=this._differ.diff(this._ngStyle);t&&this._applyChanges(t)}}_applyChanges(t){t.forEachRemovedItem(t=>this._setStyle(t.key,null)),t.forEachAddedItem(t=>this._setStyle(t.key,t.currentValue)),t.forEachChangedItem(t=>this._setStyle(t.key,t.currentValue))}_setStyle(t,e){const[n,a]=t.split(".");null!=(e=null!=e&&a?`${e}${a}`:e)?this._renderer.setStyle(this._ngEl.nativeElement,n,e):this._renderer.removeStyle(this._ngEl.nativeElement,n)}}class $t{constructor(){this._differ=new vt("NgStyle",8),this._value=null}getValue(){return this._value}setNgStyle(t){this._differ.setValue(t)}applyChanges(){this._differ.hasValueChanged()&&(this._value=this._differ.value)}}const Jt={provide:Wt,useClass:Kt},Zt={provide:Wt,useClass:$t},Qt=Jt,Xt=Object(a["ɵɵdefineDirective"])({type:function(){},selectors:null,factory:()=>{},hostBindings:function(t,e,n){1&t&&Object(a["ɵɵstyling"])(),2&t&&(Object(a["ɵɵstyleMap"])(e.getValue()),Object(a["ɵɵstylingApply"])())}});let te=(()=>{class t{constructor(t){this._delegate=t}getValue(){return this._delegate.getValue()}}return t.ngDirectiveDef=void 0,t})();class ee extends te{constructor(t){super(t)}set ngStyle(t){this._delegate.setNgStyle(t)}ngDoCheck(){this._delegate.applyChanges()}}class ne{constructor(t){this._viewContainerRef=t,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null}ngOnChanges(t){this._shouldRecreateView(t)?(this._viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._viewRef)),this.ngTemplateOutlet&&(this._viewRef=this._viewContainerRef.createEmbeddedView(this.ngTemplateOutlet,this.ngTemplateOutletContext))):this._viewRef&&this.ngTemplateOutletContext&&this._updateExistingContext(this.ngTemplateOutletContext)}_shouldRecreateView(t){const e=t.ngTemplateOutletContext;return!!t.ngTemplateOutlet||e&&this._hasContextShapeChanged(e)}_hasContextShapeChanged(t){const e=Object.keys(t.previousValue||{}),n=Object.keys(t.currentValue||{});if(e.length===n.length){for(let t of n)if(-1===e.indexOf(t))return!0;return!1}return!0}_updateExistingContext(t){for(let e of Object.keys(t))this._viewRef.context[e]=this.ngTemplateOutletContext[e]}}const ae=[Lt,Dt,Mt,jt,ne,ee,Bt,zt,Yt,Ht,Ut];function re(t,e){return Error(`InvalidPipeArgument: '${e}' for pipe '${Object(a["ɵstringify"])(t)}'`)}const ie=/((?:[^yMLdHhmsazZEwGjJ']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|J+|j+|m+|s+|a|z|Z|G+|w+))(.*)/,se={yMMMdjms:me(be([ge("year",1),pe("month",3),ge("day",1),ge("hour",1),ge("minute",1),ge("second",1)])),yMdjm:me(be([ge("year",1),ge("month",1),ge("day",1),ge("hour",1),ge("minute",1)])),yMMMMEEEEd:me(be([ge("year",1),pe("month",4),pe("weekday",4),ge("day",1)])),yMMMMd:me(be([ge("year",1),pe("month",4),ge("day",1)])),yMMMd:me(be([ge("year",1),pe("month",3),ge("day",1)])),yMd:me(be([ge("year",1),ge("month",1),ge("day",1)])),jms:me(be([ge("hour",1),ge("second",1),ge("minute",1)])),jm:me(be([ge("hour",1),ge("minute",1)]))},ue={yyyy:me(ge("year",4)),yy:me(ge("year",2)),y:me(ge("year",1)),MMMM:me(pe("month",4)),MMM:me(pe("month",3)),MM:me(ge("month",2)),M:me(ge("month",1)),LLLL:me(pe("month",4)),L:me(pe("month",1)),dd:me(ge("day",2)),d:me(ge("day",1)),HH:oe(de(me(he(ge("hour",2),!1)))),H:de(me(he(ge("hour",1),!1))),hh:oe(de(me(he(ge("hour",2),!0)))),h:de(me(he(ge("hour",1),!0))),jj:me(ge("hour",2)),j:me(ge("hour",1)),mm:oe(me(ge("minute",2))),m:me(ge("minute",1)),ss:oe(me(ge("second",2))),s:me(ge("second",1)),sss:me(ge("second",3)),EEEE:me(pe("weekday",4)),EEE:me(pe("weekday",3)),EE:me(pe("weekday",2)),E:me(pe("weekday",1)),a:le(me(he(ge("hour",1),!0))),Z:fe("short"),z:fe("long"),ww:me({}),w:me({}),G:me(pe("era",1)),GG:me(pe("era",2)),GGG:me(pe("era",3)),GGGG:me(pe("era",4))};function oe(t){return function(e,n){const a=t(e,n);return 1==a.length?"0"+a:a}}function le(t){return function(e,n){return t(e,n).split(" ")[1]}}function de(t){return function(e,n){return t(e,n).split(" ")[0]}}function ce(t,e,n){return new Intl.DateTimeFormat(e,n).format(t).replace(/[\u200e\u200f]/g,"")}function fe(t){const e={hour:"2-digit",hour12:!1,timeZoneName:t};return function(t,n){const a=ce(t,n,e);return a?a.substring(3):""}}function he(t,e){return t.hour12=e,t}function ge(t,e){const n={};return n[t]=2===e?"2-digit":"numeric",n}function pe(t,e){const n={};return n[t]=e<4?e>1?"short":"narrow":"long",n}function be(t){return t.reduce((t,e)=>Object.assign({},t,e),{})}function me(t){return(e,n)=>ce(e,n,t)}const ye=new Map;let ve=(()=>{class t{constructor(t){this._locale=t}transform(e,n="mediumDate"){if(null==e||""===e||e!=e)return null;let a;if("string"==typeof e&&(e=e.trim()),xe(e))a=e;else if(isNaN(e-parseFloat(e)))if("string"==typeof e&&/^(\d{4}-\d{1,2}-\d{1,2})$/.test(e)){const[t,n,r]=e.split("-").map(t=>parseInt(t,10));a=new Date(t,n-1,r)}else a=new Date(e);else a=new Date(parseFloat(e));if(!xe(a)){let n;if("string"!=typeof e||!(n=e.match(B)))throw re(t,e);a=at(n)}return class{static format(t,e,n){return function(t,e,n){const a=se[t];if(a)return a(e,n);const r=t;let i=ye.get(r);if(!i){let e;i=[],ie.exec(t);let n=t;for(;n;)e=ie.exec(n),e?(i=i.concat(e.slice(1)),n=i.pop()):(i.push(n),n=null);ye.set(r,i)}return i.reduce((t,a)=>{const r=ue[a];return t+(r?r(e,n):function(t){return"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}(a))},"")}(n,t,e)}}.format(a,this._locale,t._ALIASES[n]||n)}}return t._ALIASES={medium:"yMMMdjms",short:"yMdjm",fullDate:"yMMMMEEEEd",longDate:"yMMMMd",mediumDate:"yMMMd",shortDate:"yMd",mediumTime:"jms",shortTime:"jm"},t})();function xe(t){return t instanceof Date&&!isNaN(t.valueOf())}function _e(t,e,n,a,r,i=null,s=!1){if(null==n)return null;if("number"!=typeof(n="string"!=typeof n||isNaN(+n-parseFloat(n))?n:+n))throw re(t,n);let u,o,l;if(a!==h.Currency&&(u=1,o=0,l=3),r){const t=r.match(it);if(null===t)throw new Error(r+" is not a valid digit info for number pipes");null!=t[1]&&(u=ct(t[1])),null!=t[3]&&(o=ct(t[3])),null!=t[5]&&(l=ct(t[5]))}return class{static format(t,e,n,a={}){const{minimumIntegerDigits:r,minimumFractionDigits:i,maximumFractionDigits:s,currency:u,currencyAsSymbol:o=!1}=a,l={minimumIntegerDigits:r,minimumFractionDigits:i,maximumFractionDigits:s,style:h[n].toLowerCase()};return n==h.Currency&&(l.currency="string"==typeof u?u:void 0,l.currencyDisplay=o?"symbol":"code"),new Intl.NumberFormat(e,l).format(t)}}.format(n,e,a,{minimumIntegerDigits:u,minimumFractionDigits:o,maximumFractionDigits:l,currency:i,currencyAsSymbol:s})}class Te{constructor(t){this._locale=t}transform(t,e){return _e(Te,this._locale,t,h.Decimal,e)}}class we{constructor(t){this._locale=t}transform(t,e){return _e(we,this._locale,t,h.Percent,e)}}class Oe{constructor(t){this._locale=t}transform(t,e="USD",n=!1,a){return _e(Oe,this._locale,t,h.Currency,a,e,n)}}const Se=[Te,we,Oe,ve];class Ie{createSubscription(t,e){return t.subscribe({next:e,error:t=>{throw t}})}dispose(t){t.unsubscribe()}onDestroy(t){t.unsubscribe()}}class Ne{createSubscription(t,e){return t.then(e,t=>{throw t})}dispose(t){}onDestroy(t){}}const Ce=new Ne,Re=new Ie;class Ae{constructor(t){this._ref=t,this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null,this._strategy=null}ngOnDestroy(){this._subscription&&this._dispose()}transform(t){return this._obj?t!==this._obj?(this._dispose(),this.transform(t)):Object(a["ɵlooseIdentical"])(this._latestValue,this._latestReturnedValue)?this._latestReturnedValue:(this._latestReturnedValue=this._latestValue,a.WrappedValue.wrap(this._latestValue)):(t&&this._subscribe(t),this._latestReturnedValue=this._latestValue,this._latestValue)}_subscribe(t){this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,e=>this._updateLatestValue(t,e))}_selectStrategy(t){if(Object(a["ɵisPromise"])(t))return Ce;if(Object(a["ɵisObservable"])(t))return Re;throw re(Ae,t)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null}_updateLatestValue(t,e){t===this._obj&&(this._latestValue=e,this._ref.markForCheck())}}class ke{transform(t){if(!t)return t;if("string"!=typeof t)throw re(ke,t);return t.toLowerCase()}}const Ee=/(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D])\S*/g;class Le{transform(t){if(!t)return t;if("string"!=typeof t)throw re(Le,t);return t.replace(Ee,t=>t[0].toUpperCase()+t.substr(1).toLowerCase())}}class De{transform(t){if(!t)return t;if("string"!=typeof t)throw re(De,t);return t.toUpperCase()}}class Pe{constructor(t){this.locale=t}transform(t,e="mediumDate",n,a){if(null==t||""===t||t!=t)return null;try{return K(t,e,a||this.locale,n)}catch(r){throw re(Pe,r.message)}}}const Me=/#/g;class qe{constructor(t){this._localization=t}transform(t,e,n){if(null==t)return"";if("object"!=typeof e||null===e)throw re(qe,e);return e[gt(t,Object.keys(e),this._localization,n)].replace(Me,t.toString())}}class je{transform(t,e){if(null==t)return"";if("object"!=typeof e||"string"!=typeof t)throw re(je,e);return e.hasOwnProperty(t)?e[t]:e.hasOwnProperty("other")?e.other:""}}class Fe{transform(t){return JSON.stringify(t,null,2)}}class Ve{constructor(t){this.differs=t,this.keyValues=[]}transform(t,e=Ge){if(!t||!(t instanceof Map)&&"object"!=typeof t)return null;this.differ||(this.differ=this.differs.find(t).create());const n=this.differ.diff(t);return n&&(this.keyValues=[],n.forEachItem(t=>{this.keyValues.push({key:t.key,value:t.currentValue})}),this.keyValues.sort(e)),this.keyValues}}function Ge(t,e){const n=t.key,a=e.key;if(n===a)return 0;if(void 0===n)return 1;if(void 0===a)return-1;if(null===n)return 1;if(null===a)return-1;if("string"==typeof n&&"string"==typeof a)return n<a?-1:1;if("number"==typeof n&&"number"==typeof a)return n-a;if("boolean"==typeof n&&"boolean"==typeof a)return n<a?-1:1;const r=String(n),i=String(a);return r==i?0:r<i?-1:1}class Be{constructor(t){this._locale=t}transform(t,e,n){if(He(t))return null;n=n||this._locale;try{return lt(Ue(t),n,e)}catch(a){throw re(Be,a.message)}}}class ze{constructor(t){this._locale=t}transform(t,e,n){if(He(t))return null;n=n||this._locale;try{return ot(Ue(t),n,e)}catch(a){throw re(ze,a.message)}}}class Ye{constructor(t){this._locale=t}transform(t,e,n="symbol",a,r){if(He(t))return null;r=r||this._locale,"boolean"==typeof n&&(console&&console.warn&&console.warn('Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are "code", "symbol" or "symbol-narrow".'),n=n?"symbol":"code");let i=e||"USD";"code"!==n&&(i="symbol"===n||"symbol-narrow"===n?V(i,"symbol"===n?"wide":"narrow",r):n);try{return ut(Ue(t),r,i,e,a)}catch(s){throw re(Ye,s.message)}}}function He(t){return null==t||""===t||t!=t}function Ue(t){if("string"==typeof t&&!isNaN(Number(t)-parseFloat(t)))return Number(t);if("number"!=typeof t)throw new Error(t+" is not a number");return t}class We{transform(t,e,n){if(null==t)return t;if(!this.supports(t))throw re(We,t);return t.slice(e,n)}supports(t){return"string"==typeof t||Array.isArray(t)}}const Ke=[Ae,De,ke,Fe,We,Be,ze,Le,Ye,Pe,qe,je,Ve];class $e{}class Je{}const Ze=new a.InjectionToken("DocumentToken"),Qe="browser",Xe="server",tn="browserWorkerApp",en="browserWorkerUi";function nn(t){return t===Qe}function an(t){return t===Xe}function rn(t){return t===tn}function sn(t){return t===en}const un=new a.Version("8.2.14");let on=(()=>{class t{}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({token:t,providedIn:"root",factory:()=>new ln(Object(a["ɵɵinject"])(Ze),window,Object(a["ɵɵinject"])(a.ErrorHandler))}),t})();class ln{constructor(t,e,n){this.document=t,this.window=e,this.errorHandler=n,this.offset=()=>[0,0]}setOffset(t){this.offset=Array.isArray(t)?()=>t:t}getScrollPosition(){return this.supportScrollRestoration()?[this.window.scrollX,this.window.scrollY]:[0,0]}scrollToPosition(t){this.supportScrollRestoration()&&this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){if(this.supportScrollRestoration()){t=this.window.CSS&&this.window.CSS.escape?this.window.CSS.escape(t):t.replace(/(\"|\'\ |:|\.|\[|\]|,|=)/g,"\\$1");try{const e=this.document.querySelector("#"+t);if(e)return void this.scrollToElement(e);const n=this.document.querySelector(`[name='${t}']`);if(n)return void this.scrollToElement(n)}catch(e){this.errorHandler.handleError(e)}}}setHistoryScrollRestoration(t){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}}scrollToElement(t){const e=t.getBoundingClientRect(),n=e.left+this.window.pageXOffset,a=e.top+this.window.pageYOffset,r=this.offset();this.window.scrollTo(n-r[0],a-r[1])}supportScrollRestoration(){try{return!!this.window&&!!this.window.scrollTo}catch(t){return!1}}}class dn{setOffset(t){}getScrollPosition(){return[0,0]}scrollToPosition(t){}scrollToAnchor(t){}setHistoryScrollRestoration(t){}}},SatO:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("wd/R"))},SeVD:function(t,e,n){"use strict";var a=n("ngJS"),r=n("NJ4a"),i=n("Lhse"),s=n("kJWO"),u=n("I55L"),o=n("c2HN"),l=n("XoHu");n.d(e,"a",(function(){return d}));const d=t=>{if(t&&"function"==typeof t[s.a])return d=t,t=>{const e=d[s.a]();if("function"!=typeof e.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return e.subscribe(t)};if(Object(u.a)(t))return Object(a.a)(t);if(Object(o.a)(t))return n=t,t=>(n.then(e=>{t.closed||(t.next(e),t.complete())},e=>t.error(e)).then(null,r.a),t);if(t&&"function"==typeof t[i.a])return e=t,t=>{const n=e[i.a]();for(;;){const e=n.next();if(e.done){t.complete();break}if(t.next(e.value),t.closed)break}return"function"==typeof n.return&&t.add(()=>{n.return&&n.return()}),t};{const e=Object(l.a)(t)?"an invalid object":`'${t}'`;throw new TypeError(`You provided ${e} where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.`)}var e,n,d}},SgmB:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("LRne"),r=n("5+tZ"),i=n("8Y7J"),s=n("IheW"),u=n("pL04");let o=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("api/role")}delete(t){return this.http.delete("api/role/"+t)}get(t){return this.http.get("api/role/"+t)}create(t){return this.http.post("api/role",t)}clone(t,e){return this.http.post(`api/role/${t}/clone`,{new_name:e})}update(t){return this.http.put("api/role/"+t.name,t)}exists(t){return this.list().pipe(Object(r.a)(e=>{const n=e.some(e=>e.name===t);return Object(a.a)(n)}))}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.c))},token:t,providedIn:u.a}),t})()},SpAZ:function(t,e,n){"use strict";function a(t){return t}n.d(e,"a",(function(){return a}))},SxV6:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("sVev"),r=n("pLZG"),i=n("IzEk"),s=n("xbPD"),u=n("XDbj"),o=n("SpAZ");function l(t,e){const n=arguments.length>=2;return l=>l.pipe(t?Object(r.a)((e,n)=>t(e,n,l)):o.a,Object(i.a)(1),n?Object(s.a)(e):Object(u.a)(()=>new a.a))}},T63f:function(t,e,n){var a=n("0Dky"),r=n("hh1v"),i=n("xrYK"),s=n("2Gvs"),u=Object.isExtensible,o=a((function(){u(1)}));t.exports=o||s?function(t){return!!r(t)&&(!s||"ArrayBuffer"!=i(t))&&(!u||u(t))}:u},TAQX:function(t,e,n){var a=n("im1V");t.exports=function(t,e){return function(n,r){if(null==n)return n;if(!a(n))return t(n,r);for(var i=n.length,s=e?i:-1,u=Object(n);(e?s--:++s<i)&&!1!==r(u[s],s,u););return n}}},THq6:function(t,e,n){var a=n("pMcL"),r=a?a.prototype:void 0,i=r?r.valueOf:void 0;t.exports=function(t){return i?Object(i.call(t)):{}}},TJUb:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e){return a.isPlainObject(e)?a.get(e,t,t):t}}},TNUL:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"TreeNode, tree-node",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div\n        *ngIf="!templates.treeNodeFullTemplate"\n        [class]="node.getClass()"\n        [class.tree-node]="true"\n        [class.tree-node-expanded]="node.isExpanded && node.hasChildren"\n        [class.tree-node-collapsed]="node.isCollapsed && node.hasChildren"\n        [class.tree-node-leaf]="node.isLeaf"\n        [class.tree-node-active]="node.isActive"\n        [class.tree-node-focused]="node.isFocused"\n      >\n        <tree-node-drop-slot\n          *ngIf="index === 0"\n          [dropIndex]="node.index"\n          [node]="node.parent"\n        ></tree-node-drop-slot>\n\n        <tree-node-wrapper\n          [node]="node"\n          [index]="index"\n          [templates]="templates"\n        ></tree-node-wrapper>\n\n        <tree-node-children\n          [node]="node"\n          [templates]="templates"\n        ></tree-node-children>\n        <tree-node-drop-slot\n          [dropIndex]="node.index + 1"\n          [node]="node.parent"\n        ></tree-node-drop-slot>\n      </div>\n      <ng-container\n        [ngTemplateOutlet]="templates.treeNodeFullTemplate"\n        [ngTemplateOutletContext]="{\n          $implicit: node,\n          node: node,\n          index: index,\n          templates: templates\n        }"\n      >\n      </ng-container>\n    </ng-container>\n  '})],t)}()},TWQb:function(t,e,n){var a=n("/GqU"),r=n("I8vh"),i=n("B/qT"),s=function(t){return function(e,n,s){var u,o=a(e),l=i(o),d=r(s,l);if(t&&n!=n){for(;l>d;)if((u=o[d++])!=u)return!0}else for(;l>d;d++)if((t||d in o)&&o[d]===n)return t||d||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},TYzs:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=parseInt(t,10);return isNaN(e)?t:t+(1===Math.floor(e/10)?"th":e%10==1?"st":e%10==2?"nd":e%10==3?"rd":"th")}}},Ta7t:function(t,e,n){var a=n("2oRo"),r=n("I8vh"),i=n("B/qT"),s=n("hBjN"),u=a.Array,o=Math.max;t.exports=function(t,e,n){for(var a=i(t),l=r(e,a),d=r(void 0===n?a:n,a),c=u(o(d-l,0)),f=0;l<d;l++,f++)s(c,f,t[l]);return c.length=f,c}},"TbD+":function(t,e,n){var a=n("QCZx"),r=n("jqoL");t.exports=function(t,e){return a(t,e,(function(e,n){return r(t,n)}))}},TeQF:function(t,e,n){"use strict";var a=n("I+eb"),r=n("tycR").filter;a({target:"Array",proto:!0,forced:!n("Hd5f")("filter")},{filter:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},Tq0f:function(t,e,n){var a=n("Ytn0");t.exports=function(t){var e=a(this,t).delete(t);return this.size-=e?1:0,e}},U02d:function(t,e,n){var a=n("qN6l"),r=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(a){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return r.call(e,t)?e[t]:void 0}},UDhR:function(t,e,n){!function(t){"use strict";t.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},UMSQ:function(t,e,n){var a=n("WSbT"),r=Math.min;t.exports=function(t){return t>0?r(a(t),9007199254740991):0}},USCx:function(t,e,n){!function(t){"use strict";t.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},Uies:function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var a=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==a||"symbol"!=a&&n.test(t))&&t>-1&&t%1==0&&t<e}},UnOm:function(t,e,n){var a=n("ktBm"),r=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=a(e,t);return!(n<0||(n==e.length-1?e.pop():r.call(e,n,1),--this.size,0))}},UpQW:function(t,e,n){!function(t){"use strict";var e=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("wd/R"))},Uqmq:function(t,e,n){var a=n("M+Mf"),r=n("hmSm");t.exports=function t(e,n,i,s,u,o){return r(e)&&r(n)&&(o.set(n,e),a(e,n,void 0,t,o),o.delete(n)),e}},Ur1D:function(t,e,n){!function(t){"use strict";t.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(t,e,n){return t<11?"ekuseni":t<15?"emini":t<19?"entsambama":"ebusuku"},meridiemHour:function(t,e){return 12===t&&(t=0),"ekuseni"===e?t:"emini"===e?t>=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("wd/R"))},UxlC:function(t,e,n){"use strict";var a=n("K6Rb"),r=n("xluM"),i=n("4zBA"),s=n("14Sl"),u=n("0Dky"),o=n("glrk"),l=n("Fib7"),d=n("WSbT"),c=n("UMSQ"),f=n("V37c"),h=n("HYAF"),g=n("iqWW"),p=n("3Eq5"),b=n("DLK6"),m=n("FMNM"),y=n("tiKp")("replace"),v=Math.max,x=Math.min,_=i([].concat),T=i([].push),w=i("".indexOf),O=i("".slice),S="$0"==="a".replace(/./,"$0"),I=!!/./[y]&&""===/./[y]("a","$0");s("replace",(function(t,e,n){var i=I?"$":"$0";return[function(t,n){var a=h(this),i=null==t?void 0:p(t,y);return i?r(i,t,a,n):r(e,f(a),t,n)},function(t,r){var s=o(this),u=f(t);if("string"==typeof r&&-1===w(r,i)&&-1===w(r,"$<")){var h=n(e,s,u,r);if(h.done)return h.value}var p=l(r);p||(r=f(r));var y=s.global;if(y){var S=s.unicode;s.lastIndex=0}for(var I=[];;){var N=m(s,u);if(null===N)break;if(T(I,N),!y)break;""===f(N[0])&&(s.lastIndex=g(u,c(s.lastIndex),S))}for(var C,R="",A=0,k=0;k<I.length;k++){for(var E=f((N=I[k])[0]),L=v(x(d(N.index),u.length),0),D=[],P=1;P<N.length;P++)T(D,void 0===(C=N[P])?C:String(C));var M=N.groups;if(p){var q=_([E],D,L,u);void 0!==M&&T(q,M);var j=f(a(r,void 0,q))}else j=b(E,u,L,D,M,r);L>=A&&(R+=O(u,A,L)+j,A=L+E.length)}return R+O(u,A)}]}),!!u((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}))||!S||I)},"V/fk":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},V2x9:function(t,e,n){!function(t){"use strict";t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},V37c:function(t,e,n){var a=n("2oRo"),r=n("9d/t"),i=a.String;t.exports=function(t){if("Symbol"===r(t))throw TypeError("Cannot convert a Symbol value to a string");return i(t)}},V3my:function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("cp0P"),s=(n("DSvg"),n("SgmB"),n("20UP"),n("Mxhz"),n("OLbh")),u=n("DNAf"),o=(n("sne2"),n("oxzT")),l=n("mtw6"),d=(n("2EZI"),n("1Ni5")),c=n("oMSZ"),f=(n("aexS"),n("9nlD"),n("1nQr"),function(t){return t.editing="editing",t}({}));class h{}n.d(e,"a",(function(){return g}));class g{constructor(t,e,n,a,r,i,s,l,d,c,h,g,p){this.authService=t,this.authStorageService=e,this.route=n,this.router=a,this.modalService=r,this.roleService=i,this.userService=s,this.notificationService=l,this.i18n=d,this.actionLabels=c,this.passwordPolicyService=h,this.formBuilder=g,this.settingsService=p,this.userFormMode=f,this.messages=new u.a({empty:this.i18n("There are no roles.")},this.i18n),this.passwordPolicyHelpText="",this.icons=o.a,this.bsConfig={dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default"},this.resource=this.i18n("user"),this.createForm(),this.messages=new u.a({empty:this.i18n("There are no roles.")},this.i18n)}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({username:["",[a.B.required],[d.a.unique(this.userService.validateUserName,this.userService)]],name:[""],password:["",[],[d.a.passwordPolicy(this.userService,()=>this.userForm.getValue("username"),(t,e,n)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(e),this.passwordValuation=r.defaultTo(n,"")})]],confirmpassword:[""],pwdExpirationDate:[""],email:["",[d.a.email]],roles:[[]],enabled:[!0,[a.B.required]],pwdUpdateRequired:[!0]},{validators:[d.a.match("password","confirmpassword")]})}ngOnInit(){this.router.url.startsWith("/user-management/users/edit")?(this.mode=this.userFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.minDate=new Date;const t=[this.roleService.list(),this.settingsService.getStandardSettings()];Object(i.a)(t).subscribe(t=>{if(this.allRoles=r.map(t[0],t=>(t.enabled=!0,t)),this.pwdExpirationSettings=new c.a(t[1]),this.mode===this.userFormMode.editing)this.initEdit();else if(this.pwdExpirationSettings.pwdExpirationSpan>0){const t=this.userForm.get("pwdExpirationDate"),e=new Date;e.setDate(this.minDate.getDate()+this.pwdExpirationSettings.pwdExpirationSpan),t.setValue(e),t.setValidators([a.B.required])}})}initEdit(){this.disableForEdit(),this.route.params.subscribe(t=>{this.userService.get(t.username).subscribe(t=>{this.response=r.cloneDeep(t),this.setResponse(t)})})}disableForEdit(){this.userForm.get("username").disable()}setResponse(t){["username","name","email","roles","enabled","pwdUpdateRequired"].forEach(e=>this.userForm.get(e).setValue(t[e]));const e=t.pwdExpirationDate;e&&this.userForm.get("pwdExpirationDate").setValue(new Date(1e3*e))}getRequest(){const t=new h;["username","password","name","email","roles","enabled","pwdUpdateRequired"].forEach(e=>t[e]=this.userForm.get(e).value);const e=this.userForm.get("pwdExpirationDate").value;return e&&(this.mode===this.userFormMode.editing&&this.response.pwdExpirationDate===Number(e)/1e3||e.setHours(23,59,59),t.pwdExpirationDate=Number(e)/1e3),t}createAction(){const t=this.getRequest();this.userService.create(t).subscribe(()=>{this.notificationService.show(l.a.success,this.i18n('Created user "{{username}}"',{username:t.username})),this.router.navigate(["/user-management/users"])},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}editAction(){if(this.isUserRemovingNeededRolePermissions()){const t={titleText:this.i18n("Update user"),buttonText:this.i18n("Continue"),bodyTpl:this.removeSelfUserReadUpdatePermissionTpl,onSubmit:()=>{this.modalRef.hide(),this.doEditAction()},onCancel:()=>{this.userForm.setErrors({cdSubmitButton:!0}),this.userForm.get("roles").reset(this.userForm.get("roles").value)}};this.modalRef=this.modalService.show(s.a,{initialState:t})}else this.doEditAction()}isCurrentUser(){return this.authStorageService.getUsername()===this.userForm.getValue("username")}isUserChangingRoles(){return this.isCurrentUser()&&this.response&&!r.isEqual(this.response.roles,this.userForm.getValue("roles"))}isUserRemovingNeededRolePermissions(){return this.isCurrentUser()&&!this.hasUserReadUpdatePermissions(this.userForm.getValue("roles"))}hasUserReadUpdatePermissions(t=[]){for(const e of this.allRoles)if(-1!==t.indexOf(e.name)&&e.scopes_permissions.user){const t=e.scopes_permissions.user;return["read","update"].every(e=>-1!==t.indexOf(e))}return!1}doEditAction(){const t=this.getRequest();this.userService.update(t).subscribe(()=>{this.isUserChangingRoles()?this.authService.logout(()=>{this.notificationService.show(l.a.info,this.i18n("You were automatically logged out because your roles have been changed."))}):(this.notificationService.show(l.a.success,this.i18n('Updated user "{{username}}"',{username:t.username})),this.router.navigate(["/user-management/users"]))},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}clearExpirationDate(){this.userForm.get("pwdExpirationDate").setValue(void 0)}submit(){this.mode===this.userFormMode.editing?this.editAction():this.createAction()}}},V5SL:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="fr-FR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Activer/Désactiver la navigation</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Tableau de bord</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Grappe</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Serveurs</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Moniteurs</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuration</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Carte CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Modules Manager</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Journaux</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Réserves</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloc</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Images</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Mise en miroir</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systèmes de fichiers</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartiments</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sélectionner une langue</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Chargement des données du panneau...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Sélecteur d\'heure Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Réinitialiser les paramètres</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Retour</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Échec du chargement des données.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>sélectionné(e)(s)</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>trouvé(e)(s)</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nom</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Description</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Description longue</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Valeur par défaut</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Valeur par défaut du daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valeurs</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Sauvegarder</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visionneuse de carte CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Chargement...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nom d\'hôte</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Ce champs est requis.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Oui.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annuler</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fermer</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste d\'hôtes</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performance globale</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Aucune entrée trouvée</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Journaux de grappes</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Journaux d\'audit</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Chargement de la configuration...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>La configuration n\'a pas pu être chargée.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Modifier le module Manager</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>La valeur entrée n\'est pas un UUID valide, par exemple : 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>La valeur entrée doit être une adresse IP valide.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>La valeur entrée doit être un nombre.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>La valeur entrée doit être un nombre ou une valeur décimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Mise à jour</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Statut</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID de grappe</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap modifié</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Dans le quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Hors quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Ajouter</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fonctionnalités</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Drapeaux OSD à l\'échelle de la grappe</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Soumettre</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avancé...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorité de récupération des OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorité</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personnaliser les valeurs de priorité</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Ce champ est obligatoire !</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>La valeur doit être comprise entre 0 et 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Réévaluer</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profondeur } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profondeur } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Liste des OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valeur</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifier</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Supprimer</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Santé</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiques</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clients</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Accès possible par tous les clients</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresses</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Champ obligatoire</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Doit contenir une ou plusieurs valeurs séparées par une virgule</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Par exemple :</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Type d\'accès</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Ajouter des clients</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Aucune grappe disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Sélectionner la grappe --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Ajouter un daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend de stockage</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Aucune réserve de données disponible --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Sélectionner le backend de stockage --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Utilisateur Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Aucun utilisateur disponible --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Sélectionner l\'utilisateur Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID utilisateur CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Aucun client disponible --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Sélectionner le client cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nom CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Libellé de sécurité</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Activer le libellé de sécurité</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Chemin CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Le chemin doit commencer par \'/\' et peut être suivi d\'un mot</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Un nouveau répertoire sera créé</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Chemin</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Le chemin peut être constitué d\'un seul \'/\' ou d\'un seul mot</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Un compartiment sera créé</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocole NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Balise NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Les clients ne peuvent pas monter de sous-répertoires (si la balise = foo, le client ne peut pas monter foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>En utilisant différentes options de balise, il est possible d\'exporter plusieurs fois le même chemin.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>En utilisant différentes options de pseudo, il est possible d\'exporter exporter plusieurs fois le même chemin.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Aucun type d\'accès disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Sélectionner le type d\'accès --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Aucun squash disponible --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Sélectionnez le type de squash d\'ID utilisateur qui est effectué --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocole de transport</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Bienvenue dans Ceph !</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nom d\'utilisateur requis</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Mot de passe requis</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Connexion</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Désolé, l\'utilisateur n\'existe pas dans Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Interdit</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Désolé, vous n\'êtes pas autorisé à voir ce que vous cherchez.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuration RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Supprimez la valeur de configuration locale. La valeur de configuration parent sera héritée et utilisée à la place.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>La valeur minimale est 0.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Liste des réserves</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Le nom doit être exclusivement composé de caractères alphanumériques, de tirets et de traits de soulignement.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Le nom de profil du code d\'effacement sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plug-in</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Blocs de données (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Doit être égal ou supérieur à 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Blocs de codage (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Doit être égal ou supérieur à 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimateur de durabilité (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localité (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domaine de défaillance Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localité Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Aucun</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technique</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Taille de paquet</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Racine Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe de périphérique Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>tout</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Répertoire</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nom...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Le nom de réserve Ceph sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Type de réserve</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Sélectionner un type de réserve --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Au moins un groupe de placements est nécessaire.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Votre grappe ne peut pas gérer autant de groupes de placements. Veuillez recalculer le nombre de groupes de placements nécessaires.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Aide au calcul</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Taille de réplication</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Drapeaux</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Écrasements EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Applications</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Aucun profil de code d\'effacement n\'est disponible --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Sélectionner un profil de code d\'effacement --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Jeu de règles Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Sélectionner une règle crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Règle Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Étapes Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compression</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Mode</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorithme</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Aucun algorithme de compression d\'effacement n\'est disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Taille de blob minimale</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>par ex. 128 Kio</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>La valeur doit être supérieure à 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Taille de blob maximale</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>par ex., 512 Kio</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>La valeur doit être supérieure à la taille de blob minimale.</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rapport</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rapport de compression</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>La valeur doit se situer entre 0.0 et 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>par exemple, 10 Gio</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Détails</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Détails des performances</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Détails des niveaux de mise en cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Déplacer une image vers la corbeille.</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protection expire le </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NON PROTÉGÉ</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Format de date incorrect. Veuillez utiliser "AAAA-MM-JJ HH:mm:ss"</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protection a déjà expiré. Veuillez sélectionner une date ultérieure ou laisser le champ vide.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Déplacer une image</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Présentation</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Cibles</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Authentification de la découverte</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utilisateur</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Les noms d\'utilisateur doivent comporter entre 8 et 64 caractères et\n                        ne peuvent contenir que des lettres et les caractères \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Mot de passe</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Utilisateur commun</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Mot de passe commun</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informations disponibles :</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Cibles iSCSI non disponibles</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Réserve</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Réserve de données</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Créé</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Taille</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objets</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Taille de l\'objet</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Provisionné</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Provisionnement total</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unité de segmentation</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Nombre de segmentations</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Parent</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Préfixe du nom de bloc</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Tri</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantanés</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Ce paramètre remplace la valeur globale</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Il s\'agit de la valeur globale. Aucune valeur de cette option n\'a été définie pour cette image.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>Les caractères \'/\' et \'@\' ne sont pas autorisés.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Aucune réserve RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Sélectionner une réserve --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utiliser une réserve de données dédiée</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Réserve de données</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Réserve dédiée qui stocke les données objet du RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Vous devez augmenter la taille.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avancé</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Segmentation</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unité de segmentation</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Sélectionner une unité de segmentation --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Ce champ est obligatoire, car le nombre de segments est défini.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>L\'unité de segmentation est supérieure à la taille de l\'objet.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Nombre de segments</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Ce champ est obligatoire, car l\'unité de segmentation est définie.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Le nombre de segments doit être supérieur à 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Vous êtes sur le point de revenir à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vider la corbeille</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tout</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Réserve :</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nom de la réserve...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurer l\'image</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Pour restaurer</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>saisissez le nouveau nom de l\'image, puis cliquez sur</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nouveau nom</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Expiration le </target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protection jusqu\'au</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologie iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Il n\'est généralement pas nécessaire de modifier ces paramètres par défaut.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Paramètres</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmer</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Paramètres avancés</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN cible</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Modèle IQN incorrect.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Par exemple : iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Plus d\'informations</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Des paramètres avancés de cette cible ont été modifiés.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portails</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Ajouter un portail</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Des paramètres avancés de cette image ont été modifiés.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Ajouter une image</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Authentification ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Initiateurs</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Initiateur</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN client</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>L\'IQN de l\'initiateur doit être unique.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Les noms d\'utilisateur doivent comporter entre 8 et 64 caractères et\n                        ne peuvent contenir que des lettres et les caractères \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'initiateur appartient à un groupe dans lequel les images seront configurées.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Aucun élément ajouté.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Ajouter un initiateur</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Groupes</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Groupe</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Ajouter un groupe</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Corbeille</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problèmes</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronisation en cours</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Prêt</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Modifier le mode de mise en miroir de la réserve</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Les grappes d\'homologues doivent être supprimées avant de désactiver la mise en miroir.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Modifier} other {Ajouter} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nom de grappe</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Le nom de grappe n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>L\'ID CephX n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresses du moniteur</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Adresses séparées par une virgule...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>L\'adresse du moniteur n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Clef CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Clef Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La clef CephX doit être codée en base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Compteurs de performance non disponibles</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Liste de daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Compteurs de performance</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Chargement des données de compartiment...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>La valeur n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Le nom sélectionné est déjà en cours d\'utilisation.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propriétaire</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Sélectionner un utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Activé</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Type d\'index</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Règle de placement</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marqueur</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marqueur maximum</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Version principale</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Date de modification</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Groupe de zones</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota de compartiments</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Taille maximale</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Illimité</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Nombre maximal d\'objets</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nom d\'utilisateur</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Sélectionner un nom d\'utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Générer automatiquement la clef</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clef d\'accès</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clef secrète</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nom complet</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Adresse électronique</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendu</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Système</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nombre maximal de compartiments</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Utilisateurs secondaires</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Fonctionnalités</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Quota utilisateur</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Afficher</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Clefs</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Type</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Sélectionner un type --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Autorisation</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Sélectionner une autorisation --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Utilisateur secondaire</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>L\'ID d\'utilisateur secondaire sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lire, écrire</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>complet</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Clé Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Générer automatiquement le secret</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Chargement des donnés utilisateur…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Les donnés utilisateur n\'ont pas pu être chargées.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>L\'ID utilisateur spécifié est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ceci n\'est pas une adresse électronique valide.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>L\'adresse électronique spécifiée est déjà utilisée.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nombre max. de compartiments</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Désactivé</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personnalisé</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clef S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Il n\'y a aucun utilisateur secondaire.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Il n\'y a pas de clefs.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Il n\'y a aucune fonctionnalité.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Taille illimitée</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Taille max.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objets illimités</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nombre max. d\'objets</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>La valeur saisie doit être &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Description...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Autorisations</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Rôles</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmer le mot de passe</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Le mot de passe de confirmation ne correspond pas au mot de passe.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Adresse électronique</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>L\'adresse électronique n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Vous êtes sur le point de supprimer les autorisations "lecture/mise à jour utilisateur" de votre propre utilisateur.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Si vous continuez, vous ne serez plus en mesure d\'ajouter ni de supprimer des rôles pour n\'importe quel utilisateur.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Voulez-vous vraiment continuer ?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Aide</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentation</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>À propos de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Paramètres du tableau de bord</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestion des utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Utilisateur connecté</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Se déconnecter</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attributs (carte OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Métadonnées non disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Métadonnées</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Compteur de performance</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Écritures</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lectures</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogramme</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valeurs actuelles</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Minimum</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Maximum</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Source</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Niveau</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Mise à jour possible lors de l\'exécution (modifiable)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Balises</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valeurs d\'énuménation</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Voir aussi</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Statut de la grappe</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons du gestionnaire</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Passerelles d\'objet</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Serveurs de métadonnées</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Passerelles iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS client</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Débit client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectures/Écritures client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Débit de récupération</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Nettoyer</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Performance</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacité brute</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Groupes de placements par OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Statut du groupe de placements</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacité</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Rangs</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Actuel</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Authentification de la découverte mise à jour</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Il n\'y a aucun portail disponible.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Il n\'y a aucune image disponible.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Il n\'y a aucune image disponible. Veillez à ajouter une image à la cible.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Il n\'y a aucun initiateur disponible. Veillez à ajouter un initiateur à la cible.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Cible</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>État</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Octets de lecture</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Octets d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Opérations d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O depuis</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problème</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Avancement</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode d\'édition</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Ajouter un homologue</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Modifier un homologue</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Supprimer un homologue</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>nb en local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>nb à distance</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>mettre en miroir l\'homologue</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Clef</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Aplatissement en profondeur</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Superposition</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Verrou exclusif</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Assignation d\'objet (nécessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journalisation (nécessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROTÉGÉ</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Retour à l\'état initial de l\'instantané RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revenir à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Intantané RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Supprimé le</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>type</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>état</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>version</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Hôte</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>racine</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons en veille</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Rang</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Activité</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Utilisation</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Mis à jour</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>La valeur peut être mise à jour au moment de l\'exécution.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Les daemons/clients ne tirent pas cette valeur de\n  la base de données de configuration de Monitor. Nous n\'autorisons pas le réglage de cette option via \'ceph config\n  set ...\'. Cette option doit être configurée via ceph.conf ou via\n  la ligne de commande.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>L\'option ne prend effet qu\'au démarrage du daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>L\'option n\'affecte que la création des grappes.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>L\'option n\'affecte que la création des daemons.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Service</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valeur actuelle</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Modifiable</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Activer</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Désactiver</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconnexion en cours… Veuillez patienter.</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Adresse publique</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessions ouvertes</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Pas rentrés</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Les OSD qui ont été marqués comme sortis ne seront pas marqués comme rentrés à leur démarrage.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Pas sortis</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Les OSD ne seront pas marqués automatiquement comme sortis après l\'intervalle configuré.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Pas démarrés</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Les OSD ne sont pas autorisés à démarrer.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Pas arrêtés</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Les rapports de défaillance des OSD sont ignorés, de sorte que les moniteurs ne marquent pas les OSD comme étant arrêtés.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pause</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Met en pause les lectures et écritures</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Pas de nettoyage</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Nettoyage désactivé</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Pas de nettoyage en profondeur</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Le nettoyage en profondeur est désactivé</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Pas de renvoi</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Le renvoi des groupes de placements est suspendu</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Pas de récupération</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La récupération des groupes de placements est suspendue</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Tri au niveau du bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Utiliser le tri au niveau du bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Variables snapdir purgées</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Les OSD ont converti les variables snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Suppressions des récupérations</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Suppressions effectuées pendant la restauration et non l\'homologation</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite stricte de journalisation des groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Impose une limite stricte à la longueur du journal des groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Drapeaux OSD mis à jour</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>sorti</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>rentré</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>arrêté</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marquer</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdu</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marqué comme perdu</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Purger</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purgé</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>détruire</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>détruit</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>supprimer</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Octets de lecture</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Octets d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Opérations d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Nbre max. de renvois</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Nombre maximum de récupérations actives</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Nombre maximum de démarrages uniques de récupérations</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Mise en veille de la récupération</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Travail</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravité</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Démarré</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilisé</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispo.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Nettoyé</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>En cours</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Avertissement</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Inconnu</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>opérationnel</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>aucun système de fichiers</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>actif</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>veille</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon actif</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Le service NFS Ganesha n\'est pas configuré.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Utilisateur CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Système de fichiers CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(hérité de la configuration globale)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>hérité de la configuration globale</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Sélectionner le type de squashing d\'ID utilisateur effectué --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Aucun daemon n\'est disponible.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Mode cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Âge évict min.</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Âge vidage min.</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Nombre max d\'octets cibles</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nombre max. d\'objets cibles</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Aucune application ajoutée</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Limite d\'applications atteinte</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Une réserve peut avoir quatre définitions d\'application maximum.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caractère autorisés \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La longueur maximale est de 128 caractères.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrer ou ajouter des applications</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Ajouter une application</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Taille de la réplique</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Dernier changement</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Jeu de règles Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartiment</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartiments</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>utilisateur</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Périmètre</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lecture</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Créer</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Rôle système</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Mettre à jour l\'utilisateur</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuer</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Vous avez été automatiquement déconnecté, car vos rôles ont changé.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Chaque objet est divisé en parties de blocs de données, chacune étant stockée sur un OSD différent.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calculez des blocs de codage pour chaque objet et stockez-les sur différents OSD.\n Le nombre de blocs de codage correspond également au nombre d\'OSD qui peuvent être arrêtés sans perdre de données.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Le plugin jerasure est le plugin le plus générique et le plus flexible,\n  c\'est aussi la valeur par défaut des réserves codées à effacement Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La technique la plus flexible est reed_sol_van_van : il suffit de définir k\n et m. La technique cauchy_good peut être plus rapide, mais vous devez choisir la taille du paquet\n avec précaution. reed_sol_r6_op, liberation, blaum_roth et liber8tion sont des équivalents RAID6\n en ce sens qu\'ils ne peuvent être configurés qu\'avec m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>L\'encodage se fera sur des paquets de taille d\'octets.\n  Choisir la bonne taille de paquet est difficile.\n  La documentation de jerasure contient de nombreuses informations à ce sujet.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Avec le plugin jerasure, lorsqu\'un objet codé à effacement est stocké sur\n plusieurs OSD, la récupération à la suite de la perte d\'un OSD nécessite la lecture de tous les autres.\n Par exemple, si jerasure est configuré avec k=8 et m=4, la perte d\'un OSD nécessite de lire\n les onze autres pour pouvoir effectuer une réparation.\n\n Le plugin de code d\'effacement lrc crée des blocs de parité locale pour permettre la récupération avec\n moins d\'OSD. Par exemple, si lrc est configuré avec k=8, m=4 et l=4,\n un bloc de parité supplémentaire est créé pour chaque groupe de quatre OSD. Lorsqu\'un seul OSD est perdu, il peut être\n récupéré avec seulement quatre OSD au lieu de onze.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Regroupez les blocs de données et de codage en ensembles de localité de taille. Par exemple,\n pour k=4 et m=2, lorsque locality=3, deux groupes de trois sont créés. Chaque ensemble peut\n être récupéré sans lire les blocs d\'un autre jeu.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Type de compartiment Crush dans lequel chaque ensemble de blocs défini\n par I sera stocké. Par exemple, s\'il est réglé sur rack, chaque groupe de blocs I sera\n placé dans un rack différent. Il est utilisé pour créer une étape de la règle CRUSH telle que l\'étape de choix\n d\'un rack. S\'il n\'est pas défini, aucun regroupement de ce type n\'est effectué.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Le plug-in isa encapsule la bibliothèque ISA. Il ne fonctionne qu\'avec des processeurs Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Le plugin ISA se présente sous deux formes Reed Solomon.\n Si reed_sol_van est défini, il équivaut à Vandermonde. Si cauchy est configuré, il équivaut à Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Le plug-in shec encapsule la bibliothèque SHEC multiple.\n Il permet à Ceph de récupérer les données plus efficacement qu\'avec les codes Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Nombre de blocs de parité, chacun incluant chaque bloc de données dans sa\n plage de calcul. Ce nombre est utilisé comme estimateur de durabilité. Par exemple, si c=2,\n 2 OSD peuvent être arrêtés sans perte de données.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nom du compartiment crush utilisé pour la première étape de la règle CRUSH.\n Par exemple, l\'étape de définition des valeurs par défaut.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Vérifiez qu\'il n\'existe pas deux blocs dans un compartiment avec le même domaine de\n défaillance. Par exemple, si le domaine de défaillance est un hôte, deux blocs ne seront pas stockés sur le même\n hôte. Cette option est utilisée pour créer une étape de la règle CRUSH telle que chooseleaf host.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restreindre le placement aux périphériques d\'une classe spécifique\n (par exemple, ssd ou hdd), en utilisant les noms des classes de périphériques crush dans la carte CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Définissez le nom du répertoire à partir duquel le plug-in de code d\'effacement est chargé.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Autoriser toutes les opérations</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Autorise uniquement les opérations qui ne modifient pas le serveur</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>N\'autorise pas les opérations de lecture ou d\'écriture, mais toutes les autres.</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>N\'autorise pas la lecture, l\'écriture ni aucune autre opération modifiant les attributs d\'un fichier ou le contenu d\'un répertoire.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>N\'autorise aucun accès</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Sélectionner la priorité --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Faible</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Élevée</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informations</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Les 5 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Les 15 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Les 30 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>La dernière heure (par défaut)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Les 3 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Les 6 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Les 12 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Les 24 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Hier</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Aujourd\'hui</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Depuis le début de la journée</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Avant-hier</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Les 2 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Il y a huit jours</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>La semaine dernière</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Cette semaine</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Depuis le début de la semaine</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Les 7 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Le mois dernier</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Ce mois</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Depuis le début du mois</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Les 30 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Les 90 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Les 6 derniers mois</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>L\'année écoulée</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>L\'année dernière</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Cette année</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Depuis le début de l\'année</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Les 2 dernières années</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Les 5 dernières années</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Aucun élément sélectionné.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Désélectionnez l\'élément pour le sélectionner à nouveau.</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de sélection atteinte</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Balises de filtre</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Ajouter un badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Aucun élément disponible.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Cloner</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copier</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Nettoyage en profondeur</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Détruire</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplatir</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marquer comme arrêté</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marquer comme rentré</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marquer comme perdu</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marquer comme sorti</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Protéger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renommer</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurer</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Déplacer vers la corbeille</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Annuler la protection</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Supprimé</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Cloné</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copié</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Applati</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgé</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restauré</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rétabli à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Oui</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Non</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualité de service</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite de bits/s</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Limite souhaitée d\'octets E/S par seconde.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite E/S par seconde</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Limite souhaitée d\'opérations E/S par seconde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite de bits/s en lecture</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Limite souhaitée de lecture d\'octets par seconde.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Limite souhaitée d\'opérations de lecture par seconde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite de bits/s en écriture</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Limite souhaitée d\'écriture d\'octets par seconde.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Limite souhaitée d\'opérations d\'écriture par seconde.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Rafale de bits/s</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Limite de rafale d\'octets en E/S souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Rafale E/S par seconde</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Limite de rafale d\'opérations E/S souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Rafale E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Limite de rafale d\'octets lus par seconde.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Rafale E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Limite de rafale d\'opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Rafale E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Limite de rafale de lectures d\'octets souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Rafale d\'E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Limite de rafale d\'opérations d\'écriture souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>En cours d\'exécution</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>exécuter</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Exécuté</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tâche inconnue</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>En cours de création</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>créer</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>En cours de mise à jour</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>mettre à jour</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>En cours de suppression</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonage en cours</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>cloner</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>En cours de copie</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copie</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Aplatissement</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>aplatir</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Retour à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rétablir l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>En cours de déplacement</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>déplacer</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Déplacé</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Impossible de trouver l\'image.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>En cours de restauration.</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurer</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>En cours de purge</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>purger</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>toutes les réserves</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossible de désactiver la mise en miroir, car l\'élément contient un homologue.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},VLqJ:function(t,e,n){var a=n("0GLT"),r=n("QpVZ"),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;t.exports=function(t,e){if(a(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!r(t))||s.test(t)||!i.test(t)||null!=e&&t in Object(e)}},VRyK:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("HDdC"),r=n("z+Ro"),i=n("bHdf"),s=n("yCtX");function u(...t){let e=Number.POSITIVE_INFINITY,n=null,u=t[t.length-1];return Object(r.a)(u)?(n=t.pop(),t.length>1&&"number"==typeof t[t.length-1]&&(e=t.pop())):"number"==typeof u&&(e=t.pop()),null===n&&1===t.length&&t[0]instanceof a.a?t[0]:Object(i.a)(e)(Object(s.a)(t,n))}},VTlA:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("mSOc"),n("ufoC");class a{constructor(t,e){this.taskMessageService=t,this.summaryService=e}init(t,e,n,a,r,i,s){this.getUpdate=t,this.preProcessing=e,this.setList=n,this.onFetchError=a,this.taskFilter=r,this.itemFilter=i,this.builders=s||{},this.summaryDataSubscription=this.summaryService.subscribe(t=>{this.getUpdate().subscribe(e=>{this.updateData(e,t.executing_tasks.filter(this.taskFilter))},this.onFetchError)},this.onFetchError)}updateData(t,e){const n=this.preProcessing?this.preProcessing(t):t;this.addMissing(n,e),n.forEach(t=>{const n=e.filter(e=>this.itemFilter(t,e));t.cdExecuting=this.getTaskAction(n)}),this.setList(n)}addMissing(t,e){const n=this.builders.default;e.forEach(e=>{const a=t.find(t=>this.itemFilter(t,e)),r=this.builders[e.name];a||!r&&!n||t.push(r?r(e.metadata):n(e.metadata))})}getTaskAction(t){if(0!==t.length)return t.map(t=>{const e=t.progress?` ${t.progress}%`:"";return this.taskMessageService.getRunningText(t)+"..."+e}).join(", ")}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}}},VXsX:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("LvDl"),r=n("8Y7J");class i{constructor(t,e,n){this.name=t,this.metadata=e,this.onTaskFinished=n}}let s=(()=>{class t{constructor(){this.subscriptions=[]}init(t){return t.subscribe(t=>{const e=t.executing_tasks,n=t.finished_tasks,a=[];for(const r of this.subscriptions){const t=this._getTask(r,n),i=this._getTask(r,e);null!==t&&null===i&&r.onTaskFinished(t),null!==i&&a.push(r),this.subscriptions=a}})}subscribe(t,e,n){this.subscriptions.push(new i(t,e,n))}_getTask(t,e){for(const n of e)if(n.name===t.name&&a.isEqual(n.metadata,t.metadata))return n;return null}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},Vclq:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("wd/R"))},Vhfg:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("lJxs"),r=n("ej+x"),i=n("8Y7J"),s=n("iInd");let u=(()=>{class t{constructor(t,e){this.router=t,this.featureToggles=e}canActivate(t){return this.featureToggles.get().pipe(Object(a.a)(e=>!1!==e[t.routeConfig.path]||(this.router.navigate(["404"]),!1)))}canActivateChild(t){return this.canActivate(t.parent)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.m),i["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})()},ViD7:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="cs">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Zobraz./skrýt navigaci</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Přehled</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klastr</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Stroje</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Služby</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Nastavení</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH mapa</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Moduly správy</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Záznamy událostí</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Fondy</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blok</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Obrazy</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Zrcadlení</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Souborové systémy</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektová brána</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Procesy služeb</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Uživatelé</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Nádoby</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Získávají se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pro\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Čekejte…\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Zobrazují se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>z mezipaměti\n  pro \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Nedaří se načíst dat \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pro\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Zkontrolujte zdraví klastru.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Vyčistit oznámení</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Odebrat oznámení</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Trvání:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>Nejsou zde žádná oznámení.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Úlohy a oznámení</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Vyberte jazyk</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Načítání údajů panelu…</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Nahlédněte do\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, kde naleznete jak\n  nastavit a zapnout funkci monitorování.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana přehled neexistuje. Podívejte se do\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> jak\n  přidat přehledy do Grafany.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Volič čas Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Resetovat nastavení</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Načíst znovu</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Odebrat uživatelsky určenou hodnotu nastavení. Namísto toho bude převzato a použito výchozí nastavení.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Nemůže být vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Nemůže být nižší než 1.</target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zpět</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Data se nepodařilo načíst</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>vybráno</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>nalezeno</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>celkem</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Název</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Popis</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Podrobnější popis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Výchozí</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Výchozí pro proces služby</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Hodnoty</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Nemůže být vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Nemůže být nižší než \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Uložit</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>prohlížeč CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Načítání…</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Název stroje</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Tuto kolonku je třeba vyplnit.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>Zvolený název stroje už je používán.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Opravdu chcete \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Opravdu chcete označené položky \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> ?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Opravdu chcete \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> označené \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ano, opravdu to chci.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Storno</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zavřít</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Seznam strojů</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Celková výkonnost</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Zařízení</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenalezeny žádné položky</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Záznamy událostí v klastra</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Auditní záznamy událostí</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priorita:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Klíčové slovo:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Datum:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Volba data</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Časový rozsah:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Načítání nastavení…</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Toto nastavení se nepodařilo načíst.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Upravit modul správy</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Zadaná hodnota není platné UUID, např.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Je třeba, aby zadaná hodnota byla platnou IP adresou.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Je třeba, aby byla nižší nebo rovná \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Je třeba, aby byla vyšší než nebo rovná \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Je třeba, aby zadaná hodnota byla číslo.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Je třeba, aby zadaná hodnota byla číslo nebo desítkové.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aktualizovat</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Stav</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Identif. kastru</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>mapa monitorů změněna</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epocha</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kvórum spojení</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kvórum monitor</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>vyžadováno spojení</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>vyžadováno monitorů</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>V kvóru</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Není v kvóru</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Přidat</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funkce</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Příznaky OSD pro celý klastr</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Odeslat</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Pokročilé…</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Pokročilé volby nastavení</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorita obnovení OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorita</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Přizpůsobit hodnoty priority</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Tuto kolonku je třeba vyplnit!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká, je třeba, aby nebyla vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Je třeba, aby byla nižší než \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Je třeba, aby hodnota byla mezi 0 a 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Znovu vyvážit</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSD \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>kontrola\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, vybrat, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, vybrat, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Seznam OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Ticha</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Vyberte atribut vůči kterému hledat shodu --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Hodnota</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Použít regulární výraz</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Upravit</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Smazat</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Úprava ticha skončí platnost původního ticha a znovu ho vytvoří jako nové ticho</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Tvůrce</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Komentář</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Čas začátku</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>Pokud čas začátku leží v minulosti, bude namísto něj použit okamžik vytvoření</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Trvání</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>Čas konce</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdraví</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiky</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Ohledně nastavení a zapnutí funkce správy NFS Ganesha nahlédněte do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klienti</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Přistupovat může libovolný klient</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresy</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Vyžadovaná kolonka</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Je třeba, aby obsahovalo jednu nebo více čárkou oddělovaných hodnot</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Například:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ přístupu</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Přidat klienty</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Žádný klastr k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Vyberte klastr --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Přidat proces služby</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Podpůrná vrstva úložiště</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Žádné fondy k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Vyberte podpůrnou vrstvu úložiště --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Uživatel objektové brány</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Žádní uživatelé k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Vyberte uživatele brány objektů --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>Identif. uživatele CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Žádní klienti k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Vyberte cephx klienta --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Název CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- Žádný souborový systém CephFS k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Vyberte CephFS souborový systém --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Štítek zabezpečení</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Zapnout štítek zabezpečení</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Popis umístění CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Je třeba, aby popis umístění začínal na „/“, za kterým následuje slovo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Bude vytvořena nová složka</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Popis umístění</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Popis umístění může být pouze jediné „/“ nebo slovo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Bude vytvořena nová nádoba</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS protokol</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS štítek</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternativní přístup pro \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> připojení (nemůže začínat na /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klienti nemohou připojovat podsložky (tj. pokud Tag = neco, klient nemůže připojit neco/podslozka).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Použitím různých voleb Štítku, může to stejné umístění být exportováno vícekrát.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>Pozice kterou tento \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export zabírá\n                v \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (je třeba, aby se neopakovalo).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>By using different Pseudo options, the same Path may be exported multiple times.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Je třeba, aby Pseudo začínalo na „/“ a a nemůže obsahovat nic z následujícího: &gt;, &lt;, |, &amp;, ( nebo ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Žádný typ přístupu k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Vyberte typ přístupu --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Žádné squash k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Vyberte jaký druh squashování identifikátor uživatele je prováděn --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportní protokol</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Původní heslo</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>Je třeba, aby původní a nové heslo nebyly stejné</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>Nové heslo</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Zopakování zadání nového hesla</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Kontrolní zadání nového hesla se neshoduje.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Vítejte v Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Je třeba vyplnit uživatelské jméno</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Je třeba vyplnit heslo</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Přihlásit</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Je nám líto, uživatel v Ceph neexistuje.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Vrátit se na \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Přihlašovací stránku\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Budete odhlášeni od poskytovatele identity když se pokusíte znovu přihlásit.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Odepřeno</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Omlouváme se, ale nemáte oprávnění zobrazit to, po čem se  poohlížíte.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>Data obdržena v JSON formátu verze 2.x, což je v tuto chvíli nekompatibilní s přehledem.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>výsledek SMART testu samoposouzení celkového stavu</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Informace o zařízení</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Nastavení RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Odebrat hodnotu místnímu nastavení. Namísto ní bude použita hodnota nadřazeného nastavení.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minimální hodnota je 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Seznam fondů</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Název může být tvořen pouze písmeny a číslicemi, dále ještě spojovníky a podtržítky.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Zvolený název pro profil mazacího kódu je už používán.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Zásuvný modul</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Shluky dat (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Je třeba, aby bylo 2 a více.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Shluky kódování (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Je třeba, aby bylo 1 a více.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Odhadování odolnosti (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Umístění (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Doména selhání crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalita crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Žádné</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technika</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Velikostpaketu</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Kořen crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Třída crush zařízení</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>libovolné</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Složka</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Název…</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Zvolený název pro Ceph fond je už používán.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Není možné vytvořit RBD fond s názvem „/“ v názvu.\n              Změňte název nebo \'rbd\' odeberte ze seznamu aplikací.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Typ fondul</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Vybrat typ fondu --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Je třeba alespoň jedné skupiny umístění!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Váš klastr nemůže obsloužit tolik skupin umístění. Přepočítejte potřebné množství skupin umístění.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Nápověda k výpočtu</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikovaná velikost</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Nejméně: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Nejvíce: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>Zadaná velikost je mimo rozsah. Platná hodnota je\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> až \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> .\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Příznaky</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC přebití</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplikace</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil mazacího kódu</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Žádný profil mazacího kódu --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Vyberte profil mazacího kódu --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Sada pravidel crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Vybrat crush pravidlo --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush pravidlo</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush kroky</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Komprese</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Režim</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmus</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Žádný algoritmus komprese mazání --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimální velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>např. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Hodnota by měla být vyšší než nula</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Hodnota by měla být nižší než maximální velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Nejvyšší velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>např. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Hodnota by měla být vyšší než nejnižší velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Poměr</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Kompresní poměr</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Hodnota by měla být z rozmezí 0.0 až 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Kvóty</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Nejvýše bajtů</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Pro vypnutí této kvóty nevyplňujte nebo zadejte 0 (nulu).</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>Platná kvóta by měla být vyšší než 0 (nula).</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>např. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>Hodnota by měla být vyšší nebo rovna 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Podrobnosti</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Podrobnosti o výkonnosti</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Podrobnosti o stupních mezipaměti</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Přesunout obraz do koše</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Platnost ochrany skončí v</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NECHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Chybný formát data. Použijte „RRRR-MM-DD HH:mm:ss“.</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Platnost ochrany už skončila. Zvolte budoucí datum nebo nevyplňujte.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Přesunout obraz</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Brány</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Je třeba, aby bylo vyšší nebo rovno \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Je třeba, aby bylo nižší nebo rovno \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Přehled</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Cíle</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Uživatele</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména byla 8 až 64 znaků dlouhá a\n              mohu obsahovat pouze písmena a znaky „.“, „@“, „-“, „_“ a „:“.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Heslo</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla byla 12 až 16 znaků dlouhá\n              a mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Uživatel pro vzájemné ověření</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Heslo pro vzájemné ověření</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby heslo byla 12 až 16 znaků dlouhá a\n              mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Podívejte se do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  jak nastavit a zapnout funkci správy iSCSI cílů.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informace k dispozici:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI cíl není k dispozici</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>K dispozici pouze pro RBD obrazy se zapnutým \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Fond</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datový fond</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Vytvořeno</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Velikost</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objekty</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Velikost objektu</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Poskytováno</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>neaplikovatelné</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Celkem poskytováno</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Proužkovací jednotka</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Počet proužkování</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Nadřazené</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Předpona názvu bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Pořadí</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Zachycené stavy</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Toto nastavení přebije globální hodnotu</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globální</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Toto je globální hodnota. Pro tento obraz nebyla u této volby nastavena žádná hodnota.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> od\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>„/“ a „@“ nejsou dovoleny.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Žádné rbd fondy k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Vybrat fond --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Použít vyhrazený datový fond</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datový fond</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Vyhrazený fond který uchovává objektová data RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Je třeba zvětšit.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Pokročilé</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Proužkování</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednotka proužku</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Vybrat jednotku proužku --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Tuto kolonku je třeba vyplnit, protože je definován počet proužků!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Jednotka proužku je vyšší než velikost objektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Počet proužků</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Tuto kolonku je třeba vyplnit, protože je definována jednotka proužku!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Je třeba, aby počet proužků byl větší než nula.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Chystáte se vrátit zpět</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vysypat koš</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Vše</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Fond:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Název fondu…</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Obnovit obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Pro obnovení</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>zadejte nový název pro obraz a klikněte na</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nový název</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Platnost skončila v</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Chráněno do</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>Tento obraz je chráněn do\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologie iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Měnit tyto parametry z jejich výchozích hodnot obvykle není potřeba.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Nastavení</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Potvrdit</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pokročilá nastavení</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN cíle</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN nemá správný formát.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN má následující formu zápisu\n                \'iqn.$rok-$mesic.$adresaObracene:$definovanyNazev\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Například: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Další informace</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Tento cíl má změněná pokročilá nastavení.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portály</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Přidat portál</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Je třeba alespoň \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> bran.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Tento obraz má změněná nastavení.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Přidat obraz</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL ověřování</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména měla délku 8 až 64 znaků a\n                obsahovala pouze písmena a případně ještě znaky „.“, „@“, „-“, „_“ nebo „:“.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 až 16 znaků\n                a obsahovala písmena a znaky „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciátory</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciátor</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN klienta</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Je třeba, aby se IQN iniciátoru neopakovalo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména měla délku 8 až 64 znaků a\n                        mohou obsahovat pouze písmena a znaky „.“, „@“, „-“, „_“ nebo „:“.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 až 16 znaků\n                        a mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 znaků 16 a\n                        mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Iniciátor spadá do skupiny. Obrazy budou nastaveny ve skupině.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nepřidány žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Přidat iniciátor</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Skupiny</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Skupina</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Přidat skupinu</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Koš</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>problémy</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronizuje se</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Připraveno</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Upravit režim zrcadlení fondu</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Pro úpravu režimu zrcadlení pro fond \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, vyberte ze seznamu nový režim a klikněte na \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aktualizovat\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Před vypnutím zrcadlení je třeba odebrat klastry-protějšky.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  protějšek zrcadlení fondu\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Název klastru</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Název klastru není platný</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX identif.</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX identif. …</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX identif. není platný.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresy monitorů</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Čárkou oddělované adresy…</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Adresa monitoru není platná.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX klíč</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Klíč v base64 kódování…</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Je třeba, aby CephX klíč byl v kódování base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Výkonnostní čítače nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Podívejte se do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  jak nastavit a zapnout funkci správy brány objektů.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Seznam procesů služeb</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Výkonnostní čítače</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Načítání dat nádoby…</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Identif.</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Hodnota není platná.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Zvolený název už je používán.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Vlastník</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Vybrat uživatele --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Cíl umístění</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Vybrat cíl umístění --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Verzování</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Zapnuto</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>Identif.</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Typ rejstříku</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Pravidlo umístění</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Označovač</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Nejvyšší označovač</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Verze</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Hlavní verze</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Okamžik úpravy</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Skupinazóny</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kvóta nádoby</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Nejvyšší velikost</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Neomezeno</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Uživatelské jméno</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Vybrat uživatelské jméno --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Automaticky vytvořit klíč</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Přístupový klíč</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajný klíč</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Celé jméno</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-mailová adresa</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Systém</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nejvýše nádob</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Dílčí uživatelé</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Schopnosti</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kvóta uživatele</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Zobrazit</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Klíče</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Vybrat typ --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Oprávnění</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Vybrat oprávnění --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Dílčí uživatel</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Zvolený identifikátor dílčího uživatele už je používán.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>číst, zapisovat</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>plné</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift klíč</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Automaticky vytvořit tajemství</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Načítání údajů uživatele…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Údaje uživatele se nepodařilo načíst.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Zvolený identif. uživatele už je používán.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Toto není platná e-mailová adresa.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Zvolená e-mailová adresa už je používána.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nejvýše nádob</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Vypnuto</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Uživatelsky určené</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 klíč</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nejsou zde žádní dílčí uživatelé.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Nejsou zde žádné klíče.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nejsou zde žádné schopnosti.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Neomezená velikost</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Nejvyšší velikost</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Neomezené objekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Je třeba, aby zadaná hodnota byla 0 a vyšší.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Popis…</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Oprávnění</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potvrzení zadání hesla</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Zadání hesla se neshodují.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Neplatný e-mail.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Chystáte se odebrat oprávnění „uživatel číst/aktualizovat“ svému vlastnímu účtu.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Pokud budete pokračovat, nebudete nadále schopní přidávat nebo nebo odebírat role žádnému z uživatelů.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Opravdu chcete pokračovat?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Nápověda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentace</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>Aplikační program. rozhraní</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>O aplikaci</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Nastavení přehledu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Správa uživatelů</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Přihlášený uživatel</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Přihlášeni jako\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Změnit heslo</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Odhlásit</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributy (OSD mapa)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadata nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadata</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Stav zařízení</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Výkonnostní čítač</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram není k dispozici: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Zápisy</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Čtení</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Stávající hodnoty</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Zdroj</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Úroveň</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Je možné aktualizovat za provozu (upravitelné)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Štítky</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Vyčíslit hodnoty</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Viz také</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Stav klastru</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Procesy služby správy</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektové brány</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Metadata servery</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI brány</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>vst/výst. klienta</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Propustnost klienta</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Čtení/zápis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Propustnost zotavení</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Kontrola</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Výkonnost</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Holá kapacita</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Skupin umístění na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stav skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapacita</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>Další podrobnosti \n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> naleznete v \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>záznamech událostí\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Hodnocení</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>čítače výkonnosti MDS</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Složky</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Klienti (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Stávající</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Aktualizováno ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Nejsou k dispozici žádné portály.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nejsou k dispozici žádné obrazy.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Nejsou k dispozici žádné obrazy. Ověřte, že jste cíli přidali obraz.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Nejsou k dispozici žádné iniciátory. Ověřte, že jste cíli přidali iniciátor.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>cíl</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Cíl</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target>Počet relací</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Cíl má aktivní relace</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI cíl</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stav</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target>Počet cílů</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bajtů čtení</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bajtů zápis</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operací/s čtení</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operací/s zápis</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O od</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problém</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Ukazatel postupu</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Upravit režim</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Přidat protějšek</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Upravit protějšek</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Smazat protějšek</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Vedoucí</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Počet místních</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Počet vzdálených</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>zrcadlit protějšek</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Klíč</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Hluboké zploštění</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Vrstvení</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Výhradní zámek</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa objektů (vyžaduje výhradní zámek)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Žurnálování (vyžaduje výhradní zámek)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Je třeba, aby nadřazený obraz podporoval vrstvy</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>CHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NECHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Vrácení zachyceného stavu RBD zpět</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Vrácení zpět</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Zachycený stav RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Smazáno v</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>identif.</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stav</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>verze</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Stroj</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>kořen</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Procesy služeb v pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Hodnocení</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Proces služby</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivita</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Struktury složek</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>I-uzlů</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Využití</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Původ</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualizováno</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Hodnotu je možné aktualizovat za chodu.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Procesy služeb / klienti nezískávají tuto hodnotu\n      z databáze nastavení monitoru. Není umožněno nastavit tuto volbu\n      prostřednictvím „ceph config set …\'. Tato volba by měla být nastavena\n      z příkazového řádku.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Volba se uplatní pouze při spouštění procesu služby.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Volba ovlivní pouze vytváření klastru.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Volba ovlivní pouze vytvoření procesu služby.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Aktualizována volba nastavení \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Služba</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Stávající hodnota</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Upravitelné</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>stroj</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Popis umístění zařízení</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>K dispozici</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Aktualizována volba pro modul „\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Zapnout</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Vypnout</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>Modul Zpráva je vždy zapnutý.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Opětovné připojování, čekejte…</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Veřejná adresa</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otevřené relace</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Počet do</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD které byly dříve odznačeny nebudou označeny nazpět když spustí</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Počet ven</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD nebudou automaticky odznačeny po nastaveném intervalu</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Počet aktivních</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD není dovoleno spuštění</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Počet neaktivních</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Hlášení o selhání OSD jsou ignorovány, jako například že monitory OSD neoznačí jako nedostupné</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pozastavit</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pozastavit čtení a zápisy</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Žádná kontrola</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Kontrola je vypnutá</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Žádná hloubková kontrola</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Hloubková kontrola je vypnutá</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Žádné zasypávání</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasypávání skupin umístění je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Žádné obnovení</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Obnovování skupin umístění je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitové třídění</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Třídit podle bitů</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Vyčištěné složky zachycených stavů</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD mají převedené sady zachycených stavů</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Smazáno při zotavování</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Mazání provedená při obnovování namísto peeringu</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Nepřekročitelný limit záznamu událostí PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Zapne nepřekročitelný limit na délku záznamu událostí v pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualizovány OSD příznaky</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>ven</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>dovnitř</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>nedostupné</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Značka</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD ztraceno</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>označeno jako ztracené</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Vyčistit</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>vyčištěno</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>zlikvidovat</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>zlikvidováno</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>smazat</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Priorita zotavování</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Přečteno bajtů</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapsáno bajtů</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operací/s čtení</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operací/s zápis</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Označit OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Označit \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max Backfills</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Recovery Max Active</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Recovery Max Single Start</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Uspání zotavení</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Aktualizována rychlost zotavení OSD „\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Úloha</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Závažnost</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Zahájeno</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL adresa</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>ticho</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Název atributu</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regulární výraz</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Přidejte hostitele s Prometheus do nastavení přehledu a znovu načtete stránku</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Vytvořil(a)</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Končí</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Ticho</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Popis stavu</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Použito</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>K dispozici</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Čisté</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Pracující</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Varování</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Neznámé</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Zdravé</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Chybně umístěno</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degradováno</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Odnalezeno</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>repliky</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktivní</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>žádné souborové systémy</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktivní</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>v pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>neaplikovatelné</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktivní proces služby</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kvórum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Služba NFS Ganesha není nastavena.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS uživatel</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Souborový systém CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(převzato z globálního nastavení)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>převzato z globálního nastavení</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Vyberte jaký druh squashování identifikátor uživatele je prováděn --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Nejsou k dispozici žádné procesy služeb.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC profil</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Režim mezipaměti</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min Evict Age</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min Flush Age</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Nejvýše bajtů cíle</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nejvýše objektů cíle</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nebyla přidána žádná aplikace</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Dosažen limit aplikací</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Fond může mít nejvýše čtyři definice aplikací.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Použitelné znaky „_a-zA-Z0-9“</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Nejvyšší délka je 128 znaků</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrovat nebo přidat aplikace</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Přidat aplikaci</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>fond</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil mazacího kódu</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Velikost repliky</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Nejnovější změna</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Mazáním kódovaný profil</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Sada crush pravidel</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Smazání fondu je vypnuto nastavením mon_allow_pool_delete configuration.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>nádoba</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Vytvořena nádoba objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>nádoby</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>schopnost</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>uživatel</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>dílčí uživatel</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 klíč</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Aktualizován uživatel objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Vytvořen uživatel objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>uživatelé</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift klíč</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>Vyskytla se chyba s kódem \n          <x id="INTERPOLATION" equiv-text="{{code}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Nezpracované</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Práh</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>Když se nezdařilo</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Nejhorší</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Rozsah</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Čtení</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Vytvořit</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Vytvořena role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Aktualizována role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Systémová role</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Smazána role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>Nejsou zde žádné role.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Vytvořen uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aktualizovat uživatele</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Pokračovat</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Byli jste automaticky odhlášeni protože vaše role byly změněny.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Aktualizován uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Smazán uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Nepodařilo se smazat uživatele „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>Nyní jste přihlášení jako „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“.\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>heslo</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Aktualizované heslo uživatele"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Každý objekt je rozdělen v částech shluků dat, každé uložené na jiném OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Počítat kódovací shluky pro každý objekt a ukládat je na různých OSD.\n      Počet kódovacích shluků je také počet OSD, které mohou vypadnou, aniž dojde ke ztrátě dat.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Zásuvný modul jerasure je nejobecnější a nejpřizpůsobivější,\n je také výchozí pro Ceph fondy kódované mazáním.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Přizpůsobivější technikou je reed_sol_van: postačí nastvit k\n          a m. Technika cauchy_good technique může být rychlejší, ale je třeba pečlivě nastavit velikost\n          paketu. Všechny z reed_sol_r6_op, liberation, blaum_roth, liber8tion jsou ekvivalenty RAID6\n          v tom smyslu, že je možné je nastavit pouze s m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Zásuvný modul isa obaluje knihovnu ISA. Funguje pouze na procesorech Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Zásuvný modul ISA přichází ve dvou Reed Solomon podobách.\n          Pokud je nastaveno reed_sol_van, je to Vandermonde, pokud je nastaveno Cauchy, je Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Počet paritních shluků, ze kterých každý obsahuje každý shluk dat ve svém\n          výpočetním rozsahu. Číslo je použito pro odhad odolnosti. Například, pokud c=2,\n          2 OSD mohou vypadnou aniž by byla ztracena data.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Název crush nádoby sloužící jako první krok CRUSH pravidla.\n Například krok vzít výchozí.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Zajistit, aby žádné dva shluky nebyly v nádobě nacházejícící se ve stejné\n      doméně selhání. Například, pokud doména selhání je hostitel, žádné dva shluky nebudou uloženy na stejném hostiteli\n      Je použito pro vytvoření kroku CRUSH pravidla jako krok chooseleaf hostitele.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Omezit umístění na zařízení určité třídy\n      (např., ssd nebo hdd), pomocí názvu crush třídy zařízení v  CRUSH mapě.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Nastavit složku ze které načítat zásuvný modul mazacího kódu.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Umožnit všechny operace</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Umožnit pouze operace které neupraví server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Neumožňuje operace čtení či zápisu, ale umožňuje ostatní</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Neumožňuje čtení, zápis nebo jinou operaci která upravuje atributy        souboru nebo obsah složky</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Neumožnit vůbec žádný přístup</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Vyberte prioritu --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Nízká</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Vysoká</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Chyba</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informace</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Úspěch</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Uplynulých 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Uplynulých 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Uplynulých 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Uplynulá 1 hodina (výchozí)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Uplynulé 3 hodiny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Uplynulých 6 hodin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Uplynulých 12 hodin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Uplynulých 24 hodin</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Včera</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Dnes</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Dnes doposud</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Včerejšek</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Uplynulé 2 dny</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Tento den minulý týden</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Předchozí týden</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Tento týden</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Tento týden doposud</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Uplynulých 7 dnů</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Předchozí měsíc</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Tento měsíc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Tento měsíc doposud</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Uplynulých 30 dnů</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Uplynulých 90 dnů</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Uplynulých 6 měsíců</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Uplynulý 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Předchozí rok</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Tento rok</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Tento rok doposud</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Uplynulé 2 roky</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Uplynulých 5 let</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nevybrány žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Aby položku bylo možné znovu vybrat, je třeba nejprve zrušit její výběr</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Dosažen limit výběru</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrovat štítky</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Přidat odznak</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Nejsou k dispozici žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Odebrat</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonovat</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopírovat</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Hloubková kontrola</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Zlikvidovat</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Zploštit</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Označit</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Označit</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Označit ztracené</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Odznačit</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Ochránit</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Přejmenovat</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Obnovit</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Přesunout do koše</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Zrušit ochranu</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Změnit</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Znovuvytvořit</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Ukončit platnost</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Smazáno</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Přidáno</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Odebráno</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Upraveno</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Zrušeno</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Naklonováno</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Zkopírováno</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Zlikvidováno</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Zploštěno</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Označeno jako ztracené</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Chráněno</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Vyčištěno</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Přejmenováno</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Obnoveno</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Vzato zpět</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Zobrazeno</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Přesunout do koše</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Ochrana zrušena</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Znovu vytvořeno</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Platnost skončila</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ano</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Ne</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>žádné aktivní výstrahy</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>Jedna aktivní výstraha</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> aktivních výstrah\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Odpovídá jednomu pravidlu</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Odpovídá \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> pravidlům\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> s \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kvalita služby</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Požadovaný limit vst./výstup. bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit vst/výstup. operací / s</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Požadovaný limit vst./výstup. operací za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limit BPS čtení</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Požadovaný limit čtení bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limit IOPS čtení</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Požadovaný limit operací čtení za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit BPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Požadovaný limit zápisu bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit IOPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Požadovaný limit operací čtení za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS dávka</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Požadovaný limit dávky bajtů vstup/výstupu.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS dávka</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Požadovaný limit dávky vst./výstup. operací.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Dávka BPS čtení</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Požadovaný limit dávky bajtů čtení.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Dávka IOPS čtení</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Požadovaný limit dávky čtení bajtů.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Dávka BPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Požadovaný limit bajtů dávky zápisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Dávka IOPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Požadovaný limit dávky operace zápisu.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Nepodařilo se \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Vykonává se</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>vykonat</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Vykonáno</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>neznámý úkol</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Vytváří se</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>vytvořit</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aktualizuje se</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aktualizovat</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Maže se</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Přidávání</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>přidat</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Odebírání</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>odebrat</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD zachycený stav „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>režim zrcadlení pro fond „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>protějšek zrcadlení pro fond „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>všechny přehledy</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> obsahuje zachycené stavy.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Klonuje se</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klonovat</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Je třeba, aby zachycený stav \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> byl chráněný.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kopíruje se</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>zkopírovat</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Zploštění</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>zploštit</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Název už je používán pro \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Není možné zrušit ochranu \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, protože obsahuje podřízené obrazy.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> není možné smazat, protože je chráněné.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Bere se zpět</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>vzít zpět</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Přesouvá se</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>přesunout</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Přesunuto</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ do koše\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Obraz se nedaří najít.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Obnovuje se</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>obnovit</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ do „\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Název „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ už je používán pro jiný obraz.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Čistí se</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>vyčistit</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>všechny fondy</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>obrazy z \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Zrcadlení nelze vypnout protože obsahuje protějšek.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>stroj „\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>fond „\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>profil mazacího kódu „\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>cíl „\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},VpIT:function(t,e,n){var a=n("xDBR"),r=n("xs3f");(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.20.0",mode:a?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},Vu81:function(t,e,n){var a=n("0GbY"),r=n("4zBA"),i=n("JBy8"),s=n("dBg+"),u=n("glrk"),o=r([].concat);t.exports=a("Reflect","ownKeys")||function(t){var e=i.f(u(t)),n=s.f;return n?o(e,n(t)):e}},WF9J:function(t,e,n){"use strict";n("TeQF"),n("QWBl"),n("4mDm"),n("zKZe"),n("07d7"),n("4l63"),n("PKPk"),n("ENF9"),n("3bBZ");var a,r=n("hKI/"),i=n.n(r),s=n("9/5/"),u=n.n(s),o=n("uyHG"),l=n.n(o),d=[],c="ResizeObserver loop completed with undelivered notifications.";!function(t){t.BORDER_BOX="border-box",t.CONTENT_BOX="content-box",t.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"}(a||(a={}));var f,h=function(t){return Object.freeze(t)},g=function(t,e){this.inlineSize=t,this.blockSize=e,h(this)},p=function(){function t(t,e,n,a){return this.x=t,this.y=e,this.width=n,this.height=a,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,h(this)}return t.prototype.toJSON=function(){var t=this;return{x:t.x,y:t.y,top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:t.width,height:t.height}},t.fromRect=function(e){return new t(e.x,e.y,e.width,e.height)},t}(),b=function(t){return t instanceof SVGElement&&"getBBox"in t},m=function(t){if(b(t)){var e=t.getBBox();return!e.width&&!e.height}return!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},y=function(t){var e,n;if(t instanceof Element)return!0;var a=null===(n=null===(e=t)||void 0===e?void 0:e.ownerDocument)||void 0===n?void 0:n.defaultView;return!!(a&&t instanceof a.Element)},v="undefined"!=typeof window?window:{},x=new WeakMap,_=/auto|scroll/,T=/^tb|vertical/,w=/msie|trident/i.test(v.navigator&&v.navigator.userAgent),O=function(t){return parseFloat(t||"0")},S=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=!1),new g((n?e:t)||0,(n?t:e)||0)},I=h({devicePixelContentBoxSize:S(),borderBoxSize:S(),contentBoxSize:S(),contentRect:new p(0,0,0,0)}),N=function(t,e){if(void 0===e&&(e=!1),x.has(t)&&!e)return x.get(t);if(m(t))return x.set(t,I),I;var n=getComputedStyle(t),a=b(t)&&t.ownerSVGElement&&t.getBBox(),r=!w&&"border-box"===n.boxSizing,i=T.test(n.writingMode||""),s=!a&&_.test(n.overflowY||""),u=!a&&_.test(n.overflowX||""),o=a?0:O(n.paddingTop),l=a?0:O(n.paddingRight),d=a?0:O(n.paddingBottom),c=a?0:O(n.paddingLeft),f=a?0:O(n.borderTopWidth),g=a?0:O(n.borderRightWidth),y=a?0:O(n.borderBottomWidth),v=c+l,N=o+d,C=(a?0:O(n.borderLeftWidth))+g,R=f+y,A=u?t.offsetHeight-R-t.clientHeight:0,k=s?t.offsetWidth-C-t.clientWidth:0,E=r?v+C:0,L=r?N+R:0,D=a?a.width:O(n.width)-E-k,P=a?a.height:O(n.height)-L-A,M=D+v+k+C,q=P+N+A+R,j=h({devicePixelContentBoxSize:S(Math.round(D*devicePixelRatio),Math.round(P*devicePixelRatio),i),borderBoxSize:S(M,q,i),contentBoxSize:S(D,P,i),contentRect:new p(c,o,D,P)});return x.set(t,j),j},C=function(t,e,n){var r=N(t,n),i=r.borderBoxSize,s=r.contentBoxSize,u=r.devicePixelContentBoxSize;switch(e){case a.DEVICE_PIXEL_CONTENT_BOX:return u;case a.BORDER_BOX:return i;default:return s}},R=function(t){var e=N(t);this.target=t,this.contentRect=e.contentRect,this.borderBoxSize=h([e.borderBoxSize]),this.contentBoxSize=h([e.contentBoxSize]),this.devicePixelContentBoxSize=h([e.devicePixelContentBoxSize])},A=function(t){if(m(t))return 1/0;for(var e=0,n=t.parentNode;n;)e+=1,n=n.parentNode;return e},k=function(){var t=1/0,e=[];d.forEach((function(n){if(0!==n.activeTargets.length){var a=[];n.activeTargets.forEach((function(e){var n=new R(e.target),r=A(e.target);a.push(n),e.lastReportedSize=C(e.target,e.observedBox),r<t&&(t=r)})),e.push((function(){n.callback.call(n.observer,a,n.observer)})),n.activeTargets.splice(0,n.activeTargets.length)}}));for(var n=0,a=e;n<a.length;n++)(0,a[n])();return t},E=function(t){d.forEach((function(e){e.activeTargets.splice(0,e.activeTargets.length),e.skippedTargets.splice(0,e.skippedTargets.length),e.observationTargets.forEach((function(n){n.isActive()&&(A(n.target)>t?e.activeTargets.push(n):e.skippedTargets.push(n))}))}))},L=[],D=0,P={attributes:!0,characterData:!0,childList:!0,subtree:!0},M=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],q=function(t){return void 0===t&&(t=0),Date.now()+t},j=!1,F=new(function(){function t(){var t=this;this.stopped=!0,this.listener=function(){return t.schedule()}}return t.prototype.run=function(t){var e=this;if(void 0===t&&(t=250),!j){j=!0;var n,a=q(t);n=function(){var n=!1;try{n=function(){var t,e=0;for(E(e);d.some((function(t){return t.activeTargets.length>0}));)e=k(),E(e);return d.some((function(t){return t.skippedTargets.length>0}))&&("function"==typeof ErrorEvent?t=new ErrorEvent("error",{message:c}):((t=document.createEvent("Event")).initEvent("error",!1,!1),t.message=c),window.dispatchEvent(t)),e>0}()}finally{if(j=!1,t=a-q(),!D)return;n?e.run(1e3):t>0?e.run(t):e.start()}},function(t){if(!f){var e=0,a=document.createTextNode("");new MutationObserver((function(){return L.splice(0).forEach((function(t){return t()}))})).observe(a,{characterData:!0}),f=function(){a.textContent=""+(e?e--:e++)}}L.push((function(){requestAnimationFrame(n)})),f()}()}},t.prototype.schedule=function(){this.stop(),this.run()},t.prototype.observe=function(){var t=this,e=function(){return t.observer&&t.observer.observe(document.body,P)};document.body?e():v.addEventListener("DOMContentLoaded",e)},t.prototype.start=function(){var t=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),M.forEach((function(e){return v.addEventListener(e,t.listener,!0)})))},t.prototype.stop=function(){var t=this;this.stopped||(this.observer&&this.observer.disconnect(),M.forEach((function(e){return v.removeEventListener(e,t.listener,!0)})),this.stopped=!0)},t}()),V=function(t){!D&&t>0&&F.start(),!(D+=t)&&F.stop()},G=function(){function t(t,e){this.target=t,this.observedBox=e||a.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return t.prototype.isActive=function(){var t,e=C(this.target,this.observedBox,!0);return b(t=this.target)||function(t){switch(t.tagName){case"INPUT":if("image"!==t.type)break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1}(t)||"inline"!==getComputedStyle(t).display||(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},t}(),B=function(t,e){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=t,this.callback=e},z=new WeakMap,Y=function(t,e){for(var n=0;n<t.length;n+=1)if(t[n].target===e)return n;return-1},H=function(){function t(){}return t.connect=function(t,e){var n=new B(t,e);z.set(t,n)},t.observe=function(t,e,n){var a=z.get(t),r=0===a.observationTargets.length;Y(a.observationTargets,e)<0&&(r&&d.push(a),a.observationTargets.push(new G(e,n&&n.box)),V(1),F.schedule())},t.unobserve=function(t,e){var n=z.get(t),a=Y(n.observationTargets,e);a>=0&&(1===n.observationTargets.length&&d.splice(d.indexOf(n),1),n.observationTargets.splice(a,1),V(-1))},t.disconnect=function(t){var e=this,n=z.get(t);n.observationTargets.slice().forEach((function(n){return e.unobserve(t,n.target)})),n.activeTargets.splice(0,n.activeTargets.length)},t}(),U=function(){function t(t){if(0===arguments.length)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if("function"!=typeof t)throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");H.connect(this,t)}return t.prototype.observe=function(t,e){if(0===arguments.length)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!y(t))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");H.observe(this,t,e)},t.prototype.unobserve=function(t){if(0===arguments.length)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!y(t))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");H.unobserve(this,t)},t.prototype.disconnect=function(){H.disconnect(this)},t.toString=function(){return"function ResizeObserver () { [polyfill code] }"},t}(),W=n("AxL3"),K=n.n(W);function $(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:window}function J(t){return t&&t.ownerDocument?t.ownerDocument:document}n("E9XD"),n("sMBO"),n("rB9j"),n("Rm1S"),n("UxlC");var Z=null,Q=null;function X(t){if(null===Z){var e=J(t);if(void 0===e)return Z=0;var n=e.body,a=e.createElement("div");a.classList.add("simplebar-hide-scrollbar"),n.appendChild(a);var r=a.getBoundingClientRect().right;n.removeChild(a),Z=r}return Z}K.a&&window.addEventListener("resize",(function(){Q!==window.devicePixelRatio&&(Q=window.devicePixelRatio,Z=null)}));var tt=function(){function t(e,n){var a=this;this.onScroll=function(){var t=$(a.el);a.scrollXTicking||(t.requestAnimationFrame(a.scrollX),a.scrollXTicking=!0),a.scrollYTicking||(t.requestAnimationFrame(a.scrollY),a.scrollYTicking=!0)},this.scrollX=function(){a.axis.x.isOverflowing&&(a.showScrollbar("x"),a.positionScrollbar("x")),a.scrollXTicking=!1},this.scrollY=function(){a.axis.y.isOverflowing&&(a.showScrollbar("y"),a.positionScrollbar("y")),a.scrollYTicking=!1},this.onMouseEnter=function(){a.showScrollbar("x"),a.showScrollbar("y")},this.onMouseMove=function(t){a.mouseX=t.clientX,a.mouseY=t.clientY,(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseMoveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseMoveForAxis("y")},this.onMouseLeave=function(){a.onMouseMove.cancel(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseLeaveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseLeaveForAxis("y"),a.mouseX=-1,a.mouseY=-1},this.onWindowResize=function(){a.scrollbarWidth=a.getScrollbarWidth(),a.hideNativeScrollbar()},this.hideScrollbars=function(){a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.track.rect)||(a.axis.y.scrollbar.el.classList.remove(a.classNames.visible),a.axis.y.isVisible=!1),a.isWithinBounds(a.axis.x.track.rect)||(a.axis.x.scrollbar.el.classList.remove(a.classNames.visible),a.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,n;a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&(e=a.isWithinBounds(a.axis.x.track.rect)),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&(n=a.isWithinBounds(a.axis.y.track.rect)),(e||n)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&(a.axis.x.scrollbar.rect=a.axis.x.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.x.scrollbar.rect)?a.onDragStart(t,"x"):a.onTrackClick(t,"x")),n&&(a.axis.y.scrollbar.rect=a.axis.y.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.scrollbar.rect)?a.onDragStart(t,"y"):a.onTrackClick(t,"y"))))},this.drag=function(e){var n=a.axis[a.draggedAxis].track,r=n.rect[a.axis[a.draggedAxis].sizeAttr],i=a.axis[a.draggedAxis].scrollbar,s=a.contentWrapperEl[a.axis[a.draggedAxis].scrollSizeAttr],u=parseInt(a.elStyles[a.axis[a.draggedAxis].sizeAttr],10);e.preventDefault(),e.stopPropagation();var o=(("y"===a.draggedAxis?e.pageY:e.pageX)-n.rect[a.axis[a.draggedAxis].offsetAttr]-a.axis[a.draggedAxis].dragOffset)/(r-i.size)*(s-u);"x"===a.draggedAxis&&(o=a.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?o-(r+i.size):o,o=a.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-o:o),a.contentWrapperEl[a.axis[a.draggedAxis].scrollOffsetAttr]=o},this.onEndDrag=function(t){var e=J(a.el),n=$(a.el);t.preventDefault(),t.stopPropagation(),a.el.classList.remove(a.classNames.dragging),e.removeEventListener("mousemove",a.drag,!0),e.removeEventListener("mouseup",a.onEndDrag,!0),a.removePreventClickId=n.setTimeout((function(){e.removeEventListener("click",a.preventClick,!0),e.removeEventListener("dblclick",a.preventClick,!0),a.removePreventClickId=null}))},this.preventClick=function(t){t.preventDefault(),t.stopPropagation()},this.el=e,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},n),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,t.instances.has(this.el)||(this.recalculate=i()(this.recalculate.bind(this),64),this.onMouseMove=i()(this.onMouseMove.bind(this),64),this.hideScrollbars=u()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=u()(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=l()(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var e=document.createElement("div");e.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var n=e.firstElementChild;document.body.appendChild(n);var a=n.firstElementChild;n.scrollLeft=0;var r=t.getOffset(n),i=t.getOffset(a);n.scrollLeft=999;var s=t.getOffset(a);return{isRtlScrollingInverted:r.left!==i.left&&i.left-s.left!=0,isRtlScrollbarInverted:r.left!==i.left}},t.getOffset=function(t){var e=t.getBoundingClientRect(),n=J(t),a=$(t);return{top:e.top+(a.pageYOffset||n.documentElement.scrollTop),left:e.left+(a.pageXOffset||n.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),K.a&&(this.initDOM(),this.setAccessibilityAttributes(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var t=this;if(Array.prototype.filter.call(this.el.children,(function(e){return e.classList.contains(t.classNames.wrapper)})).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.axis.x.track.el=e.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=e.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.setAccessibilityAttributes=function(){var t=this.options.ariaLabel||"scrollable content";this.contentWrapperEl.setAttribute("tabindex","0"),this.contentWrapperEl.setAttribute("role","region"),this.contentWrapperEl.setAttribute("aria-label",t)},e.initListeners=function(){var t=this,e=$(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),e.addEventListener("resize",this.onWindowResize);var n=!1;this.resizeObserver=new(e.ResizeObserver||U)((function(){n&&t.recalculate()})),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),e.requestAnimationFrame((function(){n=!0})),this.mutationObserver=new e.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var t=$(this.el);this.elStyles=t.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var e=this.heightAutoObserverEl.offsetHeight<=1,n=this.heightAutoObserverEl.offsetWidth<=1,a=this.contentEl.offsetWidth,r=this.contentWrapperEl.offsetWidth,i=this.elStyles.overflowX,s=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var u=this.contentEl.scrollHeight,o=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=e?"auto":"100%",this.placeholderEl.style.width=n?a+"px":"auto",this.placeholderEl.style.height=u+"px";var l=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=o>a,this.axis.y.isOverflowing=u>l,this.axis.x.isOverflowing="hidden"!==i&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==s&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var d=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&o>r-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&u>l-d,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(t){if(void 0===t&&(t="y"),!this.axis[t].isOverflowing)return 0;var e,n=this.axis[t].track.el[this.axis[t].offsetSizeAttr];return e=Math.max(~~(n/this.contentEl[this.axis[t].scrollSizeAttr]*n),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e},e.positionScrollbar=function(e){if(void 0===e&&(e="y"),this.axis[e].isOverflowing){var n=this.contentWrapperEl[this.axis[e].scrollSizeAttr],a=this.axis[e].track.el[this.axis[e].offsetSizeAttr],r=parseInt(this.elStyles[this.axis[e].sizeAttr],10),i=this.axis[e].scrollbar,s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],u=~~((s="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-s:s)/(n-r)*(a-i.size));u="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?u+(a-i.size):u,i.el.style.transform="x"===e?"translate3d("+u+"px, 0, 0)":"translate3d(0, "+u+"px, 0)"}},e.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,n=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),n.style.display=this.axis[t].isOverflowing?"block":"none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(t){void 0===t&&(t="y"),this.axis[t].isVisible||(this.axis[t].scrollbar.el.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(t,e){void 0===e&&(e="y");var n=J(this.el),a=$(this.el);this.axis[e].dragOffset=("y"===e?t.pageY:t.pageX)-this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),n.addEventListener("mousemove",this.drag,!0),n.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(n.addEventListener("click",this.preventClick,!0),n.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(t,e){var n=this;if(void 0===e&&(e="y"),this.options.clickOnTrack){var a=$(this.el);this.axis[e].scrollbar.rect=this.axis[e].scrollbar.el.getBoundingClientRect();var r=this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],i=parseInt(this.elStyles[this.axis[e].sizeAttr],10),s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],u=("y"===e?this.mouseY-r:this.mouseX-r)<0?-1:1,o=-1===u?s-i:s+i;!function t(){var r,i;-1===u?s>o&&(n.contentWrapperEl.scrollTo(((r={})[n.axis[e].offsetAttr]=s-=n.options.clickOnTrackSpeed,r)),a.requestAnimationFrame(t)):s<o&&(n.contentWrapperEl.scrollTo(((i={})[n.axis[e].offsetAttr]=s+=n.options.clickOnTrackSpeed,i)),a.requestAnimationFrame(t))}()}},e.getContentElement=function(){return this.contentEl},e.getScrollElement=function(){return this.contentWrapperEl},e.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:X(this.el)}catch(t){return X(this.el)}},e.removeListeners=function(){var t=this,e=$(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl&&this.contentWrapperEl.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver&&this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},e.unMount=function(){this.removeListeners(),t.instances.delete(this.el)},e.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},e.findChild=function(t,e){var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return Array.prototype.filter.call(t.children,(function(t){return n.call(t,e)}))[0]},t}();tt.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},tt.instances=new WeakMap;var et=tt,nt=(n("FZtP"),function(t){return Array.prototype.reduce.call(t,(function(t,e){var n=e.name.match(/data-simplebar-(.+)/);if(n){var a=n[1].replace(/\W+(.)/g,(function(t,e){return e.toUpperCase()}));switch(e.value){case"true":t[a]=!0;break;case"false":t[a]=!1;break;case void 0:t[a]=!0;break;default:t[a]=e.value}}return t}),{})});function at(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:window}function rt(t){return t&&t.ownerDocument?t.ownerDocument:document}var it=null,st=null;function ut(t){if(null===it){var e=rt(t);if(void 0===e)return it=0;var n=e.body,a=e.createElement("div");a.classList.add("simplebar-hide-scrollbar"),n.appendChild(a);var r=a.getBoundingClientRect().right;n.removeChild(a),it=r}return it}K.a&&window.addEventListener("resize",(function(){st!==window.devicePixelRatio&&(st=window.devicePixelRatio,it=null)}));var ot=function(){function t(e,n){var a=this;this.onScroll=function(){var t=at(a.el);a.scrollXTicking||(t.requestAnimationFrame(a.scrollX),a.scrollXTicking=!0),a.scrollYTicking||(t.requestAnimationFrame(a.scrollY),a.scrollYTicking=!0)},this.scrollX=function(){a.axis.x.isOverflowing&&(a.showScrollbar("x"),a.positionScrollbar("x")),a.scrollXTicking=!1},this.scrollY=function(){a.axis.y.isOverflowing&&(a.showScrollbar("y"),a.positionScrollbar("y")),a.scrollYTicking=!1},this.onMouseEnter=function(){a.showScrollbar("x"),a.showScrollbar("y")},this.onMouseMove=function(t){a.mouseX=t.clientX,a.mouseY=t.clientY,(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseMoveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseMoveForAxis("y")},this.onMouseLeave=function(){a.onMouseMove.cancel(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseLeaveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseLeaveForAxis("y"),a.mouseX=-1,a.mouseY=-1},this.onWindowResize=function(){a.scrollbarWidth=a.getScrollbarWidth(),a.hideNativeScrollbar()},this.hideScrollbars=function(){a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.track.rect)||(a.axis.y.scrollbar.el.classList.remove(a.classNames.visible),a.axis.y.isVisible=!1),a.isWithinBounds(a.axis.x.track.rect)||(a.axis.x.scrollbar.el.classList.remove(a.classNames.visible),a.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,n;a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&(e=a.isWithinBounds(a.axis.x.track.rect)),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&(n=a.isWithinBounds(a.axis.y.track.rect)),(e||n)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&(a.axis.x.scrollbar.rect=a.axis.x.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.x.scrollbar.rect)?a.onDragStart(t,"x"):a.onTrackClick(t,"x")),n&&(a.axis.y.scrollbar.rect=a.axis.y.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.scrollbar.rect)?a.onDragStart(t,"y"):a.onTrackClick(t,"y"))))},this.drag=function(e){var n=a.axis[a.draggedAxis].track,r=n.rect[a.axis[a.draggedAxis].sizeAttr],i=a.axis[a.draggedAxis].scrollbar,s=a.contentWrapperEl[a.axis[a.draggedAxis].scrollSizeAttr],u=parseInt(a.elStyles[a.axis[a.draggedAxis].sizeAttr],10);e.preventDefault(),e.stopPropagation();var o=(("y"===a.draggedAxis?e.pageY:e.pageX)-n.rect[a.axis[a.draggedAxis].offsetAttr]-a.axis[a.draggedAxis].dragOffset)/(r-i.size)*(s-u);"x"===a.draggedAxis&&(o=a.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?o-(r+i.size):o,o=a.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-o:o),a.contentWrapperEl[a.axis[a.draggedAxis].scrollOffsetAttr]=o},this.onEndDrag=function(t){var e=rt(a.el),n=at(a.el);t.preventDefault(),t.stopPropagation(),a.el.classList.remove(a.classNames.dragging),e.removeEventListener("mousemove",a.drag,!0),e.removeEventListener("mouseup",a.onEndDrag,!0),a.removePreventClickId=n.setTimeout((function(){e.removeEventListener("click",a.preventClick,!0),e.removeEventListener("dblclick",a.preventClick,!0),a.removePreventClickId=null}))},this.preventClick=function(t){t.preventDefault(),t.stopPropagation()},this.el=e,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},n),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,t.instances.has(this.el)||(this.recalculate=i()(this.recalculate.bind(this),64),this.onMouseMove=i()(this.onMouseMove.bind(this),64),this.hideScrollbars=u()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=u()(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=l()(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var e=document.createElement("div");e.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var n=e.firstElementChild;document.body.appendChild(n);var a=n.firstElementChild;n.scrollLeft=0;var r=t.getOffset(n),i=t.getOffset(a);n.scrollLeft=999;var s=t.getOffset(a);return{isRtlScrollingInverted:r.left!==i.left&&i.left-s.left!=0,isRtlScrollbarInverted:r.left!==i.left}},t.getOffset=function(t){var e=t.getBoundingClientRect(),n=rt(t),a=at(t);return{top:e.top+(a.pageYOffset||n.documentElement.scrollTop),left:e.left+(a.pageXOffset||n.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),K.a&&(this.initDOM(),this.setAccessibilityAttributes(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var t=this;if(Array.prototype.filter.call(this.el.children,(function(e){return e.classList.contains(t.classNames.wrapper)})).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.axis.x.track.el=e.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=e.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.setAccessibilityAttributes=function(){var t=this.options.ariaLabel||"scrollable content";this.contentWrapperEl.setAttribute("tabindex","0"),this.contentWrapperEl.setAttribute("role","region"),this.contentWrapperEl.setAttribute("aria-label",t)},e.initListeners=function(){var t=this,e=at(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),e.addEventListener("resize",this.onWindowResize);var n=!1;this.resizeObserver=new(e.ResizeObserver||U)((function(){n&&t.recalculate()})),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),e.requestAnimationFrame((function(){n=!0})),this.mutationObserver=new e.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var t=at(this.el);this.elStyles=t.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var e=this.heightAutoObserverEl.offsetHeight<=1,n=this.heightAutoObserverEl.offsetWidth<=1,a=this.contentEl.offsetWidth,r=this.contentWrapperEl.offsetWidth,i=this.elStyles.overflowX,s=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var u=this.contentEl.scrollHeight,o=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=e?"auto":"100%",this.placeholderEl.style.width=n?a+"px":"auto",this.placeholderEl.style.height=u+"px";var l=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=o>a,this.axis.y.isOverflowing=u>l,this.axis.x.isOverflowing="hidden"!==i&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==s&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var d=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&o>r-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&u>l-d,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(t){if(void 0===t&&(t="y"),!this.axis[t].isOverflowing)return 0;var e,n=this.axis[t].track.el[this.axis[t].offsetSizeAttr];return e=Math.max(~~(n/this.contentEl[this.axis[t].scrollSizeAttr]*n),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e},e.positionScrollbar=function(e){if(void 0===e&&(e="y"),this.axis[e].isOverflowing){var n=this.contentWrapperEl[this.axis[e].scrollSizeAttr],a=this.axis[e].track.el[this.axis[e].offsetSizeAttr],r=parseInt(this.elStyles[this.axis[e].sizeAttr],10),i=this.axis[e].scrollbar,s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],u=~~((s="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-s:s)/(n-r)*(a-i.size));u="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?u+(a-i.size):u,i.el.style.transform="x"===e?"translate3d("+u+"px, 0, 0)":"translate3d(0, "+u+"px, 0)"}},e.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,n=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),n.style.display=this.axis[t].isOverflowing?"block":"none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(t){void 0===t&&(t="y"),this.axis[t].isVisible||(this.axis[t].scrollbar.el.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(t,e){void 0===e&&(e="y");var n=rt(this.el),a=at(this.el);this.axis[e].dragOffset=("y"===e?t.pageY:t.pageX)-this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),n.addEventListener("mousemove",this.drag,!0),n.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(n.addEventListener("click",this.preventClick,!0),n.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(t,e){var n=this;if(void 0===e&&(e="y"),this.options.clickOnTrack){var a=at(this.el);this.axis[e].scrollbar.rect=this.axis[e].scrollbar.el.getBoundingClientRect();var r=this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],i=parseInt(this.elStyles[this.axis[e].sizeAttr],10),s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],u=("y"===e?this.mouseY-r:this.mouseX-r)<0?-1:1,o=-1===u?s-i:s+i;!function t(){var r,i;-1===u?s>o&&(n.contentWrapperEl.scrollTo(((r={})[n.axis[e].offsetAttr]=s-=n.options.clickOnTrackSpeed,r)),a.requestAnimationFrame(t)):s<o&&(n.contentWrapperEl.scrollTo(((i={})[n.axis[e].offsetAttr]=s+=n.options.clickOnTrackSpeed,i)),a.requestAnimationFrame(t))}()}},e.getContentElement=function(){return this.contentEl},e.getScrollElement=function(){return this.contentWrapperEl},e.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:ut(this.el)}catch(t){return ut(this.el)}},e.removeListeners=function(){var t=this,e=at(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl&&this.contentWrapperEl.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver&&this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},e.unMount=function(){this.removeListeners(),t.instances.delete(this.el)},e.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},e.findChild=function(t,e){var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return Array.prototype.filter.call(t.children,(function(t){return n.call(t,e)}))[0]},t}();ot.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},ot.instances=new WeakMap,ot.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),(function(t){"init"===t.getAttribute("data-simplebar")||ot.instances.has(t)||new ot(t,nt(t.attributes))}))},ot.removeObserver=function(){this.globalObserver.disconnect()},ot.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),"undefined"!=typeof MutationObserver&&(this.globalObserver=new MutationObserver(ot.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))},ot.handleMutations=function(t){t.forEach((function(t){Array.prototype.forEach.call(t.addedNodes,(function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?!ot.instances.has(t)&&document.documentElement.contains(t)&&new ot(t,nt(t.attributes)):Array.prototype.forEach.call(t.querySelectorAll("[data-simplebar]"),(function(t){"init"!==t.getAttribute("data-simplebar")&&!ot.instances.has(t)&&document.documentElement.contains(t)&&new ot(t,nt(t.attributes))})))})),Array.prototype.forEach.call(t.removedNodes,(function(t){1===t.nodeType&&("init"===t.getAttribute("data-simplebar")?ot.instances.has(t)&&!document.documentElement.contains(t)&&ot.instances.get(t).unMount():Array.prototype.forEach.call(t.querySelectorAll('[data-simplebar="init"]'),(function(t){ot.instances.has(t)&&!document.documentElement.contains(t)&&ot.instances.get(t).unMount()})))}))}))},ot.getOptions=nt,K.a&&ot.initHtmlApi(),n.d(e,"a",(function(){return lt})),n.d(e,"b",(function(){return dt}));class lt{constructor(t){this.elRef=t}ngOnInit(){}ngAfterViewInit(){this.SimpleBar=new et(this.elRef.nativeElement,this.options||{})}ngOnDestroy(){this.SimpleBar.unMount(),this.SimpleBar=null}}class dt{}},WJkJ:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},WKiH:function(t,e,n){var a=n("4zBA"),r=n("HYAF"),i=n("V37c"),s=n("WJkJ"),u=a("".replace),o="["+s+"]",l=RegExp("^"+o+o+"*"),d=RegExp(o+o+"*$"),c=function(t){return function(e){var n=i(r(e));return 1&t&&(n=u(n,l,"")),2&t&&(n=u(n,d,"")),n}};t.exports={start:c(1),end:c(2),trim:c(3)}},WMd4:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("EY2u"),r=n("LRne"),i=n("z6cu");let s=(()=>{class t{constructor(t,e,n){this.kind=t,this.value=e,this.error=n,this.hasValue="N"===t}observe(t){switch(this.kind){case"N":return t.next&&t.next(this.value);case"E":return t.error&&t.error(this.error);case"C":return t.complete&&t.complete()}}do(t,e,n){switch(this.kind){case"N":return t&&t(this.value);case"E":return e&&e(this.error);case"C":return n&&n()}}accept(t,e,n){return t&&"function"==typeof t.next?this.observe(t):this.do(t,e,n)}toObservable(){switch(this.kind){case"N":return Object(r.a)(this.value);case"E":return Object(i.a)(this.error);case"C":return Object(a.b)()}throw new Error("unexpected notification kind value")}static createNext(e){return void 0!==e?new t("N",e):t.undefinedValueNotification}static createError(e){return new t("E",void 0,e)}static createComplete(){return t.completeNotification}}return t.completeNotification=new t("C"),t.undefinedValueNotification=new t("N",void 0),t})()},WSbT:function(t,e){var n=Math.ceil,a=Math.floor;t.exports=function(t){var e=+t;return e!=e||0===e?0:(e>0?a:n)(e)}},WYrj:function(t,e,n){!function(t){"use strict";var e=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];t.defineLocale("dv",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(t){return"މފ"===t},meridiem:function(t,e,n){return t<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("wd/R"))},Wa4q:function(t,e,n){var a=n("qzZ1"),r="object"==typeof self&&self&&self.Object===Object&&self,i=a||r||Function("return this")();t.exports=i},WaXT:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("2vnA"),i=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.a.apply(void 0,t)}),r.a),s=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.c.apply(void 0,t)}),r.c),u=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.d.apply(void 0,t)}),r.d),o=n("MP8s");n.d(e,"a",(function(){return c}));var l=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},d=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},c=function(){function t(){this._dispose=[]}return Object.defineProperty(t.prototype,"nodes",{get:function(){return this._nodes},set:function(t){this.setNodes(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"marginTop",{get:function(){var t=this.viewportNodes&&this.viewportNodes.length&&this.viewportNodes[0];return(t&&t.parent?t.position-t.parent.position-t.parent.getSelfHeight():0)+"px"},enumerable:!0,configurable:!0}),t.prototype.setNodes=function(t){this._nodes=t},t.prototype.ngOnInit=function(){var t=this;this.virtualScroll=this.treeModel.virtualScroll,this._dispose=[Object(r.e)((function(){return t.virtualScroll.getViewportNodes(t.nodes).map((function(t){return t.index}))}),(function(e){t.viewportNodes=e.map((function(e){return t.nodes[e]}))}),{compareStructural:!0,fireImmediately:!0}),Object(r.e)((function(){return t.nodes}),(function(e){t.viewportNodes=t.virtualScroll.getViewportNodes(e)}))]},t.prototype.ngOnDestroy=function(){this._dispose.forEach((function(t){return t()}))},t.prototype.trackNode=function(t,e){return e.id},l([Object(a.Input)(),d("design:type",Object),d("design:paramtypes",[Object])],t.prototype,"nodes",null),l([Object(a.Input)(),d("design:type",o.a)],t.prototype,"treeModel",void 0),l([u,d("design:type",Object)],t.prototype,"_nodes",void 0),l([Object(a.Input)(),d("design:type",Object)],t.prototype,"templates",void 0),l([u,d("design:type",Array)],t.prototype,"viewportNodes",void 0),l([s,d("design:type",String),d("design:paramtypes",[])],t.prototype,"marginTop",null),l([i,d("design:type",Function),d("design:paramtypes",[Object]),d("design:returntype",void 0)],t.prototype,"setNodes",null),l([Object(a.Component)({selector:"tree-node-collection",encapsulation:a.ViewEncapsulation.None,template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div [style.margin-top]="marginTop">\n        <tree-node\n          *ngFor="let node of viewportNodes; let i = index; trackBy: trackNode"\n          [node]="node"\n          [index]="i"\n          [templates]="templates"\n        >\n        </tree-node>\n      </div>\n    </ng-container>\n  '})],t)}()},We1y:function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=n("DVFp"),s=a.TypeError;t.exports=function(t){if(r(t))return t;throw s(i(t)+" is not a function")}},WiuZ:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("978R"),s=n("z/SZ"),u=n("2uy1"),o=n("s7LF"),l=n("+gVj"),d=n("ANnk"),c=n("f/UV"),f=n("aexS"),h=n("KOzp");n("wnGv"),n("GiVz"),n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return N}));var g=a["ɵcrt"]({encapsulation:0,styles:[[".select-menu-item[_ngcontent-%COMP%]{display:block;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.09);font-size:12px}.select-menu-item[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.select-menu-item-icon[_ngcontent-%COMP%]{float:left;padding:.5em;width:3em}.select-menu-item-content[_ngcontent-%COMP%]{padding:.5em}"]],data:{}});function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback text-center"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.messages.customValidations[e.parent.context.$implicit])}))}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.form.showError("filter",a["ɵnov"](e.parent,2))&&n.filter.hasError(e.context.$implicit))}),null)}function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"small",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),a["ɵted"](3,null,[" ","  "]))],null,(function(t,e){t(e,3,0,e.parent.context.$implicit.description)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,"div",[["class","select-menu-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.triggerSelection(t.context.$implicit)&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{"help-block disabled":0}),(t()(),a["ɵeld"](4,0,null,null,3,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,["   "])),(t()(),a["ɵeld"](8,0,null,null,3,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["ɵted"](9,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](11,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=t(e,3,0,!(n.data.length!==n.selectionLimit&&e.context.$implicit.enabled||e.context.$implicit.selected));t(e,2,0,"select-menu-item",a),t(e,6,0,e.context.$implicit.selected),t(e,11,0,e.context.$implicit.description)}),(function(t,e){t(e,9,0,e.context.$implicit.name)}))}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[["class","select-menu-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addCustomOption()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](5,1),(t()(),a["ɵted"](-1,null,["   "])),(t()(),a["ɵeld"](7,0,null,null,1,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["ɵted"](8,null,[" "," '","' "]))],(function(t,e){var n=t(e,5,0,e.component.icons.tag);t(e,4,0,n)}),(function(t,e){var n=e.component;t(e,8,0,n.messages.add,n.filter.value)}))}function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,2,"span",[["class","form-text text-muted text-center text-warning"]],null,null,null,null,null)),a["ɵdid"](1,212992,null,0,i.c,[a.ViewContainerRef,s.a,i.a,a.ElementRef,a.Renderer2,u.a],{tooltip:[0,"tooltip"]},null),(t()(),a["ɵted"](2,null,[" "," "])),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.messages.selectionLimit.tooltip)}),(function(t,e){t(e,2,0,e.component.messages.selectionLimit.text)}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","is-invalid"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,_)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.data.length===n.selectionLimit)}),null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,2).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,2).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,5).onSubmit()&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,o.G,[],null,null),a["ɵdid"](2,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,o.d,null,[o.l]),a["ɵdid"](4,16384,null,0,o.s,[[4,o.d]],null,null),a["ɵdid"](5,16384,null,0,l.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](6,0,null,null,10,"div",[],null,null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,7,"input",[["class","form-control text-center"],["formControlName","filter"],["type","text"]],[[8,"placeholder",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["ɵnov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,8)._compositionEnd(n.target.value)&&r),"keyup"===e&&(r=!1!==(13==n.keyCode?i.selectOption():i.updateFilter())&&r),r}),null,null)),a["ɵdid"](8,16384,null,0,o.e,[a.Renderer2,a.ElementRef,[2,o.b]],null,null),a["ɵprd"](1024,null,o.p,(function(t){return[t]}),[o.e]),a["ɵdid"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,o.q,null,[o.j]),a["ɵdid"](12,16384,null,0,o.r,[[4,o.q]],null,null),a["ɵdid"](13,4210688,null,0,d.a,[[2,c.a],f.a,a.ElementRef],null,null),a["ɵdid"](14,16384,null,0,l.h,[[3,o.d],l.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,b)),a["ɵdid"](16,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](18,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,x)),a["ɵdid"](20,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](22,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.form),t(e,5,0,n.form),t(e,10,0,"filter"),t(e,14,0,"filter"),t(e,16,0,n.Object.keys(n.messages.customValidations)),t(e,18,0,n.filteredOptions),t(e,20,0,n.isCreatable()),t(e,22,0,n.data.length===n.selectionLimit)}),(function(t,e){var n=e.component;t(e,0,0,a["ɵnov"](e,4).ngClassUntouched,a["ɵnov"](e,4).ngClassTouched,a["ɵnov"](e,4).ngClassPristine,a["ɵnov"](e,4).ngClassDirty,a["ɵnov"](e,4).ngClassValid,a["ɵnov"](e,4).ngClassInvalid,a["ɵnov"](e,4).ngClassPending),t(e,7,0,n.messages.filter,a["ɵnov"](e,12).ngClassUntouched,a["ɵnov"](e,12).ngClassTouched,a["ɵnov"](e,12).ngClassPristine,a["ɵnov"](e,12).ngClassDirty,a["ɵnov"](e,12).ngClassValid,a["ɵnov"](e,12).ngClassInvalid,a["ɵnov"](e,12).ngClassPending,a["ɵnov"](e,14).validClass,a["ɵnov"](e,14).invalidClass)}))}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,4,"a",[["class","select-menu-edit float-left"],["container","body"],["outsideClick","true"],["placement","bottom"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵdid"](3,212992,null,0,h.c,[h.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,u.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0,"select-menu-edit float-left",e.component.elemClass),t(e,3,0,a["ɵnov"](e.parent,0),"bottom","true","body")}),null)}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted float-left"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.messages.empty)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted  float-left"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.messages.noOptions)}))}function N(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,[["popTemplate",2]],null,0,null,w)),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,S)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.customBadges||n.options.length>0),t(e,4,0,0===n.data.length&&!(!n.customBadges&&0===n.options.length)),t(e,6,0,!n.customBadges&&0===n.options.length)}),null)}},Wv1A:function(t,e,n){var a=n("QpVZ");t.exports=function(t){if("string"==typeof t||a(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},WxRl:function(t,e,n){!function(t){"use strict";var e="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(t,e,n,a){var r=t;switch(n){case"s":return a||e?"néhány másodperc":"néhány másodperce";case"ss":return r+(a||e)?" másodperc":" másodperce";case"m":return"egy"+(a||e?" perc":" perce");case"mm":return r+(a||e?" perc":" perce");case"h":return"egy"+(a||e?" óra":" órája");case"hh":return r+(a||e?" óra":" órája");case"d":return"egy"+(a||e?" nap":" napja");case"dd":return r+(a||e?" nap":" napja");case"M":return"egy"+(a||e?" hónap":" hónapja");case"MM":return r+(a||e?" hónap":" hónapja");case"y":return"egy"+(a||e?" év":" éve");case"yy":return r+(a||e?" év":" éve")}return""}function a(t){return(t?"":"[múlt] ")+"["+e[this.day()]+"] LT[-kor]"}t.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(t){return"u"===t.charAt(1).toLowerCase()},meridiem:function(t,e,n){return t<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return a.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return a.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"X+05":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a={toggleExpanded:"toggleExpanded",activate:"activate",deactivate:"deactivate",nodeActivate:"nodeActivate",nodeDeactivate:"nodeDeactivate",select:"select",deselect:"deselect",focus:"focus",blur:"blur",initialized:"initialized",updateData:"updateData",moveNode:"moveNode",copyNode:"copyNode",event:"event",loadNodeChildren:"loadNodeChildren",changeFilter:"changeFilter",stateChange:"stateChange"}},X709:function(t,e,n){!function(t){"use strict";t.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"e":1===e||2===e?"a":"e")},week:{dow:1,doy:4}})}(n("wd/R"))},XDbj:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("sVev"),r=n("7o/Q");function i(t=o){return e=>e.lift(new s(t))}class s{constructor(t){this.errorFactory=t}call(t,e){return e.subscribe(new u(t,this.errorFactory))}}class u extends r.a{constructor(t,e){super(t),this.errorFactory=e,this.hasValue=!1}_next(t){this.hasValue=!0,this.destination.next(t)}_complete(){if(this.hasValue)return this.destination.complete();{let e;try{e=this.errorFactory()}catch(t){e=t}this.destination.error(e)}}}function o(){return new a.a}},XDpg:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"周";default:return t}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("wd/R"))},XFPk:function(t,e,n){var a=n("qN6l"),r=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return a?void 0!==e[t]:r.call(e,t)}},XFyV:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");class r{constructor(){this.icons=a.a}}},XGwC:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},XLvN:function(t,e,n){!function(t){"use strict";t.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(t,e){return 12===t&&(t=0),"రాత్రి"===e?t<4?t:t+12:"ఉదయం"===e?t:"మధ్యాహ్నం"===e?t>=10?t:t+12:"సాయంత్రం"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"రాత్రి":t<10?"ఉదయం":t<17?"మధ్యాహ్నం":t<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("wd/R"))},XNiG:function(t,e,n){"use strict";n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return d}));var a=n("HDdC"),r=n("7o/Q"),i=n("quSY"),s=n("9ppp"),u=n("Ylt2"),o=n("2QA8");class l extends r.a{constructor(t){super(t),this.destination=t}}let d=(()=>{class t extends a.a{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[o.a](){return new l(this)}lift(t){const e=new c(this,this);return e.operator=t,e}next(t){if(this.closed)throw new s.a;if(!this.isStopped){const{observers:e}=this,n=e.length,a=e.slice();for(let r=0;r<n;r++)a[r].next(t)}}error(t){if(this.closed)throw new s.a;this.hasError=!0,this.thrownError=t,this.isStopped=!0;const{observers:e}=this,n=e.length,a=e.slice();for(let r=0;r<n;r++)a[r].error(t);this.observers.length=0}complete(){if(this.closed)throw new s.a;this.isStopped=!0;const{observers:t}=this,e=t.length,n=t.slice();for(let a=0;a<e;a++)n[a].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(t){if(this.closed)throw new s.a;return super._trySubscribe(t)}_subscribe(t){if(this.closed)throw new s.a;return this.hasError?(t.error(this.thrownError),i.a.EMPTY):this.isStopped?(t.complete(),i.a.EMPTY):(this.observers.push(t),new u.a(this,t))}asObservable(){const t=new a.a;return t.source=this,t}}return t.create=(t,e)=>new c(t,e),t})();class c extends d{constructor(t,e){super(),this.destination=t,this.source=e}next(t){const{destination:e}=this;e&&e.next&&e.next(t)}error(t){const{destination:e}=this;e&&e.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:e}=this;return e?this.source.subscribe(t):i.a.EMPTY}}},Xg1U:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("978R"),i=(n("SVse"),a["ɵcrt"]({encapsulation:0,styles:[".tooltip[_nghost-%COMP%] {\n      display: block;\n      pointer-events: none;\n    }\n    .bs3.tooltip.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -2px;\n    }\n    .bs3.tooltip.bottom[_nghost-%COMP%] {\n      margin-top: 0px;\n    }\n    .bs3.bs-tooltip-left[_nghost-%COMP%], .bs3.bs-tooltip-right[_nghost-%COMP%]{\n      margin: 0px;\n    }\n    .bs3.bs-tooltip-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs3.bs-tooltip-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      margin: .3rem 0;\n    }"],data:{}}));function s(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","tooltip-arrow arrow"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","tooltip-inner"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-tooltip-container",[["role","tooltip"]],[[8,"className",0],[2,"show",null],[2,"bs3",null],[1,"id",0]],null,null,s,i)),a["ɵdid"](1,4243456,null,0,r.b,[r.a],null,null)],null,(function(t,e){t(e,0,0,"tooltip in tooltip-"+a["ɵnov"](e,1).placement+" bs-tooltip-"+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).containerClass,!a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).id)}))}var o=a["ɵccf"]("bs-tooltip-container",r.b,u,{},{},["*"])},XhiP:function(t,e,n){var a=n("Wa4q");t.exports=a.Uint8Array},Xnc8:function(t,e,n){var a=n("g6v/"),r=n("Gi26"),i=Function.prototype,s=a&&Object.getOwnPropertyDescriptor,u=r(i,"name"),o=u&&"something"===(function(){}).name,l=u&&(!a||a&&s(i,"name").configurable);t.exports={EXISTS:u,PROPER:o,CONFIGURABLE:l}},XoHu:function(t,e,n){"use strict";function a(t){return null!==t&&"object"==typeof t}n.d(e,"a",(function(){return a}))},Y3RO:function(t,e){t.exports=function(t,e){var n=-1,a=t.length;for(e||(e=Array(a));++n<a;)e[n]=t[n];return e}},Y7HM:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("DH7j");function r(t){return!Object(a.a)(t)&&t-parseFloat(t)+1>=0}},YCpU:function(t,e,n){var a=n("QuoE"),r=n("im1V"),i=n("372+"),s=n("H+zY"),u=n("yb/u"),o=Math.max;t.exports=function(t,e,n,l){t=r(t)?t:u(t),n=n&&!l?s(n):0;var d=t.length;return n<0&&(n=o(d+n,0)),i(t)?n<=d&&t.indexOf(e,n)>-1:!!d&&a(t,e,n)>-1}},YF1G:function(t,e,n){var a=n("xrYK"),r=n("2oRo");t.exports="process"==a(r.process)},YGUN:function(t,e){t.exports=function(t){return function(){return t}}},YLnZ:function(t,e){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},YNrV:function(t,e,n){"use strict";var a=n("g6v/"),r=n("4zBA"),i=n("xluM"),s=n("0Dky"),u=n("33Wh"),o=n("dBg+"),l=n("0eef"),d=n("ewvW"),c=n("RK3t"),f=Object.assign,h=Object.defineProperty,g=r([].concat);t.exports=!f||s((function(){if(a&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=f({},t)[n]||"abcdefghijklmnopqrst"!=u(f({},e)).join("")}))?function(t,e){for(var n=d(t),r=arguments.length,s=1,f=o.f,h=l.f;r>s;)for(var p,b=c(arguments[s++]),m=f?g(u(b),f(b)):u(b),y=m.length,v=0;y>v;)p=m[v++],a&&!i(h,b,p)||(n[p]=b[p]);return n}:f},YRex:function(t,e,n){!function(t){"use strict";t.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(t,e){return 12===t&&(t=0),"يېرىم كېچە"===e||"سەھەر"===e||"چۈشتىن بۇرۇن"===e?t:"چۈشتىن كېيىن"===e||"كەچ"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"يېرىم كېچە":a<900?"سەھەر":a<1130?"چۈشتىن بۇرۇن":a<1230?"چۈش":a<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-كۈنى";case"w":case"W":return t+"-ھەپتە";default:return t}},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("wd/R"))},"Yj/I":function(t,e,n){var a=n("l9nr"),r=n("im1V"),i=n("FGWQ");t.exports=function(t){return function(e,n,s){var u=Object(e);if(!r(e)){var o=a(n,3);e=i(e),n=function(t){return o(u[t],t,u)}}var l=t(e,n,s);return l>-1?u[o?e[l]:l]:void 0}}},Ylt2:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("quSY");class r extends a.a{constructor(t,e){super(),this.subject=t,this.subscriber=e,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,e=t.observers;if(this.subject=null,!e||0===e.length||t.isStopped||t.closed)return;const n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}},Yrry:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J");class r{constructor(t){this.domSanitizer=t}transform(t){return this.domSanitizer.sanitize(a.SecurityContext.HTML,t)}}},Ytn0:function(t,e,n){var a=n("sEik");t.exports=function(t,e){var n=t.__data__;return a(e)?n["string"==typeof e?"string":"hash"]:n.map}},YuTi:function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},YzqF:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(){this._queue=[],this._pending=!1}return t.prototype.isLocked=function(){return this._pending},t.prototype.acquire=function(){var t=this,e=new Promise((function(e){return t._queue.push(e)}));return this._pending||this._dispatchNext(),e},t.prototype.runExclusive=function(t){return this.acquire().then((function(e){var n;try{n=t()}catch(a){throw e(),a}return Promise.resolve(n).then((function(t){return e(),t}),(function(t){throw e(),t}))}))},t.prototype._dispatchNext=function(){this._queue.length>0?(this._pending=!0,this._queue.shift()(this._dispatchNext.bind(this))):this._pending=!1},t}();e.default=a},Z21x:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("sne2");class a{constructor(t,e){this.location=t,this.actionLabels=e,this.name=this.actionLabels.CANCEL,this.back=()=>this.location.back()}}},Z2DA:function(t,e,n){var a=n("vJUC"),r=n("+FhV"),i=n("1Yk6"),s=n("kA6G");t.exports=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)a(e,i(t)),t=r(t);return e}:s},Z4QM:function(t,e,n){!function(t){"use strict";var e=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];t.defineLocale("sd",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("wd/R"))},ZAMP:function(t,e,n){!function(t){"use strict";t.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},ZDA6:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("IheW"),i=n("pL04");let s=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("ui-api/scope")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.c))},token:t,providedIn:i.a}),t})()},ZEkX:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return o})),n("Mxhz");var a=n("0+/T"),r=(n("sne2"),n("x38r")),i=n("oxzT"),s=n("mtw6"),u=n("vCyI");n("a0VL"),n("nSDx"),n("aexS"),n("9nlD");const o=new(n("EgGo").a)("user-management/users");class l{constructor(t,e,n,a,r,s,o,l,d){this.userService=t,this.emptyPipe=e,this.modalService=n,this.notificationService=a,this.authStorageService=r,this.i18n=s,this.urlBuilder=o,this.cdDatePipe=l,this.actionLabels=d,this.selection=new u.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:i.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:i.a.edit,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().username),name:this.actionLabels.EDIT},{permission:"delete",icon:i.a.destroy,click:()=>this.deleteUserModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Username"),prop:"username",flexGrow:1},{name:this.i18n("Name"),prop:"name",flexGrow:1,pipe:this.emptyPipe},{name:this.i18n("Email"),prop:"email",flexGrow:1,pipe:this.emptyPipe},{name:this.i18n("Roles"),prop:"roles",flexGrow:1,cellTemplate:this.userRolesTpl},{name:this.i18n("Enabled"),prop:"enabled",flexGrow:1,cellTransformation:r.a.checkIcon},{name:this.i18n("Password expiration date"),prop:"pwdExpirationDate",flexGrow:1,pipe:this.cdDatePipe}]}getUsers(){this.userService.list().subscribe(t=>{t.forEach(t=>{t.pwdExpirationDate&&t.pwdExpirationDate>0&&(t.pwdExpirationDate=1e3*t.pwdExpirationDate)}),this.users=t})}updateSelection(t){this.selection=t}deleteUser(t){this.userService.delete(t).subscribe(()=>{this.getUsers(),this.modalRef.hide(),this.notificationService.show(s.a.success,this.i18n('Deleted user "{{username}}"',{username:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}deleteUserModal(){const t=this.authStorageService.getUsername(),e=this.selection.first().username;t!==e?this.modalRef=this.modalService.show(a.a,{initialState:{itemDescription:"User",itemNames:[e],submitAction:()=>this.deleteUser(e)}}):this.notificationService.show(s.a.error,this.i18n('Failed to delete user "{{username}}"',{username:e}),this.i18n('You are currently logged in as "{{username}}".',{username:e}))}}},ZPW6:function(t,e,n){var a=n("w/8D");t.exports=function(t,e,n){"__proto__"==e&&a?a(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},ZUHj:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("51Dv"),r=n("SeVD"),i=n("HDdC");function s(t,e,n,s,u=new a.a(t,n,s)){if(!u.closed)return e instanceof i.a?e.subscribe(u):Object(r.a)(e)(u)}},ZUd8:function(t,e,n){var a=n("4zBA"),r=n("WSbT"),i=n("V37c"),s=n("HYAF"),u=a("".charAt),o=a("".charCodeAt),l=a("".slice),d=function(t){return function(e,n){var a,d,c=i(s(e)),f=r(n),h=c.length;return f<0||f>=h?t?"":void 0:(a=o(c,f))<55296||a>56319||f+1===h||(d=o(c,f+1))<56320||d>57343?t?u(c,f):a:t?l(c,f,f+2):d-56320+(a-55296<<10)+65536}};t.exports={codeAt:d(!1),charAt:d(!0)}},ZY2H:function(t,e,n){var a=n("/Gx3"),r=n("QUkU");t.exports=function(t){return a((function(e,n){var a=-1,i=n.length,s=i>1?n[i-1]:void 0,u=i>2?n[2]:void 0;for(s=t.length>3&&"function"==typeof s?(i--,s):void 0,u&&r(n[0],n[1],u)&&(s=i<3?void 0:s,i=1),e=Object(e);++a<i;){var o=n[a];o&&t(e,o,a,s)}return e}))}},Zduo:function(t,e,n){!function(t){"use strict";t.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(t){return"p"===t.charAt(0).toLowerCase()},meridiem:function(t,e,n){return t>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("wd/R"))},ZfDv:function(t,e,n){var a=n("C0Ia");t.exports=function(t,e){return new(a(t))(0===e?0:e)}},ZhuC:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",a.TemplateRef)],t.prototype,"template",void 0),i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({encapsulation:a.ViewEncapsulation.None,selector:"tree-loading-component",template:'\n    <span *ngIf="!template">loading...</span>\n    <ng-container\n      [ngTemplateOutlet]="template"\n      [ngTemplateOutletContext]="{ $implicit: node }">\n    </ng-container>\n  '})],t)}()},a0VL:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.datePipe=t}transform(t){return null===t||""===t?"":this.datePipe.transform(t,"shortDate")+" "+this.datePipe.transform(t,"mediumTime")}}},a1D2:function(t,e,n){var a=n("43VP");t.exports=function(t,e){var n;return a(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}},a278:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("QC43"),i=n("XFyV"),s=n("DqMs"),u=n("/NlG"),o=n("GiVz"),l=n("i4WA"),d=n("6qls"),c=n("tz6c"),f=n("s7LF"),h=n("ANnk"),g=n("f/UV"),p=n("aexS"),b=n("SVse");n("insk"),n("cUpR"),n("20UP"),n.d(e,"a",(function(){return m})),n.d(e,"b",(function(){return w}));var m=a["ɵcrt"]({encapsulation:0,styles:[[".grafana[_ngcontent-%COMP%]{width:100%;height:600px;z-index:0}.grafana_one[_ngcontent-%COMP%]{height:400px}.grafana_two[_ngcontent-%COMP%]{height:750px}.grafana_three[_ngcontent-%COMP%]{height:900px}.grafana_four[_ngcontent-%COMP%]{height:1160px}.timepicker[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.dropdown-menu[_ngcontent-%COMP%]{top:20px;right:20px;left:auto}"]],data:{}});function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,r.b,r.a)),a["ɵdid"](1,49152,null,0,i.a,[],null,null),(t()(),a["ɵted"](-1,0,["Loading panel data..."]))],null,null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,u.a,[o.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Please consult the "])),(t()(),a["ɵeld"](3,0,null,0,1,"cd-doc",[["section","grafana"]],null,null,null,l.b,l.a)),a["ɵdid"](4,114688,null,0,d.a,[c.a,o.a],{section:[0,"section"]},null),(t()(),a["ɵted"](-1,0,[" on how to configure and enable the monitoring functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"grafana")}),null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,u.a,[o.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Grafana Dashboard doesn't exist. Please refer to "])),(t()(),a["ɵeld"](3,0,null,0,1,"cd-doc",[["section","grafana"]],null,null,null,l.b,l.a)),a["ɵdid"](4,114688,null,0,d.a,[c.a,o.a],{section:[0,"section"]},null),(t()(),a["ɵted"](-1,0,[" on how to add dashboards to Grafana."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"grafana")}),null)}function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,f.v,[a.ElementRef,a.Renderer2,[2,f.A]],{ngValue:[0,"ngValue"]},null),a["ɵdid"](2,147456,null,0,f.F,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["ɵted"](3,null,[""," "]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,25,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,18,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,17,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,16,"div",[["class","form-inline timepicker"]],null,null,null,null,null)),(t()(),a["ɵeld"](4,0,null,null,1,"label",[["class","ml-1 my-1 col-form-label"],["for","timepicker"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Grafana Time Picker"])),(t()(),a["ɵeld"](6,0,null,null,8,"select",[["class","custom-select my-1 mx-3"],["id","timepicker"],["name","timepicker"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["ɵnov"](t,7).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,7).onTouched()&&r),"ngModelChange"===e&&(r=!1!==(i.time=n)&&r),"ngModelChange"===e&&(r=!1!==i.onTimepickerChange(n)&&r),r}),null,null)),a["ɵdid"](7,16384,null,0,f.A,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,f.p,(function(t){return[t]}),[f.A]),a["ɵdid"](9,671744,null,0,f.u,[[8,null],[8,null],[8,null],[6,f.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["ɵprd"](2048,null,f.q,null,[f.u]),a["ɵdid"](11,16384,null,0,f.r,[[4,f.q]],null,null),a["ɵdid"](12,4210688,null,0,h.a,[[2,g.a],p.a,a.ElementRef],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,_)),a["ɵdid"](14,278528,null,0,b.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](15,0,null,null,4,"button",[["class","btn btn-light my-1"],["title","Reset Settings"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.reset()&&a),a}),null,null)),(t()(),a["ɵeld"](16,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,b["ɵNgClassImpl"],b["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](18,278528,null,0,b.NgClass,[b["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](19,1),(t()(),a["ɵeld"](20,0,null,null,5,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["ɵeld"](21,0,null,null,4,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),a["ɵeld"](22,0,null,null,3,"div",[["class","grafana-container"]],null,null,null,null,null)),(t()(),a["ɵeld"](23,0,[["iframe",1]],null,2,"iframe",[["class","grafana"],["frameborder","0"],["id","iframe"],["scrolling","no"]],[[8,"src",5]],null,null,null,null)),a["ɵprd"](512,null,b["ɵNgClassImpl"],b["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](25,278528,null,0,b.NgClass,[b["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null)],(function(t,e){var n=e.component;t(e,9,0,"timepicker",n.time),t(e,14,0,n.grafanaTimes);var a=t(e,19,0,n.icons.undo);t(e,18,0,a),t(e,25,0,"grafana",n.panelStyle)}),(function(t,e){var n=e.component;t(e,6,0,a["ɵnov"](e,11).ngClassUntouched,a["ɵnov"](e,11).ngClassTouched,a["ɵnov"](e,11).ngClassPristine,a["ɵnov"](e,11).ngClassDirty,a["ɵnov"](e,11).ngClassValid,a["ɵnov"](e,11).ngClassInvalid,a["ɵnov"](e,11).ngClassPending),t(e,23,0,n.grafanaSrc)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](1,16384,null,0,b.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](3,16384,null,0,b.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,x)),a["ɵdid"](5,16384,null,0,b.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](7,16384,null,0,b.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.loading&&n.grafanaExist),t(e,3,0,!n.grafanaExist),t(e,5,0,!n.dashboardExist),t(e,7,0,n.grafanaExist&&n.dashboardExist)}),null)}},a40w:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("EEJc"),i=n("ajRT"),s=n("s7LF"),u=n("+gVj"),o=n("SVse"),l=n("gp3X"),d=n("sb0X"),c=n("KVJa"),f=n("Z21x"),h=n("sne2"),g=n("OLbh"),p=n("LqlI");n.d(e,"a",(function(){return _}));var b=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.description)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,22,"cd-modal",[],null,[[null,"hide"]],(function(t,e,n){var a=!0;return"hide"===e&&(a=!1!==t.component.cancel()&&a),a}),r.c,r.b)),a["ɵdid"](1,49152,null,0,i.a,[],null,{hide:"hide"}),(t()(),a["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](3,null,["",""])),(t()(),a["ɵeld"](4,0,null,1,18,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,17,"form",[["name","confirmationForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,7).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,10).onSubmit()&&r),r}),null,null)),a["ɵdid"](6,16384,null,0,s.G,[],null,null),a["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,s.d,null,[s.l]),a["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),a["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](11,0,null,null,4,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](13,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](15,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0,r=t.component;return"submitAction"===e&&(a=!1!==r.onSubmit(r.confirmationForm.value)&&a),a}),l.b,l.a)),a["ɵdid"](19,114688,null,0,d.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵted"](20,0,[" "," "])),(t()(),a["ɵeld"](21,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),a["ɵdid"](22,49152,null,0,f.a,[o.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,7,0,n.confirmationForm),t(e,10,0,n.confirmationForm),t(e,13,0,n.bodyContext,n.bodyTpl),t(e,15,0,n.description),t(e,19,0,n.confirmationForm),t(e,22,0,"Cancel",n.boundCancel)}),(function(t,e){var n=e.component;t(e,3,0,n.titleText),t(e,5,0,a["ɵnov"](e,9).ngClassUntouched,a["ɵnov"](e,9).ngClassTouched,a["ɵnov"](e,9).ngClassPristine,a["ɵnov"](e,9).ngClassDirty,a["ɵnov"](e,9).ngClassValid,a["ɵnov"](e,9).ngClassInvalid,a["ɵnov"](e,9).ngClassPending),t(e,20,0,n.buttonText)}))}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-confirmation-modal",[],null,null,null,v,b)),a["ɵdid"](1,245760,null,0,g.a,[p.a,p.b],null,null)],(function(t,e){t(e,1,0)}),null)}var _=a["ɵccf"]("cd-confirmation-modal",g.a,x,{},{},[])},a96k:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a=!0){this.selected=t,this.name=e,this.description=n,this.enabled=a}}},aGrj:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("eIep");function r(t,e){return e?Object(a.a)(()=>t,e):Object(a.a)(()=>t)}},aHM3:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("8Y7J"),n("s7LF");class a{static forRoot(){return{ngModule:a,providers:[]}}}},aHcz:function(t,e){t.exports=function(t){return t}},aIdf:function(t,e,n){!function(t){"use strict";function e(t,e,n){return t+" "+function(t,e){return 2===e?function(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}(t):t}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],t)}t.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:function(t){switch(function t(e){return e>9?t(e%10):e}(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(t){return t+(1===t?"añ":"vet")},week:{dow:1,doy:4}})}(n("wd/R"))},aIsn:function(t,e,n){!function(t){"use strict";t.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},aKKh:function(t,e,n){var a=n("ktBm");t.exports=function(t,e){var n=this.__data__,r=a(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}},aO6C:function(t,e,n){var a=n("4zBA"),r=n("0Dky"),i=n("Fib7"),s=n("9d/t"),u=n("0GbY"),o=n("iSVu"),l=function(){},d=[],c=u("Reflect","construct"),f=/^\s*(?:class|function)\b/,h=a(f.exec),g=!f.exec(l),p=function(t){if(!i(t))return!1;try{return c(l,d,t),!0}catch(e){return!1}},b=function(t){if(!i(t))return!1;switch(s(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return g||!!h(f,o(t))}catch(e){return!0}};b.sham=!0,t.exports=!c||r((function(){var t;return p(p.call)||!p(Object)||!p((function(){t=!0}))||t}))?b:p},aQkU:function(t,e,n){!function(t){"use strict";t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})}(n("wd/R"))},aT2Y:function(t,e,n){var a=n("o3PY"),r=n("UnOm"),i=n("mWP/"),s=n("bdl3"),u=n("aKKh");function o(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}o.prototype.clear=a,o.prototype.delete=r,o.prototype.get=i,o.prototype.has=s,o.prototype.set=u,t.exports=o},aTV8:function(t,e,n){var a=n("LxgN"),r=n("l9nr"),i=n("a1D2"),s=n("0GLT"),u=n("QUkU");t.exports=function(t,e,n){var o=s(t)?a:i;return n&&u(t,e,n)&&(e=void 0),o(t,r(e,3))}},aXbf:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LvDl"),r=n("8Y7J");let i=(()=>{class t{constructor(){}format_number(t,e,n,r=1){if(a.isString(t)&&(t=Number(t)),!a.isNumber(t))return"-";let i=t<1?0:Math.floor(Math.log(t)/Math.log(e));i=i>=n.length?n.length-1:i;let s=a.round(t/Math.pow(e,i),r).toString();return""===s?"-":(""!==n[i]&&(s=`${s} ${n[i]}`),s)}toBytes(t,e=null){const n=["b","k","m","g","t","p","e","z","y"],r=RegExp("^(\\d+(.\\d+)?) ?(["+n.join("")+"]?(b|ib|B/s)?)?$","i").exec(t);if(null===r)return e;let i=parseFloat(r[1]);return a.isString(r[3])&&(i*=Math.pow(1024,n.indexOf(r[3].toLowerCase()[0]))),Math.round(i)}toMilliseconds(t){const e=/^\s*(\d+)\s*(ms)?\s*$/i.exec(t);return null!==e?+e[1]:0}toIops(t){const e=/^\s*(\d+)\s*(IOPS)?\s*$/i.exec(t);return null!==e?+e[1]:0}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},aexS:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("2Vo4"),r=n("jKX/"),i=n("8Y7J");let s=(()=>{class t{constructor(){this.isPwdDisplayedSource=new a.a(!1),this.isPwdDisplayed$=this.isPwdDisplayedSource.asObservable()}set(t,e={},n=!1,a=null,i=!1){localStorage.setItem("dashboard_username",t),localStorage.setItem("dashboard_permissions",JSON.stringify(new r.a(e))),localStorage.setItem("user_pwd_expiration_date",String(a)),localStorage.setItem("user_pwd_update_required",String(i)),localStorage.setItem("sso",String(n))}remove(){localStorage.removeItem("dashboard_username"),localStorage.removeItem("user_pwd_expiration_data"),localStorage.removeItem("user_pwd_update_required")}isLoggedIn(){return null!==localStorage.getItem("dashboard_username")}getUsername(){return localStorage.getItem("dashboard_username")}getPermissions(){return JSON.parse(localStorage.getItem("dashboard_permissions")||JSON.stringify(new r.a({})))}getPwdExpirationDate(){return Number(localStorage.getItem("user_pwd_expiration_date"))}getPwdUpdateRequired(){return"true"===localStorage.getItem("user_pwd_update_required")}isSSO(){return"true"===localStorage.getItem("sso")}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},afO8:function(t,e,n){var a,r,i,s=n("f5p1"),u=n("2oRo"),o=n("4zBA"),l=n("hh1v"),d=n("kRJp"),c=n("Gi26"),f=n("xs3f"),h=n("93I0"),g=n("0BK2"),p=u.TypeError;if(s||f.state){var b=f.state||(f.state=new(0,u.WeakMap)),m=o(b.get),y=o(b.has),v=o(b.set);a=function(t,e){if(y(b,t))throw new p("Object already initialized");return e.facade=t,v(b,t,e),e},r=function(t){return m(b,t)||{}},i=function(t){return y(b,t)}}else{var x=h("state");g[x]=!0,a=function(t,e){if(c(t,x))throw new p("Object already initialized");return e.facade=t,d(t,x,e),e},r=function(t){return c(t,x)?t[x]:{}},i=function(t){return c(t,x)}}t.exports={set:a,get:r,has:i,enforce:function(t){return i(t)?r(t):a(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=r(e)).type!==t)throw p("Incompatible receiver, "+t+" required");return n}}}},ajRT:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J");class r{constructor(){this.hide=new a.EventEmitter}close(){this.modalRef&&this.modalRef.hide(),this.hide.emit()}}},atuK:function(t,e,n){"use strict";n.d(e,"a",(function(){return v})),n.d(e,"b",(function(){return E})),n.d(e,"d",(function(){return H})),n.d(e,"c",(function(){return rt}));var a=n("8Y7J"),r=n("ienR"),i=n("SVse"),s=(n("s7LF"),n("2uy1")),u=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,o)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,d)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,f)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function m(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,b)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-datepicker-container",[["aria-label","calendar"],["class","bottom"],["role","dialog"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),m,u)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.b,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var v=a["ɵccf"]("bs-datepicker-container",r.b,y,{},{},[]),x=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,_)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,w)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,S)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,R)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-datepicker-inline-container",[],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),A,x)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.e,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var E=a["ɵccf"]("bs-datepicker-inline-container",r.e,k,{},{},[]),L=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,D)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,M)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,j)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function B(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,P)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,q)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,F)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function z(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,B)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function Y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-daterangepicker-inline-container",[],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),z,L)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.k,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var H=a["ɵccf"]("bs-daterangepicker-inline-container",r.k,Y,{},{},[]),U=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function W(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,W)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function J(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,$)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function Z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function Q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,Z)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function X(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,K)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,J)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Q)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,X)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,tt)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function nt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,et)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function at(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-daterangepicker-container",[["aria-label","calendar"],["class","bottom"],["role","dialog"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),nt,U)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.i,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var rt=a["ɵccf"]("bs-daterangepicker-container",r.i,at,{},{},[]),it=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function st(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-current-date",[["title","hey there"]],null,null,null,dt,lt)),a["ɵdid"](1,49152,null,0,r.x,[],{title:[0,"title"]},null)],(function(t,e){t(e,1,0,"hey there")}),null)}function ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-timepicker",[],null,null,null,Et,kt)),a["ɵdid"](1,49152,null,0,r.D,[],null,null)],null,null)}function ot(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,st)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,0,null,null,1,"div",[["class","bs-datepicker-head"]],null,null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵeld"](4,0,null,null,1,"div",[["class","bs-datepicker-body"]],null,null,null,null,null)),a["ɵncd"](null,1),(t()(),a["ɵand"](16777216,null,null,1,null,ut)),a["ɵdid"](7,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,!1),t(e,7,0,!1)}),null)}var lt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","current-timedate"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.component.title)}))}var ct=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ft(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit.label)}))}function ht(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Custom Range"]))],null,null)}function gt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-predefined-btns"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ft)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ht)),a["ɵdid"](4,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.ranges),t(e,4,0,n.isCustomRangeShown)}),null)}var pt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function bt(t){return a["ɵvid"](2,[(t()(),a["ɵted"](0,null,["",""]))],null,(function(t,e){t(e,0,0,e.component.day.label)}))}var mt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function yt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"button",[["class","current"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.view("month")&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.component.calendar.monthTitle)}))}function vt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,2,"button",[["class","previous"],["type","button"]],[[8,"disabled",0],[4,"visibility",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.navTo(!0)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["‹"])),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵand"](16777216,null,null,1,null,yt)),a["ɵdid"](5,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵeld"](7,0,null,null,2,"button",[["class","current"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.view("year")&&a),a}),null,null)),(t()(),a["ɵeld"](8,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](9,null,["",""])),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵeld"](11,0,null,null,2,"button",[["class","next"],["type","button"]],[[8,"disabled",0],[4,"visibility",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.navTo(!1)&&a),a}),null,null)),(t()(),a["ɵeld"](12,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["›"]))],(function(t,e){t(e,5,0,e.component.calendar.monthTitle)}),(function(t,e){var n=e.component;t(e,0,0,n.calendar.disableLeftArrow,n.calendar.hideLeftArrow?"hidden":"visible"),t(e,9,0,n.calendar.yearTitle),t(e,11,0,n.calendar.disableRightArrow,n.calendar.hideRightArrow?"hidden":"visible")}))}var xt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function _t(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"th",[],null,null,null,null,null))],null,null)}function Tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"th",[["aria-label","weekday"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[""," "]))],null,(function(t,e){t(e,1,0,e.component.calendar.weekdays[e.context.index])}))}function wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["class","week"]],[[2,"active-week",null]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectWeek(t.parent.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.weekHoverHandler(t.parent.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.weekHoverHandler(t.parent.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){var n=e.component;t(e,0,0,n.isWeekHovered),t(e,2,0,n.calendar.weekNumbers[e.parent.context.index])}))}function Ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"td",[["role","gridcell"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"span",[["bsDatepickerDayDecorator",""]],[[2,"disabled",null],[2,"is-highlighted",null],[2,"is-other-month",null],[2,"is-active-other-month",null],[2,"in-range",null],[2,"select-start",null],[2,"select-end",null],[2,"selected",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectDay(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverDay(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverDay(t.context.$implicit,!1)&&a),a}),bt,pt)),a["ɵdid"](2,114688,null,0,r.z,[r.a,a.ElementRef,a.Renderer2],{day:[0,"day"]},null),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,1,0,a["ɵnov"](e,2).day.isDisabled,a["ɵnov"](e,2).day.isHovered,a["ɵnov"](e,2).day.isOtherMonth,a["ɵnov"](e,2).day.isOtherMonthHovered,a["ɵnov"](e,2).day.isInRange,a["ɵnov"](e,2).day.isSelectionStart,a["ɵnov"](e,2).day.isSelectionEnd,a["ɵnov"](e,2).day.isSelected),t(e,3,0,e.context.$implicit.label)}))}function St(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,wt)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Ot)),a["ɵdid"](4,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.options.showWeekNumbers),t(e,4,0,e.context.$implicit.days)}),null)}function It(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,13,"bs-calendar-layout",[],null,null,null,ot,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,9,"table",[["class","days weeks"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,5,"thead",[],null,null,null,null,null)),(t()(),a["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,_t)),a["ɵdid"](8,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Tt)),a["ɵdid"](10,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](11,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,St)),a["ɵdid"](13,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,8,0,n.options.showWeekNumbers),t(e,10,0,n.calendar.weekdays),t(e,13,0,n.calendar.weeks)}),null)}var Nt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Ct(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["role","gridcell"]],[[2,"disabled",null],[2,"is-highlighted",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.viewMonth(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverMonth(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverMonth(t.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],[[2,"selected",null]],null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,1,0,e.context.$implicit.isSelected),t(e,2,0,e.context.$implicit.label)}))}function Rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ct)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function At(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,ot,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,3,"table",[["class","months"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Rt)),a["ɵdid"](7,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,7,0,n.calendar.months)}),null)}var kt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"div",[["class","bs-timepicker-container"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"button",[["class","bs-decrease"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["-"])),(t()(),a["ɵeld"](4,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"button",[["class","bs-increase"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["+"])),(t()(),a["ɵeld"](7,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["ɵeld"](8,0,null,null,1,"button",[["class","bs-decrease"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["-"])),(t()(),a["ɵeld"](10,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["ɵeld"](11,0,null,null,1,"button",[["class","bs-increase"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["+"])),(t()(),a["ɵeld"](13,0,null,null,2,"button",[["class","switch-time-format"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](14,null,[""," "])),(t()(),a["ɵeld"](15,0,null,null,0,"img",[["alt",""],["src","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg=="]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,4,0,n.hours),t(e,10,0,n.minutes),t(e,14,0,n.ampm)}))}var Lt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["role","gridcell"]],[[2,"disabled",null],[2,"is-highlighted",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.viewYear(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverYear(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverYear(t.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],[[2,"selected",null]],null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,1,0,e.context.$implicit.isSelected),t(e,2,0,e.context.$implicit.label)}))}function Pt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Dt)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function Mt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,ot,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,3,"table",[["class","years"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Pt)),a["ɵdid"](7,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,7,0,n.calendar.years)}),null)}},b1Dy:function(t,e,n){!function(t){"use strict";t.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},b5OY:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("pxLl");class a{constructor(t,e){this.performanceCounterService=t,this.i18n=e,this.columns=[],this.counters=[]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Description"),prop:"description",flexGrow:1},{name:this.i18n("Value"),prop:"value",cellTemplate:this.valueTpl,flexGrow:1}]}getCounters(t){this.performanceCounterService.get(this.serviceType,this.serviceId).subscribe(t=>{this.counters=t},e=>{404===e.status?(e.preventDefault(),this.counters=null):t.error()})}}},bHdf:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("5+tZ"),r=n("SpAZ");function i(t=Number.POSITIVE_INFINITY){return Object(a.a)(r.a,t)}},bN42:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="ja-JP">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>ナビゲーションの切り替え</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>ダッシュボード</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>クラスタ</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>ホスト</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>モニター</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>サービス</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSHマップ</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>マネージャモジュール</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>ログ</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>プール</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>ブロック</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>イメージ</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>ミラーリング</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>ファイルシステム</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>オブジェクトゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>デーモン</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>バケット</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>言語の選択</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>パネルデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana Time Picker</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>設定のリセット</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>戻る</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>データを読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>選択済み</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>検出済み</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>合計</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名前</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>説明</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>長い説明</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>デフォルト</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>デーモンのデフォルト</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>値</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>保存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSHマップビューア</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>ホスト名</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>はい。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>キャンセル</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>閉じる</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>ホストリスト</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>全体的なパフォーマンス</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>エントリが見つかりません</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>クラスタログ</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>監査ログ</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>設定を読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>設定を読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>マネージャモジュールの編集</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>入力された値は有効なUUIDではありません(有効なUUIDの例: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8)。</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>有効なIPアドレスを入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>数字を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>数字または小数を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>ステータス</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>クラスタID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmapが変更されました</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmapエポック</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>定数con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>定数mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>必須のcon</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>必須のmon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>定数内</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非定数内</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>追加</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>機能</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>クラスタ全体のOSDフラグ</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>送信</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>詳細...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD回復優先度</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>優先度</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>優先度値のカスタマイズ</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>値は0と1の間である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>再重みづけ</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSDリスト</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>値</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>編集</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>削除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>ヘルス</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>統計情報</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>クライアント</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任意のクライアントからアクセスできます</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>アドレス</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必須フィールド</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>1つ以上のカンマ区切り値を含んでいる必要があります</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>アクセスタイプ</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>スカッシュ</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>クライアントの追加</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 使用可能なクラスタがありません --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- クラスタを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>デーモンの追加</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>ストレージバックエンド</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 使用可能なデータプールがありません --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- ストレージバックエンドを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>オブジェクトゲートウェイユーザ</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 使用可能なユーザがありません --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- オブジェクトゲートウェイユーザを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFSユーザID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 使用可能なクライアントがありません --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephxクライアントを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS名</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>セキュリティラベル</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>セキュリティラベルの有効化</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFSパス</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>パスは「/」で始まる必要があり、その後ろに1つの単語を配置できます</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>新しいディレクトリが作成されます</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>パス</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>パスは単一の「/」または1つの単語である必要があります</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>新しいバケットが作成されます</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFSプロトコル</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFSタグ</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>クライアントはサブディレクトリをマウントできません(たとえば、[タグ] = fooの場合は、クライアントはfoo/bazをマウントできません)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>異なる[タグ]オプションを使用することで、同じパスを複数回エクスポートできます。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>疑似</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>異なる[疑似]オプションを使用することで、同じパスを複数回エクスポートできます。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 使用可能なアクセスタイプがありません --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- アクセスタイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 使用可能なスカッシュがありません --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 実行されるユーザIDスカッシュ操作の種類を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>トランスポートプロトコル</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Cephにようこそ!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>ユーザ名は必須です</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>パスワードは必須です</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>ログイン</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>このユーザはCephに存在しません。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>禁止</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>検索していた内容を表示することは許可されていません。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD設定</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>ローカル設定値を削除します。親設定値が継承されて代わりに使用されます。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小値は0です</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>プールリスト</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名前は英数字、ダッシュ、および下線のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>選択されたイレイジャコードプロファイル名はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>プラグイン</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>データチャンク(k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>2以上である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>コーディングチャンク(m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>1以上である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>耐久性推定子(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>地域(l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush障害ドメイン</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush地域</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>技法</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>パケットサイズ</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crushルート</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crushデバイスクラス</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任意</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>ディレクトリ</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名前...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>選択されたCephプール名はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>プールタイプ</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- プールタイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>配置グループ</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>少なくとも1つの配置グループが必要です。</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>ご使用のクラスタはこれだけ多数の配置グループを処理できません。必要な配置グループの数を再計算してください。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>計算のヘルプ</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>複製されたサイズ</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>フラグ</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>ECの上書き</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>アプリケーション</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>イレイジャコードプロファイル</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 使用可能なイレイジャコードプロファイルがありません --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- イレイジャコードプロファイルを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crushルールセット</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crushルールを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crushルール</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crushステップ</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>圧縮</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>モード</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>アルゴリズム</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 使用可能なイレイジャ圧縮アルゴリズムがありません --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>最小blobサイズ</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>例: 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>値は0より大きい必要があります</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>最大blobサイズ</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>例: 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>値は最小blobサイズより大きい必要があります</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>率</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>圧縮率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>値は0.0~1.0の間である必要があります</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>例: 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>詳細</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>パフォーマンスの詳細</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>キャッシュ層の詳細</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>イメージをごみ箱に移動する</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保護の失効日</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>保護されていません</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日付の形式が正しくありません。「YYYY-MM-DD HH:mm:ss」という形式を使用してください。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保護はすでに失効しています。将来の日付を選択するか、日付を空白のままにしてください。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>イメージの移動</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>概要</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>ターゲット</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>検出認証</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>ユーザ名は8~64文字の長さである必要があり、\n英字、「.」、「@」、「-」、「_」、または「:」のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>パスワード</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>相互ユーザ</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>相互パスワード</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>取得可能な情報:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>使用可能なiSCSIターゲットがありません</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>プール</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>データプール</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>作成済み</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>サイズ</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>オブジェクトサイズ</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>プロビジョニング済み</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>プロビジョニング済み合計</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>ストライピング単位</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>ストライピング数</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>親</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>ブロック名のプレフィックス</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>順番</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>スナップショット</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>イメージ</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>この設定はグローバル値よりも優先されます</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>グローバル</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>これはグローバル値です。このイメージについて、このオプションの値は設定されていません。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>「/」と「@」は使用できません。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 使用可能なrbdプールがありません --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- プールを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>専用のデータプールを使用してください</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>データプール</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>RBDのオブジェクトデータを保管するための専用プール</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>サイズを大きくする必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>詳細</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>ストライピング</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>ストライプ単位</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- ストライプ単位を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>ストライプ数が定義されているため、このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>ストライプ単位がオブジェクトサイズより大きいです。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>ストライプ数</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>ストライプ単位が定義されているため、このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>ストライプ数は0より大きい必要があります。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>ロールバックしようとしています</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>ごみ箱を空にする</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>すべて</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>プール:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>プール名...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>イメージの復元</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>復元するには</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>イメージの新しい名前を入力してクリックします</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新しい名前</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>失効日</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保護の終了日</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSIトポロジ</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常はこれらのパラメータをデフォルト値から変更する必要はありません。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>バックストア</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>確認</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>詳細設定</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>ターゲットIQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQNのパターンが正しくありません。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>詳細情報</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>このターゲットの詳細設定は変更されています。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>ポータル</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>ポータルの追加</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>このイメージの設定は変更されています。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>イメージの追加</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL認証</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>イニシエータ</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>イニシエータ</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>クライアントIQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>イニシエータIQNは一意である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>ユーザ名は8~64文字の長さである必要があり、\n英字、「.」、「@」、「-」、「_」、または「:」のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>イニシエータはいずれかのグループに属します。イメージはそのグループ内で設定されます。</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>アイテムが追加されていません。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>イニシエータの追加</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>グループ</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>グループ</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>グループの追加</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>ごみ箱</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>同期中</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>準備完了</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>プールのミラーモードの編集</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>ミラーを無効にする前に、ピアクラスタを削除する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>クラスタ名</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>このクラスタ名は無効です。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>このCephX IDは無効です。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>モニターアドレス</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>カンマ区切りアドレス...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>この警告アドレスは無効です。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephXキー</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64エンコード化済みキー...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephXキーはbase64でエンコードされている必要があります。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>パフォーマンスカウンタを使用できません</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>デーモンリスト</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>パフォーマンスカウンタ</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>バケットデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Id</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>この値は無効です。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>選択された名前はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>所有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- ユーザを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>有効化済み</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>インデックスタイプ</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>配置ルール</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>マーカー</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>最大マーカー</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>バージョン</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>マスタバージョン</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>変更時間</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>ゾーングループ</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>バケットクォータ</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大サイズ</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>無制限</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>ユーザ名</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- ユーザ名を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>キーの自動生成</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>アクセスキー</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>秘密キー</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>氏名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>電子メールアドレス</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>中断済み</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>システム</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大バケット数</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>サブユーザ</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>機能</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>ユーザクォータ</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>表示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>キー</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>タイプ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- タイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>許可</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 許可を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>サブユーザ</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>選択されたサブユーザIDはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>読み取り、書き込み</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>フル</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>スウィフトキー</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>秘密の自動生成</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>ユーザデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>ユーザデータを読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>選択されたユーザIDはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>これは有効な電子メールアドレスではありません。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>選択された電子メールアドレスはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>最大バケット数</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>無効化済み</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>カスタム</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3キー</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>サブユーザがいません。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>キーがありません。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>スウィフト</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>機能がありません。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>無制限のサイズ</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>最大サイズ</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>無制限のオブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>0以上の値を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>説明...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>許可</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>役割</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>パスワードの確認入力</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>確認入力されたパスワードがパスワードと一致しません。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>電子メール</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>無効な電子メールです。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>自身のユーザから「user read / update」という許可を削除しようとしています。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>続行した場合は、どのユーザの役割も追加および削除できなくなります。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>続行してもよろしいですか?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>ヘルプ</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>ドキュメント</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>バージョン情報</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>ダッシュボード設定</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>ユーザ管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>ログイン済みユーザ</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>サインアウト</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>属性(OSDマップ)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>メタデータを使用できません</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>メタデータ</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>パフォーマンスカウンタ</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>書き込み回数</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>読み取り回数</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>ヒストグラム</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>現行値</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>最小</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>最大</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>ソース</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>レベル</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>実行時に更新できます(編集可能)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>タグ</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>列挙値</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>関連項目</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>クラスタのステータス</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>マネージャデーモン</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>オブジェクトゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>メタデータサーバ</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSIゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>クライアントのIOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>クライアントのスループット</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>クライアントの読み取り/書き込み</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>回復スループット</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>スクラブ</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>パフォーマンス</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>未フォーマット時の容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSDあたりの配置グループ数</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>配置グループのステータス</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>ランク</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>現在</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>検出認証を更新しました</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>使用可能なポータルはありません。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>使用可能なイメージはありません。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>使用可能なイメージはありません。ターゲットにイメージを追加したことを確認してください。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>使用可能なイニシエータはありません。ターゲットにイニシエータを追加したことを確認してください。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>ターゲット</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>状態</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>読み取りバイト数</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>書き込みバイト数</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>読み取り操作数</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>書き込み操作数</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>次の日付以降のA/O</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>インスタンス</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>進捗</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>モードの編集</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>ピアの追加</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>ピアの編集</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>ピアの削除</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>リーダー</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>#ローカル</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>#リモート</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>ミラーピア</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>キー</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>ディープフラット化</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>階層化</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>排他ロック</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>オブジェクトマップ(排他ロックが必要)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>ジャーナリング(排他ロックが必要)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>未保護</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBDスナップショットのロールバック</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>ロールバック</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBDスナップショット</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>削除日時</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>タイプ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>状態</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>バージョン</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>ホスト</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>ルート</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>スタンバイデーモン</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>ランク</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>デーモン</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>アクティビティ</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>dエントリ</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>iノード</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用量</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>更新済み</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>この値は実行時に更新できます。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>デーモン/クライアントはこの値をモニター設定データベースから取得しません。\nこのオプションを「ceph config set ...」を通じて設定することは禁止されています。\nこのオプションは、ceph.confまたはコマンドラインを通じて\n設定する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>オプションはデーモン始動時のみに有効になります。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>オプションはクラスタの作成のみに適用されます。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>オプションはデーモンの作成のみに適用されます。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>サービス</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>現行値</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>編集可能</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>有効化</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>無効化</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>再接続していますので、しばらくお待ちください...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>パブリックアドレス</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>セッションの開始</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>インなし</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>以前にアウトとしてマークされたOSDは、それらの始動時にインとしてマークされることはありません</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>アウトなし</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSDは、設定済みの間隔が経過した後に自動的にアウトとしてマークされます</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>アップなし</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSDを始動することは許可されていません</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>ダウンなし</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>OSDの障害レポートは無視されているため、OSDはモニターによってダウンとしてマークされません</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>一時停止</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>読み取りと書き込みを一時停止します</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>スクラブなし</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>スクラブ処理は無効化されています</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>ディープスクラブなし</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>ディープスクラブ処理は無効化されています</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>バックフィルなし</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>配置グループのバックフィルは中断されています</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>回復なし</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>配置グループの回復は中断されています</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>ビット単位のソート</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>ビット単位のソートを使用する</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>消去されたスナップディレクトリ</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDによってスナップセットが変換されました</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>回復の削除</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>ピアリングの代わりに回復時に削除が実行されました</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>配置グループログのハード制限</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>配置グループログ長のハード制限を適用します</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>OSDフラグを更新しました</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>アウト</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>イン</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ダウン</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>マーク</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>喪失したOSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>喪失としてマーク済み</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>消去</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>消去済み</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>破棄</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>破棄済み</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>削除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>配置グループ数</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>読み取りバイト数</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>書き込みバイト数</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>読み取り操作数</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>書き込み操作数</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大バックフィル数</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>回復最大アクティブ</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>回復最大単一始動</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>回復スリープ</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>ジョブ</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>重大度</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>始動済み</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>使用済み</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>使用可能</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>クリーン</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>動作中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警告</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>不明</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>アップ</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>ファイルシステムがありません</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>アクティブ</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>スタンバイ</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>アクティブデーモン</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>定数</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganeshaサービスが設定されていません。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>トランスポート</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFSユーザ</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFSファイルシステム</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(グローバル設定から継承)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>グローバル設定から継承されました</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 実行されるユーザIDスカッシュ操作を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>使用可能なデーモンがありません。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>キャッシュモード</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>退去までの最小経過時間</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>消去までの最小経過時間</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>ターゲットの最大バイト数</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>ターゲットの最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>アプリケーションは追加されていません</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>アプリケーション数の上限に達しました</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>1つのプールは最大で4つのアプリケーション定義しか保有できません。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>使用可能な文字「_a-zA-Z0-9」</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>最大長は128文字です</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>アプリケーションのフィルタリングまたは追加</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>アプリケーションの追加</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>イレイジャコードプロファイル</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>レプリカサイズ</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>最後の変更</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>イレイジャコード化済みプロファイル</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crushルールセット</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>バケット</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>バケット数</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>ユーザ数</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>範囲</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>読み取り</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>作成</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>システム役割</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>ユーザの更新</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>続行</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>このユーザの役割が変更されたため、このユーザは自動的にログアウトされました。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>各オブジェクトは複数のデータチャンクパートに分割されており、それぞれのパートは異なるOSDに保管されています。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>各オブジェクトのコーディングチャンクを計算して、これらのチャンクを別々のOSDに保管します。\nコーディングチャンクの数は、データを失うことなくダウン状態になることができるOSDの数でもあります。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>jerasureプラグインは最も汎用的で柔軟性の高いプラグインです。\nこのプラグインは、Cephイレイジャコード化済みプール用のデフォルトでもあります。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>さらに柔軟性の高い技法はreed_sol_vanです。kとmを\n設定するだけで十分です。\ncauchy_good技法はより高速となり得ますが、パケットサイズを慎重に選択する必要があります。\nreed_sol_r6_op、liberation、blaum_roth、liber8tionはすべて、\nm=2を使用した設定のみが可能という意味でRAID6と同等です。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>エンコードはバイトサイズのパケット群に対して同時に実行されます。\n適切なパケットサイズを選択することは困難です。\njerasureのドキュメントにはこのトピックに関する詳細な情報が記載されています。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>jerasureプラグインを使用すると、イレイジャコード化済みオブジェクトが複数のOSDに保管されている場合は、\n1つのOSDの喪失から回復するには、他のすべてのOSDからの読み取りが必要になります。\nたとえば、k=8およびm=4を使用してjerasureが設定されている場合は、1つのOSDが失われた場合、\n修復のためには他の11個のOSDからの読み取りが必要になります。\n\nlrcイレイジャコードプラグインは、これより少ないOSDを使用した回復を可能にするために、\nローカルパリティチャンクを作成します。たとえば、lrcがk=8、m=4、およびl=4を使用して設定されている場合は、\nlrcは、4つのOSDごとに1つの追加パリティチャンクを作成します。1つのOSDが失われた場合は、\n11個の代わりに4つのOSDのみを使用してそのOSDを回復できます。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>コーディングチャンクとデータチャンクをサイズ地域の複数セットにグループ分けします。\nたとえば、k=4およびm=2の場合に、[地域]=3の場合は、3つのチャンクからなるグループが2つ作成されます。\n各セットは、別のセットからチャンクを読み取ることなく回復できます。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>1によって定義されたチャンクの各セットが保管されるCrushバケットのタイプ。\nたとえば、このバケットタイプがラックに設定されている場合は、1のチャンクの各グループは異なるラックに配置されます。\nこのバケットタイプを使用して、「ラックの選択」ステップなどのCRUSHルールステップが作成されます。\nこのバケットタイプが設定されていない場合は、このようなグループ分けは行われません。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isaプラグインはISAライブラリをカプセル化します。このプラグインはIntelプロセッサ上のみで動作します。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISAプラグインは2つのリードソロモン形式で提供されています。reed_sol_vanが設定されている場合は、Vandermondeであり、cauchyが設定されている場合は、Cauchyです。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shecプラグインは複数のSHECライブラリをカプセル化します。\nこのプラグインを使用すると、cephはリードソロモンコードより効率的にデータを回復できます。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>それぞれが各データチャンクを各自の計算範囲内に含んでいるパリティチャンクの数。\nこの数は、耐久性推定子として使用されます。\nたとえば、c=2の場合は、データを失うことなく2つのOSDがダウン状態になることができます。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSHルールの最初のステップ(「デフォルトの使用」ステップなど)用に\n使用されるCrushバケットの名前。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>同じ障害ドメインの単一バケット内に2つのチャンクが配置されることを防止します。\nたとえば、障害ドメインがホストである場合は、2つのチャンクが同じホストに保管されることはありません。\nこれを使用して、「リーフホストの選択」ステップなどのCRUSHルールステップが作成されます。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>CRUSHマップ内でCrushデバイスクラス名を使用して、配置先を特定クラス(ssdやhddなど)のデバイスのみに制限します。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>イレイジャコードプラグインの読み込み元となるディレクトリ名を設定します。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>すべての操作を許可します</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>サーバに変更を加えない操作のみを許可します</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>読み取り/書き込み操作を許可しませんが、他のすべての操作を許可します</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>読み取り/書き込み操作、およびファイル属性やディレクトリ内容を変更するどの操作も許可しません</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>アクセスを一切許可しません</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 優先度を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>情報</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>直前の5分間</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>直前の15分間</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>直前の30分間</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>直前の1時間(デフォルト)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>直前の3時間</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>直前の6時間</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>直前の12時間</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>直前の24時間</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨日</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>本日</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>本日の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>一昨日</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>過去2日間</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>先週の同じ曜日</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>前週</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>今週</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>今週の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>過去7日間</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>前月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>今月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>今月の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>過去30日間</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>過去90日間</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>過去6カ月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>過去1年間</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>前年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>過去2年間</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>過去5年間</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>アイテムが選択されていません。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>アイテムを選択解除して再選択してください</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>選択の上限に達しました</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>タグのフィルタリング</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>バッジの追加</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>使用可能なアイテムはありません。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>コピー</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>ディープスクラブ</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>破棄</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>フラット化</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>ダウンとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>インとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>喪失としてマーク</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>アウトとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保護</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>名前の変更</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>復元</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>ごみ箱に移動する</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>保護解除</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>削除済み</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>複製済み</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>コピー済み</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>フラット化済み</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>消去済み</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>復元済み</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>ロールバック済み</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>はい</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>いいえ</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>サービス品質</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS制限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>希望する秒あたり入出力バイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS制限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>希望する秒あたり入出力操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>読み取りBPS制限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>希望する秒あたり読み取りバイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>読み取りIOPS制限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>希望する秒あたり読み取り操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>書き込みBPS制限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>希望する秒あたり書き込みバイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>書き込みIOPS制限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>希望する秒あたり書き込み操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPSバースト</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>希望する入出力バイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>希望する入出力操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>読み取りBPSバースト</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>希望する読み取りバイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>読み取りIOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>希望する読み取り操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>書き込みBPSバースト</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>希望する書き込みバイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>書き込みIOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>希望する書き込み操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>実行中</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>実行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>実行済み</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>不明なタスク</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>作成中</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>作成</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>更新中</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>削除中</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>複製中</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>コピー中</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>コピー</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>フラット化中</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>フラット化</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>ロールバック中</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>ロールバック</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>移動中</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>移動</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>移動済み</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>イメージが見つかりませんでした。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>復元中</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>復元</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>消去中</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>消去</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>すべてのプール</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>ピアを含んでいるためミラーリングを無効化できません。</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},bOMt:function(t,e,n){!function(t){"use strict";t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},bOdf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("5+tZ");function r(t,e){return Object(a.a)(t,e,1)}},bQrF:function(t,e,n){var a=n("ZPW6"),r=n("JEWA"),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var s=t[e];i.call(t,e)&&r(s,n)&&(void 0!==n||e in t)||a(t,e,n)}},bWFh:function(t,e,n){"use strict";var a=n("I+eb"),r=n("2oRo"),i=n("4zBA"),s=n("lMq5"),u=n("busE"),o=n("8YOa"),l=n("ImZN"),d=n("GarU"),c=n("Fib7"),f=n("hh1v"),h=n("0Dky"),g=n("HH4o"),p=n("1E5z"),b=n("cVYH");t.exports=function(t,e,n){var m=-1!==t.indexOf("Map"),y=-1!==t.indexOf("Weak"),v=m?"set":"add",x=r[t],_=x&&x.prototype,T=x,w={},O=function(t){var e=i(_[t]);u(_,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(y&&!f(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return y&&!f(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!f(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(s(t,!c(x)||!(y||_.forEach&&!h((function(){(new x).entries().next()})))))T=n.getConstructor(e,t,m,v),o.enable();else if(s(t,!0)){var S=new T,I=S[v](y?{}:-0,1)!=S,N=h((function(){S.has(1)})),C=g((function(t){new x(t)})),R=!y&&h((function(){for(var t=new x,e=5;e--;)t[v](e,e);return!t.has(-0)}));C||((T=e((function(t,e){d(t,_);var n=b(new x,t,T);return null!=e&&l(e,n[v],{that:n,AS_ENTRIES:m}),n}))).prototype=_,_.constructor=T),(N||R)&&(O("delete"),O("has"),m&&O("get")),(R||I)&&O(v),y&&_.clear&&delete _.clear}return w[t]=T,a({global:!0,forced:T!=x},w),p(T,t),y||n.setStrong(T,t,m),T}},bWnS:function(t,e,n){var a=n("qN6l");t.exports=function(){this.__data__=a?a(null):{},this.size=0}},bX23:function(t,e){t.exports=function(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}},bXm7:function(t,e,n){!function(t){"use strict";var e={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};t.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},bYM6:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("wd/R"))},bdl3:function(t,e,n){var a=n("ktBm");t.exports=function(t){return a(this.__data__,t)>-1}},bpih:function(t,e,n){!function(t){"use strict";t.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},busE:function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=n("Gi26"),s=n("kRJp"),u=n("zk60"),o=n("iSVu"),l=n("afO8"),d=n("Xnc8").CONFIGURABLE,c=l.get,f=l.enforce,h=String(String).split("String");(t.exports=function(t,e,n,o){var l,c=!!o&&!!o.unsafe,g=!!o&&!!o.enumerable,p=!!o&&!!o.noTargetGet,b=o&&void 0!==o.name?o.name:e;r(n)&&("Symbol("===String(b).slice(0,7)&&(b="["+String(b).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!i(n,"name")||d&&n.name!==b)&&s(n,"name",b),(l=f(n)).source||(l.source=h.join("string"==typeof b?b:""))),t!==a?(c?!p&&t[e]&&(g=!0):delete t[e],g?t[e]=n:s(t,e,n)):g?t[e]=n:u(e,n)})(Function.prototype,"toString",(function(){return r(this)&&c(this).source||o(this)}))},bxKX:function(t,e,n){!function(t){"use strict";t.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},bxSN:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("8Y7J"),i=n("moLw");e.ClickOutsideModule=function(){return a([r.NgModule({declarations:[i.ClickOutsideDirective],exports:[i.ClickOutsideDirective]})],(function(){}))}()},c2HN:function(t,e,n){"use strict";function a(t){return!!t&&"function"!=typeof t.subscribe&&"function"==typeof t.then}n.d(e,"a",(function(){return a}))},cRL0:function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},cRix:function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");t.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},cUpR:function(t,e,n){"use strict";n.d(e,"p",(function(){return _})),n.d(e,"a",(function(){return dt})),n.d(e,"h",(function(){return lt})),n.d(e,"c",(function(){return T})),n.d(e,"d",(function(){return w})),n.d(e,"e",(function(){return W})),n.d(e,"f",(function(){return K})),n.d(e,"g",(function(){return $})),n.d(e,"b",(function(){return tt})),n.d(e,"q",(function(){return s})),n.d(e,"j",(function(){return k})),n.d(e,"i",(function(){return H})),n.d(e,"m",(function(){return J})),n.d(e,"n",(function(){return X})),n.d(e,"l",(function(){return I})),n.d(e,"o",(function(){return S})),n.d(e,"k",(function(){return et}));var a=n("SVse"),r=n("8Y7J");let i=null;function s(){return i}const u={class:"className",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},o={"\b":"Backspace","\t":"Tab","\7f":"Delete","\e":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},l={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\90":"NumLock"},d=(()=>{if(r["ɵglobal"].Node)return r["ɵglobal"].Node.prototype.contains||function(t){return!!(16&this.compareDocumentPosition(t))}})();class c extends class extends class{constructor(){this.resourceLoaderType=null}get attrToPropMap(){return this._attrToPropMap}set attrToPropMap(t){this._attrToPropMap=t}}{constructor(){super(),this._animationPrefix=null,this._transitionEnd=null;try{const t=this.createElement("div",document);if(null!=this.getStyle(t,"animationName"))this._animationPrefix="";else{const e=["Webkit","Moz","O","ms"];for(let n=0;n<e.length;n++)if(null!=this.getStyle(t,e[n]+"AnimationName")){this._animationPrefix="-"+e[n].toLowerCase()+"-";break}}const e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};Object.keys(e).forEach(n=>{null!=this.getStyle(t,n)&&(this._transitionEnd=e[n])})}catch(t){this._animationPrefix=null,this._transitionEnd=null}}getDistributedNodes(t){return t.getDistributedNodes()}resolveAndSetHref(t,e,n){t.href=null==n?e:e+"/../"+n}supportsDOMEvents(){return!0}supportsNativeShadowDOM(){return"function"==typeof document.body.createShadowRoot}getAnimationPrefix(){return this._animationPrefix?this._animationPrefix:""}getTransitionEnd(){return this._transitionEnd?this._transitionEnd:""}supportsAnimation(){return null!=this._animationPrefix&&null!=this._transitionEnd}}{parse(t){throw new Error("parse not implemented")}static makeCurrent(){var t;t=new c,i||(i=t)}hasProperty(t,e){return e in t}setProperty(t,e,n){t[e]=n}getProperty(t,e){return t[e]}invoke(t,e,n){t[e](...n)}logError(t){window.console&&(console.error?console.error(t):console.log(t))}log(t){window.console&&window.console.log&&window.console.log(t)}logGroup(t){window.console&&window.console.group&&window.console.group(t)}logGroupEnd(){window.console&&window.console.groupEnd&&window.console.groupEnd()}get attrToPropMap(){return u}contains(t,e){return d.call(t,e)}querySelector(t,e){return t.querySelector(e)}querySelectorAll(t,e){return t.querySelectorAll(e)}on(t,e,n){t.addEventListener(e,n,!1)}onAndCancel(t,e,n){return t.addEventListener(e,n,!1),()=>{t.removeEventListener(e,n,!1)}}dispatchEvent(t,e){t.dispatchEvent(e)}createMouseEvent(t){const e=this.getDefaultDocument().createEvent("MouseEvent");return e.initEvent(t,!0,!0),e}createEvent(t){const e=this.getDefaultDocument().createEvent("Event");return e.initEvent(t,!0,!0),e}preventDefault(t){t.preventDefault(),t.returnValue=!1}isPrevented(t){return t.defaultPrevented||null!=t.returnValue&&!t.returnValue}getInnerHTML(t){return t.innerHTML}getTemplateContent(t){return"content"in t&&this.isTemplateElement(t)?t.content:null}getOuterHTML(t){return t.outerHTML}nodeName(t){return t.nodeName}nodeValue(t){return t.nodeValue}type(t){return t.type}content(t){return this.hasProperty(t,"content")?t.content:t}firstChild(t){return t.firstChild}nextSibling(t){return t.nextSibling}parentElement(t){return t.parentNode}childNodes(t){return t.childNodes}childNodesAsList(t){const e=t.childNodes,n=new Array(e.length);for(let a=0;a<e.length;a++)n[a]=e[a];return n}clearNodes(t){for(;t.firstChild;)t.removeChild(t.firstChild)}appendChild(t,e){t.appendChild(e)}removeChild(t,e){t.removeChild(e)}replaceChild(t,e,n){t.replaceChild(e,n)}remove(t){return t.parentNode&&t.parentNode.removeChild(t),t}insertBefore(t,e,n){t.insertBefore(n,e)}insertAllBefore(t,e,n){n.forEach(n=>t.insertBefore(n,e))}insertAfter(t,e,n){t.insertBefore(n,e.nextSibling)}setInnerHTML(t,e){t.innerHTML=e}getText(t){return t.textContent}setText(t,e){t.textContent=e}getValue(t){return t.value}setValue(t,e){t.value=e}getChecked(t){return t.checked}setChecked(t,e){t.checked=e}createComment(t){return this.getDefaultDocument().createComment(t)}createTemplate(t){const e=this.getDefaultDocument().createElement("template");return e.innerHTML=t,e}createElement(t,e){return(e=e||this.getDefaultDocument()).createElement(t)}createElementNS(t,e,n){return(n=n||this.getDefaultDocument()).createElementNS(t,e)}createTextNode(t,e){return(e=e||this.getDefaultDocument()).createTextNode(t)}createScriptTag(t,e,n){const a=(n=n||this.getDefaultDocument()).createElement("SCRIPT");return a.setAttribute(t,e),a}createStyleElement(t,e){const n=(e=e||this.getDefaultDocument()).createElement("style");return this.appendChild(n,this.createTextNode(t,e)),n}createShadowRoot(t){return t.createShadowRoot()}getShadowRoot(t){return t.shadowRoot}getHost(t){return t.host}clone(t){return t.cloneNode(!0)}getElementsByClassName(t,e){return t.getElementsByClassName(e)}getElementsByTagName(t,e){return t.getElementsByTagName(e)}classList(t){return Array.prototype.slice.call(t.classList,0)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}hasClass(t,e){return t.classList.contains(e)}setStyle(t,e,n){t.style[e]=n}removeStyle(t,e){t.style[e]=""}getStyle(t,e){return t.style[e]}hasStyle(t,e,n){const a=this.getStyle(t,e)||"";return n?a==n:a.length>0}tagName(t){return t.tagName}attributeMap(t){const e=new Map,n=t.attributes;for(let a=0;a<n.length;a++){const t=n.item(a);e.set(t.name,t.value)}return e}hasAttribute(t,e){return t.hasAttribute(e)}hasAttributeNS(t,e,n){return t.hasAttributeNS(e,n)}getAttribute(t,e){return t.getAttribute(e)}getAttributeNS(t,e,n){return t.getAttributeNS(e,n)}setAttribute(t,e,n){t.setAttribute(e,n)}setAttributeNS(t,e,n,a){t.setAttributeNS(e,n,a)}removeAttribute(t,e){t.removeAttribute(e)}removeAttributeNS(t,e,n){t.removeAttributeNS(e,n)}templateAwareRoot(t){return this.isTemplateElement(t)?this.content(t):t}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}getBoundingClientRect(t){try{return t.getBoundingClientRect()}catch(e){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}}getTitle(t){return t.title}setTitle(t,e){t.title=e||""}elementMatches(t,e){return!!this.isElementNode(t)&&(t.matches&&t.matches(e)||t.msMatchesSelector&&t.msMatchesSelector(e)||t.webkitMatchesSelector&&t.webkitMatchesSelector(e))}isTemplateElement(t){return this.isElementNode(t)&&"TEMPLATE"===t.nodeName}isTextNode(t){return t.nodeType===Node.TEXT_NODE}isCommentNode(t){return t.nodeType===Node.COMMENT_NODE}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}hasShadowRoot(t){return null!=t.shadowRoot&&t instanceof HTMLElement}isShadowRoot(t){return t instanceof DocumentFragment}importIntoDoc(t){return document.importNode(this.templateAwareRoot(t),!0)}adoptNode(t){return document.adoptNode(t)}getHref(t){return t.getAttribute("href")}getEventKey(t){let e=t.key;if(null==e){if(e=t.keyIdentifier,null==e)return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&l.hasOwnProperty(e)&&(e=l[e]))}return o[e]||e}getGlobalEventTarget(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null}getHistory(){return window.history}getLocation(){return window.location}getBaseHref(t){const e=h||(h=document.querySelector("base"),h)?h.getAttribute("href"):null;return null==e?null:(n=e,f||(f=document.createElement("a")),f.setAttribute("href",n),"/"===f.pathname.charAt(0)?f.pathname:"/"+f.pathname);var n}resetBaseElement(){h=null}getUserAgent(){return window.navigator.userAgent}setData(t,e,n){this.setAttribute(t,"data-"+e,n)}getData(t,e){return this.getAttribute(t,"data-"+e)}getComputedStyle(t){return getComputedStyle(t)}supportsWebAnimation(){return"function"==typeof Element.prototype.animate}performanceNow(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()}supportsCookies(){return!0}getCookie(t){return Object(a["ɵparseCookieValue"])(document.cookie,t)}setCookie(t,e){document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(e)}}let f,h=null;function g(){return!!window.history.pushState}const p=new r.InjectionToken("TRANSITION_ID"),b=[{provide:r.APP_INITIALIZER,useFactory:function(t,e,n){return()=>{n.get(r.ApplicationInitStatus).donePromise.then(()=>{const n=s();Array.prototype.slice.apply(n.querySelectorAll(e,"style[ng-transition]")).filter(e=>n.getAttribute(e,"ng-transition")===t).forEach(t=>n.remove(t))})}},deps:[p,a.DOCUMENT,r.Injector],multi:!0}];class m{static init(){Object(r.setTestabilityGetter)(new m)}addToWindow(t){r["ɵglobal"].getAngularTestability=(e,n=!0)=>{const a=t.findTestabilityInTree(e,n);if(null==a)throw new Error("Could not find testability for element.");return a},r["ɵglobal"].getAllAngularTestabilities=()=>t.getAllTestabilities(),r["ɵglobal"].getAllAngularRootElements=()=>t.getAllRootElements(),r["ɵglobal"].frameworkStabilizers||(r["ɵglobal"].frameworkStabilizers=[]),r["ɵglobal"].frameworkStabilizers.push(t=>{const e=r["ɵglobal"].getAllAngularTestabilities();let n=e.length,a=!1;const i=function(e){a=a||e,n--,0==n&&t(a)};e.forEach((function(t){t.whenStable(i)}))})}findTestabilityInTree(t,e,n){if(null==e)return null;const a=t.getTestability(e);return null!=a?a:n?s().isShadowRoot(e)?this.findTestabilityInTree(t,s().getHost(e),!0):this.findTestabilityInTree(t,s().parentElement(e),!0):null}}function y(t,e){"undefined"!=typeof COMPILED&&COMPILED||((r["ɵglobal"].ng=r["ɵglobal"].ng||{})[t]=e)}const v=(()=>({ApplicationRef:r.ApplicationRef,NgZone:r.NgZone}))();function x(t){return Object(r.getDebugNode)(t)}function _(t){return y("probe",x),y("coreTokens",Object.assign({},v,(t||[]).reduce((t,e)=>(t[e.name]=e.token,t),{}))),()=>x}const T=new r.InjectionToken("EventManagerPlugins");class w{constructor(t,e){this._zone=e,this._eventNameToPlugin=new Map,t.forEach(t=>t.manager=this),this._plugins=t.slice().reverse()}addEventListener(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)}addGlobalEventListener(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)}getZone(){return this._zone}_findPluginFor(t){const e=this._eventNameToPlugin.get(t);if(e)return e;const n=this._plugins;for(let a=0;a<n.length;a++){const e=n[a];if(e.supports(t))return this._eventNameToPlugin.set(t,e),e}throw new Error("No event manager plugin found for event "+t)}}class O{constructor(t){this._doc=t}addGlobalEventListener(t,e,n){const a=s().getGlobalEventTarget(this._doc,t);if(!a)throw new Error(`Unsupported event target ${a} for event ${e}`);return this.addEventListener(a,e,n)}}class S{constructor(){this._stylesSet=new Set}addStyles(t){const e=new Set;t.forEach(t=>{this._stylesSet.has(t)||(this._stylesSet.add(t),e.add(t))}),this.onStylesAdded(e)}onStylesAdded(t){}getAllStyles(){return Array.from(this._stylesSet)}}class I extends S{constructor(t){super(),this._doc=t,this._hostNodes=new Set,this._styleNodes=new Set,this._hostNodes.add(t.head)}_addStylesToHost(t,e){t.forEach(t=>{const n=this._doc.createElement("style");n.textContent=t,this._styleNodes.add(e.appendChild(n))})}addHost(t){this._addStylesToHost(this._stylesSet,t),this._hostNodes.add(t)}removeHost(t){this._hostNodes.delete(t)}onStylesAdded(t){this._hostNodes.forEach(e=>this._addStylesToHost(t,e))}ngOnDestroy(){this._styleNodes.forEach(t=>s().remove(t))}}const N={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},C=/%COMP%/g;function R(t,e,n){for(let a=0;a<e.length;a++){let r=e[a];Array.isArray(r)?R(t,r,n):(r=r.replace(C,t),n.push(r))}return n}function A(t){return e=>{!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}class k{constructor(t,e,n){this.eventManager=t,this.sharedStylesHost=e,this.appId=n,this.rendererByCompId=new Map,this.defaultRenderer=new E(t)}createRenderer(t,e){if(!t||!e)return this.defaultRenderer;switch(e.encapsulation){case r.ViewEncapsulation.Emulated:{let n=this.rendererByCompId.get(e.id);return n||(n=new P(this.eventManager,this.sharedStylesHost,e,this.appId),this.rendererByCompId.set(e.id,n)),n.applyToHost(t),n}case r.ViewEncapsulation.Native:case r.ViewEncapsulation.ShadowDom:return new M(this.eventManager,this.sharedStylesHost,t,e);default:if(!this.rendererByCompId.has(e.id)){const t=R(e.id,e.styles,[]);this.sharedStylesHost.addStyles(t),this.rendererByCompId.set(e.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}class E{constructor(t){this.eventManager=t,this.data=Object.create(null)}destroy(){}createElement(t,e){return e?document.createElementNS(N[e]||e,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,e){t.appendChild(e)}insertBefore(t,e,n){t&&t.insertBefore(e,n)}removeChild(t,e){t&&t.removeChild(e)}selectRootElement(t,e){let n="string"==typeof t?document.querySelector(t):t;if(!n)throw new Error(`The selector "${t}" did not match any elements`);return e||(n.textContent=""),n}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,e,n,a){if(a){e=a+":"+e;const r=N[a];r?t.setAttributeNS(r,e,n):t.setAttribute(e,n)}else t.setAttribute(e,n)}removeAttribute(t,e,n){if(n){const a=N[n];a?t.removeAttributeNS(a,e):t.removeAttribute(`${n}:${e}`)}else t.removeAttribute(e)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}setStyle(t,e,n,a){a&r.RendererStyleFlags2.DashCase?t.style.setProperty(e,n,a&r.RendererStyleFlags2.Important?"important":""):t.style[e]=n}removeStyle(t,e,n){n&r.RendererStyleFlags2.DashCase?t.style.removeProperty(e):t.style[e]=""}setProperty(t,e,n){D(e,"property"),t[e]=n}setValue(t,e){t.nodeValue=e}listen(t,e,n){return D(e,"listener"),"string"==typeof t?this.eventManager.addGlobalEventListener(t,e,A(n)):this.eventManager.addEventListener(t,e,A(n))}}const L=(()=>"@".charCodeAt(0))();function D(t,e){if(t.charCodeAt(0)===L)throw new Error(`Found the synthetic ${e} ${t}. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.`)}class P extends E{constructor(t,e,n,a){super(t),this.component=n;const r=R(a+"-"+n.id,n.styles,[]);e.addStyles(r),this.contentAttr="_ngcontent-%COMP%".replace(C,a+"-"+n.id),this.hostAttr=function(t){return"_nghost-%COMP%".replace(C,t)}(a+"-"+n.id)}applyToHost(t){super.setAttribute(t,this.hostAttr,"")}createElement(t,e){const n=super.createElement(t,e);return super.setAttribute(n,this.contentAttr,""),n}}class M extends E{constructor(t,e,n,a){super(t),this.sharedStylesHost=e,this.hostEl=n,this.component=a,this.shadowRoot=a.encapsulation===r.ViewEncapsulation.ShadowDom?n.attachShadow({mode:"open"}):n.createShadowRoot(),this.sharedStylesHost.addHost(this.shadowRoot);const i=R(a.id,a.styles,[]);for(let r=0;r<i.length;r++){const t=document.createElement("style");t.textContent=i[r],this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}appendChild(t,e){return super.appendChild(this.nodeOrShadowRoot(t),e)}insertBefore(t,e,n){return super.insertBefore(this.nodeOrShadowRoot(t),e,n)}removeChild(t,e){return super.removeChild(this.nodeOrShadowRoot(t),e)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}}const q=(()=>"undefined"!=typeof Zone&&Zone.__symbol__||function(t){return"__zone_symbol__"+t})(),j=q("addEventListener"),F=q("removeEventListener"),V={},G="__zone_symbol__propagationStopped",B=(()=>{const t="undefined"!=typeof Zone&&Zone[q("BLACK_LISTED_EVENTS")];if(t){const e={};return t.forEach(t=>{e[t]=t}),e}})(),z=function(t){return!!B&&B.hasOwnProperty(t)},Y=function(t){const e=V[t.type];if(!e)return;const n=this[e];if(!n)return;const a=[t];if(1===n.length){const t=n[0];return t.zone!==Zone.current?t.zone.run(t.handler,this,a):t.handler.apply(this,a)}{const e=n.slice();for(let n=0;n<e.length&&!0!==t[G];n++){const t=e[n];t.zone!==Zone.current?t.zone.run(t.handler,this,a):t.handler.apply(this,a)}}};class H extends O{constructor(t,e,n){super(t),this.ngZone=e,n&&Object(a.isPlatformServer)(n)||this.patchEvent()}patchEvent(){if("undefined"==typeof Event||!Event||!Event.prototype)return;if(Event.prototype.__zone_symbol__stopImmediatePropagation)return;const t=Event.prototype.__zone_symbol__stopImmediatePropagation=Event.prototype.stopImmediatePropagation;Event.prototype.stopImmediatePropagation=function(){this&&(this[G]=!0),t&&t.apply(this,arguments)}}supports(t){return!0}addEventListener(t,e,n){let a=n;if(!t[j]||r.NgZone.isInAngularZone()&&!z(e))t.addEventListener(e,a,!1);else{let n=V[e];n||(n=V[e]=q("ANGULAR"+e+"FALSE"));let r=t[n];const i=r&&r.length>0;r||(r=t[n]=[]);const s=z(e)?Zone.root:Zone.current;if(0===r.length)r.push({zone:s,handler:a});else{let t=!1;for(let e=0;e<r.length;e++)if(r[e].handler===a){t=!0;break}t||r.push({zone:s,handler:a})}i||t[j](e,Y,!1)}return()=>this.removeEventListener(t,e,a)}removeEventListener(t,e,n){let a=t[F];if(!a)return t.removeEventListener.apply(t,[e,n,!1]);let r=V[e],i=r&&t[r];if(!i)return t.removeEventListener.apply(t,[e,n,!1]);let s=!1;for(let u=0;u<i.length;u++)if(i[u].handler===n){s=!0,i.splice(u,1);break}s?0===i.length&&a.apply(t,[e,Y,!1]):t.removeEventListener.apply(t,[e,n,!1])}}const U={pan:!0,panstart:!0,panmove:!0,panend:!0,pancancel:!0,panleft:!0,panright:!0,panup:!0,pandown:!0,pinch:!0,pinchstart:!0,pinchmove:!0,pinchend:!0,pinchcancel:!0,pinchin:!0,pinchout:!0,press:!0,pressup:!0,rotate:!0,rotatestart:!0,rotatemove:!0,rotateend:!0,rotatecancel:!0,swipe:!0,swipeleft:!0,swiperight:!0,swipeup:!0,swipedown:!0,tap:!0},W=new r.InjectionToken("HammerGestureConfig"),K=new r.InjectionToken("HammerLoader");class ${constructor(){this.events=[],this.overrides={}}buildHammer(t){const e=new Hammer(t,this.options);e.get("pinch").set({enable:!0}),e.get("rotate").set({enable:!0});for(const n in this.overrides)e.get(n).set(this.overrides[n]);return e}}class J extends O{constructor(t,e,n,a){super(t),this._config=e,this.console=n,this.loader=a}supports(t){return!(!U.hasOwnProperty(t.toLowerCase())&&!this.isCustomEvent(t)||!window.Hammer&&!this.loader&&(this.console.warn(`The "${t}" event cannot be bound because Hammer.JS is not loaded and no custom loader has been specified.`),1))}addEventListener(t,e,n){const a=this.manager.getZone();if(e=e.toLowerCase(),!window.Hammer&&this.loader){let a=!1,r=()=>{a=!0};return this.loader().then(()=>{if(!window.Hammer)return this.console.warn("The custom HAMMER_LOADER completed, but Hammer.JS is not present."),void(r=()=>{});a||(r=this.addEventListener(t,e,n))}).catch(()=>{this.console.warn(`The "${e}" event cannot be bound because the custom Hammer.JS loader failed.`),r=()=>{}}),()=>{r()}}return a.runOutsideAngular(()=>{const r=this._config.buildHammer(t),i=function(t){a.runGuarded((function(){n(t)}))};return r.on(e,i),()=>{r.off(e,i),"function"==typeof r.destroy&&r.destroy()}})}isCustomEvent(t){return this._config.events.indexOf(t)>-1}}const Z=["alt","control","meta","shift"],Q={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};class X extends O{constructor(t){super(t)}supports(t){return null!=X.parseEventName(t)}addEventListener(t,e,n){const a=X.parseEventName(e),r=X.eventCallback(a.fullKey,n,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>s().onAndCancel(t,a.domEventName,r))}static parseEventName(t){const e=t.toLowerCase().split("."),n=e.shift();if(0===e.length||"keydown"!==n&&"keyup"!==n)return null;const a=X._normalizeKey(e.pop());let r="";if(Z.forEach(t=>{const n=e.indexOf(t);n>-1&&(e.splice(n,1),r+=t+".")}),r+=a,0!=e.length||0===a.length)return null;const i={};return i.domEventName=n,i.fullKey=r,i}static getEventFullKey(t){let e="",n=s().getEventKey(t);return n=n.toLowerCase()," "===n?n="space":"."===n&&(n="dot"),Z.forEach(a=>{a!=n&&(0,Q[a])(t)&&(e+=a+".")}),e+=n,e}static eventCallback(t,e,n){return a=>{X.getEventFullKey(a)===t&&n.runGuarded(()=>e(a))}}static _normalizeKey(t){switch(t){case"esc":return"escape";default:return t}}}class tt{}class et extends tt{constructor(t){super(),this._doc=t}sanitize(t,e){if(null==e)return null;switch(t){case r.SecurityContext.NONE:return e;case r.SecurityContext.HTML:return e instanceof at?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"HTML"),Object(r["ɵ_sanitizeHtml"])(this._doc,String(e)));case r.SecurityContext.STYLE:return e instanceof rt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"Style"),Object(r["ɵ_sanitizeStyle"])(e));case r.SecurityContext.SCRIPT:if(e instanceof it)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"Script"),new Error("unsafe value used in a script context");case r.SecurityContext.URL:return e instanceof ut||e instanceof st?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"URL"),Object(r["ɵ_sanitizeUrl"])(String(e)));case r.SecurityContext.RESOURCE_URL:if(e instanceof ut)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"ResourceURL"),new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)");default:throw new Error(`Unexpected SecurityContext ${t} (see http://g.co/ng/security#xss)`)}}checkNotSafeValue(t,e){if(t instanceof nt)throw new Error(`Required a safe ${e}, got a ${t.getTypeName()} (see http://g.co/ng/security#xss)`)}bypassSecurityTrustHtml(t){return new at(t)}bypassSecurityTrustStyle(t){return new rt(t)}bypassSecurityTrustScript(t){return new it(t)}bypassSecurityTrustUrl(t){return new st(t)}bypassSecurityTrustResourceUrl(t){return new ut(t)}}class nt{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return"SafeValue must use [property]=binding: "+this.changingThisBreaksApplicationSecurity+" (see http://g.co/ng/security#xss)"}}class at extends nt{getTypeName(){return"HTML"}}class rt extends nt{getTypeName(){return"Style"}}class it extends nt{getTypeName(){return"Script"}}class st extends nt{getTypeName(){return"URL"}}class ut extends nt{getTypeName(){return"ResourceURL"}}const ot=[{provide:r.PLATFORM_ID,useValue:a["ɵPLATFORM_BROWSER_ID"]},{provide:r.PLATFORM_INITIALIZER,useValue:function(){c.makeCurrent(),m.init()},multi:!0},{provide:a.PlatformLocation,useClass:class extends a.PlatformLocation{constructor(t){super(),this._doc=t,this._init()}_init(){this.location=s().getLocation(),this._history=s().getHistory()}getBaseHrefFromDOM(){return s().getBaseHref(this._doc)}onPopState(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)}onHashChange(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)}get href(){return this.location.href}get protocol(){return this.location.protocol}get hostname(){return this.location.hostname}get port(){return this.location.port}get pathname(){return this.location.pathname}get search(){return this.location.search}get hash(){return this.location.hash}set pathname(t){this.location.pathname=t}pushState(t,e,n){g()?this._history.pushState(t,e,n):this.location.hash=n}replaceState(t,e,n){g()?this._history.replaceState(t,e,n):this.location.hash=n}forward(){this._history.forward()}back(){this._history.back()}getState(){return this._history.state}},deps:[a.DOCUMENT]},{provide:a.DOCUMENT,useFactory:function(){return document},deps:[]}],lt=Object(r.createPlatformFactory)(r.platformCore,"browser",ot);class dt{constructor(t){if(t)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(t){return{ngModule:dt,providers:[{provide:r.APP_ID,useValue:t.appId},{provide:p,useExisting:r.APP_ID},b]}}}"undefined"!=typeof window&&window},cVYH:function(t,e,n){var a=n("Fib7"),r=n("hh1v"),i=n("0rvr");t.exports=function(t,e,n){var s,u;return i&&a(s=e.constructor)&&s!==n&&r(u=s.prototype)&&u!==n.prototype&&i(t,u),t}},cjaf:function(t,e){t.exports=function(t){return this.__data__.get(t)}},cp0P:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("HDdC"),r=n("DH7j"),i=n("lJxs"),s=n("XoHu"),u=n("Cfvw");function o(...t){if(1===t.length){const e=t[0];if(Object(r.a)(e))return l(e,null);if(Object(s.a)(e)&&Object.getPrototypeOf(e)===Object.prototype){const t=Object.keys(e);return l(t.map(t=>e[t]),t)}}if("function"==typeof t[t.length-1]){const e=t.pop();return l(t=1===t.length&&Object(r.a)(t[0])?t[0]:t,null).pipe(Object(i.a)(t=>e(...t)))}return l(t,null)}function l(t,e){return new a.a(n=>{const a=t.length;if(0===a)return void n.complete();const r=new Array(a);let i=0,s=0;for(let o=0;o<a;o++){const l=Object(u.a)(t[o]);let d=!1;n.add(l.subscribe({next:t=>{d||(d=!0,s++),r[o]=t},error:t=>n.error(t),complete:()=>{i++,i!==a&&d||(s===a&&n.next(e?e.reduce((t,e,n)=>(t[e]=r[n],t),{}):r),n.complete())}}))}})}},crnd:function(t,e){function n(t){return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}))}n.keys=function(){return[]},n.resolve=n,t.exports=n,n.id="crnd"},czMo:function(t,e,n){!function(t){"use strict";t.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},"d+Og":function(t,e,n){"use strict";var a=n("LvDl");let r=(()=>{class t{constructor(t){if(this.type=t,!this.isValidType())throw new Error("Wrong placement group category type");this.setTypeStates()}isValidType(){return t.VALID_CATEGORIES.includes(this.type)}setTypeStates(){switch(this.type){case t.CATEGORY_CLEAN:this.states=["active","clean"];break;case t.CATEGORY_WORKING:this.states=["activating","backfill_wait","backfilling","creating","deep","degraded","forced_backfill","forced_recovery","peering","peered","recovering","recovery_wait","repair","scrubbing","snaptrim","snaptrim_wait"];break;case t.CATEGORY_WARNING:this.states=["backfill_toofull","backfill_unfound","down","incomplete","inconsistent","recovery_toofull","recovery_unfound","remapped","snaptrim_error","stale","undersized"];break;default:this.states=[]}}}return t.CATEGORY_CLEAN="clean",t.CATEGORY_WORKING="working",t.CATEGORY_WARNING="warning",t.CATEGORY_UNKNOWN="unknown",t.VALID_CATEGORIES=[t.CATEGORY_CLEAN,t.CATEGORY_WORKING,t.CATEGORY_WARNING,t.CATEGORY_UNKNOWN],t})();var i=n("8Y7J"),s=n("kJI8");n.d(e,"a",(function(){return u}));let u=(()=>{class t{constructor(){this.categories=this.createCategories()}getAllTypes(){return r.VALID_CATEGORIES}getTypeByStates(t){const e=this.getPgStatesFromText(t);if(0===e.length)return r.CATEGORY_UNKNOWN;const n=a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(t=>a.intersection(this.categories[t].states,e).length));if(n[r.CATEGORY_WARNING]>0)return r.CATEGORY_WARNING;const i=n[r.CATEGORY_WORKING];return e.length>n[r.CATEGORY_CLEAN]+i?r.CATEGORY_UNKNOWN:i?r.CATEGORY_WORKING:r.CATEGORY_CLEAN}createCategories(){return a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(t=>new r(t)))}getPgStatesFromText(t){const e=t.replace(/[^a-z]+/g," ").trim().split(" ");return a.uniq(e)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:s.a}),t})()},dApe:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("2vnA"),i=n("MP8s"),s=n("X+05"),u=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},o=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},l=function(){function t(t){var e=this;this.treeModel=t,this.yBlocks=0,this.x=0,this.viewportHeight=null,this.viewport=null,t.virtualScroll=this,this._dispose=[Object(r.b)((function(){return e.fixScroll()}))]}return Object.defineProperty(t.prototype,"y",{get:function(){return 150*this.yBlocks},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalHeight",{get:function(){return this.treeModel.virtualRoot?this.treeModel.virtualRoot.height:0},enumerable:!0,configurable:!0}),t.prototype.fireEvent=function(t){this.treeModel.fireEvent(t)},t.prototype.init=function(){var t=this,e=this.recalcPositions.bind(this);e(),this._dispose=this._dispose.concat([Object(r.e)((function(){return t.treeModel.roots}),e),Object(r.e)((function(){return t.treeModel.expandedNodeIds}),e),Object(r.e)((function(){return t.treeModel.hiddenNodeIds}),e)]),this.treeModel.subscribe(s.a.loadNodeChildren,e)},t.prototype.isEnabled=function(){return this.treeModel.options.useVirtualScroll},t.prototype._setYBlocks=function(t){this.yBlocks=t},t.prototype.recalcPositions=function(){this.treeModel.virtualRoot.height=this._getPositionAfter(this.treeModel.getVisibleRoots(),0)},t.prototype._getPositionAfter=function(t,e){var n=this,a=e;return t.forEach((function(t){t.position=a,a=n._getPositionAfterNode(t,a)})),a},t.prototype._getPositionAfterNode=function(t,e){var n=t.getSelfHeight()+e;return t.children&&t.isExpanded&&(n=this._getPositionAfter(t.visibleChildren,n)),t.height=n-e,n},t.prototype.clear=function(){this._dispose.forEach((function(t){return t()}))},t.prototype.setViewport=function(t){Object.assign(this,{viewport:t,x:t.scrollLeft,yBlocks:Math.round(t.scrollTop/150),viewportHeight:t.getBoundingClientRect?t.getBoundingClientRect().height:0})},t.prototype.scrollIntoView=function(t,e,n){if(void 0===n&&(n=!0),t.options.scrollContainer){var a=t.options.scrollContainer,r=a.getBoundingClientRect().height,i=a.getBoundingClientRect().top,s=this.viewport.getBoundingClientRect().top+t.position-i;(e||s<a.scrollTop||s+t.getSelfHeight()>a.scrollTop+r)&&(a.scrollTop=n?s-r/2:s)}else(e||t.position<this.y||t.position+t.getSelfHeight()>this.y+this.viewportHeight)&&this.viewport&&(this.viewport.scrollTop=n?t.position-this.viewportHeight/2:t.position,this._setYBlocks(Math.floor(this.viewport.scrollTop/150)))},t.prototype.getViewportNodes=function(t){var e=this;if(!t)return[];var n=t.filter((function(t){return!t.isHidden}));if(!this.isEnabled())return n;if(!this.viewportHeight||!n.length)return[];var a=d(n,(function(t){return t.position+500>e.y||t.position+t.height>e.y})),r=d(n,(function(t){return t.position-500>e.y+e.viewportHeight}),a),i=[];if(r-a>(1e3+this.viewportHeight)/n[0].treeModel.options.options.nodeHeight)return[];for(var s=a;s<=r;s++)i.push(n[s]);return i},t.prototype.fixScroll=function(){var t=Math.max(0,this.totalHeight-this.viewportHeight);this.y<0&&this._setYBlocks(0),this.y>t&&this._setYBlocks(t/150)},u([r.d,o("design:type",Object)],t.prototype,"yBlocks",void 0),u([r.d,o("design:type",Object)],t.prototype,"x",void 0),u([r.d,o("design:type",Object)],t.prototype,"viewportHeight",void 0),u([r.c,o("design:type",Object),o("design:paramtypes",[])],t.prototype,"y",null),u([r.c,o("design:type",Object),o("design:paramtypes",[])],t.prototype,"totalHeight",null),u([r.a,o("design:type",Function),o("design:paramtypes",[Object]),o("design:returntype",void 0)],t.prototype,"_setYBlocks",null),u([r.a,o("design:type",Function),o("design:paramtypes",[]),o("design:returntype",void 0)],t.prototype,"recalcPositions",null),u([r.a,o("design:type",Function),o("design:paramtypes",[Object]),o("design:returntype",void 0)],t.prototype,"setViewport",null),u([r.a,o("design:type",Function),o("design:paramtypes",[Object,Object,Object]),o("design:returntype",void 0)],t.prototype,"scrollIntoView",null),u([Object(a.Injectable)(),o("design:paramtypes",[i.a])],t)}();function d(t,e,n){void 0===n&&(n=0);for(var a=n,r=t.length-1;a!==r;){var i=Math.floor((a+r)/2);e(t[i])?r=i:a=a===i?r:i}return a}},"dBg+":function(t,e){e.f=Object.getOwnPropertySymbols},dCge:function(t,e){t.exports=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}},dEH0:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return t+" ms"}}},dNwA:function(t,e,n){!function(t){"use strict";t.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("wd/R"))},dX5L:function(t,e,n){var a=n("KFwg")(n("Wa4q"),"DataView");t.exports=a},dgut:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("NEZu");n("Fgil");class r{constructor(t){this.dimlessBinaryPipe=t,this.style={height:"30px",width:"100px"},this.colors=[{backgroundColor:"rgba(40,140,234,0.2)",borderColor:"rgba(40,140,234,1)",pointBackgroundColor:"rgba(40,140,234,1)",pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:"rgba(40,140,234,0.8)"}],this.options={animation:{duration:0},responsive:!0,maintainAspectRatio:!1,legend:{display:!1},elements:{line:{borderWidth:1}},tooltips:{enabled:!1,mode:"index",intersect:!1,custom:void 0,callbacks:{label:t=>this.isBinary?this.dimlessBinaryPipe.transform(t.yLabel):t.yLabel,title:()=>""}},scales:{yAxes:[{display:!1}],xAxes:[{display:!1}]}},this.datasets=[{data:[]}],this.labels=[]}ngOnInit(){const t=new a.a(this.chartCanvasRef,this.chartTooltipRef,(t,e)=>e+t.caretX+"px",t=>t.caretY-t.height-t.yPadding-5+"px");t.customColors={backgroundColor:this.colors[0].pointBackgroundColor,borderColor:this.colors[0].pointBorderColor},this.options.tooltips.custom=e=>{t.customTooltips(e)}}ngOnChanges(t){this.datasets[0].data=t.data.currentValue,this.labels=[...Array(t.data.currentValue.length)]}}},"e+ae":function(t,e,n){!function(t){"use strict";var e="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function a(t){return t>1&&t<5}function r(t,e,n,r){var i=t+" ";switch(n){case"s":return e||r?"pár sekúnd":"pár sekundami";case"ss":return e||r?i+(a(t)?"sekundy":"sekúnd"):i+"sekundami";case"m":return e?"minúta":r?"minútu":"minútou";case"mm":return e||r?i+(a(t)?"minúty":"minút"):i+"minútami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?i+(a(t)?"hodiny":"hodín"):i+"hodinami";case"d":return e||r?"deň":"dňom";case"dd":return e||r?i+(a(t)?"dni":"dní"):i+"dňami";case"M":return e||r?"mesiac":"mesiacom";case"MM":return e||r?i+(a(t)?"mesiace":"mesiacov"):i+"mesiacmi";case"y":return e||r?"rok":"rokom";case"yy":return e||r?i+(a(t)?"roky":"rokov"):i+"rokmi"}}t.defineLocale("sk",{months:e,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},e0ae:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=function(t,e,n){this.name=t,this.version=e,this.os=n,this.type="browser"},r=function(t){this.version=t,this.type="node",this.name="node",this.os=process.platform},i=function(t,e,n,a){this.name=t,this.version=e,this.os=n,this.bot=a,this.type="bot-device"},s=function(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null},u=/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,o=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["vivaldi",/Vivaldi\/([0-9\.]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/Edg\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],l=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function d(t){return t?c(t):"undefined"!=typeof navigator?c(navigator.userAgent):"undefined"!=typeof process&&process.version?new r(process.version.slice(1)):null}function c(t){var e=function(t){return""!==t&&o.reduce((function(e,n){var a=n[0];if(e)return e;var r=n[1].exec(t);return!!r&&[a,r]}),!1)}(t);if(!e)return null;var n=e[0],r=e[1];if("searchbot"===n)return new s;var d=r[1]&&r[1].split(/[._]/).slice(0,3);d?d.length<3&&(d=function(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var a=Array(t),r=0;for(e=0;e<n;e++)for(var i=arguments[e],s=0,u=i.length;s<u;s++,r++)a[r]=i[s];return a}(d,function(t){for(var e=[],n=0;n<t;n++)e.push("0");return e}(3-d.length))):d=[];var c=d.join("."),f=function(t){for(var e=0,n=l.length;e<n;e++){var a=l[e],r=a[0];if(a[1].exec(t))return r}return null}(t),h=u.exec(t);return h&&h[1]?new i(n,c,f,h[1]):new a(n,d.join("."),f)}},eAIQ:function(t,e,n){var a=n("77kF"),r=n("MBcj");t.exports=function(t){return a(t,r(t))}},"eDl+":function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},eFrH:function(t,e,n){var a=n("zBJ4")("span").classList,r=a&&a.constructor&&a.constructor.prototype;t.exports=r===Object.prototype?void 0:r},eH2F:function(t,e){t.exports=function(t){return function(e,n,a){for(var r=-1,i=Object(e),s=a(e),u=s.length;u--;){var o=s[t?u:++r];if(!1===n(i[o],o,i))break}return e}}},eIep:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("l7GE"),r=n("51Dv"),i=n("ZUHj"),s=n("lJxs"),u=n("Cfvw");function o(t,e){return"function"==typeof e?n=>n.pipe(o((n,a)=>Object(u.a)(t(n,a)).pipe(Object(s.a)((t,r)=>e(n,t,a,r))))):e=>e.lift(new l(t))}class l{constructor(t){this.project=t}call(t,e){return e.subscribe(new d(t,this.project))}}class d extends a.a{constructor(t,e){super(t),this.project=e,this.index=0}_next(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this._innerSub(e,t,n)}_innerSub(t,e,n){const a=this.innerSubscription;a&&a.unsubscribe();const s=new r.a(this,e,n),u=this.destination;u.add(s),this.innerSubscription=Object(i.a)(this,t,void 0,void 0,s),this.innerSubscription!==s&&u.add(this.innerSubscription)}_complete(){const{innerSubscription:t}=this;t&&!t.closed||super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=null}notifyComplete(t){this.destination.remove(t),this.innerSubscription=null,this.isStopped&&super._complete()}notifyNext(t,e,n,a,r){this.destination.next(e)}}},eNG0:function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},eQba:function(t,e,n){var a=n("2zzJ");t.exports=function(t,e,n){var r=null==t?void 0:a(t,e);return void 0===r?n:r}},eTJe:function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("cp0P"),s=(n("SgmB"),n("ZDA6"),n("sne2"),n("mtw6")),u=n("QFaf"),o=n("1Ni5"),l=(n("9nlD"),function(t){return t.editing="editing",t}({}));class d{}n.d(e,"a",(function(){return c}));class c{constructor(t,e,n,a,r,i,s){this.route=t,this.router=e,this.roleService=n,this.scopeService=a,this.notificationService=r,this.i18n=i,this.actionLabels=s,this.scopes=[],this.scopes_permissions=[],this.roleFormMode=l,this.resource=this.i18n("role"),this.createForm(),this.listenToChanges()}createForm(){this.roleForm=new u.a({name:new a.i("",{validators:[a.B.required],asyncValidators:[o.a.unique(this.roleService.exists,this.roleService)]}),description:new a.i(""),scopes_permissions:new a.i({})})}ngOnInit(){this.columns=[{prop:"scope",name:this.i18n("All"),flexGrow:2,cellTemplate:this.cellScopeCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"read",name:this.i18n("Read"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"create",name:this.i18n("Create"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"update",name:this.i18n("Update"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"delete",name:this.i18n("Delete"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl}],this.router.url.startsWith("/user-management/roles/edit")?(this.mode=this.roleFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.mode===this.roleFormMode.editing?this.initEdit():this.initCreate()}initCreate(){this.scopeService.list().subscribe(t=>{this.scopes=t,this.roleForm.get("scopes_permissions").setValue({})})}initEdit(){this.roleForm.get("name").disable(),this.route.params.subscribe(t=>{const e=[];e.push(this.scopeService.list()),e.push(this.roleService.get(t.name)),Object(i.a)(e).subscribe(t=>{this.scopes=t[0],["name","description","scopes_permissions"].forEach(e=>this.roleForm.get(e).setValue(t[1][e]))})})}listenToChanges(){this.roleForm.get("scopes_permissions").valueChanges.subscribe(t=>{const e=[];r.each(this.scopes,n=>{const a={read:!1,create:!1,update:!1,delete:!1};a.scope=n,n in t&&r.each(t[n],t=>{a[t]=!0}),e.push(a)}),this.scopes_permissions=e})}isRowChecked(t){const e=r.find(this.scopes_permissions,e=>e.scope===t);return!r.isUndefined(e)&&e.read&&e.create&&e.update&&e.delete}isHeaderChecked(t){let e=[t];return"scope"===t&&(e=["read","create","update","delete"]),e.every(t=>this.scopes_permissions.every(e=>e[t]))}onClickCellCheckbox(t,e,n=null){const a=r.cloneDeep(this.roleForm.getValue("scopes_permissions"));let i=[e];"scope"===e&&(i=["read","create","update","delete"]),t in a||(a[t]=[]),n&&n.target.checked||!r.isEqual(i.sort(),r.intersection(a[t],i).sort())?a[t]=r.union(a[t],i):(a[t]=r.difference(a[t],i),r.isEmpty(a[t])&&r.unset(a,t)),this.roleForm.get("scopes_permissions").setValue(a)}onClickHeaderCheckbox(t,e){const n=r.cloneDeep(this.roleForm.getValue("scopes_permissions"));let a=[t];"scope"===t&&(a=["read","create","update","delete"]),r.each(a,t=>{r.each(this.scopes,a=>{e.target.checked?n[a]=r.union(n[a],[t]):(n[a]=r.difference(n[a],[t]),r.isEmpty(n[a])&&r.unset(n,a))})}),this.roleForm.get("scopes_permissions").setValue(n)}getRequest(){const t=new d;return["name","description","scopes_permissions"].forEach(e=>t[e]=this.roleForm.get(e).value),t}createAction(){const t=this.getRequest();this.roleService.create(t).subscribe(()=>{this.notificationService.show(s.a.success,this.i18n("Created role '{{role_name}}'",{role_name:t.name})),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}editAction(){const t=this.getRequest();this.roleService.update(t).subscribe(()=>{this.notificationService.show(s.a.success,this.i18n("Updated role '{{role_name}}'",{role_name:t.name})),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}submit(){this.mode===this.roleFormMode.editing?this.editAction():this.createAction()}}},efK2:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e,n){return a.isString(t)?(n=a.defaultTo(n,""),a.truncate(t,{length:e,omission:n})):t}}},"ej+x":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("lOp/"),r=n("8Y7J"),i=n("IheW");let s=(()=>{class t{constructor(t,e){this.http=t,this.timerService=e,this.API_URL="api/feature_toggles",this.REFRESH_INTERVAL=3e4,this.featureToggleMap$=this.timerService.get(()=>this.http.get(this.API_URL),this.REFRESH_INTERVAL)}get(){return this.featureToggleMap$}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.c),r["ɵɵinject"](a.a))},token:t,providedIn:"root"}),t})()},emnf:function(t,e,n){var a=n("YGUN"),r=n("w/8D"),i=n("aHcz");t.exports=r?function(t,e){return r(t,"toString",{configurable:!0,enumerable:!1,value:a(e),writable:!0})}:i},ewvW:function(t,e,n){var a=n("2oRo"),r=n("HYAF"),i=a.Object;t.exports=function(t){return i(r(t))}},ezUo:function(t,e,n){var a=n("xT5m"),r=n("LxgN"),i=n("K1DE");t.exports=function(t,e,n,s,u,o){var l=1&n,d=t.length,c=e.length;if(d!=c&&!(l&&c>d))return!1;var f=o.get(t),h=o.get(e);if(f&&h)return f==e&&h==t;var g=-1,p=!0,b=2&n?new a:void 0;for(o.set(t,e),o.set(e,t);++g<d;){var m=t[g],y=e[g];if(s)var v=l?s(y,m,g,e,t,o):s(m,y,g,t,e,o);if(void 0!==v){if(v)continue;p=!1;break}if(b){if(!r(e,(function(t,e){if(!i(b,e)&&(m===t||u(m,t,n,s,o)))return b.push(e)}))){p=!1;break}}else if(m!==y&&!u(m,y,n,s,o)){p=!1;break}}return o.delete(t),o.delete(e),p}},"f/UV":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},f5p1:function(t,e,n){var a=n("2oRo"),r=n("Fib7"),i=n("iSVu"),s=a.WeakMap;t.exports=r(s)&&/native code/.test(i(s))},f95s:function(t,e,n){"use strict";n.d(e,"a",(function(){return p}));var a=n("2vnA"),r=n("X+05"),i=n("8SuI"),s=n.n(i),u=n("gBXJ"),o=n.n(u),l=n("aTV8"),d=n.n(l),c=n("7VGY"),f=n.n(c),h=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},g=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},p=function(){function t(t,e,n,a){var r=this;this.data=t,this.parent=e,this.treeModel=n,this.position=0,this.allowDrop=function(t,e){return r.options.allowDrop(t,{parent:r,index:0},e)},this.allowDragoverStyling=function(){return r.options.allowDragoverStyling},null==this.id&&(this.id=Math.floor(1e13*Math.random())),this.index=a,this.getField("children")&&this._initChildren(),this.autoLoadChildren()}return Object.defineProperty(t.prototype,"isHidden",{get:function(){return this.treeModel.isHidden(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isExpanded",{get:function(){return this.treeModel.isExpanded(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isActive",{get:function(){return this.treeModel.isActive(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFocused",{get:function(){return this.treeModel.isNodeFocused(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelected",{get:function(){return this.isSelectable()?this.treeModel.isSelected(this):d()(this.children,(function(t){return t.isSelected}))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAllSelected",{get:function(){return this.isSelectable()?this.treeModel.isSelected(this):f()(this.children,(function(t){return t.isAllSelected}))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isPartiallySelected",{get:function(){return this.isSelected&&!this.isAllSelected},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"level",{get:function(){return this.parent?this.parent.level+1:0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path.concat([this.id]):[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"elementRef",{get:function(){throw"Element Ref is no longer supported since introducing virtual scroll\n\n      You may use a template to obtain a reference to the element"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"originalNode",{get:function(){return this._originalNode},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasChildren",{get:function(){return!!(this.getField("hasChildren")||this.children&&this.children.length>0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCollapsed",{get:function(){return!this.isExpanded},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLeaf",{get:function(){return!this.hasChildren},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return this.parent.data.virtual},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"realParent",{get:function(){return this.isRoot?null:this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{get:function(){return this.treeModel.options},enumerable:!0,configurable:!0}),t.prototype.fireEvent=function(t){this.treeModel.fireEvent(t)},Object.defineProperty(t.prototype,"displayField",{get:function(){return this.getField("display")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"id",{get:function(){return this.getField("id")},set:function(t){this.setField("id",t)},enumerable:!0,configurable:!0}),t.prototype.getField=function(t){return this.data[this.options[t+"Field"]]},t.prototype.setField=function(t,e){this.data[this.options[t+"Field"]]=e},t.prototype._findAdjacentSibling=function(t,e){void 0===e&&(e=!1);var n=this._getParentsChildren(e),a=n.indexOf(this);return n.length>a+t?n[a+t]:null},t.prototype.findNextSibling=function(t){return void 0===t&&(t=!1),this._findAdjacentSibling(1,t)},t.prototype.findPreviousSibling=function(t){return void 0===t&&(t=!1),this._findAdjacentSibling(-1,t)},t.prototype.getVisibleChildren=function(){return this.visibleChildren},Object.defineProperty(t.prototype,"visibleChildren",{get:function(){return(this.children||[]).filter((function(t){return!t.isHidden}))},enumerable:!0,configurable:!0}),t.prototype.getFirstChild=function(t){void 0===t&&(t=!1);var e=t?this.visibleChildren:this.children;return s()(e||[])},t.prototype.getLastChild=function(t){void 0===t&&(t=!1);var e=t?this.visibleChildren:this.children;return o()(e||[])},t.prototype.findNextNode=function(t,e){return void 0===t&&(t=!0),void 0===e&&(e=!1),t&&this.isExpanded&&this.getFirstChild(e)||this.findNextSibling(e)||this.parent&&this.parent.findNextNode(!1,e)},t.prototype.findPreviousNode=function(t){void 0===t&&(t=!1);var e=this.findPreviousSibling(t);return e?e._getLastOpenDescendant(t):this.realParent},t.prototype._getLastOpenDescendant=function(t){void 0===t&&(t=!1);var e=this.getLastChild(t);return this.isCollapsed||!e?this:e._getLastOpenDescendant(t)},t.prototype._getParentsChildren=function(t){return void 0===t&&(t=!1),this.parent&&(t?this.parent.getVisibleChildren():this.parent.children)||[]},t.prototype.getIndexInParent=function(t){return void 0===t&&(t=!1),this._getParentsChildren(t).indexOf(this)},t.prototype.isDescendantOf=function(t){return this===t||this.parent&&this.parent.isDescendantOf(t)},t.prototype.getNodePadding=function(){return this.options.levelPadding*(this.level-1)+"px"},t.prototype.getClass=function(){return[this.options.nodeClass(this),"tree-node-level-"+this.level].join(" ")},t.prototype.onDrop=function(t){this.mouseAction("drop",t.event,{from:t.element,to:{parent:this,index:0,dropOnNode:!0}})},t.prototype.allowDrag=function(){return this.options.allowDrag(this)},t.prototype.loadNodeChildren=function(){var t=this;return this.options.getChildren?Promise.resolve(this.options.getChildren(this)).then((function(e){e&&(t.setField("children",e),t._initChildren(),t.options.useTriState&&t.treeModel.isSelected(t)&&t.setIsSelected(!0),t.children.forEach((function(t){t.getField("isExpanded")&&t.hasChildren&&t.expand()})))})).then((function(){t.fireEvent({eventName:r.a.loadNodeChildren,node:t})})):Promise.resolve()},t.prototype.expand=function(){return this.isExpanded||this.toggleExpanded(),this},t.prototype.collapse=function(){return this.isExpanded&&this.toggleExpanded(),this},t.prototype.doForAll=function(t){var e=this;Promise.resolve(t(this)).then((function(){e.children&&e.children.forEach((function(e){return e.doForAll(t)}))}))},t.prototype.expandAll=function(){this.doForAll((function(t){return t.expand()}))},t.prototype.collapseAll=function(){this.doForAll((function(t){return t.collapse()}))},t.prototype.ensureVisible=function(){return this.realParent&&(this.realParent.expand(),this.realParent.ensureVisible()),this},t.prototype.toggleExpanded=function(){return this.setIsExpanded(!this.isExpanded),this},t.prototype.setIsExpanded=function(t){return this.hasChildren&&this.treeModel.setExpandedNode(this,t),this},t.prototype.autoLoadChildren=function(){var t=this;this.handler=Object(a.e)((function(){return t.isExpanded}),(function(e){!t.children&&t.hasChildren&&e&&t.loadNodeChildren()}),{fireImmediately:!0})},t.prototype.dispose=function(){this.children&&this.children.forEach((function(t){return t.dispose()})),this.handler&&this.handler(),this.parent=null,this.children=null},t.prototype.setIsActive=function(t,e){return void 0===e&&(e=!1),this.treeModel.setActiveNode(this,t,e),t&&this.focus(this.options.scrollOnActivate),this},t.prototype.isSelectable=function(){return this.isLeaf||!this.children||!this.options.useTriState},t.prototype.setIsSelected=function(t){return this.isSelectable()?this.treeModel.setSelectedNode(this,t):this.visibleChildren.forEach((function(e){return e.setIsSelected(t)})),this},t.prototype.toggleSelected=function(){return this.setIsSelected(!this.isSelected),this},t.prototype.toggleActivated=function(t){return void 0===t&&(t=!1),this.setIsActive(!this.isActive,t),this},t.prototype.setActiveAndVisible=function(t){return void 0===t&&(t=!1),this.setIsActive(!0,t).ensureVisible(),setTimeout(this.scrollIntoView.bind(this)),this},t.prototype.scrollIntoView=function(t){void 0===t&&(t=!1),this.treeModel.virtualScroll.scrollIntoView(this,t)},t.prototype.focus=function(t){void 0===t&&(t=!0);var e=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(this),t&&this.scrollIntoView(),e&&this.fireEvent({eventName:r.a.blur,node:e}),this.fireEvent({eventName:r.a.focus,node:this}),this},t.prototype.blur=function(){var t=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(null),t&&this.fireEvent({eventName:r.a.blur,node:this}),this},t.prototype.setIsHidden=function(t){this.treeModel.setIsHidden(this,t)},t.prototype.hide=function(){this.setIsHidden(!0)},t.prototype.show=function(){this.setIsHidden(!1)},t.prototype.mouseAction=function(t,e,n){void 0===n&&(n=null),this.treeModel.setFocus(!0);var a=this.options.actionMapping.mouse[t];a&&a(this.treeModel,this,e,n)},t.prototype.getSelfHeight=function(){return this.options.nodeHeight(this)},t.prototype._initChildren=function(){var e=this;this.children=this.getField("children").map((function(n,a){return new t(n,e,e.treeModel,a)}))},h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isHidden",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isExpanded",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isActive",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isFocused",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isSelected",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isAllSelected",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isPartiallySelected",null),h([a.d,g("design:type",Array)],t.prototype,"children",void 0),h([a.d,g("design:type",Number)],t.prototype,"index",void 0),h([a.d,g("design:type",Object)],t.prototype,"position",void 0),h([a.d,g("design:type",Number)],t.prototype,"height",void 0),h([a.c,g("design:type",Number),g("design:paramtypes",[])],t.prototype,"level",null),h([a.c,g("design:type",Array),g("design:paramtypes",[])],t.prototype,"path",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"visibleChildren",null),h([a.a,g("design:type",Function),g("design:paramtypes",[Object]),g("design:returntype",void 0)],t.prototype,"setIsSelected",null),h([a.a,g("design:type",Function),g("design:paramtypes",[]),g("design:returntype",void 0)],t.prototype,"_initChildren",null),t}()},fHMY:function(t,e,n){var a,r=n("glrk"),i=n("N+g0"),s=n("eDl+"),u=n("0BK2"),o=n("G+Rx"),l=n("zBJ4"),d=n("93I0")("IE_PROTO"),c=function(){},f=function(t){return"<script>"+t+"<\/script>"},h=function(t){t.write(f("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){try{a=new ActiveXObject("htmlfile")}catch(r){}var t,e;g="undefined"!=typeof document?document.domain&&a?h(a):((e=l("iframe")).style.display="none",o.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(f("document.F=Object")),t.close(),t.F):h(a);for(var n=s.length;n--;)delete g.prototype[s[n]];return g()};u[d]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(c.prototype=r(t),n=new c,c.prototype=null,n[d]=t):n=g(),void 0===e?n:i(n,e)}},fIUv:function(t,e,n){var a=n("Wa4q");t.exports=function(){return a.Date.now()}},fdAy:function(t,e,n){"use strict";var a=n("I+eb"),r=n("xluM"),i=n("xDBR"),s=n("Xnc8"),u=n("Fib7"),o=n("ntOU"),l=n("4WOD"),d=n("0rvr"),c=n("1E5z"),f=n("kRJp"),h=n("busE"),g=n("tiKp"),p=n("P4y1"),b=n("rpNk"),m=s.PROPER,y=s.CONFIGURABLE,v=b.IteratorPrototype,x=b.BUGGY_SAFARI_ITERATORS,_=g("iterator"),T=function(){return this};t.exports=function(t,e,n,s,g,b,w){o(n,e,s);var O,S,I,N=function(t){if(t===g&&E)return E;if(!x&&t in A)return A[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},C=e+" Iterator",R=!1,A=t.prototype,k=A[_]||A["@@iterator"]||g&&A[g],E=!x&&k||N(g),L="Array"==e&&A.entries||k;if(L&&(O=l(L.call(new t)))!==Object.prototype&&O.next&&(i||l(O)===v||(d?d(O,v):u(O[_])||h(O,_,T)),c(O,C,!0,!0),i&&(p[C]=T)),m&&"values"==g&&k&&"values"!==k.name&&(!i&&y?f(A,"name","values"):(R=!0,E=function(){return r(k,this)})),g)if(S={values:N("values"),keys:b?E:N("keys"),entries:N("entries")},w)for(I in S)(x||R||!(I in A))&&h(A,I,S[I]);else a({target:e,proto:!0,forced:x||R},S);return i&&!w||A[_]===E||h(A,_,E,{name:g}),p[e]=E,S}},fqHM:function(t,e,n){var a=n("4a5m"),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,s=a((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(r,(function(t,n,a,r){e.push(a?r.replace(i,"$1"):n||t)})),e}));t.exports=s},fxL3:function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n("8Y7J"),r=n("MP8s"),i=n("gk6K"),s=n("mfoh"),u=n("HIU9"),o=n("YCpU"),l=n.n(o),d=n("+Z6c"),c=n.n(d),f=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},h=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},g=function(){function t(t,e){var n=this;this.treeModel=t,this.treeDraggedElement=e,t.eventNames.forEach((function(t){return n[t]=new a.EventEmitter})),t.subscribeToState((function(t){return n.stateChange.emit(t)}))}return Object.defineProperty(t.prototype,"nodes",{set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"focused",{set:function(t){this.treeModel.setFocus(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"state",{set:function(t){this.treeModel.setState(t)},enumerable:!0,configurable:!0}),t.prototype.onKeydown=function(t){if(this.treeModel.isFocused&&!l()(["input","textarea"],document.activeElement.tagName.toLowerCase())){var e=this.treeModel.getFocusedNode();this.treeModel.performKeyAction(e,t)}},t.prototype.onMousedown=function(t){(function t(e,n){return!e||e.localName!==n&&t(e.parentElement,n)})(t.target,"tree-root")&&this.treeModel.setFocus(!1)},t.prototype.ngOnChanges=function(t){(t.options||t.nodes)&&this.treeModel.setData({options:t.options&&t.options.currentValue,nodes:t.nodes&&t.nodes.currentValue,events:c()(this,this.treeModel.eventNames)})},t.prototype.sizeChanged=function(){this.viewportComponent.setViewport()},f([Object(a.ContentChild)("loadingTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"loadingTemplate",void 0),f([Object(a.ContentChild)("treeNodeTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeTemplate",void 0),f([Object(a.ContentChild)("treeNodeWrapperTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeWrapperTemplate",void 0),f([Object(a.ContentChild)("treeNodeFullTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeFullTemplate",void 0),f([Object(a.ViewChild)("viewport",{static:!1}),h("design:type",u.a)],t.prototype,"viewportComponent",void 0),f([Object(a.Input)(),h("design:type",Array),h("design:paramtypes",[Array])],t.prototype,"nodes",null),f([Object(a.Input)(),h("design:type",s.b),h("design:paramtypes",[s.b])],t.prototype,"options",null),f([Object(a.Input)(),h("design:type",Boolean),h("design:paramtypes",[Boolean])],t.prototype,"focused",null),f([Object(a.Input)(),h("design:type",Object),h("design:paramtypes",[Object])],t.prototype,"state",null),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"toggleExpanded",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"activate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"deactivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"nodeActivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"nodeDeactivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"select",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"deselect",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"focus",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"blur",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"updateData",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"initialized",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"moveNode",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"copyNode",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"loadNodeChildren",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"changeFilter",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"event",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"stateChange",void 0),f([Object(a.HostListener)("body: keydown",["$event"]),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],t.prototype,"onKeydown",null),f([Object(a.HostListener)("body: mousedown",["$event"]),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],t.prototype,"onMousedown",null),f([Object(a.Component)({selector:"Tree, tree-root",providers:[r.a],styles:[],template:'\n      <tree-viewport #viewport>\n          <div\n                  class="angular-tree-component"\n                  [class.node-dragging]="treeDraggedElement.isDragging()"\n                  [class.angular-tree-component-rtl]="treeModel.options.rtl">\n              <tree-node-collection\n                      *ngIf="treeModel.roots"\n                      [nodes]="treeModel.roots"\n                      [treeModel]="treeModel"\n                      [templates]="{\n            loadingTemplate: loadingTemplate,\n            treeNodeTemplate: treeNodeTemplate,\n            treeNodeWrapperTemplate: treeNodeWrapperTemplate,\n            treeNodeFullTemplate: treeNodeFullTemplate\n          }">\n              </tree-node-collection>\n              <tree-node-drop-slot\n                      class="empty-tree-drop-slot"\n                      *ngIf="treeModel.isEmptyTree()"\n                      [dropIndex]="0"\n                      [node]="treeModel.virtualRoot">\n              </tree-node-drop-slot>\n          </div>\n      </tree-viewport>\n  '}),h("design:paramtypes",[r.a,i.a])],t)}()},fzPg:function(t,e,n){!function(t){"use strict";t.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("wd/R"))},"g6v/":function(t,e,n){var a=n("0Dky");t.exports=!a((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},gBXJ:function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},gHid:function(t,e,n){var a=n("aT2Y"),r=n("Gf4A"),i=n("SQuY");t.exports=function(t,e){var n=this.__data__;if(n instanceof a){var s=n.__data__;if(!r||s.length<199)return s.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(s)}return n.set(t,e),this.size=n.size,this}},gRHU:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("2fFW"),r=n("NJ4a");const i={closed:!0,next(t){},error(t){if(a.a.useDeprecatedSynchronousErrorHandling)throw t;Object(r.a)(t)},complete(){}}},gVVK:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===t?e?"sekundo":"sekundi":2===t?e||a?"sekundi":"sekundah":t<5?e||a?"sekunde":"sekundah":"sekund");case"m":return e?"ena minuta":"eno minuto";case"mm":return r+(1===t?e?"minuta":"minuto":2===t?e||a?"minuti":"minutama":t<5?e||a?"minute":"minutami":e||a?"minut":"minutami");case"h":return e?"ena ura":"eno uro";case"hh":return r+(1===t?e?"ura":"uro":2===t?e||a?"uri":"urama":t<5?e||a?"ure":"urami":e||a?"ur":"urami");case"d":return e||a?"en dan":"enim dnem";case"dd":return r+(1===t?e||a?"dan":"dnem":2===t?e||a?"dni":"dnevoma":e||a?"dni":"dnevi");case"M":return e||a?"en mesec":"enim mesecem";case"MM":return r+(1===t?e||a?"mesec":"mesecem":2===t?e||a?"meseca":"mesecema":t<5?e||a?"mesece":"meseci":e||a?"mesecev":"meseci");case"y":return e||a?"eno leto":"enim letom";case"yy":return r+(1===t?e||a?"leto":"letom":2===t?e||a?"leti":"letoma":t<5?e||a?"leta":"leti":e||a?"let":"leti")}}t.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},gekB:function(t,e,n){!function(t){"use strict";var e="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",e[7],e[8],e[9]];function a(t,a,r,i){var s="";switch(r){case"s":return i?"muutaman sekunnin":"muutama sekunti";case"ss":return i?"sekunnin":"sekuntia";case"m":return i?"minuutin":"minuutti";case"mm":s=i?"minuutin":"minuuttia";break;case"h":return i?"tunnin":"tunti";case"hh":s=i?"tunnin":"tuntia";break;case"d":return i?"päivän":"päivä";case"dd":s=i?"päivän":"päivää";break;case"M":return i?"kuukauden":"kuukausi";case"MM":s=i?"kuukauden":"kuukautta";break;case"y":return i?"vuoden":"vuosi";case"yy":s=i?"vuoden":"vuotta"}return function(t,a){return t<10?a?n[t]:e[t]:t}(t,i)+" "+s}t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},gjCT:function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};t.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("wd/R"))},gk6K:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J"),r=function(){function t(){this._draggedElement=null}return t.prototype.set=function(t){this._draggedElement=t},t.prototype.get=function(){return this._draggedElement},t.prototype.isDragging=function(){return!!this.get()},function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.Injectable)()],t)}()},glrk:function(t,e,n){var a=n("2oRo"),r=n("hh1v"),i=a.String,s=a.TypeError;t.exports=function(t){if(r(t))return t;throw s(i(t)+" is not an object")}},gp3X:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse");n("sb0X"),n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return u}));var i=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](4,2)],(function(t,e){var n=e.component,a=t(e,4,0,n.icons.spinner,n.icons.spin);t(e,3,0,a)}),null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"button",[["class","btn btn-secondary tc_submitButton"]],[[8,"type",0],[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.submit(n)&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵncd"](null,0),(t()(),a["ɵand"](16777216,null,null,1,null,s)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"btn btn-secondary tc_submitButton",n.btnClass),t(e,5,0,n.loading)}),(function(t,e){var n=e.component;t(e,0,0,n.type,n.loading||n.disabled)}))}},h7vy:function(t,e,n){var a=n("LaC8"),r=n("x3F9");t.exports=function(t){return"number"==typeof t||r(t)&&"[object Number]"==a(t)}},hBjN:function(t,e,n){"use strict";var a=n("oEtG"),r=n("m/L8"),i=n("XGwC");t.exports=function(t,e,n){var s=a(e);s in t?r.f(t,s,i(0,n)):t[s]=n}},"hKI/":function(t,e){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,i=/^0o[0-7]+$/i,s=parseInt,u="object"==typeof global&&global&&global.Object===Object&&global,o="object"==typeof self&&self&&self.Object===Object&&self,l=u||o||Function("return this")(),d=Object.prototype.toString,c=Math.max,f=Math.min,h=function(){return l.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function p(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==d.call(t)}(t))return NaN;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(n,"");var u=r.test(t);return u||i.test(t)?s(t.slice(2),u?2:8):a.test(t)?NaN:+t}t.exports=function(t,e,n){var a=!0,r=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return g(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),function(t,e,n){var a,r,i,s,u,o,l=0,d=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=a,i=r;return a=r=void 0,l=e,s=t.apply(i,n)}function v(t){return l=t,u=setTimeout(_,e),d?y(t):s}function x(t){var n=t-o;return void 0===o||n>=e||n<0||b&&t-l>=i}function _(){var t=h();if(x(t))return T(t);u=setTimeout(_,function(t){var n=e-(t-o);return b?f(n,i-(t-l)):n}(t))}function T(t){return u=void 0,m&&a?y(t):(a=r=void 0,s)}function w(){var t=h(),n=x(t);if(a=arguments,r=this,o=t,n){if(void 0===u)return v(o);if(b)return u=setTimeout(_,e),y(o)}return void 0===u&&(u=setTimeout(_,e)),s}return e=p(e)||0,g(n)&&(d=!!n.leading,i=(b="maxWait"in n)?c(p(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),w.cancel=function(){void 0!==u&&clearTimeout(u),l=0,a=o=r=u=void 0},w.flush=function(){return void 0===u?s:T(h())},w}(t,e,{leading:a,maxWait:e,trailing:r})}},hKrs:function(t,e,n){!function(t){"use strict";t.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})}(n("wd/R"))},hTsC:function(t,e,n){var a=n("CNUl"),r=n("NSEa"),i=n("R2cF"),s=n("THq6"),u=n("lEOU");t.exports=function(t,e,n){var o=t.constructor;switch(e){case"[object ArrayBuffer]":return a(t);case"[object Boolean]":case"[object Date]":return new o(+t);case"[object DataView]":return r(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return u(t,n);case"[object Map]":return new o;case"[object Number]":case"[object String]":return new o(t);case"[object RegExp]":return i(t);case"[object Set]":return new o;case"[object Symbol]":return s(t)}}},hfeG:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("s7LF"),s=n("ANnk"),u=n("f/UV"),o=n("aexS"),l=n("+gVj"),d=n("EmSq"),c=n("Fgil"),f=n("aXbf"),h=n("pYKc"),g=n("ppaS"),p=n("GiVz"),b=n("mXUL"),m=n("EEJc"),y=n("ajRT"),v=n("gp3X"),x=n("sb0X"),_=n("KVJa"),T=n("Z21x"),w=n("sne2"),O=n("Rf2I"),S=n("LqlI"),I=n("2EZI");n.d(e,"a",(function(){return G}));var N=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.titleText)}))}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.message)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{required:0}),(t()(),a["ɵted"](4,null,[" "," "]))],(function(t,e){var n=t(e,3,0,!0===(null==e.parent.context.$implicit?null:e.parent.context.$implicit.required));t(e,2,0,"cd-col-form-label",n)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name),t(e,4,0,e.parent.context.$implicit.label)}))}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["ɵnov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,1)._compositionEnd(n.target.value)&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.e,[a.Renderer2,a.ElementRef,[2,i.b]],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.e]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,4210688,null,0,s.a,[[2,u.a],o.a,a.ElementRef],null,null),a["ɵdid"](7,16384,null,0,l.h,[[3,i.d],l.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,7,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,1,[e.parent.context.$implicit.type,e.parent.context.$implicit.name,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,7).validClass,a["ɵnov"](e,7).invalidClass])}))}function E(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"input",[["cdDimlessBinary",""],["class","form-control"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["ɵnov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,1)._compositionEnd(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,6).onBlur(n.target.value)&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.e,[a.Renderer2,a.ElementRef,[2,i.b]],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.e]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,81920,null,0,d.a,[a.ElementRef,i.q,c.a,f.a],null,null),a["ɵdid"](7,4210688,null,0,s.a,[[2,u.a],o.a,a.ElementRef],null,null),a["ɵdid"](8,16384,null,0,l.h,[[3,i.d],l.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,6,0),t(e,8,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,1,[e.parent.context.$implicit.name,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,8).validClass,a["ɵnov"](e,8).invalidClass])}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,i.v,[a.ElementRef,a.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),a["ɵdid"](2,147456,null,0,i.F,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),(function(t,e){t(e,3,0,null==e.parent.parent.context.$implicit||null==e.parent.parent.context.$implicit.typeConfig?null:e.parent.parent.context.$implicit.typeConfig.placeholder)}))}function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,i.v,[a.ElementRef,a.Renderer2,[2,i.A]],{value:[0,"value"]},null),a["ɵdid"](2,147456,null,0,i.F,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.text)}))}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,"select",[["class","form-control custom-select"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t,1).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.A,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.A]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,4210688,null,0,s.a,[[2,u.a],o.a,a.ElementRef],null,null),a["ɵdid"](7,16384,null,0,l.h,[[3,i.d],l.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,L)),a["ɵdid"](9,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,D)),a["ɵdid"](11,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,7,0,e.parent.context.$implicit.name),t(e,9,0,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.placeholder),t(e,11,0,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.options)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,7).validClass,a["ɵnov"](e,7).invalidClass)}))}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-select-badges",[],[[8,"id",0]],null,null,h.b,h.a)),a["ɵdid"](1,49152,null,0,g.a,[p.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"],customBadges:[3,"customBadges"]},null)],(function(t,e){t(e,1,0,e.parent.context.$implicit.value,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.options,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.messages,null==e.parent.context.$implicit||null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.customBadges)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name)}))}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.getError(e.parent.context.$implicit))}))}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,21,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,20,"div",[],[[8,"className",0],[2,"has-error",null],[2,"has-success",null]],null,null,b.b,b.a)),a["ɵdid"](2,1163264,null,2,l.c,[a.ElementRef,l.g],null,null),a["ɵqud"](603979776,1,{FormControlNames:1}),a["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),a["ɵand"](16777216,null,0,1,null,A)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](7,0,null,0,14,"div",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](9,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpod"](10,{"cd-col-form-input":0,"col-sm-12":1}),(t()(),a["ɵand"](16777216,null,null,2,null,k)),a["ɵdid"](12,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpad"](13,2),(t()(),a["ɵand"](16777216,null,null,1,null,E)),a["ɵdid"](15,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,P)),a["ɵdid"](17,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,M)),a["ɵdid"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,q)),a["ɵdid"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,6,0,e.context.$implicit.label);var r=t(e,10,0,e.context.$implicit.label,!e.context.$implicit.label);t(e,9,0,r);var i=t(e,13,0,"text","number").includes(e.context.$implicit.type);t(e,12,0,i),t(e,15,0,"binary"===e.context.$implicit.type),t(e,17,0,"select"===e.context.$implicit.type),t(e,19,0,"select-badges"===e.context.$implicit.type),t(e,21,0,n.formGroup.showError(e.context.$implicit.name,a["ɵnov"](e.parent,7)))}),(function(t,e){t(e,1,0,a["ɵinlineInterpolate"](1,"form-group row cd-",e.context.$implicit.name,"-form-group"),a["ɵnov"](e,2).hasErrors,a["ɵnov"](e,2).hasSuccess)}))}function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,22,"cd-modal",[],null,null,null,m.c,m.b)),a["ɵdid"](1,49152,null,0,y.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,C)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](4,0,null,1,18,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,17,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,7).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,10).onSubmit()&&r),r}),null,null)),a["ɵdid"](6,16384,null,0,i.G,[],null,null),a["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,i.d,null,[i.l]),a["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),a["ɵdid"](10,16384,null,0,l.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](11,0,null,null,4,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,R)),a["ɵdid"](13,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,j)),a["ɵdid"](15,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0,r=t.component;return"submitAction"===e&&(a=!1!==r.onSubmitForm(r.formGroup.value)&&a),a}),v.b,v.a)),a["ɵdid"](19,114688,null,0,x.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵted"](20,0,[" "," "])),(t()(),a["ɵeld"](21,0,null,null,1,"cd-back-button",[],null,null,null,_.b,_.a)),a["ɵdid"](22,49152,null,0,T.a,[r.Location,w.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,3,0,n.titleText),t(e,7,0,n.formGroup),t(e,10,0,n.formGroup),t(e,13,0,n.message),t(e,15,0,n.fields),t(e,19,0,n.formGroup),t(e,22,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,5,0,a["ɵnov"](e,9).ngClassUntouched,a["ɵnov"](e,9).ngClassTouched,a["ɵnov"](e,9).ngClassPristine,a["ɵnov"](e,9).ngClassDirty,a["ɵnov"](e,9).ngClassValid,a["ɵnov"](e,9).ngClassInvalid,a["ɵnov"](e,9).ngClassPending),t(e,20,0,n.submitButtonText)}))}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-form-modal",[],null,null,null,F,N)),a["ɵdid"](1,114688,null,0,O.a,[S.a,I.a,f.a,c.a,p.a],null,null)],(function(t,e){t(e,1,0)}),null)}var G=a["ɵccf"]("cd-form-modal",O.a,V,{},{},[])},hh1v:function(t,e,n){var a=n("Fib7");t.exports=function(t){return"object"==typeof t?null!==t:a(t)}},hmSm:function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},honF:function(t,e,n){!function(t){"use strict";var e={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};t.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(t){return t.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},hpHm:function(t,e,n){"use strict";n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return p})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return h})),n.d(e,"e",(function(){return u})),n.d(e,"f",(function(){return s})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return o})),n.d(e,"i",(function(){return y})),n.d(e,"j",(function(){return d}));var a=n("8Y7J");class r{constructor(t,e){this.open=t,this.close=e||t}isManual(){return"manual"===this.open||"manual"===this.close}}const i={hover:["mouseover","mouseout"],focus:["focusin","focusout"]};function s(t,e=i){const n=(t||"").trim();if(0===n.length)return[];const a=n.split(/\s+/).map(t=>t.split(":")).map(t=>{const n=e[t[0]]||t;return new r(n[0],n[1])}),s=a.filter(t=>t.isManual());if(s.length>1)throw new Error("Triggers parse error: only one manual trigger is allowed");if(1===s.length&&a.length>1)throw new Error("Triggers parse error: manual trigger can't be mixed with other triggers");return a}function u(t,e){const n=s(e.triggers),a=e.target;if(1===n.length&&n[0].isManual())return Function.prototype;const r=[],i=[],u=()=>{i.forEach(t=>r.push(t())),i.length=0};return n.forEach(n=>{const s=n.open===n.close,o=s?e.toggle:e.show;s||i.push(()=>t.listen(a,n.close,e.hide)),r.push(t.listen(a,n.open,()=>o(u)))}),()=>{r.forEach(t=>t())}}function o(t,e){return e.outsideClick?t.listen("document","click",t=>{e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(e=>e.contains(t.target))||e.hide()}):Function.prototype}function l(t,e){return e.outsideEsc?t.listen("document","keyup.esc",t=>{e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(e=>e.contains(t.target))||e.hide()}):Function.prototype}const d="undefined"!=typeof window&&window||{},c=d.document;let f;function h(){return void 0===d||(void 0===d.__theme?(f||(f=function(){if("undefined"==typeof document)return null;const t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");const e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}()),"bs3"===f):"bs4"!==d.__theme)}function g(t){return function(t,e){const n=` __${e}Value`;Object.defineProperty(t,e,{get(){return this[n]},set(t){const a=this[n];this[n]=t,a!==t&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}}class p{static reflow(t){}static getStyles(t){let e=t.ownerDocument.defaultView;return e&&e.opener||(e=d),e.getComputedStyle(t)}}const b={},m="undefined"==typeof console||!("warn"in console);function y(t){!Object(a.isDevMode)()||m||t in b||(b[t]=!0,console.warn(t))}},hrfs:function(t,e,n){"use strict";n.d(e,"a",(function(){return b})),n.d(e,"b",(function(){return m})),n.d(e,"c",(function(){return g}));var a=n("8Y7J"),r=n("MO+k"),i=n("2Vo4"),s=n("lsW8");const u=[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]];function o(t,e){return"rgba("+t.concat(e).join(",")+")"}function l(t,e){return Math.floor(Math.random()*(e-t+1))+t}function d(t){return{backgroundColor:t.map(t=>o(t,.6)),borderColor:t.map(()=>"#fff"),pointBackgroundColor:t.map(t=>o(t,1)),pointBorderColor:t.map(()=>"#fff"),pointHoverBackgroundColor:t.map(t=>o(t,1)),pointHoverBorderColor:t.map(t=>o(t,1))}}function c(){return[l(0,255),l(0,255),l(0,255)]}function f(t){return u[t]||c()}function h(t){const e=new Array(t);for(let n=0;n<t;n++)e[n]=u[n]||c();return e}let g=(()=>{class t{constructor(){this.pColorschemesOptions={},this.colorschemesOptions=new i.a({})}setColorschemesOptions(t){this.pColorschemesOptions=t,this.colorschemesOptions.next(t)}getColorschemesOptions(){return this.pColorschemesOptions}}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t},token:t,providedIn:"root"}),t})();const p=function(){var t={Default:0,Update:1,Refresh:2};return t[t.Default]="Default",t[t.Update]="Update",t[t.Refresh]="Refresh",t}();class b{constructor(t,e){this.element=t,this.themeService=e,this.options={},this.chartClick=new a.EventEmitter,this.chartHover=new a.EventEmitter,this.old={dataExists:!1,dataLength:0,datasetsExists:!1,datasetsLength:0,datasetsDataObjects:[],datasetsDataLengths:[],colorsExists:!1,colors:[],labelsExist:!1,labels:[],legendExists:!1,legend:{}},this.subs=[]}static registerPlugin(t){r.Chart.plugins.register(t)}static unregisterPlugin(t){r.Chart.plugins.unregister(t)}ngOnInit(){this.ctx=this.element.nativeElement.getContext("2d"),this.refresh(),this.subs.push(this.themeService.colorschemesOptions.subscribe(t=>this.themeChanged(t)))}themeChanged(t){this.refresh()}ngDoCheck(){if(!this.chart)return;let t=p.Default;const e=e=>{t=e>t?e:t};switch(!!this.data!==this.old.dataExists&&(this.propagateDataToDatasets(this.data),this.old.dataExists=!!this.data,e(p.Update)),this.data&&this.data.length!==this.old.dataLength&&(this.old.dataLength=this.data&&this.data.length||0,e(p.Update)),!!this.datasets!==this.old.datasetsExists&&(this.old.datasetsExists=!!this.datasets,e(p.Update)),this.datasets&&this.datasets.length!==this.old.datasetsLength&&(this.old.datasetsLength=this.datasets&&this.datasets.length||0,e(p.Update)),this.datasets&&this.datasets.filter((t,e)=>t.data!==this.old.datasetsDataObjects[e]).length&&(this.old.datasetsDataObjects=this.datasets.map(t=>t.data),e(p.Update)),this.datasets&&this.datasets.filter((t,e)=>t.data.length!==this.old.datasetsDataLengths[e]).length&&(this.old.datasetsDataLengths=this.datasets.map(t=>t.data.length),e(p.Update)),!!this.colors!==this.old.colorsExists&&(this.old.colorsExists=!!this.colors,this.updateColors(),e(p.Update)),this.colors&&this.colors.filter((t,e)=>!this.colorsEqual(t,this.old.colors[e])).length&&(this.old.colors=this.colors.map(t=>this.copyColor(t)),this.updateColors(),e(p.Update)),!!this.labels!==this.old.labelsExist&&(this.old.labelsExist=!!this.labels,e(p.Update)),this.labels&&this.labels.filter((t,e)=>!this.labelsEqual(t,this.old.labels[e])).length&&(this.old.labels=this.labels.map(t=>this.copyLabel(t)),e(p.Update)),!!this.options.legend!==this.old.legendExists&&(this.old.legendExists=!!this.options.legend,e(p.Refresh)),this.options.legend&&this.options.legend.position!==this.old.legend.position&&(this.old.legend.position=this.options.legend.position,e(p.Refresh)),t){case p.Default:break;case p.Update:this.update();break;case p.Refresh:this.refresh()}}copyLabel(t){return Array.isArray(t)?[...t]:t}labelsEqual(t,e){return Array.isArray(t)===Array.isArray(e)&&(Array.isArray(t)||t===e)&&(!Array.isArray(t)||t.length===e.length)&&(!Array.isArray(t)||0===t.filter((t,n)=>t!==e[n]).length)}copyColor(t){return{backgroundColor:t.backgroundColor,borderWidth:t.borderWidth,borderColor:t.borderColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,pointBorderColor:t.pointBorderColor,pointBackgroundColor:t.pointBackgroundColor,pointBorderWidth:t.pointBorderWidth,pointRadius:t.pointRadius,pointHoverRadius:t.pointHoverRadius,pointHitRadius:t.pointHitRadius,pointHoverBackgroundColor:t.pointHoverBackgroundColor,pointHoverBorderColor:t.pointHoverBorderColor,pointHoverBorderWidth:t.pointHoverBorderWidth,pointStyle:t.pointStyle,hoverBackgroundColor:t.hoverBackgroundColor,hoverBorderColor:t.hoverBorderColor,hoverBorderWidth:t.hoverBorderWidth}}colorsEqual(t,e){return!t==!e&&(!t||t.backgroundColor===e.backgroundColor&&t.borderWidth===e.borderWidth&&t.borderColor===e.borderColor&&t.borderCapStyle===e.borderCapStyle&&t.borderDash===e.borderDash&&t.borderDashOffset===e.borderDashOffset&&t.borderJoinStyle===e.borderJoinStyle&&t.pointBorderColor===e.pointBorderColor&&t.pointBackgroundColor===e.pointBackgroundColor&&t.pointBorderWidth===e.pointBorderWidth&&t.pointRadius===e.pointRadius&&t.pointHoverRadius===e.pointHoverRadius&&t.pointHitRadius===e.pointHitRadius&&t.pointHoverBackgroundColor===e.pointHoverBackgroundColor&&t.pointHoverBorderColor===e.pointHoverBorderColor&&t.pointHoverBorderWidth===e.pointHoverBorderWidth&&t.pointStyle===e.pointStyle&&t.hoverBackgroundColor===e.hoverBackgroundColor&&t.hoverBorderColor===e.hoverBorderColor&&t.hoverBorderWidth===e.hoverBorderWidth)}updateColors(){this.datasets.forEach((t,e)=>{this.colors&&this.colors[e]?Object.assign(t,this.colors[e]):Object.assign(t,function(t,e,n){if("pie"===t||"doughnut"===t)return d(h(n));if("polarArea"===t)return{backgroundColor:(a=h(n)).map(t=>o(t,.6)),borderColor:a.map(t=>o(t,1)),hoverBackgroundColor:a.map(t=>o(t,.8)),hoverBorderColor:a.map(t=>o(t,1))};var a;if("line"===t||"radar"===t)return function(t){return{backgroundColor:o(t,.4),borderColor:o(t,1),pointBackgroundColor:o(t,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:o(t,.8)}}(f(e));if("bar"===t||"horizontalBar"===t)return function(t){return{backgroundColor:o(t,.6),borderColor:o(t,1),hoverBackgroundColor:o(t,.8),hoverBorderColor:o(t,1)}}(f(e));if("bubble"===t)return d(h(n));if("scatter"===t)return d(h(n));throw new Error("getColors - Unsupported chart type "+t)}(this.chartType,e,t.data.length),Object.assign({},t))})}ngOnChanges(t){let e=p.Default;const n=t=>{e=t>e?t:e};switch(t.hasOwnProperty("data")&&t.data.currentValue&&(this.propagateDataToDatasets(t.data.currentValue),n(p.Update)),t.hasOwnProperty("datasets")&&t.datasets.currentValue&&(this.propagateDatasetsToData(t.datasets.currentValue),n(p.Update)),t.hasOwnProperty("labels")&&(this.chart&&(this.chart.data.labels=t.labels.currentValue),n(p.Update)),t.hasOwnProperty("legend")&&(this.chart&&(this.chart.config.options.legend.display=t.legend.currentValue,this.chart.generateLegend()),n(p.Update)),t.hasOwnProperty("options")&&n(p.Refresh),e){case p.Update:this.update();break;case p.Refresh:case p.Default:this.refresh()}}ngOnDestroy(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.subs.forEach(t=>t.unsubscribe())}update(t,e){if(this.chart)return this.chart.update(t,e)}hideDataset(t,e){this.chart.getDatasetMeta(t).hidden=e,this.chart.update()}isDatasetHidden(t){return this.chart.getDatasetMeta(t).hidden}toBase64Image(){return this.chart.toBase64Image()}getChartConfiguration(){const t=this.getDatasets(),e=Object.assign({},this.options);!1===this.legend&&(e.legend={display:!1}),e.hover=e.hover||{},e.hover.onHover||(e.hover.onHover=(t,e)=>{e&&!e.length||this.chartHover.emit({event:t,active:e})}),e.onClick||(e.onClick=(t,e)=>{this.chartClick.emit({event:t,active:e})});const n=this.smartMerge(e,this.themeService.getColorschemesOptions());return{type:this.chartType,data:{labels:this.labels||[],datasets:t},plugins:this.plugins,options:n}}getChartBuilder(t){const e=this.getChartConfiguration();return new r.Chart(t,e)}smartMerge(t,e,n=0){if(0===n&&(t=Object(s.cloneDeep)(t)),Object.keys(e).forEach(a=>{if(Array.isArray(e[a])){const r=t[a];r&&r.forEach(t=>{this.smartMerge(t,e[a][0],n+1)})}else"object"==typeof e[a]?(a in t||(t[a]={}),this.smartMerge(t[a],e[a],n+1)):t[a]=e[a]}),0===n)return t}isMultiLineLabel(t){return Array.isArray(t)}joinLabel(t){return t?this.isMultiLineLabel(t)?t.join(" "):t:null}propagateDatasetsToData(t){this.data=this.datasets.map(t=>t.data),this.chart&&(this.chart.data.datasets=t),this.updateColors()}propagateDataToDatasets(t){this.isMultiDataSet(t)?this.datasets&&t.length===this.datasets.length?this.datasets.forEach((e,n)=>{e.data=t[n]}):(this.datasets=t.map((t,e)=>({data:t,label:this.joinLabel(this.labels[e])||"Label "+e})),this.chart&&(this.chart.data.datasets=this.datasets)):this.datasets?(this.datasets[0].data=t,this.datasets.splice(1)):(this.datasets=[{data:t}],this.chart&&(this.chart.data.datasets=this.datasets)),this.updateColors()}isMultiDataSet(t){return Array.isArray(t[0])}getDatasets(){if(!this.datasets&&!this.data)throw new Error("ng-charts configuration error, data or datasets field are required to render chart "+this.chartType);return this.datasets?(this.propagateDatasetsToData(this.datasets),this.datasets):this.data?(this.propagateDataToDatasets(this.data),this.datasets):void 0}refresh(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.ctx&&(this.chart=this.getChartBuilder(this.ctx))}}class m{}},i4WA:function(t,e,n){"use strict";var a=n("8Y7J");n("6qls"),n("tz6c"),n("GiVz"),n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var r=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,0,0,a["ɵinlineInterpolate"](1,"",n.docUrl,"")),t(e,1,0,n.docText)}))}},iEDd:function(t,e,n){!function(t){"use strict";t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return 0===t.indexOf("un")?"n"+t:"en "+t},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},iExv:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.i18n=t}transform(t,e=this.i18n("Yes"),n=this.i18n("No")){return Boolean(t)?e:n}}},iInd:function(t,e,n){"use strict";var a=n("SVse"),r=n("8Y7J"),i=n("LRne"),s=n("Cfvw"),u=n("2Vo4"),o=n("HDdC"),l=n("sVev"),d=n("z+Ro"),c=n("DH7j"),f=n("l7GE"),h=n("ZUHj"),g=n("yCtX");const p={};class b{constructor(t){this.resultSelector=t}call(t,e){return e.subscribe(new m(t,this.resultSelector))}}class m extends f.a{constructor(t,e){super(t),this.resultSelector=e,this.active=0,this.values=[],this.observables=[]}_next(t){this.values.push(p),this.observables.push(t)}_complete(){const t=this.observables,e=t.length;if(0===e)this.destination.complete();else{this.active=e,this.toRespond=e;for(let n=0;n<e;n++){const e=t[n];this.add(Object(h.a)(this,e,e,n))}}}notifyComplete(t){0==(this.active-=1)&&this.destination.complete()}notifyNext(t,e,n,a,r){const i=this.values,s=this.toRespond?i[n]===p?--this.toRespond:this.toRespond:0;i[n]=e,0===s&&(this.resultSelector?this._tryResultSelector(i):this.destination.next(i.slice()))}_tryResultSelector(t){let e;try{e=this.resultSelector.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}var y=n("EY2u");function v(t){return new o.a(e=>{let n;try{n=t()}catch(a){return void e.error(a)}return(n?Object(s.a)(n):Object(y.b)()).subscribe(e)})}var x=n("XNiG"),_=n("lJxs"),T=n("0EUg"),w=n("NJ9Y"),O=n("JIr8"),S=n("SxV6"),I=n("5+tZ"),N=n("7o/Q");class C{constructor(t,e,n){this.predicate=t,this.thisArg=e,this.source=n}call(t,e){return e.subscribe(new R(t,this.predicate,this.thisArg,this.source))}}class R extends N.a{constructor(t,e,n,a){super(t),this.predicate=e,this.thisArg=n,this.source=a,this.index=0,this.thisArg=n||this}notifyComplete(t){this.destination.next(t),this.destination.complete()}_next(t){let e=!1;try{e=this.predicate.call(this.thisArg,t,this.index++,this.source)}catch(n){return void this.destination.error(n)}e||this.notifyComplete(!1)}_complete(){this.notifyComplete(!0)}}var A=n("eIep"),k=n("IzEk"),E=n("GyhO"),L=n("Kqap"),D=n("pLZG"),P=n("bOdf"),M=n("128B"),q=n("vkgz"),j=n("nYR2"),F=n("bHdf"),V=n("cUpR");n.d(e,"F",(function(){return rt})),n.d(e,"v",(function(){return vn})),n.d(e,"C",(function(){return Rn})),n.d(e,"x",(function(){return wn})),n.d(e,"D",(function(){return An})),n.d(e,"E",(function(){return kn})),n.d(e,"z",(function(){return Sn})),n.d(e,"y",(function(){return On})),n.d(e,"B",(function(){return Cn})),n.d(e,"w",(function(){return _n})),n.d(e,"A",(function(){return Nn})),n.d(e,"G",(function(){return mn})),n.d(e,"n",(function(){return rn})),n.d(e,"p",(function(){return sn})),n.d(e,"o",(function(){return on})),n.d(e,"r",(function(){return cn})),n.d(e,"d",(function(){return z})),n.d(e,"e",(function(){return B})),n.d(e,"l",(function(){return Ke})),n.d(e,"m",(function(){return an})),n.d(e,"k",(function(){return Je})),n.d(e,"i",(function(){return yn})),n.d(e,"j",(function(){return En})),n.d(e,"q",(function(){return Tn})),n.d(e,"b",(function(){return dn})),n.d(e,"f",(function(){return pn})),n.d(e,"g",(function(){return gn})),n.d(e,"h",(function(){return hn})),n.d(e,"s",(function(){return bn})),n.d(e,"a",(function(){return Wt})),n.d(e,"t",(function(){return Qe})),n.d(e,"c",(function(){return It})),n.d(e,"u",(function(){return St}));class G{constructor(t,e){this.id=t,this.url=e}}class B extends G{constructor(t,e,n="imperative",a=null){super(t,e),this.navigationTrigger=n,this.restoredState=a}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class z extends G{constructor(t,e,n){super(t,e),this.urlAfterRedirects=n}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Y extends G{constructor(t,e,n){super(t,e),this.reason=n}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class H extends G{constructor(t,e,n){super(t,e),this.error=n}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class U extends G{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class W extends G{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class K extends G{constructor(t,e,n,a,r){super(t,e),this.urlAfterRedirects=n,this.state=a,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class $ extends G{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class J extends G{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Z{constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Q{constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class X{constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class tt{constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class et{constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class nt{constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class at{constructor(t,e,n){this.routerEvent=t,this.position=e,this.anchor=n}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class rt{}class it{constructor(t){this.params=t||{}}has(t){return this.params.hasOwnProperty(t)}get(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e[0]:e}return null}getAll(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function st(t){return new it(t)}function ut(t){const e=Error("NavigationCancelingError: "+t);return e.ngNavigationCancelingError=!0,e}function ot(t,e,n){const a=n.path.split("/");if(a.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||a.length<t.length))return null;const r={};for(let i=0;i<a.length;i++){const e=a[i],n=t[i];if(e.startsWith(":"))r[e.substring(1)]=n;else if(e!==n.path)return null}return{consumed:t.slice(0,a.length),posParams:r}}class lt{constructor(t,e){this.routes=t,this.module=e}}function dt(t,e=""){for(let n=0;n<t.length;n++){const a=t[n];ct(a,ft(e,a))}}function ct(t,e){if(!t)throw new Error(`\n      Invalid configuration of route '${e}': Encountered undefined route.\n      The reason might be an extra comma.\n\n      Example:\n      const routes: Routes = [\n        { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n        { path: 'dashboard',  component: DashboardComponent },, << two commas\n        { path: 'detail/:id', component: HeroDetailComponent }\n      ];\n    `);if(Array.isArray(t))throw new Error(`Invalid configuration of route '${e}': Array cannot be specified`);if(!t.component&&!t.children&&!t.loadChildren&&t.outlet&&"primary"!==t.outlet)throw new Error(`Invalid configuration of route '${e}': a componentless route without children or loadChildren cannot have a named outlet set`);if(t.redirectTo&&t.children)throw new Error(`Invalid configuration of route '${e}': redirectTo and children cannot be used together`);if(t.redirectTo&&t.loadChildren)throw new Error(`Invalid configuration of route '${e}': redirectTo and loadChildren cannot be used together`);if(t.children&&t.loadChildren)throw new Error(`Invalid configuration of route '${e}': children and loadChildren cannot be used together`);if(t.redirectTo&&t.component)throw new Error(`Invalid configuration of route '${e}': redirectTo and component cannot be used together`);if(t.path&&t.matcher)throw new Error(`Invalid configuration of route '${e}': path and matcher cannot be used together`);if(void 0===t.redirectTo&&!t.component&&!t.children&&!t.loadChildren)throw new Error(`Invalid configuration of route '${e}'. One of the following must be provided: component, redirectTo, children or loadChildren`);if(void 0===t.path&&void 0===t.matcher)throw new Error(`Invalid configuration of route '${e}': routes must have either a path or a matcher specified`);if("string"==typeof t.path&&"/"===t.path.charAt(0))throw new Error(`Invalid configuration of route '${e}': path cannot start with a slash`);if(""===t.path&&void 0!==t.redirectTo&&void 0===t.pathMatch)throw new Error(`Invalid configuration of route '{path: "${e}", redirectTo: "${t.redirectTo}"}': please provide 'pathMatch'. The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`);if(void 0!==t.pathMatch&&"full"!==t.pathMatch&&"prefix"!==t.pathMatch)throw new Error(`Invalid configuration of route '${e}': pathMatch can only be set to 'prefix' or 'full'`);t.children&&dt(t.children,e)}function ft(t,e){return e?t||e.path?t&&!e.path?t+"/":!t&&e.path?e.path:`${t}/${e.path}`:"":t}function ht(t){const e=t.children&&t.children.map(ht),n=e?Object.assign({},t,{children:e}):Object.assign({},t);return!n.component&&(e||n.loadChildren)&&n.outlet&&"primary"!==n.outlet&&(n.component=rt),n}function gt(t,e){const n=Object.keys(t),a=Object.keys(e);if(!n||!a||n.length!=a.length)return!1;let r;for(let i=0;i<n.length;i++)if(r=n[i],t[r]!==e[r])return!1;return!0}function pt(t){return Array.prototype.concat.apply([],t)}function bt(t){return t.length>0?t[t.length-1]:null}function mt(t,e){for(const n in t)t.hasOwnProperty(n)&&e(t[n],n)}function yt(t){return Object(r["ɵisObservable"])(t)?t:Object(r["ɵisPromise"])(t)?Object(s.a)(Promise.resolve(t)):Object(i.a)(t)}function vt(t,e,n){return n?function(t,e){return gt(t,e)}(t.queryParams,e.queryParams)&&function t(e,n){if(!wt(e.segments,n.segments))return!1;if(e.numberOfChildren!==n.numberOfChildren)return!1;for(const a in n.children){if(!e.children[a])return!1;if(!t(e.children[a],n.children[a]))return!1}return!0}(t.root,e.root):function(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(n=>e[n]===t[n])}(t.queryParams,e.queryParams)&&function t(e,n){return function e(n,a,r){if(n.segments.length>r.length)return!!wt(n.segments.slice(0,r.length),r)&&!a.hasChildren();if(n.segments.length===r.length){if(!wt(n.segments,r))return!1;for(const e in a.children){if(!n.children[e])return!1;if(!t(n.children[e],a.children[e]))return!1}return!0}{const t=r.slice(0,n.segments.length),i=r.slice(n.segments.length);return!!wt(n.segments,t)&&!!n.children.primary&&e(n.children.primary,a,i)}}(e,n,n.segments)}(t.root,e.root)}class xt{constructor(t,e,n){this.root=t,this.queryParams=e,this.fragment=n}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=st(this.queryParams)),this._queryParamMap}toString(){return Nt.serialize(this)}}class _t{constructor(t,e){this.segments=t,this.children=e,this.parent=null,mt(e,(t,e)=>t.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Ct(this)}}class Tt{constructor(t,e){this.path=t,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=st(this.parameters)),this._parameterMap}toString(){return Dt(this)}}function wt(t,e){return t.length===e.length&&t.every((t,n)=>t.path===e[n].path)}function Ot(t,e){let n=[];return mt(t.children,(t,a)=>{"primary"===a&&(n=n.concat(e(t,a)))}),mt(t.children,(t,a)=>{"primary"!==a&&(n=n.concat(e(t,a)))}),n}class St{}class It{parse(t){const e=new Ft(t);return new xt(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(t){return`${"/"+function t(e,n){if(!e.hasChildren())return Ct(e);if(n){const n=e.children.primary?t(e.children.primary,!1):"",a=[];return mt(e.children,(e,n)=>{"primary"!==n&&a.push(`${n}:${t(e,!1)}`)}),a.length>0?`${n}(${a.join("//")})`:n}{const n=Ot(e,(n,a)=>"primary"===a?[t(e.children.primary,!1)]:[`${a}:${t(n,!1)}`]);return`${Ct(e)}/(${n.join("//")})`}}(t.root,!0)}${function(t){const e=Object.keys(t).map(e=>{const n=t[e];return Array.isArray(n)?n.map(t=>`${At(e)}=${At(t)}`).join("&"):`${At(e)}=${At(n)}`});return e.length?"?"+e.join("&"):""}(t.queryParams)}${"string"==typeof t.fragment?"#"+encodeURI(t.fragment):""}`}}const Nt=new It;function Ct(t){return t.segments.map(t=>Dt(t)).join("/")}function Rt(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function At(t){return Rt(t).replace(/%3B/gi,";")}function kt(t){return Rt(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Et(t){return decodeURIComponent(t)}function Lt(t){return Et(t.replace(/\+/g,"%20"))}function Dt(t){return`${kt(t.path)}${e=t.parameters,Object.keys(e).map(t=>`;${kt(t)}=${kt(e[t])}`).join("")}`;var e}const Pt=/^[^\/()?;=#]+/;function Mt(t){const e=t.match(Pt);return e?e[0]:""}const qt=/^[^=?&#]+/,jt=/^[^?&#]+/;class Ft{constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new _t([],{}):new _t([],this.parseChildren())}parseQueryParams(){const t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n.primary=new _t(t,e)),n}parseSegment(){const t=Mt(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(t),new Tt(Et(t),this.parseMatrixParams())}parseMatrixParams(){const t={};for(;this.consumeOptional(";");)this.parseParam(t);return t}parseParam(t){const e=Mt(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=Mt(this.remaining);t&&(n=t,this.capture(n))}t[Et(e)]=Et(n)}parseQueryParam(t){const e=function(t){const e=t.match(qt);return e?e[0]:""}(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=function(t){const e=t.match(jt);return e?e[0]:""}(this.remaining);t&&(n=t,this.capture(n))}const a=Lt(e),r=Lt(n);if(t.hasOwnProperty(a)){let e=t[a];Array.isArray(e)||(e=[e],t[a]=e),e.push(r)}else t[a]=r}parseParens(t){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const n=Mt(this.remaining),a=this.remaining[n.length];if("/"!==a&&")"!==a&&";"!==a)throw new Error(`Cannot parse url '${this.url}'`);let r=void 0;n.indexOf(":")>-1?(r=n.substr(0,n.indexOf(":")),this.capture(r),this.capture(":")):t&&(r="primary");const i=this.parseChildren();e[r]=1===Object.keys(i).length?i.primary:new _t([],i),this.consumeOptional("//")}return e}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}capture(t){if(!this.consumeOptional(t))throw new Error(`Expected "${t}".`)}}class Vt{constructor(t){this._root=t}get root(){return this._root.value}parent(t){const e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null}children(t){const e=Gt(t,this._root);return e?e.children.map(t=>t.value):[]}firstChild(t){const e=Gt(t,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(t){const e=Bt(t,this._root);return e.length<2?[]:e[e.length-2].children.map(t=>t.value).filter(e=>e!==t)}pathFromRoot(t){return Bt(t,this._root).map(t=>t.value)}}function Gt(t,e){if(t===e.value)return e;for(const n of e.children){const e=Gt(t,n);if(e)return e}return null}function Bt(t,e){if(t===e.value)return[e];for(const n of e.children){const a=Bt(t,n);if(a.length)return a.unshift(e),a}return[]}class zt{constructor(t,e){this.value=t,this.children=e}toString(){return`TreeNode(${this.value})`}}function Yt(t){const e={};return t&&t.children.forEach(t=>e[t.value.outlet]=t),e}class Ht extends Vt{constructor(t,e){super(t),this.snapshot=e,Zt(this,t)}toString(){return this.snapshot.toString()}}function Ut(t,e){const n=function(t,e){const n=new $t([],{},{},"",{},"primary",e,null,t.root,-1,{});return new Jt("",new zt(n,[]))}(t,e),a=new u.a([new Tt("",{})]),r=new u.a({}),i=new u.a({}),s=new u.a({}),o=new u.a(""),l=new Wt(a,r,s,o,i,"primary",e,n.root);return l.snapshot=n.root,new Ht(new zt(l,[]),n)}class Wt{constructor(t,e,n,a,r,i,s,u){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=s,this._futureSnapshot=u}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(Object(_.a)(t=>st(t)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(Object(_.a)(t=>st(t)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Kt(t,e="emptyOnly"){const n=t.pathFromRoot;let a=0;if("always"!==e)for(a=n.length-1;a>=1;){const t=n[a],e=n[a-1];if(t.routeConfig&&""===t.routeConfig.path)a--;else{if(e.component)break;a--}}return function(t){return t.reduce((t,e)=>({params:Object.assign({},t.params,e.params),data:Object.assign({},t.data,e.data),resolve:Object.assign({},t.resolve,e._resolvedData)}),{params:{},data:{},resolve:{}})}(n.slice(a))}class $t{constructor(t,e,n,a,r,i,s,u,o,l,d){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=s,this.routeConfig=u,this._urlSegment=o,this._lastPathIndex=l,this._resolve=d}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=st(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=st(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(t=>t.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Jt extends Vt{constructor(t,e){super(e),this.url=t,Zt(this,e)}toString(){return Qt(this._root)}}function Zt(t,e){e.value._routerState=t,e.children.forEach(e=>Zt(t,e))}function Qt(t){const e=t.children.length>0?` { ${t.children.map(Qt).join(", ")} } `:"";return`${t.value}${e}`}function Xt(t){if(t.snapshot){const e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,gt(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),gt(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;++n)if(!gt(t[n],e[n]))return!1;return!0}(e.url,n.url)||t.url.next(n.url),gt(e.data,n.data)||t.data.next(n.data)}else t.snapshot=t._futureSnapshot,t.data.next(t._futureSnapshot.data)}function te(t,e){var n,a;return gt(t.params,e.params)&&wt(n=t.url,a=e.url)&&n.every((t,e)=>gt(t.parameters,a[e].parameters))&&!(!t.parent!=!e.parent)&&(!t.parent||te(t.parent,e.parent))}function ee(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function ne(t,e,n,a,r){let i={};return a&&mt(a,(t,e)=>{i[e]=Array.isArray(t)?t.map(t=>""+t):""+t}),new xt(n.root===t?e:function t(e,n,a){const r={};return mt(e.children,(e,i)=>{r[i]=e===n?a:t(e,n,a)}),new _t(e.segments,r)}(n.root,t,e),i,r)}class ae{constructor(t,e,n){if(this.isAbsolute=t,this.numberOfDoubleDots=e,this.commands=n,t&&n.length>0&&ee(n[0]))throw new Error("Root segment cannot have matrix parameters");const a=n.find(t=>"object"==typeof t&&null!=t&&t.outlets);if(a&&a!==bt(n))throw new Error("{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class re{constructor(t,e,n){this.segmentGroup=t,this.processChildren=e,this.index=n}}function ie(t){return"object"==typeof t&&null!=t&&t.outlets?t.outlets.primary:""+t}function se(t,e,n){if(t||(t=new _t([],{})),0===t.segments.length&&t.hasChildren())return ue(t,e,n);const a=function(t,e,n){let a=0,r=e;const i={match:!1,pathIndex:0,commandIndex:0};for(;r<t.segments.length;){if(a>=n.length)return i;const e=t.segments[r],s=ie(n[a]),u=a<n.length-1?n[a+1]:null;if(r>0&&void 0===s)break;if(s&&u&&"object"==typeof u&&void 0===u.outlets){if(!ce(s,u,e))return i;a+=2}else{if(!ce(s,{},e))return i;a++}r++}return{match:!0,pathIndex:r,commandIndex:a}}(t,e,n),r=n.slice(a.commandIndex);if(a.match&&a.pathIndex<t.segments.length){const e=new _t(t.segments.slice(0,a.pathIndex),{});return e.children.primary=new _t(t.segments.slice(a.pathIndex),t.children),ue(e,0,r)}return a.match&&0===r.length?new _t(t.segments,{}):a.match&&!t.hasChildren()?oe(t,e,n):a.match?ue(t,0,r):oe(t,e,n)}function ue(t,e,n){if(0===n.length)return new _t(t.segments,{});{const a=function(t){return"object"!=typeof t[0]||void 0===t[0].outlets?{primary:t}:t[0].outlets}(n),r={};return mt(a,(n,a)=>{null!==n&&(r[a]=se(t.children[a],e,n))}),mt(t.children,(t,e)=>{void 0===a[e]&&(r[e]=t)}),new _t(t.segments,r)}}function oe(t,e,n){const a=t.segments.slice(0,e);let r=0;for(;r<n.length;){if("object"==typeof n[r]&&void 0!==n[r].outlets){const t=le(n[r].outlets);return new _t(a,t)}if(0===r&&ee(n[0])){a.push(new Tt(t.segments[e].path,n[0])),r++;continue}const i=ie(n[r]),s=r<n.length-1?n[r+1]:null;i&&s&&ee(s)?(a.push(new Tt(i,de(s))),r+=2):(a.push(new Tt(i,{})),r++)}return new _t(a,{})}function le(t){const e={};return mt(t,(t,n)=>{null!==t&&(e[n]=oe(new _t([],{}),0,t))}),e}function de(t){const e={};return mt(t,(t,n)=>e[n]=""+t),e}function ce(t,e,n){return t==n.path&&gt(e,n.parameters)}class fe{constructor(t,e,n,a){this.routeReuseStrategy=t,this.futureState=e,this.currState=n,this.forwardEvent=a}activate(t){const e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,t),Xt(this.futureState.root),this.activateChildRoutes(e,n,t)}deactivateChildRoutes(t,e,n){const a=Yt(e);t.children.forEach(t=>{const e=t.value.outlet;this.deactivateRoutes(t,a[e],n),delete a[e]}),mt(a,(t,e)=>{this.deactivateRouteAndItsChildren(t,n)})}deactivateRoutes(t,e,n){const a=t.value,r=e?e.value:null;if(a===r)if(a.component){const r=n.getContext(a.outlet);r&&this.deactivateChildRoutes(t,e,r.children)}else this.deactivateChildRoutes(t,e,n);else r&&this.deactivateRouteAndItsChildren(e,n)}deactivateRouteAndItsChildren(t,e){this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,e):this.deactivateRouteAndOutlet(t,e)}detachAndStoreRouteSubtree(t,e){const n=e.getContext(t.value.outlet);if(n&&n.outlet){const e=n.outlet.detach(),a=n.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:e,route:t,contexts:a})}}deactivateRouteAndOutlet(t,e){const n=e.getContext(t.value.outlet);if(n){const a=Yt(t),r=t.value.component?n.children:e;mt(a,(t,e)=>this.deactivateRouteAndItsChildren(t,r)),n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated())}}activateChildRoutes(t,e,n){const a=Yt(e);t.children.forEach(t=>{this.activateRoutes(t,a[t.value.outlet],n),this.forwardEvent(new nt(t.value.snapshot))}),t.children.length&&this.forwardEvent(new tt(t.value.snapshot))}activateRoutes(t,e,n){const a=t.value,r=e?e.value:null;if(Xt(a),a===r)if(a.component){const r=n.getOrCreateContext(a.outlet);this.activateChildRoutes(t,e,r.children)}else this.activateChildRoutes(t,e,n);else if(a.component){const e=n.getOrCreateContext(a.outlet);if(this.routeReuseStrategy.shouldAttach(a.snapshot)){const t=this.routeReuseStrategy.retrieve(a.snapshot);this.routeReuseStrategy.store(a.snapshot,null),e.children.onOutletReAttached(t.contexts),e.attachRef=t.componentRef,e.route=t.route.value,e.outlet&&e.outlet.attach(t.componentRef,t.route.value),he(t.route)}else{const n=function(t){for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig;if(t&&t.component)return null}return null}(a.snapshot),r=n?n.module.componentFactoryResolver:null;e.attachRef=null,e.route=a,e.resolver=r,e.outlet&&e.outlet.activateWith(a,r),this.activateChildRoutes(t,null,e.children)}}else this.activateChildRoutes(t,null,n)}}function he(t){Xt(t.value),t.children.forEach(he)}function ge(t){return"function"==typeof t}function pe(t){return t instanceof xt}class be{constructor(t){this.segmentGroup=t||null}}class me{constructor(t){this.urlTree=t}}function ye(t){return new o.a(e=>e.error(new be(t)))}function ve(t){return new o.a(e=>e.error(new me(t)))}function xe(t){return new o.a(e=>e.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${t}'`)))}class _e{constructor(t,e,n,a,i){this.configLoader=e,this.urlSerializer=n,this.urlTree=a,this.config=i,this.allowRedirects=!0,this.ngModule=t.get(r.NgModuleRef)}apply(){return this.expandSegmentGroup(this.ngModule,this.config,this.urlTree.root,"primary").pipe(Object(_.a)(t=>this.createUrlTree(t,this.urlTree.queryParams,this.urlTree.fragment))).pipe(Object(O.a)(t=>{if(t instanceof me)return this.allowRedirects=!1,this.match(t.urlTree);if(t instanceof be)throw this.noMatchError(t);throw t}))}match(t){return this.expandSegmentGroup(this.ngModule,this.config,t.root,"primary").pipe(Object(_.a)(e=>this.createUrlTree(e,t.queryParams,t.fragment))).pipe(Object(O.a)(t=>{if(t instanceof be)throw this.noMatchError(t);throw t}))}noMatchError(t){return new Error(`Cannot match any routes. URL Segment: '${t.segmentGroup}'`)}createUrlTree(t,e,n){const a=t.segments.length>0?new _t([],{primary:t}):t;return new xt(a,e,n)}expandSegmentGroup(t,e,n,a){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(Object(_.a)(t=>new _t([],t))):this.expandSegment(t,n,e,n.segments,a,!0)}expandChildren(t,e,n){return function(t,e){if(0===Object.keys(t).length)return Object(i.a)({});const n=[],a=[],r={};return mt(t,(t,i)=>{const s=e(i,t).pipe(Object(_.a)(t=>r[i]=t));"primary"===i?n.push(s):a.push(s)}),i.a.apply(null,n.concat(a)).pipe(Object(T.a)(),Object(w.a)(),Object(_.a)(()=>r))}(n.children,(n,a)=>this.expandSegmentGroup(t,e,a,n))}expandSegment(t,e,n,a,r,s){return Object(i.a)(...n).pipe(Object(_.a)(u=>this.expandSegmentAgainstRoute(t,e,n,u,a,r,s).pipe(Object(O.a)(t=>{if(t instanceof be)return Object(i.a)(null);throw t}))),Object(T.a)(),Object(S.a)(t=>!!t),Object(O.a)((t,n)=>{if(t instanceof l.a||"EmptyError"===t.name){if(this.noLeftoversInUrl(e,a,r))return Object(i.a)(new _t([],{}));throw new be(e)}throw t}))}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}expandSegmentAgainstRoute(t,e,n,a,r,i,s){return Se(a)!==i?ye(e):void 0===a.redirectTo?this.matchSegmentAgainstRoute(t,e,a,r):s&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i):ye(e)}expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i){return"**"===a.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,a,i):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i)}expandWildCardWithParamsAgainstRouteUsingRedirect(t,e,n,a){const r=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?ve(r):this.lineralizeSegments(n,r).pipe(Object(I.a)(n=>{const r=new _t(n,{});return this.expandSegment(t,r,e,n,a,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i){const{matched:s,consumedSegments:u,lastChild:o,positionalParamSegments:l}=Te(e,a,r);if(!s)return ye(e);const d=this.applyRedirectCommands(u,a.redirectTo,l);return a.redirectTo.startsWith("/")?ve(d):this.lineralizeSegments(a,d).pipe(Object(I.a)(a=>this.expandSegment(t,e,n,a.concat(r.slice(o)),i,!1)))}matchSegmentAgainstRoute(t,e,n,a){if("**"===n.path)return n.loadChildren?this.configLoader.load(t.injector,n).pipe(Object(_.a)(t=>(n._loadedConfig=t,new _t(a,{})))):Object(i.a)(new _t(a,{}));const{matched:r,consumedSegments:s,lastChild:u}=Te(e,n,a);if(!r)return ye(e);const o=a.slice(u);return this.getChildConfig(t,n,a).pipe(Object(I.a)(t=>{const n=t.module,a=t.routes,{segmentGroup:r,slicedSegments:u}=function(t,e,n,a){return n.length>0&&function(t,e,n){return n.some(n=>Oe(t,e,n)&&"primary"!==Se(n))}(t,n,a)?{segmentGroup:we(new _t(e,function(t,e){const n={};n.primary=e;for(const a of t)""===a.path&&"primary"!==Se(a)&&(n[Se(a)]=new _t([],{}));return n}(a,new _t(n,t.children)))),slicedSegments:[]}:0===n.length&&function(t,e,n){return n.some(n=>Oe(t,e,n))}(t,n,a)?{segmentGroup:we(new _t(t.segments,function(t,e,n,a){const r={};for(const i of n)Oe(t,e,i)&&!a[Se(i)]&&(r[Se(i)]=new _t([],{}));return Object.assign({},a,r)}(t,n,a,t.children))),slicedSegments:n}:{segmentGroup:t,slicedSegments:n}}(e,s,o,a);return 0===u.length&&r.hasChildren()?this.expandChildren(n,a,r).pipe(Object(_.a)(t=>new _t(s,t))):0===a.length&&0===u.length?Object(i.a)(new _t(s,{})):this.expandSegment(n,r,a,u,"primary",!0).pipe(Object(_.a)(t=>new _t(s.concat(t.segments),t.children)))}))}getChildConfig(t,e,n){return e.children?Object(i.a)(new lt(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?Object(i.a)(e._loadedConfig):function(t,e,n){const a=e.canLoad;return a&&0!==a.length?Object(s.a)(a).pipe(Object(_.a)(a=>{const r=t.get(a);let i;if(function(t){return t&&ge(t.canLoad)}(r))i=r.canLoad(e,n);else{if(!ge(r))throw new Error("Invalid CanLoad guard");i=r(e,n)}return yt(i)})).pipe(Object(T.a)(),(r=t=>!0===t,t=>t.lift(new C(r,void 0,t)))):Object(i.a)(!0);var r}(t.injector,e,n).pipe(Object(I.a)(n=>n?this.configLoader.load(t.injector,e).pipe(Object(_.a)(t=>(e._loadedConfig=t,t))):function(t){return new o.a(e=>e.error(ut(`Cannot load children because the guard of the route "path: '${t.path}'" returned false`)))}(e))):Object(i.a)(new lt([],t))}lineralizeSegments(t,e){let n=[],a=e.root;for(;;){if(n=n.concat(a.segments),0===a.numberOfChildren)return Object(i.a)(n);if(a.numberOfChildren>1||!a.children.primary)return xe(t.redirectTo);a=a.children.primary}}applyRedirectCommands(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)}applyRedirectCreatreUrlTree(t,e,n,a){const r=this.createSegmentGroup(t,e.root,n,a);return new xt(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(t,e){const n={};return mt(t,(t,a)=>{if("string"==typeof t&&t.startsWith(":")){const r=t.substring(1);n[a]=e[r]}else n[a]=t}),n}createSegmentGroup(t,e,n,a){const r=this.createSegments(t,e.segments,n,a);let i={};return mt(e.children,(e,r)=>{i[r]=this.createSegmentGroup(t,e,n,a)}),new _t(r,i)}createSegments(t,e,n,a){return e.map(e=>e.path.startsWith(":")?this.findPosParam(t,e,a):this.findOrReturn(e,n))}findPosParam(t,e,n){const a=n[e.path.substring(1)];if(!a)throw new Error(`Cannot redirect to '${t}'. Cannot find '${e.path}'.`);return a}findOrReturn(t,e){let n=0;for(const a of e){if(a.path===t.path)return e.splice(n),a;n++}return t}}function Te(t,e,n){if(""===e.path)return"full"===e.pathMatch&&(t.hasChildren()||n.length>0)?{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}:{matched:!0,consumedSegments:[],lastChild:0,positionalParamSegments:{}};const a=(e.matcher||ot)(n,t,e);return a?{matched:!0,consumedSegments:a.consumed,lastChild:a.consumed.length,positionalParamSegments:a.posParams}:{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}}function we(t){if(1===t.numberOfChildren&&t.children.primary){const e=t.children.primary;return new _t(t.segments.concat(e.segments),e.children)}return t}function Oe(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0!==n.redirectTo}function Se(t){return t.outlet||"primary"}class Ie{constructor(t){this.path=t,this.route=this.path[this.path.length-1]}}class Ne{constructor(t,e){this.component=t,this.route=e}}function Ce(t,e,n){const a=t._root;return function t(e,n,a,r,i={canDeactivateChecks:[],canActivateChecks:[]}){const s=Yt(n);return e.children.forEach(e=>{!function(e,n,a,r,i={canDeactivateChecks:[],canActivateChecks:[]}){const s=e.value,u=n?n.value:null,o=a?a.getContext(e.value.outlet):null;if(u&&s.routeConfig===u.routeConfig){const l=function(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!wt(t.url,e.url);case"pathParamsOrQueryParamsChange":return!wt(t.url,e.url)||!gt(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!te(t,e)||!gt(t.queryParams,e.queryParams);case"paramsChange":default:return!te(t,e)}}(u,s,s.routeConfig.runGuardsAndResolvers);l?i.canActivateChecks.push(new Ie(r)):(s.data=u.data,s._resolvedData=u._resolvedData),t(e,n,s.component?o?o.children:null:a,r,i),l&&i.canDeactivateChecks.push(new Ne(o&&o.outlet&&o.outlet.component||null,u))}else u&&Ae(n,o,i),i.canActivateChecks.push(new Ie(r)),t(e,null,s.component?o?o.children:null:a,r,i)}(e,s[e.value.outlet],a,r.concat([e.value]),i),delete s[e.value.outlet]}),mt(s,(t,e)=>Ae(t,a.getContext(e),i)),i}(a,e?e._root:null,n,[a.value])}function Re(t,e,n){const a=function(t){if(!t)return null;for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig}return null}(e);return(a?a.module.injector:n).get(t)}function Ae(t,e,n){const a=Yt(t),r=t.value;mt(a,(t,a)=>{Ae(t,r.component?e?e.children.getContext(a):null:e,n)}),n.canDeactivateChecks.push(new Ne(r.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,r))}const ke=Symbol("INITIAL_VALUE");function Ee(){return Object(A.a)(t=>function(...t){let e=null,n=null;return Object(d.a)(t[t.length-1])&&(n=t.pop()),"function"==typeof t[t.length-1]&&(e=t.pop()),1===t.length&&Object(c.a)(t[0])&&(t=t[0]),Object(g.a)(t,n).lift(new b(e))}(...t.map(t=>t.pipe(Object(k.a)(1),function(...t){const e=t[t.length-1];return Object(d.a)(e)?(t.pop(),n=>Object(E.a)(t,n,e)):e=>Object(E.a)(t,e)}(ke)))).pipe(Object(L.a)((t,e)=>{let n=!1;return e.reduce((t,a,r)=>{if(t!==ke)return t;if(a===ke&&(n=!0),!n){if(!1===a)return a;if(r===e.length-1||pe(a))return a}return t},t)},ke),Object(D.a)(t=>t!==ke),Object(_.a)(t=>pe(t)?t:!0===t),Object(k.a)(1)))}function Le(t,e){return null!==t&&e&&e(new et(t)),Object(i.a)(!0)}function De(t,e){return null!==t&&e&&e(new X(t)),Object(i.a)(!0)}function Pe(t,e,n){const a=e.routeConfig?e.routeConfig.canActivate:null;if(!a||0===a.length)return Object(i.a)(!0);const r=a.map(a=>v(()=>{const r=Re(a,e,n);let i;if(function(t){return t&&ge(t.canActivate)}(r))i=yt(r.canActivate(e,t));else{if(!ge(r))throw new Error("Invalid CanActivate guard");i=yt(r(e,t))}return i.pipe(Object(S.a)())}));return Object(i.a)(r).pipe(Ee())}function Me(t,e,n){const a=e[e.length-1],r=e.slice(0,e.length-1).reverse().map(t=>function(t){const e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)).filter(t=>null!==t).map(e=>v(()=>{const r=e.guards.map(r=>{const i=Re(r,e.node,n);let s;if(function(t){return t&&ge(t.canActivateChild)}(i))s=yt(i.canActivateChild(a,t));else{if(!ge(i))throw new Error("Invalid CanActivateChild guard");s=yt(i(a,t))}return s.pipe(Object(S.a)())});return Object(i.a)(r).pipe(Ee())}));return Object(i.a)(r).pipe(Ee())}class qe{}class je{constructor(t,e,n,a,r,i){this.rootComponentType=t,this.config=e,this.urlTree=n,this.url=a,this.paramsInheritanceStrategy=r,this.relativeLinkResolution=i}recognize(){try{const t=Ge(this.urlTree.root,[],[],this.config,this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,"primary"),n=new $t([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},"primary",this.rootComponentType,null,this.urlTree.root,-1,{}),a=new zt(n,e),r=new Jt(this.url,a);return this.inheritParamsAndData(r._root),Object(i.a)(r)}catch(t){return new o.a(e=>e.error(t))}}inheritParamsAndData(t){const e=t.value,n=Kt(e,this.paramsInheritanceStrategy);e.params=Object.freeze(n.params),e.data=Object.freeze(n.data),t.children.forEach(t=>this.inheritParamsAndData(t))}processSegmentGroup(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)}processChildren(t,e){const n=Ot(e,(e,n)=>this.processSegmentGroup(t,e,n));return function(t){const e={};t.forEach(t=>{const n=e[t.value.outlet];if(n){const e=n.url.map(t=>t.toString()).join("/"),a=t.value.url.map(t=>t.toString()).join("/");throw new Error(`Two segments cannot have the same outlet name: '${e}' and '${a}'.`)}e[t.value.outlet]=t.value})}(n),n.sort((t,e)=>"primary"===t.value.outlet?-1:"primary"===e.value.outlet?1:t.value.outlet.localeCompare(e.value.outlet)),n}processSegment(t,e,n,a){for(const i of t)try{return this.processSegmentAgainstRoute(i,e,n,a)}catch(r){if(!(r instanceof qe))throw r}if(this.noLeftoversInUrl(e,n,a))return[];throw new qe}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}processSegmentAgainstRoute(t,e,n,a){if(t.redirectTo)throw new qe;if((t.outlet||"primary")!==a)throw new qe;let r,i=[],s=[];if("**"===t.path){const i=n.length>0?bt(n).parameters:{};r=new $t(n,i,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Ye(t),a,t.component,t,Fe(e),Ve(e)+n.length,He(t))}else{const u=function(t,e,n){if(""===e.path){if("full"===e.pathMatch&&(t.hasChildren()||n.length>0))throw new qe;return{consumedSegments:[],lastChild:0,parameters:{}}}const a=(e.matcher||ot)(n,t,e);if(!a)throw new qe;const r={};mt(a.posParams,(t,e)=>{r[e]=t.path});const i=a.consumed.length>0?Object.assign({},r,a.consumed[a.consumed.length-1].parameters):r;return{consumedSegments:a.consumed,lastChild:a.consumed.length,parameters:i}}(e,t,n);i=u.consumedSegments,s=n.slice(u.lastChild),r=new $t(i,u.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Ye(t),a,t.component,t,Fe(e),Ve(e)+i.length,He(t))}const u=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),{segmentGroup:o,slicedSegments:l}=Ge(e,i,s,u,this.relativeLinkResolution);if(0===l.length&&o.hasChildren()){const t=this.processChildren(u,o);return[new zt(r,t)]}if(0===u.length&&0===l.length)return[new zt(r,[])];const d=this.processSegment(u,o,l,"primary");return[new zt(r,d)]}}function Fe(t){let e=t;for(;e._sourceSegment;)e=e._sourceSegment;return e}function Ve(t){let e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;for(;e._sourceSegment;)e=e._sourceSegment,n+=e._segmentIndexShift?e._segmentIndexShift:0;return n-1}function Ge(t,e,n,a,r){if(n.length>0&&function(t,e,n){return n.some(n=>Be(t,e,n)&&"primary"!==ze(n))}(t,n,a)){const r=new _t(e,function(t,e,n,a){const r={};r.primary=a,a._sourceSegment=t,a._segmentIndexShift=e.length;for(const i of n)if(""===i.path&&"primary"!==ze(i)){const n=new _t([],{});n._sourceSegment=t,n._segmentIndexShift=e.length,r[ze(i)]=n}return r}(t,e,a,new _t(n,t.children)));return r._sourceSegment=t,r._segmentIndexShift=e.length,{segmentGroup:r,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return n.some(n=>Be(t,e,n))}(t,n,a)){const i=new _t(t.segments,function(t,e,n,a,r,i){const s={};for(const u of a)if(Be(t,n,u)&&!r[ze(u)]){const n=new _t([],{});n._sourceSegment=t,n._segmentIndexShift="legacy"===i?t.segments.length:e.length,s[ze(u)]=n}return Object.assign({},r,s)}(t,e,n,a,t.children,r));return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}const i=new _t(t.segments,t.children);return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}function Be(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0===n.redirectTo}function ze(t){return t.outlet||"primary"}function Ye(t){return t.data||{}}function He(t){return t.resolve||{}}function Ue(t,e,n,a){const r=Re(t,e,a);return yt(r.resolve?r.resolve(e,n):r(e,n))}function We(t){return function(e){return e.pipe(Object(A.a)(e=>{const n=t(e);return n?Object(s.a)(n).pipe(Object(_.a)(()=>e)):Object(s.a)([e])}))}}class Ke{}class $e{shouldDetach(t){return!1}store(t,e){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,e){return t.routeConfig===e.routeConfig}}const Je=new r.InjectionToken("ROUTES");class Ze{constructor(t,e,n,a){this.loader=t,this.compiler=e,this.onLoadStartListener=n,this.onLoadEndListener=a}load(t,e){return this.onLoadStartListener&&this.onLoadStartListener(e),this.loadModuleFactory(e.loadChildren).pipe(Object(_.a)(n=>{this.onLoadEndListener&&this.onLoadEndListener(e);const a=n.create(t);return new lt(pt(a.injector.get(Je)).map(ht),a)}))}loadModuleFactory(t){return"string"==typeof t?Object(s.a)(this.loader.load(t)):yt(t()).pipe(Object(I.a)(t=>t instanceof r.NgModuleFactory?Object(i.a)(t):Object(s.a)(this.compiler.compileModuleAsync(t))))}}class Qe{}class Xe{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,e){return t}}function tn(t){throw t}function en(t,e,n){return e.parse("/")}function nn(t,e){return Object(i.a)(null)}class an{constructor(t,e,n,a,i,s,o,l){this.rootComponentType=t,this.urlSerializer=e,this.rootContexts=n,this.location=a,this.config=l,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.navigationId=0,this.isNgZoneEnabled=!1,this.events=new x.a,this.errorHandler=tn,this.malformedUriErrorHandler=en,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:nn,afterPreactivation:nn},this.urlHandlingStrategy=new Xe,this.routeReuseStrategy=new $e,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="legacy",this.ngModule=i.get(r.NgModuleRef),this.console=i.get(r["ɵConsole"]);const d=i.get(r.NgZone);this.isNgZoneEnabled=d instanceof r.NgZone,this.resetConfig(l),this.currentUrlTree=new xt(new _t([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new Ze(s,o,t=>this.triggerEvent(new Z(t)),t=>this.triggerEvent(new Q(t))),this.routerState=Ut(this.currentUrlTree,this.rootComponentType),this.transitions=new u.a({id:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}setupNavigations(t){const e=this.events;return t.pipe(Object(D.a)(t=>0!==t.id),Object(_.a)(t=>Object.assign({},t,{extractedUrl:this.urlHandlingStrategy.extract(t.rawUrl)})),Object(A.a)(t=>{let n=!1,a=!1;return Object(i.a)(t).pipe(Object(q.a)(t=>{this.currentNavigation={id:t.id,initialUrl:t.currentRawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:this.lastSuccessfulNavigation?Object.assign({},this.lastSuccessfulNavigation,{previousNavigation:null}):null}}),Object(A.a)(t=>{const n=!this.navigated||t.extractedUrl.toString()!==this.browserUrlTree.toString();if(("reload"===this.onSameUrlNavigation||n)&&this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return Object(i.a)(t).pipe(Object(A.a)(t=>{const n=this.transitions.getValue();return e.next(new B(t.id,this.serializeUrl(t.extractedUrl),t.source,t.restoredState)),n!==this.transitions.getValue()?y.a:[t]}),Object(A.a)(t=>Promise.resolve(t)),(a=this.ngModule.injector,r=this.configLoader,s=this.urlSerializer,u=this.config,function(t){return t.pipe(Object(A.a)(t=>function(t,e,n,a,r){return new _e(t,e,n,a,r).apply()}(a,r,s,t.extractedUrl,u).pipe(Object(_.a)(e=>Object.assign({},t,{urlAfterRedirects:e})))))}),Object(q.a)(t=>{this.currentNavigation=Object.assign({},this.currentNavigation,{finalUrl:t.urlAfterRedirects})}),function(t,e,n,a,r){return function(i){return i.pipe(Object(I.a)(i=>function(t,e,n,a,r="emptyOnly",i="legacy"){return new je(t,e,n,a,r,i).recognize()}(t,e,i.urlAfterRedirects,n(i.urlAfterRedirects),a,r).pipe(Object(_.a)(t=>Object.assign({},i,{targetSnapshot:t})))))}}(this.rootComponentType,this.config,t=>this.serializeUrl(t),this.paramsInheritanceStrategy,this.relativeLinkResolution),Object(q.a)(t=>{"eager"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),Object(q.a)(t=>{const n=new U(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.next(n)}));var a,r,s,u;if(n&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:n,extractedUrl:a,source:r,restoredState:s,extras:u}=t,o=new B(n,this.serializeUrl(a),r,s);e.next(o);const l=Ut(a,this.rootComponentType).snapshot;return Object(i.a)(Object.assign({},t,{targetSnapshot:l,urlAfterRedirects:a,extras:Object.assign({},u,{skipLocationChange:!1,replaceUrl:!1})}))}return this.rawUrlTree=t.rawUrl,this.browserUrlTree=t.urlAfterRedirects,t.resolve(null),y.a}),We(t=>{const{targetSnapshot:e,id:n,extractedUrl:a,rawUrl:r,extras:{skipLocationChange:i,replaceUrl:s}}=t;return this.hooks.beforePreactivation(e,{navigationId:n,appliedUrlTree:a,rawUrlTree:r,skipLocationChange:!!i,replaceUrl:!!s})}),Object(q.a)(t=>{const e=new W(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),Object(_.a)(t=>Object.assign({},t,{guards:Ce(t.targetSnapshot,t.currentSnapshot,this.rootContexts)})),function(t,e){return function(n){return n.pipe(Object(I.a)(n=>{const{targetSnapshot:a,currentSnapshot:r,guards:{canActivateChecks:u,canDeactivateChecks:o}}=n;return 0===o.length&&0===u.length?Object(i.a)(Object.assign({},n,{guardsResult:!0})):function(t,e,n,a){return Object(s.a)(t).pipe(Object(I.a)(t=>function(t,e,n,a,r){const s=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!s||0===s.length)return Object(i.a)(!0);const u=s.map(i=>{const s=Re(i,e,r);let u;if(function(t){return t&&ge(t.canDeactivate)}(s))u=yt(s.canDeactivate(t,e,n,a));else{if(!ge(s))throw new Error("Invalid CanDeactivate guard");u=yt(s(t,e,n,a))}return u.pipe(Object(S.a)())});return Object(i.a)(u).pipe(Ee())}(t.component,t.route,n,e,a)),Object(S.a)(t=>!0!==t,!0))}(o,a,r,t).pipe(Object(I.a)(n=>n&&"boolean"==typeof n?function(t,e,n,a){return Object(s.a)(e).pipe(Object(P.a)(e=>Object(s.a)([De(e.route.parent,a),Le(e.route,a),Me(t,e.path,n),Pe(t,e.route,n)]).pipe(Object(T.a)(),Object(S.a)(t=>!0!==t,!0))),Object(S.a)(t=>!0!==t,!0))}(a,u,t,e):Object(i.a)(n)),Object(_.a)(t=>Object.assign({},n,{guardsResult:t})))}))}}(this.ngModule.injector,t=>this.triggerEvent(t)),Object(q.a)(t=>{if(pe(t.guardsResult)){const e=ut(`Redirecting to "${this.serializeUrl(t.guardsResult)}"`);throw e.url=t.guardsResult,e}}),Object(q.a)(t=>{const e=new K(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);this.triggerEvent(e)}),Object(D.a)(t=>{if(!t.guardsResult){this.resetUrlToCurrentUrlTree();const n=new Y(t.id,this.serializeUrl(t.extractedUrl),"");return e.next(n),t.resolve(!1),!1}return!0}),We(t=>{if(t.guards.canActivateChecks.length)return Object(i.a)(t).pipe(Object(q.a)(t=>{const e=new $(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),(e=this.paramsInheritanceStrategy,n=this.ngModule.injector,function(t){return t.pipe(Object(I.a)(t=>{const{targetSnapshot:a,guards:{canActivateChecks:r}}=t;return r.length?Object(s.a)(r).pipe(Object(P.a)(t=>function(t,e,n,a){return function(t,e,n,a){const r=Object.keys(t);if(0===r.length)return Object(i.a)({});if(1===r.length){const i=r[0];return Ue(t[i],e,n,a).pipe(Object(_.a)(t=>({[i]:t})))}const u={};return Object(s.a)(r).pipe(Object(I.a)(r=>Ue(t[r],e,n,a).pipe(Object(_.a)(t=>(u[r]=t,t))))).pipe(Object(w.a)(),Object(_.a)(()=>u))}(t._resolve,t,e,a).pipe(Object(_.a)(e=>(t._resolvedData=e,t.data=Object.assign({},t.data,Kt(t,n).resolve),null)))}(t.route,a,e,n)),Object(M.a)((t,e)=>t),Object(_.a)(e=>t)):Object(i.a)(t)}))}),Object(q.a)(t=>{const e=new J(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}));var e,n}),We(t=>{const{targetSnapshot:e,id:n,extractedUrl:a,rawUrl:r,extras:{skipLocationChange:i,replaceUrl:s}}=t;return this.hooks.afterPreactivation(e,{navigationId:n,appliedUrlTree:a,rawUrlTree:r,skipLocationChange:!!i,replaceUrl:!!s})}),Object(_.a)(t=>{const e=function(t,e,n){const a=function t(e,n,a){if(a&&e.shouldReuseRoute(n.value,a.value.snapshot)){const r=a.value;r._futureSnapshot=n.value;const i=function(e,n,a){return n.children.map(n=>{for(const r of a.children)if(e.shouldReuseRoute(r.value.snapshot,n.value))return t(e,n,r);return t(e,n)})}(e,n,a);return new zt(r,i)}{const a=e.retrieve(n.value);if(a){const t=a.route;return function t(e,n){if(e.value.routeConfig!==n.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(e.children.length!==n.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");n.value._futureSnapshot=e.value;for(let a=0;a<e.children.length;++a)t(e.children[a],n.children[a])}(n,t),t}{const a=new Wt(new u.a((r=n.value).url),new u.a(r.params),new u.a(r.queryParams),new u.a(r.fragment),new u.a(r.data),r.outlet,r.component,r),i=n.children.map(n=>t(e,n));return new zt(a,i)}}var r}(t,e._root,n?n._root:void 0);return new Ht(a,e)}(this.routeReuseStrategy,t.targetSnapshot,t.currentRouterState);return Object.assign({},t,{targetRouterState:e})}),Object(q.a)(t=>{this.currentUrlTree=t.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl),this.routerState=t.targetRouterState,"deferred"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),(r=this.rootContexts,o=this.routeReuseStrategy,l=t=>this.triggerEvent(t),Object(_.a)(t=>(new fe(o,t.targetRouterState,t.currentRouterState,l).activate(r),t))),Object(q.a)({next(){n=!0},complete(){n=!0}}),Object(j.a)(()=>{if(!n&&!a){this.resetUrlToCurrentUrlTree();const n=new Y(t.id,this.serializeUrl(t.extractedUrl),`Navigation ID ${t.id} is not equal to the current navigation id ${this.navigationId}`);e.next(n),t.resolve(!1)}this.currentNavigation=null}),Object(O.a)(n=>{if(a=!0,(r=n)&&r.ngNavigationCancelingError){const a=pe(n.url);a||(this.navigated=!0,this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl));const r=new Y(t.id,this.serializeUrl(t.extractedUrl),n.message);e.next(r),t.resolve(!1),a&&this.navigateByUrl(n.url)}else{this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl);const a=new H(t.id,this.serializeUrl(t.extractedUrl),n);e.next(a);try{t.resolve(this.errorHandler(n))}catch(i){t.reject(i)}}var r;return y.a}));var r,o,l}))}resetRootComponentType(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType}getTransition(){const t=this.transitions.value;return t.urlAfterRedirects=this.browserUrlTree,t}setTransition(t){this.transitions.next(Object.assign({},this.getTransition(),t))}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(t=>{let e=this.parseUrl(t.url);const n="popstate"===t.type?"popstate":"hashchange",a=t.state&&t.state.navigationId?t.state:null;setTimeout(()=>{this.scheduleNavigation(e,n,a,{replaceUrl:!0})},0)}))}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(t){this.events.next(t)}resetConfig(t){dt(t),this.config=t.map(ht),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=null)}createUrlTree(t,e={}){const{relativeTo:n,queryParams:a,fragment:i,preserveQueryParams:s,queryParamsHandling:u,preserveFragment:o}=e;Object(r.isDevMode)()&&s&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead.");const l=n||this.routerState.root,d=o?this.currentUrlTree.fragment:i;let c=null;if(u)switch(u){case"merge":c=Object.assign({},this.currentUrlTree.queryParams,a);break;case"preserve":c=this.currentUrlTree.queryParams;break;default:c=a||null}else c=s?this.currentUrlTree.queryParams:a||null;return null!==c&&(c=this.removeEmptyProps(c)),function(t,e,n,a,r){if(0===n.length)return ne(e.root,e.root,e,a,r);const i=function(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new ae(!0,0,t);let e=0,n=!1;const a=t.reduce((t,a,r)=>{if("object"==typeof a&&null!=a){if(a.outlets){const e={};return mt(a.outlets,(t,n)=>{e[n]="string"==typeof t?t.split("/"):t}),[...t,{outlets:e}]}if(a.segmentPath)return[...t,a.segmentPath]}return"string"!=typeof a?[...t,a]:0===r?(a.split("/").forEach((a,r)=>{0==r&&"."===a||(0==r&&""===a?n=!0:".."===a?e++:""!=a&&t.push(a))}),t):[...t,a]},[]);return new ae(n,e,a)}(n);if(i.toRoot())return ne(e.root,new _t([],{}),e,a,r);const s=function(t,e,n){if(t.isAbsolute)return new re(e.root,!0,0);if(-1===n.snapshot._lastPathIndex)return new re(n.snapshot._urlSegment,!0,0);const a=ee(t.commands[0])?0:1;return function(t,e,n){let a=t,r=e,i=n;for(;i>r;){if(i-=r,a=a.parent,!a)throw new Error("Invalid number of '../'");r=a.segments.length}return new re(a,!1,r-i)}(n.snapshot._urlSegment,n.snapshot._lastPathIndex+a,t.numberOfDoubleDots)}(i,e,t),u=s.processChildren?ue(s.segmentGroup,s.index,i.commands):se(s.segmentGroup,s.index,i.commands);return ne(s.segmentGroup,u,e,a,r)}(l,this.currentUrlTree,t,c,d)}navigateByUrl(t,e={skipLocationChange:!1}){Object(r.isDevMode)()&&this.isNgZoneEnabled&&!r.NgZone.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?");const n=pe(t)?t:this.parseUrl(t),a=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(a,"imperative",null,e)}navigate(t,e={skipLocationChange:!1}){return function(t){for(let e=0;e<t.length;e++){const n=t[e];if(null==n)throw new Error(`The requested path contains ${n} segment at index ${e}`)}}(t),this.navigateByUrl(this.createUrlTree(t,e),e)}serializeUrl(t){return this.urlSerializer.serialize(t)}parseUrl(t){let e;try{e=this.urlSerializer.parse(t)}catch(n){e=this.malformedUriErrorHandler(n,this.urlSerializer,t)}return e}isActive(t,e){if(pe(t))return vt(this.currentUrlTree,t,e);const n=this.parseUrl(t);return vt(this.currentUrlTree,n,e)}removeEmptyProps(t){return Object.keys(t).reduce((e,n)=>{const a=t[n];return null!=a&&(e[n]=a),e},{})}processNavigations(){this.navigations.subscribe(t=>{this.navigated=!0,this.lastSuccessfulId=t.id,this.events.next(new z(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,this.currentNavigation=null,t.resolve(!0)},t=>{this.console.warn("Unhandled Navigation Error: ")})}scheduleNavigation(t,e,n,a){const r=this.getTransition();if(r&&"imperative"!==e&&"imperative"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(r&&"hashchange"==e&&"popstate"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(r&&"popstate"==e&&"hashchange"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);let i=null,s=null;const u=new Promise((t,e)=>{i=t,s=e}),o=++this.navigationId;return this.setTransition({id:o,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:a,resolve:i,reject:s,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(t=>Promise.reject(t))}setBrowserUrl(t,e,n,a){const r=this.urlSerializer.serialize(t);a=a||{},this.location.isCurrentPathEqualTo(r)||e?this.location.replaceState(r,"",Object.assign({},a,{navigationId:n})):this.location.go(r,"",Object.assign({},a,{navigationId:n}))}resetStateAndUrl(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})}}class rn{constructor(t,e,n,a,r){this.router=t,this.route=e,this.commands=[],null==n&&a.setAttribute(r.nativeElement,"tabindex","0")}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){Object(r.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated!, use queryParamsHandling instead."),this.preserve=t}onClick(){const t={skipLocationChange:un(this.skipLocationChange),replaceUrl:un(this.replaceUrl)};return this.router.navigateByUrl(this.urlTree,t),!0}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:un(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:un(this.preserveFragment)})}}class sn{constructor(t,e,n){this.router=t,this.route=e,this.locationStrategy=n,this.commands=[],this.subscription=t.events.subscribe(t=>{t instanceof z&&this.updateTargetUrlAndHref()})}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){Object(r.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead."),this.preserve=t}ngOnChanges(t){this.updateTargetUrlAndHref()}ngOnDestroy(){this.subscription.unsubscribe()}onClick(t,e,n,a){if(0!==t||e||n||a)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0;const r={skipLocationChange:un(this.skipLocationChange),replaceUrl:un(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,r),!1}updateTargetUrlAndHref(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:un(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:un(this.preserveFragment)})}}function un(t){return""===t||!!t}class on{constructor(t,e,n,a,r){this.router=t,this.element=e,this.renderer=n,this.link=a,this.linkWithHref=r,this.classes=[],this.isActive=!1,this.routerLinkActiveOptions={exact:!1},this.subscription=t.events.subscribe(t=>{t instanceof z&&this.update()})}ngAfterContentInit(){this.links.changes.subscribe(t=>this.update()),this.linksWithHrefs.changes.subscribe(t=>this.update()),this.update()}set routerLinkActive(t){const e=Array.isArray(t)?t:t.split(" ");this.classes=e.filter(t=>!!t)}ngOnChanges(t){this.update()}ngOnDestroy(){this.subscription.unsubscribe()}update(){this.links&&this.linksWithHrefs&&this.router.navigated&&Promise.resolve().then(()=>{const t=this.hasActiveLinks();this.isActive!==t&&(this.isActive=t,this.classes.forEach(e=>{t?this.renderer.addClass(this.element.nativeElement,e):this.renderer.removeClass(this.element.nativeElement,e)}))})}isLinkActive(t){return e=>t.isActive(e.urlTree,this.routerLinkActiveOptions.exact)}hasActiveLinks(){const t=this.isLinkActive(this.router);return this.link&&t(this.link)||this.linkWithHref&&t(this.linkWithHref)||this.links.some(t)||this.linksWithHrefs.some(t)}}class ln{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.children=new dn,this.attachRef=null}}class dn{constructor(){this.contexts=new Map}onChildOutletCreated(t,e){const n=this.getOrCreateContext(t);n.outlet=e,this.contexts.set(t,n)}onChildOutletDestroyed(t){const e=this.getContext(t);e&&(e.outlet=null)}onOutletDeactivated(){const t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let e=this.getContext(t);return e||(e=new ln,this.contexts.set(t,e)),e}getContext(t){return this.contexts.get(t)||null}}class cn{constructor(t,e,n,a,i){this.parentContexts=t,this.location=e,this.resolver=n,this.changeDetector=i,this.activated=null,this._activatedRoute=null,this.activateEvents=new r.EventEmitter,this.deactivateEvents=new r.EventEmitter,this.name=a||"primary",t.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.resolver||null))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();const t=this.activated;return this.activated=null,this._activatedRoute=null,t}attach(t,e){this.activated=t,this._activatedRoute=e,this.location.insert(t.hostView)}deactivate(){if(this.activated){const t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,e){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=t;const n=(e=e||this.resolver).resolveComponentFactory(t._futureSnapshot.routeConfig.component),a=this.parentContexts.getOrCreateContext(this.name).children,r=new fn(t,a,this.location.injector);this.activated=this.location.createComponent(n,this.location.length,r),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}class fn{constructor(t,e,n){this.route=t,this.childContexts=e,this.parent=n}get(t,e){return t===Wt?this.route:t===dn?this.childContexts:this.parent.get(t,e)}}class hn{}class gn{preload(t,e){return e().pipe(Object(O.a)(()=>Object(i.a)(null)))}}class pn{preload(t,e){return Object(i.a)(null)}}class bn{constructor(t,e,n,a,r){this.router=t,this.injector=a,this.preloadingStrategy=r,this.loader=new Ze(e,n,e=>t.triggerEvent(new Z(e)),e=>t.triggerEvent(new Q(e)))}setUpPreloading(){this.subscription=this.router.events.pipe(Object(D.a)(t=>t instanceof z),Object(P.a)(()=>this.preload())).subscribe(()=>{})}preload(){const t=this.injector.get(r.NgModuleRef);return this.processRoutes(t,this.router.config)}ngOnDestroy(){this.subscription.unsubscribe()}processRoutes(t,e){const n=[];for(const a of e)if(a.loadChildren&&!a.canLoad&&a._loadedConfig){const t=a._loadedConfig;n.push(this.processRoutes(t.module,t.routes))}else a.loadChildren&&!a.canLoad?n.push(this.preloadConfig(t,a)):a.children&&n.push(this.processRoutes(t,a.children));return Object(s.a)(n).pipe(Object(F.a)(),Object(_.a)(t=>{}))}preloadConfig(t,e){return this.preloadingStrategy.preload(e,()=>this.loader.load(t.injector,e).pipe(Object(I.a)(t=>(e._loadedConfig=t,this.processRoutes(t.module,t.routes)))))}}class mn{constructor(t,e,n={}){this.router=t,this.viewportScroller=e,this.options=n,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},n.scrollPositionRestoration=n.scrollPositionRestoration||"disabled",n.anchorScrolling=n.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(t=>{t instanceof B?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof z&&(this.lastId=t.id,this.scheduleScrollEvent(t,this.router.parseUrl(t.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(t=>{t instanceof at&&(t.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(t.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,e){this.router.triggerEvent(new at(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}const yn=new r.InjectionToken("ROUTER_CONFIGURATION"),vn=new r.InjectionToken("ROUTER_FORROOT_GUARD"),xn=[a.Location,{provide:St,useClass:It},{provide:an,useFactory:Nn,deps:[r.ApplicationRef,St,dn,a.Location,r.Injector,r.NgModuleFactoryLoader,r.Compiler,Je,yn,[Qe,new r.Optional],[Ke,new r.Optional]]},dn,{provide:Wt,useFactory:Cn,deps:[an]},{provide:r.NgModuleFactoryLoader,useClass:r.SystemJsNgModuleLoader},bn,pn,gn,{provide:yn,useValue:{enableTracing:!1}}];function _n(){return new r.NgProbeToken("Router",an)}class Tn{constructor(t,e){}static forRoot(t,e){return{ngModule:Tn,providers:[xn,In(t),{provide:vn,useFactory:Sn,deps:[[an,new r.Optional,new r.SkipSelf]]},{provide:yn,useValue:e||{}},{provide:a.LocationStrategy,useFactory:On,deps:[a.PlatformLocation,[new r.Inject(a.APP_BASE_HREF),new r.Optional],yn]},{provide:mn,useFactory:wn,deps:[an,a.ViewportScroller,yn]},{provide:hn,useExisting:e&&e.preloadingStrategy?e.preloadingStrategy:pn},{provide:r.NgProbeToken,multi:!0,useFactory:_n},[Rn,{provide:r.APP_INITIALIZER,multi:!0,useFactory:An,deps:[Rn]},{provide:En,useFactory:kn,deps:[Rn]},{provide:r.APP_BOOTSTRAP_LISTENER,multi:!0,useExisting:En}]]}}static forChild(t){return{ngModule:Tn,providers:[In(t)]}}}function wn(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new mn(t,e,n)}function On(t,e,n={}){return n.useHash?new a.HashLocationStrategy(t,e):new a.PathLocationStrategy(t,e)}function Sn(t){if(t)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function In(t){return[{provide:r.ANALYZE_FOR_ENTRY_COMPONENTS,multi:!0,useValue:t},{provide:Je,multi:!0,useValue:t}]}function Nn(t,e,n,a,r,i,s,u,o={},l,d){const c=new an(null,e,n,a,r,i,s,pt(u));if(l&&(c.urlHandlingStrategy=l),d&&(c.routeReuseStrategy=d),o.errorHandler&&(c.errorHandler=o.errorHandler),o.malformedUriErrorHandler&&(c.malformedUriErrorHandler=o.malformedUriErrorHandler),o.enableTracing){const t=Object(V.q)();c.events.subscribe(e=>{t.logGroup("Router Event: "+e.constructor.name),t.log(e.toString()),t.log(e),t.logGroupEnd()})}return o.onSameUrlNavigation&&(c.onSameUrlNavigation=o.onSameUrlNavigation),o.paramsInheritanceStrategy&&(c.paramsInheritanceStrategy=o.paramsInheritanceStrategy),o.urlUpdateStrategy&&(c.urlUpdateStrategy=o.urlUpdateStrategy),o.relativeLinkResolution&&(c.relativeLinkResolution=o.relativeLinkResolution),c}function Cn(t){return t.routerState.root}class Rn{constructor(t){this.injector=t,this.initNavigation=!1,this.resultOfPreactivationDone=new x.a}appInitializer(){return this.injector.get(a.LOCATION_INITIALIZED,Promise.resolve(null)).then(()=>{let t=null;const e=new Promise(e=>t=e),n=this.injector.get(an),a=this.injector.get(yn);if(this.isLegacyDisabled(a)||this.isLegacyEnabled(a))t(!0);else if("disabled"===a.initialNavigation)n.setUpLocationChangeListener(),t(!0);else{if("enabled"!==a.initialNavigation)throw new Error(`Invalid initialNavigation options: '${a.initialNavigation}'`);n.hooks.afterPreactivation=()=>this.initNavigation?Object(i.a)(null):(this.initNavigation=!0,t(!0),this.resultOfPreactivationDone),n.initialNavigation()}return e})}bootstrapListener(t){const e=this.injector.get(yn),n=this.injector.get(bn),a=this.injector.get(mn),i=this.injector.get(an),s=this.injector.get(r.ApplicationRef);t===s.components[0]&&(this.isLegacyEnabled(e)?i.initialNavigation():this.isLegacyDisabled(e)&&i.setUpLocationChangeListener(),n.setUpPreloading(),a.init(),i.resetRootComponentType(s.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}isLegacyEnabled(t){return"legacy_enabled"===t.initialNavigation||!0===t.initialNavigation||void 0===t.initialNavigation}isLegacyDisabled(t){return"legacy_disabled"===t.initialNavigation||!1===t.initialNavigation}}function An(t){return t.appInitializer.bind(t)}function kn(t){return t.bootstrapListener.bind(t)}const En=new r.InjectionToken("Router Initializer")},"iQ+a":function(t,e,n){var a=n("nTk+"),r=n("1Yk6"),i=n("FGWQ");t.exports=function(t){return a(t,i,r)}},iSVu:function(t,e,n){var a=n("4zBA"),r=n("Fib7"),i=n("xs3f"),s=a(Function.toString);r(i.inspectSource)||(i.inspectSource=function(t){return s(t)}),t.exports=i.inspectSource},iYuL:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},ienR:function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return q})),n.d(e,"c",(function(){return j})),n.d(e,"d",(function(){return F})),n.d(e,"e",(function(){return V})),n.d(e,"f",(function(){return Y})),n.d(e,"g",(function(){return nt})),n.d(e,"h",(function(){return H})),n.d(e,"i",(function(){return B})),n.d(e,"j",(function(){return G})),n.d(e,"k",(function(){return z})),n.d(e,"l",(function(){return b})),n.d(e,"m",(function(){return st})),n.d(e,"n",(function(){return rt})),n.d(e,"o",(function(){return it})),n.d(e,"p",(function(){return dt})),n.d(e,"q",(function(){return ut})),n.d(e,"r",(function(){return ot})),n.d(e,"s",(function(){return lt})),n.d(e,"t",(function(){return M})),n.d(e,"u",(function(){return m})),n.d(e,"v",(function(){return p})),n.d(e,"w",(function(){return U})),n.d(e,"x",(function(){return W})),n.d(e,"y",(function(){return K})),n.d(e,"z",(function(){return $})),n.d(e,"A",(function(){return Z})),n.d(e,"B",(function(){return Q})),n.d(e,"C",(function(){return X})),n.d(e,"D",(function(){return tt})),n.d(e,"E",(function(){return et}));var a=n("8Y7J"),r=n("pLZG"),i=n("lJxs"),s=n("IzEk"),u=n("xj/R"),o=n("2Vo4"),l=n("AfCQ"),d=n("2uy1"),c=(n("GS7A"),n("z/SZ")),f=(n("s7LF"),n("hpHm"));class h{constructor(){this.adaptivePosition=!1,this.useUtc=!1,this.isAnimated=!1,this.containerClass="theme-green",this.displayMonths=1,this.showWeekNumbers=!0,this.dateInputFormat="L",this.rangeSeparator=" - ",this.rangeInputFormat="L",this.monthTitle="MMMM",this.yearTitle="YYYY",this.dayLabel="D",this.monthLabel="MMMM",this.yearLabel="YYYY",this.weekNumbers="w"}}class g{constructor(){this._customRangesFish=[]}set minDate(t){this._effects.setMinDate(t)}set maxDate(t){this._effects.setMaxDate(t)}set daysDisabled(t){this._effects.setDaysDisabled(t)}set datesDisabled(t){this._effects.setDatesDisabled(t)}set isDisabled(t){this._effects.setDisabled(t)}set dateCustomClasses(t){this._effects.setDateCustomClasses(t)}setViewMode(t){}navigateTo(t){}dayHoverHandler(t){}weekHoverHandler(t){}monthHoverHandler(t){}yearHoverHandler(t){}daySelectHandler(t){}monthSelectHandler(t){}yearSelectHandler(t){}_stopPropagation(t){t.stopPropagation()}}let p=(()=>{class t{calculate(){return{type:t.CALCULATE}}format(){return{type:t.FORMAT}}flag(){return{type:t.FLAG}}select(e){return{type:t.SELECT,payload:e}}changeViewMode(e){return{type:t.CHANGE_VIEWMODE,payload:e}}navigateTo(e){return{type:t.NAVIGATE_TO,payload:e}}navigateStep(e){return{type:t.NAVIGATE_OFFSET,payload:e}}setOptions(e){return{type:t.SET_OPTIONS,payload:e}}selectRange(e){return{type:t.SELECT_RANGE,payload:e}}hoverDay(e){return{type:t.HOVER,payload:e.isHovered?e.cell.date:null}}minDate(e){return{type:t.SET_MIN_DATE,payload:e}}maxDate(e){return{type:t.SET_MAX_DATE,payload:e}}daysDisabled(e){return{type:t.SET_DAYSDISABLED,payload:e}}datesDisabled(e){return{type:t.SET_DATESDISABLED,payload:e}}isDisabled(e){return{type:t.SET_IS_DISABLED,payload:e}}setDateCustomClasses(e){return{type:t.SET_DATE_CUSTOM_CLASSES,payload:e}}setLocale(e){return{type:t.SET_LOCALE,payload:e}}}return t.CALCULATE="[datepicker] calculate dates matrix",t.FORMAT="[datepicker] format datepicker values",t.FLAG="[datepicker] set flags",t.SELECT="[datepicker] select date",t.NAVIGATE_OFFSET="[datepicker] shift view date",t.NAVIGATE_TO="[datepicker] change view date",t.SET_OPTIONS="[datepicker] update render options",t.HOVER="[datepicker] hover date",t.CHANGE_VIEWMODE="[datepicker] switch view mode",t.SET_MIN_DATE="[datepicker] set min date",t.SET_MAX_DATE="[datepicker] set max date",t.SET_DAYSDISABLED="[datepicker] set days disabled",t.SET_DATESDISABLED="[datepicker] set dates disabled",t.SET_IS_DISABLED="[datepicker] set is disabled",t.SET_DATE_CUSTOM_CLASSES="[datepicker] set date custom classes",t.SET_LOCALE="[datepicker] set datepicker locale",t.SELECT_RANGE="[daterangepicker] select dates range",t})();class b{constructor(){this._defaultLocale="en",this._locale=new o.a(this._defaultLocale),this._localeChange=this._locale.asObservable()}get locale(){return this._locale}get localeChange(){return this._localeChange}get currentLocale(){return this._locale.getValue()}use(t){t!==this.currentLocale&&this._locale.next(t)}}class m{constructor(t,e){this._actions=t,this._localeService=e,this._subs=[]}init(t){return this._store=t,this}setValue(t){this._store.dispatch(this._actions.select(t))}setRangeValue(t){this._store.dispatch(this._actions.selectRange(t))}setMinDate(t){return this._store.dispatch(this._actions.minDate(t)),this}setMaxDate(t){return this._store.dispatch(this._actions.maxDate(t)),this}setDaysDisabled(t){return this._store.dispatch(this._actions.daysDisabled(t)),this}setDatesDisabled(t){return this._store.dispatch(this._actions.datesDisabled(t)),this}setDisabled(t){return this._store.dispatch(this._actions.isDisabled(t)),this}setDateCustomClasses(t){return this._store.dispatch(this._actions.setDateCustomClasses(t)),this}setOptions(t){const e=Object.assign({locale:this._localeService.currentLocale},t);return this._store.dispatch(this._actions.setOptions(e)),this}setBindings(t){return t.daysCalendar=this._store.select(t=>t.flaggedMonths).pipe(Object(r.a)(t=>!!t)),t.monthsCalendar=this._store.select(t=>t.flaggedMonthsCalendar).pipe(Object(r.a)(t=>!!t)),t.yearsCalendar=this._store.select(t=>t.yearsCalendarFlagged).pipe(Object(r.a)(t=>!!t)),t.viewMode=this._store.select(t=>t.view.mode),t.options=this._store.select(t=>t.showWeekNumbers).pipe(Object(i.a)(t=>({showWeekNumbers:t}))),this}setEventHandlers(t){return t.setViewMode=t=>{this._store.dispatch(this._actions.changeViewMode(t))},t.navigateTo=t=>{this._store.dispatch(this._actions.navigateStep(t.step))},t.dayHoverHandler=t=>{const e=t.cell;e.isOtherMonth||e.isDisabled||(this._store.dispatch(this._actions.hoverDay(t)),e.isHovered=t.isHovered)},t.monthHoverHandler=t=>{t.cell.isHovered=t.isHovered},t.yearHoverHandler=t=>{t.cell.isHovered=t.isHovered},t.monthSelectHandler=t=>{t.isDisabled||this._store.dispatch(this._actions.navigateTo({unit:{month:Object(u.l)(t.date),year:Object(u.j)(t.date)},viewMode:"day"}))},t.yearSelectHandler=t=>{t.isDisabled||this._store.dispatch(this._actions.navigateTo({unit:{year:Object(u.j)(t.date)},viewMode:"month"}))},this}registerDatepickerSideEffects(){return this._subs.push(this._store.select(t=>t.view).subscribe(t=>{this._store.dispatch(this._actions.calculate())})),this._subs.push(this._store.select(t=>t.monthsModel).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.format()))),this._subs.push(this._store.select(t=>t.formattedMonths).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.selectedDate).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.selectedRange).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.monthsCalendar).subscribe(()=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.yearsCalendarModel).pipe(Object(r.a)(t=>!!t)).subscribe(()=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.hoveredDate).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.dateCustomClasses).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._localeService.localeChange.subscribe(t=>this._store.dispatch(this._actions.setLocale(t)))),this}destroy(){for(const t of this._subs)t.unsubscribe()}}const y={date:new Date,mode:"day"},v=Object.assign(new h,{locale:"en",view:y,selectedRange:[],monthViewOptions:{width:7,height:6}});function x(t,e,n){const a=e&&Object(u.p)(Object(u.d)(t,"month"),e,"day"),r=n&&Object(u.n)(Object(u.G)(t,"month"),n,"day");return a||r}function _(t,e,n){const a=e&&Object(u.p)(Object(u.d)(t,"year"),e,"day"),r=n&&Object(u.n)(Object(u.G)(t,"year"),n,"day");return a||r}function T(t,e=0){const n=t&&t.yearsCalendarModel&&t.yearsCalendarModel[e];return n&&n.years&&n.years[0]&&n.years[0][0]&&n.years[0][0].date}function w(t,e){let n=t.initialDate;const a=new Array(t.height);for(let r=0;r<t.height;r++){a[r]=new Array(t.width);for(let i=0;i<t.width;i++)a[r][i]=e(n),n=Object(u.F)(n,t.shift)}return a}function O(t,e){const n=Object(u.i)(t),a=function(t,e){if(Object(u.t)(t,e.firstDayOfWeek))return t;const n=function(t,e){if(0===e)return t;const n=t-e%7;return n<0?n+7:n}(Object(u.h)(t),e.firstDayOfWeek);return Object(u.F)(t,{day:-n})}(n,e);return{daysMatrix:w({width:e.width,height:e.height,initialDate:a,shift:{day:1}},t=>t),month:n}}function S(t){const e=Object(u.k)(t),n=e.weekdaysShort(),a=e.firstDayOfWeek();return[...n.slice(a),...n.slice(0,a)]}function I(t,e){return!e||t>=e}const N={month:1};function C(t,e){return{months:w({width:3,height:4,initialDate:Object(u.G)(t,"year"),shift:N},t=>({date:t,label:Object(u.f)(t,e.monthLabel,e.locale)})),monthTitle:"",yearTitle:Object(u.f)(t,e.yearTitle,e.locale)}}const R=-1*(Math.floor(8)-1),A={year:1};function k(t,e,n){const a=w({width:4,height:4,initialDate:function(t,e){return e&&t.getFullYear()>=e.getFullYear()&&t.getFullYear()<e.getFullYear()+16?e:Object(u.F)(t,{year:R})}(t,n),shift:A},t=>({date:t,label:Object(u.f)(t,e.yearLabel,e.locale)}));return{years:a,monthTitle:"",yearTitle:function(t,e){return`${Object(u.f)(t[0][0].date,e.yearTitle,e.locale)} - ${Object(u.f)(t[3][3].date,e.yearTitle,e.locale)}`}(a,e)}}function E(t=v,e){switch(e.type){case p.CALCULATE:return function(t){const e=t.displayMonths;let n=t.view.date;if("day"===t.view.mode){t.showPreviousMonth&&0===t.selectedRange.length&&(n=Object(u.F)(n,{month:-1})),t.monthViewOptions.firstDayOfWeek=Object(u.k)(t.locale).firstDayOfWeek();const a=new Array(e);for(let r=0;r<e;r++)a[r]=O(n,t.monthViewOptions),n=Object(u.F)(n,{month:1});return Object.assign({},t,{monthsModel:a})}if("month"===t.view.mode){const a=new Array(e);for(let r=0;r<e;r++)a[r]=C(n,D(t)),n=Object(u.F)(n,{year:1});return Object.assign({},t,{monthsCalendar:a})}if("year"===t.view.mode){const a=new Array(e);for(let r=0;r<e;r++)a[r]=k(n,D(t),"year"===t.minMode?T(t,r):void 0),n=Object(u.F)(n,{year:16});return Object.assign({},t,{yearsCalendarModel:a})}return t}(t);case p.FORMAT:return function(t,e){if("day"===t.view.mode){const e=t.monthsModel.map((e,n)=>function(t,e,n){return{month:t.month,monthTitle:Object(u.f)(t.month,e.monthTitle,e.locale),yearTitle:Object(u.f)(t.month,e.yearTitle,e.locale),weekNumbers:(a=t.daysMatrix,r=e.weekNumbers,i=e.locale,a.map(t=>t[0]?Object(u.f)(t[0],r,i):"")),weekdays:S(e.locale),weeks:t.daysMatrix.map((t,a)=>({days:t.map((t,r)=>({date:t,label:Object(u.f)(t,e.dayLabel,e.locale),monthIndex:n,weekIndex:a,dayIndex:r}))}))};var a,r,i}(e,D(t),n));return Object.assign({},t,{formattedMonths:e})}const n=t.displayMonths;let a=t.view.date;if("month"===t.view.mode){const e=new Array(n);for(let r=0;r<n;r++)e[r]=C(a,D(t)),a=Object(u.F)(a,{year:1});return Object.assign({},t,{monthsCalendar:e})}if("year"===t.view.mode){const e=new Array(n);for(let r=0;r<n;r++)e[r]=k(a,D(t)),a=Object(u.F)(a,{year:16});return Object.assign({},t,{yearsCalendarModel:e})}return t}(t);case p.FLAG:return function(t,e){if("day"===t.view.mode){const e=t.formattedMonths.map((e,n)=>function(t,e){return t.weeks.forEach(n=>{n.days.forEach((a,r)=>{const i=!Object(u.w)(a.date,t.month),s=!i&&Object(u.v)(a.date,e.hoveredDate),o=!i&&e.selectedRange&&Object(u.v)(a.date,e.selectedRange[0]),l=!i&&e.selectedRange&&Object(u.v)(a.date,e.selectedRange[1]),d=!i&&Object(u.v)(a.date,e.selectedDate)||o||l,c=!i&&e.selectedRange&&function(t,e,n){return!(!t||!e[0])&&(e[1]?t>e[0]&&t<=e[1]:!!n&&t>e[0]&&t<=n)}(a.date,e.selectedRange,e.hoveredDate),f=e.isDisabled||Object(u.p)(a.date,e.minDate,"day")||Object(u.n)(a.date,e.maxDate,"day")||Object(u.s)(a.date,e.daysDisabled)||(h=a.date,!(void 0===(g=e.datesDisabled)||!g||!g.length)&&g.some(t=>Object(u.u)(h,t,"date")));var h,g;const p=new Date,b=!i&&Object(u.v)(a.date,p),m=e.dateCustomClasses&&e.dateCustomClasses.map(t=>Object(u.v)(a.date,t.date)?t.classes:[]).reduce((t,e)=>t.concat(e),[]).join(" ")||"",y=Object.assign({},a,{isOtherMonth:i,isHovered:s,isSelected:d,isSelectionStart:o,isSelectionEnd:l,isInRange:c,isDisabled:f,isToday:b,customClasses:m});a.isOtherMonth===y.isOtherMonth&&a.isHovered===y.isHovered&&a.isSelected===y.isSelected&&a.isSelectionStart===y.isSelectionStart&&a.isSelectionEnd===y.isSelectionEnd&&a.isDisabled===y.isDisabled&&a.isInRange===y.isInRange&&a.customClasses===y.customClasses||(n.days[r]=y)})}),t.hideLeftArrow=e.isDisabled||e.monthIndex>0&&e.monthIndex!==e.displayMonths,t.hideRightArrow=e.isDisabled||e.monthIndex<e.displayMonths&&e.monthIndex+1!==e.displayMonths,t.disableLeftArrow=x(Object(u.F)(t.month,{month:-1}),e.minDate,e.maxDate),t.disableRightArrow=x(Object(u.F)(t.month,{month:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,daysDisabled:t.daysDisabled,datesDisabled:t.datesDisabled,hoveredDate:t.hoveredDate,selectedDate:t.selectedDate,selectedRange:t.selectedRange,displayMonths:t.displayMonths,dateCustomClasses:t.dateCustomClasses,monthIndex:n}));return Object.assign({},t,{flaggedMonths:e})}if("month"===t.view.mode){const e=t.monthsCalendar.map((e,n)=>{return r={isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredMonth:t.hoveredMonth,selectedDate:t.selectedDate,displayMonths:t.displayMonths,monthIndex:n},(a=e).months.forEach((t,e)=>{t.forEach((t,n)=>{const i=Object(u.w)(t.date,r.hoveredMonth),s=r.isDisabled||x(t.date,r.minDate,r.maxDate),o=Object(u.w)(t.date,r.selectedDate),l=Object.assign(t,{isHovered:i,isDisabled:s,isSelected:o});t.isHovered===l.isHovered&&t.isDisabled===l.isDisabled&&t.isSelected===l.isSelected||(a.months[e][n]=l)})}),a.hideLeftArrow=r.monthIndex>0&&r.monthIndex!==r.displayMonths,a.hideRightArrow=r.monthIndex<r.displayMonths&&r.monthIndex+1!==r.displayMonths,a.disableLeftArrow=_(Object(u.F)(a.months[0][0].date,{year:-1}),r.minDate,r.maxDate),a.disableRightArrow=_(Object(u.F)(a.months[0][0].date,{year:1}),r.minDate,r.maxDate),a;var a,r});return Object.assign({},t,{flaggedMonthsCalendar:e})}if("year"===t.view.mode){const e=t.yearsCalendarModel.map((e,n)=>function(t,e){t.years.forEach((n,a)=>{n.forEach((n,r)=>{const i=Object(u.x)(n.date,e.hoveredYear),s=e.isDisabled||_(n.date,e.minDate,e.maxDate),o=Object(u.x)(n.date,e.selectedDate),l=Object.assign(n,{isHovered:i,isDisabled:s,isSelected:o});n.isHovered===l.isHovered&&n.isDisabled===l.isDisabled&&n.isSelected===l.isSelected||(t.years[a][r]=l)})}),t.hideLeftArrow=e.yearIndex>0&&e.yearIndex!==e.displayMonths,t.hideRightArrow=e.yearIndex<e.displayMonths&&e.yearIndex+1!==e.displayMonths,t.disableLeftArrow=_(Object(u.F)(t.years[0][0].date,{year:-1}),e.minDate,e.maxDate);const n=t.years.length-1,a=t.years[n].length-1;return t.disableRightArrow=_(Object(u.F)(t.years[n][a].date,{year:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredYear:t.hoveredYear,selectedDate:t.selectedDate,displayMonths:t.displayMonths,yearIndex:n}));return Object.assign({},t,{yearsCalendarFlagged:e})}return t}(t);case p.NAVIGATE_OFFSET:return function(t,e){const n={view:{mode:t.view.mode,date:L(t,e)}};return Object.assign({},t,n)}(t,e);case p.NAVIGATE_TO:{const n=e.payload,a=Object(u.E)(t.view.date,n.unit);let r,i;return I(n.viewMode,t.minMode)?(i=n.viewMode,r={view:{date:a,mode:i}}):(i=t.view.mode,r={selectedDate:a,view:{date:a,mode:i}}),Object.assign({},t,r)}case p.CHANGE_VIEWMODE:return I(e.payload,t.minMode)?Object.assign({},t,{view:{date:t.view.date,mode:e.payload}}):t;case p.HOVER:return Object.assign({},t,{hoveredDate:e.payload});case p.SELECT:{const n={selectedDate:e.payload,view:t.view},a=t.view.mode,r=P(e.payload||t.view.date,t.minDate,t.maxDate);return n.view={mode:a,date:r},Object.assign({},t,n)}case p.SET_OPTIONS:{const n=e.payload,a=n.minMode?n.minMode:t.view.mode,r=P(Object(u.r)(n.value)&&n.value||Object(u.o)(n.value)&&Object(u.r)(n.value[0])&&n.value[0]||t.view.date,n.minDate,n.maxDate);return n.view={mode:a,date:r},n.value&&(Object(u.o)(n.value)&&(n.selectedRange=n.value),n.value instanceof Date&&(n.selectedDate=n.value)),Object.assign({},t,n)}case p.SELECT_RANGE:{const n={selectedRange:e.payload,view:t.view},a=t.view.mode,r=P(e.payload&&e.payload[0]||t.view.date,t.minDate,t.maxDate);return n.view={mode:a,date:r},Object.assign({},t,n)}case p.SET_MIN_DATE:return Object.assign({},t,{minDate:e.payload});case p.SET_MAX_DATE:return Object.assign({},t,{maxDate:e.payload});case p.SET_IS_DISABLED:return Object.assign({},t,{isDisabled:e.payload});case p.SET_DATE_CUSTOM_CLASSES:return Object.assign({},t,{dateCustomClasses:e.payload});default:return t}}function L(t,e){if("year"===t.view.mode&&"year"===t.minMode){const n=T(t,0),a=Object(u.F)(n,{year:-R});return Object(u.F)(a,e.payload)}return Object(u.F)(Object(u.G)(t.view.date,"month"),e.payload)}function D(t){return{locale:t.locale,monthTitle:t.monthTitle,yearTitle:t.yearTitle,dayLabel:t.dayLabel,monthLabel:t.monthLabel,yearLabel:t.yearLabel,weekNumbers:t.weekNumbers}}function P(t,e,n){const a=Array.isArray(t)?t[0]:t;return e&&Object(u.n)(e,a,"day")?e:n&&Object(u.p)(n,a,"day")?n:a}class M extends l.b{constructor(){const t=new o.a({type:"[datepicker] dispatcher init"});super(t,E,new l.a(v,t,E))}}class q extends g{constructor(t,e,n,r,i,s,u){super(),this._config=e,this._store=n,this._element=r,this._actions=i,this._positionService=u,this.valueChange=new a.EventEmitter,this.animationState="void",this._subs=[],this._effects=s,t.setStyle(r.nativeElement,"display","block"),t.setStyle(r.nativeElement,"position","absolute")}set value(t){this._effects.setValue(t)}ngOnInit(){this._positionService.setOptions({modifiers:{flip:{enabled:this._config.adaptivePosition}},allowedPositions:["top","bottom"]}),this._positionService.event$.pipe(Object(s.a)(1)).subscribe(()=>{this._positionService.disable(),this.animationState=this._config.isAnimated?this.isTopPosition?"animated-up":"animated-down":"unanimated"}),this.isOtherMonthsActive=this._config.selectFromOtherMonth,this.containerClass=this._config.containerClass,this._effects.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects(),this._subs.push(this._store.select(t=>t.selectedDate).subscribe(t=>this.valueChange.emit(t)))}get isTopPosition(){return this._element.nativeElement.classList.contains("top")}positionServiceEnable(){this._positionService.enable()}daySelectHandler(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||this._store.dispatch(this._actions.select(t.date))}ngOnDestroy(){for(const t of this._subs)t.unsubscribe();this._effects.destroy()}}class j{constructor(t,e,n,r,i){this._config=t,this.placement="bottom",this.triggers="click",this.outsideClick=!0,this.container="body",this.outsideEsc=!0,this.bsValueChange=new a.EventEmitter,this._subs=[],Object.assign(this,this._config),this._datepicker=i.createLoader(e,r,n),this.onShown=this._datepicker.onShown,this.onHidden=this._datepicker.onHidden}get isOpen(){return this._datepicker.isShown}set isOpen(t){t?this.show():this.hide()}set bsValue(t){this._bsValue&&t&&this._bsValue.getTime()===t.getTime()||(this._bsValue=t,this.bsValueChange.emit(t))}ngOnInit(){this._datepicker.listen({outsideClick:this.outsideClick,outsideEsc:this.outsideEsc,triggers:this.triggers,show:()=>this.show()}),this.setConfig()}ngOnChanges(t){this._datepickerRef&&this._datepickerRef.instance&&(t.minDate&&(this._datepickerRef.instance.minDate=this.minDate),t.maxDate&&(this._datepickerRef.instance.maxDate=this.maxDate),t.daysDisabled&&(this._datepickerRef.instance.daysDisabled=this.daysDisabled),t.datesDisabled&&(this._datepickerRef.instance.datesDisabled=this.datesDisabled),t.isDisabled&&(this._datepickerRef.instance.isDisabled=this.isDisabled),t.dateCustomClasses&&(this._datepickerRef.instance.dateCustomClasses=this.dateCustomClasses))}show(){this._datepicker.isShown||(this.setConfig(),this._datepickerRef=this._datepicker.provide({provide:h,useValue:this._config}).attach(q).to(this.container).position({attachment:this.placement}).show({placement:this.placement}),this._subs.push(this.bsValueChange.subscribe(t=>{this._datepickerRef.instance.value=t})),this._subs.push(this._datepickerRef.instance.valueChange.subscribe(t=>{this.bsValue=t,this.hide()})))}hide(){this.isOpen&&this._datepicker.hide();for(const t of this._subs)t.unsubscribe()}toggle(){if(this.isOpen)return this.hide();this.show()}setConfig(){this._config=Object.assign({},this._config,this.bsConfig,{value:this._bsValue,isDisabled:this.isDisabled,minDate:this.minDate||this.bsConfig&&this.bsConfig.minDate,maxDate:this.maxDate||this.bsConfig&&this.bsConfig.maxDate,daysDisabled:this.daysDisabled||this.bsConfig&&this.bsConfig.daysDisabled,dateCustomClasses:this.dateCustomClasses||this.bsConfig&&this.bsConfig.dateCustomClasses,datesDisabled:this.datesDisabled||this.bsConfig&&this.bsConfig.datesDisabled,minMode:this.minMode||this.bsConfig&&this.bsConfig.minMode})}ngOnDestroy(){this._datepicker.dispose()}}class F extends h{}class V extends q{constructor(t,e,n,a,r,i,s){super(t,e,n,a,r,i,s),t.setStyle(a.nativeElement,"display","inline-block"),t.setStyle(a.nativeElement,"position","static")}}class G extends h{constructor(){super(...arguments),this.displayMonths=2,this.isAnimated=!1}}class B extends g{constructor(t,e,n,r,i,s,u){super(),this._config=e,this._store=n,this._element=r,this._actions=i,this._positionService=u,this.valueChange=new a.EventEmitter,this.animationState="void",this._rangeStack=[],this._subs=[],this._effects=s,t.setStyle(r.nativeElement,"display","block"),t.setStyle(r.nativeElement,"position","absolute")}set value(t){this._effects.setRangeValue(t)}ngOnInit(){this._positionService.setOptions({modifiers:{flip:{enabled:this._config.adaptivePosition}},allowedPositions:["top","bottom"]}),this._positionService.event$.pipe(Object(s.a)(1)).subscribe(()=>{this._positionService.disable(),this.animationState=this._config.isAnimated?this.isTopPosition?"animated-up":"animated-down":"unanimated"}),this.containerClass=this._config.containerClass,this.isOtherMonthsActive=this._config.selectFromOtherMonth,this._effects.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects(),this._subs.push(this._store.select(t=>t.selectedRange).subscribe(t=>this.valueChange.emit(t)))}get isTopPosition(){return this._element.nativeElement.classList.contains("top")}positionServiceEnable(){this._positionService.enable()}daySelectHandler(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||(1===this._rangeStack.length&&(this._rangeStack=t.date>=this._rangeStack[0]?[this._rangeStack[0],t.date]:[t.date]),0===this._rangeStack.length&&(this._rangeStack=[t.date]),this._store.dispatch(this._actions.selectRange(this._rangeStack)),2===this._rangeStack.length&&(this._rangeStack=[]))}ngOnDestroy(){for(const t of this._subs)t.unsubscribe();this._effects.destroy()}}class z extends B{constructor(t,e,n,a,r,i,s){super(t,e,n,a,r,i,s),t.setStyle(a.nativeElement,"display","inline-block"),t.setStyle(a.nativeElement,"position","static")}}class Y{constructor(t,e,n,a,r){this._picker=t,this._localeService=e,this._renderer=n,this._elRef=a,this.changeDetection=r,this._onChange=Function.prototype,this._onTouched=Function.prototype,this._validatorChange=Function.prototype,this._picker.bsValueChange.subscribe(t=>{let e=t;if(t){const n=this._localeService.currentLocale,a=Object(u.k)(n);if(!a)throw new Error(`Locale "${n}" is not defined, please add it with "defineLocale(...)"`);e=a.preinput(t)}this._setInputValue(e),this._value!==e&&(this._value=e,this._onChange(e),this._onTouched()),this.changeDetection.markForCheck()}),this._localeService.localeChange.subscribe(()=>{this._setInputValue(this._value)})}_setInputValue(t){const e=t?Object(u.f)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale):"";this._renderer.setProperty(this._elRef.nativeElement,"value",e)}onChange(t){this.writeValue(t.target.value),this._onChange(this._value),this._onTouched()}validate(t){const e=t.value;if(null==e||""===e)return null;if(Object(u.q)(e)){if(!Object(u.r)(e))return{bsDate:{invalid:e}};if(this._picker&&this._picker.minDate&&Object(u.p)(e,this._picker.minDate,"date"))return this.writeValue(this._picker.minDate),{bsDate:{minDate:this._picker.minDate}};if(this._picker&&this._picker.maxDate&&Object(u.n)(e,this._picker.maxDate,"date"))return this.writeValue(this._picker.maxDate),{bsDate:{maxDate:this._picker.maxDate}}}}registerOnValidatorChange(t){this._validatorChange=t}writeValue(t){if(t){const e=this._localeService.currentLocale;if(!Object(u.k)(e))throw new Error(`Locale "${e}" is not defined, please add it with "defineLocale(...)"`);this._value=Object(u.B)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale),this._picker._config.useUtc&&(this._value=Object(u.H)(this._value))}else this._value=null;this._picker.bsValue=this._value}setDisabledState(t){this._picker.isDisabled=t,t?this._renderer.setAttribute(this._elRef.nativeElement,"disabled","disabled"):this._renderer.removeAttribute(this._elRef.nativeElement,"disabled")}registerOnChange(t){this._onChange=t}registerOnTouched(t){this._onTouched=t}onBlur(){this._onTouched()}hide(){this._picker.hide(),this._renderer.selectRootElement(this._elRef.nativeElement).blur()}}class H extends h{constructor(){super(...arguments),this.displayMonths=2}}class U{}class W{}class K{}class ${constructor(t,e,n){this._config=t,this._elRef=e,this._renderer=n}ngOnInit(){this.day.isToday&&this._config&&this._config.customTodayClass&&this._renderer.addClass(this._elRef.nativeElement,this._config.customTodayClass),"string"==typeof this.day.customClasses&&this.day.customClasses.split(" ").filter(t=>t).forEach(t=>{this._renderer.addClass(this._elRef.nativeElement,t)})}}const J=function(){var t={UP:0,DOWN:1};return t[t.UP]="UP",t[t.DOWN]="DOWN",t}();class Z{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter}navTo(t){this.onNavigate.emit(t?J.DOWN:J.UP)}view(t){this.onViewMode.emit(t)}}class Q{constructor(t){this._config=t,this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter,this.onHoverWeek=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{month:J.DOWN===t?-1:1}})}changeViewMode(t){this.onViewMode.emit(t)}selectDay(t){this.onSelect.emit(t)}selectWeek(t){if(!this._config.selectWeek)return;if(t.days&&t.days[0]&&!t.days[0].isDisabled&&this._config.selectFromOtherMonth)return void this.onSelect.emit(t.days[0]);if(0===t.days.length)return;const e=t.days.find(t=>(this._config.selectFromOtherMonth||!t.isOtherMonth)&&!t.isDisabled);this.onSelect.emit(e)}weekHoverHandler(t,e){this._config.selectWeek&&t.days.find(t=>(this._config.selectFromOtherMonth||!t.isOtherMonth)&&!t.isDisabled)&&(t.isHovered=e,this.isWeekHovered=e,this.onHoverWeek.emit(t))}hoverDay(t,e){this._config.selectFromOtherMonth&&t.isOtherMonth&&(t.isOtherMonthHovered=e),this.onHover.emit({cell:t,isHovered:e})}}class X{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{year:J.DOWN===t?-1:1}})}viewMonth(t){this.onSelect.emit(t)}hoverMonth(t,e){this.onHover.emit({cell:t,isHovered:e})}changeViewMode(t){this.onViewMode.emit(t)}}class tt{constructor(){this.ampm="ok",this.hours=0,this.minutes=0}}class et{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{year:16*(J.DOWN===t?-1:1)}})}viewYear(t){this.onSelect.emit(t)}hoverYear(t,e){this.onHover.emit({cell:t,isHovered:e})}changeViewMode(t){this.onViewMode.emit(t)}}class nt{static forRoot(){return{ngModule:nt,providers:[c.a,d.a,M,p,h,H,F,G,m,b]}}}class at{format(t,e,n){return Object(u.f)(t,e,n)}}class rt{constructor(){this.selectionDone=new a.EventEmitter(void 0),this.update=new a.EventEmitter(!1),this.activeDateChange=new a.EventEmitter(void 0),this.stepDay={},this.stepMonth={},this.stepYear={},this.modes=["day","month","year"],this.dateFormatter=new at}get activeDate(){return this._activeDate}set activeDate(t){this._activeDate=t}ngOnInit(){this.uniqueId="datepicker--"+Math.floor(1e4*Math.random()),this.initDate?(this.activeDate=this.initDate,this.selectedDate=new Date(this.activeDate.valueOf()),this.update.emit(this.activeDate)):void 0===this.activeDate&&(this.activeDate=new Date)}ngOnChanges(t){this.refreshView(),this.checkIfActiveDateGotUpdated(t.activeDate)}checkIfActiveDateGotUpdated(t){if(t&&!t.firstChange){const e=t.previousValue;e&&e instanceof Date&&e.getTime()!==t.currentValue.getTime()&&this.activeDateChange.emit(this.activeDate)}}setCompareHandler(t,e){"day"===e&&(this.compareHandlerDay=t),"month"===e&&(this.compareHandlerMonth=t),"year"===e&&(this.compareHandlerYear=t)}compare(t,e){if(void 0!==t&&void 0!==e)return"day"===this.datepickerMode&&this.compareHandlerDay?this.compareHandlerDay(t,e):"month"===this.datepickerMode&&this.compareHandlerMonth?this.compareHandlerMonth(t,e):"year"===this.datepickerMode&&this.compareHandlerYear?this.compareHandlerYear(t,e):void 0}setRefreshViewHandler(t,e){"day"===e&&(this.refreshViewHandlerDay=t),"month"===e&&(this.refreshViewHandlerMonth=t),"year"===e&&(this.refreshViewHandlerYear=t)}refreshView(){"day"===this.datepickerMode&&this.refreshViewHandlerDay&&this.refreshViewHandlerDay(),"month"===this.datepickerMode&&this.refreshViewHandlerMonth&&this.refreshViewHandlerMonth(),"year"===this.datepickerMode&&this.refreshViewHandlerYear&&this.refreshViewHandlerYear()}dateFilter(t,e){return this.dateFormatter.format(t,e,this.locale)}isActive(t){return 0===this.compare(t.date,this.activeDate)&&(this.activeDateId=t.uid,!0)}createDateObject(t,e){const n={};return n.date=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n.date=this.fixTimeZone(n.date),n.label=this.dateFilter(t,e),n.selected=0===this.compare(t,this.selectedDate),n.disabled=this.isDisabled(t),n.current=0===this.compare(t,new Date),n.customClass=this.getCustomClassForDate(n.date),n}split(t,e){const n=[];for(;t.length>0;)n.push(t.splice(0,e));return n}fixTimeZone(t){const e=t.getHours();return new Date(t.getFullYear(),t.getMonth(),t.getDate(),23===e?e+2:0)}select(t,e=!0){this.datepickerMode===this.minMode?(this.activeDate||(this.activeDate=new Date(0,0,0,0,0,0,0)),this.activeDate=new Date(t.getFullYear(),t.getMonth(),t.getDate()),this.activeDate=this.fixTimeZone(this.activeDate),e&&this.selectionDone.emit(this.activeDate)):(this.activeDate=new Date(t.getFullYear(),t.getMonth(),t.getDate()),this.activeDate=this.fixTimeZone(this.activeDate),e&&(this.datepickerMode=this.modes[this.modes.indexOf(this.datepickerMode)-1])),this.selectedDate=new Date(this.activeDate.valueOf()),this.update.emit(this.activeDate),this.refreshView()}move(t){let e;if("day"===this.datepickerMode&&(e=this.stepDay),"month"===this.datepickerMode&&(e=this.stepMonth),"year"===this.datepickerMode&&(e=this.stepYear),e){const n=this.activeDate.getFullYear()+t*(e.years||0),a=this.activeDate.getMonth()+t*(e.months||0);this.activeDate=new Date(n,a,1),this.refreshView(),this.activeDateChange.emit(this.activeDate)}}toggleMode(t){const e=t||1;this.datepickerMode===this.maxMode&&1===e||this.datepickerMode===this.minMode&&-1===e||(this.datepickerMode=this.modes[this.modes.indexOf(this.datepickerMode)+e],this.refreshView())}getCustomClassForDate(t){if(!this.customClass)return"";const e=this.customClass.find(e=>e.date.valueOf()===t.valueOf()&&e.mode===this.datepickerMode,this);return void 0===e?"":e.clazz}compareDateDisabled(t,e){if(void 0!==t&&void 0!==e)return"day"===t.mode&&this.compareHandlerDay?this.compareHandlerDay(t.date,e):"month"===t.mode&&this.compareHandlerMonth?this.compareHandlerMonth(t.date,e):"year"===t.mode&&this.compareHandlerYear?this.compareHandlerYear(t.date,e):void 0}isDisabled(t){let e=!1;return this.dateDisabled&&this.dateDisabled.forEach(n=>{0===this.compareDateDisabled(n,t)&&(e=!0)}),this.dayDisabled&&(e=e||this.dayDisabled.indexOf(t.getDay())>-1),e||this.minDate&&this.compare(t,this.minDate)<0||this.maxDate&&this.compare(t,this.maxDate)>0}}class it{constructor(){this.locale="en",this.datepickerMode="day",this.startingDay=0,this.yearRange=20,this.minMode="day",this.maxMode="year",this.showWeeks=!0,this.formatDay="DD",this.formatMonth="MMMM",this.formatYear="YYYY",this.formatDayHeader="dd",this.formatDayTitle="MMMM YYYY",this.formatMonthTitle="YYYY",this.onlyCurrentMonth=!1,this.monthColLimit=3,this.yearColLimit=5,this.shortcutPropagation=!1}}class st{constructor(t){this.datepickerMode="day",this.showWeeks=!0,this.selectionDone=new a.EventEmitter(void 0),this.activeDateChange=new a.EventEmitter(void 0),this.onChange=Function.prototype,this.onTouched=Function.prototype,this._now=new Date,this.config=t,this.configureOptions()}get activeDate(){return this._activeDate||this._now}set activeDate(t){this._activeDate=t}configureOptions(){Object.assign(this,this.config)}onUpdate(t){this.activeDate=t,this.onChange(t)}onSelectionDone(t){this.selectionDone.emit(t)}onActiveDateChange(t){this.activeDateChange.emit(t)}writeValue(t){if(0!==this._datePicker.compare(t,this._activeDate))return t&&t instanceof Date?(this.activeDate=t,void this._datePicker.select(t,!1)):void(this.activeDate=t?new Date(t):void 0)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}}class ut{constructor(t){this.labels=[],this.rows=[],this.weekNumbers=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepDay={months:1},this.datePicker.setRefreshViewHandler((function(){const e=this.activeDate.getFullYear(),n=this.activeDate.getMonth(),a=new Date(e,n,1),r=this.startingDay-a.getDay(),i=r>0?7-r:-r,s=new Date(a.getTime());i>0&&s.setDate(1-i);const u=t.getDates(s,42),o=[];for(let t=0;t<42;t++){const e=this.createDateObject(u[t],this.formatDay);e.secondary=u[t].getMonth()!==n,e.uid=this.uniqueId+"-"+t,o[t]=e}t.labels=[];for(let l=0;l<7;l++)t.labels[l]={},t.labels[l].abbr=this.dateFilter(o[l].date,this.formatDayHeader),t.labels[l].full=this.dateFilter(o[l].date,"EEEE");if(t.title=this.dateFilter(this.activeDate,this.formatDayTitle),t.rows=this.split(o,7),this.showWeeks){t.weekNumbers=[];const e=(11-this.startingDay)%7,n=t.rows.length;for(let a=0;a<n;a++)t.weekNumbers.push(t.getISO8601WeekNumber(t.rows[a][e].date))}}),"day"),this.datePicker.setCompareHandler((function(t,e){const n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),a=new Date(e.getFullYear(),e.getMonth(),e.getDate());return n.getTime()-a.getTime()}),"day"),this.datePicker.refreshView()}getDates(t,e){const n=new Array(e);let a,r=new Date(t.getTime()),i=0;for(;i<e;)a=new Date(r.getTime()),a=this.datePicker.fixTimeZone(a),n[i++]=a,r=new Date(a.getFullYear(),a.getMonth(),a.getDate()+1);return n}getISO8601WeekNumber(t){const e=new Date(t.getTime());e.setDate(e.getDate()+4-(e.getDay()||7));const n=e.getTime();return e.setMonth(0),e.setDate(1),Math.floor(Math.round((n-e.getTime())/864e5)/7)+1}}class ot{constructor(t){this.rows=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepMonth={years:1},this.datePicker.setRefreshViewHandler((function(){const e=new Array(12),n=this.activeDate.getFullYear();let a;for(let t=0;t<12;t++)a=new Date(n,t,1),a=this.fixTimeZone(a),e[t]=this.createDateObject(a,this.formatMonth),e[t].uid=this.uniqueId+"-"+t;t.title=this.dateFilter(this.activeDate,this.formatMonthTitle),t.rows=this.split(e,t.datePicker.monthColLimit)}),"month"),this.datePicker.setCompareHandler((function(t,e){const n=new Date(t.getFullYear(),t.getMonth()),a=new Date(e.getFullYear(),e.getMonth());return n.getTime()-a.getTime()}),"month"),this.datePicker.refreshView()}}class lt{constructor(t){this.rows=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepYear={years:this.datePicker.yearRange},this.datePicker.setRefreshViewHandler((function(){const e=new Array(this.yearRange);let n;const a=t.getStartingYear(this.activeDate.getFullYear());for(let t=0;t<this.yearRange;t++)n=new Date(a+t,0,1),n=this.fixTimeZone(n),e[t]=this.createDateObject(n,this.formatYear),e[t].uid=this.uniqueId+"-"+t;t.title=[e[0].label,e[this.yearRange-1].label].join(" - "),t.rows=this.split(e,t.datePicker.yearColLimit)}),"year"),this.datePicker.setCompareHandler((function(t,e){return t.getFullYear()-e.getFullYear()}),"year"),this.datePicker.refreshView()}getStartingYear(t){return(t-1)/this.datePicker.yearRange*this.datePicker.yearRange+1}}class dt{static forRoot(){return{ngModule:dt,providers:[it]}}}},im1V:function(t,e,n){var a=n("Q7RW"),r=n("KNDS");t.exports=function(t){return null!=t&&r(t.length)&&!a(t)}},insk:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");n("20UP");class r{constructor(t,e,n){this.sanitizer=t,this.settingsService=e,this.i18n=n,this.grafanaExist=!1,this.mode="&kiosk",this.loading=!0,this.styles={},this.dashboardExist=!0,this.icons=a.a,this.DEFAULT_TIME="from=now-1h&to=now",this.grafanaTimes=[{name:this.i18n("Last 5 minutes"),value:"from=now-5m&to=now"},{name:this.i18n("Last 15 minutes"),value:"from=now-15m&to=now"},{name:this.i18n("Last 30 minutes"),value:"from=now-30m&to=now"},{name:this.i18n("Last 1 hour (Default)"),value:"from=now-1h&to=now"},{name:this.i18n("Last 3 hours"),value:"from=now-3h&to=now"},{name:this.i18n("Last 6 hours"),value:"from=now-6h&to=now"},{name:this.i18n("Last 12 hours"),value:"from=now-12h&to=now"},{name:this.i18n("Last 24 hours"),value:"from=now-24h&to=now"},{name:this.i18n("Yesterday"),value:"from=now-1d%2Fd&to=now-1d%2Fd"},{name:this.i18n("Today so far"),value:"from=now%2Fd&to=now"},{name:this.i18n("Day before yesterday"),value:"from=now-2d%2Fd&to=now-2d%2Fd"},{name:this.i18n("Last 2 days"),value:"from=now-2d&to=now"},{name:this.i18n("This day last week"),value:"from=now-7d%2Fd&to=now-7d%2Fd"},{name:this.i18n("Previous week"),value:"from=now-1w%2Fw&to=now-1w%2Fw"},{name:this.i18n("This week so far"),value:"from=now%2Fw&to=now"},{name:this.i18n("Last 7 days"),value:"from=now-7d&to=now"},{name:this.i18n("Previous month"),value:"from=now-1M%2FM&to=now-1M%2FM"},{name:this.i18n("This month so far"),value:"from=now%2FM&to=now"},{name:this.i18n("Last 30 days"),value:"from=now-30d&to=now"},{name:this.i18n("Last 90 days"),value:"from=now-90d&to=now"},{name:this.i18n("Last 6 months"),value:"from=now-6M&to=now"},{name:this.i18n("Last 1 year"),value:"from=now-1y&to=now"},{name:this.i18n("Previous year"),value:"from=now-1y%2Fy&to=now-1y%2Fy"},{name:this.i18n("This year so far"),value:"from=now%2Fy&to=now"},{name:this.i18n("Last 2 years"),value:"from=now-2y&to=now"},{name:this.i18n("Last 5 years"),value:"from=now-5y&to=now"}]}ngOnInit(){this.time=this.DEFAULT_TIME,this.styles={one:"grafana_one",two:"grafana_two",three:"grafana_three",four:"grafana_four"},this.settingsService.ifSettingConfigured("api/grafana/url",t=>{this.grafanaExist=!0,this.loading=!1,this.baseUrl=t+"/d/",this.getFrame()}),this.panelStyle=this.styles[this.grafanaStyle]}getFrame(){this.settingsService.validateGrafanaDashboardUrl(this.uid).subscribe(t=>this.dashboardExist=200===t),this.url=this.baseUrl+this.uid+"/"+this.grafanaPath+"&refresh=2s"+this.mode+"&"+this.time,this.grafanaSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.url)}onTimepickerChange(){this.grafanaExist&&this.getFrame()}reset(){this.time=this.DEFAULT_TIME,this.grafanaExist&&this.getFrame()}ngOnChanges(){this.grafanaExist&&this.getFrame()}}},ioe2:function(t,e,n){var a=n("xAZD");t.exports=function(t,e){return a(e,(function(e){return t[e]}))}},iqWW:function(t,e,n){"use strict";var a=n("ZUd8").charAt;t.exports=function(t,e,n){return e+(n?a(t,e).length:1)}},isl5:function(t,e,n){var a=n("Wa4q");t.exports=a["__core-js_shared__"]},iutN:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("FE24"),i=n("GS7A"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function u(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[],[[2,"dropup",null],[2,"dropdown",null],[2,"show",null],[2,"open",null]],null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){var n=e.component;t(e,0,0,"up"===n.direction,"down"===n.direction,n.isOpen,n.isOpen)}))}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-dropdown-container",[["style","display:block;position: absolute;"]],null,null,null,u,s)),a["ɵdid"](1,180224,null,0,r.b,[r.f,a.ChangeDetectorRef,a.Renderer2,a.ElementRef,i.b],null,null)],null,null)}var l=a["ɵccf"]("bs-dropdown-container",r.b,o,{},{},["*"])},j09V:function(t,e,n){(function(t){var a=n("Wa4q"),r=e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,s=i&&i.exports===r?a.Buffer:void 0,u=s?s.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,a=u?u(n):new t.constructor(n);return t.copy(a),a}}).call(this,n("YuTi")(t))},j8L6:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("25BL"),i=n("uIqm"),s=n("DqMs"),u=n("/NlG"),o=n("GiVz"),l=n("o4+5"),d=n("aXbf"),c=n("SVse");n("b5OY"),n("pxLl"),n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return b}));var f=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function h(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," "," "])),a["ɵppd"](1,1)],null,(function(t,e){var n=a["ɵunv"](e,0,0,t(e,1,0,a["ɵnov"](e.parent.parent,0),e.context.row.value));t(e,0,0,n,e.context.row.unit)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.getCounters(n)&&a),a}),r.b,r.a)),a["ɵdid"](1,2867200,null,0,i.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoSave:[3,"autoSave"]},{fetchData:"fetchData"}),(t()(),a["ɵand"](0,[[1,2],["valueTpl",2]],null,0,null,h))],(function(t,e){var n=e.component;t(e,1,0,n.counters,n.columns,"flex",!1)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,u.a,[o.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Performance counters not available"]))],(function(t,e){t(e,1,0,"warning")}),null)}function b(t){return a["ɵvid"](0,[a["ɵpid"](0,l.a,[d.a]),a["ɵqud"](671088640,1,{valueTpl:0}),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](3,16384,null,0,c.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["warning",2]],null,0,null,p))],(function(t,e){t(e,3,0,e.component.counters,a["ɵnov"](e,4))}),null)}},"jKX/":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));class a{constructor(t=[]){["read","create","update","delete"].forEach(e=>this[e]=t.includes(e))}}class r{constructor(t){this.hosts=new a(t.hosts),this.configOpt=new a(t["config-opt"]),this.pool=new a(t.pool),this.osd=new a(t.osd),this.monitor=new a(t.monitor),this.rbdImage=new a(t["rbd-image"]),this.iscsi=new a(t.iscsi),this.rbdMirroring=new a(t["rbd-mirroring"]),this.rgw=new a(t.rgw),this.cephfs=new a(t.cephfs),this.manager=new a(t.manager),this.log=new a(t.log),this.user=new a(t.user),this.grafana=new a(t.grafana),this.prometheus=new a(t.prometheus),this.nfs=new a(t["nfs-ganesha"])}}},jNLg:function(t,e,n){var a=n("hmSm"),r=n("QpVZ"),i=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,o=/^0o[0-7]+$/i,l=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(r(t))return NaN;if(a(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=a(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(i,"");var n=u.test(t);return n||o.test(t)?l(t.slice(2),n?2:8):s.test(t)?NaN:+t}},jUeY:function(t,e,n){!function(t){"use strict";t.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(t,e){return t?"string"==typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(t,e,n){return t>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(t){return"μ"===(t+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,e){var n,a=this._calendarEl[t],r=e&&e.hours();return((n=a)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(a=a.apply(e)),a.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("wd/R"))},jV1L:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({selector:"tree-node-expander",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <span\n        *ngIf="node.hasChildren"\n        [class.toggle-children-wrapper-expanded]="node.isExpanded"\n        [class.toggle-children-wrapper-collapsed]="node.isCollapsed"\n        class="toggle-children-wrapper"\n        (click)="node.mouseAction(\'expanderClick\', $event)"\n      >\n        <span class="toggle-children"></span>\n      </span>\n      <span *ngIf="!node.hasChildren" class="toggle-children-placeholder">\n      </span>\n    </ng-container>\n  '})],t)}()},jVDg:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n){this.poolName=t,this.namespace=e,this.imageName=n}static fromString(t){const e=t.split("/");return new this(e[0],e.length>=3?e[1]:null,e.length>=3?e[2]:e[1])}getNameSpace(){return this.namespace?this.namespace+"/":""}toString(){return`${this.poolName}/${this.getNameSpace()}${this.imageName}`}toStringEncoded(){return encodeURIComponent(`${this.poolName}/${this.getNameSpace()}${this.imageName}`)}}},jVdC:function(t,e,n){!function(t){"use strict";var e="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function a(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function r(t,e,n){var r=t+" ";switch(n){case"ss":return r+(a(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return r+(a(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return r+(a(t)?"godziny":"godzin");case"MM":return r+(a(t)?"miesiące":"miesięcy");case"yy":return r+(a(t)?"lata":"lat")}}t.defineLocale("pl",{months:function(t,a){return t?""===a?"("+n[t.month()]+"|"+e[t.month()]+")":/D MMMM/.test(a)?n[t.month()]:e[t.month()]:e},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},jZKg:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("HDdC"),r=n("quSY");function i(t,e){return new a.a(n=>{const a=new r.a;let i=0;return a.add(e.schedule((function(){i!==t.length?(n.next(t[i++]),n.closed||a.add(this.schedule())):n.complete()}))),a})}},jfSC:function(t,e,n){!function(t){"use strict";var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};t.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(t){return/بعد از ظهر/.test(t)},meridiem:function(t,e,n){return t<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(t){return t.replace(/[۰-۹]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("wd/R"))},jnO4:function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(t){return function(e,n,i,s){var u=a(e),o=r[t][a(e)];return 2===u&&(o=o[n?0:1]),o.replace(/%d/i,e)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];t.defineLocale("ar",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},jqoL:function(t,e,n){var a=n("+NyF"),r=n("RvDp");t.exports=function(t,e){return null!=t&&r(t,e,a)}},jqst:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="id-ID">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Pengalih navigasi</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dasbor</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klaster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hos</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Layanan</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfigurasi</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>peta CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Modul Ceph Manajer</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Log</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blok</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Pencerminan</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemfile</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Pengguna</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Buket</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Pilih bahasa</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Memuat data panel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Pemilih Waktu Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Reset Pengaturan</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Kembali</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Gagal memuat data.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>dipilih</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>ditemukan</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nama</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Deskripsi</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Deskripsi lengkap</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Bawaan</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon bawaan</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Nilai</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Simpan</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Penampil peta CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Memuat...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nama hos</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Isian ini tidak boleh kosong.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ya, saya yakin.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Batal</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Tutup</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Daftar Hos</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performa Keseluruhan</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Entri tidak ditemukan</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Log Klaster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Log Audit</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Memuat konfigurasi...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Konfigurasi tidak dapat dimuat.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edit modul Ceph Manajer</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Nilai yang dimasukkan bukan UUID yang valid, cth: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Nilai yang dimasukkan harus alamat IP yang valid.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Nilai yang dimasukkan harus berupa angka.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Nilai yang dimasukkan harus berupa angka atau desimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Perbarui</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID Klaster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap diubah</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kuorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kuorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con yang dibutuhkan</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon yang dibutuhkan</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Memenuhi Kuorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Tidak dalam Kuorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Tambah</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fitur</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD Klaster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Kirim</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Tingkat lanjut...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioritas pemulihan OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioritas</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Ubah nilai prioritas</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Isian ini harus diisi!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Nilai harus antara 0 dan 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ubah bobot</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Dalam } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {dalam } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Daftar OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Nilai</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edit</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Hapus</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Kesehatan</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistik </target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klien</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Semua klien dapat mengakses</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Alamat</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Wajib diisi</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Harus mengandung satu atau lebih nilai yang dipisahkan koma</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Contoh:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipe Akses</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Tambah klien</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Klaster tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Pilih klaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Tambah daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend Penyimpanan</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Tidak ada pool data tersedia --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Pilih backend penyimpanan --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Pengguna Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Pengguna tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Pilih pengguna gerbang objek --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID Pengguna CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Klien tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Pilih klien cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nama CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Label Keamanan</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Aktifkan label keamanan</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS Path</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Lintasan atau path harus dimulai dengan \'/\' dan diikuti dengan kata</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Direktori baru akan dibuat</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Path</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Path hanya boleh berupa \'/\' atau kata</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Buket baru akan dibuat</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protokol NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klien mungkin tidak dapat mount subdirektori (cth. jika Tag = foo, klien mungkin tidak bisa mount foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Dengan menggunakan opsi Tag yang berbeda, Path yang sama akan diekspor beberapa kali.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Dengan menggunakan opsi Pseudo yang berbeda, Path yang sama akan diekspor beberapa kali.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Tipe akses tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Pilih tipe akses --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Squash tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Pilih jenis squashing id pengguna yang akan dilakukan --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protokol Transport</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Selamat datang di Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nama pengguna harus diisi</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Kata sandi harus diisi</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Masuk</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Maaf, pengguna tidak terdaftar di Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Terlarang</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Maaf, Anda tidak dizinkan melihat hal yang Anda inginkan.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Konfigurasi RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Menghapus nilai konfigurasi lokal. Nilai konfigurasi induk akan diturun dan digunakan.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Nilai minimum adalah 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Daftar pool</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nama hanya boleh terdiri dari alfanumerik, tanda hubung, dan garis bawah.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Nama profil erasure code sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Pecahan data (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Harus sama dengan atau lebih dari 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Pecahan Coding (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Harus sama dengan atau lebih dari 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Penduga daya tahan (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalitas (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domain kegagalan Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalitas Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Tidak ada</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Teknik</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Ukuran paket</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush root</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Kelas perangkat Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>apa saja</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Direktori</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nama...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Nama pool Ceph yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Jenis pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Pilih jenis pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grup penempatan</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Dibutuhkan setidaknya satu grup penempatan!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Klaster Anda tidak dapat menangani PG sebanyak ini. Mohon hitung ulang jumlah PG yang dibutuhkan.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Bantuan penghitungan</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Jumlah replikasi</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flag</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC Overwrites</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplikasi</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil erasure code</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Tidak ada profil erasure code --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Pilih profil erasure code --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Aturan CRUSH</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Pilih aturan crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Aturan crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush steps</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Kompresi</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Mode</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritma</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Tidak ada algoritma pengompresian erasure --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Ukuran blob minimum</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>cth. 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Nilai harus lebih besar dari 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Ukuran maksimum blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>cth. 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Nilai harus lebih besar dari ukuran minimum blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rasio</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rasio kompresi</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Nilai harus antara 0.0 dan 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>cth. 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detail</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detail Performa</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detil Cache Bertingkat</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Pindahkan image ke tempat sampah</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Proteksi berakhir pada</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>TIDAK DIPROTEKSI</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Format tanggal salah. Mohon gunakan "TTTT-BB-HH JJ:mm:dd".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Proteksi telah kedaluarsa. Mohon pilih tanggal masa mendatang atau kosongkan.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Pindahkan Image</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Ikhtisar</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Target</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Otentikasi Discovery</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Pengguna</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nama pengguna harus terdiri dari 8 hingga 64 karakter dan\nhanya boleh mengandung huruf, \'.\', \'@\', \'-\', \'_\' atau \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Kata sandi</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Pengguna Bersama</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Kata sandi bersama</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informasi tersedia:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI Target tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool Data</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Dibuat</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Ukuran</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objek</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Ukuran objek</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Disiapkan</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total disiapkan</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unit setrip</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Jumlah setrip</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Induk</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Awalan nama blok</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Urutan</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshot</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Pengaturan ini akan membatalkan nilai global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Ini adalah nilai global. Tidak ada nilai yang diset untuk image ini.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' dan \'@\' tidak diperbolehkan.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Tidak ada pool rbd tersedia --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pilih pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Gunakan pool data terdedikasi</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool data</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool terdedikasi yang menyimpan data-objek dari RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Anda harus menaikkan ukuran.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Tingkat lanjut</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Setrip</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unit setrip</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Pilih ukuran setrip --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Isian ini harus diisi karena jumlah setrip telah ditentukan!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Unit setrip lebih besar dari ukuran objek.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Jumlah setrip</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Isian wajib diisi karena unit setrip didefinisikan!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Jumlah setrip harus lebih besar dari 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Anda akan mengembalikan semula</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Kosongkan Tempah Sampah</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Semua</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nama Pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Pulihkan Image</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Untuk memulihkan</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>ketik nama baru image dan pilih</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nama Baru</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Kedaluwarsa pada</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Diproteksi hingga</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologi iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Mengganti parameter ini dari nilai bawaan biasanya tidak diperlukan.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Pengaturan</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Konfirmasi</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pengaturan Lanjut</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Target IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Pola IQN salah.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Contoh: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Informasi lainnya</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Pengaturan lanjutan target ini telah dimodifikasi.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portal</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Tambahkan portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Pengaturan Image ini telah dimodifikasi.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Tambahkan image</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Otentikasi ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inisiator</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inisiator</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Klien IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Inisiator IQN harus unik.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nama pengguna harus terdiri atas 8 hingga 64 karakter dan\nhanya boleh mengandung huruf, \'.\', \'@\', \'-\', \'_\' atau \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Inisiator termasuk ke dalam grup. Image akan dikonfigurasi di dalam grup.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Tidak ada yang ditambahkan.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Tambahkan inisiator</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grup</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grup</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Tambahkan grup</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Tempat sampah</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Masalah</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Menyinkronkan</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Siap</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Edit mode pencerminan pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Klaster mitra harus dihapus sebelum menonaktfikan pencerminan.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Tambah} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nama Klaster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Nama klaster tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Alamat Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Alamat dengan pemisah-koma...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Alamat monitor tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX Key</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-encoded key...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Kunci CephX harus base64 encoded.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Penghitung kinerja tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Daftar Daemon</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Penghitung Performa</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Memuat data buket...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Id</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Nilai tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Nama yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Pemilik</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Pilih pengguna --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Diaktifkan</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Jenis indeks</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Aturan penempatan</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Penanda</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Penanda maksimum</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versi</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versi Master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Modifikasi waktu</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Zona grup</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kuota Buket</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Ukuran maksimum</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Objek maksimum</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nama pengguna</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Pilih nama pengguna --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Kunci otomatis-dibuat</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Kunci akses</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Kunci rahasia</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nama lengkap</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Alamat email</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Dihentikan</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistem</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Buket maksimum</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subpengguna</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Kemampuan</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kuota pengguna</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Tampilkan</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Kunci</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipe</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Pilih tipe --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Izin</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Pilih izin --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subpengguna</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>ID subpengguna sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>baca, tulis</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>penuh</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Kunci Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Sandi otomatis-dibuat</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Memuat data pengguna...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Data pengguna tidak dapat dimuat.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>ID pengguna yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ini bukan alamat email yang valid.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Alamat email yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Maks. buket</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Dimatikan</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Ubahsuai</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Kunci S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Tidak ada sub-pengguna.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Kunci tidak ditemukan.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Kemampuan tidak ada.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Ukuran tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Ukuran maks.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objek tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Objek maks.</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Nilai yang dimasukkan harus &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Deskripsi...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Izin</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Peran</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Konfirmasi kata sandi</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Konfirmasi kata sandi tidak sesuai dengan kata sandi.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Email</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Email tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Anda akan menghapus izin "pengguna baca / perbarui" dari diri Anda sendiri.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Jika melanjutkan, Anda tidak akan lagi dapat menambahkan atau menghapus peran dari pengguna manapun.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Anda yakin ingin melanjutkan?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Bantuan</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentasi </target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Tentang</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Pengaturan Dasbor</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Manajemen Pengguna</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Pengguna masuk</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Keluar</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atribut (peta OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadata tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadata</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Penghitung kinerja</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Tulis</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Baca</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Nilai saat ini</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Maks</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Sumber</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Level</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Boleh diperbarui saat dijalankan (bisa diedit)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tag</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Nilai Enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Lihat juga</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status Klaster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manajer Daemon</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Server Metadata</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Gateway iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS klien</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Throughput Pengguna</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Baca/Tulis Klien</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Scrub</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Kinerja</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Kapasitas mentah</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PG per OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapasitas</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Peringkat</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Terkini</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Otentikasi penemuan telah diperbarui</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Tidak ada portal yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Tidak ada image yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Tidak ada image yang tersedia. Mohon pastikan Anda telah menambahkan image ke target.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Tidak ada inisiator tersedia. Mohon pastikan Anda telah menambahkan inisiator ke target.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Target</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Keadaan</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Baca Bytes</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Tulis Bytes</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Ops Baca</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Ops Tulis</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Sejak</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Isu</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Kemajuan</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode Edit</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Tambahkan Mitra</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Edit Mitra</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Hapus Mitra</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Pemimpin</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Lokal</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Jauh</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>mitra pencerminan</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Kunci</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Perataan mendalam</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Lapisan</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Kunci eksklusif</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Peta objek (butuh kunci-eksklusif)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Penjurnalan (membutuhkan kunci-eksklusif)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>TIDAK DIPROTEKSI</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Kembalikan snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Kembalikan</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Dihapus pada</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipe</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>keadaan</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versi</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Hos</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>induk</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon siaga</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Peringkat</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivitas</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Penggunaan</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Diperbarui</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Nilai dapat diperbarui saat runtime.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemon/klien tidak dapat mengambil nilai dari\nbasis data konfigurasi monitor. Kami tidak mengizinkan mengubah ini dari \'ceph config\nset ...\'. Pilihan ini harus dikonfigurasi melalui ceph.conf atau CLI.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Pilihan hanya dapat bekerja selama daemon dimulai.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Pilihan hanya berpengaruh pada pembuatan klaster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Pilihan hanya berpengaruh pada pembuatan daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Layanan</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Nilai saat ini</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Dapat diedit</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Aktifkan</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Nonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Menghubungkan kembali, mohon tunggu...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Alamat Publik</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Buka Sesi</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Tidak boleh Masuk</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD yang telah ditandai keluar tidak akan ditandai masuk saat mereka menyala</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Tidak boleh Keluar</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD tidak akan otomatis ditandai keluar setelah interval dikonfigurasi</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Tidak Nyala</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD tidak diizinkan menyala</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Tidak Mati</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Laporan kegagalan OSD sedang diabaikan sehingga monitor tidak akan menandai OSD mati</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Jeda</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Jeda baca dan tulis</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nonaktifkan Scrub</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Scrubbing dinonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nonaktifkan Deep Scrub</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Deep Scrubing dinonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Tidak ada Penambalan</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Penambalan PG dihentikan</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Tidak ada Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Pemulihan PG dihentikan</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Urutan Bitwise</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Gunakan urutan bitwise</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Buang Snapdirs</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD memiliki snapset yang dikonversi</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Pulihkan yang telah dihapus</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Penghapusan dilakukan saat pemulihan bukan saat bermitra</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Batas Maks Log PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Taruh batas maks pada panjang log pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flag OSD diperbarui</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>keluar</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>masuk</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>gugur</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Tandai</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD hilang</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>ditandai hilang</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Buang</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>dibuang</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>hancurkan</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>dihancurkan</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>hapus</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bita baca</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bita tulis</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Ops baca</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Ops tulis</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Maks Penambalan</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Maks Pemulihan Aktif</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Maks Menjalankan Pemulihan Tunggal</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Jeda Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Tugas</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Keparahan</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Dimulai</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Terpakai</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Tersedia</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Bersih</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Bekerja</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Peringatan</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Tidak diketahui</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>nyala</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>tidak ada filesistem</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktif</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>siaga</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon aktif</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kuorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Layanan NFS Ganesha belum dikonfigurasi.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Pengguna CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Filesistem CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(diturunkan dari konfig global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>diturunkan dari konfig global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Pilih jenis squashing id pengguna yang akan dilakukan --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Tidak ada daemon tersedia.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Mode Cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min Waktu Usir</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min Waktu Buang</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Target Maks Bita</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Target Maks Objek</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Tidak ada aplikasi ditambahkan</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Batas aplikasi tercapai</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Sebuah pool hanya dapat memiliki empat definisi aplikasi.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Karakter diperbolehkan \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Panjang maksimum 128 karakter</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Saring atau tambah aplikasi</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Tambah aplikasi</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil erasure code</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Ukuran Replikasi</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Perubahan Terakhir</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil Erasure Code</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Aturan Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>buket</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>buket</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>pengguna</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>pengguna</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Cakupan</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Baca</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Buat</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Peran Sistem</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Perbarui pengguna</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Lanjutkan</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Anda dikeluarkan otomatis karena peran Anda telah berubah.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Tiap objek dipecah dalam pecahan-data, masing-masing disimpan pada OSD yang berbeda.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Hitung pecahan coding untuk tiap objek dan simpan pada OSD yang berbeda.\nJumlah pecahan data juga menjadi jumlah OSD yang diperbolehkan mati tanpa kehilangan data.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Plugin jerasure merupakan plugin paling umum dan fleksibel,\nserta merupakan plugin bawaan Ceph untuk pool erasure code.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Teknik yang lebih fleksibel yaitu reed_sol_van : cukup mengeset k\ndan m. Teknik cauchy_good bisa lebih cepat, namun Anda harus memilih ukuran paket\ndengan seksama. Semua reed_sol_r6_op, liberation, blaum_roth, liber8tion setara dengan RAID6\ndalam hal mereka hanya bisa diatur dengan m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Penyandian dilakukan setiap saat pada ukuran bita paket.\nSulit untuk menentukan ukuran paket yang tepat.\nSilakan cek dokumentasi jerasure untuk informasi lebih mendalam.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Pada plugin jerasure, saat objek dengan erasure code disimpan pada\nbanyak OSD, pemulihan dari OSD yang hilang membutuhkan akses dari OSD lainnya.\nContoh, saat jerasure dikonfigurasi dengan k=8 dan m=4, saat satu OSD mati, maka pemulihan akan membutuhkan pembacaan dari tujuh OSD lainnya.\n\nPlugin lrc erasure code membuat pecahan paritas lokal agar dapat memulihkan \ndengan OSD yang lebih sedikit. Contoh, jika lrc dikonfigurasi dengan k=8, m=4, dan l=4, maka lrc akan\nmembuat pecahan paritas tambahan tiap empat OSD. Saat satu OSD mati, maka pemulihan dapat dilakukan hanya dengan 4 OSD, alih-alih 7 OSD.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Kelompokkan pecahan data dan coding ke dalam ukuran lokalitas. Controh\nuntuk k=4 dan m=2, saat lokalitas=3 dua grup dari tiga akan dibuat. Setiap set akan\ndipulihkan tanpa membaca pecahan dari set lainnya.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Tipe buket crush setiap set pecahan yang didefinisikan oleh l  \nakan disimpan. Contoh, jika diset pada rak, tiap grup pecahan l akan \nditempatkan pada rak berbeda. Ini akan digunakan pada aturan step CRUSH yaitu \nmemilih tiap rak. Jika tidak diset, tidak akan ada pengelompokkan.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Plugin isa menghimpun perpustakaan ISA. Hanya dapat berjalan pada prosesor Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Plugin ISA memiliki dua jenis Reed Solomon.\nJika reed_sol_van diset, maka menjadi Vandermonde, jika cauchy diset, maka menjadi Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Plugin shec mengenkapsulasi banyak pustaka SHEC.\nHal ini agar ceph dapat dipulihkan dengan lebih efisien dari kode Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Jumlah potongan paritas yang masing-masing mencakup setiap potongan data \ndalam rentang perhitungannya. Nilai ini digunakan untuk perkiraan daya tahan. Contoh, jika c=2, \n2 OSD dapat mati tanpa kehilangan data.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nama buket crush digunakan sebagai langkah pertama dari aturan CRUSH.\nContoh diambil langkah bawaan.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Memastikan tidak ada pecahan data berada pada buket dengan domain kegagalan\nyang sama. Contoh, saat domain gagal adalah hos, maka tidak ada pecahan data yang akan disimpan \npada hos yang sama. Aturan CRUSH seperti step chooseleaf hos akan digunakan untuk hal tersebut.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Batasi penempatan ke perangkat dengan kelas tertentu\n(cth. ssd atau hdd), menggunakan nama kelas perangkat crush pada peta CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Set nama direktori empat plugin erasure code akan dimuat.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Izinkan semua operasi</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Izinkan hanya untuk operasi yang tidak mengubah server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Tidak diizinkan untuk operasi baca dan tulis, namun izinkan operasi lainnya</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Tidak diizinkan untuk baca, tulis, atau operasi lainnya yang mengubah atribut berkas atau konten direktori</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Tidak diizinkan untuk semua hal</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Pilih prioritas --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Rendah</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Tinggi</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informasi</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>5 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>15 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>30 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>1 Jam Terakhir (Bawaan)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>3 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>6 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>12 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>24 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Kemarin</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hari ini</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Sejauh hari ini</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Kemarin dulu</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>2 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Hari ini minggu lalu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Minggu lalu</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Minggu ini</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Sejauh minggu ini</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>7 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Bulan lalu</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Bulan ini</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Sejauh bulan ini</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>30 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>90 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>6 bulan terakhir</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>1 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Tahun lalu</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Tahun ini</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Sejauh tahun ini</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>2 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>5 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Tidak ada yang dipilih.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Batalkan memilih untuk memilih ulang</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Batas pemilihan tercapai</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tanda penyaringan</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Tambahkan lencana</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Tidak ada yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klon</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Salin</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Deep Scrub</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Hancurkan</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Ratakan</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Tandai Gugur</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Tandai Masuk</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Tandai Hilang</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Tandai Keluar</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteksi</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Ubah nama</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Pulihkan</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Pindahkan ke Tempat Sampah</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Tidak diproteksi</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Dihapus</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Diklon</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Disalin</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Diratakan</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Dibuang</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Dipulihkan</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Dikembalikan</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ya</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Tidak</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kualitas Layanan atau QoS</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Limit IO bytes per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Limit operasi IO per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limit Baca BPS </target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Limit byte baca per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limit IOPS Baca</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Limit operasi baca per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit Tulis BPS</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Limit tulis byte per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit IOPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Limit operasi tulis per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Letupan BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari IO byte.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Letupan IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst operasi IO.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Letupan Baca BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari baca byte.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Letupan IOPS Baca</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst operasi baca.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Letupan BPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari tulis byte.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Letupan IOPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari operasi baca.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Mengeksekusi</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>eksekusi</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Dieksekusi</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tugas tak diketahui</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Membuat</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>buat</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Memperbarui</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>perbarui</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Menghapus</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Pengklonan</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klon</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Menyalin</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>salin</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Meratakan</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>ratakan</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Mengembalikan</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>kembalikan</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Memindahkan</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>pindah</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>dipindahkan</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Tidak dapat menemukan image.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Memulihkan</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>pulihkan</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Membuang</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>buang</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>semua pool</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Gagal menonaktifkan pencerminan karena sedang bermitra.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},jtHE:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("XNiG"),r=n("qgXg"),i=n("quSY"),s=n("pxpQ"),u=n("9ppp"),o=n("Ylt2");class l extends a.a{constructor(t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,n){super(),this.scheduler=n,this._events=[],this._infiniteTimeWindow=!1,this._bufferSize=t<1?1:t,this._windowTime=e<1?1:e,e===Number.POSITIVE_INFINITY?(this._infiniteTimeWindow=!0,this.next=this.nextInfiniteTimeWindow):this.next=this.nextTimeWindow}nextInfiniteTimeWindow(t){const e=this._events;e.push(t),e.length>this._bufferSize&&e.shift(),super.next(t)}nextTimeWindow(t){this._events.push(new d(this._getNow(),t)),this._trimBufferThenGetEvents(),super.next(t)}_subscribe(t){const e=this._infiniteTimeWindow,n=e?this._events:this._trimBufferThenGetEvents(),a=this.scheduler,r=n.length;let l;if(this.closed)throw new u.a;if(this.isStopped||this.hasError?l=i.a.EMPTY:(this.observers.push(t),l=new o.a(this,t)),a&&t.add(t=new s.a(t,a)),e)for(let i=0;i<r&&!t.closed;i++)t.next(n[i]);else for(let i=0;i<r&&!t.closed;i++)t.next(n[i].value);return this.hasError?t.error(this.thrownError):this.isStopped&&t.complete(),l}_getNow(){return(this.scheduler||r.a).now()}_trimBufferThenGetEvents(){const t=this._getNow(),e=this._bufferSize,n=this._windowTime,a=this._events,r=a.length;let i=0;for(;i<r&&!(t-a[i].time<n);)i++;return r>e&&(i=Math.max(i,r-e)),i>0&&a.splice(0,i),a}}class d{constructor(t,e){this.time=t,this.value=e}}},jy8Y:function(t,e){t.exports=function(t){return this.__data__.has(t)}},"k9+3":function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},kA6G:function(t,e){t.exports=function(){return[]}},kEOa:function(t,e,n){!function(t){"use strict";var e={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};t.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(t){return t.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(t,e){return 12===t&&(t=0),"রাত"===e&&t>=4||"দুপুর"===e&&t<5||"বিকাল"===e?t+12:t},meridiem:function(t,e,n){return t<4?"রাত":t<10?"সকাল":t<17?"দুপুর":t<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("wd/R"))},kGkW:function(t,e,n){var a=n("rk81"),r=n("uy3s");t.exports=function(t,e,n,i){var s=n.length,u=s,o=!i;if(null==t)return!u;for(t=Object(t);s--;){var l=n[s];if(o&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++s<u;){var d=(l=n[s])[0],c=t[d],f=l[1];if(o&&l[2]){if(void 0===c&&!(d in t))return!1}else{var h=new a;if(i)var g=i(c,f,d,t,e,h);if(!(void 0===g?r(f,c,3,i,h):g))return!1}}return!0}},kJI8:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},kJWO:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")()},kOOl:function(t,e,n){var a=n("4zBA"),r=0,i=Math.random(),s=a(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+s(++r+i,36)}},kOpN:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("wd/R"))},kRJp:function(t,e,n){var a=n("g6v/"),r=n("m/L8"),i=n("XGwC");t.exports=a?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},kXVT:function(t,e,n){var a=n("hmSm");t.exports=function(t){return t==t&&!a(t)}},kmMV:function(t,e,n){"use strict";var a,r,i=n("xluM"),s=n("4zBA"),u=n("V37c"),o=n("rW0t"),l=n("n3/R"),d=n("VpIT"),c=n("fHMY"),f=n("afO8").get,h=n("/OPJ"),g=n("EHx7"),p=d("native-string-replace",String.prototype.replace),b=RegExp.prototype.exec,m=b,y=s("".charAt),v=s("".indexOf),x=s("".replace),_=s("".slice),T=(r=/b*/g,i(b,a=/a/,"a"),i(b,r,"a"),0!==a.lastIndex||0!==r.lastIndex),w=l.BROKEN_CARET,O=void 0!==/()??/.exec("")[1];(T||O||w||h||g)&&(m=function(t){var e,n,a,r,s,l,d,h=this,g=f(h),S=u(t),I=g.raw;if(I)return I.lastIndex=h.lastIndex,e=i(m,I,S),h.lastIndex=I.lastIndex,e;var N=g.groups,C=w&&h.sticky,R=i(o,h),A=h.source,k=0,E=S;if(C&&(R=x(R,"y",""),-1===v(R,"g")&&(R+="g"),E=_(S,h.lastIndex),h.lastIndex>0&&(!h.multiline||h.multiline&&"\n"!==y(S,h.lastIndex-1))&&(A="(?: "+A+")",E=" "+E,k++),n=new RegExp("^(?:"+A+")",R)),O&&(n=new RegExp("^"+A+"$(?!\\s)",R)),T&&(a=h.lastIndex),r=i(b,C?n:h,E),C?r?(r.input=_(r.input,k),r[0]=_(r[0],k),r.index=h.lastIndex,h.lastIndex+=r[0].length):h.lastIndex=0:T&&r&&(h.lastIndex=h.global?r.index+r[0].length:a),O&&r&&r.length>1&&i(p,r[0],n,(function(){for(s=1;s<arguments.length-2;s++)void 0===arguments[s]&&(r[s]=void 0)})),r&&N)for(r.groups=l=c(null),s=0;s<N.length;s++)l[(d=N[s])[0]]=r[d[1]];return r}),t.exports=m},"kn/O":function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("HDdC"),r=n("mtw6"),i=n("G1I9"),s=n("QTAa"),u=n("9nlD"),o=n("mSOc"),l=n("VXsX"),d=n("ufoC"),c=n("8Y7J");let f=(()=>{class t{constructor(t,e,n,a){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.taskManagerService=a}wrapTaskAroundCall({task:t,call:e}){return new a.a(n=>{e.subscribe(e=>{202===e.status?this._handleExecutingTasks(t):(this.summaryService.refresh(),t.success=!0,this.notificationService.notifyTask(t))},e=>{t.success=!1,t.exception=e.error,n.error(e)},()=>{n.complete()})})}_handleExecutingTasks(t){const e=new i.b(r.a.info,this.taskMessageService.getRunningTitle(t));e.isFinishedTask=!0,this.notificationService.show(e);const n=new s.a(t.name,t.metadata);this.summaryService.addRunningTask(n),this.taskManagerService.subscribe(n.name,n.metadata,t=>{this.notificationService.notifyTask(t)})}}return t.ngInjectableDef=c["ɵɵdefineInjectable"]({factory:function(){return new t(c["ɵɵinject"](u.a),c["ɵɵinject"](o.a),c["ɵɵinject"](d.a),c["ɵɵinject"](l.a))},token:t,providedIn:"root"}),t})()},kna9:function(t,e,n){var a=n("MOZO"),r=n("gBXJ"),i=n("BVkS"),s=n("Wv1A");t.exports=function(t,e){return e=a(e,t),null==(t=i(t,e))||delete t[s(r(e))]}},ktBm:function(t,e,n){var a=n("JEWA");t.exports=function(t,e){for(var n=t.length;n--;)if(a(t[n][0],e))return n;return-1}},kvvV:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("t/zF");class r extends a.a{}},l2xC:function(t,e){t.exports=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}},l5ep:function(t,e,n){!function(t){"use strict";t.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(t){var e="";return t>20?e=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(e=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][t]),t+e},week:{dow:1,doy:4}})}(n("wd/R"))},l7GE:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");class r extends a.a{notifyNext(t,e,n,a,r){this.destination.next(e)}notifyError(t,e){this.destination.error(t)}notifyComplete(t){this.destination.complete()}}},l9nr:function(t,e,n){var a=n("QjCD"),r=n("NtIB"),i=n("aHcz"),s=n("0GLT"),u=n("MaPG");t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?s(t)?r(t[0],t[1]):a(t):u(t)}},lEOU:function(t,e,n){var a=n("CNUl");t.exports=function(t,e){var n=e?a(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}},lJxs:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){return function(n){if("function"!=typeof t)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return n.lift(new i(t,e))}}class i{constructor(t,e){this.project=t,this.thisArg=e}call(t,e){return e.subscribe(new s(t,this.project,this.thisArg))}}class s extends a.a{constructor(t,e,n){super(t),this.project=e,this.count=0,this.thisArg=n||this}_next(t){let e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}},lMq5:function(t,e,n){var a=n("0Dky"),r=n("Fib7"),i=/#|\.prototype\./,s=function(t,e){var n=o[u(t)];return n==d||n!=l&&(r(e)?a(e):!!e)},u=s.normalize=function(t){return String(t).replace(i,".").toLowerCase()},o=s.data={},l=s.NATIVE="N",d=s.POLYFILL="P";t.exports=s},"lOp/":function(t,e,n){"use strict";var a=n("PqYM"),r=n("pxpQ"),i=n("eIep"),s=n("jtHE"),u=n("D0XW"),o=n("8Y7J");class l{constructor(t){this.zone=t,this.scheduler=u.a}now(){return this.scheduler.now()}}let d=(()=>{class t extends l{constructor(t){super(t)}schedule(...t){return this.zone.runOutsideAngular(()=>this.scheduler.schedule.apply(this.scheduler,t))}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](o.NgZone))},token:t,providedIn:"root"}),t})(),c=(()=>{class t extends l{constructor(t){super(t)}schedule(...t){return this.zone.run(()=>this.scheduler.schedule.apply(this.scheduler,t))}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](o.NgZone))},token:t,providedIn:"root"}),t})(),f=(()=>{class t{constructor(t,e){this.leave=t,this.enter=e}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](d),o["ɵɵinject"](c))},token:t,providedIn:"root"}),t})();n.d(e,"a",(function(){return h}));let h=(()=>{class t{constructor(t){this.ngZone=t,this.DEFAULT_REFRESH_INTERVAL=5e3,this.DEFAULT_DUE_TIME=0}get(t,e=this.DEFAULT_REFRESH_INTERVAL,n=this.DEFAULT_DUE_TIME){return Object(a.a)(n,e,this.ngZone.leave).pipe(Object(r.b)(this.ngZone.enter),Object(i.a)(t),function(t,e,n){let a;return a=t&&"object"==typeof t?t:{bufferSize:t,windowTime:void 0,refCount:!1,scheduler:void 0},t=>t.lift(function({bufferSize:t=Number.POSITIVE_INFINITY,windowTime:e=Number.POSITIVE_INFINITY,refCount:n,scheduler:a}){let r,i,u=0,o=!1,l=!1;return function(d){u++,r&&!o||(o=!1,r=new s.a(t,e,a),i=d.subscribe({next(t){r.next(t)},error(t){o=!0,r.error(t)},complete(){l=!0,i=void 0,r.complete()}}));const c=r.subscribe(this);this.add(()=>{u--,c.unsubscribe(),i&&!l&&n&&0===u&&(i.unsubscribe(),i=void 0,r=void 0)})}}(a))}({refCount:!0,bufferSize:1}))}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](f))},token:t,providedIn:"root"}),t})()},lPUB:function(t,e,n){var a=n("Ytn0");t.exports=function(t){return a(this,t).get(t)}},lXzo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"минута":"минуту":t+" "+(a=+t,r={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];t.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:e,m:e,mm:e,h:"час",hh:e,d:"день",dd:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(t){return/^(дня|вечера)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночи":t<12?"утра":t<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-й";case"D":return t+"-го";case"w":case"W":return t+"-я";default:return t}},week:{dow:1,doy:4}})}(n("wd/R"))},lYtQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){switch(n){case"s":return e?"хэдхэн секунд":"хэдхэн секундын";case"ss":return t+(e?" секунд":" секундын");case"m":case"mm":return t+(e?" минут":" минутын");case"h":case"hh":return t+(e?" цаг":" цагийн");case"d":case"dd":return t+(e?" өдөр":" өдрийн");case"M":case"MM":return t+(e?" сар":" сарын");case"y":case"yy":return t+(e?" жил":" жилийн");default:return t}}t.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(t){return"ҮХ"===t},meridiem:function(t,e,n){return t<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" өдөр";default:return t}}})}(n("wd/R"))},lgnt:function(t,e,n){!function(t){"use strict";var e={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};t.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},lsW8:function(t,e,n){(function(t){var a;(function(){var r="Expected a function",i="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],u="[object Arguments]",o="[object Array]",l="[object Boolean]",d="[object Date]",c="[object Error]",f="[object Function]",h="[object GeneratorFunction]",g="[object Map]",p="[object Number]",b="[object Object]",m="[object RegExp]",y="[object Set]",v="[object String]",x="[object Symbol]",_="[object WeakMap]",T="[object ArrayBuffer]",w="[object DataView]",O="[object Float32Array]",S="[object Float64Array]",I="[object Int8Array]",N="[object Int16Array]",C="[object Int32Array]",R="[object Uint8Array]",A="[object Uint16Array]",k="[object Uint32Array]",E=/\b__p \+= '';/g,L=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,M=/[&<>"']/g,q=RegExp(P.source),j=RegExp(M.source),F=/<%-([\s\S]+?)%>/g,V=/<%([\s\S]+?)%>/g,G=/<%=([\s\S]+?)%>/g,B=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,z=/^\w*$/,Y=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,H=/[\\^$.*+?()[\]{}|]/g,U=RegExp(H.source),W=/^\s+|\s+$/g,K=/^\s+/,$=/\s+$/,J=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Z=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,X=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,at=/^[-+]0x[0-9a-f]+$/i,rt=/^0b[01]+$/i,it=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,ut=/^(?:0|[1-9]\d*)$/,ot=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt=/($^)/,dt=/['\n\r\u2028\u2029\\]/g,ct="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ft="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ht="["+ft+"]",gt="["+ct+"]",pt="\\d+",bt="[a-z\\xdf-\\xf6\\xf8-\\xff]",mt="[^\\ud800-\\udfff"+ft+pt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",yt="\\ud83c[\\udffb-\\udfff]",vt="[^\\ud800-\\udfff]",xt="(?:\\ud83c[\\udde6-\\uddff]){2}",_t="[\\ud800-\\udbff][\\udc00-\\udfff]",Tt="[A-Z\\xc0-\\xd6\\xd8-\\xde]",wt="(?:"+bt+"|"+mt+")",Ot="(?:"+Tt+"|"+mt+")",St="(?:"+gt+"|"+yt+")?",It="[\\ufe0e\\ufe0f]?"+St+"(?:\\u200d(?:"+[vt,xt,_t].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*",Nt="(?:"+["[\\u2700-\\u27bf]",xt,_t].join("|")+")"+It,Ct="(?:"+[vt+gt+"?",gt,xt,_t,"[\\ud800-\\udfff]"].join("|")+")",Rt=RegExp("['’]","g"),At=RegExp(gt,"g"),kt=RegExp(yt+"(?="+yt+")|"+Ct+It,"g"),Et=RegExp([Tt+"?"+bt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ht,Tt,"$"].join("|")+")",Ot+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ht,Tt+wt,"$"].join("|")+")",Tt+"?"+wt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Tt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",pt,Nt].join("|"),"g"),Lt=RegExp("[\\u200d\\ud800-\\udfff"+ct+"\\ufe0e\\ufe0f]"),Dt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Mt=-1,qt={};qt[O]=qt[S]=qt[I]=qt[N]=qt[C]=qt[R]=qt["[object Uint8ClampedArray]"]=qt[A]=qt[k]=!0,qt[u]=qt[o]=qt[T]=qt[l]=qt[w]=qt[d]=qt[c]=qt[f]=qt[g]=qt[p]=qt[b]=qt[m]=qt[y]=qt[v]=qt[_]=!1;var jt={};jt[u]=jt[o]=jt[T]=jt[w]=jt[l]=jt[d]=jt[O]=jt[S]=jt[I]=jt[N]=jt[C]=jt[g]=jt[p]=jt[b]=jt[m]=jt[y]=jt[v]=jt[x]=jt[R]=jt["[object Uint8ClampedArray]"]=jt[A]=jt[k]=!0,jt[c]=jt[f]=jt[_]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Vt=parseFloat,Gt=parseInt,Bt="object"==typeof global&&global&&global.Object===Object&&global,zt="object"==typeof self&&self&&self.Object===Object&&self,Yt=Bt||zt||Function("return this")(),Ht=e&&!e.nodeType&&e,Ut=Ht&&"object"==typeof t&&t&&!t.nodeType&&t,Wt=Ut&&Ut.exports===Ht,Kt=Wt&&Bt.process,$t=function(){try{return Ut&&Ut.require&&Ut.require("util").types||Kt&&Kt.binding&&Kt.binding("util")}catch(t){}}(),Jt=$t&&$t.isArrayBuffer,Zt=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,te=$t&&$t.isSet,ee=$t&&$t.isTypedArray;function ne(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function ae(t,e,n,a){for(var r=-1,i=null==t?0:t.length;++r<i;){var s=t[r];e(a,s,n(s),t)}return a}function re(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}function ie(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function se(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}function ue(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}function oe(t,e){return!(null==t||!t.length)&&ye(t,e,0)>-1}function le(t,e,n){for(var a=-1,r=null==t?0:t.length;++a<r;)if(n(e,t[a]))return!0;return!1}function de(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}function ce(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}function fe(t,e,n,a){var r=-1,i=null==t?0:t.length;for(a&&i&&(n=t[++r]);++r<i;)n=e(n,t[r],r,t);return n}function he(t,e,n,a){var r=null==t?0:t.length;for(a&&r&&(n=t[--r]);r--;)n=e(n,t[r],r,t);return n}function ge(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}var pe=Te("length");function be(t,e,n){var a;return n(t,(function(t,n,r){if(e(t,n,r))return a=n,!1})),a}function me(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}function ye(t,e,n){return e==e?function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}(t,e,n):me(t,xe,n)}function ve(t,e,n,a){for(var r=n-1,i=t.length;++r<i;)if(a(t[r],e))return r;return-1}function xe(t){return t!=t}function _e(t,e){var n=null==t?0:t.length;return n?Se(t,e)/n:NaN}function Te(t){return function(e){return null==e?void 0:e[t]}}function we(t){return function(e){return null==t?void 0:t[e]}}function Oe(t,e,n,a,r){return r(t,(function(t,r,i){n=a?(a=!1,t):e(n,t,r,i)})),n}function Se(t,e){for(var n,a=-1,r=t.length;++a<r;){var i=e(t[a]);void 0!==i&&(n=void 0===n?i:n+i)}return n}function Ie(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}function Ne(t){return function(e){return t(e)}}function Ce(t,e){return de(e,(function(e){return t[e]}))}function Re(t,e){return t.has(e)}function Ae(t,e){for(var n=-1,a=t.length;++n<a&&ye(e,t[n],0)>-1;);return n}function ke(t,e){for(var n=t.length;n--&&ye(e,t[n],0)>-1;);return n}function Ee(t,e){for(var n=t.length,a=0;n--;)t[n]===e&&++a;return a}var Le=we({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),De=we({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function Pe(t){return"\\"+Ft[t]}function Me(t){return Lt.test(t)}function qe(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}function je(t,e){return function(n){return t(e(n))}}function Fe(t,e){for(var n=-1,a=t.length,r=0,s=[];++n<a;){var u=t[n];u!==e&&u!==i||(t[n]=i,s[r++]=n)}return s}function Ve(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}function Ge(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=[t,t]})),n}function Be(t){return Me(t)?function(t){for(var e=kt.lastIndex=0;kt.test(t);)++e;return e}(t):pe(t)}function ze(t){return Me(t)?function(t){return t.match(kt)||[]}(t):function(t){return t.split("")}(t)}var Ye=we({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),He=function t(e){var n,a=(e=null==e?Yt:He.defaults(Yt.Object(),e,He.pick(Yt,Pt))).Array,ct=e.Date,ft=e.Error,ht=e.Function,gt=e.Math,pt=e.Object,bt=e.RegExp,mt=e.String,yt=e.TypeError,vt=a.prototype,xt=pt.prototype,_t=e["__core-js_shared__"],Tt=ht.prototype.toString,wt=xt.hasOwnProperty,Ot=0,St=(n=/[^.]+$/.exec(_t&&_t.keys&&_t.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",It=xt.toString,Nt=Tt.call(pt),Ct=Yt._,kt=bt("^"+Tt.call(wt).replace(H,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Lt=Wt?e.Buffer:void 0,Ft=e.Symbol,Bt=e.Uint8Array,zt=Lt?Lt.allocUnsafe:void 0,Ht=je(pt.getPrototypeOf,pt),Ut=pt.create,Kt=xt.propertyIsEnumerable,$t=vt.splice,pe=Ft?Ft.isConcatSpreadable:void 0,we=Ft?Ft.iterator:void 0,Ue=Ft?Ft.toStringTag:void 0,We=function(){try{var t=Zr(pt,"defineProperty");return t({},"",{}),t}catch(e){}}(),Ke=e.clearTimeout!==Yt.clearTimeout&&e.clearTimeout,$e=ct&&ct.now!==Yt.Date.now&&ct.now,Je=e.setTimeout!==Yt.setTimeout&&e.setTimeout,Ze=gt.ceil,Qe=gt.floor,Xe=pt.getOwnPropertySymbols,tn=Lt?Lt.isBuffer:void 0,en=e.isFinite,nn=vt.join,an=je(pt.keys,pt),rn=gt.max,sn=gt.min,un=ct.now,on=e.parseInt,ln=gt.random,dn=vt.reverse,cn=Zr(e,"DataView"),fn=Zr(e,"Map"),hn=Zr(e,"Promise"),gn=Zr(e,"Set"),pn=Zr(e,"WeakMap"),bn=Zr(pt,"create"),mn=pn&&new pn,yn={},vn=Ii(cn),xn=Ii(fn),_n=Ii(hn),Tn=Ii(gn),wn=Ii(pn),On=Ft?Ft.prototype:void 0,Sn=On?On.valueOf:void 0,In=On?On.toString:void 0;function Nn(t){if(zs(t)&&!Es(t)&&!(t instanceof kn)){if(t instanceof An)return t;if(wt.call(t,"__wrapped__"))return Ni(t)}return new An(t)}var Cn=function(){function t(){}return function(e){if(!Bs(e))return{};if(Ut)return Ut(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Rn(){}function An(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function kn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function En(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Ln(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Dn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Pn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Dn;++e<n;)this.add(t[e])}function Mn(t){var e=this.__data__=new Ln(t);this.size=e.size}function qn(t,e){var n=Es(t),a=!n&&ks(t),r=!n&&!a&&Ms(t),i=!n&&!a&&!r&&Zs(t),s=n||a||r||i,u=s?Ie(t.length,mt):[],o=u.length;for(var l in t)!e&&!wt.call(t,l)||s&&("length"==l||r&&("offset"==l||"parent"==l)||i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||ri(l,o))||u.push(l);return u}function jn(t){var e=t.length;return e?t[Da(0,e-1)]:void 0}function Fn(t,e){return _i(pr(t),Kn(e,0,t.length))}function Vn(t){return _i(pr(t))}function Gn(t,e,n){(void 0!==n&&!Cs(t[e],n)||void 0===n&&!(e in t))&&Un(t,e,n)}function Bn(t,e,n){var a=t[e];wt.call(t,e)&&Cs(a,n)&&(void 0!==n||e in t)||Un(t,e,n)}function zn(t,e){for(var n=t.length;n--;)if(Cs(t[n][0],e))return n;return-1}function Yn(t,e,n,a){return Xn(t,(function(t,r,i){e(a,t,n(t),i)})),a}function Hn(t,e){return t&&br(e,vu(e),t)}function Un(t,e,n){"__proto__"==e&&We?We(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Wn(t,e){for(var n=-1,r=e.length,i=a(r),s=null==t;++n<r;)i[n]=s?void 0:gu(t,e[n]);return i}function Kn(t,e,n){return t==t&&(void 0!==n&&(t=t<=n?t:n),void 0!==e&&(t=t>=e?t:e)),t}function $n(t,e,n,a,r,i){var s,o=1&e,c=2&e,_=4&e;if(n&&(s=r?n(t,a,r,i):n(t)),void 0!==s)return s;if(!Bs(t))return t;var E=Es(t);if(E){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&wt.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!o)return pr(t,s)}else{var L=ti(t),D=L==f||L==h;if(Ms(t))return lr(t,o);if(L==b||L==u||D&&!r){if(s=c||D?{}:ni(t),!o)return c?function(t,e){return br(t,Xr(t),e)}(t,function(t,e){return t&&br(e,xu(e),t)}(s,t)):function(t,e){return br(t,Qr(t),e)}(t,Hn(s,t))}else{if(!jt[L])return r?t:{};s=function(t,e,n){var a=t.constructor;switch(e){case T:return dr(t);case l:case d:return new a(+t);case w:return function(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case O:case S:case I:case N:case C:case R:case"[object Uint8ClampedArray]":case A:case k:return cr(t,n);case g:return new a;case p:case v:return new a(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new a;case x:return Sn?pt(Sn.call(t)):{}}}(t,L,o)}}i||(i=new Mn);var P=i.get(t);if(P)return P;i.set(t,s),Ks(t)?t.forEach((function(a){s.add($n(a,e,n,a,t,i))})):Ys(t)&&t.forEach((function(a,r){s.set(r,$n(a,e,n,r,t,i))}));var M=E?void 0:(_?c?Yr:zr:c?xu:vu)(t);return re(M||t,(function(a,r){M&&(a=t[r=a]),Bn(s,r,$n(a,e,n,r,t,i))})),s}function Jn(t,e,n){var a=n.length;if(null==t)return!a;for(t=pt(t);a--;){var r=n[a],i=t[r];if(void 0===i&&!(r in t)||!(0,e[r])(i))return!1}return!0}function Zn(t,e,n){if("function"!=typeof t)throw new yt(r);return mi((function(){t.apply(void 0,n)}),e)}function Qn(t,e,n,a){var r=-1,i=oe,s=!0,u=t.length,o=[],l=e.length;if(!u)return o;n&&(e=de(e,Ne(n))),a?(i=le,s=!1):e.length>=200&&(i=Re,s=!1,e=new Pn(e));t:for(;++r<u;){var d=t[r],c=null==n?d:n(d);if(d=a||0!==d?d:0,s&&c==c){for(var f=l;f--;)if(e[f]===c)continue t;o.push(d)}else i(e,c,a)||o.push(d)}return o}Nn.templateSettings={escape:F,evaluate:V,interpolate:G,variable:"",imports:{_:Nn}},(Nn.prototype=Rn.prototype).constructor=Nn,(An.prototype=Cn(Rn.prototype)).constructor=An,(kn.prototype=Cn(Rn.prototype)).constructor=kn,En.prototype.clear=function(){this.__data__=bn?bn(null):{},this.size=0},En.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},En.prototype.get=function(t){var e=this.__data__;if(bn){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return wt.call(e,t)?e[t]:void 0},En.prototype.has=function(t){var e=this.__data__;return bn?void 0!==e[t]:wt.call(e,t)},En.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=bn&&void 0===e?"__lodash_hash_undefined__":e,this},Ln.prototype.clear=function(){this.__data__=[],this.size=0},Ln.prototype.delete=function(t){var e=this.__data__,n=zn(e,t);return!(n<0||(n==e.length-1?e.pop():$t.call(e,n,1),--this.size,0))},Ln.prototype.get=function(t){var e=this.__data__,n=zn(e,t);return n<0?void 0:e[n][1]},Ln.prototype.has=function(t){return zn(this.__data__,t)>-1},Ln.prototype.set=function(t,e){var n=this.__data__,a=zn(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new En,map:new(fn||Ln),string:new En}},Dn.prototype.delete=function(t){var e=$r(this,t).delete(t);return this.size-=e?1:0,e},Dn.prototype.get=function(t){return $r(this,t).get(t)},Dn.prototype.has=function(t){return $r(this,t).has(t)},Dn.prototype.set=function(t,e){var n=$r(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this},Pn.prototype.add=Pn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.clear=function(){this.__data__=new Ln,this.size=0},Mn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Mn.prototype.get=function(t){return this.__data__.get(t)},Mn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Ln){var a=n.__data__;if(!fn||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new Dn(a)}return n.set(t,e),this.size=n.size,this};var Xn=vr(ua),ta=vr(oa,!0);function ea(t,e){var n=!0;return Xn(t,(function(t,a,r){return n=!!e(t,a,r)})),n}function na(t,e,n){for(var a=-1,r=t.length;++a<r;){var i=t[a],s=e(i);if(null!=s&&(void 0===u?s==s&&!Js(s):n(s,u)))var u=s,o=i}return o}function aa(t,e){var n=[];return Xn(t,(function(t,a,r){e(t,a,r)&&n.push(t)})),n}function ra(t,e,n,a,r){var i=-1,s=t.length;for(n||(n=ai),r||(r=[]);++i<s;){var u=t[i];e>0&&n(u)?e>1?ra(u,e-1,n,a,r):ce(r,u):a||(r[r.length]=u)}return r}var ia=xr(),sa=xr(!0);function ua(t,e){return t&&ia(t,e,vu)}function oa(t,e){return t&&sa(t,e,vu)}function la(t,e){return ue(e,(function(e){return Fs(t[e])}))}function da(t,e){for(var n=0,a=(e=ir(e,t)).length;null!=t&&n<a;)t=t[Si(e[n++])];return n&&n==a?t:void 0}function ca(t,e,n){var a=e(t);return Es(t)?a:ce(a,n(t))}function fa(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Ue&&Ue in pt(t)?function(t){var e=wt.call(t,Ue),n=t[Ue];try{t[Ue]=void 0;var a=!0}catch(i){}var r=It.call(t);return a&&(e?t[Ue]=n:delete t[Ue]),r}(t):function(t){return It.call(t)}(t)}function ha(t,e){return t>e}function ga(t,e){return null!=t&&wt.call(t,e)}function pa(t,e){return null!=t&&e in pt(t)}function ba(t,e,n){for(var r=n?le:oe,i=t[0].length,s=t.length,u=s,o=a(s),l=1/0,d=[];u--;){var c=t[u];u&&e&&(c=de(c,Ne(e))),l=sn(c.length,l),o[u]=!n&&(e||i>=120&&c.length>=120)?new Pn(u&&c):void 0}c=t[0];var f=-1,h=o[0];t:for(;++f<i&&d.length<l;){var g=c[f],p=e?e(g):g;if(g=n||0!==g?g:0,!(h?Re(h,p):r(d,p,n))){for(u=s;--u;){var b=o[u];if(!(b?Re(b,p):r(t[u],p,n)))continue t}h&&h.push(p),d.push(g)}}return d}function ma(t,e,n){var a=null==(t=hi(t,e=ir(e,t)))?t:t[Si(ji(e))];return null==a?void 0:ne(a,t,n)}function ya(t){return zs(t)&&fa(t)==u}function va(t,e,n,a,r){return t===e||(null==t||null==e||!zs(t)&&!zs(e)?t!=t&&e!=e:function(t,e,n,a,r,i){var s=Es(t),f=Es(e),h=s?o:ti(t),_=f?o:ti(e),O=(h=h==u?b:h)==b,S=(_=_==u?b:_)==b,I=h==_;if(I&&Ms(t)){if(!Ms(e))return!1;s=!0,O=!1}if(I&&!O)return i||(i=new Mn),s||Zs(t)?Gr(t,e,n,a,r,i):function(t,e,n,a,r,i,s){switch(n){case w:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case T:return!(t.byteLength!=e.byteLength||!i(new Bt(t),new Bt(e)));case l:case d:case p:return Cs(+t,+e);case c:return t.name==e.name&&t.message==e.message;case m:case v:return t==e+"";case g:var u=qe;case y:if(u||(u=Ve),t.size!=e.size&&!(1&a))return!1;var o=s.get(t);if(o)return o==e;a|=2,s.set(t,e);var f=Gr(u(t),u(e),a,r,i,s);return s.delete(t),f;case x:if(Sn)return Sn.call(t)==Sn.call(e)}return!1}(t,e,h,n,a,r,i);if(!(1&n)){var N=O&&wt.call(t,"__wrapped__"),C=S&&wt.call(e,"__wrapped__");if(N||C){var R=N?t.value():t,A=C?e.value():e;return i||(i=new Mn),r(R,A,n,a,i)}}return!!I&&(i||(i=new Mn),function(t,e,n,a,r,i){var s=1&n,u=zr(t),o=u.length;if(o!=zr(e).length&&!s)return!1;for(var l=o;l--;){var d=u[l];if(!(s?d in e:wt.call(e,d)))return!1}var c=i.get(t),f=i.get(e);if(c&&f)return c==e&&f==t;var h=!0;i.set(t,e),i.set(e,t);for(var g=s;++l<o;){var p=t[d=u[l]],b=e[d];if(a)var m=s?a(b,p,d,e,t,i):a(p,b,d,t,e,i);if(!(void 0===m?p===b||r(p,b,n,a,i):m)){h=!1;break}g||(g="constructor"==d)}if(h&&!g){var y=t.constructor,v=e.constructor;y==v||!("constructor"in t)||!("constructor"in e)||"function"==typeof y&&y instanceof y&&"function"==typeof v&&v instanceof v||(h=!1)}return i.delete(t),i.delete(e),h}(t,e,n,a,r,i))}(t,e,n,a,va,r))}function xa(t,e,n,a){var r=n.length,i=r,s=!a;if(null==t)return!i;for(t=pt(t);r--;){var u=n[r];if(s&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++r<i;){var o=(u=n[r])[0],l=t[o],d=u[1];if(s&&u[2]){if(void 0===l&&!(o in t))return!1}else{var c=new Mn;if(a)var f=a(l,d,o,t,e,c);if(!(void 0===f?va(d,l,3,a,c):f))return!1}}return!0}function _a(t){return!(!Bs(t)||(e=t,St&&St in e))&&(Fs(t)?kt:it).test(Ii(t));var e}function Ta(t){return"function"==typeof t?t:null==t?Hu:"object"==typeof t?Es(t)?Na(t[0],t[1]):Ia(t):to(t)}function wa(t){if(!li(t))return an(t);var e=[];for(var n in pt(t))wt.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Oa(t,e){return t<e}function Sa(t,e){var n=-1,r=Ds(t)?a(t.length):[];return Xn(t,(function(t,a,i){r[++n]=e(t,a,i)})),r}function Ia(t){var e=Jr(t);return 1==e.length&&e[0][2]?ci(e[0][0],e[0][1]):function(n){return n===t||xa(n,t,e)}}function Na(t,e){return si(t)&&di(e)?ci(Si(t),e):function(n){var a=gu(n,t);return void 0===a&&a===e?pu(n,t):va(e,a,3)}}function Ca(t,e,n,a,r){t!==e&&ia(e,(function(i,s){if(r||(r=new Mn),Bs(i))!function(t,e,n,a,r,i,s){var u=pi(t,n),o=pi(e,n),l=s.get(o);if(l)Gn(t,n,l);else{var d=i?i(u,o,n+"",t,e,s):void 0,c=void 0===d;if(c){var f=Es(o),h=!f&&Ms(o),g=!f&&!h&&Zs(o);d=o,f||h||g?Es(u)?d=u:Ps(u)?d=pr(u):h?(c=!1,d=lr(o,!0)):g?(c=!1,d=cr(o,!0)):d=[]:Us(o)||ks(o)?(d=u,ks(u)?d=iu(u):Bs(u)&&!Fs(u)||(d=ni(o))):c=!1}c&&(s.set(o,d),r(d,o,a,i,s),s.delete(o)),Gn(t,n,d)}}(t,e,s,n,Ca,a,r);else{var u=a?a(pi(t,s),i,s+"",t,e,r):void 0;void 0===u&&(u=i),Gn(t,s,u)}}),xu)}function Ra(t,e){var n=t.length;if(n)return ri(e+=e<0?n:0,n)?t[e]:void 0}function Aa(t,e,n){e=e.length?de(e,(function(t){return Es(t)?function(e){return da(e,1===t.length?t[0]:t)}:t})):[Hu];var a=-1;return e=de(e,Ne(Kr())),function(t,e){var a=t.length;for(t.sort((function(t,e){return function(t,e,n){for(var a=-1,r=t.criteria,i=e.criteria,s=r.length,u=n.length;++a<s;){var o=fr(r[a],i[a]);if(o)return a>=u?o:o*("desc"==n[a]?-1:1)}return t.index-e.index}(t,e,n)}));a--;)t[a]=t[a].value;return t}(Sa(t,(function(t,n,r){return{criteria:de(e,(function(e){return e(t)})),index:++a,value:t}})))}function ka(t,e,n){for(var a=-1,r=e.length,i={};++a<r;){var s=e[a],u=da(t,s);n(u,s)&&Fa(i,ir(s,t),u)}return i}function Ea(t,e,n,a){var r=a?ve:ye,i=-1,s=e.length,u=t;for(t===e&&(e=pr(e)),n&&(u=de(t,Ne(n)));++i<s;)for(var o=0,l=e[i],d=n?n(l):l;(o=r(u,d,o,a))>-1;)u!==t&&$t.call(u,o,1),$t.call(t,o,1);return t}function La(t,e){for(var n=t?e.length:0,a=n-1;n--;){var r=e[n];if(n==a||r!==i){var i=r;ri(r)?$t.call(t,r,1):Za(t,r)}}return t}function Da(t,e){return t+Qe(ln()*(e-t+1))}function Pa(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=Qe(e/2))&&(t+=t)}while(e);return n}function Ma(t,e){return yi(fi(t,e,Hu),t+"")}function qa(t){return jn(Cu(t))}function ja(t,e){var n=Cu(t);return _i(n,Kn(e,0,n.length))}function Fa(t,e,n,a){if(!Bs(t))return t;for(var r=-1,i=(e=ir(e,t)).length,s=i-1,u=t;null!=u&&++r<i;){var o=Si(e[r]),l=n;if("__proto__"===o||"constructor"===o||"prototype"===o)return t;if(r!=s){var d=u[o];void 0===(l=a?a(d,o,u):void 0)&&(l=Bs(d)?d:ri(e[r+1])?[]:{})}Bn(u,o,l),u=u[o]}return t}var Va=mn?function(t,e){return mn.set(t,e),t}:Hu,Ga=We?function(t,e){return We(t,"toString",{configurable:!0,enumerable:!1,value:Bu(e),writable:!0})}:Hu;function Ba(t){return _i(Cu(t))}function za(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var s=a(i);++r<i;)s[r]=t[r+e];return s}function Ya(t,e){var n;return Xn(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}function Ha(t,e,n){var a=0,r=null==t?a:t.length;if("number"==typeof e&&e==e&&r<=2147483647){for(;a<r;){var i=a+r>>>1,s=t[i];null!==s&&!Js(s)&&(n?s<=e:s<e)?a=i+1:r=i}return r}return Ua(t,e,Hu,n)}function Ua(t,e,n,a){var r=0,i=null==t?0:t.length;if(0===i)return 0;for(var s=(e=n(e))!=e,u=null===e,o=Js(e),l=void 0===e;r<i;){var d=Qe((r+i)/2),c=n(t[d]),f=void 0!==c,h=null===c,g=c==c,p=Js(c);if(s)var b=a||g;else b=l?g&&(a||f):u?g&&f&&(a||!h):o?g&&f&&!h&&(a||!p):!h&&!p&&(a?c<=e:c<e);b?r=d+1:i=d}return sn(i,4294967294)}function Wa(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var s=t[n],u=e?e(s):s;if(!n||!Cs(u,o)){var o=u;i[r++]=0===s?0:s}}return i}function Ka(t){return"number"==typeof t?t:Js(t)?NaN:+t}function $a(t){if("string"==typeof t)return t;if(Es(t))return de(t,$a)+"";if(Js(t))return In?In.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ja(t,e,n){var a=-1,r=oe,i=t.length,s=!0,u=[],o=u;if(n)s=!1,r=le;else if(i>=200){var l=e?null:Pr(t);if(l)return Ve(l);s=!1,r=Re,o=new Pn}else o=e?[]:u;t:for(;++a<i;){var d=t[a],c=e?e(d):d;if(d=n||0!==d?d:0,s&&c==c){for(var f=o.length;f--;)if(o[f]===c)continue t;e&&o.push(c),u.push(d)}else r(o,c,n)||(o!==u&&o.push(c),u.push(d))}return u}function Za(t,e){return null==(t=hi(t,e=ir(e,t)))||delete t[Si(ji(e))]}function Qa(t,e,n,a){return Fa(t,e,n(da(t,e)),a)}function Xa(t,e,n,a){for(var r=t.length,i=a?r:-1;(a?i--:++i<r)&&e(t[i],i,t););return n?za(t,a?0:i,a?i+1:r):za(t,a?i+1:0,a?r:i)}function tr(t,e){var n=t;return n instanceof kn&&(n=n.value()),fe(e,(function(t,e){return e.func.apply(e.thisArg,ce([t],e.args))}),n)}function er(t,e,n){var r=t.length;if(r<2)return r?Ja(t[0]):[];for(var i=-1,s=a(r);++i<r;)for(var u=t[i],o=-1;++o<r;)o!=i&&(s[i]=Qn(s[i]||u,t[o],e,n));return Ja(ra(s,1),e,n)}function nr(t,e,n){for(var a=-1,r=t.length,i=e.length,s={};++a<r;)n(s,t[a],a<i?e[a]:void 0);return s}function ar(t){return Ps(t)?t:[]}function rr(t){return"function"==typeof t?t:Hu}function ir(t,e){return Es(t)?t:si(t,e)?[t]:Oi(su(t))}var sr=Ma;function ur(t,e,n){var a=t.length;return n=void 0===n?a:n,!e&&n>=a?t:za(t,e,n)}var or=Ke||function(t){return Yt.clearTimeout(t)};function lr(t,e){if(e)return t.slice();var n=t.length,a=zt?zt(n):new t.constructor(n);return t.copy(a),a}function dr(t){var e=new t.constructor(t.byteLength);return new Bt(e).set(new Bt(t)),e}function cr(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function fr(t,e){if(t!==e){var n=void 0!==t,a=null===t,r=t==t,i=Js(t),s=void 0!==e,u=null===e,o=e==e,l=Js(e);if(!u&&!l&&!i&&t>e||i&&s&&o&&!u&&!l||a&&s&&o||!n&&o||!r)return 1;if(!a&&!i&&!l&&t<e||l&&n&&r&&!a&&!i||u&&n&&r||!s&&r||!o)return-1}return 0}function hr(t,e,n,r){for(var i=-1,s=t.length,u=n.length,o=-1,l=e.length,d=rn(s-u,0),c=a(l+d),f=!r;++o<l;)c[o]=e[o];for(;++i<u;)(f||i<s)&&(c[n[i]]=t[i]);for(;d--;)c[o++]=t[i++];return c}function gr(t,e,n,r){for(var i=-1,s=t.length,u=-1,o=n.length,l=-1,d=e.length,c=rn(s-o,0),f=a(c+d),h=!r;++i<c;)f[i]=t[i];for(var g=i;++l<d;)f[g+l]=e[l];for(;++u<o;)(h||i<s)&&(f[g+n[u]]=t[i++]);return f}function pr(t,e){var n=-1,r=t.length;for(e||(e=a(r));++n<r;)e[n]=t[n];return e}function br(t,e,n,a){var r=!n;n||(n={});for(var i=-1,s=e.length;++i<s;){var u=e[i],o=a?a(n[u],t[u],u,n,t):void 0;void 0===o&&(o=t[u]),r?Un(n,u,o):Bn(n,u,o)}return n}function mr(t,e){return function(n,a){var r=Es(n)?ae:Yn,i=e?e():{};return r(n,t,Kr(a,2),i)}}function yr(t){return Ma((function(e,n){var a=-1,r=n.length,i=r>1?n[r-1]:void 0,s=r>2?n[2]:void 0;for(i=t.length>3&&"function"==typeof i?(r--,i):void 0,s&&ii(n[0],n[1],s)&&(i=r<3?void 0:i,r=1),e=pt(e);++a<r;){var u=n[a];u&&t(e,u,a,i)}return e}))}function vr(t,e){return function(n,a){if(null==n)return n;if(!Ds(n))return t(n,a);for(var r=n.length,i=e?r:-1,s=pt(n);(e?i--:++i<r)&&!1!==a(s[i],i,s););return n}}function xr(t){return function(e,n,a){for(var r=-1,i=pt(e),s=a(e),u=s.length;u--;){var o=s[t?u:++r];if(!1===n(i[o],o,i))break}return e}}function _r(t){return function(e){var n=Me(e=su(e))?ze(e):void 0,a=n?n[0]:e.charAt(0),r=n?ur(n,1).join(""):e.slice(1);return a[t]()+r}}function Tr(t){return function(e){return fe(Fu(ku(e).replace(Rt,"")),t,"")}}function wr(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=Cn(t.prototype),a=t.apply(n,e);return Bs(a)?a:n}}function Or(t){return function(e,n,a){var r=pt(e);if(!Ds(e)){var i=Kr(n,3);e=vu(e),n=function(t){return i(r[t],t,r)}}var s=t(e,n,a);return s>-1?r[i?e[s]:s]:void 0}}function Sr(t){return Br((function(e){var n=e.length,a=n,i=An.prototype.thru;for(t&&e.reverse();a--;){var s=e[a];if("function"!=typeof s)throw new yt(r);if(i&&!u&&"wrapper"==Ur(s))var u=new An([],!0)}for(a=u?a:n;++a<n;){var o=Ur(s=e[a]),l="wrapper"==o?Hr(s):void 0;u=l&&ui(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?u[Ur(l[0])].apply(u,l[3]):1==s.length&&ui(s)?u[o]():u.thru(s)}return function(){var t=arguments,a=t[0];if(u&&1==t.length&&Es(a))return u.plant(a).value();for(var r=0,i=n?e[r].apply(this,t):a;++r<n;)i=e[r].call(this,i);return i}}))}function Ir(t,e,n,r,i,s,u,o,l,d){var c=128&e,f=1&e,h=2&e,g=24&e,p=512&e,b=h?void 0:wr(t);return function m(){for(var y=arguments.length,v=a(y),x=y;x--;)v[x]=arguments[x];if(g)var _=Wr(m),T=Ee(v,_);if(r&&(v=hr(v,r,i,g)),s&&(v=gr(v,s,u,g)),y-=T,g&&y<d){var w=Fe(v,_);return Lr(t,e,Ir,m.placeholder,n,v,w,o,l,d-y)}var O=f?n:this,S=h?O[t]:t;return y=v.length,o?v=gi(v,o):p&&y>1&&v.reverse(),c&&l<y&&(v.length=l),this&&this!==Yt&&this instanceof m&&(S=b||wr(S)),S.apply(O,v)}}function Nr(t,e){return function(n,a){return function(t,e,n,a){return ua(t,(function(t,r,i){e(a,n(t),r,i)})),a}(n,t,e(a),{})}}function Cr(t,e){return function(n,a){var r;if(void 0===n&&void 0===a)return e;if(void 0!==n&&(r=n),void 0!==a){if(void 0===r)return a;"string"==typeof n||"string"==typeof a?(n=$a(n),a=$a(a)):(n=Ka(n),a=Ka(a)),r=t(n,a)}return r}}function Rr(t){return Br((function(e){return e=de(e,Ne(Kr())),Ma((function(n){var a=this;return t(e,(function(t){return ne(t,a,n)}))}))}))}function Ar(t,e){var n=(e=void 0===e?" ":$a(e)).length;if(n<2)return n?Pa(e,t):e;var a=Pa(e,Ze(t/Be(e)));return Me(e)?ur(ze(a),0,t).join(""):a.slice(0,t)}function kr(t){return function(e,n,r){return r&&"number"!=typeof r&&ii(e,n,r)&&(n=r=void 0),e=eu(e),void 0===n?(n=e,e=0):n=eu(n),function(t,e,n,r){for(var i=-1,s=rn(Ze((e-t)/(n||1)),0),u=a(s);s--;)u[r?s:++i]=t,t+=n;return u}(e,n,r=void 0===r?e<n?1:-1:eu(r),t)}}function Er(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=ru(e),n=ru(n)),t(e,n)}}function Lr(t,e,n,a,r,i,s,u,o,l){var d=8&e;e|=d?32:64,4&(e&=~(d?64:32))||(e&=-4);var c=[t,e,r,d?i:void 0,d?s:void 0,d?void 0:i,d?void 0:s,u,o,l],f=n.apply(void 0,c);return ui(t)&&bi(f,c),f.placeholder=a,vi(f,t,e)}function Dr(t){var e=gt[t];return function(t,n){if(t=ru(t),(n=null==n?0:sn(nu(n),292))&&en(t)){var a=(su(t)+"e").split("e");return+((a=(su(e(a[0]+"e"+(+a[1]+n)))+"e").split("e"))[0]+"e"+(+a[1]-n))}return e(t)}}var Pr=gn&&1/Ve(new gn([,-0]))[1]==1/0?function(t){return new gn(t)}:Ju;function Mr(t){return function(e){var n=ti(e);return n==g?qe(e):n==y?Ge(e):function(t,e){return de(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function qr(t,e,n,s,u,o,l,d){var c=2&e;if(!c&&"function"!=typeof t)throw new yt(r);var f=s?s.length:0;if(f||(e&=-97,s=u=void 0),l=void 0===l?l:rn(nu(l),0),d=void 0===d?d:nu(d),f-=u?u.length:0,64&e){var h=s,g=u;s=u=void 0}var p=c?void 0:Hr(t),b=[t,e,n,s,u,h,g,o,l,d];if(p&&function(t,e){var n=t[1],a=e[1],r=n|a;if(!(r<131||128==a&&8==n||128==a&&256==n&&t[7].length<=e[8]||384==a&&e[7].length<=e[8]&&8==n))return t;1&a&&(t[2]=e[2],r|=1&n?0:4);var s=e[3];if(s){var u=t[3];t[3]=u?hr(u,s,e[4]):s,t[4]=u?Fe(t[3],i):e[4]}(s=e[5])&&(t[5]=(u=t[5])?gr(u,s,e[6]):s,t[6]=u?Fe(t[5],i):e[6]),(s=e[7])&&(t[7]=s),128&a&&(t[8]=null==t[8]?e[8]:sn(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=r}(b,p),t=b[0],e=b[1],n=b[2],s=b[3],u=b[4],!(d=b[9]=void 0===b[9]?c?0:t.length:rn(b[9]-f,0))&&24&e&&(e&=-25),e&&1!=e)m=8==e||16==e?function(t,e,n){var r=wr(t);return function i(){for(var s=arguments.length,u=a(s),o=s,l=Wr(i);o--;)u[o]=arguments[o];var d=s<3&&u[0]!==l&&u[s-1]!==l?[]:Fe(u,l);if((s-=d.length)<n)return Lr(t,e,Ir,i.placeholder,void 0,u,d,void 0,void 0,n-s);var c=this&&this!==Yt&&this instanceof i?r:t;return ne(c,this,u)}}(t,e,d):32!=e&&33!=e||u.length?Ir.apply(void 0,b):function(t,e,n,r){var i=1&e,s=wr(t);return function e(){for(var u=-1,o=arguments.length,l=-1,d=r.length,c=a(d+o),f=this&&this!==Yt&&this instanceof e?s:t;++l<d;)c[l]=r[l];for(;o--;)c[l++]=arguments[++u];return ne(f,i?n:this,c)}}(t,e,n,s);else var m=function(t,e,n){var a=1&e,r=wr(t);return function e(){var i=this&&this!==Yt&&this instanceof e?r:t;return i.apply(a?n:this,arguments)}}(t,e,n);return vi((p?Va:bi)(m,b),t,e)}function jr(t,e,n,a){return void 0===t||Cs(t,xt[n])&&!wt.call(a,n)?e:t}function Fr(t,e,n,a,r,i){return Bs(t)&&Bs(e)&&(i.set(e,t),Ca(t,e,void 0,Fr,i),i.delete(e)),t}function Vr(t){return Us(t)?void 0:t}function Gr(t,e,n,a,r,i){var s=1&n,u=t.length,o=e.length;if(u!=o&&!(s&&o>u))return!1;var l=i.get(t),d=i.get(e);if(l&&d)return l==e&&d==t;var c=-1,f=!0,h=2&n?new Pn:void 0;for(i.set(t,e),i.set(e,t);++c<u;){var g=t[c],p=e[c];if(a)var b=s?a(p,g,c,e,t,i):a(g,p,c,t,e,i);if(void 0!==b){if(b)continue;f=!1;break}if(h){if(!ge(e,(function(t,e){if(!Re(h,e)&&(g===t||r(g,t,n,a,i)))return h.push(e)}))){f=!1;break}}else if(g!==p&&!r(g,p,n,a,i)){f=!1;break}}return i.delete(t),i.delete(e),f}function Br(t){return yi(fi(t,void 0,Li),t+"")}function zr(t){return ca(t,vu,Qr)}function Yr(t){return ca(t,xu,Xr)}var Hr=mn?function(t){return mn.get(t)}:Ju;function Ur(t){for(var e=t.name+"",n=yn[e],a=wt.call(yn,e)?n.length:0;a--;){var r=n[a],i=r.func;if(null==i||i==t)return r.name}return e}function Wr(t){return(wt.call(Nn,"placeholder")?Nn:t).placeholder}function Kr(){var t=Nn.iteratee||Uu;return t=t===Uu?Ta:t,arguments.length?t(arguments[0],arguments[1]):t}function $r(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function Jr(t){for(var e=vu(t),n=e.length;n--;){var a=e[n],r=t[a];e[n]=[a,r,di(r)]}return e}function Zr(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return _a(n)?n:void 0}var Qr=Xe?function(t){return null==t?[]:(t=pt(t),ue(Xe(t),(function(e){return Kt.call(t,e)})))}:ao,Xr=Xe?function(t){for(var e=[];t;)ce(e,Qr(t)),t=Ht(t);return e}:ao,ti=fa;function ei(t,e,n){for(var a=-1,r=(e=ir(e,t)).length,i=!1;++a<r;){var s=Si(e[a]);if(!(i=null!=t&&n(t,s)))break;t=t[s]}return i||++a!=r?i:!!(r=null==t?0:t.length)&&Gs(r)&&ri(s,r)&&(Es(t)||ks(t))}function ni(t){return"function"!=typeof t.constructor||li(t)?{}:Cn(Ht(t))}function ai(t){return Es(t)||ks(t)||!!(pe&&t&&t[pe])}function ri(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&ut.test(t))&&t>-1&&t%1==0&&t<e}function ii(t,e,n){if(!Bs(n))return!1;var a=typeof e;return!!("number"==a?Ds(n)&&ri(e,n.length):"string"==a&&e in n)&&Cs(n[e],t)}function si(t,e){if(Es(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Js(t))||z.test(t)||!B.test(t)||null!=e&&t in pt(e)}function ui(t){var e=Ur(t),n=Nn[e];if("function"!=typeof n||!(e in kn.prototype))return!1;if(t===n)return!0;var a=Hr(n);return!!a&&t===a[0]}(cn&&ti(new cn(new ArrayBuffer(1)))!=w||fn&&ti(new fn)!=g||hn&&"[object Promise]"!=ti(hn.resolve())||gn&&ti(new gn)!=y||pn&&ti(new pn)!=_)&&(ti=function(t){var e=fa(t),n=e==b?t.constructor:void 0,a=n?Ii(n):"";if(a)switch(a){case vn:return w;case xn:return g;case _n:return"[object Promise]";case Tn:return y;case wn:return _}return e});var oi=_t?Fs:ro;function li(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||xt)}function di(t){return t==t&&!Bs(t)}function ci(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in pt(n))}}function fi(t,e,n){return e=rn(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,s=rn(r.length-e,0),u=a(s);++i<s;)u[i]=r[e+i];i=-1;for(var o=a(e+1);++i<e;)o[i]=r[i];return o[e]=n(u),ne(t,this,o)}}function hi(t,e){return e.length<2?t:da(t,za(e,0,-1))}function gi(t,e){for(var n=t.length,a=sn(e.length,n),r=pr(t);a--;){var i=e[a];t[a]=ri(i,n)?r[i]:void 0}return t}function pi(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var bi=xi(Va),mi=Je||function(t,e){return Yt.setTimeout(t,e)},yi=xi(Ga);function vi(t,e,n){var a=e+"";return yi(t,function(t,e){var n=e.length;if(!n)return t;var a=n-1;return e[a]=(n>1?"& ":"")+e[a],e=e.join(n>2?", ":" "),t.replace(J,"{\n/* [wrapped with "+e+"] */\n")}(a,function(t,e){return re(s,(function(n){var a="_."+n[0];e&n[1]&&!oe(t,a)&&t.push(a)})),t.sort()}(function(t){var e=t.match(Z);return e?e[1].split(Q):[]}(a),n)))}function xi(t){var e=0,n=0;return function(){var a=un(),r=16-(a-n);if(n=a,r>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function _i(t,e){var n=-1,a=t.length,r=a-1;for(e=void 0===e?a:e;++n<e;){var i=Da(n,r),s=t[i];t[i]=t[n],t[n]=s}return t.length=e,t}var Ti,wi,Oi=(Ti=Ts((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Y,(function(t,n,a,r){e.push(a?r.replace(tt,"$1"):n||t)})),e}),(function(t){return 500===wi.size&&wi.clear(),t})),wi=Ti.cache,Ti);function Si(t){if("string"==typeof t||Js(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ii(t){if(null!=t){try{return Tt.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function Ni(t){if(t instanceof kn)return t.clone();var e=new An(t.__wrapped__,t.__chain__);return e.__actions__=pr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Ci=Ma((function(t,e){return Ps(t)?Qn(t,ra(e,1,Ps,!0)):[]})),Ri=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),Kr(n,2)):[]})),Ai=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),void 0,n):[]}));function ki(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:nu(n);return r<0&&(r=rn(a+r,0)),me(t,Kr(e,3),r)}function Ei(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a-1;return void 0!==n&&(r=nu(n),r=n<0?rn(a+r,0):sn(r,a-1)),me(t,Kr(e,3),r,!0)}function Li(t){return null!=t&&t.length?ra(t,1):[]}function Di(t){return t&&t.length?t[0]:void 0}var Pi=Ma((function(t){var e=de(t,ar);return e.length&&e[0]===t[0]?ba(e):[]})),Mi=Ma((function(t){var e=ji(t),n=de(t,ar);return e===ji(n)?e=void 0:n.pop(),n.length&&n[0]===t[0]?ba(n,Kr(e,2)):[]})),qi=Ma((function(t){var e=ji(t),n=de(t,ar);return(e="function"==typeof e?e:void 0)&&n.pop(),n.length&&n[0]===t[0]?ba(n,void 0,e):[]}));function ji(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}var Fi=Ma(Vi);function Vi(t,e){return t&&t.length&&e&&e.length?Ea(t,e):t}var Gi=Br((function(t,e){var n=null==t?0:t.length,a=Wn(t,e);return La(t,de(e,(function(t){return ri(t,n)?+t:t})).sort(fr)),a}));function Bi(t){return null==t?t:dn.call(t)}var zi=Ma((function(t){return Ja(ra(t,1,Ps,!0))})),Yi=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),Ja(ra(t,1,Ps,!0),Kr(e,2))})),Hi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,Ja(ra(t,1,Ps,!0),void 0,e)}));function Ui(t){if(!t||!t.length)return[];var e=0;return t=ue(t,(function(t){if(Ps(t))return e=rn(t.length,e),!0})),Ie(e,(function(e){return de(t,Te(e))}))}function Wi(t,e){if(!t||!t.length)return[];var n=Ui(t);return null==e?n:de(n,(function(t){return ne(e,void 0,t)}))}var Ki=Ma((function(t,e){return Ps(t)?Qn(t,e):[]})),$i=Ma((function(t){return er(ue(t,Ps))})),Ji=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),er(ue(t,Ps),Kr(e,2))})),Zi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,er(ue(t,Ps),void 0,e)})),Qi=Ma(Ui),Xi=Ma((function(t){var e=t.length,n=e>1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Wi(t,n)}));function ts(t){var e=Nn(t);return e.__chain__=!0,e}function es(t,e){return e(t)}var ns=Br((function(t){var e=t.length,n=e?t[0]:0,a=this.__wrapped__,r=function(e){return Wn(e,t)};return!(e>1||this.__actions__.length)&&a instanceof kn&&ri(n)?((a=a.slice(n,+n+(e?1:0))).__actions__.push({func:es,args:[r],thisArg:void 0}),new An(a,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(r)})),as=mr((function(t,e,n){wt.call(t,n)?++t[n]:Un(t,n,1)})),rs=Or(ki),is=Or(Ei);function ss(t,e){return(Es(t)?re:Xn)(t,Kr(e,3))}function us(t,e){return(Es(t)?ie:ta)(t,Kr(e,3))}var os=mr((function(t,e,n){wt.call(t,n)?t[n].push(e):Un(t,n,[e])})),ls=Ma((function(t,e,n){var r=-1,i="function"==typeof e,s=Ds(t)?a(t.length):[];return Xn(t,(function(t){s[++r]=i?ne(e,t,n):ma(t,e,n)})),s})),ds=mr((function(t,e,n){Un(t,n,e)}));function cs(t,e){return(Es(t)?de:Sa)(t,Kr(e,3))}var fs=mr((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]})),hs=Ma((function(t,e){if(null==t)return[];var n=e.length;return n>1&&ii(t,e[0],e[1])?e=[]:n>2&&ii(e[0],e[1],e[2])&&(e=[e[0]]),Aa(t,ra(e,1),[])})),gs=$e||function(){return Yt.Date.now()};function ps(t,e,n){return e=n?void 0:e,qr(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function bs(t,e){var n;if("function"!=typeof e)throw new yt(r);return t=nu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var ms=Ma((function(t,e,n){var a=1;if(n.length){var r=Fe(n,Wr(ms));a|=32}return qr(t,a,e,n,r)})),ys=Ma((function(t,e,n){var a=3;if(n.length){var r=Fe(n,Wr(ys));a|=32}return qr(e,a,t,n,r)}));function vs(t,e,n){var a,i,s,u,o,l,d=0,c=!1,f=!1,h=!0;if("function"!=typeof t)throw new yt(r);function g(e){var n=a,r=i;return a=i=void 0,d=e,u=t.apply(r,n)}function p(t){return d=t,o=mi(m,e),c?g(t):u}function b(t){var n=t-l;return void 0===l||n>=e||n<0||f&&t-d>=s}function m(){var t=gs();if(b(t))return y(t);o=mi(m,function(t){var n=e-(t-l);return f?sn(n,s-(t-d)):n}(t))}function y(t){return o=void 0,h&&a?g(t):(a=i=void 0,u)}function v(){var t=gs(),n=b(t);if(a=arguments,i=this,l=t,n){if(void 0===o)return p(l);if(f)return or(o),o=mi(m,e),g(l)}return void 0===o&&(o=mi(m,e)),u}return e=ru(e)||0,Bs(n)&&(c=!!n.leading,s=(f="maxWait"in n)?rn(ru(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h),v.cancel=function(){void 0!==o&&or(o),d=0,a=l=i=o=void 0},v.flush=function(){return void 0===o?u:y(gs())},v}var xs=Ma((function(t,e){return Zn(t,1,e)})),_s=Ma((function(t,e,n){return Zn(t,ru(e)||0,n)}));function Ts(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new yt(r);var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(Ts.Cache||Dn),n}function ws(t){if("function"!=typeof t)throw new yt(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ts.Cache=Dn;var Os=sr((function(t,e){var n=(e=1==e.length&&Es(e[0])?de(e[0],Ne(Kr())):de(ra(e,1),Ne(Kr()))).length;return Ma((function(a){for(var r=-1,i=sn(a.length,n);++r<i;)a[r]=e[r].call(this,a[r]);return ne(t,this,a)}))})),Ss=Ma((function(t,e){return qr(t,32,void 0,e,Fe(e,Wr(Ss)))})),Is=Ma((function(t,e){return qr(t,64,void 0,e,Fe(e,Wr(Is)))})),Ns=Br((function(t,e){return qr(t,256,void 0,void 0,void 0,e)}));function Cs(t,e){return t===e||t!=t&&e!=e}var Rs=Er(ha),As=Er((function(t,e){return t>=e})),ks=ya(function(){return arguments}())?ya:function(t){return zs(t)&&wt.call(t,"callee")&&!Kt.call(t,"callee")},Es=a.isArray,Ls=Jt?Ne(Jt):function(t){return zs(t)&&fa(t)==T};function Ds(t){return null!=t&&Gs(t.length)&&!Fs(t)}function Ps(t){return zs(t)&&Ds(t)}var Ms=tn||ro,qs=Zt?Ne(Zt):function(t){return zs(t)&&fa(t)==d};function js(t){if(!zs(t))return!1;var e=fa(t);return e==c||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Us(t)}function Fs(t){if(!Bs(t))return!1;var e=fa(t);return e==f||e==h||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Vs(t){return"number"==typeof t&&t==nu(t)}function Gs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function Bs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function zs(t){return null!=t&&"object"==typeof t}var Ys=Qt?Ne(Qt):function(t){return zs(t)&&ti(t)==g};function Hs(t){return"number"==typeof t||zs(t)&&fa(t)==p}function Us(t){if(!zs(t)||fa(t)!=b)return!1;var e=Ht(t);if(null===e)return!0;var n=wt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Nt}var Ws=Xt?Ne(Xt):function(t){return zs(t)&&fa(t)==m},Ks=te?Ne(te):function(t){return zs(t)&&ti(t)==y};function $s(t){return"string"==typeof t||!Es(t)&&zs(t)&&fa(t)==v}function Js(t){return"symbol"==typeof t||zs(t)&&fa(t)==x}var Zs=ee?Ne(ee):function(t){return zs(t)&&Gs(t.length)&&!!qt[fa(t)]},Qs=Er(Oa),Xs=Er((function(t,e){return t<=e}));function tu(t){if(!t)return[];if(Ds(t))return $s(t)?ze(t):pr(t);if(we&&t[we])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[we]());var e=ti(t);return(e==g?qe:e==y?Ve:Cu)(t)}function eu(t){return t?(t=ru(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function nu(t){var e=eu(t),n=e%1;return e==e?n?e-n:e:0}function au(t){return t?Kn(nu(t),0,4294967295):0}function ru(t){if("number"==typeof t)return t;if(Js(t))return NaN;if(Bs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Bs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(W,"");var n=rt.test(t);return n||st.test(t)?Gt(t.slice(2),n?2:8):at.test(t)?NaN:+t}function iu(t){return br(t,xu(t))}function su(t){return null==t?"":$a(t)}var uu=yr((function(t,e){if(li(e)||Ds(e))br(e,vu(e),t);else for(var n in e)wt.call(e,n)&&Bn(t,n,e[n])})),ou=yr((function(t,e){br(e,xu(e),t)})),lu=yr((function(t,e,n,a){br(e,xu(e),t,a)})),du=yr((function(t,e,n,a){br(e,vu(e),t,a)})),cu=Br(Wn),fu=Ma((function(t,e){t=pt(t);var n=-1,a=e.length,r=a>2?e[2]:void 0;for(r&&ii(e[0],e[1],r)&&(a=1);++n<a;)for(var i=e[n],s=xu(i),u=-1,o=s.length;++u<o;){var l=s[u],d=t[l];(void 0===d||Cs(d,xt[l])&&!wt.call(t,l))&&(t[l]=i[l])}return t})),hu=Ma((function(t){return t.push(void 0,Fr),ne(Tu,void 0,t)}));function gu(t,e,n){var a=null==t?void 0:da(t,e);return void 0===a?n:a}function pu(t,e){return null!=t&&ei(t,e,pa)}var bu=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),t[e]=n}),Bu(Hu)),mu=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),wt.call(t,e)?t[e].push(n):t[e]=[n]}),Kr),yu=Ma(ma);function vu(t){return Ds(t)?qn(t):wa(t)}function xu(t){return Ds(t)?qn(t,!0):function(t){if(!Bs(t))return function(t){var e=[];if(null!=t)for(var n in pt(t))e.push(n);return e}(t);var e=li(t),n=[];for(var a in t)("constructor"!=a||!e&&wt.call(t,a))&&n.push(a);return n}(t)}var _u=yr((function(t,e,n){Ca(t,e,n)})),Tu=yr((function(t,e,n,a){Ca(t,e,n,a)})),wu=Br((function(t,e){var n={};if(null==t)return n;var a=!1;e=de(e,(function(e){return e=ir(e,t),a||(a=e.length>1),e})),br(t,Yr(t),n),a&&(n=$n(n,7,Vr));for(var r=e.length;r--;)Za(n,e[r]);return n})),Ou=Br((function(t,e){return null==t?{}:function(t,e){return ka(t,e,(function(e,n){return pu(t,n)}))}(t,e)}));function Su(t,e){if(null==t)return{};var n=de(Yr(t),(function(t){return[t]}));return e=Kr(e),ka(t,n,(function(t,n){return e(t,n[0])}))}var Iu=Mr(vu),Nu=Mr(xu);function Cu(t){return null==t?[]:Ce(t,vu(t))}var Ru=Tr((function(t,e,n){return e=e.toLowerCase(),t+(n?Au(e):e)}));function Au(t){return ju(su(t).toLowerCase())}function ku(t){return(t=su(t))&&t.replace(ot,Le).replace(At,"")}var Eu=Tr((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Lu=Tr((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Du=_r("toLowerCase"),Pu=Tr((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()})),Mu=Tr((function(t,e,n){return t+(n?" ":"")+ju(e)})),qu=Tr((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),ju=_r("toUpperCase");function Fu(t,e,n){return t=su(t),void 0===(e=n?void 0:e)?function(t){return Dt.test(t)}(t)?function(t){return t.match(Et)||[]}(t):function(t){return t.match(X)||[]}(t):t.match(e)||[]}var Vu=Ma((function(t,e){try{return ne(t,void 0,e)}catch(n){return js(n)?n:new ft(n)}})),Gu=Br((function(t,e){return re(e,(function(e){e=Si(e),Un(t,e,ms(t[e],t))})),t}));function Bu(t){return function(){return t}}var zu=Sr(),Yu=Sr(!0);function Hu(t){return t}function Uu(t){return Ta("function"==typeof t?t:$n(t,1))}var Wu=Ma((function(t,e){return function(n){return ma(n,t,e)}})),Ku=Ma((function(t,e){return function(n){return ma(t,n,e)}}));function $u(t,e,n){var a=vu(e),r=la(e,a);null!=n||Bs(e)&&(r.length||!a.length)||(n=e,e=t,t=this,r=la(e,vu(e)));var i=!(Bs(n)&&"chain"in n&&!n.chain),s=Fs(t);return re(r,(function(n){var a=e[n];t[n]=a,s&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),r=n.__actions__=pr(this.__actions__);return r.push({func:a,args:arguments,thisArg:t}),n.__chain__=e,n}return a.apply(t,ce([this.value()],arguments))})})),t}function Ju(){}var Zu=Rr(de),Qu=Rr(se),Xu=Rr(ge);function to(t){return si(t)?Te(Si(t)):function(t){return function(e){return da(e,t)}}(t)}var eo=kr(),no=kr(!0);function ao(){return[]}function ro(){return!1}var io,so=Cr((function(t,e){return t+e}),0),uo=Dr("ceil"),oo=Cr((function(t,e){return t/e}),1),lo=Dr("floor"),co=Cr((function(t,e){return t*e}),1),fo=Dr("round"),ho=Cr((function(t,e){return t-e}),0);return Nn.after=function(t,e){if("function"!=typeof e)throw new yt(r);return t=nu(t),function(){if(--t<1)return e.apply(this,arguments)}},Nn.ary=ps,Nn.assign=uu,Nn.assignIn=ou,Nn.assignInWith=lu,Nn.assignWith=du,Nn.at=cu,Nn.before=bs,Nn.bind=ms,Nn.bindAll=Gu,Nn.bindKey=ys,Nn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Es(t)?t:[t]},Nn.chain=ts,Nn.chunk=function(t,e,n){e=(n?ii(t,e,n):void 0===e)?1:rn(nu(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,s=0,u=a(Ze(r/e));i<r;)u[s++]=za(t,i,i+=e);return u},Nn.compact=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r},Nn.concat=function(){var t=arguments.length;if(!t)return[];for(var e=a(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return ce(Es(n)?pr(n):[n],ra(e,1))},Nn.cond=function(t){var e=null==t?0:t.length,n=Kr();return t=e?de(t,(function(t){if("function"!=typeof t[1])throw new yt(r);return[n(t[0]),t[1]]})):[],Ma((function(n){for(var a=-1;++a<e;){var r=t[a];if(ne(r[0],this,n))return ne(r[1],this,n)}}))},Nn.conforms=function(t){return function(t){var e=vu(t);return function(n){return Jn(n,t,e)}}($n(t,1))},Nn.constant=Bu,Nn.countBy=as,Nn.create=function(t,e){var n=Cn(t);return null==e?n:Hn(n,e)},Nn.curry=function t(e,n,a){var r=qr(e,8,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.curryRight=function t(e,n,a){var r=qr(e,16,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.debounce=vs,Nn.defaults=fu,Nn.defaultsDeep=hu,Nn.defer=xs,Nn.delay=_s,Nn.difference=Ci,Nn.differenceBy=Ri,Nn.differenceWith=Ai,Nn.drop=function(t,e,n){var a=null==t?0:t.length;return a?za(t,(e=n||void 0===e?1:nu(e))<0?0:e,a):[]},Nn.dropRight=function(t,e,n){var a=null==t?0:t.length;return a?za(t,0,(e=a-(e=n||void 0===e?1:nu(e)))<0?0:e):[]},Nn.dropRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0,!0):[]},Nn.dropWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0):[]},Nn.fill=function(t,e,n,a){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&ii(t,e,n)&&(n=0,a=r),function(t,e,n,a){var r=t.length;for((n=nu(n))<0&&(n=-n>r?0:r+n),(a=void 0===a||a>r?r:nu(a))<0&&(a+=r),a=n>a?0:au(a);n<a;)t[n++]=e;return t}(t,e,n,a)):[]},Nn.filter=function(t,e){return(Es(t)?ue:aa)(t,Kr(e,3))},Nn.flatMap=function(t,e){return ra(cs(t,e),1)},Nn.flatMapDeep=function(t,e){return ra(cs(t,e),1/0)},Nn.flatMapDepth=function(t,e,n){return n=void 0===n?1:nu(n),ra(cs(t,e),n)},Nn.flatten=Li,Nn.flattenDeep=function(t){return null!=t&&t.length?ra(t,1/0):[]},Nn.flattenDepth=function(t,e){return null!=t&&t.length?ra(t,e=void 0===e?1:nu(e)):[]},Nn.flip=function(t){return qr(t,512)},Nn.flow=zu,Nn.flowRight=Yu,Nn.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,a={};++e<n;){var r=t[e];a[r[0]]=r[1]}return a},Nn.functions=function(t){return null==t?[]:la(t,vu(t))},Nn.functionsIn=function(t){return null==t?[]:la(t,xu(t))},Nn.groupBy=os,Nn.initial=function(t){return null!=t&&t.length?za(t,0,-1):[]},Nn.intersection=Pi,Nn.intersectionBy=Mi,Nn.intersectionWith=qi,Nn.invert=bu,Nn.invertBy=mu,Nn.invokeMap=ls,Nn.iteratee=Uu,Nn.keyBy=ds,Nn.keys=vu,Nn.keysIn=xu,Nn.map=cs,Nn.mapKeys=function(t,e){var n={};return e=Kr(e,3),ua(t,(function(t,a,r){Un(n,e(t,a,r),t)})),n},Nn.mapValues=function(t,e){var n={};return e=Kr(e,3),ua(t,(function(t,a,r){Un(n,a,e(t,a,r))})),n},Nn.matches=function(t){return Ia($n(t,1))},Nn.matchesProperty=function(t,e){return Na(t,$n(e,1))},Nn.memoize=Ts,Nn.merge=_u,Nn.mergeWith=Tu,Nn.method=Wu,Nn.methodOf=Ku,Nn.mixin=$u,Nn.negate=ws,Nn.nthArg=function(t){return t=nu(t),Ma((function(e){return Ra(e,t)}))},Nn.omit=wu,Nn.omitBy=function(t,e){return Su(t,ws(Kr(e)))},Nn.once=function(t){return bs(2,t)},Nn.orderBy=function(t,e,n,a){return null==t?[]:(Es(e)||(e=null==e?[]:[e]),Es(n=a?void 0:n)||(n=null==n?[]:[n]),Aa(t,e,n))},Nn.over=Zu,Nn.overArgs=Os,Nn.overEvery=Qu,Nn.overSome=Xu,Nn.partial=Ss,Nn.partialRight=Is,Nn.partition=fs,Nn.pick=Ou,Nn.pickBy=Su,Nn.property=to,Nn.propertyOf=function(t){return function(e){return null==t?void 0:da(t,e)}},Nn.pull=Fi,Nn.pullAll=Vi,Nn.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,Kr(n,2)):t},Nn.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,void 0,n):t},Nn.pullAt=Gi,Nn.range=eo,Nn.rangeRight=no,Nn.rearg=Ns,Nn.reject=function(t,e){return(Es(t)?ue:aa)(t,ws(Kr(e,3)))},Nn.remove=function(t,e){var n=[];if(!t||!t.length)return n;var a=-1,r=[],i=t.length;for(e=Kr(e,3);++a<i;){var s=t[a];e(s,a,t)&&(n.push(s),r.push(a))}return La(t,r),n},Nn.rest=function(t,e){if("function"!=typeof t)throw new yt(r);return Ma(t,e=void 0===e?e:nu(e))},Nn.reverse=Bi,Nn.sampleSize=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:nu(e),(Es(t)?Fn:ja)(t,e)},Nn.set=function(t,e,n){return null==t?t:Fa(t,e,n)},Nn.setWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Fa(t,e,n,a)},Nn.shuffle=function(t){return(Es(t)?Vn:Ba)(t)},Nn.slice=function(t,e,n){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&ii(t,e,n)?(e=0,n=a):(e=null==e?0:nu(e),n=void 0===n?a:nu(n)),za(t,e,n)):[]},Nn.sortBy=hs,Nn.sortedUniq=function(t){return t&&t.length?Wa(t):[]},Nn.sortedUniqBy=function(t,e){return t&&t.length?Wa(t,Kr(e,2)):[]},Nn.split=function(t,e,n){return n&&"number"!=typeof n&&ii(t,e,n)&&(e=n=void 0),(n=void 0===n?4294967295:n>>>0)?(t=su(t))&&("string"==typeof e||null!=e&&!Ws(e))&&!(e=$a(e))&&Me(t)?ur(ze(t),0,n):t.split(e,n):[]},Nn.spread=function(t,e){if("function"!=typeof t)throw new yt(r);return e=null==e?0:rn(nu(e),0),Ma((function(n){var a=n[e],r=ur(n,0,e);return a&&ce(r,a),ne(t,this,r)}))},Nn.tail=function(t){var e=null==t?0:t.length;return e?za(t,1,e):[]},Nn.take=function(t,e,n){return t&&t.length?za(t,0,(e=n||void 0===e?1:nu(e))<0?0:e):[]},Nn.takeRight=function(t,e,n){var a=null==t?0:t.length;return a?za(t,(e=a-(e=n||void 0===e?1:nu(e)))<0?0:e,a):[]},Nn.takeRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!1,!0):[]},Nn.takeWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3)):[]},Nn.tap=function(t,e){return e(t),t},Nn.throttle=function(t,e,n){var a=!0,i=!0;if("function"!=typeof t)throw new yt(r);return Bs(n)&&(a="leading"in n?!!n.leading:a,i="trailing"in n?!!n.trailing:i),vs(t,e,{leading:a,maxWait:e,trailing:i})},Nn.thru=es,Nn.toArray=tu,Nn.toPairs=Iu,Nn.toPairsIn=Nu,Nn.toPath=function(t){return Es(t)?de(t,Si):Js(t)?[t]:pr(Oi(su(t)))},Nn.toPlainObject=iu,Nn.transform=function(t,e,n){var a=Es(t),r=a||Ms(t)||Zs(t);if(e=Kr(e,4),null==n){var i=t&&t.constructor;n=r?a?new i:[]:Bs(t)&&Fs(i)?Cn(Ht(t)):{}}return(r?re:ua)(t,(function(t,a,r){return e(n,t,a,r)})),n},Nn.unary=function(t){return ps(t,1)},Nn.union=zi,Nn.unionBy=Yi,Nn.unionWith=Hi,Nn.uniq=function(t){return t&&t.length?Ja(t):[]},Nn.uniqBy=function(t,e){return t&&t.length?Ja(t,Kr(e,2)):[]},Nn.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Ja(t,void 0,e):[]},Nn.unset=function(t,e){return null==t||Za(t,e)},Nn.unzip=Ui,Nn.unzipWith=Wi,Nn.update=function(t,e,n){return null==t?t:Qa(t,e,rr(n))},Nn.updateWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Qa(t,e,rr(n),a)},Nn.values=Cu,Nn.valuesIn=function(t){return null==t?[]:Ce(t,xu(t))},Nn.without=Ki,Nn.words=Fu,Nn.wrap=function(t,e){return Ss(rr(e),t)},Nn.xor=$i,Nn.xorBy=Ji,Nn.xorWith=Zi,Nn.zip=Qi,Nn.zipObject=function(t,e){return nr(t||[],e||[],Bn)},Nn.zipObjectDeep=function(t,e){return nr(t||[],e||[],Fa)},Nn.zipWith=Xi,Nn.entries=Iu,Nn.entriesIn=Nu,Nn.extend=ou,Nn.extendWith=lu,$u(Nn,Nn),Nn.add=so,Nn.attempt=Vu,Nn.camelCase=Ru,Nn.capitalize=Au,Nn.ceil=uo,Nn.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=ru(n))==n?n:0),void 0!==e&&(e=(e=ru(e))==e?e:0),Kn(ru(t),e,n)},Nn.clone=function(t){return $n(t,4)},Nn.cloneDeep=function(t){return $n(t,5)},Nn.cloneDeepWith=function(t,e){return $n(t,5,e="function"==typeof e?e:void 0)},Nn.cloneWith=function(t,e){return $n(t,4,e="function"==typeof e?e:void 0)},Nn.conformsTo=function(t,e){return null==e||Jn(t,e,vu(e))},Nn.deburr=ku,Nn.defaultTo=function(t,e){return null==t||t!=t?e:t},Nn.divide=oo,Nn.endsWith=function(t,e,n){t=su(t),e=$a(e);var a=t.length,r=n=void 0===n?a:Kn(nu(n),0,a);return(n-=e.length)>=0&&t.slice(n,r)==e},Nn.eq=Cs,Nn.escape=function(t){return(t=su(t))&&j.test(t)?t.replace(M,De):t},Nn.escapeRegExp=function(t){return(t=su(t))&&U.test(t)?t.replace(H,"\\$&"):t},Nn.every=function(t,e,n){var a=Es(t)?se:ea;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.find=rs,Nn.findIndex=ki,Nn.findKey=function(t,e){return be(t,Kr(e,3),ua)},Nn.findLast=is,Nn.findLastIndex=Ei,Nn.findLastKey=function(t,e){return be(t,Kr(e,3),oa)},Nn.floor=lo,Nn.forEach=ss,Nn.forEachRight=us,Nn.forIn=function(t,e){return null==t?t:ia(t,Kr(e,3),xu)},Nn.forInRight=function(t,e){return null==t?t:sa(t,Kr(e,3),xu)},Nn.forOwn=function(t,e){return t&&ua(t,Kr(e,3))},Nn.forOwnRight=function(t,e){return t&&oa(t,Kr(e,3))},Nn.get=gu,Nn.gt=Rs,Nn.gte=As,Nn.has=function(t,e){return null!=t&&ei(t,e,ga)},Nn.hasIn=pu,Nn.head=Di,Nn.identity=Hu,Nn.includes=function(t,e,n,a){t=Ds(t)?t:Cu(t),n=n&&!a?nu(n):0;var r=t.length;return n<0&&(n=rn(r+n,0)),$s(t)?n<=r&&t.indexOf(e,n)>-1:!!r&&ye(t,e,n)>-1},Nn.indexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:nu(n);return r<0&&(r=rn(a+r,0)),ye(t,e,r)},Nn.inRange=function(t,e,n){return e=eu(e),void 0===n?(n=e,e=0):n=eu(n),function(t,e,n){return t>=sn(e,n)&&t<rn(e,n)}(t=ru(t),e,n)},Nn.invoke=yu,Nn.isArguments=ks,Nn.isArray=Es,Nn.isArrayBuffer=Ls,Nn.isArrayLike=Ds,Nn.isArrayLikeObject=Ps,Nn.isBoolean=function(t){return!0===t||!1===t||zs(t)&&fa(t)==l},Nn.isBuffer=Ms,Nn.isDate=qs,Nn.isElement=function(t){return zs(t)&&1===t.nodeType&&!Us(t)},Nn.isEmpty=function(t){if(null==t)return!0;if(Ds(t)&&(Es(t)||"string"==typeof t||"function"==typeof t.splice||Ms(t)||Zs(t)||ks(t)))return!t.length;var e=ti(t);if(e==g||e==y)return!t.size;if(li(t))return!wa(t).length;for(var n in t)if(wt.call(t,n))return!1;return!0},Nn.isEqual=function(t,e){return va(t,e)},Nn.isEqualWith=function(t,e,n){var a=(n="function"==typeof n?n:void 0)?n(t,e):void 0;return void 0===a?va(t,e,void 0,n):!!a},Nn.isError=js,Nn.isFinite=function(t){return"number"==typeof t&&en(t)},Nn.isFunction=Fs,Nn.isInteger=Vs,Nn.isLength=Gs,Nn.isMap=Ys,Nn.isMatch=function(t,e){return t===e||xa(t,e,Jr(e))},Nn.isMatchWith=function(t,e,n){return n="function"==typeof n?n:void 0,xa(t,e,Jr(e),n)},Nn.isNaN=function(t){return Hs(t)&&t!=+t},Nn.isNative=function(t){if(oi(t))throw new ft("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return _a(t)},Nn.isNil=function(t){return null==t},Nn.isNull=function(t){return null===t},Nn.isNumber=Hs,Nn.isObject=Bs,Nn.isObjectLike=zs,Nn.isPlainObject=Us,Nn.isRegExp=Ws,Nn.isSafeInteger=function(t){return Vs(t)&&t>=-9007199254740991&&t<=9007199254740991},Nn.isSet=Ks,Nn.isString=$s,Nn.isSymbol=Js,Nn.isTypedArray=Zs,Nn.isUndefined=function(t){return void 0===t},Nn.isWeakMap=function(t){return zs(t)&&ti(t)==_},Nn.isWeakSet=function(t){return zs(t)&&"[object WeakSet]"==fa(t)},Nn.join=function(t,e){return null==t?"":nn.call(t,e)},Nn.kebabCase=Eu,Nn.last=ji,Nn.lastIndexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a;return void 0!==n&&(r=(r=nu(n))<0?rn(a+r,0):sn(r,a-1)),e==e?function(t,e,n){for(var a=n+1;a--;)if(t[a]===e)return a;return a}(t,e,r):me(t,xe,r,!0)},Nn.lowerCase=Lu,Nn.lowerFirst=Du,Nn.lt=Qs,Nn.lte=Xs,Nn.max=function(t){return t&&t.length?na(t,Hu,ha):void 0},Nn.maxBy=function(t,e){return t&&t.length?na(t,Kr(e,2),ha):void 0},Nn.mean=function(t){return _e(t,Hu)},Nn.meanBy=function(t,e){return _e(t,Kr(e,2))},Nn.min=function(t){return t&&t.length?na(t,Hu,Oa):void 0},Nn.minBy=function(t,e){return t&&t.length?na(t,Kr(e,2),Oa):void 0},Nn.stubArray=ao,Nn.stubFalse=ro,Nn.stubObject=function(){return{}},Nn.stubString=function(){return""},Nn.stubTrue=function(){return!0},Nn.multiply=co,Nn.nth=function(t,e){return t&&t.length?Ra(t,nu(e)):void 0},Nn.noConflict=function(){return Yt._===this&&(Yt._=Ct),this},Nn.noop=Ju,Nn.now=gs,Nn.pad=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;if(!e||a>=e)return t;var r=(e-a)/2;return Ar(Qe(r),n)+t+Ar(Ze(r),n)},Nn.padEnd=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;return e&&a<e?t+Ar(e-a,n):t},Nn.padStart=function(t,e,n){t=su(t);var a=(e=nu(e))?Be(t):0;return e&&a<e?Ar(e-a,n)+t:t},Nn.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),on(su(t).replace(K,""),e||0)},Nn.random=function(t,e,n){if(n&&"boolean"!=typeof n&&ii(t,e,n)&&(e=n=void 0),void 0===n&&("boolean"==typeof e?(n=e,e=void 0):"boolean"==typeof t&&(n=t,t=void 0)),void 0===t&&void 0===e?(t=0,e=1):(t=eu(t),void 0===e?(e=t,t=0):e=eu(e)),t>e){var a=t;t=e,e=a}if(n||t%1||e%1){var r=ln();return sn(t+r*(e-t+Vt("1e-"+((r+"").length-1))),e)}return Da(t,e)},Nn.reduce=function(t,e,n){var a=Es(t)?fe:Oe,r=arguments.length<3;return a(t,Kr(e,4),n,r,Xn)},Nn.reduceRight=function(t,e,n){var a=Es(t)?he:Oe,r=arguments.length<3;return a(t,Kr(e,4),n,r,ta)},Nn.repeat=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:nu(e),Pa(su(t),e)},Nn.replace=function(){var t=arguments,e=su(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Nn.result=function(t,e,n){var a=-1,r=(e=ir(e,t)).length;for(r||(r=1,t=void 0);++a<r;){var i=null==t?void 0:t[Si(e[a])];void 0===i&&(a=r,i=n),t=Fs(i)?i.call(t):i}return t},Nn.round=fo,Nn.runInContext=t,Nn.sample=function(t){return(Es(t)?jn:qa)(t)},Nn.size=function(t){if(null==t)return 0;if(Ds(t))return $s(t)?Be(t):t.length;var e=ti(t);return e==g||e==y?t.size:wa(t).length},Nn.snakeCase=Pu,Nn.some=function(t,e,n){var a=Es(t)?ge:Ya;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.sortedIndex=function(t,e){return Ha(t,e)},Nn.sortedIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2))},Nn.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var a=Ha(t,e);if(a<n&&Cs(t[a],e))return a}return-1},Nn.sortedLastIndex=function(t,e){return Ha(t,e,!0)},Nn.sortedLastIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2),!0)},Nn.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var n=Ha(t,e,!0)-1;if(Cs(t[n],e))return n}return-1},Nn.startCase=Mu,Nn.startsWith=function(t,e,n){return t=su(t),n=null==n?0:Kn(nu(n),0,t.length),e=$a(e),t.slice(n,n+e.length)==e},Nn.subtract=ho,Nn.sum=function(t){return t&&t.length?Se(t,Hu):0},Nn.sumBy=function(t,e){return t&&t.length?Se(t,Kr(e,2)):0},Nn.template=function(t,e,n){var a=Nn.templateSettings;n&&ii(t,e,n)&&(e=void 0),t=su(t),e=lu({},e,a,jr);var r,i,s=lu({},e.imports,a.imports,jr),u=vu(s),o=Ce(s,u),l=0,d=e.interpolate||lt,c="__p += '",f=bt((e.escape||lt).source+"|"+d.source+"|"+(d===G?et:lt).source+"|"+(e.evaluate||lt).source+"|$","g"),h="//# sourceURL="+(wt.call(e,"sourceURL")?(e.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Mt+"]")+"\n";t.replace(f,(function(e,n,a,s,u,o){return a||(a=s),c+=t.slice(l,o).replace(dt,Pe),n&&(r=!0,c+="' +\n__e("+n+") +\n'"),u&&(i=!0,c+="';\n"+u+";\n__p += '"),a&&(c+="' +\n((__t = ("+a+")) == null ? '' : __t) +\n'"),l=o+e.length,e})),c+="';\n";var g=wt.call(e,"variable")&&e.variable;g||(c="with (obj) {\n"+c+"\n}\n"),c=(i?c.replace(E,""):c).replace(L,"$1").replace(D,"$1;"),c="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(r?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+c+"return __p\n}";var p=Vu((function(){return ht(u,h+"return "+c).apply(void 0,o)}));if(p.source=c,js(p))throw p;return p},Nn.times=function(t,e){if((t=nu(t))<1||t>9007199254740991)return[];var n=4294967295,a=sn(t,4294967295);t-=4294967295;for(var r=Ie(a,e=Kr(e));++n<t;)e(n);return r},Nn.toFinite=eu,Nn.toInteger=nu,Nn.toLength=au,Nn.toLower=function(t){return su(t).toLowerCase()},Nn.toNumber=ru,Nn.toSafeInteger=function(t){return t?Kn(nu(t),-9007199254740991,9007199254740991):0===t?t:0},Nn.toString=su,Nn.toUpper=function(t){return su(t).toUpperCase()},Nn.trim=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace(W,"");if(!t||!(e=$a(e)))return t;var a=ze(t),r=ze(e);return ur(a,Ae(a,r),ke(a,r)+1).join("")},Nn.trimEnd=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace($,"");if(!t||!(e=$a(e)))return t;var a=ze(t);return ur(a,0,ke(a,ze(e))+1).join("")},Nn.trimStart=function(t,e,n){if((t=su(t))&&(n||void 0===e))return t.replace(K,"");if(!t||!(e=$a(e)))return t;var a=ze(t);return ur(a,Ae(a,ze(e))).join("")},Nn.truncate=function(t,e){var n=30,a="...";if(Bs(e)){var r="separator"in e?e.separator:r;n="length"in e?nu(e.length):n,a="omission"in e?$a(e.omission):a}var i=(t=su(t)).length;if(Me(t)){var s=ze(t);i=s.length}if(n>=i)return t;var u=n-Be(a);if(u<1)return a;var o=s?ur(s,0,u).join(""):t.slice(0,u);if(void 0===r)return o+a;if(s&&(u+=o.length-u),Ws(r)){if(t.slice(u).search(r)){var l,d=o;for(r.global||(r=bt(r.source,su(nt.exec(r))+"g")),r.lastIndex=0;l=r.exec(d);)var c=l.index;o=o.slice(0,void 0===c?u:c)}}else if(t.indexOf($a(r),u)!=u){var f=o.lastIndexOf(r);f>-1&&(o=o.slice(0,f))}return o+a},Nn.unescape=function(t){return(t=su(t))&&q.test(t)?t.replace(P,Ye):t},Nn.uniqueId=function(t){var e=++Ot;return su(t)+e},Nn.upperCase=qu,Nn.upperFirst=ju,Nn.each=ss,Nn.eachRight=us,Nn.first=Di,$u(Nn,(io={},ua(Nn,(function(t,e){wt.call(Nn.prototype,e)||(io[e]=t)})),io),{chain:!1}),Nn.VERSION="4.17.20",re(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Nn[t].placeholder=Nn})),re(["drop","take"],(function(t,e){kn.prototype[t]=function(n){n=void 0===n?1:rn(nu(n),0);var a=this.__filtered__&&!e?new kn(this):this.clone();return a.__filtered__?a.__takeCount__=sn(n,a.__takeCount__):a.__views__.push({size:sn(n,4294967295),type:t+(a.__dir__<0?"Right":"")}),a},kn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),re(["filter","map","takeWhile"],(function(t,e){var n=e+1,a=1==n||3==n;kn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Kr(t,3),type:n}),e.__filtered__=e.__filtered__||a,e}})),re(["head","last"],(function(t,e){var n="take"+(e?"Right":"");kn.prototype[t]=function(){return this[n](1).value()[0]}})),re(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");kn.prototype[t]=function(){return this.__filtered__?new kn(this):this[n](1)}})),kn.prototype.compact=function(){return this.filter(Hu)},kn.prototype.find=function(t){return this.filter(t).head()},kn.prototype.findLast=function(t){return this.reverse().find(t)},kn.prototype.invokeMap=Ma((function(t,e){return"function"==typeof t?new kn(this):this.map((function(n){return ma(n,t,e)}))})),kn.prototype.reject=function(t){return this.filter(ws(Kr(t)))},kn.prototype.slice=function(t,e){t=nu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new kn(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=nu(e))<0?n.dropRight(-e):n.take(e-t)),n)},kn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},kn.prototype.toArray=function(){return this.take(4294967295)},ua(kn.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),a=/^(?:head|last)$/.test(e),r=Nn[a?"take"+("last"==e?"Right":""):e],i=a||/^find/.test(e);r&&(Nn.prototype[e]=function(){var e=this.__wrapped__,s=a?[1]:arguments,u=e instanceof kn,o=s[0],l=u||Es(e),d=function(t){var e=r.apply(Nn,ce([t],s));return a&&c?e[0]:e};l&&n&&"function"==typeof o&&1!=o.length&&(u=l=!1);var c=this.__chain__,f=!!this.__actions__.length,h=i&&!c,g=u&&!f;if(!i&&l){e=g?e:new kn(this);var p=t.apply(e,s);return p.__actions__.push({func:es,args:[d],thisArg:void 0}),new An(p,c)}return h&&g?t.apply(this,s):(p=this.thru(d),h?a?p.value()[0]:p.value():p)})})),re(["pop","push","shift","sort","splice","unshift"],(function(t){var e=vt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",a=/^(?:pop|shift)$/.test(t);Nn.prototype[t]=function(){var t=arguments;if(a&&!this.__chain__){var r=this.value();return e.apply(Es(r)?r:[],t)}return this[n]((function(n){return e.apply(Es(n)?n:[],t)}))}})),ua(kn.prototype,(function(t,e){var n=Nn[e];if(n){var a=n.name+"";wt.call(yn,a)||(yn[a]=[]),yn[a].push({name:e,func:n})}})),yn[Ir(void 0,2).name]=[{name:"wrapper",func:void 0}],kn.prototype.clone=function(){var t=new kn(this.__wrapped__);return t.__actions__=pr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=pr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=pr(this.__views__),t},kn.prototype.reverse=function(){if(this.__filtered__){var t=new kn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},kn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Es(t),a=e<0,r=n?t.length:0,i=function(t,e,n){for(var a=-1,r=n.length;++a<r;){var i=n[a],s=i.size;switch(i.type){case"drop":t+=s;break;case"dropRight":e-=s;break;case"take":e=sn(e,t+s);break;case"takeRight":t=rn(t,e-s)}}return{start:t,end:e}}(0,r,this.__views__),s=i.start,u=i.end,o=u-s,l=a?u:s-1,d=this.__iteratees__,c=d.length,f=0,h=sn(o,this.__takeCount__);if(!n||!a&&r==o&&h==o)return tr(t,this.__actions__);var g=[];t:for(;o--&&f<h;){for(var p=-1,b=t[l+=e];++p<c;){var m=d[p],y=m.type,v=(0,m.iteratee)(b);if(2==y)b=v;else if(!v){if(1==y)continue t;break t}}g[f++]=b}return g},Nn.prototype.at=ns,Nn.prototype.chain=function(){return ts(this)},Nn.prototype.commit=function(){return new An(this.value(),this.__chain__)},Nn.prototype.next=function(){void 0===this.__values__&&(this.__values__=tu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},Nn.prototype.plant=function(t){for(var e,n=this;n instanceof Rn;){var a=Ni(n);a.__index__=0,a.__values__=void 0,e?r.__wrapped__=a:e=a;var r=a;n=n.__wrapped__}return r.__wrapped__=t,e},Nn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof kn){var e=t;return this.__actions__.length&&(e=new kn(this)),(e=e.reverse()).__actions__.push({func:es,args:[Bi],thisArg:void 0}),new An(e,this.__chain__)}return this.thru(Bi)},Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return tr(this.__wrapped__,this.__actions__)},Nn.prototype.first=Nn.prototype.head,we&&(Nn.prototype[we]=function(){return this}),Nn}();Yt._=He,void 0===(a=(function(){return He}).call(e,n,e,t))||(t.exports=a)}).call(this)}).call(this,n("YuTi")(t))},lyxo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=" ";return(t%100>=20||t>=100&&t%100==0)&&(a=" de "),t+a+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}t.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:e,m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})}(n("wd/R"))},"m/L8":function(t,e,n){var a=n("2oRo"),r=n("g6v/"),i=n("DPsx"),s=n("glrk"),u=n("oEtG"),o=a.TypeError,l=Object.defineProperty;e.f=r?l:function(t,e,n){if(s(t),e=u(e),s(n),i)try{return l(t,e,n)}catch(a){}if("get"in n||"set"in n)throw o("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},mCNh:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("KqfI");function r(...t){return i(t)}function i(t){return t?1===t.length?t[0]:function(e){return t.reduce((t,e)=>e(t),e)}:a.a}},mOnh:function(t,e,n){var a=n("nTk+"),r=n("Z2DA"),i=n("MBcj");t.exports=function(t){return a(t,i,r)}},mSOc:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("LvDl"),r=n("2Vo4"),i=n("pLZG"),s=n("SxV6"),u=n("lOp/"),o=n("8Y7J"),l=n("IheW");let d=(()=>{class t{constructor(t,e){this.http=t,this.timerService=e,this.REFRESH_INTERVAL=5e3,this.summaryDataSource=new r.a(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/summary")}retrieveSummaryObserver(){return t=>{this.summaryDataSource.next(t)}}subscribeOnce(t,e){return this.summaryData$.pipe(Object(i.a)(t=>!!t),Object(s.a)()).subscribe(t,e)}subscribe(t,e){return this.summaryData$.pipe(Object(i.a)(t=>!!t)).subscribe(t,e)}addRunningTask(t){const e=this.summaryDataSource.getValue();e&&(a.isArray(e.executing_tasks)?e.executing_tasks.find(e=>e.name===t.name&&a.isEqual(e.metadata,t.metadata))||e.executing_tasks.push(t):e.executing_tasks=[t],this.summaryDataSource.next(e))}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](l.c),o["ɵɵinject"](u.a))},token:t,providedIn:"root"}),t})()},"mWP/":function(t,e,n){var a=n("ktBm");t.exports=function(t){var e=this.__data__,n=a(e,t);return n<0?void 0:e[n][1]}},mXUL:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return c}));var a=n("8Y7J"),r=n("+gVj"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:[".invalid-feedback[_ngcontent-%COMP%], .valid-feedback[_ngcontent-%COMP%] {\n        display: block;\n      }"],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){t(e,2,0,e.component.className)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function o(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](1,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,e.component.messages())}),null)}var l=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bfv-messages",[],null,null,null,o,s)),a["ɵdid"](1,49152,null,0,r.e,[r.a],{messages:[0,"messages"]},null)],(function(t,e){t(e,1,0,e.component.messages)}),null)}function c(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,!e.component.messagesBlock)}),null)}},mfoh:function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return p}));var a,r=n("CFvb"),i=n("8rQ2"),s=n.n(i),u=n("eQba"),o=n.n(u),l=n("CUJ1"),d=n.n(l),c=n("h7vy"),f=n.n(c),h={TOGGLE_ACTIVE:function(t,e,n){return e&&e.toggleActivated()},TOGGLE_ACTIVE_MULTI:function(t,e,n){return e&&e.toggleActivated(!0)},TOGGLE_SELECTED:function(t,e,n){return e&&e.toggleSelected()},ACTIVATE:function(t,e,n){return e.setIsActive(!0)},DEACTIVATE:function(t,e,n){return e.setIsActive(!1)},SELECT:function(t,e,n){return e.setIsSelected(!0)},DESELECT:function(t,e,n){return e.setIsSelected(!1)},FOCUS:function(t,e,n){return e.focus()},TOGGLE_EXPANDED:function(t,e,n){return e.hasChildren&&e.toggleExpanded()},EXPAND:function(t,e,n){return e.expand()},COLLAPSE:function(t,e,n){return e.collapse()},DRILL_DOWN:function(t,e,n){return t.focusDrillDown()},DRILL_UP:function(t,e,n){return t.focusDrillUp()},NEXT_NODE:function(t,e,n){return t.focusNextNode()},PREVIOUS_NODE:function(t,e,n){return t.focusPreviousNode()},MOVE_NODE:function(t,e,n,a){var r=a.from,i=a.to;n.ctrlKey?t.copyNode(r,i):t.moveNode(r,i)}},g={mouse:{click:h.TOGGLE_ACTIVE,dblClick:null,contextMenu:null,expanderClick:h.TOGGLE_EXPANDED,checkboxClick:h.TOGGLE_SELECTED,drop:h.MOVE_NODE},keys:(a={},a[r.a.RIGHT]=h.DRILL_DOWN,a[r.a.LEFT]=h.DRILL_UP,a[r.a.DOWN]=h.NEXT_NODE,a[r.a.UP]=h.PREVIOUS_NODE,a[r.a.SPACE]=h.TOGGLE_ACTIVE,a[r.a.ENTER]=h.TOGGLE_ACTIVE,a)},p=function(){function t(t){void 0===t&&(t={}),this.options=t,this.actionMapping=s()({},this.options.actionMapping,g),t.rtl&&(this.actionMapping.keys[r.a.RIGHT]=o()(t,["actionMapping","keys",r.a.RIGHT])||h.DRILL_UP,this.actionMapping.keys[r.a.LEFT]=o()(t,["actionMapping","keys",r.a.LEFT])||h.DRILL_DOWN)}return Object.defineProperty(t.prototype,"hasChildrenField",{get:function(){return this.options.hasChildrenField||"hasChildren"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"childrenField",{get:function(){return this.options.childrenField||"children"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"displayField",{get:function(){return this.options.displayField||"name"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"idField",{get:function(){return this.options.idField||"id"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isExpandedField",{get:function(){return this.options.isExpandedField||"isExpanded"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"getChildren",{get:function(){return this.options.getChildren},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"levelPadding",{get:function(){return this.options.levelPadding||0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useVirtualScroll",{get:function(){return this.options.useVirtualScroll},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateExpand",{get:function(){return this.options.animateExpand},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateSpeed",{get:function(){return this.options.animateSpeed||1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateAcceleration",{get:function(){return this.options.animateAcceleration||1.2},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollOnActivate",{get:function(){return void 0===this.options.scrollOnActivate||this.options.scrollOnActivate},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rtl",{get:function(){return!!this.options.rtl},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rootId",{get:function(){return this.options.rootId},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useCheckbox",{get:function(){return this.options.useCheckbox},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useTriState",{get:function(){return void 0===this.options.useTriState||this.options.useTriState},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollContainer",{get:function(){return this.options.scrollContainer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allowDragoverStyling",{get:function(){return void 0===this.options.allowDragoverStyling||this.options.allowDragoverStyling},enumerable:!0,configurable:!0}),t.prototype.getNodeClone=function(t){return this.options.getNodeClone?this.options.getNodeClone(t):d()(Object.assign({},t.data),["id"])},t.prototype.allowDrop=function(t,e,n){return this.options.allowDrop instanceof Function?this.options.allowDrop(t,e,n):void 0===this.options.allowDrop||this.options.allowDrop},t.prototype.allowDrag=function(t){return this.options.allowDrag instanceof Function?this.options.allowDrag(t):this.options.allowDrag},t.prototype.nodeClass=function(t){return this.options.nodeClass?this.options.nodeClass(t):""},t.prototype.nodeHeight=function(t){if(t.data.virtual)return 0;var e=this.options.nodeHeight||22;return"function"==typeof e&&(e=e(t)),e+(0===t.index?2:1)*this.dropSlotHeight},Object.defineProperty(t.prototype,"dropSlotHeight",{get:function(){return f()(this.options.dropSlotHeight)?this.options.dropSlotHeight:2},enumerable:!0,configurable:!0}),t}()},"mh/w":function(t,e,n){var a=n("2oRo"),r=n("xluM"),i=n("We1y"),s=n("glrk"),u=n("DVFp"),o=n("NaFW"),l=a.TypeError;t.exports=function(t,e){var n=arguments.length<2?o(t):e;if(i(n))return s(r(n,t));throw l(u(t)+" is not iterable")}},moLw:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("8Y7J"),s=n("SVse");e.ClickOutsideDirective=function(){function t(t,e,n){this._el=t,this._ngZone=e,this.platformId=n,this.clickOutsideEnabled=!0,this.attachOutsideOnClick=!1,this.delayClickOutsideInit=!1,this.emitOnBlur=!1,this.exclude="",this.excludeBeforeClick=!1,this.clickOutsideEvents="",this.clickOutside=new i.EventEmitter,this._nodesExcluded=[],this._events=["click"],this._initOnClickBody=this._initOnClickBody.bind(this),this._onClickBody=this._onClickBody.bind(this),this._onWindowBlur=this._onWindowBlur.bind(this)}return t.prototype.ngOnInit=function(){s.isPlatformBrowser(this.platformId)&&this._init()},t.prototype.ngOnDestroy=function(){s.isPlatformBrowser(this.platformId)&&(this._removeClickOutsideListener(),this._removeAttachOutsideOnClickListener(),this._removeWindowBlurListener())},t.prototype.ngOnChanges=function(t){s.isPlatformBrowser(this.platformId)&&(t.attachOutsideOnClick||t.exclude||t.emitOnBlur)&&this._init()},t.prototype._init=function(){""!==this.clickOutsideEvents&&(this._events=this.clickOutsideEvents.split(",").map((function(t){return t.trim()}))),this._excludeCheck(),this.attachOutsideOnClick?this._initAttachOutsideOnClickListener():this._initOnClickBody(),this.emitOnBlur&&this._initWindowBlurListener()},t.prototype._initOnClickBody=function(){this.delayClickOutsideInit?setTimeout(this._initClickOutsideListener.bind(this)):this._initClickOutsideListener()},t.prototype._excludeCheck=function(){if(this.exclude)try{var t=Array.from(document.querySelectorAll(this.exclude));t&&(this._nodesExcluded=t)}catch(e){console.error("[ng-click-outside] Check your exclude selector syntax.",e)}},t.prototype._onClickBody=function(t){this.clickOutsideEnabled&&(this.excludeBeforeClick&&this._excludeCheck(),this._el.nativeElement.contains(t.target)||this._shouldExclude(t.target)||(this._emit(t),this.attachOutsideOnClick&&this._removeClickOutsideListener()))},t.prototype._onWindowBlur=function(t){var e=this;setTimeout((function(){document.hidden||e._emit(t)}))},t.prototype._emit=function(t){var e=this;this.clickOutsideEnabled&&this._ngZone.run((function(){return e.clickOutside.emit(t)}))},t.prototype._shouldExclude=function(t){for(var e=0,n=this._nodesExcluded;e<n.length;e++)if(n[e].contains(t))return!0;return!1},t.prototype._initClickOutsideListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return document.addEventListener(e,t._onClickBody)}))}))},t.prototype._removeClickOutsideListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return document.removeEventListener(e,t._onClickBody)}))}))},t.prototype._initAttachOutsideOnClickListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return t._el.nativeElement.addEventListener(e,t._initOnClickBody)}))}))},t.prototype._removeAttachOutsideOnClickListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return t._el.nativeElement.removeEventListener(e,t._initOnClickBody)}))}))},t.prototype._initWindowBlurListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){window.addEventListener("blur",t._onWindowBlur)}))},t.prototype._removeWindowBlurListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){window.removeEventListener("blur",t._onWindowBlur)}))},a([i.Input(),r("design:type",Boolean)],t.prototype,"clickOutsideEnabled",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"attachOutsideOnClick",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"delayClickOutsideInit",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"emitOnBlur",void 0),a([i.Input(),r("design:type",String)],t.prototype,"exclude",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"excludeBeforeClick",void 0),a([i.Input(),r("design:type",String)],t.prototype,"clickOutsideEvents",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"clickOutside",void 0),a([i.Injectable(),i.Directive({selector:"[clickOutside]"})],t)}()},mrSG:function(t,e,n){"use strict";n.r(e),n.d(e,"__extends",(function(){return r})),n.d(e,"__assign",(function(){return i})),n.d(e,"__rest",(function(){return s})),n.d(e,"__decorate",(function(){return u})),n.d(e,"__param",(function(){return o})),n.d(e,"__metadata",(function(){return l})),n.d(e,"__awaiter",(function(){return d})),n.d(e,"__generator",(function(){return c})),n.d(e,"__exportStar",(function(){return f})),n.d(e,"__values",(function(){return h})),n.d(e,"__read",(function(){return g})),n.d(e,"__spread",(function(){return p})),n.d(e,"__spreadArrays",(function(){return b})),n.d(e,"__await",(function(){return m})),n.d(e,"__asyncGenerator",(function(){return y})),n.d(e,"__asyncDelegator",(function(){return v})),n.d(e,"__asyncValues",(function(){return x})),n.d(e,"__makeTemplateObject",(function(){return _})),n.d(e,"__importStar",(function(){return T})),n.d(e,"__importDefault",(function(){return w})),n.d(e,"__classPrivateFieldGet",(function(){return O})),n.d(e,"__classPrivateFieldSet",(function(){return S}));var a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function r(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function s(t,e){var n={};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&e.indexOf(a)<0&&(n[a]=t[a]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(t);r<a.length;r++)e.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(t,a[r])&&(n[a[r]]=t[a[r]])}return n}function u(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}function o(t,e){return function(n,a){e(n,a,t)}}function l(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function d(t,e,n,a){return new(n||(n=Promise))((function(r,i){function s(t){try{o(a.next(t))}catch(e){i(e)}}function u(t){try{o(a.throw(t))}catch(e){i(e)}}function o(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,u)}o((a=a.apply(t,e||[])).next())}))}function c(t,e){var n,a,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,a&&(r=2&i[0]?a.return:i[0]?a.throw||((r=a.return)&&r.call(a),0):a.next)&&!(r=r.call(a,i[1])).done)return r;switch(a=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,a=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){s.label=i[1];break}if(6===i[0]&&s.label<r[1]){s.label=r[1],r=i;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(i);break}r[2]&&s.ops.pop(),s.trys.pop();continue}i=e.call(t,s)}catch(u){i=[6,u],a=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}function f(t,e){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}function h(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],a=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(u){r={error:u}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function p(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(g(arguments[e]));return t}function b(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var a=Array(t),r=0;for(e=0;e<n;e++)for(var i=arguments[e],s=0,u=i.length;s<u;s++,r++)a[r]=i[s];return a}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function y(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a,r=n.apply(t,e||[]),i=[];return a={},s("next"),s("throw"),s("return"),a[Symbol.asyncIterator]=function(){return this},a;function s(t){r[t]&&(a[t]=function(e){return new Promise((function(n,a){i.push([t,e,n,a])>1||u(t,e)}))})}function u(t,e){try{!function(t){t.value instanceof m?Promise.resolve(t.value.v).then(o,l):d(i[0][2],t)}(r[t](e))}catch(n){d(i[0][3],n)}}function o(t){u("next",t)}function l(t){u("throw",t)}function d(t,e){t(e),i.shift(),i.length&&u(i[0][0],i[0][1])}}function v(t){var e,n;return e={},a("next"),a("throw",(function(t){throw t})),a("return"),e[Symbol.iterator]=function(){return this},e;function a(a,r){e[a]=t[a]?function(e){return(n=!n)?{value:m(t[a](e)),done:"return"===a}:r?r(e):e}:r}}function x(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=h(t),e={},a("next"),a("throw"),a("return"),e[Symbol.asyncIterator]=function(){return this},e);function a(n){e[n]=t[n]&&function(e){return new Promise((function(a,r){!function(t,e,n,a){Promise.resolve(a).then((function(e){t({value:e,done:n})}),e)}(a,r,(e=t[n](e)).done,e.value)}))}}}function _(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function T(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function w(t){return t&&t.__esModule?t:{default:t}}function O(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function S(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}},mtw6:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t[t.error=0]="error",t[t.info=1]="info",t[t.success=2]="success",t}({})},"n/D3":function(t,e,n){"use strict";n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return c}));var a=n("cp0P"),r=(n("SgmB"),n("ZDA6"),n("+fVR")),i=n("0+/T"),s=n("Rf2I"),u=(n("sne2"),n("x38r")),o=n("oxzT"),l=n("mtw6"),d=n("vCyI");n("nSDx"),n("aexS"),n("9nlD");const c=new(n("EgGo").a)("user-management/roles");class f extends r.a{constructor(t,e,n,a,r,i,s,u,l){super(),this.roleService=t,this.scopeService=e,this.emptyPipe=n,this.authStorageService=a,this.modalService=r,this.notificationService=i,this.i18n=s,this.urlBuilder=u,this.actionLabels=l,this.selection=new d.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:o.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"create",icon:o.a.clone,name:this.actionLabels.CLONE,disable:()=>!this.selection.hasSingleSelection,click:()=>this.cloneRole()},{permission:"update",icon:o.a.edit,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().name),name:this.actionLabels.EDIT},{permission:"delete",icon:o.a.destroy,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,click:()=>this.deleteRoleModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:3},{name:this.i18n("Description"),prop:"description",flexGrow:5,pipe:this.emptyPipe},{name:this.i18n("System Role"),prop:"system",cellClass:"text-center",flexGrow:1,cellTransformation:u.a.checkIcon}]}getRoles(){Object(a.a)([this.roleService.list(),this.scopeService.list()]).subscribe(t=>{this.roles=t[0],this.scopes=t[1]})}updateSelection(t){this.selection=t}deleteRole(t){this.roleService.delete(t).subscribe(()=>{this.getRoles(),this.modalRef.hide(),this.notificationService.show(l.a.success,this.i18n("Deleted role '{{role_name}}'",{role_name:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}deleteRoleModal(){const t=this.selection.first().name;this.modalRef=this.modalService.show(i.a,{initialState:{itemDescription:"Role",itemNames:[t],submitAction:()=>this.deleteRole(t)}})}cloneRole(){const t=this.selection.first().name;this.modalRef=this.modalService.show(s.a,{initialState:{fields:[{type:"text",name:"newName",value:t+"_clone",label:this.i18n("New name"),required:!0}],titleText:this.i18n("Clone Role"),submitButtonText:this.i18n("Clone Role"),onSubmit:e=>{this.roleService.clone(t,e.newName).subscribe(()=>{this.getRoles(),this.notificationService.show(l.a.success,this.i18n("Cloned role '{{dst_name}}' from '{{src_name}}'",{src_name:t,dst_name:e.newName}))})}}})}}},"n3/R":function(t,e,n){var a=n("0Dky"),r=n("2oRo").RegExp,i=a((function(){var t=r("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),s=i||a((function(){return!r("a","y").sticky})),u=i||a((function(){var t=r("^r","gy");return t.lastIndex=2,null!=t.exec("str")}));t.exports={BROKEN_CARET:u,MISSED_STICKY:s,UNSUPPORTED_Y:i}},n6bG:function(t,e,n){"use strict";function a(t){return"function"==typeof t}n.d(e,"a",(function(){return a}))},n9Vz:function(t,e,n){var a=n("Yj/I")(n("xdB7"));t.exports=a},nC65:function(t,e,n){var a=n("kXVT"),r=n("FGWQ");t.exports=function(t){for(var e=r(t),n=e.length;n--;){var i=e[n],s=t[i];e[n]=[i,s,a(s)]}return e}},nSDx:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t){return a.isUndefined(t)||a.isNull(t)?"-":t}}},"nTk+":function(t,e,n){var a=n("vJUC"),r=n("0GLT");t.exports=function(t,e,n){var i=e(t);return r(t)?i:a(i,n(t))}},nYR2:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("7o/Q"),r=n("quSY");function i(t){return e=>e.lift(new s(t))}class s{constructor(t){this.callback=t}call(t,e){return e.subscribe(new u(t,this.callback))}}class u extends a.a{constructor(t,e){super(t),this.add(new r.a(e))}}},ngJS:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=t=>e=>{for(let n=0,a=t.length;n<a&&!e.closed;n++)e.next(t[n]);e.complete()}},ntOU:function(t,e,n){"use strict";var a=n("rpNk").IteratorPrototype,r=n("fHMY"),i=n("XGwC"),s=n("1E5z"),u=n("P4y1"),o=function(){return this};t.exports=function(t,e,n,l){var d=e+" Iterator";return t.prototype=r(a,{next:i(+!l,n)}),s(t,d,!1,!0),u[d]=o,t}},ntis:function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},nyYc:function(t,e,n){!function(t){"use strict";t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},o1bE:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(n("wd/R"))},o3PY:function(t,e){t.exports=function(){this.__data__=[],this.size=0}},"o4+5":function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1e3,["","k","M","G","T","P","E","Z","Y"])}}},o8EM:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("PhyI"),r=n("8Y7J"),i=n("GiVz");let s=(()=>{class t{constructor(t){this.i18n=t,this.sections=[{heading:this.i18n("Quality of Service"),class:"quality-of-service",options:[{name:"rbd_qos_bps_limit",displayName:this.i18n("BPS Limit"),description:this.i18n("The desired limit of IO bytes per second."),type:a.b.bps},{name:"rbd_qos_iops_limit",displayName:this.i18n("IOPS Limit"),description:this.i18n("The desired limit of IO operations per second."),type:a.b.iops},{name:"rbd_qos_read_bps_limit",displayName:this.i18n("Read BPS Limit"),description:this.i18n("The desired limit of read bytes per second."),type:a.b.bps},{name:"rbd_qos_read_iops_limit",displayName:this.i18n("Read IOPS Limit"),description:this.i18n("The desired limit of read operations per second."),type:a.b.iops},{name:"rbd_qos_write_bps_limit",displayName:this.i18n("Write BPS Limit"),description:this.i18n("The desired limit of write bytes per second."),type:a.b.bps},{name:"rbd_qos_write_iops_limit",displayName:this.i18n("Write IOPS Limit"),description:this.i18n("The desired limit of write operations per second."),type:a.b.iops},{name:"rbd_qos_bps_burst",displayName:this.i18n("BPS Burst"),description:this.i18n("The desired burst limit of IO bytes."),type:a.b.bps},{name:"rbd_qos_iops_burst",displayName:this.i18n("IOPS Burst"),description:this.i18n("The desired burst limit of IO operations."),type:a.b.iops},{name:"rbd_qos_read_bps_burst",displayName:this.i18n("Read BPS Burst"),description:this.i18n("The desired burst limit of read bytes."),type:a.b.bps},{name:"rbd_qos_read_iops_burst",displayName:this.i18n("Read IOPS Burst"),description:this.i18n("The desired burst limit of read operations."),type:a.b.iops},{name:"rbd_qos_write_bps_burst",displayName:this.i18n("Write BPS Burst"),description:this.i18n("The desired burst limit of write bytes."),type:a.b.bps},{name:"rbd_qos_write_iops_burst",displayName:this.i18n("Write IOPS Burst"),description:this.i18n("The desired burst limit of write operations."),type:a.b.iops}]}]}static getOptionsFromSections(t){return t.map(t=>t.options).reduce((t,e)=>t.concat(e))}filterConfigOptionsByName(e){return t.getOptionsFromSections(this.sections).filter(t=>t.name===e)}getOptionValueByName(t,e,n=""){const a=this.filterConfigOptionsByName(t);return 1===a.length?a.pop()[e]:n}getWritableSections(){return this.sections.map(t=>(t.options=t.options.filter(t=>!t.readOnly),t))}getOptionFields(){return t.getOptionsFromSections(this.sections)}getWritableOptionFields(){return t.getOptionsFromSections(this.getWritableSections())}getOptionByName(t){return this.filterConfigOptionsByName(t).pop()}getDisplayName(t){return this.getOptionValueByName(t,"displayName")}getDescription(t){return this.getOptionValueByName(t,"description")}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.a))},token:t,providedIn:"root"}),t})()},oEtG:function(t,e,n){var a=n("wE6v"),r=n("2bX/");t.exports=function(t){var e=a(t,"string");return r(e)?e:e+""}},oMSZ:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.pwdExpirationSpan=0,this.pwdExpirationSpan=t.user_pwd_expiration_span,this.pwdExpirationWarning1=t.user_pwd_expiration_warning_1,this.pwdExpirationWarning2=t.user_pwd_expiration_warning_2}}},oRml:function(t,e,n){var a=n("LaC8"),r=n("KNDS"),i=n("x3F9"),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&r(t.length)&&!!s[a(t)]}},oxzT:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t.add="fa fa-plus",t.addCircle="fa fa-plus-circle",t.minusCircle="fa fa-minus-circle",t.edit="fa fa-pencil",t.destroy="fa fa-times",t.destroyCircle="fa fa-times-circle",t.exchange="fa fa-exchange",t.copy="fa fa-copy",t.clipboard="fa fa-clipboard",t.flatten="fa fa-chain-broken",t.trash="fa fa-trash-o",t.lock="fa fa-lock",t.unlock="fa fa-unlock",t.clone="fa fa-clone",t.undo="fa fa-undo",t.search="fa fa-search",t.start="fa fa-play",t.stop="fa fa-stop",t.analyse="fa fa-stethoscope",t.deepCheck="fa fa-cog",t.reweight="fa fa-balance-scale",t.left="fa fa-arrow-left",t.right="fa fa-arrow-right",t.down="fa fa-arrow-down",t.erase="fa fa-eraser",t.user="fa fa-user",t.users="fa fa-users",t.share="fa fa-share-alt",t.key="fa fa-key-modern",t.warning="fa fa-exclamation-triangle",t.info="fa fa-info",t.infoCircle="fa fa-info-circle",t.questionCircle="fa fa-question-circle-o",t.check="fa fa-check",t.show="fa fa-eye",t.paragraph="fa fa-paragraph",t.terminal="fa fa-terminal",t.magic="fa fa-magic",t.hourglass="fa fa-hourglass-o",t.filledHourglass="fa fa-hourglass",t.table="fa fa-table",t.spinner="fa fa-spinner",t.refresh="fa fa-refresh",t.bullseye="fa fa-bullseye",t.disk="fa fa-hdd-o",t.server="fa fa-server",t.filter="fa fa-filter",t.lineChart="fa fa-line-chart",t.signOut="fa fa-sign-out",t.health="fa fa-heartbeat",t.circle="fa fa-circle",t.bell="fa fa-bell",t.tag="fa fa-tag",t.leftArrow="fa fa-angle-left",t.rightArrow="fa fa-angle-right",t.leftArrowDouble="fa fa-angle-double-left",t.rightArrowDouble="fa fa-angle-double-right",t.flag="fa fa-flag",t.clearFilters="fa fa-window-close",t.download="fa fa-download",t.upload="fa fa-upload",t.large="fa fa-lg",t.large2x="fa fa-2x",t.large3x="fa fa-3x",t.stack="fa fa-stack",t.stack1x="fa fa-stack-1x",t.stack2x="fa fa-stack-2x",t.pulse="fa fa-pulse",t.spin="fa fa-spin",t.inverse="fa fa-inverse",t}({})},"p/rL":function(t,e,n){!function(t){"use strict";t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("wd/R"))},p33Q:function(t,e,n){var a=n("5itS"),r=n("qeWI"),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!a(t))return r(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},p4Cf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");class r{constructor(){this.icons=a.a}}},pKUh:function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return l}));var a=n("8Y7J"),r=n("2ZVE"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:["[_nghost-%COMP%]   .nav-tabs[_ngcontent-%COMP%]   .nav-item.disabled[_ngcontent-%COMP%]   a.disabled[_ngcontent-%COMP%]{cursor:default}"],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","bs-remove-tab"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(n.preventDefault(),a=!1!==r.removeTab(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),a["ɵted"](-1,null,[" ❌"]))],null,null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,"li",[],[[2,"active",null],[2,"disabled",null]],[[null,"keydown"]],(function(t,e,n){var a=!0;return"keydown"===e&&(a=!1!==t.component.keyNavActions(n,t.context.index)&&a),a}),null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,2),(t()(),a["ɵeld"](4,0,null,null,5,"a",[["class","nav-link"],["href","javascript:void(0);"],["role","tab"]],[[1,"aria-controls",0],[1,"aria-selected",0],[1,"id",0],[2,"active",null],[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=0!=(t.context.$implicit.active=!0)&&a),a}),null,null)),(t()(),a["ɵeld"](5,16777216,null,null,2,"span",[],null,null,null,null,null)),a["ɵdid"](6,16384,null,0,r.a,[a.ViewContainerRef],{ngTransclude:[0,"ngTransclude"]},null),(t()(),a["ɵted"](7,null,["",""])),(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](9,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=t(e,3,0,"nav-item",e.context.$implicit.customClass||"");t(e,2,0,n),t(e,6,0,e.context.$implicit.headingRef),t(e,9,0,e.context.$implicit.removable)}),(function(t,e){t(e,0,0,e.context.$implicit.active,e.context.$implicit.disabled),t(e,4,0,e.context.$implicit.id?e.context.$implicit.id:"",!!e.context.$implicit.active,e.context.$implicit.id?e.context.$implicit.id+"-link":"",e.context.$implicit.active,e.context.$implicit.disabled),t(e,7,0,e.context.$implicit.heading)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"ul",[["class","nav"],["role","tablist"]],[[1,"aria-label",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a}),null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](4,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](5,0,null,null,1,"div",[["class","tab-content"]],null,null,null,null,null)),a["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"nav",n.classMap),t(e,4,0,n.tabs)}),(function(t,e){t(e,0,0,e.component.ariaLabel)}))}},pL04:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},pLZG:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){return function(n){return n.lift(new i(t,e))}}class i{constructor(t,e){this.predicate=t,this.thisArg=e}call(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg))}}class s extends a.a{constructor(t,e,n){super(t),this.predicate=e,this.thisArg=n,this.count=0}_next(t){let e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}e&&this.destination.next(t)}}},pMcL:function(t,e,n){var a=n("Wa4q");t.exports=a.Symbol},pMnS:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("iInd"),i=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),a["ɵdid"](1,212992,null,0,r.r,[r.b,a.ViewContainerRef,a.ComponentFactoryResolver,[8,null],a.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"ng-component",[],null,null,null,s,i)),a["ɵdid"](1,49152,null,0,r.F,[],null,null)],null,null)}var o=a["ɵccf"]("ng-component",r.F,u,{},{},[])},pYKc:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("WiuZ"),s=n("wnGv"),u=n("GiVz");n("ppaS"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return d}));var o=a["ɵcrt"]({encapsulation:0,styles:[[".badge-remove[_ngcontent-%COMP%]{color:#fff}i.fa-pencil[_ngcontent-%COMP%]{font-size:1.1rem}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"span",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,7,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"span",[["class","mr-2"]],null,null,null,null,null)),(t()(),a["ɵted"](3,null,["",""])),(t()(),a["ɵeld"](4,0,null,null,4,"a",[["class","badge-remove"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t.parent,2).removeItem(t.context.$implicit)&&r),r}),null,null)),(t()(),a["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](7,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](8,1)],(function(t,e){var n=t(e,8,0,e.component.icons.destroy);t(e,7,0,n)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function d(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{cdSelect:0}),(t()(),a["ɵeld"](1,0,null,null,5,"cd-select",[["elemClass","mr-2 select-menu-edit"]],null,[[null,"selection"]],(function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.selection.emit(n)&&a),a}),i.b,i.a)),a["ɵdid"](2,638976,[[1,4],["cdSelect",4]],0,s.a,[u.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"],selectionLimit:[4,"selectionLimit"],customBadges:[5,"customBadges"],customBadgeValidators:[6,"customBadgeValidators"]},{selection:"selection"}),(t()(),a["ɵeld"](3,0,null,0,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,1),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](8,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"mr-2 select-menu-edit",n.data,n.options,n.messages,n.selectionLimit,n.customBadges,n.customBadgeValidators);var a=t(e,6,0,n.icons.edit);t(e,5,0,a),t(e,8,0,n.data)}),null)}},pYe4:function(t,e,n){var a=n("77kF"),r=n("MBcj");t.exports=function(t,e){return t&&a(e,r(e),t)}},pcHL:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"tree-node-children",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div\n        [class.tree-children]="true"\n        [class.tree-children-no-padding]="node.options.levelPadding"\n        *treeAnimateOpen="\n          node.isExpanded;\n          speed: node.options.animateSpeed;\n          acceleration: node.options.animateAcceleration;\n          enabled: node.options.animateExpand\n        "\n      >\n        <tree-node-collection\n          *ngIf="node.children"\n          [nodes]="node.children"\n          [templates]="templates"\n          [treeModel]="node.treeModel"\n        >\n        </tree-node-collection>\n        <tree-loading-component\n          [style.padding-left]="node.getNodePadding()"\n          class="tree-node-loading"\n          *ngIf="!node.children"\n          [template]="templates.loadingTemplate"\n          [node]="node"\n        ></tree-loading-component>\n      </div>\n    </ng-container>\n  '})],t)}()},pcUq:function(t,e,n){var a=n("R6RA"),r=n("+FhV"),i=n("5itS");t.exports=function(t){return"function"!=typeof t.constructor||i(t)?{}:a(r(t))}},pkCn:function(t,e,n){"use strict";var a=n("0Dky");t.exports=function(t,e){var n=[][t];return!!n&&a((function(){n.call(null,e||function(){throw 1},1)}))}},pmjB:function(t,e,n){var a=n("RBUI"),r=n("PHub"),i=n("0GLT"),s=n("y/5f"),u=n("Uies"),o=n("uPDw"),l=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=i(t),d=!n&&r(t),c=!n&&!d&&s(t),f=!n&&!d&&!c&&o(t),h=n||d||c||f,g=h?a(t.length,String):[],p=g.length;for(var b in t)!e&&!l.call(t,b)||h&&("length"==b||c&&("offset"==b||"parent"==b)||f&&("buffer"==b||"byteLength"==b||"byteOffset"==b)||u(b,p))||g.push(b);return g}},ppaS:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("oxzT"),i=n("DNAf");n("wnGv");class s{constructor(t){this.i18n=t,this.data=[],this.options=[],this.messages=new i.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.icons=r.a}}},pxLl:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("mrSG"),r=n("IheW"),i=n("LRne"),s=n("5+tZ"),u=n("xTzq"),o=n("8Y7J"),l=n("pL04");let d=(()=>{let t=class{constructor(t){this.http=t,this.url="api/perf_counters"}list(){return this.http.get(this.url)}get(t,e){return this.http.get(`${this.url}/${t}/${e}`).pipe(Object(s.a)(t=>Object(i.a)(t.counters)))}};return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](r.c))},token:t,providedIn:l.a}),t=a.__decorate([u.a,a.__metadata("design:paramtypes",[r.c])],t),t})()},pxpQ:function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return u}));var a=n("7o/Q"),r=n("WMd4");function i(t,e=0){return function(n){return n.lift(new s(t,e))}}class s{constructor(t,e=0){this.scheduler=t,this.delay=e}call(t,e){return e.subscribe(new u(t,this.scheduler,this.delay))}}class u extends a.a{constructor(t,e,n=0){super(t),this.scheduler=e,this.delay=n}static dispatch(t){const{notification:e,destination:n}=t;e.observe(n),this.unsubscribe()}scheduleMessage(t){this.destination.add(this.scheduler.schedule(u.dispatch,this.delay,new o(t,this.destination)))}_next(t){this.scheduleMessage(r.a.createNext(t))}_error(t){this.scheduleMessage(r.a.createError(t)),this.unsubscribe()}_complete(){this.scheduleMessage(r.a.createComplete()),this.unsubscribe()}}class o{constructor(t,e){this.notification=t,this.destination=e}}},qG07:function(t,e,n){var a=n("bWnS"),r=n("ntis"),i=n("U02d"),s=n("XFPk"),u=n("J3wx");function o(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}o.prototype.clear=a,o.prototype.delete=r,o.prototype.get=i,o.prototype.has=s,o.prototype.set=u,t.exports=o},qN6l:function(t,e,n){var a=n("KFwg")(Object,"create");t.exports=a},qeWI:function(t,e,n){var a=n("IMTC")(Object.keys,Object);t.exports=a},qgXg:function(t,e,n){"use strict";var a=n("3N8a");class r extends a.a{constructor(t,e){super(t,e),this.scheduler=t,this.work=e}schedule(t,e=0){return e>0?super.schedule(t,e):(this.delay=e,this.state=t,this.scheduler.flush(this),this)}execute(t,e){return e>0||this.closed?super.execute(t,e):this._execute(t,e)}requestAsyncId(t,e,n=0){return null!==n&&n>0||null===n&&this.delay>0?super.requestAsyncId(t,e,n):t.flush(this)}}var i=n("IjjT");class s extends i.a{}n.d(e,"a",(function(){return u}));const u=new s(r)},qjN6:function(t,e,n){var a=n("KFwg")(n("Wa4q"),"Set");t.exports=a},qjUL:function(t,e,n){var a=n("M+Mf"),r=n("ZY2H")((function(t,e,n,r){a(t,e,n,r)}));t.exports=r},quSY:function(t,e,n){"use strict";var a=n("DH7j"),r=n("XoHu"),i=n("n6bG");const s=(()=>{function t(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((t,e)=>`${e+1}) ${t.toString()}`).join("\n  ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return t.prototype=Object.create(Error.prototype),t})();n.d(e,"a",(function(){return u}));let u=(()=>{class t{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}unsubscribe(){let e;if(this.closed)return;let{_parentOrParents:n,_unsubscribe:u,_subscriptions:l}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof t)n.remove(this);else if(null!==n)for(let t=0;t<n.length;++t)n[t].remove(this);if(Object(i.a)(u))try{u.call(this)}catch(d){e=d instanceof s?o(d.errors):[d]}if(Object(a.a)(l)){let t=-1,n=l.length;for(;++t<n;){const n=l[t];if(Object(r.a)(n))try{n.unsubscribe()}catch(d){e=e||[],d instanceof s?e=e.concat(o(d.errors)):e.push(d)}}}if(e)throw new s(e)}add(e){let n=e;if(!e)return t.EMPTY;switch(typeof e){case"function":n=new t(e);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof t)){const e=n;n=new t,n._subscriptions=[e]}break;default:throw new Error("unrecognized teardown "+e+" added to Subscription.")}let{_parentOrParents:a}=n;if(null===a)n._parentOrParents=this;else if(a instanceof t){if(a===this)return n;n._parentOrParents=[a,this]}else{if(-1!==a.indexOf(this))return n;a.push(this)}const r=this._subscriptions;return null===r?this._subscriptions=[n]:r.push(n),n}remove(t){const e=this._subscriptions;if(e){const n=e.indexOf(t);-1!==n&&e.splice(n,1)}}}var e;return t.EMPTY=((e=new t).closed=!0,e),t})();function o(t){return t.reduce((t,e)=>t.concat(e instanceof s?e.errors:e),[])}},"qwH+":function(t,e,n){var a=n("dX5L"),r=n("Gf4A"),i=n("BJMh"),s=n("qjN6"),u=n("0BcO"),o=n("LaC8"),l=n("+xYL"),d=l(a),c=l(r),f=l(i),h=l(s),g=l(u),p=o;(a&&"[object DataView]"!=p(new a(new ArrayBuffer(1)))||r&&"[object Map]"!=p(new r)||i&&"[object Promise]"!=p(i.resolve())||s&&"[object Set]"!=p(new s)||u&&"[object WeakMap]"!=p(new u))&&(p=function(t){var e=o(t),n="[object Object]"==e?t.constructor:void 0,a=n?l(n):"";if(a)switch(a){case d:return"[object DataView]";case c:return"[object Map]";case f:return"[object Promise]";case h:return"[object Set]";case g:return"[object WeakMap]"}return e}),t.exports=p},qzZ1:function(t,e){var n="object"==typeof global&&global&&global.Object===Object&&global;t.exports=n},"r2+u":function(t,e,n){var a=n("qwH+"),r=n("x3F9");t.exports=function(t){return r(t)&&"[object Map]"==a(t)}},r467:function(t,e,n){var a=n("Q7RW"),r=n("JTPl"),i=n("hmSm"),s=n("+xYL"),u=/^\[object .+?Constructor\]$/,o=RegExp("^"+Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||r(t))&&(a(t)?o:u).test(s(t))}},rB9j:function(t,e,n){"use strict";var a=n("I+eb"),r=n("kmMV");a({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},rKzb:function(t,e,n){"use strict";var a=n("4zBA"),r=n("4syw"),i=n("8YOa").getWeakData,s=n("glrk"),u=n("hh1v"),o=n("GarU"),l=n("ImZN"),d=n("tycR"),c=n("Gi26"),f=n("afO8"),h=f.set,g=f.getterFor,p=d.find,b=d.findIndex,m=a([].splice),y=0,v=function(t){return t.frozen||(t.frozen=new x)},x=function(){this.entries=[]},_=function(t,e){return p(t.entries,(function(t){return t[0]===e}))};x.prototype={get:function(t){var e=_(this,t);if(e)return e[1]},has:function(t){return!!_(this,t)},set:function(t,e){var n=_(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=b(this.entries,(function(e){return e[0]===t}));return~e&&m(this.entries,e,1),!!~e}},t.exports={getConstructor:function(t,e,n,a){var d=t((function(t,r){o(t,f),h(t,{type:e,id:y++,frozen:void 0}),null!=r&&l(r,t[a],{that:t,AS_ENTRIES:n})})),f=d.prototype,p=g(e),b=function(t,e,n){var a=p(t),r=i(s(e),!0);return!0===r?v(a).set(e,n):r[a.id]=n,t};return r(f,{delete:function(t){var e=p(this);if(!u(t))return!1;var n=i(t);return!0===n?v(e).delete(t):n&&c(n,e.id)&&delete n[e.id]},has:function(t){var e=p(this);if(!u(t))return!1;var n=i(t);return!0===n?v(e).has(t):n&&c(n,e.id)}}),r(f,n?{get:function(t){var e=p(this);if(u(t)){var n=i(t);return!0===n?v(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return b(this,t,e)}}:{add:function(t){return b(this,t,!0)}}),d}}},rW0t:function(t,e,n){"use strict";var a=n("glrk");t.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},rZud:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",a.TemplateRef)],t.prototype,"template",void 0),i([Object(a.Component)({selector:"tree-node-content",encapsulation:a.ViewEncapsulation.None,template:'\n  <span *ngIf="!template">{{ node.displayField }}</span>\n  <ng-container\n    [ngTemplateOutlet]="template"\n    [ngTemplateOutletContext]="{ $implicit: node, node: node, index: index }">\n  </ng-container>'})],t)}()},raLr:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"хвилина":"хвилину":"h"===n?e?"година":"годину":t+" "+(a=+t,r={ss:e?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:e?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:e?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}function n(t){return function(){return t+"о"+(11===this.hours()?"б":"")+"] LT"}}t.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(t,e){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===t?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):t?n[/(\[[ВвУу]\]) ?dddd/.test(e)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:e,m:e,mm:e,h:"годину",hh:e,d:"день",dd:e,M:"місяць",MM:e,y:"рік",yy:e},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(t){return/^(дня|вечора)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночі":t<12?"ранку":t<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-й";case"D":return t+"-го";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},rk81:function(t,e,n){var a=n("aT2Y"),r=n("vDHD"),i=n("EWmY"),s=n("cjaf"),u=n("2oum"),o=n("gHid");function l(t){var e=this.__data__=new a(t);this.size=e.size}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=s,l.prototype.has=u,l.prototype.set=o,t.exports=l},rpNk:function(t,e,n){"use strict";var a,r,i,s=n("0Dky"),u=n("Fib7"),o=n("fHMY"),l=n("4WOD"),d=n("busE"),c=n("tiKp"),f=n("xDBR"),h=c("iterator"),g=!1;[].keys&&("next"in(i=[].keys())?(r=l(l(i)))!==Object.prototype&&(a=r):g=!0),null==a||s((function(){var t={};return a[h].call(t)!==t}))?a={}:f&&(a=o(a)),u(a[h])||d(a,h,(function(){return this})),t.exports={IteratorPrototype:a,BUGGY_SAFARI_ITERATORS:g}},"s+uk":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"s4/e":function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}},s7LF:function(t,e,n){"use strict";n.d(e,"C",(function(){return Tt})),n.d(e,"G",(function(){return gt})),n.d(e,"D",(function(){return R})),n.d(e,"E",(function(){return pt})),n.d(e,"F",(function(){return F})),n.d(e,"c",(function(){return l})),n.d(e,"d",(function(){return h})),n.d(e,"p",(function(){return o})),n.d(e,"b",(function(){return d})),n.d(e,"e",(function(){return c})),n.d(e,"q",(function(){return p})),n.d(e,"r",(function(){return m})),n.d(e,"s",(function(){return y})),n.d(e,"t",(function(){return ut})),n.d(e,"u",(function(){return ht})),n.d(e,"w",(function(){return C})),n.d(e,"x",(function(){return A})),n.d(e,"j",(function(){return xt})),n.d(e,"l",(function(){return bt})),n.d(e,"g",(function(){return yt})),n.d(e,"m",(function(){return mt})),n.d(e,"v",(function(){return q})),n.d(e,"A",(function(){return M})),n.d(e,"z",(function(){return _t})),n.d(e,"h",(function(){return wt})),n.d(e,"a",(function(){return nt})),n.d(e,"f",(function(){return it})),n.d(e,"i",(function(){return at})),n.d(e,"k",(function(){return rt})),n.d(e,"o",(function(){return x})),n.d(e,"B",(function(){return T})),n.d(e,"n",(function(){return Ot})),n.d(e,"y",(function(){return St}));var a=n("8Y7J"),r=n("cUpR"),i=n("cp0P"),s=n("Cfvw"),u=n("lJxs");const o=new a.InjectionToken("NgValueAccessor");class l{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"checked",t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}const d=new a.InjectionToken("CompositionEventMode");class c{constructor(t,e,n){this._renderer=t,this._elementRef=e,this._compositionMode=n,this.onChange=t=>{},this.onTouched=()=>{},this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const t=Object(r.q)()?Object(r.q)().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}class f{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}reset(t){this.control&&this.control.reset(t)}hasError(t,e){return!!this.control&&this.control.hasError(t,e)}getError(t,e){return this.control?this.control.getError(t,e):null}}class h extends f{get formDirective(){return null}get path(){return null}}function g(){throw new Error("unimplemented")}class p extends f{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null,this._rawValidators=[],this._rawAsyncValidators=[]}get validator(){return g()}get asyncValidator(){return g()}}class b{constructor(t){this._cd=t}get ngClassUntouched(){return!!this._cd.control&&this._cd.control.untouched}get ngClassTouched(){return!!this._cd.control&&this._cd.control.touched}get ngClassPristine(){return!!this._cd.control&&this._cd.control.pristine}get ngClassDirty(){return!!this._cd.control&&this._cd.control.dirty}get ngClassValid(){return!!this._cd.control&&this._cd.control.valid}get ngClassInvalid(){return!!this._cd.control&&this._cd.control.invalid}get ngClassPending(){return!!this._cd.control&&this._cd.control.pending}}class m extends b{constructor(t){super(t)}}class y extends b{constructor(t){super(t)}}function v(t){return null==t||0===t.length}const x=new a.InjectionToken("NgValidators"),_=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class T{static min(t){return e=>{if(v(e.value)||v(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n<t?{min:{min:t,actual:e.value}}:null}}static max(t){return e=>{if(v(e.value)||v(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n>t?{max:{max:t,actual:e.value}}:null}}static required(t){return v(t.value)?{required:!0}:null}static requiredTrue(t){return!0===t.value?null:{required:!0}}static email(t){return v(t.value)||_.test(t.value)?null:{email:!0}}static minLength(t){return e=>{if(v(e.value))return null;const n=e.value?e.value.length:0;return n<t?{minlength:{requiredLength:t,actualLength:n}}:null}}static maxLength(t){return e=>{const n=e.value?e.value.length:0;return n>t?{maxlength:{requiredLength:t,actualLength:n}}:null}}static pattern(t){if(!t)return T.nullValidator;let e,n;return"string"==typeof t?(n="","^"!==t.charAt(0)&&(n+="^"),n+=t,"$"!==t.charAt(t.length-1)&&(n+="$"),e=new RegExp(n)):(n=t.toString(),e=t),t=>{if(v(t.value))return null;const a=t.value;return e.test(a)?null:{pattern:{requiredPattern:n,actualValue:a}}}}static nullValidator(t){return null}static compose(t){if(!t)return null;const e=t.filter(w);return 0==e.length?null:function(t){return S(function(t,e){return e.map(e=>e(t))}(t,e))}}static composeAsync(t){if(!t)return null;const e=t.filter(w);return 0==e.length?null:function(t){const n=function(t,e){return e.map(e=>e(t))}(t,e).map(O);return Object(i.a)(n).pipe(Object(u.a)(S))}}}function w(t){return null!=t}function O(t){const e=Object(a["ɵisPromise"])(t)?Object(s.a)(t):t;if(!Object(a["ɵisObservable"])(e))throw new Error("Expected validator to return Promise or Observable.");return e}function S(t){const e=t.reduce((t,e)=>null!=e?Object.assign({},t,e):t,{});return 0===Object.keys(e).length?null:e}function I(t){return t.validate?e=>t.validate(e):t}function N(t){return t.validate?e=>t.validate(e):t}class C{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}class R{constructor(){this._accessors=[]}add(t,e){this._accessors.push([t,e])}remove(t){for(let e=this._accessors.length-1;e>=0;--e)if(this._accessors[e][1]===t)return void this._accessors.splice(e,1)}select(t){this._accessors.forEach(e=>{this._isSameGroup(e,t)&&e[1]!==t&&e[1].fireUncheck(t.value)})}_isSameGroup(t,e){return!!t[0].control&&t[0]._parent===e._control._parent&&t[1].name===e.name}}class A{constructor(t,e,n,a){this._renderer=t,this._elementRef=e,this._registry=n,this._injector=a,this.onChange=()=>{},this.onTouched=()=>{}}ngOnInit(){this._control=this._injector.get(p),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(t){this._state=t===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)}registerOnChange(t){this._fn=t,this.onChange=()=>{t(this.value),this._registry.select(this)}}fireUncheck(t){this.writeValue(t)}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_checkName(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)}_throwNameError(){throw new Error('\n      If you define both a name and a formControlName attribute on your radio button, their values\n      must match. Ex: <input type="radio" formControlName="food" name="food">\n    ')}}const k='\n    <div [formGroup]="myGroup">\n      <input formControlName="firstName">\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       firstName: new FormControl()\n    });',E='\n    <div [formGroup]="myGroup">\n       <div formGroupName="person">\n          <input formControlName="firstName">\n       </div>\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       person: new FormGroup({ firstName: new FormControl() })\n    });',L='\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>';class D{static controlParentException(){throw new Error("formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+k)}static ngModelGroupException(){throw new Error(`formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n       that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n       Option 1:  Update the parent to be formGroupName (reactive form strategy)\n\n        ${E}\n\n        Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n        ${L}`)}static missingFormException(){throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       "+k)}static groupParentException(){throw new Error("formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup\n      directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+E)}static arrayParentException(){throw new Error('formArrayName must be used with a parent formGroup directive.  You\'ll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n        Example:\n\n        \n    <div [formGroup]="myGroup">\n      <div formArrayName="cities">\n        <div *ngFor="let city of cityArray.controls; index as i">\n          <input [formControlName]="i">\n        </div>\n      </div>\n    </div>\n\n    In your class:\n\n    this.cityArray = new FormArray([new FormControl(\'SF\')]);\n    this.myGroup = new FormGroup({\n      cities: this.cityArray\n    });')}static disabledAttrWarning(){console.warn("\n      It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n      you. We recommend using this approach to avoid 'changed after checked' errors.\n       \n      Example: \n      form = new FormGroup({\n        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n        last: new FormControl('Drew', Validators.required)\n      });\n    ")}static ngModelWarning(t){console.warn(`\n    It looks like you're using ngModel on the same form field as ${t}. \n    Support for using the ngModel input property and ngModelChange event with \n    reactive form directives has been deprecated in Angular v6 and will be removed \n    in Angular v7.\n    \n    For more information on this, see our API docs here:\n    https://angular.io/api/forms/${"formControl"===t?"FormControlDirective":"FormControlName"}#use-with-ngmodel\n    `)}}function P(t,e){return null==t?""+e:(e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class M{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=a["ɵlooseIdentical"]}set compareWith(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t}writeValue(t){this.value=t;const e=this._getOptionId(t);null==e&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);const n=P(e,t);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)}registerOnChange(t){this.onChange=e=>{this.value=this._getOptionValue(e),t(this.value)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(){return(this._idCounter++).toString()}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e),t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e):t}}class q{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption())}set ngValue(t){null!=this._select&&(this._select._optionMap.set(this.id,t),this._setElementValue(P(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._setElementValue(t),this._select&&this._select.writeValue(this._select.value)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}function j(t,e){return null==t?""+e:("string"==typeof e&&(e=`'${e}'`),e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class F{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption(this))}set ngValue(t){null!=this._select&&(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._select?(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}_setSelected(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}function V(t,e){return[...e.path,t]}function G(t,e){t||H(e,"Cannot find control with"),e.valueAccessor||H(e,"No value accessor for form control with"),t.validator=T.compose([t.validator,e.validator]),t.asyncValidator=T.composeAsync([t.asyncValidator,e.asyncValidator]),e.valueAccessor.writeValue(t.value),function(t,e){e.valueAccessor.registerOnChange(n=>{t._pendingValue=n,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&B(t,e)})}(t,e),function(t,e){t.registerOnChange((t,n)=>{e.valueAccessor.writeValue(t),n&&e.viewToModelUpdate(t)})}(t,e),function(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&B(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),e.valueAccessor.setDisabledState&&t.registerOnDisabledChange(t=>{e.valueAccessor.setDisabledState(t)}),e._rawValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())}),e._rawAsyncValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())})}function B(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function z(t,e){null==t&&H(e,"Cannot find control with"),t.validator=T.compose([t.validator,e.validator]),t.asyncValidator=T.composeAsync([t.asyncValidator,e.asyncValidator])}function Y(t){return H(t,"There is no FormControl instance attached to form control element with")}function H(t,e){let n;throw n=t.path.length>1?`path: '${t.path.join(" -> ")}'`:t.path[0]?`name: '${t.path}'`:"unspecified name attribute",new Error(`${e} ${n}`)}function U(t){return null!=t?T.compose(t.map(I)):null}function W(t){return null!=t?T.composeAsync(t.map(N)):null}function K(t,e){if(!t.hasOwnProperty("model"))return!1;const n=t.model;return!!n.isFirstChange()||!Object(a["ɵlooseIdentical"])(e,n.currentValue)}const $=[l,class{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(t))}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}},C,M,class{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=a["ɵlooseIdentical"]}set compareWith(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t}writeValue(t){let e;if(this.value=t,Array.isArray(t)){const n=t.map(t=>this._getOptionId(t));e=(t,e)=>{t._setSelected(n.indexOf(e.toString())>-1)}}else e=(t,e)=>{t._setSelected(!1)};this._optionMap.forEach(e)}registerOnChange(t){this.onChange=e=>{const n=[];if(e.hasOwnProperty("selectedOptions")){const t=e.selectedOptions;for(let e=0;e<t.length;e++){const a=t.item(e),r=this._getOptionValue(a.value);n.push(r)}}else{const t=e.options;for(let e=0;e<t.length;e++){const a=t.item(e);if(a.selected){const t=this._getOptionValue(a.value);n.push(t)}}}this.value=n,t(n)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(t){const e=(this._idCounter++).toString();return this._optionMap.set(e,t),e}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e)._value,t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e)._value:t}},A];function J(t,e){t._syncPendingControls(),e.forEach(t=>{const e=t.control;"submit"===e.updateOn&&e._pendingChange&&(t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1)})}function Z(t,e){if(!e)return null;Array.isArray(e)||H(t,"Value accessor was not provided as an array for form control with");let n=void 0,a=void 0,r=void 0;return e.forEach(e=>{var i;e.constructor===c?n=e:(i=e,$.some(t=>i.constructor===t)?(a&&H(t,"More than one built-in value accessor matches form control with"),a=e):(r&&H(t,"More than one custom value accessor matches form control with"),r=e))}),r||a||n||(H(t,"No valid value accessor for form control with"),null)}function Q(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}function X(t){const e=et(t)?t.validators:t;return Array.isArray(e)?U(e):e||null}function tt(t,e){const n=et(e)?e.asyncValidators:t;return Array.isArray(n)?W(n):n||null}function et(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class nt{constructor(t,e){this.validator=t,this.asyncValidator=e,this._onCollectionChange=()=>{},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}get parent(){return this._parent}get valid(){return"VALID"===this.status}get invalid(){return"INVALID"===this.status}get pending(){return"PENDING"==this.status}get disabled(){return"DISABLED"===this.status}get enabled(){return"DISABLED"!==this.status}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this.validator=X(t)}setAsyncValidators(t){this.asyncValidator=tt(t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(t=>t.markAllAsTouched())}markAsUntouched(t={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}markAsDirty(t={}){this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)}markAsPristine(t={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}markAsPending(t={}){this.status="PENDING",!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)}disable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="DISABLED",this.errors=null,this._forEachChild(e=>{e.disable(Object.assign({},t,{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign({},t,{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!0))}enable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="VALID",this._forEachChild(e=>{e.enable(Object.assign({},t,{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(Object.assign({},t,{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!1))}_updateAncestors(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(t){this._parent=t}updateValueAndValidity(t={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this.status||this._runAsyncValidator(t.emitEvent)),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(t)}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t){if(this.asyncValidator){this.status="PENDING";const e=O(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(e=>this.setErrors(e,{emitEvent:t}))}}_cancelExistingSubscription(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)}get(t){return function(t,e,n){return null==e?null:(e instanceof Array||(e=e.split(".")),e instanceof Array&&0===e.length?null:e.reduce((t,e)=>t instanceof rt?t.controls.hasOwnProperty(e)?t.controls[e]:null:t instanceof it&&t.at(e)||null,t))}(this,t)}getError(t,e){const n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)}_initObservables(){this.valueChanges=new a.EventEmitter,this.statusChanges=new a.EventEmitter}_calculateStatus(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t={}){this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}_updateTouched(t={}){this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}_isBoxedValue(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){et(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){return!t&&this._parent&&this._parent.dirty&&!this._parent._anyControlsDirty()}}class at extends nt{constructor(t=null,e,n){super(X(e),tt(n,e)),this._onChange=[],this._applyFormState(t),this._setUpdateStrategy(e),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),this._initObservables()}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(t=>t(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=null,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_clearChangeFns(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=()=>{}}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_forEachChild(t){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(t){this._isBoxedValue(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}}class rt extends nt{constructor(t,e,n){super(X(e),tt(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}removeControl(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){this._checkAllValuesPresent(t),Object.keys(t).forEach(n=>{this._throwIfControlMissing(n),this.controls[n].setValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){Object.keys(t).forEach(n=>{this.controls[n]&&this.controls[n].patchValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t={},e={}){this._forEachChild((n,a)=>{n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(t,e,n)=>(t[n]=e instanceof at?e.value:e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(t,e)=>!!e._syncPendingControls()||t);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!Object.keys(this.controls).length)throw new Error("\n        There are no form controls registered with this group yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[t])throw new Error(`Cannot find form control with name: ${t}.`)}_forEachChild(t){Object.keys(this.controls).forEach(e=>t(this.controls[e],e))}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){let e=!1;return this._forEachChild((n,a)=>{e=e||this.contains(a)&&t(n)}),e}_reduceValue(){return this._reduceChildren({},(t,e,n)=>((e.enabled||this.disabled)&&(t[n]=e.value),t))}_reduceChildren(t,e){let n=t;return this._forEachChild((t,a)=>{n=e(n,t,a)}),n}_allControlsDisabled(){for(const t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control with name: '${n}'.`)})}}class it extends nt{constructor(t,e,n){super(X(e),tt(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}at(t){return this.controls[t]}push(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()}insert(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()}removeAt(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),this.updateValueAndValidity()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){this._checkAllValuesPresent(t),t.forEach((t,n)=>{this._throwIfControlMissing(n),this.at(n).setValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t.forEach((t,n)=>{this.at(n)&&this.at(n).patchValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t=[],e={}){this._forEachChild((n,a)=>{n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(t=>t instanceof at?t.value:t.getRawValue())}clear(){this.controls.length<1||(this._forEachChild(t=>t._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity())}_syncPendingControls(){let t=this.controls.reduce((t,e)=>!!e._syncPendingControls()||t,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(t))throw new Error("Cannot find form control at index "+t)}_forEachChild(t){this.controls.forEach((e,n)=>{t(e,n)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control at index: ${n}.`)})}_allControlsDisabled(){for(const t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}}const st=(()=>Promise.resolve(null))();class ut extends h{constructor(t,e){super(),this.submitted=!1,this._directives=[],this.ngSubmit=new a.EventEmitter,this.form=new rt({},U(t),W(e))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(t){st.then(()=>{const e=this._findContainer(t.path);t.control=e.registerControl(t.name,t.control),G(t.control,t),t.control.updateValueAndValidity({emitEvent:!1}),this._directives.push(t)})}getControl(t){return this.form.get(t.path)}removeControl(t){st.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name),Q(this._directives,t)})}addFormGroup(t){st.then(()=>{const e=this._findContainer(t.path),n=new rt({});z(n,t),e.registerControl(t.name,n),n.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(t){st.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name)})}getFormGroup(t){return this.form.get(t.path)}updateModel(t,e){st.then(()=>{this.form.get(t.path).setValue(e)})}setValue(t){this.control.setValue(t)}onSubmit(t){return this.submitted=!0,J(this.form,this._directives),this.ngSubmit.emit(t),!1}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(t){return t.pop(),t.length?this.form.get(t):this.form}}class ot{static modelParentException(){throw new Error(`\n      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using\n      formGroup's partner directive "formControlName" instead.  Example:\n\n      ${k}\n\n      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n      Example:\n\n      \n    <div [formGroup]="myGroup">\n       <input formControlName="firstName">\n       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">\n    </div>\n  `)}static formGroupNameException(){throw new Error(`\n      ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n      Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n      ${E}\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      ${L}`)}static missingNameException(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n      control must be defined as \'standalone\' in ngModelOptions.\n\n      Example 1: <input [(ngModel)]="person.firstName" name="first">\n      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">')}static modelGroupParentException(){throw new Error(`\n      ngModelGroup cannot be used with a parent formGroup directive.\n\n      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n      ${E}\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      ${L}`)}static ngFormWarning(){console.warn("\n    It looks like you're using 'ngForm'.\n\n    Support for using the 'ngForm' element selector has been deprecated in Angular v6 and will be removed\n    in Angular v9.\n\n    Use 'ng-form' instead.\n\n    Before:\n    <ngForm #myForm=\"ngForm\">\n\n    After:\n    <ng-form #myForm=\"ngForm\">\n    ")}}const lt=new a.InjectionToken("NgFormSelectorWarning");class dt extends h{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return V(this.name,this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._validators)}get asyncValidator(){return W(this._asyncValidators)}_checkParentType(){}}class ct extends dt{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){this._parent instanceof ct||this._parent instanceof ut||ot.modelGroupParentException()}}const ft=(()=>Promise.resolve(null))();class ht extends p{constructor(t,e,n,r){super(),this.control=new at,this._registered=!1,this.update=new a.EventEmitter,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=Z(this,r)}ngOnChanges(t){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in t&&this._updateDisabled(t),K(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?V(this.name,this._parent):[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._rawValidators)}get asyncValidator(){return W(this._rawAsyncValidators)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){G(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){!(this._parent instanceof ct)&&this._parent instanceof dt?ot.formGroupNameException():this._parent instanceof ct||this._parent instanceof ut||ot.modelParentException()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||ot.missingNameException()}_updateValue(t){ft.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1})})}_updateDisabled(t){const e=t.isDisabled.currentValue,n=""===e||e&&"false"!==e;ft.then(()=>{n&&!this.control.disabled?this.control.disable():!n&&this.control.disabled&&this.control.enable()})}}class gt{}const pt=new a.InjectionToken("NgModelWithFormControlWarning");class bt extends h{constructor(t,e){super(),this._validators=t,this._asyncValidators=e,this.submitted=!1,this.directives=[],this.form=null,this.ngSubmit=new a.EventEmitter}ngOnChanges(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(t){const e=this.form.get(t.path);return G(e,t),e.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),e}getControl(t){return this.form.get(t.path)}removeControl(t){Q(this.directives,t)}addFormGroup(t){const e=this.form.get(t.path);z(e,t),e.updateValueAndValidity({emitEvent:!1})}removeFormGroup(t){}getFormGroup(t){return this.form.get(t.path)}addFormArray(t){const e=this.form.get(t.path);z(e,t),e.updateValueAndValidity({emitEvent:!1})}removeFormArray(t){}getFormArray(t){return this.form.get(t.path)}updateModel(t,e){this.form.get(t.path).setValue(e)}onSubmit(t){return this.submitted=!0,J(this.form,this.directives),this.ngSubmit.emit(t),!1}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_updateDomValue(){this.directives.forEach(t=>{const e=this.form.get(t.path);t.control!==e&&(function(t,e){e.valueAccessor.registerOnChange(()=>Y(e)),e.valueAccessor.registerOnTouched(()=>Y(e)),e._rawValidators.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),e._rawAsyncValidators.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),t&&t._clearChangeFns()}(t.control,t),e&&G(e,t),t.control=e)}),this.form._updateTreeValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(()=>this._updateDomValue()),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{}),this._oldForm=this.form}_updateValidators(){const t=U(this._validators);this.form.validator=T.compose([this.form.validator,t]);const e=W(this._asyncValidators);this.form.asyncValidator=T.composeAsync([this.form.asyncValidator,e])}_checkFormPresent(){this.form||D.missingFormException()}}class mt extends dt{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){vt(this._parent)&&D.groupParentException()}}class yt extends h{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return V(this.name,this._parent)}get validator(){return U(this._validators)}get asyncValidator(){return W(this._asyncValidators)}_checkParentType(){vt(this._parent)&&D.arrayParentException()}}function vt(t){return!(t instanceof mt||t instanceof bt||t instanceof yt)}let xt=(()=>{class t extends p{constructor(t,e,n,r,i){super(),this._ngModelWarningConfig=i,this._added=!1,this.update=new a.EventEmitter,this._ngModelWarningSent=!1,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=Z(this,r)}set isDisabled(t){D.disabledAttrWarning()}ngOnChanges(e){var n,r;this._added||this._setUpControl(),K(e,this.viewModel)&&("formControlName",n=t,this,r=this._ngModelWarningConfig,Object(a.isDevMode)()&&"never"!==r&&((null!==r&&"once"!==r||n._ngModelWarningSentOnce)&&("always"!==r||this._ngModelWarningSent)||(D.ngModelWarning("formControlName"),n._ngModelWarningSentOnce=!0,this._ngModelWarningSent=!0)),this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}get path(){return V(this.name,this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._rawValidators)}get asyncValidator(){return W(this._rawAsyncValidators)}_checkParentType(){!(this._parent instanceof mt)&&this._parent instanceof dt?D.ngModelGroupException():this._parent instanceof mt||this._parent instanceof bt||this._parent instanceof yt||D.controlParentException()}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0}}return t._ngModelWarningSentOnce=!1,t})();class _t{get required(){return this._required}set required(t){this._required=null!=t&&!1!==t&&""+t!="false",this._onChange&&this._onChange()}validate(t){return this.required?T.required(t):null}registerOnValidatorChange(t){this._onChange=t}}class Tt{}class wt{group(t,e=null){const n=this._reduceControls(t);let a=null,r=null,i=void 0;return null!=e&&(function(t){return void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn}(e)?(a=null!=e.validators?e.validators:null,r=null!=e.asyncValidators?e.asyncValidators:null,i=null!=e.updateOn?e.updateOn:void 0):(a=null!=e.validator?e.validator:null,r=null!=e.asyncValidator?e.asyncValidator:null)),new rt(n,{asyncValidators:r,updateOn:i,validators:a})}control(t,e,n){return new at(t,e,n)}array(t,e,n){const a=t.map(t=>this._createControl(t));return new it(a,e,n)}_reduceControls(t){const e={};return Object.keys(t).forEach(n=>{e[n]=this._createControl(t[n])}),e}_createControl(t){return t instanceof at||t instanceof rt||t instanceof it?t:Array.isArray(t)?this.control(t[0],t.length>1?t[1]:null,t.length>2?t[2]:null):this.control(t)}}class Ot{static withConfig(t){return{ngModule:Ot,providers:[{provide:lt,useValue:t.warnOnDeprecatedNgFormSelector}]}}}class St{static withConfig(t){return{ngModule:St,providers:[{provide:pt,useValue:t.warnOnNgModelWithFormControl}]}}}},sA22:function(t,e,n){var a=n("pMcL"),r=Object.prototype,i=r.hasOwnProperty,s=r.toString,u=a?a.toStringTag:void 0;t.exports=function(t){var e=i.call(t,u),n=t[u];try{t[u]=void 0;var a=!0}catch(o){}var r=s.call(t);return a&&(e?t[u]=n:delete t[u]),r}},sEFX:function(t,e,n){"use strict";var a=n("AO7/"),r=n("9d/t");t.exports=a?{}.toString:function(){return"[object "+r(this)+"]"}},sEik:function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},sLuX:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("25BL"),i=n("uIqm");n("FSuO"),n("a0VL"),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return u}));var s=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function u(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{table:0}),(t()(),a["ɵeld"](1,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,r.b,r.a)),a["ɵdid"](2,2867200,[[1,4],["table",4]],0,i.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],header:[4,"header"],footer:[5,"footer"],limit:[6,"limit"],autoReload:[7,"autoReload"],autoSave:[8,"autoSave"],customCss:[9,"customCss"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.tableData,n.columns,"flex",!1,!1,!1,0,n.autoReload,!1,n.customCss)}),null)}},sMBO:function(t,e,n){var a=n("g6v/"),r=n("Xnc8").EXISTS,i=n("4zBA"),s=n("m/L8").f,u=Function.prototype,o=i(u.toString),l=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,d=i(l.exec);a&&!r&&s(u,"name",{configurable:!0,get:function(){try{return d(l,o(this))[1]}catch(t){return""}}})},sVev:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return t.prototype=Object.create(Error.prototype),t})()},sb0X:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("s7LF"),i=n("oxzT"),s=n("LvDl");class u{constructor(t){this.elRef=t,this.type="submit",this.disabled=!1,this.submitAction=new a.EventEmitter,this.loading=!1,this.icons=i.a}ngOnInit(){this.form.statusChanges.subscribe(()=>{s.has(this.form.errors,"cdSubmitButton")&&(this.loading=!1,s.unset(this.form.errors,"cdSubmitButton"),this.form instanceof r.a&&this.form.updateValueAndValidity())})}submit(t){this.focusButton(),this.form instanceof r.l&&this.form.onSubmit(t),this.form.invalid?this.focusInvalid():(this.loading=!0,this.submitAction.emit())}focusButton(){this.elRef.nativeElement.offsetParent.querySelector(`button[type="${this.type}"]`).focus()}focusInvalid(){const t=this.elRef.nativeElement.offsetParent.querySelector("input.ng-invalid, select.ng-invalid");t&&t.focus()}}},sne2:function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"e",(function(){return s})),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return o})),n.d(e,"d",(function(){return l}));var a=n("8Y7J"),r=n("GiVz");let i=(()=>{class t{}return t.organization="ceph",t.projectName="Ceph Dashboard",t.license="Free software (LGPL 2.1).",t})();var s=function(t){return t.CREATE="create",t.EDIT="edit",t.UPDATE="update",t.REMOVE="remove",t.DELETE="delete",t.ADD="add",t.COPY="copy",t.CLONE="clone",t.RECREATE="recreate",t.EXPIRE="expire",t}({}),u=function(t){return t.CREATE="Create",t.DELETE="Delete",t.ADD="Add",t.REMOVE="Remove",t.EDIT="Edit",t.CANCEL="Cancel",t.COPY="Copy",t.CLONE="Clone",t.UPDATE="Update",t.EVICT="Evict",t.SHOW="Show",t.RECREATE="Recreate",t.EXPIRE="Expire",t}({});let o=(()=>{class t{constructor(t){this.i18n=t,this.CREATE=this.i18n("Create"),this.DELETE=this.i18n("Delete"),this.ADD=this.i18n("Add"),this.SET=this.i18n("Set"),this.REMOVE=this.i18n("Remove"),this.UNSET=this.i18n("Unset"),this.EDIT=this.i18n("Edit"),this.UPDATE=this.i18n("Update"),this.CANCEL=this.i18n("Cancel"),this.CLONE=this.i18n("Clone"),this.COPY=this.i18n("Copy"),this.DEEP_SCRUB=this.i18n("Deep Scrub"),this.DESTROY=this.i18n("Destroy"),this.EVICT=this.i18n("Evict"),this.FLATTEN=this.i18n("Flatten"),this.MARK_DOWN=this.i18n("Mark Down"),this.MARK_IN=this.i18n("Mark In"),this.MARK_LOST=this.i18n("Mark Lost"),this.MARK_OUT=this.i18n("Mark Out"),this.PROTECT=this.i18n("Protect"),this.PURGE=this.i18n("Purge"),this.RENAME=this.i18n("Rename"),this.RESTORE=this.i18n("Restore"),this.REWEIGHT=this.i18n("Reweight"),this.ROLLBACK=this.i18n("Rollback"),this.SCRUB=this.i18n("Scrub"),this.SHOW=this.i18n("Show"),this.TRASH=this.i18n("Move to Trash"),this.UNPROTECT=this.i18n("Unprotect"),this.CHANGE=this.i18n("Change"),this.FLAGS=this.i18n("Flags"),this.RECREATE=this.i18n("Recreate"),this.EXPIRE=this.i18n("Expire")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})(),l=(()=>{class t{constructor(t){this.i18n=t,this.CREATED=this.i18n("Created"),this.DELETED=this.i18n("Deleted"),this.ADDED=this.i18n("Added"),this.REMOVED=this.i18n("Removed"),this.EDITED=this.i18n("Edited"),this.CANCELED=this.i18n("Canceled"),this.CLONED=this.i18n("Cloned"),this.COPIED=this.i18n("Copied"),this.DEEP_SCRUBBED=this.i18n("Deep Scrubbed"),this.DESTROYED=this.i18n("Destroyed"),this.FLATTENED=this.i18n("Flattened"),this.MARKED_DOWN=this.i18n("Marked Down"),this.MARKED_IN=this.i18n("Marked In"),this.MARKED_LOST=this.i18n("Marked Lost"),this.MARKED_OUT=this.i18n("Marked Out"),this.PROTECTED=this.i18n("Protected"),this.PURGED=this.i18n("Purged"),this.RENAMED=this.i18n("Renamed"),this.RESTORED=this.i18n("Restored"),this.REWEIGHTED=this.i18n("Reweighted"),this.ROLLED_BACK=this.i18n("Rolled back"),this.SCRUBBED=this.i18n("Scrubbed"),this.SHOWED=this.i18n("Showed"),this.TRASHED=this.i18n("Moved to Trash"),this.UNPROTECTED=this.i18n("Unprotected"),this.CHANGE=this.i18n("Change"),this.RECREATED=this.i18n("Recreated"),this.EXPIRED=this.i18n("Expired")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})()},sp3z:function(t,e,n){!function(t){"use strict";t.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(t){return"ຕອນແລງ"===t},meridiem:function(t,e,n){return t<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(t){return"ທີ່"+t}})}(n("wd/R"))},"t/zF":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e){this.name=t,this.metadata=e}}},tAZD:function(t,e,n){var a,r,i;!function(s){if("object"==typeof t.exports){var u=s(0,e);void 0!==u&&(t.exports=u)}else r=[n,e],void 0===(i="function"==typeof(a=s)?a.apply(e,r):a)||(t.exports=i)}((function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=void 0;e.default=["en",[["a","p"],["AM","PM"],n],[["AM","PM"],n,n],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],n,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],n,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",n,"{1} 'at' {0}",n],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"$","US Dollar",{},function(t){var e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}]}))},tGlX:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},tT3J:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("wd/R"))},tUCv:function(t,e,n){!function(t){"use strict";t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("wd/R"))},tiKp:function(t,e,n){var a=n("2oRo"),r=n("VpIT"),i=n("Gi26"),s=n("kOOl"),u=n("STAE"),o=n("/b8u"),l=r("wks"),d=a.Symbol,c=d&&d.for,f=o?d:d&&d.withoutSetter||s;t.exports=function(t){if(!i(l,t)||!u&&"string"!=typeof l[t]){var e="Symbol."+t;l[t]=u&&i(d,t)?d[t]:o&&c?c(e):f(e)}return l[t]}},tpUd:function(t,e,n){var a=n("CslI");t.exports=function(t){return a(t)?void 0:t}},tycR:function(t,e,n){var a=n("A2ZE"),r=n("4zBA"),i=n("RK3t"),s=n("ewvW"),u=n("B/qT"),o=n("ZfDv"),l=r([].push),d=function(t){var e=1==t,n=2==t,r=3==t,d=4==t,c=6==t,f=7==t,h=5==t||c;return function(g,p,b,m){for(var y,v,x=s(g),_=i(x),T=a(p,b),w=u(_),O=0,S=m||o,I=e?S(g,w):n||f?S(g,0):void 0;w>O;O++)if((h||O in _)&&(v=T(y=_[O],O,x),t))if(e)I[O]=v;else if(v)switch(t){case 3:return!0;case 5:return y;case 6:return O;case 2:l(I,y)}else switch(t){case 4:return!1;case 7:l(I,y)}return c?-1:r||d?d:I}};t.exports={forEach:d(0),map:d(1),filter:d(2),some:d(3),every:d(4),find:d(5),findIndex:d(6),filterReject:d(7)}},tz6c:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("2Vo4"),r=n("pLZG"),i=n("lJxs"),s=n("SxV6"),u=n("+0ag"),o=n("mSOc"),l=n("8Y7J");let d=(()=>{class t{constructor(t,e){this.summaryservice=t,this.cephReleaseNamePipe=e,this.releaseDataSource=new a.a(null),this.releaseData$=this.releaseDataSource.asObservable(),this.summaryservice.subscribeOnce(t=>{const e=this.cephReleaseNamePipe.transform(t.version);this.releaseDataSource.next(e)})}urlGenerator(t,e){const n=`http://docs.ceph.com/docs/${t}/`;return{iscsi:n+"mgr/dashboard/#enabling-iscsi-management",prometheus:n+"mgr/dashboard/#enabling-prometheus-alerting","nfs-ganesha":n+"mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard","rgw-nfs":n+"radosgw/nfs",rgw:n+"mgr/dashboard/#enabling-the-object-gateway-management-frontend",dashboard:n+"mgr/dashboard",grafana:n+"mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards",orch:n+"mgr/orchestrator",pgs:"http://ceph.com/pgcalc"}[e]}subscribeOnce(t,e,n){return this.releaseData$.pipe(Object(r.a)(t=>!!t),Object(i.a)(e=>this.urlGenerator(e,t)),Object(s.a)()).subscribe(e,n)}}return t.ngInjectableDef=l["ɵɵdefineInjectable"]({factory:function(){return new t(l["ɵɵinject"](o.a),l["ɵɵinject"](u.a))},token:t,providedIn:"root"}),t})()},u3GI:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uEye:function(t,e,n){!function(t){"use strict";t.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uIqm:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("w9WL"),i=n("LvDl"),s=n("PqYM"),u=n("HDdC"),o=n("oxzT"),l=n("x38r");class d{constructor(t){this.errorConfig={resetData:!0,displayError:!0},this.error=t}}var c=n("vCyI");n.d(e,"a",(function(){return f}));class f{constructor(t,e){this.ngZone=t,this.cdRef=e,this.columnMode="flex",this.onlyActionHeader=!1,this.toolHeader=!0,this.searchField=!0,this.header=!0,this.footer=!0,this.limit=10,this.hasDetails=!1,this.autoReload=5e3,this.identifier="id",this.forceIdentifier=!1,this.selectionType=void 0,this.updateSelectionOnRefresh="onChange",this.updateExpandedOnRefresh="onChange",this.autoSave=!0,this.searchableObjects=!1,this.extraFilterableColumns=[],this.fetchData=new a.EventEmitter,this.updateSelection=new a.EventEmitter,this.setExpandedRow=new a.EventEmitter,this.columnFiltersChanged=new a.EventEmitter,this.selection=new c.a,this.expanded=void 0,this.icons=o.a,this.cellTemplates={},this.search="",this.rows=[],this.loadingIndicator=!0,this.loadingError=!1,this.paginationClasses={pagerLeftArrow:o.a.leftArrowDouble,pagerRightArrow:o.a.rightArrowDouble,pagerPrevious:o.a.leftArrow,pagerNext:o.a.rightArrow},this.userConfig={},this.localStorage=window.localStorage,this.updating=!1,this.columnFilters=[]}get columnFiltered(){return i.some(this.columnFilters,t=>void 0!==t.value)}static prepareSearch(t){return(t=t.toLowerCase().replace(/,/g,"")).match(/['"][^'"]+['"]/)&&(t=t.replace(/['"][^'"]+['"]/g,t=>t.replace(/(['"])([^'"]+)(['"])/g,"$2").replace(/ /g,"+"))),t.split(" ").filter(t=>t)}ngOnInit(){if(this.table.element.addEventListener("mouseenter",t=>t.stopPropagation(),!0),this._addTemplates(),!this.sorts){const t=-1!==i.findIndex(this.columns,["prop",this.identifier]);this.sorts=this.createSortingDefinition(t?this.identifier:this.columns[0].prop+""),t||this.forceIdentifier||(this.identifier=this.columns[0].prop+"")}this.initUserConfig(),this.columns.forEach(t=>{t.cellTransformation&&(t.cellTemplate=this.cellTemplates[t.cellTransformation]),t.flexGrow||(t.flexGrow=t.prop+""===this.identifier?1:2),t.resizeable||(t.resizeable=!1)}),this.initExpandCollapseColumn(),this.initCheckboxColumn(),this.filterHiddenColumns(),this.initColumnFilters(),this.updateColumnFilterOptions(),this.fetchData.observers.length>0&&(this.loadingIndicator=!0),i.isInteger(this.autoReload)&&this.autoReload>0?this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=Object(s.a)(0,this.autoReload).subscribe(()=>{this.ngZone.run(()=>this.reloadData())})}):this.autoReload?this.useData():this.reloadData()}initUserConfig(){this.autoSave&&(this.tableName=this._calculateUniqueTableName(this.columns),this._loadUserConfig(),this._initUserConfigAutoSave()),this.userConfig.limit||(this.userConfig.limit=this.limit),this.userConfig.sorts||(this.userConfig.sorts=this.sorts),this.userConfig.columns?this.columns.forEach((t,e)=>{t.isHidden=this.userConfig.columns[e].isHidden}):this.updateUserColumns()}_calculateUniqueTableName(t){const e=t=>{if(!i.isString(t))return 0;let e=0;for(let n=0;n<t.length;n++)e+=t.charCodeAt(n)*n;return e};return t.reduce((t,n,a)=>(e(n.prop)+e(n.name))*(a+1)+t,0).toString()}_loadUserConfig(){const t=this.localStorage.getItem(this.tableName);t&&(this.userConfig=JSON.parse(t))}_initUserConfigAutoSave(){const t=u.a.create(this._initUserConfigProxy.bind(this));this.saveSubscriber=t.subscribe(this._saveUserConfig.bind(this))}_initUserConfigProxy(t){this.userConfig=new Proxy(this.userConfig,{set:(e,n,a)=>(e[n]=a,t.next(e),!0)})}_saveUserConfig(t){this.localStorage.setItem(this.tableName,JSON.stringify(t))}updateUserColumns(){this.userConfig.columns=this.columns.map(t=>({prop:t.prop,name:t.name,isHidden:!!t.isHidden}))}initCheckboxColumn(){"multiClick"===this.selectionType&&this.columns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,checkboxable:!0,canAutoResize:!1,cellClass:"cd-datatable-checkbox",width:30})}initExpandCollapseColumn(){this.hasDetails&&this.columns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,isHidden:!1,canAutoResize:!1,cellClass:"cd-datatable-expand-collapse",width:40,cellTemplate:this.rowDetailsTpl})}filterHiddenColumns(){this.tableColumns=this.columns.filter(t=>!t.isHidden)}initColumnFilters(){let t=i.filter(this.columns,{filterable:!0});t=[...t,...this.extraFilterableColumns],this.columnFilters=t.map(t=>({column:t,options:[],value:t.filterInitValue?this.createColumnFilterOption(t.filterInitValue,t.pipe):void 0})),this.selectedFilter=i.first(this.columnFilters)}createColumnFilterOption(t,e){return{raw:i.toString(t),formatted:e?e.transform(t):i.toString(t)}}updateColumnFilterOptions(){this.columnFilters.forEach(t=>{let e=[];if(i.isUndefined(t.column.filterOptions)){const n=i.filter(i.map(this.data,t.column.prop),t=>i.isString(t)&&""!==t||i.isBoolean(t)||i.isFinite(t)||i.isDate(t));e=i.sortedUniq(n.sort())}else e=t.column.filterOptions;const n=e.map(e=>this.createColumnFilterOption(e,t.column.pipe));t.value&&i.isUndefined(i.find(n,{raw:t.value.raw}))&&(t.value=void 0),t.options=n})}onSelectFilter(t){this.selectedFilter=t}onChangeFilter(t,e){t.value=i.isEqual(t.value,e)?void 0:e,this.updateFilter()}doColumnFiltering(){const t=[];let e=[...this.data],n=[];return this.columnFilters.forEach(a=>{if(void 0===a.value)return;t.push({name:a.column.name,prop:a.column.prop,value:a.value});const s=i.partition(e,t=>{const e=Object(r.C)(a.column.prop)(t,a.column.prop);return i.isUndefined(a.column.filterPredicate)?""+e===a.value.raw:a.column.filterPredicate(t,a.value.raw)});e=s[0],n=[...n,...s[1]]}),this.columnFiltersChanged.emit({filters:t,data:e,dataOut:n}),i.forEach(this.selection.selected,t=>{void 0===i.find(e,{[this.identifier]:t[this.identifier]})&&(this.selection=new c.a,this.onSelect(this.selection))}),e}ngOnDestroy(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe(),this.saveSubscriber&&this.saveSubscriber.unsubscribe()}ngAfterContentChecked(){this.table&&this.table.element.clientWidth!==this.currentWidth&&(this.currentWidth=this.table.element.clientWidth,this.table.recalculate(),i.get(this.table,"cd").markForCheck())}_addTemplates(){this.cellTemplates.bold=this.tableCellBoldTpl,this.cellTemplates.checkIcon=this.checkIconTpl,this.cellTemplates.sparkline=this.sparklineTpl,this.cellTemplates.routerLink=this.routerLinkTpl,this.cellTemplates.perSecond=this.perSecondTpl,this.cellTemplates.executing=this.executingTpl,this.cellTemplates.classAdding=this.classAddingTpl,this.cellTemplates.badge=this.badgeTpl,this.cellTemplates.map=this.mapTpl,this.cellTemplates.truncate=this.truncateTpl}useCustomClass(t){if(!this.customCss)throw new Error("Custom classes are not set!");const e=Object.keys(this.customCss),n=Object.values(this.customCss).map((n,a)=>(i.isFunction(n)&&n(t)||n===t)&&e[a]).filter(t=>t).join(" ");return i.isEmpty(n)?void 0:n}ngOnChanges(t){t.data&&t.data.currentValue&&this.useData()}setLimit(t){const e=parseInt(t.target.value,10);e>0&&(this.userConfig.limit=e)}reloadData(){if(!this.updating){this.loadingError=!1;const t=new d(()=>{this.loadingError=t.errorConfig.displayError,t.errorConfig.resetData&&(this.data=[]),this.useData()});this.fetchData.emit(t),this.updating=!0}}refreshBtn(){this.loadingIndicator=!0,this.reloadData()}rowIdentity(){return t=>{const e=t[this.identifier];if(i.isUndefined(e))throw new Error(`Wrong identifier "${this.identifier}" -> "${e}"`);return e}}useData(){this.data&&(this.updateColumnFilterOptions(),this.updateFilter(),this.reset(),this.updateSelected(),this.updateExpanded())}reset(){this.loadingIndicator=!1,this.updating=!1}updateSelected(){if("never"===this.updateSelectionOnRefresh)return;const t=[];this.selection.selected.forEach(e=>{for(const n of this.data)e[this.identifier]===n[this.identifier]&&t.push(n)}),"onChange"===this.updateSelectionOnRefresh&&i.isEqual(this.selection.selected,t)||(this.selection.selected=t,this.onSelect(this.selection))}updateExpanded(){if(i.isUndefined(this.expanded)||"never"===this.updateExpandedOnRefresh)return;const t=this.expanded[this.identifier],e=i.find(this.data,e=>t===e[this.identifier]);"onChange"===this.updateExpandedOnRefresh&&i.isEqual(this.expanded,e)||(this.expanded=e,this.setExpandedRow.emit(e))}onSelect(t){i.has(t,"selected")&&(this.selection.selected=t.selected),this.updateSelection.emit(i.clone(this.selection))}toggleColumn(t){const e=t.target.name,n=!t.target.checked;n&&1===this.tableColumns.length?t.target.checked=!0:(i.find(this.columns,t=>t.prop===e).isHidden=n,this.updateColumns())}updateColumns(){this.updateUserColumns(),this.filterHiddenColumns();const t=this.userConfig.sorts[0].prop;i.find(this.tableColumns,e=>e.prop===t)||(this.userConfig.sorts=this.createSortingDefinition(this.tableColumns[0].prop)),this.table.recalculate(),this.cdRef.detectChanges()}createSortingDefinition(t){return[{prop:t,dir:r.A.asc}]}changeSorting({sorts:t}){this.userConfig.sorts=t}onClearSearch(){this.search="",this.updateFilter()}onClearFilters(){this.columnFilters.forEach(t=>{t.value=void 0}),this.selectedFilter=i.first(this.columnFilters),this.updateFilter()}updateFilter(){let t=0!==this.columnFilters.length?this.doColumnFiltering():this.data;if(this.search.length>0&&t){const e=this.columns.filter(t=>t.cellTransformation!==l.a.sparkline);t=this.subSearch(t,f.prepareSearch(this.search),e),this.table.offset=0}this.rows=t}subSearch(t,e,n){if(0===e.length||0===t.length)return t;const a=e.pop().replace(/\+/g," ").split(":"),r=[...n];return 2===a.length&&(n=r.filter(t=>-1!==t.name.toLowerCase().indexOf(a[0]))),t=this.basicDataSearch(i.last(a),t,n),this.subSearch(t,e,r)}basicDataSearch(t,e,n){return 0===t.length?e:e.filter(e=>n.filter(n=>{let a=i.get(e,n.prop);if(i.isUndefined(n.pipe)||(a=n.pipe.transform(a)),i.isUndefined(a)||i.isNull(a))return!1;if(i.isArray(a)?a=a.join(" "):(i.isNumber(a)||i.isBoolean(a))&&(a=a.toString()),i.isObjectLike(a)){if(!this.searchableObjects)return!1;a=JSON.stringify(a)}return-1!==a.toLowerCase().indexOf(t)}).length>0)}getRowClass(){return()=>({clickable:!i.isUndefined(this.selectionType)})}toggleExpandRow(t,e,n){n.stopPropagation(),e?(this.expanded=void 0,this.setExpandedRow.emit(void 0)):(this.expanded=t,this.table.rowDetail.collapseAllRows(),this.setExpandedRow.emit(t)),this.table.rowDetail.toggleExpandRow(t)}}},uNpg:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({selector:"tree-node-checkbox",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <input\n        class="tree-node-checkbox"\n        type="checkbox"\n        (click)="node.mouseAction(\'checkboxClick\', $event)"\n        [checked]="node.isSelected"\n        [indeterminate]="node.isPartiallySelected"\n      />\n    </ng-container>\n  '})],t)}()},uPDw:function(t,e,n){var a=n("oRml"),r=n("0nKi"),i=n("L0Z1"),s=i&&i.isTypedArray,u=s?r(s):a;t.exports=u},uXwI:function(t,e,n){!function(t){"use strict";var e={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(t,e,n){return n?e%10==1&&e%100!=11?t[2]:t[3]:e%10==1&&e%100!=11?t[0]:t[1]}function a(t,a,r){return t+" "+n(e[r],t,a)}function r(t,a,r){return n(e[r],t,a)}t.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(t,e){return e?"dažas sekundes":"dažām sekundēm"},ss:a,m:r,mm:a,h:r,hh:a,d:r,dd:a,M:r,MM:a,y:r,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uYzU:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(){}transform(t){switch(t){case"user:rbd":return"user:rbd (tcmu-runner)";default:return t}}}},ufoC:function(t,e,n){"use strict";var a=function(t){return t.auth="Login",t.cephfs="CephFS",t.rbd="RBD",t.pool="Pool",t.osd="OSD",t.role="Role",t.user="User",t}({}),r=n("jVDg"),i=n("8Y7J"),s=n("GiVz");n.d(e,"a",(function(){return l}));class u{constructor(t,e,n){this.running=t,this.failure=e,this.success=n}}class o{failure(t){return this.i18n("Failed to {{failure}} {{metadata}}",{failure:this.operation.failure,metadata:this.involves(t)})}running(t){return`${this.operation.running} ${this.involves(t)}`}success(t){return`${this.operation.success} ${this.involves(t)}`}constructor(t,e,n,a){this.i18n=t,this.operation=e,this.involves=n,this.errors=a||(()=>({}))}}let l=(()=>{class t{constructor(t){this.i18n=t,this.defaultMessage=this.newTaskMessage(new u(this.i18n("Executing"),this.i18n("execute"),this.i18n("Executed")),t=>t&&(a[t.component]||t.component)||this.i18n("unknown task"),()=>({})),this.commonOperations={create:new u(this.i18n("Creating"),this.i18n("create"),this.i18n("Created")),update:new u(this.i18n("Updating"),this.i18n("update"),this.i18n("Updated")),delete:new u(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),add:new u(this.i18n("Adding"),this.i18n("add"),this.i18n("Added")),remove:new u(this.i18n("Removing"),this.i18n("remove"),this.i18n("Removed")),import:new u(this.i18n("Importing"),this.i18n("import"),this.i18n("Imported"))},this.rbd={default:t=>this.i18n("RBD '{{id}}'",{id:""+t.image_spec}),create:t=>{const e=new r.a(t.pool_name,t.namespace,t.image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},child:t=>{const e=new r.a(t.child_pool_name,t.child_namespace,t.child_image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},destination:t=>{const e=new r.a(t.dest_pool_name,t.dest_namespace,t.dest_image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},snapshot:t=>this.i18n("RBD snapshot '{{id}}'",{id:`${t.image_spec}@${t.snapshot_name}`})},this.rbd_mirroring={site_name:()=>this.i18n("mirroring site name"),bootstrap:()=>this.i18n("bootstrap token"),pool:t=>this.i18n("mirror mode for pool '{{id}}'",{id:""+t.pool_name}),pool_peer:t=>this.i18n("mirror peer for pool '{{id}}'",{id:""+t.pool_name})},this.grafana={update_dashboards:()=>this.i18n("all dashboards")},this.messages={"host/create":this.newTaskMessage(this.commonOperations.create,t=>this.host(t)),"host/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.host(t)),"osd/create":this.newTaskMessage(this.commonOperations.create,t=>this.i18n("OSDs (DriveGroups: {{tracking_id}})",{tracking_id:t.tracking_id})),"osd/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.osd(t)),"pool/create":this.newTaskMessage(this.commonOperations.create,t=>this.pool(t),t=>({17:this.i18n("Name is already used by {{pool_name}}.",{pool_name:this.pool(t)})})),"pool/edit":this.newTaskMessage(this.commonOperations.update,t=>this.pool(t),t=>({17:this.i18n("Name is already used by {{pool_name}}.",{pool_name:this.pool(t)})})),"pool/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.pool(t)),"ecp/create":this.newTaskMessage(this.commonOperations.create,t=>this.ecp(t),t=>({17:this.i18n("Name is already used by {{name}}.",{name:this.ecp(t)})})),"ecp/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.ecp(t)),"crushRule/create":this.newTaskMessage(this.commonOperations.create,t=>this.crushRule(t),t=>({17:this.i18n("Name is already used by {{name}}.",{name:this.crushRule(t)})})),"crushRule/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.crushRule(t)),"rbd/create":this.newTaskMessage(this.commonOperations.create,this.rbd.create,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.create(t)})})),"rbd/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.default,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.default(t)})})),"rbd/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.default,t=>({16:this.i18n("{{rbd_name}} is busy.",{rbd_name:this.rbd.default(t)}),39:this.i18n("{{rbd_name}} contains snapshots.",{rbd_name:this.rbd.default(t)})})),"rbd/clone":this.newTaskMessage(new u(this.i18n("Cloning"),this.i18n("clone"),this.i18n("Cloned")),this.rbd.child,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.child(t)}),22:this.i18n("Snapshot of {{rbd_name}} must be protected.",{rbd_name:this.rbd.child(t)})})),"rbd/copy":this.newTaskMessage(new u(this.i18n("Copying"),this.i18n("copy"),this.i18n("Copied")),this.rbd.destination,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.destination(t)})})),"rbd/flatten":this.newTaskMessage(new u(this.i18n("Flattening"),this.i18n("flatten"),this.i18n("Flattened")),this.rbd.default),"rbd/snap/create":this.newTaskMessage(this.commonOperations.create,this.rbd.snapshot,t=>({17:this.i18n("Name is already used by {{snap_name}}.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.snapshot,t=>({16:this.i18n("Cannot unprotect {{snap_name}} because it contains child images.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.snapshot,t=>({16:this.i18n("Cannot delete {{snap_name}} because it's protected.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/rollback":this.newTaskMessage(new u(this.i18n("Rolling back"),this.i18n("rollback"),this.i18n("Rolled back")),this.rbd.snapshot),"rbd/trash/move":this.newTaskMessage(new u(this.i18n("Moving"),this.i18n("move"),this.i18n("Moved")),t=>this.i18n("image '{{id}}' to trash",{id:t.image_spec}),()=>({2:this.i18n("Could not find image.")})),"rbd/trash/restore":this.newTaskMessage(new u(this.i18n("Restoring"),this.i18n("restore"),this.i18n("Restored")),t=>this.i18n("image '{{id}}' into '{{new_id}}'",{id:t.image_id_spec,new_id:t.new_image_name}),t=>({17:this.i18n("Image name '{{id}}' is already in use.",{id:t.new_image_name})})),"rbd/trash/remove":this.newTaskMessage(new u(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),t=>this.i18n("image '{{id}}'",{id:""+t.image_id_spec})),"rbd/trash/purge":this.newTaskMessage(new u(this.i18n("Purging"),this.i18n("purge"),this.i18n("Purged")),t=>{let e=this.i18n("all pools");return t.pool_name&&(e=`'${t.pool_name}'`),this.i18n("images from {{message}}",{message:e})}),"rbd/mirroring/site_name/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.site_name,()=>({})),"rbd/mirroring/bootstrap/create":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/bootstrap/import":this.newTaskMessage(this.commonOperations.import,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/pool/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool,()=>({16:this.i18n("Cannot disable mirroring because it contains a peer.")})),"rbd/mirroring/peer/add":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd_mirroring.pool_peer,()=>({})),"iscsi/target/create":this.newTaskMessage(this.commonOperations.create,t=>this.iscsiTarget(t)),"iscsi/target/edit":this.newTaskMessage(this.commonOperations.update,t=>this.iscsiTarget(t)),"iscsi/target/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.iscsiTarget(t)),"nfs/create":this.newTaskMessage(this.commonOperations.create,t=>this.nfs(t)),"nfs/edit":this.newTaskMessage(this.commonOperations.update,t=>this.nfs(t)),"nfs/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.nfs(t)),"grafana/dashboards/update":this.newTaskMessage(this.commonOperations.update,this.grafana.update_dashboards,()=>({})),"orchestrator/identify_device":this.newTaskMessage(new u(this.i18n("Identifying"),this.i18n("identify"),this.i18n("Identified")),t=>this.i18n("device '{{device}}' on host '{{hostname}}'",t)),"service/create":this.newTaskMessage(this.commonOperations.create,t=>this.service(t)),"service/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.service(t))}}newTaskMessage(t,e,n){return new o(this.i18n,t,e,n)}host(t){return this.i18n("host '{{hostname}}'",{hostname:t.hostname})}osd(t){return this.i18n("OSD '{{svc_id}}'",{svc_id:t.svc_id})}pool(t){return this.i18n("pool '{{pool_name}}'",{pool_name:t.pool_name})}ecp(t){return this.i18n("erasure code profile '{{name}}'",{name:t.name})}crushRule(t){return this.i18n("crush rule '{{name}}'",{name:t.name})}iscsiTarget(t){return this.i18n("target '{{target_iqn}}'",{target_iqn:t.target_iqn})}nfs(t){return this.i18n("NFS {{nfs_id}}",{nfs_id:`'${t.cluster_id}:${t.export_id?t.export_id:t.path}'`})}service(t){return this.i18n("Service '{{service_name}}'",{service_name:t.service_name})}_getTaskTitle(t){return t.name&&t.name.startsWith("progress/")?this.newTaskMessage(new u(t.name.replace("progress/",""),"",t.name.replace("progress/","")),t=>""):this.messages[t.name]||this.defaultMessage}getSuccessTitle(t){return this._getTaskTitle(t).success(t.metadata)}getErrorMessage(t){return this._getTaskTitle(t).errors(t.metadata)[t.exception.code]||t.exception.detail}getErrorTitle(t){return this._getTaskTitle(t).failure(t.metadata)}getRunningTitle(t){return this._getTaskTitle(t).running(t.metadata)}getRunningText(t){return this._getTaskTitle(t).operation.running}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.a))},token:t,providedIn:"root"}),t})()},uy3s:function(t,e,n){var a=n("+GvH"),r=n("x3F9");t.exports=function t(e,n,i,s,u){return e===n||(null==e||null==n||!r(e)&&!r(n)?e!=e&&n!=n:a(e,n,i,s,t,u))}},uy83:function(t,e,n){var a=n("0Dky");t.exports=!a((function(){return Object.isExtensible(Object.preventExtensions({}))}))},uyHG:function(t,e){var n,a=/^\[object .+?Constructor\]$/,r="object"==typeof global&&global&&global.Object===Object&&global,i="object"==typeof self&&self&&self.Object===Object&&self,s=r||i||Function("return this")(),u=Array.prototype,o=Function.prototype,l=Object.prototype,d=s["__core-js_shared__"],c=(n=/[^.]+$/.exec(d&&d.keys&&d.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",f=o.toString,h=l.hasOwnProperty,g=l.toString,p=RegExp("^"+f.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),b=u.splice,m=O(s,"Map"),y=O(Object,"create");function v(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function x(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function _(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function T(t,e){for(var n,a,r=t.length;r--;)if((n=t[r][0])===(a=e)||n!=n&&a!=a)return r;return-1}function w(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function O(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return function(t){return!(!I(t)||(e=t,c&&c in e))&&(function(t){var e=I(t)?g.call(t):"";return"[object Function]"==e||"[object GeneratorFunction]"==e}(t)||function(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(n){}return e}(t)?p:a).test(function(t){if(null!=t){try{return f.call(t)}catch(e){}try{return t+""}catch(e){}}return""}(t));var e}(n)?n:void 0}function S(t,e){if("function"!=typeof t||e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s),s};return n.cache=new(S.Cache||_),n}function I(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}v.prototype.clear=function(){this.__data__=y?y(null):{}},v.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},v.prototype.get=function(t){var e=this.__data__;if(y){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return h.call(e,t)?e[t]:void 0},v.prototype.has=function(t){var e=this.__data__;return y?void 0!==e[t]:h.call(e,t)},v.prototype.set=function(t,e){return this.__data__[t]=y&&void 0===e?"__lodash_hash_undefined__":e,this},x.prototype.clear=function(){this.__data__=[]},x.prototype.delete=function(t){var e=this.__data__,n=T(e,t);return!(n<0||(n==e.length-1?e.pop():b.call(e,n,1),0))},x.prototype.get=function(t){var e=this.__data__,n=T(e,t);return n<0?void 0:e[n][1]},x.prototype.has=function(t){return T(this.__data__,t)>-1},x.prototype.set=function(t,e){var n=this.__data__,a=T(n,t);return a<0?n.push([t,e]):n[a][1]=e,this},_.prototype.clear=function(){this.__data__={hash:new v,map:new(m||x),string:new v}},_.prototype.delete=function(t){return w(this,t).delete(t)},_.prototype.get=function(t){return w(this,t).get(t)},_.prototype.has=function(t){return w(this,t).has(t)},_.prototype.set=function(t,e){return w(this,t).set(t,e),this},S.Cache=_,t.exports=S},vCyI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this._selected=[],t&&(this._selected=t),this.update()}update(){this.hasSelection=this._selected.length>0,this.hasSingleSelection=1===this._selected.length,this.hasMultiSelection=this._selected.length>1}set selected(t){this._selected=t,this.update()}get selected(){return this._selected}add(t){this._selected.push(t),this.update()}first(){return this.hasSelection?this._selected[0]:null}}},vDHD:function(t,e,n){var a=n("aT2Y");t.exports=function(){this.__data__=new a,this.size=0}},vIot:function(t,e){t.exports=function(t){return t!=t}},vJUC:function(t,e){t.exports=function(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}},vkgz:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("KqfI"),i=n("n6bG");function s(t,e,n){return function(a){return a.lift(new u(t,e,n))}}class u{constructor(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}call(t,e){return e.subscribe(new o(t,this.nextOrObserver,this.error,this.complete))}}class o extends a.a{constructor(t,e,n,a){super(t),this._tapNext=r.a,this._tapError=r.a,this._tapComplete=r.a,this._tapError=n||r.a,this._tapComplete=a||r.a,Object(i.a)(e)?(this._context=this,this._tapNext=e):e&&(this._context=e,this._tapNext=e.next||r.a,this._tapError=e.error||r.a,this._tapComplete=e.complete||r.a)}_next(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)}_error(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)}_complete(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()}}},"w/8D":function(t,e,n){var a=n("KFwg"),r=function(){try{var t=a(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();t.exports=r},w4fU:function(t,e,n){var a=n("pMcL"),r=n("XhiP"),i=n("JEWA"),s=n("ezUo"),u=n("s4/e"),o=n("cRL0"),l=a?a.prototype:void 0,d=l?l.valueOf:void 0;t.exports=function(t,e,n,a,l,c,f){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!c(new r(t),new r(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var h=u;case"[object Set]":if(h||(h=o),t.size!=e.size&&!(1&a))return!1;var g=f.get(t);if(g)return g==e;a|=2,f.set(t,e);var p=s(h(t),h(e),a,l,c,f);return f.delete(t),p;case"[object Symbol]":if(d)return d.call(t)==d.call(e)}return!1}},w9WL:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("XNiG"),i=n("xgIS"),s=n("2Vo4"),u=n("l7GE"),o=n("ZUHj");function l(t){return e=>e.lift(new d(t))}class d{constructor(t){this.notifier=t}call(t,e){const n=new c(t),a=Object(o.a)(n,this.notifier);return a&&!n.seenValue?(n.add(a),e.subscribe(n)):n}}class c extends u.a{constructor(t){super(t),this.seenValue=!1}notifyNext(t,e,n,a,r){this.seenValue=!0,this.complete()}notifyComplete(){}}var f=n("mrSG");n.d(e,"a",(function(){return p})),n.d(e,"b",(function(){return pt})),n.d(e,"c",(function(){return tt})),n.d(e,"d",(function(){return ht})),n.d(e,"e",(function(){return D})),n.d(e,"f",(function(){return lt})),n.d(e,"g",(function(){return b})),n.d(e,"h",(function(){return ot})),n.d(e,"i",(function(){return et})),n.d(e,"j",(function(){return dt})),n.d(e,"k",(function(){return gt})),n.d(e,"l",(function(){return mt})),n.d(e,"m",(function(){return xt})),n.d(e,"n",(function(){return ut})),n.d(e,"o",(function(){return q})),n.d(e,"p",(function(){return M})),n.d(e,"q",(function(){return P})),n.d(e,"r",(function(){return g})),n.d(e,"s",(function(){return y})),n.d(e,"t",(function(){return _})),n.d(e,"u",(function(){return _t})),n.d(e,"v",(function(){return x})),n.d(e,"w",(function(){return ct})),n.d(e,"x",(function(){return v})),n.d(e,"y",(function(){return h})),n.d(e,"z",(function(){return T})),n.d(e,"A",(function(){return it})),n.d(e,"B",(function(){return m})),n.d(e,"C",(function(){return O}));class h{constructor(t){this.document=t,this.width=this.getWidth()}getWidth(){const t=this.document.createElement("div");t.style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",this.document.body.appendChild(t);const e=t.offsetWidth;t.style.overflow="scroll";const n=this.document.createElement("div");n.style.width="100%",t.appendChild(n);const a=n.offsetWidth;return t.parentNode.removeChild(t),e-a}}class g{getDimensions(t){return t.getBoundingClientRect()}}class p{constructor(){this.columnInputChanges=new r.a}get columnInputChanges$(){return this.columnInputChanges.asObservable()}onInputChange(){this.columnInputChanges.next()}}class b{constructor(t){this.template=t}}class m{constructor(t,e){this.element=t,this.zone=e,this.isVisible=!1,this.visible=new a.EventEmitter}ngOnInit(){this.runCheck()}ngOnDestroy(){clearTimeout(this.timeout)}onVisibilityChange(){this.zone.run(()=>{this.isVisible=!0,this.visible.emit(!0)})}runCheck(){const t=()=>{const{offsetHeight:e,offsetWidth:n}=this.element.nativeElement;e&&n?(clearTimeout(this.timeout),this.onVisibilityChange()):(clearTimeout(this.timeout),this.zone.runOutsideAngular(()=>{this.timeout=setTimeout(()=>t(),50)}))};this.timeout=setTimeout(()=>t())}}class y{constructor(t){this.dragX=!0,this.dragY=!0,this.dragStart=new a.EventEmitter,this.dragging=new a.EventEmitter,this.dragEnd=new a.EventEmitter,this.isDragging=!1,this.element=t.nativeElement}ngOnChanges(t){t.dragEventTarget&&t.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(t.dragEventTarget.currentValue)}ngOnDestroy(){this._destroySubscription()}onMouseup(t){this.isDragging&&(this.isDragging=!1,this.element.classList.remove("dragging"),this.subscription&&(this._destroySubscription(),this.dragEnd.emit({event:t,element:this.element,model:this.dragModel})))}onMousedown(t){if(t.target.classList.contains("draggable")&&(this.dragX||this.dragY)){t.preventDefault(),this.isDragging=!0;const e={x:t.clientX,y:t.clientY},n=Object(i.a)(document,"mouseup");this.subscription=n.subscribe(t=>this.onMouseup(t));const a=Object(i.a)(document,"mousemove").pipe(l(n)).subscribe(t=>this.move(t,e));this.subscription.add(a),this.dragStart.emit({event:t,element:this.element,model:this.dragModel})}}move(t,e){if(!this.isDragging)return;const n=t.clientY-e.y;this.dragX&&(this.element.style.left=t.clientX-e.x+"px"),this.dragY&&(this.element.style.top=n+"px"),this.element.classList.add("dragging"),this.dragging.emit({event:t,element:this.element,model:this.dragModel})}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}"undefined"!=typeof window&&window||global,"undefined"!=typeof window&&window||global,"undefined"!=typeof window&&window||global;class v{constructor(t,e){this.renderer=e,this.resizeEnabled=!0,this.resize=new a.EventEmitter,this.resizing=!1,this.element=t.nativeElement}ngAfterViewInit(){const t=this.renderer;this.resizeHandle=t.createElement("span"),t.addClass(this.resizeHandle,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),t.appendChild(this.element,this.resizeHandle)}ngOnDestroy(){this._destroySubscription(),this.renderer.destroyNode?this.renderer.destroyNode(this.resizeHandle):this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle),this.resizeHandle)}onMouseup(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))}onMousedown(t){const e=t.target.classList.contains("resize-handle"),n=this.element.clientWidth,a=t.screenX;if(e){t.stopPropagation(),this.resizing=!0;const e=Object(i.a)(document,"mouseup");this.subscription=e.subscribe(t=>this.onMouseup());const r=Object(i.a)(document,"mousemove").pipe(l(e)).subscribe(t=>this.move(t,n,a));this.subscription.add(r)}}move(t,e,n){const a=e+(t.screenX-n);(!this.minWidth||a>=this.minWidth)&&(!this.maxWidth||a<=this.maxWidth)&&(this.element.style.width=a+"px")}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}class x{constructor(t,e){this.document=e,this.reorder=new a.EventEmitter,this.targetChanged=new a.EventEmitter,this.differ=t.find({}).create()}ngAfterContentInit(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))}ngOnDestroy(){this.draggables.forEach(t=>{t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe()})}updateSubscriptions(){const t=this.differ.diff(this.createMapDiffs());if(t){const e=({currentValue:t,previousValue:e})=>{n({previousValue:e}),t&&(t.dragStart.subscribe(this.onDragStart.bind(this)),t.dragging.subscribe(this.onDragging.bind(this)),t.dragEnd.subscribe(this.onDragEnd.bind(this)))},n=({previousValue:t})=>{t&&(t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe())};t.forEachAddedItem(e),t.forEachRemovedItem(n)}}onDragStart(){this.positions={};let t=0;for(const e of this.draggables.toArray()){const n=e.element,a=parseInt(n.offsetLeft.toString(),0);this.positions[e.dragModel.prop]={left:a,right:a+parseInt(n.offsetWidth.toString(),0),index:t++,element:n}}}onDragging({model:t,event:e}){const n=this.positions[t.prop],a=this.isTarget(t,e);a?this.lastDraggingIndex!==a.i&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,newIndex:a.i,initialIndex:n.index}),this.lastDraggingIndex=a.i):this.lastDraggingIndex!==n.index&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,initialIndex:n.index}),this.lastDraggingIndex=n.index)}onDragEnd({element:t,model:e,event:n}){const a=this.positions[e.prop],r=this.isTarget(e,n);r&&this.reorder.emit({prevIndex:a.index,newIndex:r.i,model:e}),this.lastDraggingIndex=void 0,t.style.left="auto"}isTarget(t,e){let n=0;const a=this.document.elementsFromPoint(e.x||e.clientX,e.y||e.clientY);for(const r in this.positions){const e=this.positions[r];if(t.prop!==r&&a.find(t=>t===e.element))return{pos:e,i:n};n++}}createMapDiffs(){return this.draggables.toArray().reduce((t,e)=>(t[e.dragModel.$$id]=e,t),{})}}class _{constructor(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new a.EventEmitter,this.longPressing=new a.EventEmitter,this.longPressEnd=new a.EventEmitter,this.mouseX=0,this.mouseY=0}get press(){return this.pressing}get isLongPress(){return this.isLongPressing}onMouseDown(t){if(1!==t.which||!this.pressEnabled)return;if(t.target.classList.contains("resize-handle"))return;this.mouseX=t.clientX,this.mouseY=t.clientY,this.pressing=!0,this.isLongPressing=!1;const e=Object(i.a)(document,"mouseup");this.subscription=e.subscribe(t=>this.onMouseup()),this.timeout=setTimeout(()=>{this.isLongPressing=!0,this.longPressStart.emit({event:t,model:this.pressModel}),this.subscription.add(Object(i.a)(document,"mousemove").pipe(l(e)).subscribe(t=>this.onMouseMove(t))),this.loop(t)},this.duration),this.loop(t)}onMouseMove(t){if(this.pressing&&!this.isLongPressing){const e=Math.abs(t.clientX-this.mouseX)>10,n=Math.abs(t.clientY-this.mouseY)>10;(e||n)&&this.endPress()}}loop(t){this.isLongPressing&&(this.timeout=setTimeout(()=>{this.longPressing.emit({event:t,model:this.pressModel}),this.loop(t)},50))}endPress(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})}onMouseup(){this.endPress()}ngOnDestroy(){this._destroySubscription()}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}class T{constructor(t,e,n){this.ngZone=t,this.renderer=n,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new a.EventEmitter,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this._scrollEventListener=null,this.element=e.nativeElement}ngOnInit(){if(this.scrollbarV||this.scrollbarH){const t=this.renderer;this.parentElement=t.parentNode(t.parentNode(this.element)),this._scrollEventListener=this.onScrolled.bind(this),this.parentElement.addEventListener("scroll",this._scrollEventListener)}}ngOnDestroy(){this._scrollEventListener&&(this.parentElement.removeEventListener("scroll",this._scrollEventListener),this._scrollEventListener=null)}setOffset(t){this.parentElement&&(this.parentElement.scrollTop=t)}onScrolled(t){const e=t.currentTarget;requestAnimationFrame(()=>{this.scrollYPos=e.scrollTop,this.scrollXPos=e.scrollLeft,this.updateOffset()})}updateOffset(){let t;this.scrollYPos<this.prevScrollYPos?t="down":this.scrollYPos>this.prevScrollYPos&&(t="up"),this.scroll.emit({direction:t,scrollYPos:this.scrollYPos,scrollXPos:this.scrollXPos}),this.prevScrollYPos=this.scrollYPos,this.prevScrollXPos=this.scrollXPos}}function w(){return""}function O(t){return null==t?w:"number"==typeof t?S:-1!==t.indexOf(".")?N:I}function S(t,e){if(null==t)return"";if(!t||null==e)return t;const n=t[e];return null==n?"":n}function I(t,e){if(null==t)return"";if(!t||!e)return t;const n=t[e];return null==n?"":n}function N(t,e){if(null==t)return"";if(!t||!e)return t;let n=t[e];if(void 0!==n)return n;n=t;const a=e.split(".");if(a.length)for(let r=0;r<a.length;r++)if(n=n[a[r]],null==n)return"";return n}function C(t){return t&&(e=>O(t)(e,t))}function R(t,e,n){if(e&&n){const a={},r=t.length;let i=null;a[0]=new A;const s=t.reduce((t,e)=>{const a=n(e);return-1===t.indexOf(a)&&t.push(a),t},[]);for(let e=0;e<r;e++)a[n(t[e])]=new A(t[e]);for(let o=0;o<r;o++){i=a[n(t[o])];let r=0;const u=e(i.row);u&&s.indexOf(u)>-1&&(r=u),i.parent=a[r],i.row.level=i.parent.row.level+1,i.parent.children.push(i)}let u=[];return a[0].flatten((function(){u=[...u,this.row]}),!0),u}return t}class A{constructor(t=null){t||(t={level:-1,treeStatus:"expanded"}),this.row=t,this.parent=null,this.children=[]}flatten(t,e){if("expanded"===this.row.treeStatus)for(let n=0,a=this.children.length;n<a;n++){const a=this.children[n];t.apply(a,Array.prototype.slice.call(arguments,2)),e&&a.flatten.apply(a,arguments)}}}function k(t){return(t=(t=(t=t.replace(/[^a-zA-Z0-9 ]/g," ")).replace(/([a-z](?=[A-Z]))/g,"$1 ")).replace(/([^a-zA-Z0-9 ])|^[0-9]+/g,"").trim().toLowerCase()).replace(/([ 0-9]+)([a-zA-Z])/g,(function(t,e,n){return e.trim()+n.toUpperCase()}))}function E(t){if(!t)return;let e=!1;for(const n of t)n.$$id||(n.$$id=("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)),L(n.prop)&&n.name&&(n.prop=k(n.name)),n.$$valueGetter||(n.$$valueGetter=O(n.prop)),!L(n.prop)&&L(n.name)&&(n.name=String(n.prop).replace(/([A-Z])/g,t=>" "+t).replace(/^./,t=>t.toUpperCase())),L(n.prop)&&L(n.name)&&(n.name=""),n.hasOwnProperty("resizeable")||(n.resizeable=!0),n.hasOwnProperty("sortable")||(n.sortable=!0),n.hasOwnProperty("draggable")||(n.draggable=!0),n.hasOwnProperty("canAutoResize")||(n.canAutoResize=!0),n.hasOwnProperty("width")||(n.width=150),n.hasOwnProperty("isTreeColumn")&&n.isTreeColumn&&!e?e=!0:n.isTreeColumn=!1}function L(t){return null==t}class D{constructor(t){this.template=t}}class P{constructor(t){this.template=t}}class M{constructor(){this.rowHeight=0,this.toggle=new a.EventEmitter}get template(){return this._templateInput||this._templateQuery}toggleExpandRow(t){this.toggle.emit({type:"row",value:t})}expandAllRows(){this.toggle.emit({type:"all",value:!0})}collapseAllRows(){this.toggle.emit({type:"all",value:!1})}}class q{get template(){return this._templateInput||this._templateQuery}}function j(t){const e={left:[],center:[],right:[]};if(t)for(const n of t)n.frozenLeft?e.left.push(n):n.frozenRight?e.right.push(n):e.center.push(n);return e}function F(t,e){return{left:V(t.left),center:V(t.center),right:V(t.right),total:Math.floor(V(e))}}function V(t,e){let n=0;if(t)for(const a of t)n+=parseFloat(e&&a[e]?a[e]:a.width);return n}function G(t){const e=[],n=j(t);return e.push({type:"left",columns:n.left}),e.push({type:"center",columns:n.center}),e.push({type:"right",columns:n.right}),e}class B{constructor(){this.treeArray=[]}clearCache(){this.treeArray=[]}initCache(t){const{rows:e,rowHeight:n,detailRowHeight:a,externalVirtual:r,rowCount:i,rowIndexes:s,rowExpansions:u}=t,o="function"==typeof n,l="function"==typeof a;if(!o&&isNaN(n))throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n        valid number or function value: (${n}) when 'scrollbarV' is enabled.`);if(!l&&isNaN(a))throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n        valid number or function value: (${a}) when 'scrollbarV' is enabled.`);const d=r?i:e.length;this.treeArray=new Array(d);for(let c=0;c<d;++c)this.treeArray[c]=0;for(let c=0;c<d;++c){const t=e[c];let r=n;o&&(r=n(t));const i=u.has(t);t&&i&&(r+=l?a(t,s.get(t)):a),this.update(c,r)}}getRowIndex(t){return 0===t?0:this.calcRowIndex(t)}update(t,e){if(!this.treeArray.length)throw new Error(`Update at index ${t} with value ${e} failed:\n        Row Height cache not initialized.`);const n=this.treeArray.length;for(t|=0;t<n;)this.treeArray[t]+=e,t|=t+1}query(t){if(!this.treeArray.length)throw new Error(`query at index ${t} failed: Fenwick tree array not initialized.`);let e=0;for(t|=0;t>=0;)e+=this.treeArray[t],t=(t&t+1)-1;return e}queryBetween(t,e){return this.query(e)-this.query(t-1)}calcRowIndex(t){if(!this.treeArray.length)return 0;let e=-1;const n=this.treeArray.length;for(let a=Math.pow(2,n.toString(2).length-1);0!==a;a>>=1){const r=e+a;r<n&&t>=this.treeArray[r]&&(t-=this.treeArray[r],e=r)}return e+1}}const z={},Y="undefined"!=typeof document?document.createElement("div").style:void 0,H=function(){const t="undefined"!=typeof window?window.getComputedStyle(document.documentElement,""):void 0,e=void 0!==t?Array.prototype.slice.call(t).join("").match(/-(moz|webkit|ms)-/):null,n=null!==e?e[1]:void 0,a=void 0!==n?"WebKit|Moz|MS|O".match(new RegExp("("+n+")","i"))[1]:void 0;return a?{dom:a,lowercase:n,css:`-${n}-`,js:n[0].toUpperCase()+n.substr(1)}:void 0}();function U(t){const e=k(t);return z[e]||(void 0!==H&&void 0!==Y[H.css+t]?z[e]=H.css+t:void 0!==Y[t]&&(z[e]=t)),z[e]}const W="undefined"!=typeof window?U("transform"):void 0,K="undefined"!=typeof window?U("backfaceVisibility"):void 0,$="undefined"!=typeof window?!!U("transform"):void 0,J="undefined"!=typeof window?!!U("perspective"):void 0,Z="undefined"!=typeof window?window.navigator.userAgent:"Chrome",Q=/Safari\//.test(Z)&&!/Chrome\//.test(Z);function X(t,e,n){void 0!==W&&$?!Q&&J?(t[W]=`translate3d(${e}px, ${n}px, 0)`,t[K]="hidden"):t[k(W)]=`translate(${e}px, ${n}px)`:(t.top=n+"px",t.left=e+"px")}class tt{constructor(t){this.cd=t,this.selected=[],this.scroll=new a.EventEmitter,this.page=new a.EventEmitter,this.activate=new a.EventEmitter,this.select=new a.EventEmitter,this.detailToggle=new a.EventEmitter,this.rowContextmenu=new a.EventEmitter(!1),this.treeAction=new a.EventEmitter,this.rowHeightsCache=new B,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new Map,this.rowExpansions=[],this.getDetailRowHeight=(t,e)=>{if(!this.rowDetail)return 0;const n=this.rowDetail.rowHeight;return"function"==typeof n?n(t,e):n},this.rowTrackingFn=(t,e)=>{const n=this.getRowIndex(e);return this.trackByProp?e[this.trackByProp]:n}}set pageSize(t){this._pageSize=t,this.recalcLayout()}get pageSize(){return this._pageSize}set rows(t){this._rows=t,this.recalcLayout()}get rows(){return this._rows}set columns(t){this._columns=t;const e=j(t);this.columnGroupWidths=F(e,t)}get columns(){return this._columns}set offset(t){this._offset=t,(!this.scrollbarV||this.scrollbarV&&!this.virtualization)&&this.recalcLayout()}get offset(){return this._offset}set rowCount(t){this._rowCount=t,this.recalcLayout()}get rowCount(){return this._rowCount}get bodyWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}set bodyHeight(t){this._bodyHeight=this.scrollbarV?t+"px":"auto",this.recalcLayout()}get bodyHeight(){return this._bodyHeight}get selectEnabled(){return!!this.selectionType}get scrollHeight(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)}ngOnInit(){this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(({type:t,value:e})=>{"row"===t&&this.toggleRowExpansion(e),"all"===t&&this.toggleAllRows(e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(({type:t,value:e})=>{"group"===t&&this.toggleRowExpansion(e),"all"===t&&this.toggleAllRows(e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()}))}ngOnDestroy(){(this.rowDetail||this.groupHeader)&&this.listener.unsubscribe()}updateOffsetY(t){this.scroller&&(this.scrollbarV&&this.virtualization&&t?t=this.rowHeightsCache.query(this.pageSize*t-1):this.scrollbarV&&!this.virtualization&&(t=0),this.scroller.setOffset(t||0))}onBodyScroll(t){const e=t.scrollYPos,n=t.scrollXPos;this.offsetY===e&&this.offsetX===n||this.scroll.emit({offsetY:e,offsetX:n}),this.offsetY=e,this.offsetX=n,this.updateIndexes(),this.updatePage(t.direction),this.updateRows()}updatePage(t){let e=this.indexes.first/this.pageSize;"up"===t?e=Math.ceil(e):"down"===t&&(e=Math.floor(e)),void 0===t||isNaN(e)||this.page.emit({offset:e})}updateRows(){const{first:t,last:e}=this.indexes;let n=t,a=0;const r=[];if(this.rowIndexes.clear(),this.groupedRows){let t=3;for(1===this.groupedRows.length&&(t=this.groupedRows[0].value.length);n<e&&n<this.groupedRows.length;)r[a]=this.groupedRows[n],a++,n++}else for(;n<e&&n<this.rowCount;){const t=this.rows[n];t&&(this.rowIndexes.set(t,n),r[a]=t),a++,n++}this.temp=r}getRowHeight(t){return"function"==typeof this.rowHeight?this.rowHeight(t):this.rowHeight}getGroupHeight(t){let e=0;if(t.value)for(let n=0;n<t.value.length;n++)e+=this.getRowAndDetailHeight(t.value[n]);return e}getRowAndDetailHeight(t){let e=this.getRowHeight(t);return this.getRowExpanded(t)&&(e+=this.getDetailRowHeight(t)),e}getRowsStyles(t){const e={};if(this.groupedRows&&(e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){let n=0;if(this.groupedRows){const e=t[t.length-1];n=e?this.getRowIndex(e):0}else n=this.getRowIndex(t);X(e,0,this.rowHeightsCache.query(n-1))}return e}getBottomSummaryRowStyles(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;const t={position:"absolute"};return X(t,0,this.rowHeightsCache.query(this.rows.length-1)),t}hideIndicator(){setTimeout(()=>this.loadingIndicator=!1,500)}updateIndexes(){let t=0,e=0;if(this.scrollbarV)if(this.virtualization){const n=parseInt(this.bodyHeight,0);t=this.rowHeightsCache.getRowIndex(this.offsetY),e=this.rowHeightsCache.getRowIndex(n+this.offsetY)+1}else t=0,e=this.rowCount;else this.externalPaging||(t=Math.max(this.offset*this.pageSize,0)),e=Math.min(t+this.pageSize,this.rowCount);this.indexes={first:t,last:e}}refreshRowHeightCache(){if(this.scrollbarV&&(!this.scrollbarV||this.virtualization)&&(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length)){const t=new Set;for(const e of this.rows)this.getRowExpanded(e)&&t.add(e);this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:t})}}getAdjustedViewPortIndex(){const t=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(t-1)<=this.offsetY?t-1:t}toggleRowExpansion(t){const e=this.getAdjustedViewPortIndex(),n=this.getRowExpandedIdx(t,this.rowExpansions),a=n>-1;if(this.scrollbarV&&this.virtualization){const e=this.getDetailRowHeight(t)*(a?-1:1),n=this.getRowIndex(t);this.rowHeightsCache.update(n,e)}a?this.rowExpansions.splice(n,1):this.rowExpansions.push(t),this.detailToggle.emit({rows:[t],currentIndex:e})}toggleAllRows(t){this.rowExpansions=[];const e=this.getAdjustedViewPortIndex();if(t)for(const n of this.rows)this.rowExpansions.push(n);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:e})}recalcLayout(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()}columnTrackingFn(t,e){return e.$$id}stylesByGroup(t){const e=this.columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)X(a,n,0);else if("right"===t){const t=parseInt(this.innerWidth+"",0);X(a,-1*(e.total-t-n),0)}return a}getRowExpanded(t){if(0===this.rowExpansions.length&&this.groupExpansionDefault)for(const e of this.groupedRows)this.rowExpansions.push(e);return this.getRowExpandedIdx(t,this.rowExpansions)>-1}getRowExpandedIdx(t,e){if(!e||!e.length)return-1;const n=this.rowIdentity(t);return e.findIndex(t=>this.rowIdentity(t)===n)}getRowIndex(t){return this.rowIndexes.get(t)||0}onTreeAction(t){this.treeAction.emit({row:t})}}class et{constructor(t){this.cd=t,this.sort=new a.EventEmitter,this.reorder=new a.EventEmitter,this.resize=new a.EventEmitter,this.select=new a.EventEmitter,this.columnContextmenu=new a.EventEmitter(!1),this._columnGroupWidths={total:100},this._styleByGroup={left:{},center:{},right:{}},this.destroyed=!1}set innerWidth(t){this._innerWidth=t,setTimeout(()=>{if(this._columns){const t=j(this._columns);this._columnGroupWidths=F(t,this._columns),this.setStylesByGroup()}})}get innerWidth(){return this._innerWidth}set headerHeight(t){this._headerHeight="auto"!==t?t+"px":t}get headerHeight(){return this._headerHeight}set columns(t){this._columns=t;const e=j(t);this._columnsByPin=G(t),setTimeout(()=>{this._columnGroupWidths=F(e,t),this.setStylesByGroup()})}get columns(){return this._columns}set offsetX(t){this._offsetX=t,this.setStylesByGroup()}get offsetX(){return this._offsetX}ngOnDestroy(){this.destroyed=!0}onLongPressStart({event:t,model:e}){e.dragging=!0,this.dragEventTarget=t}onLongPressEnd({event:t,model:e}){this.dragEventTarget=t,setTimeout(()=>{const t=this._columns.find(t=>t.$$id===e.$$id);t&&(t.dragging=!1)},5)}get headerWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}trackByGroups(t,e){return e.type}columnTrackingFn(t,e){return e.$$id}onColumnResized(t,e){t<=e.minWidth?t=e.minWidth:t>=e.maxWidth&&(t=e.maxWidth),this.resize.emit({column:e,prevValue:e.width,newValue:t})}onColumnReordered({prevIndex:t,newIndex:e,model:n}){const a=this.getColumn(e);a.isTarget=!1,a.targetMarkerContext=void 0,this.reorder.emit({column:n,prevValue:t,newValue:e})}onTargetChanged({prevIndex:t,newIndex:e,initialIndex:n}){if(t||0===t){const e=this.getColumn(t);e.isTarget=!1,e.targetMarkerContext=void 0}if(e||0===e){const t=this.getColumn(e);t.isTarget=!0,n!==e&&(t.targetMarkerContext={class:"targetMarker ".concat(n>e?"dragFromRight":"dragFromLeft")})}}getColumn(t){const e=this._columnsByPin[0].columns.length;if(t<e)return this._columnsByPin[0].columns[t];const n=this._columnsByPin[1].columns.length;return t<e+n?this._columnsByPin[1].columns[t-e]:this._columnsByPin[2].columns[t-e-n]}onSort({column:t,prevValue:e,newValue:n}){if(t.dragging)return;const a=this.calcNewSorts(t,e,n);this.sort.emit({sorts:a,column:t,prevValue:e,newValue:n})}calcNewSorts(t,e,n){let a=0;this.sorts||(this.sorts=[]);const r=this.sorts.map((e,n)=>((e=Object.assign({},e)).prop===t.prop&&(a=n),e));return void 0===n?r.splice(a,1):e?r[a].dir=n:("single"===this.sortType&&r.splice(0,this.sorts.length),r.push({dir:n,prop:t.prop})),r}setStylesByGroup(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.destroyed||this.cd.detectChanges()}calcStylesByGroup(t){const e=this._columnGroupWidths,n={width:e[t]+"px"};return"center"===t?X(n,-1*this.offsetX,0):"right"===t&&X(n,-1*(e.total-this.innerWidth),0),n}}function nt(t,e,n){let a,r,i;n=n||{};let s=null,u=0;function o(){u=!1===n.leading?0:+new Date,s=null,i=t.apply(a,r)}return function(){const l=+new Date;u||!1!==n.leading||(u=l);const d=e-(l-u);return a=this,r=arguments,d<=0?(clearTimeout(s),s=null,u=l,i=t.apply(a,r)):s||!1===n.trailing||(s=setTimeout(o,d)),i}}function at(t,e){for(const n of e){const e=t.indexOf(n);t.splice(e,1)}}function rt(t,e=300){let n=0;for(const a of t)n+=a.width||e;return n}const it={asc:"asc",desc:"desc"};function st(t,e){if(null==t&&(t=0),null==e&&(e=0),t instanceof Date&&e instanceof Date){if(t<e)return-1;if(t>e)return 1}else if(isNaN(parseFloat(t))||!isFinite(t)||isNaN(parseFloat(e))||!isFinite(e)){if(t=String(t),e=String(e),t.toLowerCase()<e.toLowerCase())return-1;if(t.toLowerCase()>e.toLowerCase())return 1}else{if(parseFloat(t)<parseFloat(e))return-1;if(parseFloat(t)>parseFloat(e))return 1}return 0}let ut=(()=>{class t{constructor(t,e,n,r,i,u,o){this.scrollbarHelper=t,this.dimensionsHelper=e,this.cd=n,this.columnChangesService=u,this.configuration=o,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode="standard",this.headerHeight=30,this.footerHeight=0,this.externalPaging=!1,this.externalSorting=!1,this.loadingIndicator=!1,this.reorderable=!0,this.swapColumns=!0,this.sortType="single",this.sorts=[],this.cssClasses={sortAscending:"datatable-icon-up",sortDescending:"datatable-icon-down",pagerLeftArrow:"datatable-icon-left",pagerRightArrow:"datatable-icon-right",pagerPrevious:"datatable-icon-prev",pagerNext:"datatable-icon-skip"},this.messages={emptyMessage:"No data to display",totalMessage:"total",selectedMessage:"selected"},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new a.EventEmitter,this.activate=new a.EventEmitter,this.select=new a.EventEmitter,this.sort=new a.EventEmitter,this.page=new a.EventEmitter,this.reorder=new a.EventEmitter,this.resize=new a.EventEmitter,this.tableContextmenu=new a.EventEmitter(!1),this.treeAction=new a.EventEmitter,this.rowCount=0,this._offsetX=new s.a(0),this._count=0,this._offset=0,this._subscriptions=[],this.rowIdentity=t=>this._groupRowsBy?t.key:t,this.element=r.nativeElement,this.rowDiffer=i.find({}).create(),this.configuration&&this.configuration.messages&&(this.messages=Object.assign({},this.configuration.messages))}set rows(t){this._rows=t,t&&(this._internalRows=[...t]),this.externalSorting||this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()}get rows(){return this._rows}set groupRowsBy(t){t&&(this._groupRowsBy=t,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))}get groupRowsBy(){return this._groupRowsBy}set columns(t){t&&(this._internalColumns=[...t],E(this._internalColumns),this.recalculateColumns()),this._columns=t}get columns(){return this._columns}set limit(t){this._limit=t,this.recalculate()}get limit(){return this._limit}set count(t){this._count=t,this.recalculate()}get count(){return this._count}set offset(t){this._offset=t}get offset(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)}get isFixedHeader(){const t=this.headerHeight;return"string"!=typeof t||"auto"!==t}get isFixedRow(){return"auto"!==this.rowHeight}get isVertScroll(){return this.scrollbarV}get isVirtualized(){return this.virtualization}get isHorScroll(){return this.scrollbarH}get isSelectable(){return void 0!==this.selectionType}get isCheckboxSelection(){return"checkbox"===this.selectionType}get isCellSelection(){return"cell"===this.selectionType}get isSingleSelection(){return"single"===this.selectionType}get isMultiSelection(){return"multi"===this.selectionType}get isMultiClickSelection(){return"multiClick"===this.selectionType}set columnTemplates(t){this._columnTemplates=t,this.translateColumns(t)}get columnTemplates(){return this._columnTemplates}get allRowsSelected(){let t=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.selectAllRowsOnPage){const e=this.bodyComponent.indexes;t=this.selected.length===e.last-e.first}return this.selected&&this.rows&&0!==this.rows.length&&t}ngOnInit(){this.recalculate()}ngAfterViewInit(){this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(()=>{this.recalculate(),this.externalPaging&&this.scrollbarV&&this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:0})})}ngAfterContentInit(){this.columnTemplates.changes.subscribe(t=>this.translateColumns(t)),this.listenForColumnInputChanges()}translateColumns(t){if(t){const e=t.toArray();e.length&&(this._internalColumns=function(t){const e=[];for(const n of t){const t={},a=Object.getOwnPropertyNames(n);for(const e of a)t[e]=n[e];n.headerTemplate&&(t.headerTemplate=n.headerTemplate),n.cellTemplate&&(t.cellTemplate=n.cellTemplate),n.summaryFunc&&(t.summaryFunc=n.summaryFunc),n.summaryTemplate&&(t.summaryTemplate=n.summaryTemplate),e.push(t)}return e}(e),E(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}}groupArrayBy(t,e){const n=new Map;return t.forEach(t=>{const a=t[e];n.has(a)?n.get(a).push(t):n.set(a,[t])}),Array.from(n,t=>({key:t[0],value:t[1]}))}ngDoCheck(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=[...this.rows]:this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())}recalculate(){this.recalculateDims(),this.recalculateColumns()}onWindowResize(){this.recalculate()}recalculateColumns(t=this._internalColumns,e=-1,n=this.scrollbarH){if(!t)return;let a=this._innerWidth;return this.scrollbarV&&(a-=this.scrollbarHelper.width),"force"===this.columnMode?function(t,e,n,a,r=300){const i=t.slice(n+1,t.length).filter(t=>!1!==t.canAutoResize);for(const c of i)c.$$oldWidth||(c.$$oldWidth=c.width);let s=0,u=!1,o=rt(t,r),l=e-o;const d=[];do{s=l/i.length,u=o>=e;for(const t of i){if(u&&a)t.width=t.$$oldWidth||t.width||r;else{const e=(t.width||r)+s;t.minWidth&&e<t.minWidth?(t.width=t.minWidth,d.push(t)):t.maxWidth&&e>t.maxWidth?(t.width=t.maxWidth,d.push(t)):t.width=e}t.width=Math.max(0,t.width)}o=rt(t),l=e-o,at(i,d)}while(l>1&&0!==i.length)}(t,a,e,n):"flex"===this.columnMode&&function(t,e){const n=function(t,e){let n=0;for(const a of t)n+=a.width;return n}(t),a=function(t){let e=0;for(const n of t)e+=n.flexGrow||0;return e}(t),r=j(t);n!==e&&function(t,e,n){for(const i in t)for(const a of t[i])a.canAutoResize?a.width=0:(e-=a.width,n-=a.flexGrow?a.flexGrow:0);const a={};let r=e;do{const e=r/n;r=0;for(const n in t)for(const i of t[n])if(i.canAutoResize&&!a[i.prop]){const t=i.width+i.flexGrow*e;void 0!==i.minWidth&&t<i.minWidth?(r+=t-i.minWidth,i.width=i.minWidth,a[i.prop]=!0):i.width=t}}while(0!==r)}(r,e,a)}(t,a),t}recalculateDims(){const t=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(t.width),this.scrollbarV){let e=t.height;this.headerHeight&&(e-=this.headerHeight),this.footerHeight&&(e-=this.footerHeight),this.bodyHeight=e}this.recalculatePages()}recalculatePages(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()}onBodyPage({offset:t}){this.externalPaging&&!this.virtualization||(this.offset=t,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))}onBodyScroll(t){this._offsetX.next(t.offsetX),this.scroll.emit(t),this.cd.detectChanges()}onFooterPage(t){this.offset=t.page-1,this.bodyComponent.updateOffsetY(this.offset),this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}),this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected}))}calcPageSize(t=this.rows){if(this.scrollbarV&&this.virtualization){const t=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(t,0)}return void 0!==this.limit?this.limit:t?t.length:0}calcRowCount(t=this.rows){return this.externalPaging?this.count:t?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:t.length:0}onColumnContextmenu({event:t,column:e}){this.tableContextmenu.emit({event:t,type:"header",content:e})}onRowContextmenu({event:t,row:e}){this.tableContextmenu.emit({event:t,type:"body",content:e})}onColumnResize({column:t,newValue:e}){if(void 0===t)return;let n;const a=this._internalColumns.map((a,r)=>((a=Object.assign({},a)).$$id===t.$$id&&(n=r,a.width=e,a.$$oldWidth=e),a));this.recalculateColumns(a,n),this._internalColumns=a,this.resize.emit({column:t,newValue:e})}onColumnReorder({column:t,newValue:e,prevValue:n}){const a=this._internalColumns.map(t=>Object.assign({},t));if(this.swapColumns){const r=a[e];a[e]=t,a[n]=r}else if(e>n){const t=a[n];for(let r=n;r<e;r++)a[r]=a[r+1];a[e]=t}else{const t=a[n];for(let r=n;r>e;r--)a[r]=a[r-1];a[e]=t}this._internalColumns=a,this.reorder.emit({column:t,newValue:e,prevValue:n})}onColumnSort(t){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=t.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(t)}onHeaderSelect(t){if(this.selectAllRowsOnPage){const t=this.bodyComponent.indexes.first,e=this.bodyComponent.indexes.last,n=this.selected.length===e-t;this.selected=[],n||this.selected.push(...this._internalRows.slice(t,e))}else{const t=this.selected.length===this.rows.length;this.selected=[],t||this.selected.push(...this.rows)}this.select.emit({selected:this.selected})}onBodySelect(t){this.select.emit(t)}onTreeAction(t){const e=t.row,n=this._rows.findIndex(e=>e[this.treeToRelation]===t.row[this.treeToRelation]);this.treeAction.emit({row:e,rowIndex:n})}ngOnDestroy(){this._subscriptions.forEach(t=>t.unsubscribe())}listenForColumnInputChanges(){this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(()=>{this.columnTemplates&&this.columnTemplates.notifyOnChanges()}))}sortInternalRows(){this._internalRows=function(t,e,n){if(!t)return[];if(!n||!n.length||!e)return[...t];const a=new Map;t.forEach((t,e)=>a.set(t,e));const r=[...t],i=e.reduce((t,e)=>(e.comparator&&"function"==typeof e.comparator&&(t[e.prop]=e.comparator),t),{}),s=n.map(t=>{const e=t.prop;return{prop:e,dir:t.dir,valueGetter:O(e),compareFn:i[e]||st}});return r.sort((function(t,e){for(const n of s){const{prop:a,valueGetter:r}=n,i=r(t,a),s=r(e,a),u=n.dir!==it.desc?n.compareFn(i,s,t,e,n.dir):-n.compareFn(i,s,t,e,n.dir);if(0!==u)return u}return a.has(t)&&a.has(e)?a.get(t)<a.get(e)?-1:1:0}))}(this._internalRows,this._internalColumns,this.sorts)}}return Object(f.__decorate)([function(t,e,n){return{configurable:!0,enumerable:n.enumerable,get:function(){return Object.defineProperty(this,e,{configurable:!0,enumerable:n.enumerable,value:nt(n.value,5,void 0)}),this[e]}}},Object(f.__metadata)("design:type",Function),Object(f.__metadata)("design:paramtypes",[]),Object(f.__metadata)("design:returntype",void 0)],t.prototype,"onWindowResize",null),t})();class ot{constructor(t){this.cd=t,this.sort=new a.EventEmitter,this.select=new a.EventEmitter,this.columnContextmenu=new a.EventEmitter(!1),this.sortFn=this.onSort.bind(this),this.selectFn=this.select.emit.bind(this.select),this.cellContext={column:this.column,sortDir:this.sortDir,sortFn:this.sortFn,allRowsSelected:this.allRowsSelected,selectFn:this.selectFn}}set allRowsSelected(t){this._allRowsSelected=t,this.cellContext.allRowsSelected=t}get allRowsSelected(){return this._allRowsSelected}set column(t){this._column=t,this.cellContext.column=t,this.cd.markForCheck()}get column(){return this._column}set sorts(t){this._sorts=t,this.sortDir=this.calcSortDir(t),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()}get sorts(){return this._sorts}get columnCssClasses(){let t="datatable-header-cell";if(this.column.sortable&&(t+=" sortable"),this.column.resizeable&&(t+=" resizeable"),this.column.headerClass)if("string"==typeof this.column.headerClass)t+=" "+this.column.headerClass;else if("function"==typeof this.column.headerClass){const e=this.column.headerClass({column:this.column});if("string"==typeof e)t+=e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=" "+a)}}const e=this.sortDir;return e&&(t+=" sort-active sort-"+e),t}get name(){return void 0===this.column.headerTemplate?this.column.name:void 0}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get width(){return this.column.width}get isCheckboxable(){return this.column.checkboxable&&this.column.headerCheckboxable&&"checkbox"===this.selectionType}onContextmenu(t){this.columnContextmenu.emit({event:t,column:this.column})}calcSortDir(t){if(t&&this.column){const e=t.find(t=>t.prop===this.column.prop);if(e)return e.dir}}onSort(){if(!this.column.sortable)return;const t=(e=this.sortDir,"single"===this.sortType?e===it.asc?it.desc:it.asc:e?e===it.asc?it.desc:void 0:it.asc);var e;this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:t})}calcSortClass(t){return t===it.asc?"sort-btn sort-asc "+this.sortAscendingIcon:t===it.desc?"sort-btn sort-desc "+this.sortDescendingIcon:"sort-btn"}}class lt{constructor(){this.selectedCount=0,this.page=new a.EventEmitter}get isVisible(){return this.rowCount/this.pageSize>1}get curPage(){return this.offset+1}}class dt{constructor(){this.change=new a.EventEmitter,this._count=0,this._page=1,this._size=0}set size(t){this._size=t,this.pages=this.calcPages()}get size(){return this._size}set count(t){this._count=t,this.pages=this.calcPages()}get count(){return this._count}set page(t){this._page=t,this.pages=this.calcPages()}get page(){return this._page}get totalPages(){const t=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(t||0,1)}canPrevious(){return this.page>1}canNext(){return this.page<this.totalPages}prevPage(){this.selectPage(this.page-1)}nextPage(){this.selectPage(this.page+1)}selectPage(t){t>0&&t<=this.totalPages&&t!==this.page&&(this.page=t,this.change.emit({page:t}))}calcPages(t){const e=[];let n=1,a=this.totalPages;t=t||this.page,5<this.totalPages&&(n=t-Math.floor(2.5),a=t+Math.floor(2.5),n<1?(n=1,a=Math.min(n+5-1,this.totalPages)):a>this.totalPages&&(n=Math.max(this.totalPages-5+1,1),a=this.totalPages));for(let r=n;r<=a;r++)e.push({number:r,text:r});return e}}class ct{}const ft=function(){var t={up:38,down:40,return:13,escape:27,left:37,right:39};return t[t.up]="up",t[t.down]="down",t[t.return]="return",t[t.escape]="escape",t[t.left]="left",t[t.right]="right",t}();class ht{constructor(t,e,n,r){this.differs=t,this.scrollbarHelper=e,this.cd=n,this.treeStatus="collapsed",this.activate=new a.EventEmitter,this.treeAction=new a.EventEmitter,this._groupStyles={left:{},center:{},right:{}},this._element=r.nativeElement,this._rowDiffer=t.find({}).create()}set columns(t){this._columns=t,this.recalculateColumns(t),this.buildStylesByGroup()}get columns(){return this._columns}set innerWidth(t){if(this._columns){const t=j(this._columns);this._columnGroupWidths=F(t,this._columns)}this._innerWidth=t,this.recalculateColumns(),this.buildStylesByGroup()}get innerWidth(){return this._innerWidth}set offsetX(t){this._offsetX=t,this.buildStylesByGroup()}get offsetX(){return this._offsetX}get cssClass(){let t="datatable-body-row";if(this.isSelected&&(t+=" active"),this.rowIndex%2!=0&&(t+=" datatable-row-odd"),this.rowIndex%2==0&&(t+=" datatable-row-even"),this.rowClass){const e=this.rowClass(this.row);if("string"==typeof e)t+=" "+e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=" "+a)}}return t}get columnsTotalWidths(){return this._columnGroupWidths.total}ngDoCheck(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()}trackByGroups(t,e){return e.type}columnTrackingFn(t,e){return e.$$id}buildStylesByGroup(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()}calcStylesByGroup(t){const e=this._columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)X(a,n,0);else if("right"===t){const t=parseInt(this.innerWidth+"",0);X(a,-1*(e.total-t-n+this.scrollbarHelper.width),0)}return a}onActivate(t,e){t.cellIndex=e,t.rowElement=this._element,this.activate.emit(t)}onKeyDown(t){const e=t.keyCode;(e===ft.return||e===ft.down||e===ft.up||e===ft.left||e===ft.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,rowElement:this._element}))}onMouseenter(t){this.activate.emit({type:"mouseenter",event:t,row:this.row,rowElement:this._element})}recalculateColumns(t=this.columns){this._columns=t;const e=j(this._columns);this._columnsByPin=G(this._columns),this._columnGroupWidths=F(e,this._columns)}onTreeAction(){this.treeAction.emit()}}class gt{constructor(t,e){this.cd=t,this.differs=e,this.rowContextmenu=new a.EventEmitter(!1),this.groupContext={group:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this.rowContext={row:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this._expanded=!1,this.rowDiffer=e.find({}).create()}set rowIndex(t){this._rowIndex=t,this.rowContext.rowIndex=t,this.groupContext.rowIndex=t,this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set expanded(t){this._expanded=t,this.groupContext.expanded=t,this.rowContext.expanded=t,this.cd.markForCheck()}get expanded(){return this._expanded}ngDoCheck(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())}onContextmenu(t){this.rowContextmenu.emit({event:t,row:this.row})}getGroupHeaderStyle(){const t={};return t.transform="translate3d("+this.offsetX+"px, 0px, 0px)",t["backface-visibility"]="hidden",t.width=this.innerWidth,t}}class pt{constructor(t,e){this.cd=e,this.activate=new a.EventEmitter,this.treeAction=new a.EventEmitter,this.isFocused=!1,this.onCheckboxChangeFn=this.onCheckboxChange.bind(this),this.activateFn=this.activate.emit.bind(this.activate),this.cellContext={onCheckboxChangeFn:this.onCheckboxChangeFn,activateFn:this.activateFn,row:this.row,group:this.group,value:this.value,column:this.column,rowHeight:this.rowHeight,isSelected:this.isSelected,rowIndex:this.rowIndex,treeStatus:this.treeStatus,onTreeAction:this.onTreeAction.bind(this)},this._element=t.nativeElement}set group(t){this._group=t,this.cellContext.group=t,this.checkValueUpdates(),this.cd.markForCheck()}get group(){return this._group}set rowHeight(t){this._rowHeight=t,this.cellContext.rowHeight=t,this.checkValueUpdates(),this.cd.markForCheck()}get rowHeight(){return this._rowHeight}set isSelected(t){this._isSelected=t,this.cellContext.isSelected=t,this.cd.markForCheck()}get isSelected(){return this._isSelected}set expanded(t){this._expanded=t,this.cellContext.expanded=t,this.cd.markForCheck()}get expanded(){return this._expanded}set rowIndex(t){this._rowIndex=t,this.cellContext.rowIndex=t,this.checkValueUpdates(),this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set column(t){this._column=t,this.cellContext.column=t,this.checkValueUpdates(),this.cd.markForCheck()}get column(){return this._column}set row(t){this._row=t,this.cellContext.row=t,this.checkValueUpdates(),this.cd.markForCheck()}get row(){return this._row}set sorts(t){this._sorts=t,this.calcSortDir=this.calcSortDir(t)}get sorts(){return this._sorts}set treeStatus(t){this._treeStatus="collapsed"!==t&&"expanded"!==t&&"loading"!==t&&"disabled"!==t?"collapsed":t,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()}get treeStatus(){return this._treeStatus}get columnCssClasses(){let t="datatable-body-cell";if(this.column.cellClass)if("string"==typeof this.column.cellClass)t+=" "+this.column.cellClass;else if("function"==typeof this.column.cellClass){const e=this.column.cellClass({row:this.row,group:this.group,column:this.column,value:this.value,rowHeight:this.rowHeight});if("string"==typeof e)t+=e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=" "+a)}}return this.sortDir||(t+=" sort-active"),this.isFocused&&(t+=" active"),this.sortDir===it.asc&&(t+=" sort-asc"),this.sortDir===it.desc&&(t+=" sort-desc"),t}get width(){return this.column.width}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get height(){const t=this.rowHeight;return isNaN(t)?t:t+"px"}ngDoCheck(){this.checkValueUpdates()}ngOnDestroy(){this.cellTemplate&&this.cellTemplate.clear()}checkValueUpdates(){let t="";if(this.row&&this.column){const e=this.column.$$valueGetter(this.row,this.column.prop),n=this.column.pipe;n?t=n.transform(e):void 0!==t&&(t=e)}else t="";this.value!==t&&(this.value=t,this.cellContext.value=t,this.sanitizedValue=null!=t?this.stripHtml(t):t,this.cd.markForCheck())}onFocus(){this.isFocused=!0}onBlur(){this.isFocused=!1}onClick(t){this.activate.emit({type:"click",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onDblClick(t){this.activate.emit({type:"dblclick",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onKeyDown(t){const e=t.keyCode;(e===ft.return||e===ft.down||e===ft.up||e===ft.left||e===ft.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element}))}onCheckboxChange(t){this.activate.emit({type:"checkbox",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element,treeStatus:"collapsed"})}calcSortDir(t){if(!t)return;const e=t.find(t=>t.prop===this.column.prop);return e?e.dir:void 0}stripHtml(t){return t.replace?t.replace(/<\/?[^>]+(>|$)/g,""):t}onTreeAction(){this.treeAction.emit(this.row)}calcLeftMargin(t,e){return t.isTreeColumn?e.level*(null!=t.treeLevelIndent?t.treeLevelIndent:50):0}}function bt(t,e,n){const a=n(e,t);return a>-1?t.splice(a,1):t.push(e),t}class mt{constructor(){this.activate=new a.EventEmitter,this.select=new a.EventEmitter}selectRow(t,e,n){if(!this.selectEnabled)return;const a="checkbox"===this.selectionType,r="multiClick"===this.selectionType;let i=[];i="multi"===this.selectionType||a||r?t.shiftKey?function(t,e,n,a,r){const i=n<a;for(let s=0;s<e.length;s++){const r=e[s],u=s>=a&&s<=n,o=s<=a&&s>=n;let l={start:0,end:0};l=i?{start:n,end:a}:{start:a,end:n+1},(i&&o||!i&&u)&&s>=l.start&&s<=l.end&&t.push(r)}return t}([],this.rows,e,this.prevIndex,this.getRowSelectedIdx.bind(this)):bt(t.ctrlKey||t.metaKey||r||a?[...this.selected]:[],n,this.getRowSelectedIdx.bind(this)):bt([],n,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(i=i.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),this.selected.push(...i),this.prevIndex=e,this.select.emit({selected:i})}onActivate(t,e){const{type:n,event:a,row:r}=t,i="checkbox"===this.selectionType;!i&&("click"===n||"dblclick"===n)||i&&"checkbox"===n?this.selectRow(a,e,r):"keydown"===n&&(a.keyCode===ft.return?this.selectRow(a,e,r):this.onKeyboardFocus(t)),this.activate.emit(t)}onKeyboardFocus(t){const{keyCode:e}=t.event;if(e===ft.up||e===ft.down||e===ft.right||e===ft.left){const n="cell"===this.selectionType;t.cellElement&&n?n&&this.focusCell(t.cellElement,t.rowElement,e,t.cellIndex):this.focusRow(t.rowElement,e)}}focusRow(t,e){const n=this.getPrevNextRow(t,e);n&&n.focus()}getPrevNextRow(t,e){const n=t.parentElement;if(n){let t;if(e===ft.up?t=n.previousElementSibling:e===ft.down&&(t=n.nextElementSibling),t&&t.children.length)return t.children[0]}}focusCell(t,e,n,a){let r;if(n===ft.left)r=t.previousElementSibling;else if(n===ft.right)r=t.nextElementSibling;else if(n===ft.up||n===ft.down){const t=this.getPrevNextRow(e,n);if(t){const e=t.getElementsByClassName("datatable-body-cell");e.length&&(r=e[a])}}r&&r.focus()}getRowSelected(t){return this.getRowSelectedIdx(t,this.selected)>-1}getRowSelectedIdx(t,e){if(!e||!e.length)return-1;const n=this.rowIdentity(t);return e.findIndex(t=>this.rowIdentity(t)===n)}}function yt(t){const e=t.filter(t=>!!t);return e.length?e.some(t=>"number"!=typeof t)?null:e.reduce((t,e)=>t+e):null}function vt(t){return null}class xt{constructor(){this.summaryRow={}}ngOnChanges(){this.columns&&this.rows&&(this.updateInternalColumns(),this.updateValues())}updateInternalColumns(){this._internalColumns=this.columns.map(t=>Object.assign({},t,{cellTemplate:t.summaryTemplate}))}updateValues(){this.summaryRow={},this.columns.filter(t=>!t.summaryTemplate).forEach(t=>{const e=this.rows.map(e=>e[t.prop]),n=this.getSummaryFunction(t);this.summaryRow[t.prop]=t.pipe?t.pipe.transform(n(e)):n(e)})}getSummaryFunction(t){return void 0===t.summaryFunc?yt:null===t.summaryFunc?vt:t.summaryFunc}}class _t{static forRoot(t){return{ngModule:_t,providers:[{provide:"configuration",useValue:t}]}}}"undefined"==typeof document||document.elementsFromPoint||(document.elementsFromPoint=function(t,e){const n=[],a=[];let r,i,s;for(;(r=document.elementFromPoint(t,e))&&-1===n.indexOf(r)&&null!=r;)n.push(r),a.push({value:r.style.getPropertyValue("pointer-events"),priority:r.style.getPropertyPriority("pointer-events")}),r.style.setProperty("pointer-events","none","important");for(i=a.length;s=a[--i];)n[i].style.setProperty("pointer-events",s.value?s.value:"",s.priority);return n})},wE6v:function(t,e,n){var a=n("2oRo"),r=n("xluM"),i=n("hh1v"),s=n("2bX/"),u=n("3Eq5"),o=n("SFrS"),l=n("tiKp"),d=a.TypeError,c=l("toPrimitive");t.exports=function(t,e){if(!i(t)||s(t))return t;var n,a=u(t,c);if(a){if(void 0===e&&(e="default"),n=r(a,t,e),!i(n)||s(n))return n;throw d("Can't convert object to primitive value")}return void 0===e&&(e="number"),o(t,e)}},wQk9:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("wd/R"))},"wd/R":function(t,e,n){(function(t){t.exports=function(){"use strict";var e,a;function r(){return e.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function s(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function u(t){return void 0===t}function o(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function d(t,e){var n,a=[];for(n=0;n<t.length;++n)a.push(e(t[n],n));return a}function c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function f(t,e){for(var n in e)c(e,n)&&(t[n]=e[n]);return c(e,"toString")&&(t.toString=e.toString),c(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,n,a){return we(t,e,n,a,!0).utc()}function g(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function p(t){if(null==t._isValid){var e=g(t),n=a.call(e.parsedDateParts,(function(t){return null!=t})),r=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(r=r&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return r;t._isValid=r}return t._isValid}function b(t){var e=h(NaN);return null!=t?f(g(e),t):g(e).userInvalidated=!0,e}a=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,a=0;a<n;a++)if(a in e&&t.call(this,e[a],a,e))return!0;return!1};var m=r.momentProperties=[];function y(t,e){var n,a,r;if(u(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),u(e._i)||(t._i=e._i),u(e._f)||(t._f=e._f),u(e._l)||(t._l=e._l),u(e._strict)||(t._strict=e._strict),u(e._tzm)||(t._tzm=e._tzm),u(e._isUTC)||(t._isUTC=e._isUTC),u(e._offset)||(t._offset=e._offset),u(e._pf)||(t._pf=g(e)),u(e._locale)||(t._locale=e._locale),m.length>0)for(n=0;n<m.length;n++)u(r=e[a=m[n]])||(t[a]=r);return t}var v=!1;function x(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,r.updateOffset(this),v=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function T(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=T(e)),n}function O(t,e,n){var a,r=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),s=0;for(a=0;a<r;a++)(n&&t[a]!==e[a]||!n&&w(t[a])!==w(e[a]))&&s++;return s+i}function S(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function I(t,e){var n=!0;return f((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){for(var a,i=[],s=0;s<arguments.length;s++){if(a="","object"==typeof arguments[s]){for(var u in a+="\n["+s+"] ",arguments[0])a+=u+": "+arguments[0][u]+", ";a=a.slice(0,-2)}else a=arguments[s];i.push(a)}S(t+"\nArguments: "+Array.prototype.slice.call(i).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var N,C={};function R(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),C[t]||(S(e),C[t]=!0)}function A(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function k(t,e){var n,a=f({},t);for(n in e)c(e,n)&&(s(t[n])&&s(e[n])?(a[n]={},f(a[n],t[n]),f(a[n],e[n])):null!=e[n]?a[n]=e[n]:delete a[n]);for(n in t)c(t,n)&&!c(e,n)&&s(t[n])&&(a[n]=f({},a[n]));return a}function E(t){null!=t&&this.set(t)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,N=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)c(t,e)&&n.push(e);return n};var L={};function D(t,e){var n=t.toLowerCase();L[n]=L[n+"s"]=L[e]=t}function P(t){return"string"==typeof t?L[t]||L[t.toLowerCase()]:void 0}function M(t){var e,n,a={};for(n in t)c(t,n)&&(e=P(n))&&(a[e]=t[n]);return a}var q={};function j(t,e){q[t]=e}function F(t,e,n){var a=""+Math.abs(t);return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-a.length)).toString().substr(1)+a}var V=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,B={},z={};function Y(t,e,n,a){var r=a;"string"==typeof a&&(r=function(){return this[a]()}),t&&(z[t]=r),e&&(z[e[0]]=function(){return F(r.apply(this,arguments),e[1],e[2])}),n&&(z[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function H(t,e){return t.isValid()?(e=U(e,t.localeData()),B[e]=B[e]||function(t){var e,n,a,r=t.match(V);for(e=0,n=r.length;e<n;e++)r[e]=z[r[e]]?z[r[e]]:(a=r[e]).match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"");return function(e){var a,i="";for(a=0;a<n;a++)i+=A(r[a])?r[a].call(e,t):r[a];return i}}(e),B[e](t)):t.localeData().invalidDate()}function U(t,e){var n=5;function a(t){return e.longDateFormat(t)||t}for(G.lastIndex=0;n>=0&&G.test(t);)t=t.replace(G,a),G.lastIndex=0,n-=1;return t}var W=/\d/,K=/\d\d/,$=/\d{3}/,J=/\d{4}/,Z=/[+-]?\d{6}/,Q=/\d\d?/,X=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,at=/[+-]?\d{1,6}/,rt=/\d+/,it=/[+-]?\d+/,st=/Z|[+-]\d\d:?\d\d/gi,ut=/Z|[+-]\d\d(?::?\d\d)?/gi,ot=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,lt={};function dt(t,e,n){lt[t]=A(e)?e:function(t,a){return t&&n?n:e}}function ct(t,e){return c(lt,t)?lt[t](e._strict,e._locale):new RegExp(ft(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,a,r){return e||n||a||r}))))}function ft(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ht={};function gt(t,e){var n,a=e;for("string"==typeof t&&(t=[t]),o(e)&&(a=function(t,n){n[e]=w(t)}),n=0;n<t.length;n++)ht[t[n]]=a}function pt(t,e){gt(t,(function(t,n,a,r){a._w=a._w||{},e(t,a._w,a,r)}))}function bt(t,e,n){null!=e&&c(ht,t)&&ht[t](e,n._a,n,t)}function mt(t){return yt(t)?366:365}function yt(t){return t%4==0&&t%100!=0||t%400==0}Y("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),Y(0,["YY",2],0,(function(){return this.year()%100})),Y(0,["YYYY",4],0,"year"),Y(0,["YYYYY",5],0,"year"),Y(0,["YYYYYY",6,!0],0,"year"),D("year","y"),j("year",1),dt("Y",it),dt("YY",Q,K),dt("YYYY",nt,J),dt("YYYYY",at,Z),dt("YYYYYY",at,Z),gt(["YYYYY","YYYYYY"],0),gt("YYYY",(function(t,e){e[0]=2===t.length?r.parseTwoDigitYear(t):w(t)})),gt("YY",(function(t,e){e[0]=r.parseTwoDigitYear(t)})),gt("Y",(function(t,e){e[0]=parseInt(t,10)})),r.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var vt,xt=_t("FullYear",!0);function _t(t,e){return function(n){return null!=n?(wt(this,t,n),r.updateOffset(this,e),this):Tt(this,t)}}function Tt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function wt(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&yt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),Ot(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function Ot(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?yt(t)?29:28:31-n%7%2}vt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},Y("M",["MM",2],"Mo",(function(){return this.month()+1})),Y("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),Y("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),D("month","M"),j("month",8),dt("M",Q),dt("MM",Q,K),dt("MMM",(function(t,e){return e.monthsShortRegex(t)})),dt("MMMM",(function(t,e){return e.monthsRegex(t)})),gt(["M","MM"],(function(t,e){e[1]=w(t)-1})),gt(["MMM","MMMM"],(function(t,e,n,a){var r=n._locale.monthsParse(t,a,n._strict);null!=r?e[1]=r:g(n).invalidMonth=t}));var St=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,It="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Nt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ct(t,e,n){var a,r,i,s=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)i=h([2e3,a]),this._shortMonthsParse[a]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(r=vt.call(this._shortMonthsParse,s))?r:null:-1!==(r=vt.call(this._longMonthsParse,s))?r:null:"MMM"===e?-1!==(r=vt.call(this._shortMonthsParse,s))||-1!==(r=vt.call(this._longMonthsParse,s))?r:null:-1!==(r=vt.call(this._longMonthsParse,s))||-1!==(r=vt.call(this._shortMonthsParse,s))?r:null}function Rt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=w(e);else if(!o(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),Ot(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function At(t){return null!=t?(Rt(this,t),r.updateOffset(this,!0),this):Tt(this,"Month")}var kt=ot,Et=ot;function Lt(){function t(t,e){return e.length-t.length}var e,n,a=[],r=[],i=[];for(e=0;e<12;e++)n=h([2e3,e]),a.push(this.monthsShort(n,"")),r.push(this.months(n,"")),i.push(this.months(n,"")),i.push(this.monthsShort(n,""));for(a.sort(t),r.sort(t),i.sort(t),e=0;e<12;e++)a[e]=ft(a[e]),r[e]=ft(r[e]);for(e=0;e<24;e++)i[e]=ft(i[e]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Dt(t,e,n,a,r,i,s){var u;return t<100&&t>=0?(u=new Date(t+400,e,n,a,r,i,s),isFinite(u.getFullYear())&&u.setFullYear(t)):u=new Date(t,e,n,a,r,i,s),u}function Pt(t){var e;if(t<100&&t>=0){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Mt(t,e,n){var a=7+e-n;return-(7+Pt(t,0,a).getUTCDay()-e)%7+a-1}function qt(t,e,n,a,r){var i,s,u=1+7*(e-1)+(7+n-a)%7+Mt(t,a,r);return u<=0?s=mt(i=t-1)+u:u>mt(t)?(i=t+1,s=u-mt(t)):(i=t,s=u),{year:i,dayOfYear:s}}function jt(t,e,n){var a,r,i=Mt(t.year(),e,n),s=Math.floor((t.dayOfYear()-i-1)/7)+1;return s<1?a=s+Ft(r=t.year()-1,e,n):s>Ft(t.year(),e,n)?(a=s-Ft(t.year(),e,n),r=t.year()+1):(r=t.year(),a=s),{week:a,year:r}}function Ft(t,e,n){var a=Mt(t,e,n),r=Mt(t+1,e,n);return(mt(t)-a+r)/7}function Vt(t,e){return t.slice(e,7).concat(t.slice(0,e))}Y("w",["ww",2],"wo","week"),Y("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),j("week",5),j("isoWeek",5),dt("w",Q),dt("ww",Q,K),dt("W",Q),dt("WW",Q,K),pt(["w","ww","W","WW"],(function(t,e,n,a){e[a.substr(0,1)]=w(t)})),Y("d",0,"do","day"),Y("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),Y("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),Y("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),Y("e",0,0,"weekday"),Y("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),dt("d",Q),dt("e",Q),dt("E",Q),dt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),dt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),dt("dddd",(function(t,e){return e.weekdaysRegex(t)})),pt(["dd","ddd","dddd"],(function(t,e,n,a){var r=n._locale.weekdaysParse(t,a,n._strict);null!=r?e.d=r:g(n).invalidWeekday=t})),pt(["d","e","E"],(function(t,e,n,a){e[a]=w(t)}));var Gt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Bt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),zt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Yt(t,e,n){var a,r,i,s=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)i=h([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(r=vt.call(this._weekdaysParse,s))?r:null:"ddd"===e?-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:null:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:"dddd"===e?-1!==(r=vt.call(this._weekdaysParse,s))||-1!==(r=vt.call(this._shortWeekdaysParse,s))||-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:"ddd"===e?-1!==(r=vt.call(this._shortWeekdaysParse,s))||-1!==(r=vt.call(this._weekdaysParse,s))||-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:-1!==(r=vt.call(this._minWeekdaysParse,s))||-1!==(r=vt.call(this._weekdaysParse,s))||-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:null}var Ht=ot,Ut=ot,Wt=ot;function Kt(){function t(t,e){return e.length-t.length}var e,n,a,r,i,s=[],u=[],o=[],l=[];for(e=0;e<7;e++)n=h([2e3,1]).day(e),a=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),i=this.weekdays(n,""),s.push(a),u.push(r),o.push(i),l.push(a),l.push(r),l.push(i);for(s.sort(t),u.sort(t),o.sort(t),l.sort(t),e=0;e<7;e++)u[e]=ft(u[e]),o[e]=ft(o[e]),l[e]=ft(l[e]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function $t(){return this.hours()%12||12}function Jt(t,e){Y(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Zt(t,e){return e._meridiemParse}Y("H",["HH",2],0,"hour"),Y("h",["hh",2],0,$t),Y("k",["kk",2],0,(function(){return this.hours()||24})),Y("hmm",0,0,(function(){return""+$t.apply(this)+F(this.minutes(),2)})),Y("hmmss",0,0,(function(){return""+$t.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)})),Y("Hmm",0,0,(function(){return""+this.hours()+F(this.minutes(),2)})),Y("Hmmss",0,0,(function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)})),Jt("a",!0),Jt("A",!1),D("hour","h"),j("hour",13),dt("a",Zt),dt("A",Zt),dt("H",Q),dt("h",Q),dt("k",Q),dt("HH",Q,K),dt("hh",Q,K),dt("kk",Q,K),dt("hmm",X),dt("hmmss",tt),dt("Hmm",X),dt("Hmmss",tt),gt(["H","HH"],3),gt(["k","kk"],(function(t,e,n){var a=w(t);e[3]=24===a?0:a})),gt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),gt(["h","hh"],(function(t,e,n){e[3]=w(t),g(n).bigHour=!0})),gt("hmm",(function(t,e,n){var a=t.length-2;e[3]=w(t.substr(0,a)),e[4]=w(t.substr(a)),g(n).bigHour=!0})),gt("hmmss",(function(t,e,n){var a=t.length-4,r=t.length-2;e[3]=w(t.substr(0,a)),e[4]=w(t.substr(a,2)),e[5]=w(t.substr(r)),g(n).bigHour=!0})),gt("Hmm",(function(t,e,n){var a=t.length-2;e[3]=w(t.substr(0,a)),e[4]=w(t.substr(a))})),gt("Hmmss",(function(t,e,n){var a=t.length-4,r=t.length-2;e[3]=w(t.substr(0,a)),e[4]=w(t.substr(a,2)),e[5]=w(t.substr(r))}));var Qt,Xt=_t("Hours",!0),te={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:It,monthsShort:Nt,week:{dow:0,doy:6},weekdays:Gt,weekdaysMin:zt,weekdaysShort:Bt,meridiemParse:/[ap]\.?m?\.?/i},ee={},ne={};function ae(t){return t?t.toLowerCase().replace("_","-"):t}function re(e){var a=null;if(!ee[e]&&void 0!==t&&t&&t.exports)try{a=Qt._abbr,n("RnhZ")("./"+e),ie(a)}catch(r){}return ee[e]}function ie(t,e){var n;return t&&((n=u(e)?ue(t):se(t,e))?Qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Qt._abbr}function se(t,e){if(null!==e){var n,a=te;if(e.abbr=t,null!=ee[t])R("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),a=ee[t]._config;else if(null!=e.parentLocale)if(null!=ee[e.parentLocale])a=ee[e.parentLocale]._config;else{if(null==(n=re(e.parentLocale)))return ne[e.parentLocale]||(ne[e.parentLocale]=[]),ne[e.parentLocale].push({name:t,config:e}),null;a=n._config}return ee[t]=new E(k(a,e)),ne[t]&&ne[t].forEach((function(t){se(t.name,t.config)})),ie(t),ee[t]}return delete ee[t],null}function ue(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Qt;if(!i(t)){if(e=re(t))return e;t=[t]}return function(t){for(var e,n,a,r,i=0;i<t.length;){for(e=(r=ae(t[i]).split("-")).length,n=(n=ae(t[i+1]))?n.split("-"):null;e>0;){if(a=re(r.slice(0,e).join("-")))return a;if(n&&n.length>=e&&O(r,n,!0)>=e-1)break;e--}i++}return Qt}(t)}function oe(t){var e,n=t._a;return n&&-2===g(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>Ot(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,g(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),g(t)._overflowWeeks&&-1===e&&(e=7),g(t)._overflowWeekday&&-1===e&&(e=8),g(t).overflow=e),t}function le(t,e,n){return null!=t?t:null!=e?e:n}function de(t){var e,n,a,i,s,u=[];if(!t._d){for(a=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,a,r,i,s,u,o;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)i=1,s=4,n=le(e.GG,t._a[0],jt(Oe(),1,4).year),a=le(e.W,1),((r=le(e.E,1))<1||r>7)&&(o=!0);else{i=t._locale._week.dow,s=t._locale._week.doy;var l=jt(Oe(),i,s);n=le(e.gg,t._a[0],l.year),a=le(e.w,l.week),null!=e.d?((r=e.d)<0||r>6)&&(o=!0):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(o=!0)):r=i}a<1||a>Ft(n,i,s)?g(t)._overflowWeeks=!0:null!=o?g(t)._overflowWeekday=!0:(u=qt(n,a,r,i,s),t._a[0]=u.year,t._dayOfYear=u.dayOfYear)}(t),null!=t._dayOfYear&&(s=le(t._a[0],a[0]),(t._dayOfYear>mt(s)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),n=Pt(s,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=u[e]=a[e];for(;e<7;e++)t._a[e]=u[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Pt:Dt).apply(null,u),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(g(t).weekdayMismatch=!0)}}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fe=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/Z|[+-]\d\d(?::?\d\d)?/,ge=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],be=/^\/?Date\((\-?\d+)/i;function me(t){var e,n,a,r,i,s,u=t._i,o=ce.exec(u)||fe.exec(u);if(o){for(g(t).iso=!0,e=0,n=ge.length;e<n;e++)if(ge[e][1].exec(o[1])){r=ge[e][0],a=!1!==ge[e][2];break}if(null==r)return void(t._isValid=!1);if(o[3]){for(e=0,n=pe.length;e<n;e++)if(pe[e][1].exec(o[3])){i=(o[2]||" ")+pe[e][0];break}if(null==i)return void(t._isValid=!1)}if(!a&&null!=i)return void(t._isValid=!1);if(o[4]){if(!he.exec(o[4]))return void(t._isValid=!1);s="Z"}t._f=r+(i||"")+(s||""),_e(t)}else t._isValid=!1}var ye=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ve={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function xe(t){var e,n,a,r,i,s,u,o,l=ye.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){var d=(e=l[3],n=l[2],a=l[5],r=l[6],i=l[7],s=[(u=l[4],o=parseInt(u,10),o<=49?2e3+o:o<=999?1900+o:o),Nt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)],i&&s.push(parseInt(i,10)),s);if(!function(t,e,n){return!t||Bt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(g(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],d,t))return;t._a=d,t._tzm=function(t,e,n){if(t)return ve[t];if(e)return 0;var a=parseInt(n,10),r=a%100;return(a-r)/100*60+r}(l[8],l[9],l[10]),t._d=Pt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),g(t).rfc2822=!0}else t._isValid=!1}function _e(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],g(t).empty=!0;var e,n,a,i,s,u=""+t._i,o=u.length,l=0;for(a=U(t._f,t._locale).match(V)||[],e=0;e<a.length;e++)(n=(u.match(ct(i=a[e],t))||[])[0])&&((s=u.substr(0,u.indexOf(n))).length>0&&g(t).unusedInput.push(s),u=u.slice(u.indexOf(n)+n.length),l+=n.length),z[i]?(n?g(t).empty=!1:g(t).unusedTokens.push(i),bt(i,n,t)):t._strict&&!n&&g(t).unusedTokens.push(i);g(t).charsLeftOver=o-l,u.length>0&&g(t).unusedInput.push(u),t._a[3]<=12&&!0===g(t).bigHour&&t._a[3]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var a;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((a=t.isPM(n))&&e<12&&(e+=12),a||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),de(t),oe(t)}else xe(t);else me(t)}function Te(t){var e=t._i,n=t._f;return t._locale=t._locale||ue(t._l),null===e||void 0===n&&""===e?b({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),_(e)?new x(oe(e)):(l(e)?t._d=e:i(n)?function(t){var e,n,a,r,i;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(r=0;r<t._f.length;r++)i=0,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[r],_e(e),p(e)&&(i+=g(e).charsLeftOver,i+=10*g(e).unusedTokens.length,g(e).score=i,(null==a||i<a)&&(a=i,n=e));f(t,n||e)}(t):n?_e(t):function(t){var e=t._i;u(e)?t._d=new Date(r.now()):l(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=be.exec(t._i);null===e?(me(t),!1===t._isValid&&(delete t._isValid,xe(t),!1===t._isValid&&(delete t._isValid,r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):i(e)?(t._a=d(e.slice(0),(function(t){return parseInt(t,10)})),de(t)):s(e)?function(t){if(!t._d){var e=M(t._i);t._a=d([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),de(t)}}(t):o(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),p(t)||(t._d=null),t))}function we(t,e,n,a,r){var u,o={};return!0!==n&&!1!==n||(a=n,n=void 0),(s(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||i(t)&&0===t.length)&&(t=void 0),o._isAMomentObject=!0,o._useUTC=o._isUTC=r,o._l=n,o._i=t,o._f=e,o._strict=a,(u=new x(oe(Te(o))))._nextDay&&(u.add(1,"d"),u._nextDay=void 0),u}function Oe(t,e,n,a){return we(t,e,n,a,!1)}r.createFromInputFallback=I("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Se=I("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Oe.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:b()})),Ie=I("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Oe.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:b()}));function Ne(t,e){var n,a;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return Oe();for(n=e[0],a=1;a<e.length;++a)e[a].isValid()&&!e[a][t](n)||(n=e[a]);return n}var Ce=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Re(t){var e=M(t),n=e.year||0,a=e.quarter||0,r=e.month||0,i=e.week||e.isoWeek||0,s=e.day||0,u=e.hour||0,o=e.minute||0,l=e.second||0,d=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===vt.call(Ce,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,a=0;a<Ce.length;++a)if(t[Ce[a]]){if(n)return!1;parseFloat(t[Ce[a]])!==w(t[Ce[a]])&&(n=!0)}return!0}(e),this._milliseconds=+d+1e3*l+6e4*o+1e3*u*60*60,this._days=+s+7*i,this._months=+r+3*a+12*n,this._data={},this._locale=ue(),this._bubble()}function Ae(t){return t instanceof Re}function ke(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ee(t,e){Y(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+F(~~(t/60),2)+e+F(~~t%60,2)}))}Ee("Z",":"),Ee("ZZ",""),dt("Z",ut),dt("ZZ",ut),gt(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=De(ut,t)}));var Le=/([\+\-]|\d\d)/gi;function De(t,e){var n=(e||"").match(t);if(null===n)return null;var a=((n[n.length-1]||[])+"").match(Le)||["-",0,0],r=60*a[1]+w(a[2]);return 0===r?0:"+"===a[0]?r:-r}function Pe(t,e){var n,a;return e._isUTC?(n=e.clone(),a=(_(t)||l(t)?t.valueOf():Oe(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):Oe(t).local()}function Me(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function qe(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var je=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Fe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ve(t,e){var n,a,r,i,s,u,l=t,d=null;return Ae(t)?l={ms:t._milliseconds,d:t._days,M:t._months}:o(t)?(l={},e?l[e]=t:l.milliseconds=t):(d=je.exec(t))?(n="-"===d[1]?-1:1,l={y:0,d:w(d[2])*n,h:w(d[3])*n,m:w(d[4])*n,s:w(d[5])*n,ms:w(ke(1e3*d[6]))*n}):(d=Fe.exec(t))?l={y:Ge(d[2],n="-"===d[1]?-1:1),M:Ge(d[3],n),w:Ge(d[4],n),d:Ge(d[5],n),h:Ge(d[6],n),m:Ge(d[7],n),s:Ge(d[8],n)}:null==l?l={}:"object"==typeof l&&("from"in l||"to"in l)&&(i=Oe(l.from),s=Oe(l.to),r=i.isValid()&&s.isValid()?(s=Pe(s,i),i.isBefore(s)?u=Be(i,s):((u=Be(s,i)).milliseconds=-u.milliseconds,u.months=-u.months),u):{milliseconds:0,months:0},(l={}).ms=r.milliseconds,l.M=r.months),a=new Re(l),Ae(t)&&c(t,"_locale")&&(a._locale=t._locale),a}function Ge(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Be(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function ze(t,e){return function(n,a){var r;return null===a||isNaN(+a)||(R(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=a,a=r),Ye(this,Ve(n="string"==typeof n?+n:n,a),t),this}}function Ye(t,e,n,a){var i=e._milliseconds,s=ke(e._days),u=ke(e._months);t.isValid()&&(a=null==a||a,u&&Rt(t,Tt(t,"Month")+u*n),s&&wt(t,"Date",Tt(t,"Date")+s*n),i&&t._d.setTime(t._d.valueOf()+i*n),a&&r.updateOffset(t,s||u))}Ve.fn=Re.prototype,Ve.invalid=function(){return Ve(NaN)};var He=ze(1,"add"),Ue=ze(-1,"subtract");function We(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),a=t.clone().add(n,"months");return-(n+(e-a<0?(e-a)/(a-t.clone().add(n-1,"months")):(e-a)/(t.clone().add(n+1,"months")-a)))||0}function Ke(t){var e;return void 0===t?this._locale._abbr:(null!=(e=ue(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var $e=I("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function Je(){return this._locale}function Ze(t,e){return(t%e+e)%e}function Qe(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-126227808e5:new Date(t,e,n).valueOf()}function Xe(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-126227808e5:Date.UTC(t,e,n)}function tn(t,e){Y(0,[t,t.length],0,e)}function en(t,e,n,a,r){var i;return null==t?jt(this,a,r).year:(e>(i=Ft(t,a,r))&&(e=i),nn.call(this,t,e,n,a,r))}function nn(t,e,n,a,r){var i=qt(t,e,n,a,r),s=Pt(i.year,0,i.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}Y(0,["gg",2],0,(function(){return this.weekYear()%100})),Y(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),j("weekYear",1),j("isoWeekYear",1),dt("G",it),dt("g",it),dt("GG",Q,K),dt("gg",Q,K),dt("GGGG",nt,J),dt("gggg",nt,J),dt("GGGGG",at,Z),dt("ggggg",at,Z),pt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,a){e[a.substr(0,2)]=w(t)})),pt(["gg","GG"],(function(t,e,n,a){e[a]=r.parseTwoDigitYear(t)})),Y("Q",0,"Qo","quarter"),D("quarter","Q"),j("quarter",7),dt("Q",W),gt("Q",(function(t,e){e[1]=3*(w(t)-1)})),Y("D",["DD",2],"Do","date"),D("date","D"),j("date",9),dt("D",Q),dt("DD",Q,K),dt("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),gt(["D","DD"],2),gt("Do",(function(t,e){e[2]=w(t.match(Q)[0])}));var an=_t("Date",!0);Y("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),j("dayOfYear",4),dt("DDD",et),dt("DDDD",$),gt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=w(t)})),Y("m",["mm",2],0,"minute"),D("minute","m"),j("minute",14),dt("m",Q),dt("mm",Q,K),gt(["m","mm"],4);var rn=_t("Minutes",!1);Y("s",["ss",2],0,"second"),D("second","s"),j("second",15),dt("s",Q),dt("ss",Q,K),gt(["s","ss"],5);var sn,un=_t("Seconds",!1);for(Y("S",0,0,(function(){return~~(this.millisecond()/100)})),Y(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),Y(0,["SSS",3],0,"millisecond"),Y(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),Y(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),Y(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),Y(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),Y(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),Y(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),D("millisecond","ms"),j("millisecond",16),dt("S",et,W),dt("SS",et,K),dt("SSS",et,$),sn="SSSS";sn.length<=9;sn+="S")dt(sn,rt);function on(t,e){e[6]=w(1e3*("0."+t))}for(sn="S";sn.length<=9;sn+="S")gt(sn,on);var ln=_t("Milliseconds",!1);Y("z",0,0,"zoneAbbr"),Y("zz",0,0,"zoneName");var dn=x.prototype;function cn(t){return t}dn.add=He,dn.calendar=function(t,e){var n=t||Oe(),a=Pe(n,this).startOf("day"),i=r.calendarFormat(this,a)||"sameElse",s=e&&(A(e[i])?e[i].call(this,n):e[i]);return this.format(s||this.localeData().calendar(i,this,Oe(n)))},dn.clone=function(){return new x(this)},dn.diff=function(t,e,n){var a,r,i;if(!this.isValid())return NaN;if(!(a=Pe(t,this)).isValid())return NaN;switch(r=6e4*(a.utcOffset()-this.utcOffset()),e=P(e)){case"year":i=We(this,a)/12;break;case"month":i=We(this,a);break;case"quarter":i=We(this,a)/3;break;case"second":i=(this-a)/1e3;break;case"minute":i=(this-a)/6e4;break;case"hour":i=(this-a)/36e5;break;case"day":i=(this-a-r)/864e5;break;case"week":i=(this-a-r)/6048e5;break;default:i=this-a}return n?i:T(i)},dn.endOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Xe:Qe;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-Ze(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-Ze(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-Ze(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},dn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=H(this,t);return this.localeData().postformat(e)},dn.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Oe(t).isValid())?Ve({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},dn.fromNow=function(t){return this.from(Oe(),t)},dn.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Oe(t).isValid())?Ve({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},dn.toNow=function(t){return this.to(Oe(),t)},dn.get=function(t){return A(this[t=P(t)])?this[t]():this},dn.invalidAt=function(){return g(this).overflow},dn.isAfter=function(t,e){var n=_(t)?t:Oe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},dn.isBefore=function(t,e){var n=_(t)?t:Oe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},dn.isBetween=function(t,e,n,a){var r=_(t)?t:Oe(t),i=_(e)?e:Oe(e);return!!(this.isValid()&&r.isValid()&&i.isValid())&&("("===(a=a||"()")[0]?this.isAfter(r,n):!this.isBefore(r,n))&&(")"===a[1]?this.isBefore(i,n):!this.isAfter(i,n))},dn.isSame=function(t,e){var n,a=_(t)?t:Oe(t);return!(!this.isValid()||!a.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()===a.valueOf():(n=a.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},dn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},dn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},dn.isValid=function(){return p(this)},dn.lang=$e,dn.locale=Ke,dn.localeData=Je,dn.max=Ie,dn.min=Se,dn.parsingFlags=function(){return f({},g(this))},dn.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:q[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=M(t)),a=0;a<n.length;a++)this[n[a].unit](t[n[a].unit]);else if(A(this[t=P(t)]))return this[t](e);return this},dn.startOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Xe:Qe;switch(t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=Ze(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=Ze(e,6e4);break;case"second":e=this._d.valueOf(),e-=Ze(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},dn.subtract=Ue,dn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},dn.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},dn.toDate=function(){return new Date(this.valueOf())},dn.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||n.year()>9999?H(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):A(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},dn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";return this.format(n+a+"-MM-DD[T]HH:mm:ss.SSS"+e+'[")]')},dn.toJSON=function(){return this.isValid()?this.toISOString():null},dn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},dn.unix=function(){return Math.floor(this.valueOf()/1e3)},dn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},dn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},dn.year=xt,dn.isLeapYear=function(){return yt(this.year())},dn.weekYear=function(t){return en.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},dn.isoWeekYear=function(t){return en.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},dn.quarter=dn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},dn.month=At,dn.daysInMonth=function(){return Ot(this.year(),this.month())},dn.week=dn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},dn.isoWeek=dn.isoWeeks=function(t){var e=jt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},dn.weeksInYear=function(){var t=this.localeData()._week;return Ft(this.year(),t.dow,t.doy)},dn.isoWeeksInYear=function(){return Ft(this.year(),1,4)},dn.date=an,dn.day=dn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},dn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},dn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},dn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},dn.hour=dn.hours=Xt,dn.minute=dn.minutes=rn,dn.second=dn.seconds=un,dn.millisecond=dn.milliseconds=ln,dn.utcOffset=function(t,e,n){var a,i=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=De(ut,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(a=Me(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),i!==t&&(!e||this._changeInProgress?Ye(this,Ve(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Me(this)},dn.utc=function(t){return this.utcOffset(0,t)},dn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Me(this),"m")),this},dn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=De(st,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},dn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Oe(t).utcOffset():0,(this.utcOffset()-t)%60==0)},dn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},dn.isLocal=function(){return!!this.isValid()&&!this._isUTC},dn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},dn.isUtc=qe,dn.isUTC=qe,dn.zoneAbbr=function(){return this._isUTC?"UTC":""},dn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},dn.dates=I("dates accessor is deprecated. Use date instead.",an),dn.months=I("months accessor is deprecated. Use month instead",At),dn.years=I("years accessor is deprecated. Use year instead",xt),dn.zone=I("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),dn.isDSTShifted=I("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!u(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Te(t))._a){var e=t._isUTC?h(t._a):Oe(t._a);this._isDSTShifted=this.isValid()&&O(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var fn=E.prototype;function hn(t,e,n,a){var r=ue(),i=h().set(a,e);return r[n](i,t)}function gn(t,e,n){if(o(t)&&(e=t,t=void 0),t=t||"",null!=e)return hn(t,e,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=hn(t,a,n,"month");return r}function pn(t,e,n,a){"boolean"==typeof t?(o(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,o(e)&&(n=e,e=void 0),e=e||"");var r,i=ue(),s=t?i._week.dow:0;if(null!=n)return hn(e,(n+s)%7,a,"day");var u=[];for(r=0;r<7;r++)u[r]=hn(e,(r+s)%7,a,"day");return u}fn.calendar=function(t,e,n){var a=this._calendar[t]||this._calendar.sameElse;return A(a)?a.call(e,n):a},fn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},fn.invalidDate=function(){return this._invalidDate},fn.ordinal=function(t){return this._ordinal.replace("%d",t)},fn.preparse=cn,fn.postformat=cn,fn.relativeTime=function(t,e,n,a){var r=this._relativeTime[n];return A(r)?r(t,e,n,a):r.replace(/%d/i,t)},fn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return A(n)?n(e):n.replace(/%s/i,e)},fn.set=function(t){var e,n;for(n in t)A(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},fn.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||St).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},fn.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[St.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},fn.monthsParse=function(t,e,n){var a,r,i;if(this._monthsParseExact)return Ct.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),a=0;a<12;a++){if(r=h([2e3,a]),n&&!this._longMonthsParse[a]&&(this._longMonthsParse[a]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[a]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),n||this._monthsParse[a]||(i="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[a]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[a].test(t))return a;if(n&&"MMM"===e&&this._shortMonthsParse[a].test(t))return a;if(!n&&this._monthsParse[a].test(t))return a}},fn.monthsRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||Lt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Et),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},fn.monthsShortRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||Lt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=kt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},fn.week=function(t){return jt(t,this._week.dow,this._week.doy).week},fn.firstDayOfYear=function(){return this._week.doy},fn.firstDayOfWeek=function(){return this._week.dow},fn.weekdays=function(t,e){var n=i(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Vt(n,this._week.dow):t?n[t.day()]:n},fn.weekdaysMin=function(t){return!0===t?Vt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},fn.weekdaysShort=function(t){return!0===t?Vt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},fn.weekdaysParse=function(t,e,n){var a,r,i;if(this._weekdaysParseExact)return Yt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(r=h([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[a]||(i="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[a]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[a].test(t))return a;if(n&&"ddd"===e&&this._shortWeekdaysParse[a].test(t))return a;if(n&&"dd"===e&&this._minWeekdaysParse[a].test(t))return a;if(!n&&this._weekdaysParse[a].test(t))return a}},fn.weekdaysRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ht),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},fn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},fn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Wt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},fn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},fn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ie("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=I("moment.lang is deprecated. Use moment.locale instead.",ie),r.langData=I("moment.langData is deprecated. Use moment.localeData instead.",ue);var bn=Math.abs;function mn(t,e,n,a){var r=Ve(e,n);return t._milliseconds+=a*r._milliseconds,t._days+=a*r._days,t._months+=a*r._months,t._bubble()}function yn(t){return t<0?Math.floor(t):Math.ceil(t)}function vn(t){return 4800*t/146097}function xn(t){return 146097*t/4800}function _n(t){return function(){return this.as(t)}}var Tn=_n("ms"),wn=_n("s"),On=_n("m"),Sn=_n("h"),In=_n("d"),Nn=_n("w"),Cn=_n("M"),Rn=_n("Q"),An=_n("y");function kn(t){return function(){return this.isValid()?this._data[t]:NaN}}var En=kn("milliseconds"),Ln=kn("seconds"),Dn=kn("minutes"),Pn=kn("hours"),Mn=kn("days"),qn=kn("months"),jn=kn("years"),Fn=Math.round,Vn={ss:44,s:45,m:45,h:22,d:26,M:11};function Gn(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}var Bn=Math.abs;function zn(t){return(t>0)-(t<0)||+t}function Yn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Bn(this._milliseconds)/1e3,a=Bn(this._days),r=Bn(this._months);t=T(n/60),e=T(t/60),n%=60,t%=60;var i=T(r/12),s=r%=12,u=a,o=e,l=t,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",c=this.asSeconds();if(!c)return"P0D";var f=c<0?"-":"",h=zn(this._months)!==zn(c)?"-":"",g=zn(this._days)!==zn(c)?"-":"",p=zn(this._milliseconds)!==zn(c)?"-":"";return f+"P"+(i?h+i+"Y":"")+(s?h+s+"M":"")+(u?g+u+"D":"")+(o||l||d?"T":"")+(o?p+o+"H":"")+(l?p+l+"M":"")+(d?p+d+"S":"")}var Hn=Re.prototype;return Hn.isValid=function(){return this._isValid},Hn.abs=function(){var t=this._data;return this._milliseconds=bn(this._milliseconds),this._days=bn(this._days),this._months=bn(this._months),t.milliseconds=bn(t.milliseconds),t.seconds=bn(t.seconds),t.minutes=bn(t.minutes),t.hours=bn(t.hours),t.months=bn(t.months),t.years=bn(t.years),this},Hn.add=function(t,e){return mn(this,t,e,1)},Hn.subtract=function(t,e){return mn(this,t,e,-1)},Hn.as=function(t){if(!this.isValid())return NaN;var e,n,a=this._milliseconds;if("month"===(t=P(t))||"quarter"===t||"year"===t)switch(n=this._months+vn(e=this._days+a/864e5),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(xn(this._months)),t){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hour":return 24*e+a/36e5;case"minute":return 1440*e+a/6e4;case"second":return 86400*e+a/1e3;case"millisecond":return Math.floor(864e5*e)+a;default:throw new Error("Unknown unit "+t)}},Hn.asMilliseconds=Tn,Hn.asSeconds=wn,Hn.asMinutes=On,Hn.asHours=Sn,Hn.asDays=In,Hn.asWeeks=Nn,Hn.asMonths=Cn,Hn.asQuarters=Rn,Hn.asYears=An,Hn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Hn._bubble=function(){var t,e,n,a,r,i=this._milliseconds,s=this._days,u=this._months,o=this._data;return i>=0&&s>=0&&u>=0||i<=0&&s<=0&&u<=0||(i+=864e5*yn(xn(u)+s),s=0,u=0),o.milliseconds=i%1e3,t=T(i/1e3),o.seconds=t%60,e=T(t/60),o.minutes=e%60,n=T(e/60),o.hours=n%24,s+=T(n/24),u+=r=T(vn(s)),s-=yn(xn(r)),a=T(u/12),u%=12,o.days=s,o.months=u,o.years=a,this},Hn.clone=function(){return Ve(this)},Hn.get=function(t){return t=P(t),this.isValid()?this[t+"s"]():NaN},Hn.milliseconds=En,Hn.seconds=Ln,Hn.minutes=Dn,Hn.hours=Pn,Hn.days=Mn,Hn.weeks=function(){return T(this.days()/7)},Hn.months=qn,Hn.years=jn,Hn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var a=Ve(t).abs(),r=Fn(a.as("s")),i=Fn(a.as("m")),s=Fn(a.as("h")),u=Fn(a.as("d")),o=Fn(a.as("M")),l=Fn(a.as("y")),d=r<=Vn.ss&&["s",r]||r<Vn.s&&["ss",r]||i<=1&&["m"]||i<Vn.m&&["mm",i]||s<=1&&["h"]||s<Vn.h&&["hh",s]||u<=1&&["d"]||u<Vn.d&&["dd",u]||o<=1&&["M"]||o<Vn.M&&["MM",o]||l<=1&&["y"]||["yy",l];return d[2]=e,d[3]=+t>0,d[4]=n,Gn.apply(null,d)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Hn.toISOString=Yn,Hn.toString=Yn,Hn.toJSON=Yn,Hn.locale=Ke,Hn.localeData=Je,Hn.toIsoString=I("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Yn),Hn.lang=$e,Y("X",0,0,"unix"),Y("x",0,0,"valueOf"),dt("x",it),dt("X",/[+-]?\d+(\.\d{1,3})?/),gt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),gt("x",(function(t,e,n){n._d=new Date(w(t))})),r.version="2.24.0",e=Oe,r.fn=dn,r.min=function(){var t=[].slice.call(arguments,0);return Ne("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return Ne("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=h,r.unix=function(t){return Oe(1e3*t)},r.months=function(t,e){return gn(t,e,"months")},r.isDate=l,r.locale=ie,r.invalid=b,r.duration=Ve,r.isMoment=_,r.weekdays=function(t,e,n){return pn(t,e,n,"weekdays")},r.parseZone=function(){return Oe.apply(null,arguments).parseZone()},r.localeData=ue,r.isDuration=Ae,r.monthsShort=function(t,e){return gn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return pn(t,e,n,"weekdaysMin")},r.defineLocale=se,r.updateLocale=function(t,e){if(null!=e){var n,a,r=te;null!=(a=re(t))&&(r=a._config),(n=new E(e=k(r,e))).parentLocale=ee[t],ee[t]=n,ie(t)}else null!=ee[t]&&(null!=ee[t].parentLocale?ee[t]=ee[t].parentLocale:null!=ee[t]&&delete ee[t]);return ee[t]},r.locales=function(){return N(ee)},r.weekdaysShort=function(t,e,n){return pn(t,e,n,"weekdaysShort")},r.normalizeUnits=P,r.relativeTimeRounding=function(t){return void 0===t?Fn:"function"==typeof t&&(Fn=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Vn[t]&&(void 0===e?Vn[t]:(Vn[t]=e,"s"===t&&(Vn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=dn,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},wg0c:function(t,e,n){var a=n("2oRo"),r=n("0Dky"),i=n("4zBA"),s=n("V37c"),u=n("WKiH").trim,o=n("WJkJ"),l=a.parseInt,d=a.Symbol,c=d&&d.iterator,f=/^[+-]?0x/i,h=i(f.exec),g=8!==l(o+"08")||22!==l(o+"0x16")||c&&!r((function(){l(Object(c))}));t.exports=g?function(t,e){var n=u(s(t));return l(n,e>>>0||(h(f,n)?16:10))}:l},wgvl:function(t,e,n){var a=n("Ytn0");t.exports=function(t,e){var n=a(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}},wnGv:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("s7LF"),i=n("LvDl"),s=n("oxzT"),u=n("QFaf"),o=n("DNAf"),l=n("a96k");class d{constructor(t){this.i18n=t,this.data=[],this.options=[],this.messages=new o.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.Object=Object,this.filteredOptions=[],this.icons=s.a}ngOnInit(){this.initFilter(),this.data.length>0&&this.initMissingOptions(),this.options=i.sortBy(this.options,["name"]),this.updateOptions()}initFilter(){this.filter=new r.i("",{validators:this.customBadgeValidators}),this.form=new u.a({filter:this.filter}),this.filteredOptions=[...this.options||[]]}initMissingOptions(){const t=this.options.map(t=>t.name);this.data.filter(e=>-1===t.indexOf(e)).forEach(t=>this.addOption(t)),this.forceOptionsToReflectData()}addOption(t){this.options.push(new l.a(!1,t,"")),this.options=i.sortBy(this.options,["name"]),this.triggerSelection(this.options.find(e=>e.name===t))}triggerSelection(t){!t||this.selectionLimit&&!t.selected&&this.data.length>=this.selectionLimit||(t.selected=!t.selected,this.updateOptions(),this.selection.emit({option:t}))}updateOptions(){this.data.splice(0,this.data.length),this.options.forEach(t=>{t.selected&&this.data.push(t.name)}),this.updateFilter()}updateFilter(){this.filteredOptions=this.options.filter(t=>t.name.includes(this.filter.value))}forceOptionsToReflectData(){this.options.forEach(t=>{-1!==this.data.indexOf(t.name)&&(t.selected=!0)})}ngOnChanges(){this.filter&&this.updateFilter(),this.options&&this.data&&0!==this.data.length&&this.forceOptionsToReflectData()}selectOption(){0===this.filteredOptions.length?this.addCustomOption():(this.triggerSelection(this.filteredOptions[0]),this.resetFilter())}addCustomOption(){this.isCreatable()&&(this.addOption(this.filter.value),this.resetFilter())}isCreatable(){return this.customBadges&&this.filter.valid&&this.filter.value.length>0&&this.filteredOptions.every(t=>t.name!==this.filter.value)}resetFilter(){this.filter.setValue(""),this.updateFilter()}removeItem(t){this.triggerSelection(this.options.find(e=>e.name===t&&e.selected))}}},woSy:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},u=function(){function t(){}return t.prototype.onDrop=function(t){this.node.mouseAction("drop",t.event,{from:t.element,to:{parent:this.node,index:this.dropIndex}})},t.prototype.allowDrop=function(t,e){return this.node.options.allowDrop(t,{parent:this.node,index:this.dropIndex},e)},i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"dropIndex",void 0),i([Object(a.Component)({selector:"TreeNodeDropSlot, tree-node-drop-slot",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <div\n      class="node-drop-slot"\n      (treeDrop)="onDrop($event)"\n      [treeAllowDrop]="allowDrop.bind(this)"\n      [allowDragoverStyling]="true">\n    </div>\n  '})],t)}()},x38r:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t.bold="bold",t.sparkline="sparkline",t.perSecond="perSecond",t.checkIcon="checkIcon",t.routerLink="routerLink",t.executing="executing",t.classAdding="classAdding",t.badge="badge",t.map="map",t.truncate="truncate",t}({})},x3F9:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},x6pH:function(t,e,n){!function(t){"use strict";t.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(t){return 2===t?"שעתיים":t+" שעות"},d:"יום",dd:function(t){return 2===t?"יומיים":t+" ימים"},M:"חודש",MM:function(t){return 2===t?"חודשיים":t+" חודשים"},y:"שנה",yy:function(t){return 2===t?"שנתיים":t%10==0&&10!==t?t+" שנה":t+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(t){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(t)},meridiem:function(t,e,n){return t<5?"לפנות בוקר":t<10?"בבוקר":t<12?n?'לפנה"צ':"לפני הצהריים":t<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("wd/R"))},xAZD:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}},xDBR:function(t,e){t.exports=!1},xOlK:function(t,e,n){var a=n("77kF"),r=n("FGWQ");t.exports=function(t,e){return t&&a(e,r(e),t)}},xSw7:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("Fgil"),i=n("aXbf"),s=n("o4+5"),u=n("SVse"),o=n("978R"),l=n("z/SZ"),d=n("2uy1");n("GgAd"),n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return h}));var c=a["ɵcrt"]({encapsulation:0,styles:[[".bg-info[_ngcontent-%COMP%]{background-color:#2b99a8!important}.bg-freespace[_ngcontent-%COMP%]{background-color:#d1d1d1!important}.progress[_ngcontent-%COMP%]{height:20px;position:relative;margin-bottom:0}.progress[_ngcontent-%COMP%]   div.progress-bar[_ngcontent-%COMP%]{position:static}.progress[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{position:absolute;display:block;width:100%;color:#000;font-weight:400}"]],data:{}});function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"table",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Used: "])),(t()(),a["ɵeld"](4,0,null,null,4,"td",[["class","text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,3,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,[" ",""])),a["ɵppd"](7,1),a["ɵppd"](8,1),(t()(),a["ɵeld"](9,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](10,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Free: "])),(t()(),a["ɵeld"](12,0,null,null,4,"td",[["class","'text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](13,0,null,null,3,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](14,null,["",""])),a["ɵppd"](15,1),a["ɵppd"](16,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,6,0,n.isBinary?t(e,7,0,a["ɵnov"](e.parent,0),n.used):t(e,8,0,a["ɵnov"](e.parent,1),n.used));t(e,6,0,r);var i=a["ɵunv"](e,14,0,n.isBinary?t(e,15,0,a["ɵnov"](e.parent,0),n.total-n.used):t(e,16,0,a["ɵnov"](e.parent,1),n.total-n.used));t(e,14,0,i)}))}function h(t){return a["ɵvid"](0,[a["ɵpid"](0,r.a,[i.a]),a["ɵpid"](0,s.a,[i.a]),a["ɵpid"](0,u.DecimalPipe,[a.LOCALE_ID]),(t()(),a["ɵand"](0,[["usageTooltipTpl",2]],null,0,null,f)),(t()(),a["ɵeld"](4,16777216,null,null,6,"div",[["class","progress"],["data-placement","left"]],null,null,null,null,null)),a["ɵdid"](5,212992,null,0,o.c,[a.ViewContainerRef,l.a,o.a,a.ElementRef,a.Renderer2,d.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"div",[["class","progress-bar bg-info"],["role","progressbar"]],[[4,"width",null]],null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](8,null,["","%"])),a["ɵppd"](9,2),(t()(),a["ɵeld"](10,0,null,null,0,"div",[["class","progress-bar bg-freespace"],["role","progressbar"]],[[4,"width",null]],null,null,null,null))],(function(t,e){t(e,5,0,a["ɵnov"](e,3),"left")}),(function(t,e){var n=e.component;t(e,6,0,n.usedPercentage+"%");var r=a["ɵunv"](e,8,0,t(e,9,0,a["ɵnov"](e,2),n.usedPercentage,"1.0-"+n.decimals));t(e,8,0,r),t(e,10,0,n.freePercentage+"%")}))}},xT5m:function(t,e,n){var a=n("SQuY"),r=n("7Igq"),i=n("jy8Y");function s(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new a;++e<n;)this.add(t[e])}s.prototype.add=s.prototype.push=r,s.prototype.has=i,t.exports=s},xTzq:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("LvDl");function r(...t){switch(t.length){case 1:return s.apply(void 0,t);case 3:return u.apply(void 0,t);default:throw new Error}}function i(t,e,n){const a="__ignore_"+e;Array.isArray(t[a])?t[a].push(n):t[a]=[n]}function s(t){for(const e of Object.getOwnPropertyNames(t.prototype)){const n=Object.getOwnPropertyDescriptor(t.prototype,e),a="constructor"===e;n.value instanceof Function&&!a&&(u(t.prototype,e,n),Object.defineProperty(t.prototype,e,n))}}function u(t,e,n){void 0===n&&(n=Object.getOwnPropertyDescriptor(t,e));const r=n.value;n.value=function(){const n="__ignore_"+e,i=t[n]||[],s=[];for(let t=0;t<arguments.length;t++)s[t]=a.isString(arguments[t])&&-1===i.indexOf(t)?encodeURIComponent(arguments[t]):arguments[t];const u=r.apply(this,s);return u}}},xbPD:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t=null){return e=>e.lift(new i(t))}class i{constructor(t){this.defaultValue=t}call(t,e){return e.subscribe(new s(t,this.defaultValue))}}class s extends a.a{constructor(t,e){super(t),this.defaultValue=e,this.isEmpty=!0}_next(t){this.isEmpty=!1,this.destination.next(t)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}},xdB7:function(t,e,n){var a=n("bX23"),r=n("l9nr"),i=n("H+zY"),s=Math.max;t.exports=function(t,e,n){var u=null==t?0:t.length;if(!u)return-1;var o=null==n?0:i(n);return o<0&&(o=s(u+o,0)),a(t,r(e,3),o)}},xgIS:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("HDdC"),r=n("DH7j"),i=n("n6bG"),s=n("lJxs");function u(t,e,n,o){return Object(i.a)(n)&&(o=n,n=void 0),o?u(t,e,n).pipe(Object(s.a)(t=>Object(r.a)(t)?o(...t):o(t))):new a.a(a=>{!function t(e,n,a,r,i){let s;if(function(t){return t&&"function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener}(e)){const t=e;e.addEventListener(n,a,i),s=()=>t.removeEventListener(n,a,i)}else if(function(t){return t&&"function"==typeof t.on&&"function"==typeof t.off}(e)){const t=e;e.on(n,a),s=()=>t.off(n,a)}else if(function(t){return t&&"function"==typeof t.addListener&&"function"==typeof t.removeListener}(e)){const t=e;e.addListener(n,a),s=()=>t.removeListener(n,a)}else{if(!e||!e.length)throw new TypeError("Invalid event target");for(let s=0,u=e.length;s<u;s++)t(e[s],n,a,r,i)}r.add(s)}(t,e,(function(t){a.next(arguments.length>1?Array.prototype.slice.call(arguments):t)}),a,n)})}},"xj/R":function(t,e,n){"use strict";function a(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function r(t){return"string"==typeof t}function i(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t){return t&&t.getTime&&!isNaN(t.getTime())}function u(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function o(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function f(t){return void 0===t}function h(t){const e=+t;let n=0;return 0!==e&&isFinite(e)&&(n=a(e)),n}n.d(e,"a",(function(){return Je})),n.d(e,"b",(function(){return Qe})),n.d(e,"c",(function(){return Qt})),n.d(e,"d",(function(){return Tt})),n.d(e,"e",(function(){return an})),n.d(e,"f",(function(){return _e})),n.d(e,"g",(function(){return rn})),n.d(e,"h",(function(){return R})),n.d(e,"i",(function(){return L})),n.d(e,"j",(function(){return E})),n.d(e,"k",(function(){return Xt})),n.d(e,"l",(function(){return k})),n.d(e,"m",(function(){return sn})),n.d(e,"n",(function(){return Ae})),n.d(e,"o",(function(){return l})),n.d(e,"p",(function(){return ke})),n.d(e,"q",(function(){return i})),n.d(e,"r",(function(){return s})),n.d(e,"s",(function(){return Ee})),n.d(e,"t",(function(){return D})),n.d(e,"u",(function(){return Le})),n.d(e,"v",(function(){return q})),n.d(e,"w",(function(){return P})),n.d(e,"x",(function(){return M})),n.d(e,"y",(function(){return un})),n.d(e,"z",(function(){return on})),n.d(e,"A",(function(){return ln})),n.d(e,"B",(function(){return Ne})),n.d(e,"C",(function(){return gn})),n.d(e,"D",(function(){return pn})),n.d(e,"E",(function(){return bt})),n.d(e,"F",(function(){return pt})),n.d(e,"G",(function(){return _t})),n.d(e,"H",(function(){return Ce})),n.d(e,"I",(function(){return bn}));const g={},p={date:"day",hour:"hours",minute:"minutes",second:"seconds",millisecond:"milliseconds"};function b(t,e){const n=t.toLowerCase();let a=t;n in p&&(a=p[n]),g[n]=g[n+"s"]=g[e]=a}function m(t){return r(t)?g[t]||g[t.toLowerCase()]:void 0}function y(t,e,n){const a=""+Math.abs(t);return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-a.length)).toString().substr(1)+a}let v={},x={};const _=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;function T(t,e,n,a){t&&(x[t]=a),e&&(x[e[0]]=function(){return y(a.apply(null,arguments),e[1],e[2])}),n&&(x[n]=function(e,n){return n.locale.ordinal(a.apply(null,arguments),t)})}function w(t,e,n){const a=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(t),a}function O(t,e=0,n=1,a=0,r=0,i=0,s=0){const u=new Date(t,e,n,a,r,i,s);return t<100&&t>=0&&isFinite(u.getFullYear())&&u.setFullYear(t),u}function S(t,e=!1){return e?t.getUTCHours():t.getHours()}function I(t,e=!1){return e?t.getUTCMinutes():t.getMinutes()}function N(t,e=!1){return e?t.getUTCSeconds():t.getSeconds()}function C(t,e=!1){return e?t.getUTCMilliseconds():t.getMilliseconds()}function R(t,e=!1){return e?t.getUTCDay():t.getDay()}function A(t,e=!1){return e?t.getUTCDate():t.getDate()}function k(t,e=!1){return e?t.getUTCMonth():t.getMonth()}function E(t,e=!1){return e?t.getUTCFullYear():t.getFullYear()}function L(t){return O(t.getFullYear(),t.getMonth(),1,t.getHours(),t.getMinutes(),t.getSeconds())}function D(t,e){return t.getDay()===e}function P(t,e){return!(!t||!e)&&M(t,e)&&k(t)===k(e)}function M(t,e){return!(!t||!e)&&E(t)===E(e)}function q(t,e){return!(!t||!e)&&M(t,e)&&P(t,e)&&A(t)===A(e)}const j=/\d/,F=/\d\d/,V=/\d{3}/,G=/\d{4}/,B=/[+-]?\d{6}/,z=/\d\d?/,Y=/\d\d\d\d?/,H=/\d\d\d\d\d\d?/,U=/\d{1,3}/,W=/\d{1,4}/,K=/[+-]?\d{1,6}/,$=/\d+/,J=/[+-]?\d+/,Z=/Z|[+-]\d\d(?::?\d\d)?/gi,Q=/[+-]?\d+(\.\d{1,3})?/,X=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,tt={};function et(t,e,n){tt[t]=u(e)?e:function(t,a){return t&&n?n:e}}function nt(t,e){return d(tt,t)?tt[t](!1,e):new RegExp(at(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(t,e,n,a,r)=>e||n||a||r)))}function at(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}const rt={};function it(t,e){const n=r(t)?[t]:t;let a=e;if(o(e)&&(a=function(t,n,a){return n[e]=h(t),a}),l(n)&&u(a)){let t;for(t=0;t<n.length;t++)rt[n[t]]=a}}function st(t,e){it(t,(function(t,n,a,r){return a._w=a._w||{},e(t,a._w,a,r)}))}function ut(t,e,n){return null!=e&&d(rt,t)&&rt[t](e,n._a,n,t),n}function ot(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function lt(t,e){return E(t,e.isUTC).toString()}function dt(t){return h(t)+(h(t)>68?1900:2e3)}function ct(t){return ft(t)?366:365}function ft(t){return t%4==0&&t%100!=0||t%400==0}function ht(t,e){if(isNaN(t)||isNaN(e))return NaN;const n=(e%12+12)%12;return 1===n?ft(t+(e-n)/12)?29:28:31-n%7%2}const gt={year:0,month:0,day:0,hour:0,minute:0,seconds:0};function pt(t,e){const n=Object.assign({},gt,e),a=t.getFullYear()+(n.year||0),r=t.getMonth()+(n.month||0);let i=t.getDate()+(n.day||0);return n.month&&!n.day&&(i=Math.min(i,ht(a,r))),O(a,r,i,t.getHours()+(n.hour||0),t.getMinutes()+(n.minute||0),t.getSeconds()+(n.seconds||0))}function bt(t,e){return O(mt(t.getFullYear(),e.year),mt(t.getMonth(),e.month),1,mt(t.getHours(),e.hour),mt(t.getMinutes(),e.minute),mt(t.getSeconds(),e.seconds),mt(t.getMilliseconds(),e.milliseconds))}function mt(t,e){return o(e)?e:t}function yt(t,e,n){const a=Math.min(A(t),ht(E(t),e));return n?t.setUTCMonth(e,a):t.setMonth(e,a),t}function vt(t,e,n){return n?t.setUTCDate(e):t.setDate(e),t}function xt(t){return new Date(t.getTime())}function _t(t,e,n){const a=xt(t);switch(e){case"year":yt(a,0,n);case"quarter":case"month":vt(a,1,n);case"week":case"isoWeek":case"day":case"date":!function(t,e,n){n?t.setUTCHours(0):t.setHours(0)}(a,0,n);case"hours":!function(t,e,n){n?t.setUTCMinutes(0):t.setMinutes(0)}(a,0,n);case"minutes":!function(t,e,n){n?t.setUTCSeconds(0):t.setSeconds(0)}(a,0,n);case"seconds":!function(t,e,n){n?t.setUTCMilliseconds(0):t.setMilliseconds(0)}(a,0,n)}return"week"===e&&function(t,e,n={}){Fe(t,0-ze(t,n.locale,n.isUTC),"day")}(a,0,{isUTC:n}),"isoWeek"===e&&function(t,e,n={}){const a=function(t,e=Xt()){return r(t)?e.weekdaysParse(t)%7||7:o(t)&&isNaN(t)?null:t}(1,n.locale);Ge(t,Be(t)%7?a:a-7)}(a),"quarter"===e&&yt(a,3*Math.floor(k(a,n)/3),n),a}function Tt(t,e,n){let a=e;return"date"===a&&(a="day"),function(t,e,n,a){return Ve(t,Me(1,"milliseconds"),-1,a)}(Fe(_t(t,a,n),1,"isoWeek"===a?"week":a,n),0,0,n)}function wt(t,e){const n=+_t(t,"day",e),a=+_t(t,"year",e);return Math.round((n-a)/864e5)+1}function Ot(t,e,n){const a=e-n+7;return-(w(t,0,a).getUTCDay()-e+7)%7+a-1}function St(t,e,n,a){const r=Ot(E(t,a),e,n),i=Math.floor((wt(t,a)-r-1)/7)+1;let s,u;return i<1?(u=E(t,a)-1,s=i+It(u,e,n)):i>It(E(t,a),e,n)?(s=i-It(E(t,a),e,n),u=E(t,a)+1):(u=E(t,a),s=i),{week:s,year:u}}function It(t,e,n){const a=Ot(t,e,n),r=Ot(t+1,e,n);return(ct(t)-a+r)/7}const Nt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ct="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Rt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),At="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),kt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Et="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Lt={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Dt=X,Pt=X;class Mt{constructor(t){t&&this.set(t)}set(t){let e;for(e in t){if(!t.hasOwnProperty(e))continue;const n=t[e];this[u(n)?e:"_"+e]=n}this._config=t}calendar(t,e,n){const a=this._calendar[t]||this._calendar.sameElse;return u(a)?a.call(null,e,n):a}longDateFormat(t){const e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])}get invalidDate(){return this._invalidDate}set invalidDate(t){this._invalidDate=t}ordinal(t,e){return this._ordinal.replace("%d",t.toString(10))}preparse(t){return t}preinput(t){return t}postvalue(t){return t}postformat(t){return t}relativeTime(t,e,n,a){const r=this._relativeTime[n];return u(r)?r(t,e,n,a):r.replace(/%d/i,t.toString(10))}pastFuture(t,e){const n=this._relativeTime[t>0?"future":"past"];return u(n)?n(e):n.replace(/%s/i,e)}months(t,e,n=!1){if(!t)return l(this._months)?this._months:this._months.standalone;if(l(this._months))return this._months[k(t,n)];const a=(this._months.isFormat||Nt).test(e)?"format":"standalone";return this._months[a][k(t,n)]}monthsShort(t,e,n=!1){if(!t)return l(this._monthsShort)?this._monthsShort:this._monthsShort.standalone;if(l(this._monthsShort))return this._monthsShort[k(t,n)];const a=Nt.test(e)?"format":"standalone";return this._monthsShort[a][k(t,n)]}monthsParse(t,e,n){let a,r,i;if(this._monthsParseExact)return this.handleMonthStrictParse(t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=new Date(Date.UTC(2e3,i)),n&&!this._longMonthsParse[i]){const t=this.months(a,"",!0).replace(".",""),e=this.monthsShort(a,"",!0).replace(".","");this._longMonthsParse[i]=new RegExp(`^${t}$`,"i"),this._shortMonthsParse[i]=new RegExp(`^${e}$`,"i")}if(n||this._monthsParse[i]||(r=`^${this.months(a,"",!0)}|^${this.monthsShort(a,"",!0)}`,this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[i].test(t))return i;if(n&&"MMM"===e&&this._shortMonthsParse[i].test(t))return i;if(!n&&this._monthsParse[i].test(t))return i}}monthsRegex(t){return this._monthsParseExact?(d(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=Pt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)}monthsShortRegex(t){return this._monthsParseExact?(d(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Dt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)}week(t,e){return St(t,this._week.dow,this._week.doy,e).week}firstDayOfWeek(){return this._week.dow}firstDayOfYear(){return this._week.doy}weekdays(t,e,n){if(!t)return l(this._weekdays)?this._weekdays:this._weekdays.standalone;if(l(this._weekdays))return this._weekdays[R(t,n)];const a=this._weekdays.isFormat.test(e)?"format":"standalone";return this._weekdays[a][R(t,n)]}weekdaysMin(t,e,n){return t?this._weekdaysMin[R(t,n)]:this._weekdaysMin}weekdaysShort(t,e,n){return t?this._weekdaysShort[R(t,n)]:this._weekdaysShort}weekdaysParse(t,e,n){let a,r;if(this._weekdaysParseExact)return this.handleWeekStrictParse(t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){const i=Ge(new Date(Date.UTC(2e3,1)),a,null,!0);if(n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp(`^${this.weekdays(i,"",!0).replace(".",".?")}$`,"i"),this._shortWeekdaysParse[a]=new RegExp(`^${this.weekdaysShort(i,"",!0).replace(".",".?")}$`,"i"),this._minWeekdaysParse[a]=new RegExp(`^${this.weekdaysMin(i,"",!0).replace(".",".?")}$`,"i")),this._weekdaysParse[a]||(r=`^${this.weekdays(i,"",!0)}|^${this.weekdaysShort(i,"",!0)}|^${this.weekdaysMin(i,"",!0)}`,this._weekdaysParse[a]=new RegExp(r.replace(".",""),"i")),!(l(this._fullWeekdaysParse)&&l(this._shortWeekdaysParse)&&l(this._minWeekdaysParse)&&l(this._weekdaysParse)))return;if(n&&"dddd"===e&&this._fullWeekdaysParse[a].test(t))return a;if(n&&"ddd"===e&&this._shortWeekdaysParse[a].test(t))return a;if(n&&"dd"===e&&this._minWeekdaysParse[a].test(t))return a;if(!n&&this._weekdaysParse[a].test(t))return a}}weekdaysRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=X),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}weekdaysShortRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=X),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}weekdaysMinRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=X),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}isPM(t){return"p"===t.toLowerCase().charAt(0)}meridiem(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}formatLongDate(t){this._longDateFormat=this._longDateFormat?this._longDateFormat:Lt;const e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,t=>t.slice(1)),this._longDateFormat[t])}handleMonthStrictParse(t,e,n){const a=t.toLocaleLowerCase();let r,i,s;if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)s=new Date(2e3,r),this._shortMonthsParse[r]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(s,"").toLocaleLowerCase();return n?"MMM"===e?(i=this._shortMonthsParse.indexOf(a),-1!==i?i:null):(i=this._longMonthsParse.indexOf(a),-1!==i?i:null):"MMM"===e?(i=this._shortMonthsParse.indexOf(a),-1!==i?i:(i=this._longMonthsParse.indexOf(a),-1!==i?i:null)):(i=this._longMonthsParse.indexOf(a),-1!==i?i:(i=this._shortMonthsParse.indexOf(a),-1!==i?i:null))}handleWeekStrictParse(t,e,n){let a;const r=t.toLocaleLowerCase();if(!this._weekdaysParse){let t;for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],t=0;t<7;++t){const e=Ge(new Date(Date.UTC(2e3,1)),t,null,!0);this._minWeekdaysParse[t]=this.weekdaysMin(e).toLocaleLowerCase(),this._shortWeekdaysParse[t]=this.weekdaysShort(e).toLocaleLowerCase(),this._weekdaysParse[t]=this.weekdays(e,"").toLocaleLowerCase()}}if(l(this._weekdaysParse)&&l(this._shortWeekdaysParse)&&l(this._minWeekdaysParse))return n?"dddd"===e?(a=this._weekdaysParse.indexOf(r),-1!==a?a:null):"ddd"===e?(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:null):(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null):"dddd"===e?(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null))):"ddd"===e?(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null))):(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:null)))}computeMonthsParse(){const t=[],e=[],n=[];let a,r;for(r=0;r<12;r++)a=new Date(2e3,r),t.push(this.monthsShort(a,"")),e.push(this.months(a,"")),n.push(this.months(a,"")),n.push(this.monthsShort(a,""));for(t.sort(qt),e.sort(qt),n.sort(qt),r=0;r<12;r++)t[r]=at(t[r]),e[r]=at(e[r]);for(r=0;r<24;r++)n[r]=at(n[r]);this._monthsRegex=new RegExp(`^(${n.join("|")})`,"i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(`^(${e.join("|")})`,"i"),this._monthsShortStrictRegex=new RegExp(`^(${t.join("|")})`,"i")}computeWeekdaysParse(){const t=[],e=[],n=[],a=[];let r;for(r=0;r<7;r++){const i=Ge(new Date(Date.UTC(2e3,1)),r,null,!0),s=this.weekdaysMin(i),u=this.weekdaysShort(i),o=this.weekdays(i);t.push(s),e.push(u),n.push(o),a.push(s),a.push(u),a.push(o)}for(t.sort(qt),e.sort(qt),n.sort(qt),a.sort(qt),r=0;r<7;r++)e[r]=at(e[r]),n[r]=at(n[r]),a[r]=at(a[r]);this._weekdaysRegex=new RegExp(`^(${a.join("|")})`,"i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(`^(${n.join("|")})`,"i"),this._weekdaysShortStrictRegex=new RegExp(`^(${e.join("|")})`,"i"),this._weekdaysMinStrictRegex=new RegExp(`^(${t.join("|")})`,"i")}}function qt(t,e){return e.length-t.length}const jt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:Lt,invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ct,monthsShort:Rt,week:{dow:0,doy:6},weekdays:At,weekdaysMin:Et,weekdaysShort:kt,meridiemParse:/[ap]\.?m?\.?/i};function Ft(t,e,n){const a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length);let i,s=0;for(i=0;i<a;i++)(n&&t[i]!==e[i]||!n&&h(t[i])!==h(e[i]))&&s++;return s+r}function Vt(t,e){T(null,[t,t.length,!1],null,e)}function Gt(t,e){return zt(t,e.locale).toString()}function Bt(t){return Yt(t).toString()}function zt(t,e=Xt(),n){return St(t,e.firstDayOfWeek(),e.firstDayOfYear(),n).year}function Yt(t,e){return St(t,1,4,e).year}function Ht(t,e){T(t,null,null,(function(t,n){let a=function(t,e={}){return e._isUTC?e._offset||0:function(t){return 15*-Math.round(t.getTimezoneOffset()/15)}(t)}(t,{_isUTC:n.isUTC,_offset:n.offset}),r="+";return a<0&&(a=-a,r="-"),r+y(~~(a/60),2)+e+y(~~a%60,2)}))}const Ut=/([\+\-]|\d\d)/gi,Wt={},Kt={};let $t;function Jt(t){return t?t.toLowerCase().replace("_","-"):t}function Zt(t,e){let n;return t&&(f(e)?n=Xt(t):r(t)&&(n=Qt(t,e)),n&&($t=n)),$t&&$t._abbr}function Qt(t,e){if(null===e)return delete Wt[t],$t=Xt("en"),null;if(!e)return;let n=jt;if(e.abbr=t,null!=e.parentLocale){if(null==Wt[e.parentLocale])return Kt[e.parentLocale]||(Kt[e.parentLocale]=[]),Kt[e.parentLocale].push({name:t,config:e}),null;n=Wt[e.parentLocale]._config}return Wt[t]=new Mt(function(t,e){const n=Object.assign({},t);for(const a in e)d(e,a)&&(c(t[a])&&c(e[a])?(n[a]={},Object.assign(n[a],t[a]),Object.assign(n[a],e[a])):null!=e[a]?n[a]=e[a]:delete n[a]);for(const a in t)d(t,a)&&!d(e,a)&&c(t[a])&&(n[a]=Object.assign({},n[a]));return n}(n,e)),Kt[t]&&Kt[t].forEach((function(t){Qt(t.name,t.config)})),Zt(t),Wt[t]}function Xt(t){return Wt.en||(Zt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal(t){const e=t%10;return t+(1===h(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),T("w",["ww",2,!1],"wo",(function(t,e){return function(t,e=Xt(),n){return e.week(t,void 0)}(t,e.locale).toString(10)})),T("W",["WW",2,!1],"Wo",(function(t){return function(t,e){return St(t,1,4,void 0).week}(t).toString(10)})),b("week","w"),b("isoWeek","W"),et("w",z),et("ww",z,F),et("W",z),et("WW",z,F),st(["w","ww","W","WW"],(function(t,e,n,a){return e[a.substr(0,1)]=h(t),n})),T(null,["gg",2,!1],null,(function(t,e){return(zt(t,e.locale)%100).toString()})),T(null,["GG",2,!1],null,(function(t){return(Yt(t)%100).toString()})),Vt("gggg",Gt),Vt("ggggg",Gt),Vt("GGGG",Bt),Vt("GGGGG",Bt),b("weekYear","gg"),b("isoWeekYear","GG"),et("G",J),et("g",J),et("GG",z,F),et("gg",z,F),et("GGGG",W,G),et("gggg",W,G),et("GGGGG",K,B),et("ggggg",K,B),st(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,a){return e[a.substr(0,2)]=h(t),n})),st(["gg","GG"],(function(t,e,n,a){return e[a]=dt(t),n})),T("Y",null,null,(function(t,e){const n=E(t,e.isUTC);return n<=9999?n.toString(10):"+"+n})),T(null,["YY",2,!1],null,(function(t,e){return(E(t,e.isUTC)%100).toString(10)})),T(null,["YYYY",4,!1],null,lt),T(null,["YYYYY",5,!1],null,lt),T(null,["YYYYYY",6,!0],null,lt),b("year","y"),et("Y",J),et("YY",z,F),et("YYYY",W,G),et("YYYYY",K,B),et("YYYYYY",K,B),it(["YYYYY","YYYYYY"],0),it("YYYY",(function(t,e,n){return e[0]=2===t.length?dt(t):h(t),n})),it("YY",(function(t,e,n){return e[0]=dt(t),n})),it("Y",(function(t,e,n){return e[0]=parseInt(t,10),n})),T("z",null,null,(function(t,e){return e.isUTC?"UTC":""})),T("zz",null,null,(function(t,e){return e.isUTC?"Coordinated Universal Time":""})),T("X",null,null,(function(t){return function(t){return Math.floor(t.valueOf()/1e3)}(t).toString(10)})),T("x",null,null,(function(t){return t.valueOf().toString(10)})),et("x",J),et("X",Q),it("X",(function(t,e,n){return n._d=new Date(1e3*parseFloat(t)),n})),it("x",(function(t,e,n){return n._d=new Date(h(t)),n})),T("s",["ss",2,!1],null,(function(t,e){return N(t,e.isUTC).toString(10)})),b("second","s"),et("s",z),et("ss",z,F),it(["s","ss"],5),T("Q",null,"Qo",(function(t,e){return function(t,e=!1){return Math.ceil((k(t,e)+1)/3)}(t,e.isUTC).toString(10)})),b("quarter","Q"),et("Q",j),it("Q",(function(t,e,n){return e[1]=3*(h(t)-1),n})),Ht("Z",":"),Ht("ZZ",""),et("Z",Z),et("ZZ",Z),it(["Z","ZZ"],(function(t,e,n){return n._useUTC=!0,n._tzm=function(t,e){const n=(e||"").match(t);if(null===n)return null;const a=n[n.length-1].match(Ut)||["-","0","0"],r=60*parseInt(a[1],10)+h(a[2]);return 0===r?0:"+"===a[0]?r:-r}(Z,t),n})),T("M",["MM",2,!1],"Mo",(function(t,e){return(k(t,e.isUTC)+1).toString(10)})),T("MMM",null,null,(function(t,e){return e.locale.monthsShort(t,e.format,e.isUTC)})),T("MMMM",null,null,(function(t,e){return e.locale.months(t,e.format,e.isUTC)})),b("month","M"),et("M",z),et("MM",z,F),et("MMM",(function(t,e){return e.monthsShortRegex(t)})),et("MMMM",(function(t,e){return e.monthsRegex(t)})),it(["M","MM"],(function(t,e,n){return e[1]=h(t)-1,n})),it(["MMM","MMMM"],(function(t,e,n,a){const r=n._locale.monthsParse(t,a,n._strict);return null!=r?e[1]=r:ot(n).invalidMonth=!!t,n})),T("m",["mm",2,!1],null,(function(t,e){return I(t,e.isUTC).toString(10)})),b("minute","m"),et("m",z),et("mm",z,F),it(["m","mm"],4),function(){let t;for(T("S",null,null,(function(t,e){return(~~(C(t,e.isUTC)/100)).toString(10)})),T(null,["SS",2,!1],null,(function(t,e){return(~~(C(t,e.isUTC)/10)).toString(10)})),T(null,["SSS",3,!1],null,(function(t,e){return C(t,e.isUTC).toString(10)})),T(null,["SSSS",4,!1],null,(function(t,e){return(10*C(t,e.isUTC)).toString(10)})),T(null,["SSSSS",5,!1],null,(function(t,e){return(100*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSS",6,!1],null,(function(t,e){return(1e3*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSS",7,!1],null,(function(t,e){return(1e4*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSSS",8,!1],null,(function(t,e){return(1e5*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSSSS",9,!1],null,(function(t,e){return(1e6*C(t,e.isUTC)).toString(10)})),b("millisecond","ms"),et("S",U,j),et("SS",U,F),et("SSS",U,V),t="SSSS";t.length<=9;t+="S")et(t,$);function e(t,e,n){return e[6]=h(1e3*parseFloat("0."+t)),n}for(t="S";t.length<=9;t+="S")it(t,e)}(),function(){function t(t,e){return S(t,e)%12||12}function e(t,e){T(t,null,null,(function(t,n){return n.locale.meridiem(S(t,n.isUTC),I(t,n.isUTC),e)}))}function n(t,e){return e._meridiemParse}T("H",["HH",2,!1],null,(function(t,e){return S(t,e.isUTC).toString(10)})),T("h",["hh",2,!1],null,(function(e,n){return t(e,n.isUTC).toString(10)})),T("k",["kk",2,!1],null,(function(t,e){return function(t,e){return S(t,e)||24}(t,e.isUTC).toString(10)})),T("hmm",null,null,(function(e,n){return`${t(e,n.isUTC)}${y(I(e,n.isUTC),2)}`})),T("hmmss",null,null,(function(e,n){return`${t(e,n.isUTC)}${y(I(e,n.isUTC),2)}${y(N(e,n.isUTC),2)}`})),T("Hmm",null,null,(function(t,e){return`${S(t,e.isUTC)}${y(I(t,e.isUTC),2)}`})),T("Hmmss",null,null,(function(t,e){return`${S(t,e.isUTC)}${y(I(t,e.isUTC),2)}${y(N(t,e.isUTC),2)}`})),e("a",!0),e("A",!1),b("hour","h"),et("a",n),et("A",n),et("H",z),et("h",z),et("k",z),et("HH",z,F),et("hh",z,F),et("kk",z,F),et("hmm",Y),et("hmmss",H),et("Hmm",Y),et("Hmmss",H),it(["H","HH"],3),it(["k","kk"],(function(t,e,n){const a=h(t);return e[3]=24===a?0:a,n})),it(["a","A"],(function(t,e,n){return n._isPm=n._locale.isPM(t),n._meridiem=t,n})),it(["h","hh"],(function(t,e,n){return e[3]=h(t),ot(n).bigHour=!0,n})),it("hmm",(function(t,e,n){const a=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a)),ot(n).bigHour=!0,n})),it("hmmss",(function(t,e,n){const a=t.length-4,r=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a,2)),e[5]=h(t.substr(r)),ot(n).bigHour=!0,n})),it("Hmm",(function(t,e,n){const a=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a)),n})),it("Hmmss",(function(t,e,n){const a=t.length-4,r=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a,2)),e[5]=h(t.substr(r)),n}))}(),T("DDD",["DDDD",3,!1],"DDDo",(function(t){return wt(t).toString(10)})),b("dayOfYear","DDD"),et("DDD",U),et("DDDD",V),it(["DDD","DDDD"],(function(t,e,n){return n._dayOfYear=h(t),n})),T("d",null,"do",(function(t,e){return R(t,e.isUTC).toString(10)})),T("dd",null,null,(function(t,e){return e.locale.weekdaysMin(t,e.format,e.isUTC)})),T("ddd",null,null,(function(t,e){return e.locale.weekdaysShort(t,e.format,e.isUTC)})),T("dddd",null,null,(function(t,e){return e.locale.weekdays(t,e.format,e.isUTC)})),T("e",null,null,(function(t,e){return ze(t,e.locale,e.isUTC).toString(10)})),T("E",null,null,(function(t,e){return function(t,e){return R(t,e)||7}(t,e.isUTC).toString(10)})),b("day","d"),b("weekday","e"),b("isoWeekday","E"),et("d",z),et("e",z),et("E",z),et("dd",(function(t,e){return e.weekdaysMinRegex(t)})),et("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),et("dddd",(function(t,e){return e.weekdaysRegex(t)})),st(["dd","ddd","dddd"],(function(t,e,n,a){const r=n._locale.weekdaysParse(t,a,n._strict);return null!=r?e.d=r:ot(n).invalidWeekday=!!t,n})),st(["d","e","E"],(function(t,e,n,a){return e[a]=h(t),n})),T("D",["DD",2,!1],"Do",(function(t,e){return A(t,e.isUTC).toString(10)})),b("date","D"),et("D",z),et("DD",z,F),et("Do",(function(t,e){return e._dayOfMonthOrdinalParse||e._ordinalParse})),it(["D","DD"],2),it("Do",(function(t,e,n){return e[2]=h(t.match(z)[0]),n}))),t?function(t){let e,n,a=0;for(;a<t.length;){const i=Jt(t[a]).split("-");let s=i.length;for(e=Jt(t[a+1]),e=e?e.split("-"):null;s>0;){if(r=i.slice(0,s).join("-"),Wt[r]||console.error(`Khronos locale error: please load locale "${r}" before using it`),n=Wt[r],n)return n;if(e&&e.length>=s&&Ft(i,e,!0)>=s-1)break;s--}a++}var r;return null}(l(t)?t:[t]):$t}const te=["year","quarter","month","week","day","hours","minutes","seconds","milliseconds"],ee=te.reduce((t,e)=>(t[e]=!0,t),{});function ne(t){return t<0?Math.floor(t):Math.ceil(t)}function ae(t){return 4800*t/146097}function re(t){return 146097*t/4800}let ie=Math.round;function se(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}class ue{constructor(t,e={}){this._data={},this._locale=Xt(),this._locale=e&&e._locale||Xt();const n=t.year||0,r=t.quarter||0,i=t.month||0,s=t.week||0,u=t.day||0,o=t.hours||0,l=t.minutes||0,d=t.seconds||0,c=t.milliseconds||0;return this._isValid=function(t){if(Object.keys(t).some(e=>e in ee&&null===t[e]||isNaN(t[e])))return!1;let e=!1;for(let n=0;n<te.length;++n)if(t[te[n]]){if(e)return!1;t[te[n]]!==h(t[te[n]])&&(e=!0)}return!0}(t),this._milliseconds=+c+1e3*d+60*l*1e3+1e3*o*60*60,this._days=+u+7*s,this._months=+i+3*r+12*n,function(t){let e=t._milliseconds,n=t._days,r=t._months;const i=t._data;e>=0&&n>=0&&r>=0||e<=0&&n<=0&&r<=0||(e+=864e5*ne(re(r)+n),n=0,r=0),i.milliseconds=e%1e3;const s=a(e/1e3);i.seconds=s%60;const u=a(s/60);i.minutes=u%60;const o=a(u/60);i.hours=o%24,n+=a(o/24);const l=a(ae(n));r+=l,n-=ne(re(l));const d=a(r/12);return r%=12,i.day=n,i.month=r,i.year=d,t}(this)}isValid(){return this._isValid}humanize(t){if(!this.isValid())return this.localeData().invalidDate;const e=this.localeData();let n=function(t,e,n){const a=Me(t).abs(),r=ie(a.as("s")),i=ie(a.as("m")),s=ie(a.as("h")),u=ie(a.as("d")),o=ie(a.as("M")),l=ie(a.as("y")),d=r<=44&&["s",r]||r<45&&["ss",r]||i<=1&&["m"]||i<45&&["mm",i]||s<=1&&["h"]||s<22&&["hh",s]||u<=1&&["d"]||u<26&&["dd",u]||o<=1&&["M"]||o<11&&["MM",o]||l<=1&&["y"]||["yy",l];return se.apply(null,[d[0],d[1],e,+t>0,n])}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}localeData(){return this._locale}locale(t){return t?(this._locale=Xt(t)||this._locale,this):this._locale._abbr}abs(){const t=Math.abs,e=this._data;return this._milliseconds=t(this._milliseconds),this._days=t(this._days),this._months=t(this._months),e.milliseconds=t(e.milliseconds),e.seconds=t(e.seconds),e.minutes=t(e.minutes),e.hours=t(e.hours),e.month=t(e.month),e.year=t(e.year),this}as(t){if(!this.isValid())return NaN;let e,n;const a=this._milliseconds,r=m(t);if("month"===r||"year"===r)return e=this._days+a/864e5,n=this._months+ae(e),"month"===r?n:n/12;switch(e=this._days+Math.round(re(this._months)),r){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hours":return 24*e+a/36e5;case"minutes":return 1440*e+a/6e4;case"seconds":return 86400*e+a/1e3;case"milliseconds":return Math.floor(864e5*e)+a;default:throw new Error("Unknown unit "+r)}}valueOf(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*h(this._months/12):NaN}}function oe(t){if(null==t._isValid){const e=ot(t),n=Array.prototype.some.call(e.parsedDateParts,(function(t){return null!=t}));let a=!isNaN(t._d&&t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(a=a&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return a;t._isValid=a}return t._isValid}function le(t,e){return t._d=new Date(NaN),Object.assign(ot(t),e||{userInvalidated:!0}),t}const de=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fe=/Z|[+-]\d\d(?::?\d\d)?/,he=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/,!0],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/,!0],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/,!0],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/,!0],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/,!0],["YYYYMMDD",/\d{8}/,!0],["GGGG[W]WWE",/\d{4}W\d{3}/,!0],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/,!0]],ge=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pe=/^\/?Date\((\-?\d+)/i,be={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480},me=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function ye(t){if(!r(t._i))return t;const e=t._i,n=de.exec(e)||ce.exec(e);let a,i,s,u,o,l;if(!n)return t._isValid=!1,t;for(o=0,l=he.length;o<l;o++)if(he[o][1].exec(n[1])){i=he[o][0],a=!1!==he[o][2];break}if(null==i)return t._isValid=!1,t;if(n[3]){for(o=0,l=ge.length;o<l;o++)if(ge[o][1].exec(n[3])){s=(n[2]||" ")+ge[o][0];break}if(null==s)return t._isValid=!1,t}if(!a&&null!=s)return t._isValid=!1,t;if(n[4]){if(!fe.exec(n[4]))return t._isValid=!1,t;u="Z"}return t._f=i+(s||"")+(u||""),Ie(t)}function ve(t){const e=parseInt(t,10);return e<=49?e+2e3:e}function xe(t){if(!r(t._i))return t;const e=me.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(!e)return function(t){return t._isValid=!1,t}(t);const n=function(t,e,n,a,r,i){const s=[ve(t),Rt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)];return i&&s.push(parseInt(i,10)),s}(e[4],e[3],e[2],e[5],e[6],e[7]);return function(t,e,n){return!t||kt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(ot(n).weekdayMismatch=!0,n._isValid=!1,!1)}(e[1],n,t)?(t._a=n,t._tzm=function(t,e,n){if(t)return be[t];if(e)return 0;{const t=parseInt(n,10),e=t%100;return(t-e)/100*60+e}}(e[8],e[9],e[10]),t._d=w.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),ot(t).rfc2822=!0,t):t}function _e(t,e,n,a,r=0){const i=Xt(n||"en");if(!i)throw new Error(`Locale "${n}" is not defined, please add it with "defineLocale(...)"`);const o=function(t,e,n,a,r=0){if(!s(t))return n.invalidDate;const i=Te(e,n);return v[i]=v[i]||function(t){const e=t.match(_),n=e.length,a=new Array(n);for(let i=0;i<n;i++)a[i]=x[e[i]]?x[e[i]]:(r=e[i]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");var r;return function(e,r,i,s=0){const o=r.postvalue(e);let l="";for(let d=0;d<n;d++)l+=u(a[d])?a[d].call(null,o,{format:t,locale:r,isUTC:i,offset:s}):a[d];return l}}(i),v[i](t,n,a,r)}(t,e||(a?"YYYY-MM-DDTHH:mm:ss[Z]":"YYYY-MM-DDTHH:mm:ssZ"),i,a,r);return o?i.postformat(o):o}function Te(t,e){let n=t,a=5;const r=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,i=t=>e.formatLongDate(t)||t;for(r.lastIndex=0;a>=0&&r.test(n);)n=n.replace(r,i),r.lastIndex=0,a-=1;return n}function we(t,e,n){return null!=t?t:null!=e?e:n}function Oe(t){const e=[];let n,a,r,i,s;if(t._d)return t;for(r=function(t){const e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){let e,n,a,r,i,s,u,o;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)i=1,s=4,n=we(e.GG,t._a[0],St(new Date,1,4).year),a=we(e.W,1),r=we(e.E,1),(r<1||r>7)&&(o=!0);else{i=t._locale._week.dow,s=t._locale._week.doy;const u=St(new Date,i,s);n=we(e.gg,t._a[0],u.year),a=we(e.w,u.week),null!=e.d?(r=e.d,(r<0||r>6)&&(o=!0)):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(o=!0)):r=i}a<1||a>It(n,i,s)?ot(t)._overflowWeeks=!0:null!=o?ot(t)._overflowWeekday=!0:(u=function(t,e,n,a,r){const i=1+7*(e-1)+(7+n-a)%7+Ot(t,a,r);let s,u;return i<=0?(s=t-1,u=ct(s)+i):i>ct(t)?(s=t+1,u=i-ct(t)):(s=t,u=i),{year:s,dayOfYear:u}}(n,a,r,i,s),t._a[0]=u.year,t._dayOfYear=u.dayOfYear)}(t),null!=t._dayOfYear&&(s=we(t._a[0],r[0]),(t._dayOfYear>ct(s)||0===t._dayOfYear)&&(ot(t)._overflowDayOfYear=!0),a=new Date(Date.UTC(s,0,t._dayOfYear)),t._a[1]=a.getUTCMonth(),t._a[2]=a.getUTCDate()),n=0;n<3&&null==t._a[n];++n)t._a[n]=e[n]=r[n];for(;n<7;n++)t._a[n]=e[n]=null==t._a[n]?2===n?1:0:t._a[n];return 24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?w:O).apply(null,e),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(ot(t).weekdayMismatch=!0),t}function Se(t){let e;const n=t._a;return n&&-2===ot(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>ht(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,ot(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),ot(t)._overflowWeeks&&-1===e&&(e=7),ot(t)._overflowWeekday&&-1===e&&(e=8),ot(t).overflow=e),t}function Ie(t){if("ISO_8601"===t._f)return ye(t);if("RFC_2822"===t._f)return xe(t);if(t._a=[],ot(t).empty=!0,l(t._f)||!t._i&&0!==t._i)return t;let e=t._i.toString(),n=0;const a=e.length,r=Te(t._f,t._locale).match(_)||[];let i,s,u,o;for(i=0;i<r.length;i++)s=r[i],u=(e.match(nt(s,t._locale))||[])[0],u&&(o=e.substr(0,e.indexOf(u)),o.length>0&&ot(t).unusedInput.push(o),e=e.slice(e.indexOf(u)+u.length),n+=u.length),x[s]?(u?ot(t).empty=!1:ot(t).unusedTokens.push(s),ut(s,u,t)):t._strict&&!u&&ot(t).unusedTokens.push(s);return ot(t).charsLeftOver=a-n,e.length>0&&ot(t).unusedInput.push(e),t._a[3]<=12&&!0===ot(t).bigHour&&t._a[3]>0&&(ot(t).bigHour=void 0),ot(t).parsedDateParts=t._a.slice(0),ot(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){let a=e;if(null==n)return a;if(null!=t.meridiemHour)return t.meridiemHour(a,n);if(null==t.isPM)return a;const r=t.isPM(n);return r&&a<12&&(a+=12),r||12!==a||(a=0),a}(t._locale,t._a[3],t._meridiem),Oe(t),Se(t)}function Ne(t,e,n,a,s){return i(t)?t:function(t,e,n,a,s){const u={};let h=t;return(c(h)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;let e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(h)||l(h)&&0===h.length)&&(h=void 0),u._useUTC=u._isUTC=s,u._l=n,u._i=h,u._f=e,u._strict=a,function(t){const e=Se(function(t){let e=t._i;const n=t._f;return t._locale=t._locale||Xt(t._l),null===e||void 0===n&&""===e?le(t,{nullInput:!0}):(r(e)&&(t._i=e=t._locale.preparse(e)),i(e)?(t._d=xt(e),t):(l(n)?function(t){let e,n,a,r,i;if(!t._f||0===t._f.length)return ot(t).invalidFormat=!0,le(t);for(i=0;i<t._f.length;i++)r=0,e=Object.assign({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],Ie(e),oe(e)&&(r+=ot(e).charsLeftOver,r+=10*ot(e).unusedTokens.length,ot(e).score=r,(null==a||r<a)&&(a=r,n=e));Object.assign(t,n||e)}(t):n?Ie(t):function(t){const e=t._i;if(f(e))t._d=new Date;else if(i(e))t._d=xt(e);else if(r(e))!function(t){if(!r(t._i))return t;const e=pe.exec(t._i);null!==e?t._d=new Date(+e[1]):(ye(t),!1!==t._isValid||(delete t._isValid,xe(t),!1!==t._isValid||(delete t._isValid,le(t))))}(t);else if(l(e)&&e.length){const n=e.slice(0);t._a=n.map(t=>r(t)?parseInt(t,10):t),Oe(t)}else if(c(e))!function(t){if(t._d)return t;const e=t._i;if(c(e)){const n=function(t){const e={};let n,a;for(a in t)d(t,a)&&(n=m(a),n&&(e[n]=t[a]));return e}(e);t._a=[n.year,n.month,n.day,n.hours,n.minutes,n.seconds,n.milliseconds].map(t=>r(t)?parseInt(t,10):t)}Oe(t)}(t);else{if(!o(e))return le(t);t._d=new Date(e)}}(t),oe(t)||(t._d=null),t))}(t));return e._d=new Date(null!=e._d?e._d.getTime():NaN),oe(Object.assign({},e,{_isValid:null}))||(e._d=new Date(NaN)),e}(u)}(t,e,n,a,s)._d}function Ce(t){return t instanceof Date?new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()):null}function Re(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ae(t,e,n="milliseconds"){return!(!t||!e)&&("milliseconds"===n?t.valueOf()>e.valueOf():e.valueOf()<_t(t,n).valueOf())}function ke(t,e,n="milliseconds"){return!(!t||!e)&&("milliseconds"===n?t.valueOf()<e.valueOf():Tt(t,n).valueOf()<e.valueOf())}function Ee(t,e){return!(void 0===e||!e||!e.length)&&e.some(e=>e===t.getDay())}function Le(t,e,n="milliseconds"){if(!t||!e)return!1;if("milliseconds"===n)return t.valueOf()===e.valueOf();const a=e.valueOf();return _t(t,n).valueOf()<=a&&a<=Tt(t,n).valueOf()}const De=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Pe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Me(t,e,n={}){const a=function(t,e){if(null==t)return{};if(t instanceof ue)return{milliseconds:t._milliseconds,day:t._days,month:t._months};if(o(t))return e?{[e]:t}:{milliseconds:t};if(r(t)){let e=De.exec(t);if(e){const t="-"===e[1]?-1:1;return{year:0,day:h(e[2])*t,hours:h(e[3])*t,minutes:h(e[4])*t,seconds:h(e[5])*t,milliseconds:h(Re(1e3*h(e[6])))*t}}if(e=Pe.exec(t),e){const t="-"===e[1]?-1:1;return{year:qe(e[2],t),month:qe(e[3],t),week:qe(e[4],t),day:qe(e[5],t),hours:qe(e[6],t),minutes:qe(e[7],t),seconds:qe(e[8],t)}}}if(c(t)&&("from"in t||"to"in t)){const e=function(t,e){if(!s(t)||!s(e))return{milliseconds:0,months:0};let n;const a=function(t,e,n={}){if(!n._isUTC)return t;const a=xt(e),r=6e4*(n._offset||0),i=t.valueOf()-a.valueOf()+r;return a.setTime(a.valueOf()+i),a}(e,t,{_offset:t.getTimezoneOffset()});return ke(t,a)?n=je(t,a):(n=je(a,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n}(Ne(t.from),Ne(t.to));return{milliseconds:e.milliseconds,month:e.months}}return t}(t,e);return new ue(a,n)}function qe(t,e){const n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function je(t,e){const n={milliseconds:0,months:0};return n.months=k(e)-k(t)+12*(E(e)-E(t)),Ae(Fe(xt(t),n.months,"month"),e)&&--n.months,n.milliseconds=+e-+Fe(xt(t),n.months,"month"),n}function Fe(t,e,n,a){return Ve(t,Me(e,n),1,a)}function Ve(t,e,n,a){const r=e._milliseconds,i=Re(e._days),s=Re(e._months);return s&&yt(t,k(t,a)+s*n,a),i&&vt(t,A(t,a)+i*n,a),r&&function(t,e){t.setTime(e)}(t,function(t){return t.getTime()}(t)+r*n),xt(t)}function Ge(t,e,n=Xt(),a){const i=R(t,a);return Fe(t,function(t,e){if(!r(t))return t;const n=parseInt(t,10);if(!isNaN(n))return n;const a=e.weekdaysParse(t);return o(a)?a:null}(e,n)-i,"day")}function Be(t,e){return R(t,e)}function ze(t,e=Xt(),n){return(R(t,n)+7-e.firstDayOfWeek())%7}const Ye="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),He="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");function Ue(t){return t>1&&t<5&&1!=~~(t/10)}function We(t,e,n,a){const r=t+" ";switch(n){case"s":return e||a?"pár sekund":"pár sekundami";case"ss":return e||a?r+(Ue(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(Ue(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(Ue(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(Ue(t)?"dny":"dní"):r+"dny";case"M":return e||a?"měsíc":"měsícem";case"MM":return e||a?r+(Ue(t)?"měsíce":"měsíců"):r+"měsíci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(Ue(t)?"roky":"let"):r+"lety"}}const Ke=function(t){let e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n},$e=function(t){let e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n},Je={abbr:"cs",months:Ye,monthsShort:He,monthsParse:function(t,e){let n,a=[];for(n=0;n<12;n++)a[n]=new RegExp("^"+t[n]+"$|^"+e[n]+"$","i");return a}(Ye,He),shortMonthsParse:Ke(He),longMonthsParse:$e(Ye),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek(t){switch(Be(t)){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek(t){switch(Be(t)){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:We,ss:We,m:We,mm:We,h:We,hh:We,d:We,dd:We,M:We,MM:We,y:We,yy:We},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};function Ze(t,e,n,a){const r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}const Qe={abbr:"de",months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ze,mm:"%d Minuten",h:Ze,hh:"%d Stunden",d:Ze,dd:Ze,M:Ze,MM:Ze,y:Ze,yy:Ze},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};let Xe="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),tn="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),en=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],nn=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;const an={abbr:"es",months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:(t,e,n)=>t?/-MMM-/.test(e)?tn[k(t,n)]:Xe[k(t,n)]:Xe,monthsRegex:nn,monthsShortRegex:nn,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:en,longMonthsParse:en,shortMonthsParse:en,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:t=>"[hoy a la"+(1!==S(t)?"s":"")+"] LT",nextDay:t=>"[mañana a la"+(1!==S(t)?"s":"")+"] LT",nextWeek:t=>"dddd [a la"+(1!==S(t)?"s":"")+"] LT",lastDay:t=>"[ayer a la"+(1!==S(t)?"s":"")+"] LT",lastWeek:t=>"[el] dddd [pasado a la"+(1!==S(t)?"s":"")+"] LT",sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}},rn={abbr:"fr",months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal(t,e){const n=Number(t);switch(e){case"D":return n+(1===n?"er":"");default:case"M":case"Q":case"DDD":case"d":return n+(1===n?"er":"e");case"w":case"W":return n+(1===n?"re":"e")}},week:{dow:1,doy:4}},sn={abbr:"id",months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:(t,e)=>(12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0),meridiem:(t,e,n)=>t<11?"pagi":t<15?"siang":t<19?"sore":"malam",calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}},un={abbr:"it",months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek(t){switch(Be(t)){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:t=>(/^[0-9].+$/.test(t.toString(10))?"tra":"in")+" "+t,past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}},on={abbr:"ja",months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 HH:mm dddd",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日 HH:mm dddd"},meridiemParse:/午前|午後/i,isPM:t=>"午後"===t,meridiem:(t,e,n)=>t<12?"午前":"午後",calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t.toString(10)}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}},ln={abbr:"ko",months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t.toString(10)}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}};let dn="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),cn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function fn(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function hn(t,e,n){let a=t+" ";switch(n){case"ss":return a+(fn(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return a+(fn(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return a+(fn(t)?"godziny":"godzin");case"MM":return a+(fn(t)?"miesiące":"miesięcy");case"yy":return a+(fn(t)?"lata":"lat")}}const gn={abbr:"pl",months:(t,e,n)=>t?""===e?"("+cn[k(t,n)]+"|"+dn[k(t,n)]+")":/D MMMM/.test(e)?cn[k(t,n)]:dn[k(t,n)]:dn,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek(t){switch(Be(t)){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 5:return"[W piątek o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek(t){switch(Be(t)){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 4:return"[W zeszłą czwartek o] LT";case 5:return"[W zeszłą piątek o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:hn,m:hn,mm:hn,h:hn,hh:hn,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:hn,y:"rok",yy:hn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}},pn={abbr:"pt-br",months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:t=>0===Be(t)||6===Be(t)?"[Último] dddd [às] LT":"[Última] dddd [às] LT",sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"},bn={abbr:"zh-cn",months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:(t,e)=>(12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12),meridiem(t,e,n){let a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal(t,e){const n=Number(t);switch(e){case"d":case"D":case"DDD":return n+"日";case"M":return n+"月";case"w":case"W":return n+"周";default:return n.toString()}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}}},xluM:function(t,e){var n=Function.prototype.call;t.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},xrYK:function(t,e,n){var a=n("4zBA"),r=a({}.toString),i=a("".slice);t.exports=function(t){return i(r(t),8,-1)}},xs3f:function(t,e,n){var a=n("2oRo"),r=n("zk60"),i=a["__core-js_shared__"]||r("__core-js_shared__",{});t.exports=i},"y/5f":function(t,e,n){(function(t){var a=n("Wa4q"),r=n("KQir"),i=e&&!e.nodeType&&e,s=i&&"object"==typeof t&&t&&!t.nodeType&&t,u=s&&s.exports===i?a.Buffer:void 0;t.exports=(u?u.isBuffer:void 0)||r}).call(this,n("YuTi")(t))},yCtX:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("HDdC"),r=n("ngJS"),i=n("jZKg");function s(t,e){return e?Object(i.a)(t,e):new a.a(Object(r.a)(t))}},yGOH:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},yJti:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t[t.ValueOk=0]="ValueOk",t[t.ValueStale=1]="ValueStale",t[t.ValueNone=2]="ValueNone",t[t.ValueException=3]="ValueException",t}({})},yPMs:function(t,e,n){!function(t){"use strict";t.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(t){return"M"===t.charAt(0)},meridiem:function(t,e,n){return t<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},yT6U:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e=!1){let n=t;return(!a.isArray(t)||a.isArray(t)&&e)&&(n=[t]),n}}},yYhs:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("CoVI"),s=n("mfoh"),u=(n("CFvb"),n("MP8s"),n("f95s"),n("gk6K")),o=(n("dApe"),n("ZhuC")),l=n("fxL3"),d=n("TNUL"),c=n("rZud"),f=n("woSy"),h=n("jV1L"),g=n("pcHL"),p=n("WaXT"),b=n("OIDT"),m=n("HIU9"),y=n("uNpg"),v=n("Fwy9"),x=n("C523"),_=n("4Dmd");n("14R3"),n.d(e,"b",(function(){return T})),n.d(e,"a",(function(){return s.a}));var T=function(){function t(){}var e;return e=t,t.forRoot=function(){return{ngModule:e,providers:[u.a]}},e=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var u=t.length-1;u>=0;u--)(r=t[u])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.NgModule)({declarations:[l.a,d.a,c.a,o.a,v.a,x.a,h.a,g.a,f.a,p.a,m.a,b.a,y.a,_.a,i.a],exports:[l.a,d.a,c.a,o.a,v.a,x.a,h.a,g.a,f.a,p.a,m.a,b.a,y.a,_.a,i.a],imports:[r.CommonModule],providers:[]})],t)}()},"yb/u":function(t,e,n){var a=n("ioe2"),r=n("FGWQ");t.exports=function(t){return null==t?[]:a(t,r(t))}},yoRg:function(t,e,n){var a=n("4zBA"),r=n("Gi26"),i=n("/GqU"),s=n("TWQb").indexOf,u=n("0BK2"),o=a([].push);t.exports=function(t,e){var n,a=i(t),l=0,d=[];for(n in a)!r(u,n)&&r(a,n)&&o(d,n);for(;e.length>l;)r(a,n=e[l++])&&(~s(d,n)||o(d,n));return d}},"yt+r":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="es-ES">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Alternar navegación</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Consola</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Clúster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servicios</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuración</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mapa de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Módulos de gestor</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Registros</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Repositorios</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloque</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Imágenes</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Duplicación</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemas de archivos</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Usuarios</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Papeleras</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Seleccione un idioma</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Cargando datos del panel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Selector de hora de Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Restablecer ajustes</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Atrás</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Error al cargar los datos.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>seleccionados</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>encontrados</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nombre</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descripción</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descripción larga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Opción por defecto</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon por defecto</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valores</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Guardar</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visor del mapa de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Cargando...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nombre de host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo es obligatorio.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sí, seguro.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Cerrar</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Rendimiento general</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>No se encuentra ninguna entrada</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Registros del clúster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de auditoría</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Cargando configuración...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>No es posible cargar la configuración.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Módulo del gestor de edición</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>El valor introducido no es un UUID válido, por ejemplo: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>El valor introducido debe ser una dirección IP válida.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>El valor introducido debe ser un número.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>El valor introducido debe ser un número o un decimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Actualizar</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID de clúster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Mapa de supervisión modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>Época de mapa de supervisión</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quórum de con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quórum de mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con requerido</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon requerido</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Con quórum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Sin quórum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Añadir</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Características</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Indicadores OSD de todo el clúster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzado...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridad de recuperación de OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioridad</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizar valores de prioridad</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Este campo es obligatorio.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>El valor debe estar entre 0 y 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Reequilibrar peso</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profundo} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profundo} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista de OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Editar</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Suprimir</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estadísticas</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clientes</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Cualquier cliente puede acceder</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Destinatarios</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo requerido</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Debe contener uno o varios valores separados por comas</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Por ejemplo:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo de acceso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Reducir privilegios</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Añadir clientes</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- No hay ningún clúster disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Seleccione el clúster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Añadir daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Motor de almacenamiento</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- No hay ningún repositorio de datos disponible --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Seleccione el motor de almacenamiento --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Usuario de Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- No hay ningún usuario disponible --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Seleccione el usuario de Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID de usuario de CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- No hay ningún cliente disponible --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Seleccione el cliente de CephX --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nombre de CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etiqueta de seguridad</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar etiqueta de seguridad</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Ruta de CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>La ruta debe empezar por "/" y puede ir seguida de una palabra</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Se creará un directorio nuevo</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Ruta</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>La ruta solo puede ser una "/" o una palabra</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Se creará una papelera nueva</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocolo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Etiqueta NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Puede que los clientes no monten subdirectorios (es decir, si Etiqueta = foo, el cliente puede que no monte foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Al usar distintas opciones de Etiqueta, la misma Ruta se puede exportar varias veces.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Al usar distintas opciones de Pseudo, la misma Ruta se puede exportar varias veces.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- No hay ningún tipo de acceso disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Seleccione el tipo de acceso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- No hay ninguna reducción de privilegios disponible --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Seleccione el tipo de reducción de privilegios de ID de usuario que se va a realizar --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocolo de transporte</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>¡Bienvenidos a Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>El nombre de usuario es obligatorio</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>La contraseña es obligatoria</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Entrada</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Lo sentimos. El usuario no existe en Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Prohibido</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Lo sentimos. No tiene permiso para ver lo que busca.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuración de RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Elimina el valor de configuración local. Se heredará y usará en su lugar el valor de configuración padre.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>El valor mínimo es 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista de repositorios</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>El nombre solo puede tener caracteres alfanuméricos, guiones y guiones bajos.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>El nombre del perfil de código de borrado que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Complemento</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Porciones de datos (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Debe ser igual o mayor que 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Porciones de código (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Debe ser igual o mayor que 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimador de durabilidad (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localización (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dominio de error de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localización de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Ninguna</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Técnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tamaño del paquete</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Raíz de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Clase de dispositivo de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>cualquiera</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Directorio</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nombre...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>El nombre del repositorio de Ceph que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo de repositorio</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Seleccione un tipo de repositorio --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de colocación</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Se necesita al menos un grupo de colocación.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>El clúster no puede gestionar tantos grupos de colocación. Vuelva a calcular la cantidad que necesita.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ayuda para el cálculo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tamaño replicado</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Indicadores</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sustituciones de códigos de borrado</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- No hay ningún perfil de código de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Seleccione un perfil de código de borrado --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Conjunto de reglas de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Seleccione una regla de CRUSH --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regla de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Pasos de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compresión</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modo</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- No hay ningún algoritmo de compresión de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamaño de Blob mínimo</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>p. ej. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>El valor debe ser mayor que 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamaño de Blob máximo</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>p. ej. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>El valor debe ser mayor que el tamaño de Blob mínimo</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Relación</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Relación de compresión</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>El valor debe estar entre 0,0 y 1,0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ej.: 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detalles</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalles de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalles de niveles de caché</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Mover una imagen a la papelera</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protección caduca a las</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>SIN PROTECCIÓN</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato de fecha erróneo. Use el formato "AAAA-MM-DD HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protección ya ha caducado. Seleccione una fecha del futuro o deje el campo vacío.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Mover imagen</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Resumen</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinos</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticación de descubrimiento</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuario</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Los nombres de usuario deben tener entre 8 y 64 caracteres y\n                        solo pueden incluir letras y estos caracteres: ".", "@", "-", "_" o ":".</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Contraseña</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usuario mutuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Contraseña mutua</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Información disponible:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI no disponibles</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Repositorio</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Repositorio de datos</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Creados</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tamaño</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tamaño del objeto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Aprovisionados</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/D</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unidad de repartición</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Recuento de repartición</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Padre</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefijo de nombre de bloque</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Orden</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantáneas</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagen</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Este ajuste sustituye al valor global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Este es el valor global. No se ha definido ningún valor para esta opción para esta imagen.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>No se permiten los caracteres "/" ni "@".</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- No hay ningún repositorio RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Seleccione un repositorio --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Usar un repositorio dedicado para datos</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Repositorio de datos</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Repositorio dedicado para almacenar los datos de objeto de RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Debe aumentar el tamaño.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanzado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Repartición</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidad de repartición</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Seleccione la unidad de repartición --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Este campo es obligatorio porque se ha definido el recuento de repartición.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>La unidad de repartición es mayor que el tamaño del objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Recuento de repartición</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Este campo es obligatorio porque se ha definido la unidad de repartición.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>El recuento de repartición debe ser mayor que 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Se dispone a revertir</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vaciar papelera</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Todas</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Repositorio:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nombre del repositorio...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar imágenes</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Para restaurar</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>escriba el nombre nuevo de la imagen y haga clic en</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nombre nuevo</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Caducó a las</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protección hasta</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topología iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Normalmente no es necesario cambiar los valores por defecto de estos parámetros.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ajustes</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Almacén</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Ajustes avanzados</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN de destino</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>El IQN tiene un patrón erróneo.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Por ejemplo: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Más información</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Este destino tiene ajustes avanzados modificados.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portales</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Añadir portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagen tiene ajustes modificados.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Añadir imagen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticación de ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciadores</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciador</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN del cliente</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>El IQN del iniciador debe ser exclusivo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Los nombres de usuario deben tener entre 8 y 64 caracteres y\n                        solo pueden incluir letras y estos caracteres: ".", "@", "-", "_" o ":".</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>El iniciador pertenece a un grupo. Las imágenes se configurarán en el grupo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>No se ha añadido ningún elemento.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Añadir iniciador</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupos</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Añadir grupo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Papelera</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemas</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizando</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Listo</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Editar modo de duplicación de repositorio</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Los clústeres de par deben eliminarse antes de inhabilitar la duplicación.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Editar} other {Añadir} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nombre del clúster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>El nombre del clúster no es válido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID de CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID de CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>El ID de CephX no es válido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Direcciones de monitores</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Direcciones delimitadas por comas...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>La dirección del monitor no es válida.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Clave de CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Clave con cifrado base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La clave de CephX debe tener cifrado base64</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Los contadores de rendimiento no están disponibles</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contadores de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Cargando datos de la papelera...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>El valor no es válido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>El nombre que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propietario</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Seleccione un usuario --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Habilitado</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo de índice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regla de colocación</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marcador</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marcador máximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versión</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versión maestra</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Hora de modificación</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Grupo de zona</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Cuota de papelera</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamaño máximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Sin límite</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Número máximo de objetos</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nombre de usuario</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Seleccione un nombre de usuario --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Autogenerar clave</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clave de acceso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clave secreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nombre completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Dirección de correo electrónico</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendido</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Número máximo de papeleras</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusuarios</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacidades</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cuota de usuario</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Claves</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Seleccione un tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Permiso</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Seleccione un permiso --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusuario</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>El ID de subusuario que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lectura, escritura</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>todos</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Clave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Autogenerar secreto</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Cargando datos del usuario...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>No es posible cargar los datos del usuario.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>El ID de usuario que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Esta dirección no es válida.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>La dirección de correo electrónico que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Máx. papeleras</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Inhabilitado</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizar</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>No hay ningún subusuario.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>No hay ninguna clave.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>No hay ninguna capacidad</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tamaño ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tamaño máx.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objetos ilimitados</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Objetos máx.</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>El valor introducido debe ser mayor o igual que 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descripción...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permisos</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Funciones</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar contraseña</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Las contraseñas no coinciden.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Correo electrónico</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Correo electrónico no válido.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Se dispone a eliminar los permisos "lectura/actualización de usuario" de su propio usuario.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Si continúa, no podrá añadir ni eliminar funciones en ningún usuario.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>¿Seguro que desea continuar?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Ayuda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentación</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Acerca de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Ajustes de la consola</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestión del usuario</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usuario que ha entrado</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Salir</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributos (mapa de OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Los metadatos no están disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadatos</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contandor de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Escrituras</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lecturas</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histograma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valores actuales</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Mín.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Máx.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origen</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Nivel</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Se puede actualizar en el tiempo de ejecución (editable)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Etiquetas</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valores Enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Véase también</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Estado del clúster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons de gestor</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Instancias de Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Servidores de metadatos</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Puertas de enlace iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS de cliente</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Rendimiento del cliente</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectura/escritura de cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Rendimiento de recuperación</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Depuración</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Rendimiento</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacidad en bruto</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Grupos de colocación por OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Estado del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacidad</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Clasificaciones</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Actual</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticación de descubrimiento actualizada</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>No hay ningún portal disponible.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>No hay ninguna imagen disponible.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>No hay ninguna imagen disponible. Asegúrese de añadir una imagen al destino.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>No hay ningún iniciador disponible. Asegúrese de añadir un iniciador al destino.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destino</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes de lectura</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operaciones de lectura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operaciones de escritura</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O desde</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instancia</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Progreso</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Editar modo</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Añadir par</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Editar par</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Suprimir par</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Líder</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>N.º locales</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>N.º remotos</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>duplicar par</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Clave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Aplanamiento profundo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>En capas</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Bloqueo exclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa de objetos (requiere bloqueo exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>En diario (requiere bloqueo exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>SIN PROTECCIÓN</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Reversión de instantánea RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revertir</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instantánea RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Suprimido a las</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>estado</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versión</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>raíz</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de reserva</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Clasificación</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Actividad</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodos</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Uso</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Actualizado</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>El valor se puede actualizar en el tiempo de ejecución.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Los daemons/clientes no extraen este valor de la\n      base de datos de configuración del monitor. No se recomienda definir esta opción con "ceph config\n      set ...". Esta opción se debe configurar mediante ceph.conf o a través\n      de la línea de comandos.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>La opción solo surte efecto durante el inicio del daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>La opción solo afecta a la creación del clúster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>La opción solo afecta a la creación del daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servicio</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valor actual</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Editable</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Habilitar</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Inhabilitar</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Conectando de nuevo. Espere...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Dirección pública</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sesiones abiertas</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>No incluir</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Los OSD que se excluyeron anteriormente no se volverán a incluir cuando se inicien</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>No excluir</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Los OSD no se excluirán automáticamente después del intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>No activar</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>No se permite que los OSD se inicien</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>No desactivar</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Se ignoran los informes de error de OSD, de forma que los monitores no desactivarán los OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pausa</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pone en pausa las lecturas y escrituras</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>No depurar</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>La depuración está inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>No depuración profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>La depuración profunda está inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>No reponer</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>La reposición de grupos de colocación se suspende</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>No recuperar</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La recuperación de los grupos de colocación se suspende</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Orden bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar orden bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdir limpiados</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Los OSD tienen snapset convertidos</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Supresiones de recuperación</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Supresiones realizadas durante la recuperación, en lugar de emparejamientos</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Límite estricto de registro del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Establece un límite estricto para la longitud del registro del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Indicadores de OSD actualizados</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>Incluir</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>desactivar</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marcar</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdido</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marcado como perdido</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Limpiar</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>limpiado</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>destruir</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>destruido</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>suprimir</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Grupos de colocación</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes de lectura</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operaciones de lectura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operaciones de escritura</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Número máximo de reposiciones</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Máximo de recuperaciones activas</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Máximo de recuperaciones de inicio único</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Reposo de recuperación</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Trabajo</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravedad</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Iniciado</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Usado</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispon.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Limpio</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>En curso</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Advertencia</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Desconocido</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>activo</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>sin sistemas de archivos</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>activo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>reserva</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/d</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon activo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quórum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>El servicio NFS Ganesha no está configurado.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transportar</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Usuario de CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Sistemas de archivos CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(se hereda de la configuración global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>se hereda de la configuración global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Seleccione el tipo de reducción de privilegios de ID de usuario que se va a realizar --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>No hay ningún daemon disponible.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de caché</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Antigüedad mínima de expulsión</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Antigüedad mínima de vaciado</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Número máximo de bytes de destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Número máximo de objetos de destino</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>No se ha añadido ninguna aplicación</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Se ha alcanzado el límite de aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Un repositorio solo puede tener hasta cuatro definiciones de aplicaciones.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caracteres permitidos: _, a-z, A-Z y 0-9</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La longitud máxima es 128 caracteres</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrar o añadir aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Añadir aplicación</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamaño de réplica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Último cambio</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Conjunto de reglas de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>papelera</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>papeleras</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usuario</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuarios</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Ámbito</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lectura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crear</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Función del sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Actualizar usuario</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuar</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>La sesión se ha cerrado automáticamente porque sus funciones han cambiado.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Cada objeto se divide en porciones de datos, cada una almacenada en un OSD distinto.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcula las porciones de código para cada objeto y las almacena en distintos OSD.\n      El número de porciones de código es también el número de OSD que pueden estar inactivos sin que se pierdan datos.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>El complemento jerasure es el más genérico y flexible,\n          y también el complemento por defecto para los repositorios de código de borrado de Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La técnica más flexible es reed_sol_van: basta con definir k y m.\n          La técnica cauchy_good puede ser más rápida, pero hay que elegir con cuidado el tamaño\n          del paquete. reed_sol_r6_op, liberation, blaum_roth y liber8tion son todas equivalentes a RAID6\n          en el sentido de que solo se pueden configurar con m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>La codificación se realizará según el tamaño de los paquetes de bytes de uno en uno.\n          Elegir el tamaño correcto es difícil.\n          La documentación de jerasure incluye información completa sobre el tema.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Con el complemento jerasure, cuando un objeto de código de borrado se almacena\n          en varios OSD, para recuperarse de la pérdida de un OSD es necesario leer de todos los demás.\n          Por ejemplo, si jerasure está configurado con k=8 y m=4, cuando se pierde un OSD es necesario leer\n          de los otros once para repararlo.\n\n          El complemento de código de borrado lrc crea porciones de paridad local para poder realizar la recuperación con\n          menos OSDs. Por ejemplo, is lrc está configurado con k=8, m=4 y l=4, creará\n          una porción de paridad adicional para cada cuatro OSDs. Si se pierde un solo OSD, se puede recuperar\n          solo con cuatro OSD, en lugar de con once.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Agrupa las porciones de código y de datos en localizaciones de conjuntos de tamaño. Por ejemplo,\n          para k=4 y m=2, si locality=3, se crean dos grupos de tres. Cada conjunto\n          se puede recuperar sin leer porciones de otro conjunto.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>El tipo de papelera de CRUSH en el que se almacenará cada\n          conjunto de porciones definido por l. Por ejemplo, si se define como bastidor, cada grupo de l porciones\n          se colocará en un bastidor distinto. Se usa para crear un paso de regla de CRUSH, por ejemplo, "step choose\n          rack". Si no se define, no se realiza este tipo de agrupamiento.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>El complemento isa encapsula la biblioteca ISA. Solo funciona en procesadores Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>El complemento ISA viene en dos formatos de Reed Solomon.\n          Si se define reed_sol_van, se trata de Vandermonde; si se define cauchy, se trata de Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>El complemento shec encapsula las distintas bibliotecas SHEC.\n          Permite a Ceph recuperar datos de forma más eficiente que los códigos de Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>El número de porciones de paridad. Cada uno de ellas incluye cada porción de datos\n           en su intervalo de cálculo. El número se usa como estimador de durabilidad. Por ejemplo, si c=2,\n          2 OSD pueden estar inactivos sin que se pierdan datos.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>El nombre de la papelera de CRUSH usado para el primer paso de la regla de CRUSH.\n      Por ejemplo, "step take default".</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Asegúrese de que no hay dos porciones en una papelera con el mismo\n      dominio de error. Por ejemplo, si el dominio de error es host, no debe haber dos porciones almacenadas en el mismo\n      host. Se usa para crear un paso de regla de CRUSH, por ejemplo, "step chooseleaf host".</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restringe la colocación a dispositivos de una clase concreta\n      (p.ej., ssd o hdd) usando los nombre de clase de dispositivo CRUSH en el mapa de CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Define el nombre de directorio del que se cargará el complemento de código de borrado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas las operaciones</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Permite solo las operaciones que no modifican el servidor</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>No permite operaciones de lectura o escritura, pero sí cualquier otra</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>No permite operaciones de lectura o escritura, ni ninguna otra que modifique los atributos del archivo o el contenido del directorio</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>No permite ningún tipo de acceso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Seleccione la prioridad --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Baja</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Información</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Últimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Últimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Últimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Última hora (opción por defecto)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Últimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Últimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Últimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Últimas 24 horas</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ayer</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hoy</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Hoy hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Anteayer</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Los últimos 2 días</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este día la semana pasada</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>La semana pasada</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Esta semana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Esta semana hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Los últimos 7 días</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>El mes pasado</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este mes</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Este mes hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Los últimos 30 días</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Los últimos 90 días</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Los últimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>El último año</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>El año pasado</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este año</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Este año hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Los últimos 2 años</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Los últimos 5 años</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>No se ha seleccionado ningún elemento.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Deseleccione el elemento para volver a seleccionarlo</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Se ha alcanzado el límite de selección</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrar etiquetas</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Añadir insignia</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>No hay ningún elemento disponible.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copiar</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Depuración profunda</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplanar</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marcar para desactivar</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marcar para incluir</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marcar como perdido</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar para excluir</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renombrar</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurar</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Mover a la papelera</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Desproteger</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Suprimido</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Aplanado</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Limpiado</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Revertido</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sí</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>No</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Calidad del servicio</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Límite de BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>El límite deseado de bytes de E/S por segundo.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Límite de IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>El límite deseado de operaciones de E/S por segundo.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Límite de BPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>El límite deseado de bytes de lectura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Límite de IOPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>El límite deseado de operaciones de lectura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Límite de BPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>El límite deseado de bytes de escritura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Límite de IOPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>El límite deseado de operaciones de escritura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Ráfaga de BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de E/S.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Ráfaga de IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de E/S.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Ráfaga de BPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de lectura.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Ráfaga de IOPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de lectura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Ráfaga de BPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de escritura.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Ráfaga de IOPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de escritura.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Ejecutando</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ejecutar</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ejecutado</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tarea desconocida</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Creando</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>crear</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Actualizando</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>actualizar</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Suprimiendo</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonando</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clonar</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copiando</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copiar</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Aplanando</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>aplanar</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Revirtiendo</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>revertir</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Moviendo</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>mover</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Movido</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>No se encuentra la imagen.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Restaurando</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurar</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Limpiando</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>limpiar</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>todos los repositorios</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>No es posible inhabilitar la duplicación porque contiene un par</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"z+Ro":function(t,e,n){"use strict";function a(t){return t&&"function"==typeof t.schedule}n.d(e,"a",(function(){return a}))},"z/SZ":function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("hpHm");class i{constructor(t,e,n){this.nodes=t,this.viewRef=e,this.componentRef=n}}class s{constructor(t,e,n,r,i,s,u,o){this._viewContainerRef=t,this._renderer=e,this._elementRef=n,this._injector=r,this._componentFactoryResolver=i,this._ngZone=s,this._applicationRef=u,this._posService=o,this.onBeforeShow=new a.EventEmitter,this.onShown=new a.EventEmitter,this.onBeforeHide=new a.EventEmitter,this.onHidden=new a.EventEmitter,this._providers=[],this._isHiding=!1,this.containerDefaultSelector="body",this._listenOpts={},this._globalListener=Function.prototype}get isShown(){return!this._isHiding&&!!this._componentRef}attach(t){return this._componentFactory=this._componentFactoryResolver.resolveComponentFactory(t),this}to(t){return this.container=t||this.container,this}position(t){return this.attachment=t.attachment||this.attachment,this._elementRef=t.target||this._elementRef,this}provide(t){return this._providers.push(t),this}show(t={}){if(this._subscribePositioning(),this._innerComponent=null,!this._componentRef){this.onBeforeShow.emit(),this._contentRef=this._getContentRef(t.content,t.context,t.initialState);const e=a.Injector.create({providers:this._providers,parent:this._injector});this._componentRef=this._componentFactory.create(e,this._contentRef.nodes),this._applicationRef.attachView(this._componentRef.hostView),this.instance=this._componentRef.instance,Object.assign(this._componentRef.instance,t),this.container instanceof a.ElementRef&&this.container.nativeElement.appendChild(this._componentRef.location.nativeElement),"string"==typeof this.container&&"undefined"!=typeof document&&(document.querySelector(this.container)||document.querySelector(this.containerDefaultSelector)).appendChild(this._componentRef.location.nativeElement),!this.container&&this._elementRef&&this._elementRef.nativeElement.parentElement&&this._elementRef.nativeElement.parentElement.appendChild(this._componentRef.location.nativeElement),this._contentRef.componentRef&&(this._innerComponent=this._contentRef.componentRef.instance,this._contentRef.componentRef.changeDetectorRef.markForCheck(),this._contentRef.componentRef.changeDetectorRef.detectChanges()),this._componentRef.changeDetectorRef.markForCheck(),this._componentRef.changeDetectorRef.detectChanges(),this.onShown.emit(this._componentRef.instance)}return this._registerOutsideClick(),this._componentRef}hide(){if(!this._componentRef)return this;this._posService.deletePositionElement(this._componentRef.location),this.onBeforeHide.emit(this._componentRef.instance);const t=this._componentRef.location.nativeElement;return t.parentNode.removeChild(t),this._contentRef.componentRef&&this._contentRef.componentRef.destroy(),this._componentRef.destroy(),this._viewContainerRef&&this._contentRef.viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef)),this._contentRef.viewRef&&this._contentRef.viewRef.destroy(),this._contentRef=null,this._componentRef=null,this._removeGlobalListener(),this.onHidden.emit(),this}toggle(){this.isShown?this.hide():this.show()}dispose(){this.isShown&&this.hide(),this._unsubscribePositioning(),this._unregisterListenersFn&&this._unregisterListenersFn()}listen(t){this.triggers=t.triggers||this.triggers,this._listenOpts.outsideClick=t.outsideClick,this._listenOpts.outsideEsc=t.outsideEsc,t.target=t.target||this._elementRef.nativeElement;const e=this._listenOpts.hide=()=>t.hide?t.hide():void this.hide(),n=this._listenOpts.show=e=>{t.show?t.show(e):this.show(e),e()};return this._unregisterListenersFn=Object(r.e)(this._renderer,{target:t.target,triggers:t.triggers,show:n,hide:e,toggle:t=>{this.isShown?e():n(t)}}),this}_removeGlobalListener(){this._globalListener&&(this._globalListener(),this._globalListener=null)}attachInline(t,e){return this._inlineViewRef=t.createEmbeddedView(e),this}_registerOutsideClick(){if(this._componentRef&&this._componentRef.location){if(this._listenOpts.outsideClick){const t=this._componentRef.location.nativeElement;setTimeout(()=>{this._globalListener=Object(r.h)(this._renderer,{targets:[t,this._elementRef.nativeElement],outsideClick:this._listenOpts.outsideClick,hide:()=>this._listenOpts.hide()})})}if(this._listenOpts.outsideEsc){const t=this._componentRef.location.nativeElement;this._globalListener=Object(r.g)(this._renderer,{targets:[t,this._elementRef.nativeElement],outsideEsc:this._listenOpts.outsideEsc,hide:()=>this._listenOpts.hide()})}}}getInnerComponent(){return this._innerComponent}_subscribePositioning(){!this._zoneSubscription&&this.attachment&&(this.onShown.subscribe(()=>{this._posService.position({element:this._componentRef.location,target:this._elementRef,attachment:this.attachment,appendToBody:"body"===this.container})}),this._zoneSubscription=this._ngZone.onStable.subscribe(()=>{this._componentRef&&this._posService.calcPosition()}))}_unsubscribePositioning(){this._zoneSubscription&&(this._zoneSubscription.unsubscribe(),this._zoneSubscription=null)}_getContentRef(t,e,n){if(!t)return new i([]);if(t instanceof a.TemplateRef){if(this._viewContainerRef){const n=this._viewContainerRef.createEmbeddedView(t,e);return n.markForCheck(),new i([n.rootNodes],n)}const n=t.createEmbeddedView({});return this._applicationRef.attachView(n),new i([n.rootNodes],n)}if("function"==typeof t){const e=this._componentFactoryResolver.resolveComponentFactory(t),r=a.Injector.create({providers:this._providers,parent:this._injector}),s=e.create(r);return Object.assign(s.instance,n),this._applicationRef.attachView(s.hostView),new i([[s.location.nativeElement]],s.hostView,s)}return new i([[this._renderer.createText(""+t)]])}}class u{constructor(t,e,n,a,r){this._componentFactoryResolver=t,this._ngZone=e,this._injector=n,this._posService=a,this._applicationRef=r}createLoader(t,e,n){return new s(e,n,t,this._injector,this._componentFactoryResolver,this._ngZone,this._applicationRef,this._posService)}}},z1FC:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["viensas secunds","'iensas secunds"],ss:[t+" secunds",t+" secunds"],m:["'n míut","'iens míut"],mm:[t+" míuts",t+" míuts"],h:["'n þora","'iensa þora"],hh:[t+" þoras",t+" þoras"],d:["'n ziua","'iensa ziua"],dd:[t+" ziuas",t+" ziuas"],M:["'n mes","'iens mes"],MM:[t+" mesen",t+" mesen"],y:["'n ar","'iens ar"],yy:[t+" ars",t+" ars"]};return a||e?r[n][0]:r[n][1]}t.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(t){return"d'o"===t.toLowerCase()},meridiem:function(t,e,n){return t>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z3Vd:function(t,e,n){!function(t){"use strict";var e="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(t,n,a,r){var i=function(t){var n=Math.floor(t%1e3/100),a=Math.floor(t%100/10),r=t%10,i="";return n>0&&(i+=e[n]+"vatlh"),a>0&&(i+=(""!==i?" ":"")+e[a]+"maH"),r>0&&(i+=(""!==i?" ":"")+e[r]),""===i?"pagh":i}(t);switch(a){case"ss":return i+" lup";case"mm":return i+" tup";case"hh":return i+" rep";case"dd":return i+" jaj";case"MM":return i+" jar";case"yy":return i+" DIS"}}t.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==t.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==t.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"},past:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"Hu’":-1!==t.indexOf("jar")?e.slice(0,-3)+"wen":-1!==t.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z5nN:function(t,e,n){"use strict";n.d(e,"b",(function(){return o})),n.d(e,"a",(function(){return f}));var a=n("8Y7J"),r=n("LqlI"),i=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["role","document"]],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","modal-content"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){var n=e.component;t(e,0,0,"modal-dialog"+(n.config.class?" "+n.config.class:""))}))}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"modal-container",[["class","modal"],["role","dialog"],["tabindex","-1"]],[[1,"aria-modal",0]],[[null,"mousedown"],[null,"mouseup"],["window","keydown.esc"]],(function(t,e,n){var r=!0;return"mousedown"===e&&(r=!1!==a["ɵnov"](t,1).onClickStarted(n)&&r),"mouseup"===e&&(r=!1!==a["ɵnov"](t,1).onClickStop(n)&&r),"window:keydown.esc"===e&&(r=!1!==a["ɵnov"](t,1).onEsc(n)&&r),r}),s,i)),a["ɵdid"](1,245760,null,0,r.d,[r.f,a.ElementRef,a.Renderer2],null,null)],(function(t,e){t(e,1,0)}),(function(t,e){t(e,0,0,!0)}))}var o=a["ɵccf"]("modal-container",r.d,u,{},{},["*"]),l=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function d(t){return a["ɵvid"](0,[],null,null)}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-modal-backdrop",[["class","modal-backdrop"]],null,null,null,d,l)),a["ɵdid"](1,114688,null,0,r.c,[a.ElementRef,a.Renderer2],null,null)],(function(t,e){t(e,1,0)}),null)}var f=a["ɵccf"]("bs-modal-backdrop",r.c,c,{},{},[])},z6cu:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("HDdC");function r(t,e){return new a.a(e?n=>e.schedule(i,0,{error:t,subscriber:n}):e=>e.error(t))}function i({error:t,subscriber:e}){e.error(t)}},zAeO:function(t,e,n){var a=n("SQuY");function r(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(r.Cache||a),n}r.Cache=a,t.exports=r},zBJ4:function(t,e,n){var a=n("2oRo"),r=n("hh1v"),i=a.document,s=r(i)&&r(i.createElement);t.exports=function(t){return s?i.createElement(t):{}}},zDBQ:function(t,e,n){var a=n("IeEY");t.exports=function(t){return null!=t&&t.length?a(t,1):[]}},zKZe:function(t,e,n){var a=n("I+eb"),r=n("YNrV");a({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},zUnb:function(t,e,n){"use strict";n.r(e);var a=n("tAZD"),r=n.n(a),i=n("SVse"),s=n("8Y7J");const u=t=>{t=t||"en-US";try{return n("F+uO")(`./messages.${t}.xlf`).default}catch(e){return[]}};class o{}class l{constructor(){}}var d=n("EApP"),c=s["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"flyInOut",definitions:[{type:0,name:"inactive",styles:{type:6,styles:{opacity:0},offset:null},options:void 0},{type:0,name:"active",styles:{type:6,styles:{opacity:1},offset:null},options:void 0},{type:0,name:"removed",styles:{type:6,styles:{opacity:0},offset:null},options:void 0},{type:1,expr:"inactive => active",animation:{type:4,styles:null,timings:"{{ easeTime }}ms {{ easing }}"},options:null},{type:1,expr:"active => removed",animation:{type:4,styles:null,timings:"{{ easeTime }}ms {{ easing }}"},options:null}],options:{}}]}});function f(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"button",[["aria-label","Close"],["class","toast-close-button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.remove()&&a),a}),null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"]))],null,null)}function h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](1,null,["[","]"]))],null,(function(t,e){t(e,1,0,e.component.duplicatesCount+1)}))}function g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,h)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,3,0,e.component.duplicatesCount)}),(function(t,e){var n=e.component;t(e,0,0,n.options.titleClass,n.title),t(e,1,0,n.title)}))}function p(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.options.messageClass,n.message)}))}function b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,n.options.messageClass,n.message),t(e,1,0,n.message)}))}function m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"div",[["class","toast-progress"]],[[4,"width",null]],null,null,null,null))],null,(function(t,e){t(e,1,0,e.component.width+"%")}))}function y(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,f)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,g)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,p)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,b)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,m)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.options.closeButton),t(e,3,0,n.title),t(e,5,0,n.message&&n.options.enableHtml),t(e,7,0,n.message&&!n.options.enableHtml),t(e,9,0,n.options.progressBar)}),null)}function v(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["toast-component",""]],[[8,"className",0],[40,"@flyInOut",0],[4,"display",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).tapToast()&&a),"mouseenter"===e&&(a=!1!==s["ɵnov"](t,1).stickAround()&&a),"mouseleave"===e&&(a=!1!==s["ɵnov"](t,1).delayedHideToast()&&a),a}),y,c)),s["ɵdid"](1,180224,null,0,d.c,[d.j,d.g,s.NgZone],null,null)],null,(function(t,e){t(e,0,0,s["ɵnov"](e,1).toastClasses,s["ɵnov"](e,1).state,s["ɵnov"](e,1).displayStyle)}))}var x=s["ɵccf"]("[toast-component]",d.c,v,{},{},[]),_=n("pMnS"),T=n("jtHE");let w=(()=>{class t{}return t.START="start",t.STOP="stop",t.UPDATE="update",t.RESET="reset",t.UNSUBSCRIBE="unsubscribe",t})();class O{constructor(){this.blockUISettings={},this.blockUIInstances={},this.blockUISubject=new T.a,this.blockUIObservable=this.blockUISubject.asObservable(),this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this))}getSettings(){return this.blockUISettings}updateSettings(t={}){this.blockUISettings=Object.assign({},this.blockUISettings,t)}decorate(t="block-ui-main"){const e={name:t,isActive:!1,blockCount:0,start:this.dispatch(this.blockUISubject,w.START,t),update:this.dispatch(this.blockUISubject,w.UPDATE,t),stop:this.dispatch(this.blockUISubject,w.STOP,t),reset:this.dispatch(this.blockUISubject,w.RESET,t),unsubscribe:this.dispatch(this.blockUISubject,w.UNSUBSCRIBE,t)};return this.blockUIInstances[t]=this.blockUIInstances[t]||e,e}observe(){return this.blockUIObservable}blockUIMiddleware({action:t,name:e}){let n=null;switch(t){case w.START:n=!0;break;case w.STOP:case w.RESET:n=!1}null!==n&&(this.blockUIInstances[e].isActive=n)}dispatch(t,e,n="block-ui-main"){return a=>{t.next({name:n,action:e,message:a})}}}class S{constructor(t){this.blockUI=t}ngOnInit(){this.name=this.name||"block-ui-main",this.template=this.template||this.blockUI.blockUISettings.template}}class I{constructor(t,e,n){this.blockUI=t,this.resolver=e,this.changeDetectionRef=n,this.name="block-ui-main",this.delayStart=0,this.delayStop=0,this.state={startTimeout:null,stopTimeout:null,blockCount:0},this.active=!1}ngOnInit(){this.settings=this.blockUI.getSettings(),this.blockUISubscription=this.subscribeToBlockUI(this.blockUI.observe())}ngAfterViewInit(){try{if(!this.templateCmp)return!1;if(this.templateCmp instanceof s.TemplateRef)this.templateOutlet.createEmbeddedView(this.templateCmp);else{const t=this.resolver.resolveComponentFactory(this.templateCmp);this.templateCompRef=this.templateOutlet.createComponent(t),this.updateBlockTemplate(this.message)}}catch(t){console.error("ng-block-ui:",t)}}ngAfterViewChecked(){this.detectChanges()}subscribeToBlockUI(t){return t.subscribe(t=>this.onDispatchedEvent(t))}onDispatchedEvent(t){switch(t.action){case w.START:this.onStart(t);break;case w.STOP:this.onStop(t);break;case w.UPDATE:this.onUpdate(t);break;case w.RESET:this.onReset();break;case w.UNSUBSCRIBE:this.onStop(t),this.onUnsubscribe(t.name)}}onStart({name:t,message:e}){if(t===this.name){const t=this.delayStart||this.settings.delayStart||0;null===this.state.startTimeout&&(0===t?this.showBlock(e):this.state.startTimeout=setTimeout(()=>{this.showBlock(e)},t)),this.state.blockCount++,this.updateInstanceBlockCount()}}onStop({name:t}){if(t===this.name){const t=this.delayStop||this.settings.delayStop||0;this.state.blockCount>1?this.state.blockCount--:this.active?null===this.state.stopTimeout&&(0===t?this.hideBlock():this.state.stopTimeout=setTimeout(()=>{this.hideBlock()},t)):this.clearState(),this.updateInstanceBlockCount()}}onReset(){this.hideBlock()}onUpdate({name:t,message:e}){if(t===this.name){const t=this.delayStart||this.settings.delayStart||0;0===t?this.updateMessage(e):setTimeout(()=>{this.updateMessage(e)},t)}}updateMessage(t){this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}showBlock(t){this.active=!0,this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}hideBlock(){this.clearState(),this.active=!1,this.detectChanges()}clearState(){null!=this.state.startTimeout&&clearTimeout(this.state.startTimeout),null!=this.state.stopTimeout&&clearTimeout(this.state.stopTimeout),this.state.blockCount=0,this.state.startTimeout=null,this.state.stopTimeout=null,this.updateInstanceBlockCount()}updateBlockTemplate(t){this.templateCompRef&&this.templateCompRef instanceof s.ComponentRef&&(this.templateCompRef.instance.message=t)}onUnsubscribe(t){this.blockUISubscription&&t===this.name&&this.blockUISubscription.unsubscribe()}updateInstanceBlockCount(){this.blockUI.blockUIInstances[this.name]&&(this.blockUI.blockUIInstances[this.name].blockCount=this.state.blockCount)}detectChanges(){this.changeDetectionRef.destroyed||this.changeDetectionRef.detectChanges()}ngOnDestroy(){this.onUnsubscribe(this.name)}}class N{constructor(t){this.blockUIInstance=t}start(t,e){this.dispatch(t,w.START,e)}stop(t){this.dispatch(t,w.STOP)}reset(t){this.dispatch(t,w.RESET)}unsubscribe(t){this.dispatch(t,w.UNSUBSCRIBE)}isActive(t=null){const e=t?this.toArray(t):null,n=this.blockUIInstance.blockUIInstances;return Object.keys(n).some(t=>e?e.indexOf(n[t].name)>=0&&n[t].isActive:n[t].isActive)}dispatch(t=[],e,n){this.toArray(t).forEach(t=>this.blockUIInstance.decorate(t)[e](n))}toArray(t=[]){return"string"==typeof t?[t]:t}}const C=new O,R=new s.InjectionToken("BlockUIModuleSettings");function A(t){return C.updateSettings(t),C}class k{static forRoot(t={}){return{ngModule:k,providers:[{provide:R,useValue:t},{provide:O,useFactory:A,deps:[R]},N]}}}function E(t){return function(e,n,a){e[n]=C.decorate(t)}}var L=s["ɵcrt"]({encapsulation:2,styles:[],data:{}});function D(t){return s["ɵvid"](0,[s["ɵncd"](null,0),(t()(),s["ɵeld"](1,0,null,null,1,"block-ui-content",[],null,null,null,B,q)),s["ɵdid"](2,12828672,null,0,I,[O,s.ComponentFactoryResolver,s.ChangeDetectorRef],{name:[0,"name"],delayStart:[1,"delayStart"],delayStop:[2,"delayStop"],defaultMessage:[3,"defaultMessage"],templateCmp:[4,"templateCmp"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.name,n.delayStart,n.delayStop,n.message,n.template)}),null)}function P(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"block-ui",[],null,null,null,D,L)),s["ɵdid"](1,114688,null,0,S,[O],null,null)],(function(t,e){t(e,1,0)}),null)}var M=s["ɵccf"]("block-ui",S,P,{name:"name",message:"message",delayStart:"delayStart",delayStop:"delayStop",template:"template"},{},["*"]),q=s["ɵcrt"]({encapsulation:2,styles:["\n.block-ui-wrapper {\n  display: none;\n  position: fixed;\n  height: 100%;\n  width: 100%;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.70);\n  z-index: 30000;\n  cursor: wait;\n}\n\n.block-ui-wrapper.block-ui-wrapper--element {\n  position: absolute;\n}\n\n.block-ui-wrapper.active {\n  display: block;\n}\n\n.block-ui-wrapper.block-ui-main {\n  position: fixed;\n}\n\n.block-ui-spinner,\n.block-ui-template {\n  position: absolute;\n  top: 40%;\n  margin: 0 auto;\n  left: 0;\n  right: 0;\n  transform: translateY(-50%);\n}\n\n.block-ui-spinner > .message {\n  font-size: 1.3em;\n  text-align: center;\n  color: #fff;\n}\n\n.block-ui__element {\n  position: relative;\n}\n\n.loader,\n.loader:after {\n  border-radius: 50%;\n  width: 10em;\n  height: 10em;\n}\n.loader {\n  margin: 7px auto;\n  font-size: 5px;\n  position: relative;\n  text-indent: -9999em;\n  border-top: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-right: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-left: 1.1em solid #ffffff;\n  -webkit-transform: translateZ(0);\n  -ms-transform: translateZ(0);\n  transform: translateZ(0);\n  -webkit-animation: load8 1.1s infinite linear;\n  animation: load8 1.1s infinite linear;\n}\n\n@-webkit-keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n"],data:{}});function j(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,1,0,n.message||n.defaultMessage)}))}function F(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","block-ui-spinner"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"div",[["class","loader"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,j)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.message||n.defaultMessage)}),null)}function V(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function G(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,[[1,3],["templateOutlet",2]],null,0,null,V)),(t()(),s["ɵand"](0,null,null,0))],null,null)}function B(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{templateOutlet:0}),(t()(),s["ɵeld"](1,0,null,null,7,"div",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](4,{active:0}),(t()(),s["ɵand"](16777216,null,null,1,null,F)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,G)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=s["ɵinlineInterpolate"](2,"block-ui-wrapper ",n.name," ",n.className,""),r=t(e,4,0,n.active);t(e,3,0,a,r),t(e,6,0,!n.templateCmp),t(e,8,0,n.templateCmp)}),null)}function z(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"block-ui-content",[],null,null,null,B,q)),s["ɵdid"](1,12828672,null,0,I,[O,s.ComponentFactoryResolver,s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}var Y=s["ɵccf"]("block-ui-content",I,z,{name:"name",delayStart:"delayStart",delayStop:"delayStop",defaultMessage:"message",templateCmp:"template"},{},[]),H=n("FE24"),U=n("z/SZ"),W=n("GS7A"),K=n("s7LF"),$=n("ANnk"),J=n("f/UV"),Z=n("aexS"),Q=n("+gVj"),X=n("LvDl"),tt=n("xj/R"),et=n("IheW");let nt=(()=>{class t{constructor(t,e){this.http=t,this.localeId=e}getLocale(){return this.localeId||"en-US"}setLocale(t){document.cookie="cd-lang="+t}getLanguages(){return this.http.get("ui-api/langs")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](s.LOCALE_ID))},token:t,providedIn:"root"}),t})();var at=function(t){return t.cs="Čeština",t["de-DE"]="Deutsch",t["en-US"]="English",t["es-ES"]="Español",t["fr-FR"]="Français",t["id-ID"]="Bahasa Indonesia",t["it-IT"]="Italiano",t["ja-JP"]="日本語",t["ko-KR"]="한국어",t["pl-PL"]="Polski",t["pt-BR"]="Português (brasileiro)",t["zh-CN"]="中文 (简体)",t["zh-TW"]="中文 (繁體)",t}({});let rt={cs:tt.a,de:tt.b,es:tt.e,fr:tt.g,id:tt.m,it:tt.y,ja:tt.z,ko:tt.A,pl:tt.C,pt:tt.D,zh:tt.I};class it{constructor(t,e){this.localeService=t,this.languageService=e,this.isDropdown=!0,this.supportedLanguages=at}ngOnInit(){this.selectedLanguage=this.languageService.getLocale(),this.defineUsedLanguage(),this.languageService.getLanguages().subscribe(t=>{this.supportedLanguages=X.pick(this.supportedLanguages,t)})}defineUsedLanguage(){const t=this.selectedLanguage.slice(0,2);t in rt&&(Object(tt.c)(t,rt[t]),this.localeService.use(t))}reloadWindow(){window.location.reload()}changeLanguage(t){this.languageService.setLocale(t),this.reloadWindow()}}var st=n("ienR"),ut=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ot(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.changeLanguage(t.context.$implicit.key)&&a),a}),null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.value)}))}function lt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,ot)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,2,0,s["ɵunv"](e,2,0,s["ɵnov"](e,3).transform(n.supportedLanguages)))}),null)}function dt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,7,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,H.f,H.f,[]),s["ɵdid"](2,212992,null,0,H.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,H.f,H.a,W.b],null,null),(t()(),s["ɵeld"](3,0,null,null,2,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Select a Language"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,H.g,[s.ChangeDetectorRef,H.c,s.ElementRef,s.Renderer2,H.f],null,null),(t()(),s["ɵted"](5,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,lt)),s["ɵdid"](7,16384,null,0,H.d,[H.f,s.ViewContainerRef,s.TemplateRef],null,null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen),t(e,5,0,n.supportedLanguages[n.selectedLanguage])}))}function ct(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.key),t(e,2,0,e.context.$implicit.key)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function ft(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"select",[["class","form-control custom-select"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"change"===e&&(a=!1!==r.changeLanguage(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedLanguage=n)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](3,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](5,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](6,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](7,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵand"](16777216,null,null,2,null,ct)),s["ɵdid"](9,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,3,0,n.selectedLanguage),t(e,9,0,s["ɵunv"](e,9,0,s["ɵnov"](e,10).transform(n.supportedLanguages)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass)}))}function ht(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,dt)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ft)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.isDropdown),t(e,3,0,!n.isDropdown)}),null)}var gt=n("quSY"),pt=n("oxzT"),bt=n("9nlD"),mt=n("mSOc");class yt{constructor(t,e){this.notificationService=t,this.summaryService=e,this.icons=pt.a,this.hasRunningTasks=!1,this.hasNotifications=!1,this.subs=new gt.a}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{this.hasRunningTasks=t.executing_tasks.length>0})),this.subs.add(this.notificationService.data$.subscribe(t=>{this.hasNotifications=t.length>0}))}ngOnDestroy(){this.subs.unsubscribe()}toggleSidebar(){this.notificationService.toggleSidebar()}}var vt=s["ɵcrt"]({encapsulation:0,styles:[[".running[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{color:#2b99a8}.running[_ngcontent-%COMP%]:hover   i[_ngcontent-%COMP%]{color:#fff}a[_ngcontent-%COMP%]   .dot[_ngcontent-%COMP%]{background-color:#2b99a8;border:2px solid #374249;border-radius:50%;height:11px;position:absolute;right:17px;top:10px;width:10px}a[_ngcontent-%COMP%]:hover   .dot[_ngcontent-%COMP%]{background-color:#fff;border-color:#2b99a8}"]],data:{}});function xt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"span",[["class","dot"]],null,null,null,null,null))],null,null)}function _t(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"a",[["title","Tasks and Notifications"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSidebar()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](3,{running:0}),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵand"](16777216,null,null,1,null,xt)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](10,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tasks and Notifications"]))],(function(t,e){var n=e.component,a=t(e,3,0,n.hasRunningTasks);t(e,2,0,a);var r=t(e,7,0,n.icons.bell);t(e,6,0,r),t(e,9,0,n.hasNotifications)}),null)}var Tt=n("tz6c"),wt=n("e0ae"),Ot=n("Mxhz"),St=n("sne2");class It{constructor(t,e,n,a){this.modalRef=t,this.summaryService=e,this.userService=n,this.authStorageService=a,this.userPermission=this.authStorageService.getPermissions().user}ngOnInit(){this.copyright="Copyright(c) 2022 Ceph contributors.",this.projectConstants=St.c,this.hostAddr=window.location.hostname,this.modalVariables=this.setVariables(),this.subs=this.summaryService.subscribe(t=>{const e=t.version.replace("ceph version ","").split(" ");this.hostAddr=t.mgr_host.replace(/(^\w+:|^)\/\//,"").replace(/\/$/,""),this.versionNumber=e[0],this.versionHash=e[1],this.versionName=e.slice(2,e.length).join(" ")})}ngOnDestroy(){this.subs.unsubscribe()}setVariables(){const t={};t.user=localStorage.getItem("dashboard_username"),t.role="user",this.userPermission.read&&this.userService.get(t.user).subscribe(e=>{t.role=e.roles});const e=Object(wt.a)();return t.browserName=e&&e.name?e.name:"Not detected",t.browserVersion=e&&e.version?e.version:"Not detected",t.browserOS=e&&e.os?e.os:"Not detected",t}}class Nt{constructor(t,e){this.modalService=t,this.docService=e,this.icons=pt.a}ngOnInit(){this.docService.subscribeOnce("dashboard",t=>{this.docsUrl=t})}openAboutModal(){this.modalRef=this.modalService.show(It),this.modalRef.setClass("modal-lg")}}var Ct=n("LqlI"),Rt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function At(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"a",[["class","dropdown-item text-capitalize"],["target","_blank"]],[[8,"href",4]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](5,{disabled:0}),(t()(),s["ɵted"](-1,null,["documentation"])),(t()(),s["ɵeld"](7,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["class","dropdown-item"],["href","/docs"],["target","_blank"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["API"])),(t()(),s["ɵeld"](10,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.openAboutModal()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["About"]))],(function(t,e){var n=t(e,5,0,!e.component.docsUrl);t(e,4,0,"dropdown-item text-capitalize",n)}),(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function kt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,H.f,H.f,[]),s["ɵdid"](2,212992,null,0,H.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,H.f,H.a,W.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Help"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,H.g,[s.ChangeDetectorRef,H.c,s.ElementRef,s.Renderer2,H.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Help"])),(t()(),s["ɵand"](16777216,null,null,1,null,At)),s["ɵdid"](12,16384,null,0,H.d,[H.f,s.ViewContainerRef,s.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.questionCircle);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}var Et=n("iInd");class Lt{constructor(t){this.authStorageService=t,this.icons=pt.a;const e=this.authStorageService.getPermissions();this.userPermission=e.user,this.configOptPermission=e.configOpt}ngOnInit(){}}var Dt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Pt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/user-management"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["User management"]))],(function(t,e){t(e,2,0,"/user-management")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function Mt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/telemetry"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Telemetry configuration"]))],(function(t,e){t(e,2,0,"/telemetry")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function qt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Pt)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mt)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.userPermission.read),t(e,4,0,n.configOptPermission.read)}),null)}function jt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,H.f,H.f,[]),s["ɵdid"](2,212992,null,0,H.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,H.f,H.a,W.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Dashboard Settings"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,H.g,[s.ChangeDetectorRef,H.c,s.ElementRef,s.Renderer2,H.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Dashboard Settings"])),(t()(),s["ɵand"](16777216,null,null,1,null,qt)),s["ɵdid"](12,16384,null,0,H.d,[H.f,s.ViewContainerRef,s.TemplateRef],null,null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.deepCheck);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}function Ft(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,jt)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.userPermission.read)}),null)}var Vt=n("DSvg");class Gt{constructor(t,e){this.authStorageService=t,this.authService=e,this.icons=pt.a}ngOnInit(){this.username=this.authStorageService.getUsername(),this.sso=this.authStorageService.isSSO()}logout(){this.authService.logout()}}var Bt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function zt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"a",[["class","dropdown-item"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](5,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](6,1),(t()(),s["ɵeld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Change password"]))],(function(t,e){var n=e.component;t(e,2,0,"/user-profile/edit");var a=t(e,6,0,n.icons.lock);t(e,5,0,a)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function Yt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"li",[["class","disabled"],["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"a",[["class","dropdown-item disabled"],["href","#"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Signed in as "])),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,0,"li",[["class","dropdown-divider"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,zt)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,null,7,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,6,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.logout()&&a),a}),null,null)),(t()(),s["ɵeld"](11,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](13,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](14,1),(t()(),s["ɵeld"](15,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sign out"]))],(function(t,e){var n=e.component;t(e,8,0,!n.sso);var a=t(e,14,0,n.icons.signOut);t(e,13,0,a)}),(function(t,e){t(e,5,0,e.component.username)}))}function Ht(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,H.f,H.f,[]),s["ɵdid"](2,212992,null,0,H.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,H.f,H.a,W.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Logged in user"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,H.g,[s.ChangeDetectorRef,H.c,s.ElementRef,s.Renderer2,H.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Logged in user"])),(t()(),s["ɵand"](16777216,null,null,1,null,Yt)),s["ɵdid"](12,16384,null,0,H.d,[H.f,s.ViewContainerRef,s.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.user);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}const Ut=[Object(W.h)({height:0,visibility:"hidden"}),Object(W.e)("400ms cubic-bezier(0.4,0.0,0.2,1)",Object(W.h)({height:"*",visibility:"visible"}))],Wt=[Object(W.h)({height:"*",visibility:"visible"}),Object(W.e)("400ms cubic-bezier(0.4,0.0,0.2,1)",Object(W.h)({height:0,visibility:"hidden"}))];class Kt{constructor(t,e,n){this._el=t,this._renderer=e,this.collapsed=new s.EventEmitter,this.collapses=new s.EventEmitter,this.expanded=new s.EventEmitter,this.expands=new s.EventEmitter,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapse=!0,this.isCollapsing=!1,this.isAnimated=!1,this._display="block",this._stylesLoaded=!1,this._COLLAPSE_ACTION_NAME="collapse",this._EXPAND_ACTION_NAME="expand",this._factoryCollapseAnimation=n.build(Wt),this._factoryExpandAnimation=n.build(Ut)}set display(t){this.isAnimated?(this._display=t,"none"!==t?this.show():this.hide()):this._renderer.setStyle(this._el.nativeElement,"display",t)}set collapse(t){this._player&&!this._isAnimationDone||(this.isExpanded=t,this.toggle())}get collapse(){return this.isExpanded}ngAfterViewChecked(){this._stylesLoaded=!0,this._player&&this._isAnimationDone&&(this._player.reset(),this._renderer.setStyle(this._el.nativeElement,"height","*"))}toggle(){this.isExpanded?this.hide():this.show()}hide(){this.isCollapsing=!0,this.isExpanded=!1,this.isCollapsed=!0,this.isCollapsing=!1,this.collapses.emit(this),this._isAnimationDone=!1,this.animationRun(this.isAnimated,this._COLLAPSE_ACTION_NAME)(()=>{this._isAnimationDone=!0,this.collapsed.emit(this),this._renderer.setStyle(this._el.nativeElement,"display","none")})}show(){this._renderer.setStyle(this._el.nativeElement,"display",this._display),this.isCollapsing=!0,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapsing=!1,this.expands.emit(this),this._isAnimationDone=!1,this.animationRun(this.isAnimated,this._EXPAND_ACTION_NAME)(()=>{this._isAnimationDone=!0,this.expanded.emit(this)})}animationRun(t,e){if(!t||!this._stylesLoaded)return t=>t();this._renderer.setStyle(this._el.nativeElement,"overflow","hidden"),this._renderer.addClass(this._el.nativeElement,"collapse");const n=e===this._EXPAND_ACTION_NAME?this._factoryExpandAnimation:this._factoryCollapseAnimation;return this._player&&this._player.destroy(),this._player=n.create(this._el.nativeElement),this._player.play(),t=>this._player.onDone(t)}}class $t{static forRoot(){return{ngModule:$t,providers:[]}}}class Jt{transform(t){return"HEALTH_OK"===t?{color:"#00bb00"}:"HEALTH_WARN"===t?{color:"#ffa500"}:"HEALTH_ERR"===t?{color:"#ff0000"}:null}}var Zt=n("MdoF"),Qt=n("CNMR"),Xt=n("20UP"),te=n("oMSZ");class ee{constructor(t,e){this.settingsService=t,this.authStorageService=e,this.displayNotification=!1}ngOnInit(){this.settingsService.getStandardSettings().subscribe(t=>{this.pwdExpirationSettings=new te.a(t);const e=this.authStorageService.getPwdExpirationDate();e&&(this.expirationDays=this.getExpirationDays(e),this.alertType=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning2?"danger":"warning",this.displayNotification=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning1,this.authStorageService.isPwdDisplayedSource.next(this.displayNotification))})}ngOnDestroy(){this.authStorageService.isPwdDisplayedSource.next(!1)}getExpirationDays(t){const e=new Date,n=new Date(1e3*t);return Math.floor((n.valueOf()-e.valueOf())/864e5)}close(){this.authStorageService.isPwdDisplayedSource.next(!1),this.displayNotification=!1}}var ne=s["ɵcrt"]({encapsulation:0,styles:[[".no-margin-bottom .alert{margin-bottom:0}"]],data:{}});function ae(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Your password will expire in "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["less than 1"])),(t()(),s["ɵted"](-1,null,[" day. Click "])),(t()(),s["ɵeld"](5,0,null,null,2,"a",[["class","alert-link"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to change it now."]))],(function(t,e){t(e,6,0,"/user-profile/edit")}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function re(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Your password will expire in "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""])),(t()(),s["ɵted"](-1,null,[" day(s). Click "])),(t()(),s["ɵeld"](5,0,null,null,2,"a",[["class","alert-link"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to change it now."]))],(function(t,e){t(e,6,0,"/user-profile/edit")}),(function(t,e){t(e,3,0,e.component.expirationDays),t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function ie(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"alert",[["class","no-margin-bottom"]],null,[[null,"onClose"]],(function(t,e,n){var a=!0;return"onClose"===e&&(a=!1!==t.component.close(n)&&a),a}),Zt.c,Zt.b)),s["ɵdid"](1,114688,null,0,Qt.a,[Qt.b,s.ChangeDetectorRef],{type:[0,"type"],dismissible:[1,"dismissible"]},{onClose:"onClose"}),(t()(),s["ɵand"](16777216,null,0,1,null,ae)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,re)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,s["ɵinlineInterpolate"](1,"",n.alertType,""),!0),t(e,3,0,0===n.expirationDays),t(e,5,0,n.expirationDays>0)}),null)}function se(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ie)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.displayNotification)}),null)}var ue=n("pL04");let oe=(()=>{class t{constructor(t){this.http=t,this.url="api/mgr/module"}list(){return this.http.get(""+this.url)}getConfig(t){return this.http.get(`${this.url}/${t}`)}updateConfig(t,e){return this.http.put(`${this.url}/${t}`,{config:e})}enable(t){return this.http.post(`${this.url}/${t}/enable`,null)}disable(t){return this.http.post(`${this.url}/${t}/disable`,null)}getOptions(t){return this.http.get(`${this.url}/${t}/options`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t})();var le=n("mtw6");let de=(()=>{class t{constructor(){this.visible=!1,this.update=new s.EventEmitter}setVisibility(t){this.visible=t,this.update.emit(t)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();class ce{constructor(t,e,n,a,r){this.mgrModuleService=t,this.authStorageService=e,this.notificationService=n,this.telemetryNotificationService=a,this.i18n=r,this.displayNotification=!1}ngOnInit(){if(this.telemetryNotificationService.update.subscribe(t=>{this.displayNotification=t}),!this.isNotificationHidden()){const t=this.authStorageService.getPermissions().configOpt;X.every(Object.values(t))&&this.mgrModuleService.getConfig("telemetry").subscribe(t=>{t.enabled||this.telemetryNotificationService.setVisibility(!0)})}}ngOnDestroy(){this.telemetryNotificationService.setVisibility(!1)}isNotificationHidden(){return"true"===localStorage.getItem("telemetry_notification_hidden")}close(){this.telemetryNotificationService.setVisibility(!1),localStorage.setItem("telemetry_notification_hidden","true"),this.notificationService.show(le.a.success,this.i18n("Telemetry activation reminder muted"),this.i18n("You can activate the module on the Telemetry configuration page (<b>Dashboard Settings</b> -> <b>Telemetry configuration</b>) at any time."))}}var fe=n("GiVz"),he=s["ɵcrt"]({encapsulation:0,styles:[["cd-telemetry-notification .no-margin-bottom{margin-bottom:0}.activate-button[_ngcontent-%COMP%]{background-color:#fcecba;border:.5px solid #495057;border-radius:10%;padding:.1rem .4rem}.activate-text[_ngcontent-%COMP%]{color:#495057;font-weight:700}"]],data:{}});function ge(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"alert",[["class","no-margin-bottom"],["type","warning"]],null,[[null,"close"]],(function(t,e,n){var a=!0;return"close"===e&&(a=!1!==t.component.close(n)&&a),a}),Zt.c,Zt.b)),s["ɵdid"](1,114688,null,0,Qt.a,[Qt.b,s.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),s["ɵeld"](2,0,null,0,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The Ceph community needs your help to continue improving: please "])),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","btn activate-button alert-link activate-text"],["routerLink","/telemetry"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Activate"])),(t()(),s["ɵted"](-1,null,[" the "])),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["href","https://docs.ceph.com/en/latest/mgr/telemetry/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Telemetry"])),(t()(),s["ɵted"](-1,null,[" module."]))],(function(t,e){t(e,1,0,"warning"),t(e,5,0,"/telemetry")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function pe(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ge)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.displayNotification)}),null)}var be=n("DqMs"),me=n("/NlG"),ye=n("Yrry"),ve=n("cUpR"),xe=n("2Vo4"),_e=n("LRne"),Te=n("EY2u"),we=n("5+tZ"),Oe=n("JIr8"),Se=n("vkgz"),Ie=n("D0XW"),Ne=n("7o/Q"),Ce=n("WMd4");function Re(t,e=Ie.a){var n;const a=(n=t)instanceof Date&&!isNaN(+n)?+t-e.now():Math.abs(t);return t=>t.lift(new Ae(a,e))}class Ae{constructor(t,e){this.delay=t,this.scheduler=e}call(t,e){return e.subscribe(new ke(t,this.delay,this.scheduler))}}class ke extends Ne.a{constructor(t,e,n){super(t),this.delay=e,this.scheduler=n,this.queue=[],this.active=!1,this.errored=!1}static dispatch(t){const e=t.source,n=e.queue,a=t.scheduler,r=t.destination;for(;n.length>0&&n[0].time-a.now()<=0;)n.shift().notification.observe(r);if(n.length>0){const e=Math.max(0,n[0].time-a.now());this.schedule(t,e)}else this.unsubscribe(),e.active=!1}_schedule(t){this.active=!0,this.destination.add(t.schedule(ke.dispatch,this.delay,{source:this,destination:this.destination,scheduler:t}))}scheduleNotification(t){if(!0===this.errored)return;const e=this.scheduler,n=new Ee(e.now()+this.delay,t);this.queue.push(n),!1===this.active&&this._schedule(e)}_next(t){this.scheduleNotification(Ce.a.createNext(t))}_error(t){this.errored=!0,this.queue=[],this.destination.error(t),this.unsubscribe()}_complete(){this.scheduleNotification(Ce.a.createComplete()),this.unsubscribe()}}class Ee{constructor(t,e){this.time=t,this.notification=e}}class Le{constructor(t,e){this.count=t,this.source=e}call(t,e){return e.subscribe(new De(t,this.count,this.source))}}class De extends Ne.a{constructor(t,e,n){super(t),this.count=e,this.source=n}complete(){if(!this.isStopped){const{source:t,count:e}=this;if(0===e)return super.complete();e>-1&&(this.count=e-1),t.subscribe(this._unsubscribeAndRecycle())}}}let Pe=(()=>{class t{constructor(t){this.http=t,this.url="ui-api/motd"}get(){return this.http.get(this.url)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:"root"}),t})(),Me=(()=>{class t{constructor(t){this.motdService=t,this.motdSource=new xe.a(null),this.localStorageKey="dashboard_motd_hidden",this.motd$=this.motdSource.asObservable(),this.subscription=Object(_e.a)(!0).pipe(Object(we.a)(()=>this.motdService.get()),Object(Oe.a)(t=>(X.isFunction(t.preventDefault)&&t.preventDefault(),Te.a)),Object(Se.a)(t=>this.processResponse(t)),Re(6e4),function(t=-1){return e=>0===t?Object(Te.b)():e.lift(new Le(t<0?-1:t-1,e))}()).subscribe()}ngOnDestroy(){this.subscription.unsubscribe()}hide(){const t=this.motdSource.getValue();if(t){const e=`${t.severity}:${t.md5}`;switch(t.severity){case"info":localStorage.setItem(this.localStorageKey,e),sessionStorage.removeItem(this.localStorageKey);break;case"warning":sessionStorage.setItem(this.localStorageKey,e),localStorage.removeItem(this.localStorageKey)}}this.motdSource.next(null)}processResponse(t){const e=sessionStorage.getItem(this.localStorageKey)||localStorage.getItem(this.localStorageKey);let n=X.isNull(e);if(!n&&t){const[a,r]=e.split(":");a===t.severity&&r===t.md5||(n=!0,sessionStorage.removeItem(this.localStorageKey),localStorage.removeItem(this.localStorageKey))}n&&this.motdSource.next(t)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Pe))},token:t,providedIn:"root"}),t})();class qe{constructor(t){this.motdNotificationService=t,this.motd=void 0}ngOnInit(){this.subscription=this.motdNotificationService.motd$.subscribe(t=>{this.motd=t})}ngOnDestroy(){this.subscription.unsubscribe()}onDismissed(){this.motdNotificationService.hide()}}var je=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Fe(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-alert-panel",[["size","slim"]],null,[[null,"dismissed"]],(function(t,e,n){var a=!0;return"dismissed"===e&&(a=!1!==t.component.onDismissed()&&a),a}),be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"],size:[1,"size"],showTitle:[2,"showTitle"],dismissible:[3,"dismissible"]},{dismissed:"dismissed"}),(t()(),s["ɵeld"](2,0,null,0,1,"span",[],[[8,"innerHTML",1]],null,null,null,null)),s["ɵppd"](3,1)],(function(t,e){var n=e.component;t(e,1,0,n.motd.severity,"slim",!1,"danger"!==n.motd.severity)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.motd.message));t(e,2,0,a)}))}function Ve(t){return s["ɵvid"](0,[s["ɵpid"](0,ye.a,[ve.b]),(t()(),s["ɵand"](16777216,null,null,1,null,Fe)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.component.motd)}),null)}var Ge=n("7qid"),Be=n("38Bd"),ze=n("wd/R");class Ye{transform(t,e=!1){return e?ze(t).fromNow():this._forHumans(t)}_forHumans(t){const e=[[""+Math.floor(t/31536e3),"years"],[""+Math.floor(t%31536e3/86400),"days"],[""+Math.floor(t%86400/3600),"hours"],[""+Math.floor(t%3600/60),"minutes"],[""+Math.floor(t%60),"seconds"]];let n="";for(let a=0,r=e.length;a<r;a++)"0"!==e[a][0]&&(n+=" "+e[a][0]+" "+("1"===e[a][0]?e[a][1].substr(0,e[a][1].length-1):e[a][1]));return n.trim()||"1 second"}}var He=n("a0VL"),Ue=n("moLw"),We=n("WF9J"),Ke=s["ɵcrt"]({encapsulation:2,styles:["[data-simplebar]{position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;flex-wrap:wrap;-webkit-box-pack:start;justify-content:flex-start;align-content:flex-start;-webkit-box-align:start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;visibility:visible;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;-webkit-box-flex:inherit;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;-webkit-transition:opacity linear;transition:opacity linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}","ngx-simplebar{display:block}"],data:{}});function $e(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","simplebar-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"div",[["class","simplebar-height-auto-observer-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"div",[["class","simplebar-height-auto-observer"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,4,"div",[["class","simplebar-mask"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"div",[["class","simplebar-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"div",[["class","simplebar-content-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"div",[["class","simplebar-content"]],null,null,null,null,null)),s["ɵncd"](null,0),(t()(),s["ɵeld"](8,0,null,null,0,"div",[["class","simplebar-placeholder"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"div",[["class","simplebar-track simplebar-horizontal"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"div",[["class","simplebar-scrollbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"div",[["class","simplebar-track simplebar-vertical"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,0,"div",[["class","simplebar-scrollbar"]],null,null,null,null,null))],null,null)}var Je=n("O9Tv"),Ze=n("G1I9"),Qe=n("lJxs");let Xe=(()=>{class t{constructor(t,e){this.http=t,this.settingsService=e,this.baseURL="api/prometheus",this.settingsKey={alertmanager:"api/settings/alertmanager-api-host",prometheus:"api/settings/prometheus-api-host"}}ifAlertmanagerConfigured(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.alertmanager,t,e)}disableAlertmanagerConfig(){this.settingsService.disableSetting(this.settingsKey.alertmanager)}ifPrometheusConfigured(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.prometheus,t,e)}disablePrometheusConfig(){this.settingsService.disableSetting(this.settingsKey.prometheus)}getAlerts(t={}){return this.http.get(this.baseURL,{params:t})}getSilences(t={}){return this.http.get(this.baseURL+"/silences",{params:t})}getRules(t="all"){return this.http.get(this.baseURL+"/rules").pipe(Object(Qe.a)(e=>(["alerting","rewrites"].includes(t)&&e.groups.map(e=>{e.rules=e.rules.filter(e=>e.type===t)}),e)))}setSilence(t){return this.http.post(this.baseURL+"/silence",t,{observe:"response"})}expireSilence(t){return this.http.delete(`${this.baseURL}/silence/${t}`,{observe:"response"})}getNotifications(t){return this.http.get(`${this.baseURL}/notifications?from=${t&&t.id?t.id:"last"}`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](Xt.a))},token:t,providedIn:ue.a}),t})(),tn=(()=>{class t{constructor(t){this.notificationService=t}sendNotifications(t){t.forEach(t=>this.notificationService.show(t))}convertToCustomAlerts(t){return X.uniqWith(t.map(t=>({status:X.isObject(t.status)?t.status.state:this.getPrometheusNotificationStatus(t),name:t.labels.alertname,url:t.generatorURL,description:t.annotations.description,fingerprint:X.isObject(t.status)&&t.fingerprint})),X.isEqual)}getPrometheusNotificationStatus(t){const e=t.status;return"firing"===e?"active":e}convertAlertToNotification(t){return new Ze.b(this.formatType(t.status),`${t.name} (${t.status})`,this.appendSourceLink(t,t.description),void 0,"Prometheus")}formatType(t){return le.a[X.findKey({error:["firing","active"],info:["suppressed","unprocessed"],success:["resolved"]},e=>e.includes(t))]}appendSourceLink(t,e){return`${e} <a href="${t.url}" target="_blank"><i class="${pt.a.lineChart}"></i></a>`}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](bt.a))},token:t,providedIn:"root"}),t})(),en=(()=>{class t{constructor(t,e){this.alertFormatter=t,this.prometheusService=e,this.canAlertsBeNotified=!1,this.alerts=[],this.rules=[]}getAlerts(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getAlerts().subscribe(t=>this.handleAlerts(t),t=>{[404,504].includes(t.status)&&this.prometheusService.disableAlertmanagerConfig()})})}getRules(){this.prometheusService.ifPrometheusConfigured(()=>{this.prometheusService.getRules("alerting").subscribe(t=>{this.rules=t.groups.reduce((t,e)=>t.concat(e.rules.map(t=>(t.group=e.name,t))),[])})})}refresh(){this.getAlerts(),this.getRules()}handleAlerts(t){this.canAlertsBeNotified&&this.notifyOnAlertChanges(t,this.alerts),this.activeAlerts=X.reduce(this.alerts,(t,e)=>"active"===e.status.state?++t:t,0),this.alerts=t,this.canAlertsBeNotified=!0}notifyOnAlertChanges(t,e){const n=this.getChangedAlerts(this.alertFormatter.convertToCustomAlerts(t),this.alertFormatter.convertToCustomAlerts(e)).map(t=>this.alertFormatter.convertAlertToNotification(t));this.alertFormatter.sendNotifications(n)}getChangedAlerts(t,e){return X.differenceWith(t,e,X.isEqual).concat(this.getVanishedAlerts(t,e))}getVanishedAlerts(t,e){return X.differenceWith(e,t,(t,e)=>t.fingerprint===e.fingerprint).map(t=>(t.status="resolved",t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](tn),s["ɵɵinject"](Xe))},token:t,providedIn:"root"}),t})(),nn=(()=>{class t{constructor(t,e){this.alertFormatter=t,this.prometheusService=e,this.backendFailure=!1,this.notifications=[]}refresh(){this.backendFailure||this.prometheusService.getNotifications(X.last(this.notifications)).subscribe(t=>this.handleNotifications(t),()=>this.backendFailure=!0)}handleNotifications(t){0!==t.length&&(this.notifications.length>0&&this.alertFormatter.sendNotifications(X.flatten(t.map(t=>this.formatNotification(t)))),this.notifications=this.notifications.concat(t))}formatNotification(t){return this.alertFormatter.convertToCustomAlerts(t.alerts).map(t=>this.alertFormatter.convertAlertToNotification(t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](tn),s["ɵɵinject"](Xe))},token:t,providedIn:"root"}),t})();var an=n("ufoC");class rn{constructor(t,e,n,a,r,i,s,u){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.prometheusNotificationService=a,this.authStorageService=r,this.prometheusAlertService=i,this.ngZone=s,this.cdRef=u,this.isSidebarOpened=!1,this.executingTasks=[],this.subs=new gt.a,this.icons=pt.a,this.last_task="",this.mutex=new Je.Mutex,this.simplebar={autoHide:!1},this.notifications=[]}ngOnDestroy(){window.clearInterval(this.interval),window.clearTimeout(this.timeout),this.subs.unsubscribe()}ngOnInit(){this.last_task=window.localStorage.getItem("last_task");const t=this.authStorageService.getPermissions();t.prometheus.read&&t.configOpt.read&&(this.triggerPrometheusAlerts(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.triggerPrometheusAlerts()})},5e3)})),this.subs.add(this.notificationService.data$.subscribe(t=>{this.notifications=X.orderBy(t,["timestamp"],["desc"]),this.cdRef.detectChanges()})),this.subs.add(this.notificationService.sidebarSubject.subscribe(t=>{this.isSidebarOpened=!t&&!this.isSidebarOpened,window.clearTimeout(this.timeout),this.timeout=window.setTimeout(()=>{this.cdRef.detectChanges()},0)})),this.subs.add(this.summaryService.subscribe(t=>{this._handleTasks(t.executing_tasks),this.mutex.acquire().then(e=>{X.filter(t.finished_tasks,t=>!this.last_task||ze(t.end_time).isAfter(this.last_task)).forEach(t=>{const e=this.notificationService.finishedTaskToNotification(t,t.success),n=new Ze.a(e);n.timestamp=t.end_time,n.duration=t.duration,this.last_task&&!ze(t.end_time).isAfter(this.last_task)||(this.last_task=t.end_time,window.localStorage.setItem("last_task",this.last_task)),this.notificationService.save(n)}),this.cdRef.detectChanges(),e()})}))}_handleTasks(t){for(const e of t)e.description=this.taskMessageService.getRunningTitle(e);this.executingTasks=t}triggerPrometheusAlerts(){this.prometheusAlertService.refresh(),this.prometheusNotificationService.refresh()}removeAll(){this.notificationService.removeAll()}remove(t){this.notificationService.remove(t)}closeSidebar(){this.isSidebarOpened=!1}trackByFn(t){return t}}var sn=s["ɵcrt"]({encapsulation:0,styles:[["[_nghost-%COMP%]{position:fixed;top:53px;bottom:10px;right:-350px;width:350px;max-width:90vw;z-index:9;transition:all .6s}.active[_nghost-%COMP%]{right:20px}.card[_ngcontent-%COMP%]{height:100%}ngx-simplebar[_ngcontent-%COMP%]{height:calc(100% - 42.2px)}.separator[_ngcontent-%COMP%]{padding:5px 12px;color:#90949c;background-color:#eee;font-size:12px}.btn-link[_ngcontent-%COMP%]   .fa-trash-o[_ngcontent-%COMP%]{color:#000}table[_ngcontent-%COMP%]{width:100%}.row[_ngcontent-%COMP%]{margin-left:0;margin-right:0}"]],data:{}});function un(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,27,"div",[["class","card tc_task border-0 mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,26,"div",[["class","row no-gutters"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,12,"div",[["class","col-md-3 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,11,"span",[["class","text-info"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](7,2),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,2),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,4),(t()(),s["ɵeld"](16,0,null,null,12,"div",[["class","col-md-9"]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,11,"div",[["class","card-body p-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,1,"h6",[["class","card-title bold"]],null,null,null,null,null)),(t()(),s["ɵted"](19,null,["",""])),(t()(),s["ɵeld"](20,0,null,null,2,"div",[["class","progress mb-1"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,1,"progressbar",[["class","progress-striped active"],["max","100"]],[[1,"max",0],[2,"progress",null]],null,null,Ge.b,Ge.a)),s["ɵdid"](22,49152,null,0,Be.b,[Be.c],{animate:[0,"animate"],striped:[1,"striped"],value:[2,"value"],max:[3,"max"]},null),(t()(),s["ɵeld"](23,0,null,null,5,"p",[["class","card-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,2,"small",[["class","date float-left"]],null,null,null,null,null)),(t()(),s["ɵted"](25,null,[" "," "])),s["ɵppd"](26,1),(t()(),s["ɵeld"](27,0,null,null,1,"span",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵted"](28,null,[" "," % "])),(t()(),s["ɵeld"](29,0,null,null,0,"hr",[],null,null,null,null,null))],(function(t,e){var n=e.component,a=t(e,7,0,n.icons.stack,n.icons.large2x);t(e,6,0,"text-info",a);var r=t(e,11,0,n.icons.stack2x,n.icons.circle);t(e,10,0,r);var i=t(e,15,0,n.icons.stack1x,n.icons.spinner,n.icons.spin,n.icons.inverse);t(e,14,0,i),t(e,22,0,!0,!0,e.context.$implicit.progress,"100")}),(function(t,e){t(e,19,0,e.context.$implicit.description),t(e,21,0,s["ɵnov"](e,22).max,s["ɵnov"](e,22).addClass);var n=s["ɵunv"](e,25,0,t(e,26,0,s["ɵnov"](e.parent.parent,0),e.context.$implicit.begin_time));t(e,25,0,n),t(e,28,0,e.context.$implicit.progress||0)}))}function on(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,un)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.executingTasks,n.trackByFn)}),null)}function ln(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"small",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Duration:"])),(t()(),s["ɵted"](4,null,[" "," "])),s["ɵpid"](0,Ye,[]),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(e.parent.context.$implicit.duration)))}))}function dn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,37,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,35,"div",[["class","card tc_notification border-0 mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,34,"div",[["class","row no-gutters"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,12,"div",[["class","col-md-3 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,11,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,3),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,2),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,3),(t()(),s["ɵeld"](16,0,null,null,20,"div",[["class","col-md-9"]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,19,"div",[["class","card-body p-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,4,"button",[["class","btn btn-link float-right mt-0 pt-0"],["title","Remove notification"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.remove(t.context.index),a=!1!==n.stopPropagation()&&a),a}),null,null)),(t()(),s["ɵeld"](19,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](21,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](22,1),(t()(),s["ɵeld"](23,0,null,null,1,"h6",[["class","card-title bold"]],null,null,null,null,null)),(t()(),s["ɵted"](24,null,["",""])),(t()(),s["ɵeld"](25,0,null,null,0,"p",[["class","card-text"]],[[8,"innerHTML",1]],null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,10,"p",[["class","card-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ln)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](29,0,null,null,3,"small",[["class","date"]],[[8,"title",0]],null,null,null,null)),s["ɵppd"](30,1),(t()(),s["ɵted"](31,null,["",""])),s["ɵpid"](0,Ye,[]),(t()(),s["ɵeld"](33,0,null,null,3,"i",[["class","float-right custom-icon"]],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](35,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](36,1),(t()(),s["ɵeld"](37,0,null,null,0,"hr",[],null,null,null,null,null))],(function(t,e){var n=e.component,a=t(e,7,0,n.icons.stack,n.icons.large2x,e.context.$implicit.textClass);t(e,6,0,a);var r=t(e,11,0,n.icons.circle,n.icons.stack2x);t(e,10,0,r);var i=t(e,15,0,n.icons.stack1x,n.icons.inverse,e.context.$implicit.iconClass);t(e,14,0,i);var s=t(e,22,0,n.icons.trash);t(e,21,0,s),t(e,28,0,e.context.$implicit.duration);var u=t(e,36,0,e.context.$implicit.applicationClass);t(e,35,0,"float-right custom-icon",u)}),(function(t,e){t(e,24,0,e.context.$implicit.title),t(e,25,0,e.context.$implicit.message);var n=s["ɵunv"](e,29,0,t(e,30,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.timestamp));t(e,29,0,n),t(e,31,0,s["ɵunv"](e,31,0,s["ɵnov"](e,32).transform(e.context.$implicit.timestamp,!0))),t(e,33,0,e.context.$implicit.application)}))}function cn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"button",[["class","btn btn-light btn-block"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.removeAll(),a=!1!==n.stopPropagation()&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵted"](-1,null,["   "])),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clear notifications"])),(t()(),s["ɵeld"](9,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,dn)),s["ɵdid"](11,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,5,0,n.icons.trash);t(e,4,0,a),t(e,11,0,n.notifications)}),null)}function fn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,cn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.notifications.length>0)}),null)}function hn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"div",[["class","message text-center"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["There are no notifications."]))],null,null)}function gn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,hn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,0===n.notifications.length&&0===n.executingTasks.length)}),null)}function pn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function bn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function mn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function yn(t){return s["ɵvid"](2,[s["ɵpid"](0,He.a,[i.DatePipe]),(t()(),s["ɵand"](0,[["tasksTpl",2]],null,0,null,on)),(t()(),s["ɵand"](0,[["notificationsTpl",2]],null,0,null,fn)),(t()(),s["ɵand"](0,[["emptyTpl",2]],null,0,null,gn)),(t()(),s["ɵeld"](4,0,null,null,16,"div",[["class","card"]],null,[[null,"clickOutside"]],(function(t,e,n){var a=!0;return"clickOutside"===e&&(a=!1!==t.component.closeSidebar()&&a),a}),null,null)),s["ɵdid"](5,737280,null,0,Ue.ClickOutsideDirective,[s.ElementRef,s.NgZone,s.PLATFORM_ID],{clickOutsideEnabled:[0,"clickOutsideEnabled"]},{clickOutside:"clickOutside"}),(t()(),s["ɵeld"](6,0,null,null,5,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tasks and Notifications"])),(t()(),s["ɵeld"](9,0,null,null,2,"button",[["class","close float-right"],["tabindex","-1"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.closeSidebar()&&a),a}),null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](12,0,null,null,8,"ngx-simplebar",[["data-simplebar","init"]],null,null,null,$e,Ke)),s["ɵdid"](13,4440064,null,0,We.a,[s.ElementRef],{options:[0,"options"]},null),(t()(),s["ɵeld"](14,0,null,0,6,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,pn)),s["ɵdid"](16,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bn)),s["ɵdid"](18,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mn)),s["ɵdid"](20,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.isSidebarOpened),t(e,13,0,n.simplebar),t(e,16,0,s["ɵnov"](e,1)),t(e,18,0,s["ɵnov"](e,2)),t(e,20,0,s["ɵnov"](e,3))}),null)}var vn=n("ej+x");class xn{constructor(t,e,n,a,r,i){this.authStorageService=t,this.summaryService=e,this.featureToggles=n,this.telemetryNotificationService=a,this.prometheusAlertService=r,this.motdNotificationService=i,this.notifications=[],this.icons=pt.a,this.rightSidebarOpen=!1,this.showMenuSidebar=!0,this.displayedSubMenu="",this.simplebar={autoHide:!1},this.subs=new gt.a,this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}get class(){return"top-notification-"+this.notifications.length}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{this.summaryData=t})),this.subs.add(this.authStorageService.isPwdDisplayed$.subscribe(t=>{this.showTopNotification("isPwdDisplayed",t)})),this.subs.add(this.telemetryNotificationService.update.subscribe(t=>{this.showTopNotification("telemetryNotificationEnabled",t)})),this.subs.add(this.motdNotificationService.motd$.subscribe(t=>{this.showTopNotification("motdNotificationEnabled",X.isPlainObject(t))}))}ngOnDestroy(){this.subs.unsubscribe()}blockHealthColor(){if(this.summaryData&&this.summaryData.rbd_mirroring){if(this.summaryData.rbd_mirroring.errors>0)return{color:"#d9534f"};if(this.summaryData.rbd_mirroring.warnings>0)return{color:"#f0ad4e"}}}toggleSubMenu(t){this.displayedSubMenu=this.displayedSubMenu===t?"":t}toggleRightSidebar(){this.rightSidebarOpen=!this.rightSidebarOpen}showTopNotification(t,e){if(e)this.notifications.includes(t)||this.notifications.push(t);else{const e=this.notifications.indexOf(t);e>=0&&this.notifications.splice(e,1)}}}var _n=s["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";  .cd-navbar-top .cd-navbar-brand{background:#374249;border-top:4px solid #2b99a8}  .cd-navbar-top .cd-navbar-brand .navbar-brand,   .cd-navbar-top .cd-navbar-brand .navbar-brand:hover{color:#eee;height:auto;padding:0}  .cd-navbar-top .cd-navbar-brand .navbar-brand>img{height:25px}  .cd-navbar-top .cd-navbar-brand .navbar-toggler{border:0}  .cd-navbar-top .cd-navbar-brand .navbar-toggler:focus,   .cd-navbar-top .cd-navbar-brand .navbar-toggler:hover{outline:0}  .cd-navbar-top .cd-navbar-brand .navbar-toggler .fa-navicon{color:#eee}  .cd-navbar-top .cd-navbar-brand .navbar-collapse{padding:0}  .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>.active>a{color:#eee;background-color:#2b99a8}  .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a,   .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:focus,   .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}  .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown]>a,   .cd-navbar-top .navbar-nav>li>.cd-navbar>a,   .cd-navbar-top .navbar-nav>li>a{color:#eee;line-height:1;padding:13.5px 18px!important;position:relative;display:block;text-decoration:none}  .cd-navbar-top .navbar-nav .nav-link,   .cd-navbar-top .navbar-nav .nav-link:hover{color:#eee}  .cd-navbar-top .navbar-nav>li:hover,   .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown].open>a,   .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown]>a:hover,   .cd-navbar-top .navbar-nav>li>.cd-navbar>a:hover,   .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}  .cd-navbar-top .navbar-nav>.open>.cd-navbar>[dropdown]>a,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>[dropdown]>a:hover,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:focus,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:hover,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>li>a:focus,   .cd-navbar-top .navbar-nav>.open>a,   .cd-navbar-top .navbar-nav>.open>a:focus,   .cd-navbar-top .navbar-nav>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}@media (min-width:768px){  .cd-navbar-top .cd-navbar-utility{border-bottom:0;position:absolute;right:0;top:0;font-size:1.1rem}}@media (max-width:calc(768px - 1px)){  .cd-navbar-top .navbar-nav{margin:0}  .cd-navbar-top .navbar-nav .fa{margin-right:.5em}  .cd-navbar-top .navbar-nav .open .dropdown-menu{border:0;padding-top:0;padding-bottom:0;background-color:#2b99a8}  .cd-navbar-top .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 35px;color:#eee}  .cd-navbar-top .navbar-nav .open .dropdown-menu>.active>a{background-color:#2b99a8}  .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}}.cd-navbar-primary[_ngcontent-%COMP%]   .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:focus, .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:hover{color:#eee!important;background-color:#2b99a8!important;border:0!important}.wrapper[_ngcontent-%COMP%]{display:flex;width:100%}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]{width:200px;top:43px;background:#374249;overflow-y:auto;position:fixed;bottom:0;left:0;z-index:999;color:#fff;transition:all .3s}.wrapper[_ngcontent-%COMP%]   #sidebar.active[_ngcontent-%COMP%]{margin-left:-200px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul.component[_ngcontent-%COMP%]{padding:20px 0;margin:0}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{color:#fff;padding:10px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{padding:10px;font-size:1.1em;display:block;color:#fff;text-decoration:none}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover{color:#fff;background:#2b99a8}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] > .badge[_ngcontent-%COMP%]{margin-left:5px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li.active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]   a[aria-expanded=true][_ngcontent-%COMP%]{color:#fff}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]{position:relative}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]::after{position:absolute;right:20px;content:"";font-family:ForkAwesome;border:0;font-size:1rem;transition:transform .3s ease-in-out}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[aria-expanded=true][_ngcontent-%COMP%]::after{transform:rotate(90deg)}.wrapper[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{font-size:.9em!important;padding-left:30px!important;background:#4d5c66}.wrapper[_ngcontent-%COMP%]   .cd-navbar-primary[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:focus{outline:0}.wrapper[_ngcontent-%COMP%]   ngx-simplebar[_ngcontent-%COMP%]{height:100%}#content[_ngcontent-%COMP%]{width:calc(100% - 200px);transition:all .3s;position:absolute;top:43px;bottom:0;right:0}#content.active[_ngcontent-%COMP%]{width:100vw}.top-notification-1[_nghost-%COMP%]   .cd-navbar-top[_ngcontent-%COMP%]   .cd-navbar-brand[_ngcontent-%COMP%]{top:37.6px}.top-notification-1[_nghost-%COMP%]   #sidebar[_ngcontent-%COMP%]{top:80.6px}.top-notification-1[_nghost-%COMP%]   #content[_ngcontent-%COMP%]{top:80.6px}.top-notification-1[_nghost-%COMP%]   cd-notifications-sidebar[_ngcontent-%COMP%]{top:90.6px}.top-notification-2[_nghost-%COMP%]   .cd-navbar-top[_ngcontent-%COMP%]   .cd-navbar-brand[_ngcontent-%COMP%]{top:75.2px}.top-notification-2[_nghost-%COMP%]   #sidebar[_ngcontent-%COMP%]{top:118.2px}.top-notification-2[_nghost-%COMP%]   #content[_ngcontent-%COMP%]{top:118.2px}.top-notification-2[_nghost-%COMP%]   cd-notifications-sidebar[_ngcontent-%COMP%]{top:128.2px}']],data:{}});function Tn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function wn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function On(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"cd-language-selector",[["class","cd-navbar"]],null,null,null,ht,ut)),s["ɵdid"](2,114688,null,0,it,[st.l,nt],null,null),(t()(),s["ɵeld"](3,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"cd-notifications",[["class","cd-navbar"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleRightSidebar()&&a),a}),_t,vt)),s["ɵdid"](5,245760,null,0,yt,[bt.a,mt.a],null,null),(t()(),s["ɵeld"](6,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"cd-dashboard-help",[["class","cd-navbar"]],null,null,null,kt,Rt)),s["ɵdid"](8,114688,null,0,Nt,[Ct.b,Tt.a],null,null),(t()(),s["ɵeld"](9,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"cd-administration",[["class","cd-navbar"]],null,null,null,Ft,Dt)),s["ɵdid"](11,114688,null,0,Lt,[Z.a],null,null),(t()(),s["ɵeld"](12,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"cd-identity",[["class","cd-navbar"]],null,null,null,Ht,Bt)),s["ɵdid"](14,114688,null,0,Gt,[Z.a,Vt.a],null,null)],(function(t,e){t(e,2,0),t(e,5,0),t(e,8,0),t(e,11,0),t(e,14,0)}),null)}function Sn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_hosts"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,5,{links:1}),s["ɵqud"](603979776,6,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/hosts"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[6,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Hosts"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/hosts")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function In(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_inventory"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,7,{links:1}),s["ɵqud"](603979776,8,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/inventory"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[8,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Inventory"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/inventory")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Nn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_monitor"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,9,{links:1}),s["ɵqud"](603979776,10,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/monitor/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[10,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Monitors"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/monitor/")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Cn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_services"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,11,{links:1}),s["ɵqud"](603979776,12,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/services/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[12,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Services"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/services/")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Rn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_osds"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,13,{links:1}),s["ɵqud"](603979776,14,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/osd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[14,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["OSDs"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/osd")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function An(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_configuration"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,15,{links:1}),s["ɵqud"](603979776,16,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/configuration"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[16,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Configuration"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/configuration")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function kn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_crush"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,17,{links:1}),s["ɵqud"](603979776,18,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/crush-map"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[18,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["CRUSH map"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/crush-map")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function En(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_modules"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,19,{links:1}),s["ɵqud"](603979776,20,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/mgr-modules"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[20,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Manager Modules"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/mgr-modules")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Ln(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_log"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,21,{links:1}),s["ɵqud"](603979776,22,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[22,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Logs"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/logs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Dn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-danger"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.prometheusAlertService.activeAlerts)}))}function Pn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"li",[["class","tc_submenuitem tc_submenuitem_monitoring"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,23,{links:1}),s["ɵqud"](603979776,24,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,5,"a",[["routerLink","/monitoring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[24,4],[4,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Monitoring"])),(t()(),s["ɵand"](16777216,null,null,1,null,Dn)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,5,0,"/monitoring"),t(e,9,0,n.prometheusAlertService.activeAlerts>0)}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Mn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,"li",[["class","nav-item tc_menuitem_cluster"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,3,{links:1}),s["ɵqud"](603979776,4,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("cluster")&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster"])),(t()(),s["ɵeld"](7,0,null,null,21,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](8,8404992,null,0,Kt,[s.ElementRef,s.Renderer2,W.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sn)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,In)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nn)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cn)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rn)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,An)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kn)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,En)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ln)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pn)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,8,0,!0,"cluster"!==n.displayedSubMenu),t(e,10,0,n.permissions.hosts.read),t(e,12,0,n.permissions.hosts.read),t(e,14,0,n.permissions.monitor.read),t(e,16,0,n.permissions.hosts.read),t(e,18,0,n.permissions.osd.read),t(e,20,0,n.permissions.configOpt.read),t(e,22,0,n.permissions.osd.read),t(e,24,0,n.permissions.configOpt.read),t(e,26,0,n.permissions.log.read),t(e,28,0,n.permissions.prometheus.read)}),(function(t,e){t(e,4,0,"cluster"==e.component.displayedSubMenu),t(e,7,0,s["ɵnov"](e,8).isCollapse,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isCollapsed,s["ɵnov"](e,8).isCollapsing)}))}function qn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_pool"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,25,{links:1}),s["ɵqud"](603979776,26,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/pool"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[26,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Pools"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/pool")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function jn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_block_images"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,29,{links:1}),s["ɵqud"](603979776,30,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/block/rbd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[30,4],[28,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Images"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/rbd")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Fn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-warning"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)}))}function Vn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-danger"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors)}))}function Gn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"li",[["class","tc_submenuitem tc_submenuitem_block_mirroring"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,31,{links:1}),s["ɵqud"](603979776,32,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,7,"a",[["routerLink","/block/mirroring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[32,4],[28,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Mirroring"])),(t()(),s["ɵand"](16777216,null,null,1,null,Fn)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vn)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,5,0,"/block/mirroring"),t(e,9,0,0!==(null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)),t(e,11,0,0!==(null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors))}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Bn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_block_iscsi"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,33,{links:1}),s["ɵqud"](603979776,34,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/block/iscsi"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[34,4],[28,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["iSCSI"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/iscsi")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function zn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"li",[["class","nav-item tc_menuitem_block"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,27,{links:1}),s["ɵqud"](603979776,28,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,4,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("block")&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Block"])),(t()(),s["ɵeld"](9,0,null,null,7,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](10,8404992,null,0,Kt,[s.ElementRef,s.Renderer2,W.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jn)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gn)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bn)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,6,0,n.blockHealthColor()),t(e,10,0,!0,"block"!==n.displayedSubMenu),t(e,12,0,n.permissions.rbdImage.read&&e.parent.context.ngIf.rbd),t(e,14,0,n.permissions.rbdMirroring.read&&e.parent.context.ngIf.mirroring),t(e,16,0,n.permissions.iscsi.read&&e.parent.context.ngIf.iscsi)}),(function(t,e){t(e,4,0,"block"==e.component.displayedSubMenu),t(e,9,0,s["ɵnov"](e,10).isCollapse,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isCollapsed,s["ɵnov"](e,10).isCollapsing)}))}function Yn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_nfs"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,35,{links:1}),s["ɵqud"](603979776,36,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/nfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[36,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["NFS"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/nfs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Hn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_cephfs"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,37,{links:1}),s["ɵqud"](603979776,38,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/cephfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[38,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Filesystems"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/cephfs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Un(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"li",[["class","nav-item tc_menuitem_rgw"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,39,{links:1}),s["ɵqud"](603979776,40,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("rgw")&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway"])),(t()(),s["ɵeld"](7,0,null,null,22,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](8,8404992,null,0,Kt,[s.ElementRef,s.Renderer2,W.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵeld"](9,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_daemons"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](10,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,41,{links:1}),s["ɵqud"](603979776,42,{linksWithHrefs:1}),(t()(),s["ɵeld"](13,0,null,null,2,"a",[["routerLink","/rgw/daemon"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,14).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](14,671744,[[42,4],[40,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Daemons"])),(t()(),s["ɵeld"](16,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_users"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](17,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,43,{links:1}),s["ɵqud"](603979776,44,{linksWithHrefs:1}),(t()(),s["ɵeld"](20,0,null,null,2,"a",[["routerLink","/rgw/user"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,21).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](21,671744,[[44,4],[40,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Users"])),(t()(),s["ɵeld"](23,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_buckets"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](24,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,45,{links:1}),s["ɵqud"](603979776,46,{linksWithHrefs:1}),(t()(),s["ɵeld"](27,0,null,null,2,"a",[["routerLink","/rgw/bucket"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,28).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](28,671744,[[46,4],[40,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Buckets"]))],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,8,0,!0,"rgw"!==n.displayedSubMenu),t(e,10,0,"active"),t(e,14,0,"/rgw/daemon"),t(e,17,0,"active"),t(e,21,0,"/rgw/user"),t(e,24,0,"active"),t(e,28,0,"/rgw/bucket")}),(function(t,e){t(e,4,0,"rgw"==e.component.displayedSubMenu),t(e,7,0,s["ɵnov"](e,8).isCollapse,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isCollapsed,s["ɵnov"](e,8).isCollapsing),t(e,13,0,s["ɵnov"](e,14).target,s["ɵnov"](e,14).href),t(e,20,0,s["ɵnov"](e,21).target,s["ɵnov"](e,21).href),t(e,27,0,s["ɵnov"](e,28).target,s["ɵnov"](e,28).href)}))}function Wn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,15,"li",[["class","nav-item tc_menuitem_dashboard"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](2,1720320,null,2,Et.o,[Et.m,s.ElementRef,s.Renderer2,[2,Et.n],[2,Et.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,1,{links:1}),s["ɵqud"](603979776,2,{linksWithHrefs:1}),(t()(),s["ɵeld"](5,0,null,null,11,"a",[["class","nav-link"],["routerLink","/dashboard"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,[[2,4]],0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Dashboard"])),(t()(),s["ɵted"](-1,null,["  "])),(t()(),s["ɵeld"](10,0,null,null,6,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](12,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](13,1),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](15,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](16,1),(t()(),s["ɵand"](16777216,null,null,1,null,Mn)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qn)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zn)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yn)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hn)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Un)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,"active"),t(e,6,0,"/dashboard");var a=t(e,13,0,n.icons.health);t(e,12,0,a);var r=s["ɵunv"](e,15,0,t(e,16,0,s["ɵnov"](e.parent.parent,0),null==n.summaryData?null:n.summaryData.health_status));t(e,15,0,r),t(e,18,0,n.permissions.hosts.read||n.permissions.monitor.read||n.permissions.osd.read||n.permissions.configOpt.read||n.permissions.log.read||n.permissions.prometheus.read),t(e,20,0,n.permissions.pool.read),t(e,22,0,(n.permissions.rbdImage.read||n.permissions.rbdMirroring.read||n.permissions.iscsi.read)&&(e.context.ngIf.rbd||e.context.ngIf.mirroring||e.context.ngIf.iscsi)),t(e,24,0,n.permissions.nfs.read&&e.context.ngIf.nfs),t(e,26,0,n.permissions.cephfs.read&&e.context.ngIf.cephfs),t(e,28,0,n.permissions.rgw.read&&e.context.ngIf.rgw)}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function Kn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,2,null,Wn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](131072,i.AsyncPipe,[s.ChangeDetectorRef]),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,s["ɵunv"](e,1,0,s["ɵnov"](e,2).transform(n.enabledFeature$)))}),null)}function $n(t){return s["ɵvid"](0,[s["ɵpid"](0,Jt,[]),(t()(),s["ɵeld"](1,0,null,null,1,"cd-pwd-expiration-notification",[],null,null,null,se,ne)),s["ɵdid"](2,245760,null,0,ee,[Xt.a,Z.a],null,null),(t()(),s["ɵeld"](3,0,null,null,1,"cd-telemetry-notification",[],null,null,null,pe,he)),s["ɵdid"](4,245760,null,0,ce,[oe,Z.a,bt.a,de,fe.a],null,null),(t()(),s["ɵeld"](5,0,null,null,1,"cd-motd",[],null,null,null,Ve,je)),s["ɵdid"](6,245760,null,0,qe,[Me],null,null),(t()(),s["ɵeld"](7,0,null,null,1,"cd-notifications-sidebar",[],[[2,"active",null]],null,null,yn,sn)),s["ɵdid"](8,245760,null,0,rn,[bt.a,mt.a,an.a,nn,Z.a,en,s.NgZone,s.ChangeDetectorRef],null,null),(t()(),s["ɵeld"](9,0,null,null,17,"div",[["class","cd-navbar-top"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,16,"nav",[["class","navbar fixed-top navbar-expand-md navbar-dark cd-navbar-brand"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"button",[["class","btn btn-link py-0"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=0!=(r.showMenuSidebar=!r.showMenuSidebar)&&a),a}),null,null)),(t()(),s["ɵeld"](12,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-bars fa-2x"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"a",[["class","navbar-brand ml-2"],["href","#"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,0,"img",[["alt","Ceph"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,4,"button",[["class","navbar-toggler"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleRightSidebar()&&a),a}),null,null)),(t()(),s["ɵeld"](16,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Toggle navigation"])),(t()(),s["ɵeld"](18,0,null,null,1,"span",[["class",""]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,0,"i",[["class","fa fa-navicon fa-lg"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,6,"div",[["class","collapse navbar-collapse"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](22,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](23,{show:0}),(t()(),s["ɵeld"](24,0,null,null,2,"ul",[["class","nav navbar-nav cd-navbar-utility my-2 my-md-0"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Tn)),s["ɵdid"](26,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](27,0,null,null,14,"div",[["class","wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,8,"nav",[["id","sidebar"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](30,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](31,{active:0}),(t()(),s["ɵeld"](32,0,null,null,4,"ngx-simplebar",[["data-simplebar","init"]],null,null,null,$e,Ke)),s["ɵdid"](33,4440064,null,0,We.a,[s.ElementRef],{options:[0,"options"]},null),(t()(),s["ɵeld"](34,0,null,0,2,"ul",[["class","list-unstyled components cd-navbar-primary"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,wn)),s["ɵdid"](36,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](37,0,null,null,4,"div",[["id","content"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](39,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](40,{active:0}),s["ɵncd"](null,0),(t()(),s["ɵand"](0,[["cd_utilities",2]],null,0,null,On)),(t()(),s["ɵand"](0,[["cd_menu",2]],null,0,null,Kn))],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0),t(e,6,0),t(e,8,0);var a=t(e,23,0,n.rightSidebarOpen);t(e,22,0,"collapse navbar-collapse",a),t(e,26,0,s["ɵnov"](e,42));var r=t(e,31,0,!n.showMenuSidebar);t(e,30,0,r),t(e,33,0,n.simplebar),t(e,36,0,s["ɵnov"](e,43));var i=t(e,40,0,!n.showMenuSidebar);t(e,39,0,i)}),(function(t,e){t(e,7,0,s["ɵnov"](e,8).isSidebarOpened)}))}var Jn=n("HDdC"),Zn=n("Cfvw"),Qn=n("pLZG"),Xn=n("l7GE"),ta=n("ZUHj");class ea{constructor(t,e){this.keySelector=t,this.flushes=e}call(t,e){return e.subscribe(new na(t,this.keySelector,this.flushes))}}class na extends Xn.a{constructor(t,e,n){super(t),this.keySelector=e,this.values=new Set,n&&this.add(Object(ta.a)(this,n))}notifyNext(t,e,n,a,r){this.values.clear()}notifyError(t,e){this._error(t)}_next(t){this.keySelector?this._useKeySelector(t):this._finalizeNext(t,t)}_useKeySelector(t){let e;const{destination:n}=this;try{e=this.keySelector(t)}catch(a){return void n.error(a)}this._finalizeNext(e,t)}_finalizeNext(t,e){const{values:n}=this;n.has(t)||(n.add(t),this.destination.next(e))}}var aa=n("128B");function ra(t,e,n){return 0===n?[e]:(t.push(e),t)}function ia(){return Object(aa.a)(ra,[])}var sa=n("SxV6"),ua=n("GyhO");class oa{resolve(t){const e=t.routeConfig.data,n=null===e.path?null:this.getFullPath(t),a=[{text:"string"==typeof e.breadcrumbs?e.breadcrumbs:e.breadcrumbs.text||e.text||n,path:n}];return Object(_e.a)(a)}getFullPath(t){return t.pathFromRoot.reduce((t,e)=>t+e.url.reduce((t,e)=>t+"/"+e.path,""),"")}}class la{constructor(t,e){this.router=t,this.injector=e,this.crumbs=[],this.finished=!1,this.defaultResolver=new oa,this.subscription=this.router.events.pipe(Object(Qn.a)(t=>t instanceof Et.e)).subscribe(()=>{this.finished=!1}),this.subscription=this.router.events.pipe(Object(Qn.a)(t=>t instanceof Et.d)).subscribe(()=>{var e;this._resolveCrumbs(t.routerState.snapshot.root).pipe(Object(we.a)(t=>t),(e=t=>t.text,t=>t.lift(new ea(e,void 0))),ia(),Object(we.a)(t=>{const e=this.postProcess(t);return this.wrapIntoObservable(e).pipe(Object(sa.a)())})).subscribe(t=>{this.finished=!0,this.crumbs=t})})}ngOnDestroy(){this.subscription.unsubscribe()}_resolveCrumbs(t){let e;const n=t.routeConfig&&t.routeConfig.data;if(n&&n.breadcrumbs){let a;a=n.breadcrumbs.prototype instanceof oa?this.injector.get(n.breadcrumbs):this.defaultResolver;const r=a.resolve(t);e=this.wrapIntoObservable(r).pipe(Object(sa.a)())}else e=Object(_e.a)([]);return t.firstChild&&(e=e.pipe(function(...t){return e=>e.lift.call(Object(ua.a)(e,...t))}(this._resolveCrumbs(t.firstChild)))),e}postProcess(t){const e=[];return t.forEach(t=>{const n=t.text.split("/");if(n.length>1){t.text=n[n.length-1];for(let t=0;t<n.length-1;t++)e.push({text:n[t],path:null})}e.push(t)}),e}isPromise(t){return t&&"function"==typeof t.then}wrapIntoObservable(t){return t instanceof Jn.a?t:this.isPromise(t)?Object(Zn.a)(Promise.resolve(t)):Object(_e.a)(t)}}var da=s["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.breadcrumb[_ngcontent-%COMP%]{padding:8px 0;background-color:transparent;border-radius:0;margin-top:8px}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]:before{padding:0 5px 0 7px;color:#474544;font-family:ForkAwesome;content:""}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:#474544}']],data:{}});function ca(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"a",[["preserveFragment",""]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),s["ɵted"](2,null,["",""]))],(function(t,e){t(e,1,0,"",e.parent.context.$implicit.path)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,2,0,e.parent.context.$implicit.text)}))}function fa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.text)}))}function ha(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"li",[["class","breadcrumb-item"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](3,{active:0}),(t()(),s["ɵand"](16777216,null,null,1,null,ca)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fa)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=t(e,3,0,e.context.last&&e.component.finished);t(e,2,0,"breadcrumb-item",n),t(e,5,0,!e.context.last&&null!==e.context.$implicit.path),t(e,7,0,e.context.last||null===e.context.$implicit.path)}),null)}function ga(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"ol",[["class","breadcrumb"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ha)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.crumbs)}),null)}function pa(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ga)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.crumbs.length)}),null)}var ba=n("978R"),ma=n("VXsX");const ya=()=>Object.assign(new ba.a,{container:"body"});class va{constructor(t,e,n){this.router=t,this.summaryService=e,this.taskManagerService=n,this.subs=new gt.a}ngOnInit(){this.subs.add(this.summaryService.startPolling()),this.subs.add(this.taskManagerService.init(this.summaryService))}ngOnDestroy(){this.subs.unsubscribe()}isDashboardPage(){return"/dashboard"===this.router.url}}var xa=s["ɵcrt"]({encapsulation:0,styles:[[".dashboard[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;padding:0}.container-fluid[_ngcontent-%COMP%]{overflow:auto}  #toast-container{margin-top:2vw}@media (max-width:1600px){  #toast-container{margin-top:2.5vw}}@media (max-width:calc(992px - 1px)){  #toast-container{margin-top:9vw}}@media (max-width:900px){  #toast-container{margin-top:10vw}}@media (max-width:319px){  #toast-container{margin-top:11vw}}@media (max-width:260px){  #toast-container{margin-top:14vw}}"]],data:{}});function _a(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"block-ui",[],null,null,null,D,L)),s["ɵdid"](1,114688,null,0,S,[O],null,null),(t()(),s["ɵeld"](2,0,null,0,9,"cd-navigation",[],[[8,"className",0]],null,null,$n,_n)),s["ɵdid"](3,245760,null,0,xn,[Z.a,mt.a,vn.a,de,en,Me],null,null),(t()(),s["ɵeld"](4,0,null,0,7,"div",[["class","container-fluid h-100"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{dashboard:0}),(t()(),s["ɵeld"](8,0,null,null,1,"cd-breadcrumbs",[],null,null,null,pa,da)),s["ɵdid"](9,180224,null,0,la,[Et.m,s.Injector],null,null),(t()(),s["ɵeld"](10,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](11,212992,null,0,Et.r,[Et.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){var n=e.component;t(e,1,0),t(e,3,0);var a=t(e,7,0,n.isDashboardPage());t(e,6,0,"container-fluid h-100",a),t(e,11,0)}),(function(t,e){t(e,2,0,s["ɵnov"](e,3).class)}))}function Ta(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-workbench-layout",[],null,null,null,_a,xa)),s["ɵprd"](5120,null,ba.a,ya,[]),s["ɵdid"](2,245760,null,0,va,[Et.m,mt.a,ma.a],null,null)],(function(t,e){t(e,2,0)}),null)}var wa=s["ɵccf"]("cd-workbench-layout",va,Ta,{},{},[]),Oa=n("pKUh"),Sa=n("2ZVE"),Ia=n("KOzp"),Na=n("2uy1");class Ca{constructor(){this.cardClass=""}}var Ra=s["ɵcrt"]({encapsulation:0,styles:[[".card[_ngcontent-%COMP%]{height:100%;border:.5px solid #ddd;border-radius:3px;box-shadow:0 1px 1px rgba(3,3,3,.175);font-size:12px}@media screen and (min-width:320px){.card[_ngcontent-%COMP%]{font-size:calc(12px + 9 * ((100vw - 320px)/ 1728))}}@media screen and (min-width:2048px){.card[_ngcontent-%COMP%]{font-size:21px}}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]{padding-top:40px!important}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]   .card-title[_ngcontent-%COMP%]{left:-.6rem;position:absolute;top:-.3rem}.no-center[_ngcontent-%COMP%]{position:unset;top:unset;left:unset;transform:unset}.content-highlight[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function Aa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](2,null,["",""]))],(function(t,e){t(e,1,0,e.component.link)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,2,0,n.cardTitle)}))}function ka(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" "," "]))],null,(function(t,e){t(e,0,0,e.component.cardTitle)}))}function Ea(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"div",[["class","card"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),s["ɵeld"](3,0,null,null,8,"div",[["class","card-body d-flex align-items-center justify-content-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"h4",[["class","card-title m-4"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Aa)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noLinkTitle",2]],null,0,null,ka)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-text text-center"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"card",n.cardClass),t(e,6,0,n.link,s["ɵnov"](e,7)),t(e,10,0,"card-text text-center",n.contentClass)}),null)}class La{}var Da=s["ɵcrt"]({encapsulation:0,styles:[[".info-group-title[_ngcontent-%COMP%]{margin:0 0 .5vw .5vw;font-size:21px}"]],data:{}});function Pa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","info-group-title"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),(t()(),s["ɵeld"](3,0,null,null,1,"div",[["class","row"]],null,null,null,null,null)),s["ɵncd"](null,0)],null,(function(t,e){t(e,2,0,e.component.groupTitle)}))}var Ma=n("hrfs"),qa=n("MO+k"),ja=n("NEZu"),Fa=n("Fgil"),Va=n("o4+5");class Ga{constructor(t,e){this.dimlessBinary=t,this.dimless=e,this.config={},this.isBytesData=!1,this.showLabelAsTooltip=!1,this.prepareFn=new s.EventEmitter,this.chartConfig={chartType:"doughnut",dataset:[{label:null,borderWidth:0}],colors:[{backgroundColor:["--color-green","--color-yellow","--color-orange","--color-red","--color-blue"]}],options:{cutoutPercentage:90,events:["click","mouseout","touchstart"],legend:{display:!0,position:"right",labels:{boxWidth:10,usePointStyle:!1}},plugins:{center_text:!0},tooltips:{enabled:!0,displayColors:!1,backgroundColor:"rgba(0,0,0,0.8)",cornerRadius:0,bodyFontSize:14,bodyFontStyle:"600",position:"nearest",xPadding:12,yPadding:12,callbacks:{label:(t,e)=>{let n=e.labels[t.index];return n.includes("%")||(n=`${n} (${e.datasets[t.datasetIndex].data[t.index]}%)`),n}}},title:{display:!1}}},this.doughnutChartPlugins=[{id:"center_text",beforeDraw(t){const e="Helvetica Neue, Helvetica, Arial, sans-serif";qa.defaults.global.defaultFontFamily=e;const n=t.ctx;if(!t.options.plugins.center_text||!t.data.datasets[0].label)return;n.save();const a=t.data.datasets[0].label.split("\n"),r=(t.chartArea.left+t.chartArea.right)/2,i=(t.chartArea.top+t.chartArea.bottom)/2;n.textAlign="center",n.textBaseline="middle",n.font="24px "+e,n.fillStyle="#151515",n.fillText(a[0],r,i-10),a.length>1&&(n.font="14px "+e,n.fillStyle="#72767B",n.fillText(a[1],r,i+10)),n.restore()}}]}ngOnInit(){new ja.a(this.chartCanvasRef,this.chartTooltipRef,(t,e)=>e+t.caretX+"px",(t,e)=>e+t.caretY-t.height-10+"px").getBody=t=>this.getChartTooltipBody(t),X.merge(this.chartConfig,this.config),this.setColorsFromCssVars(),this.prepareFn.emit([this.chartConfig,this.data])}ngOnChanges(){this.prepareFn.emit([this.chartConfig,this.data]),this.setChartSliceBorderWidth()}setColorsFromCssVars(){this.chartConfig.colors.forEach((t,e)=>{t.backgroundColor.forEach((t,n)=>{t.startsWith("--")&&(this.chartConfig.colors[e].backgroundColor[n]=this.getCssVar(t))})})}getCssVar(t){return getComputedStyle(document.querySelector(".chart-container")).getPropertyValue(t)}getChartTooltipBody(t){const e=t[0].split(": ");return this.showLabelAsTooltip?e[0]:(e[1]=this.isBytesData?this.dimlessBinary.transform(e[1]):this.dimless.transform(e[1]),e.join(": "))}setChartSliceBorderWidth(){let t=0;X.forEach(this.chartConfig.dataset[0].data,(function(e){e>0&&(t+=1)})),this.chartConfig.dataset[0].borderWidth=t>1?1:0}}var Ba=s["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto;cursor:pointer;overflow:visible;--color-red:#c9190b;--color-blue:#06c;--color-orange:#ef9234;--color-yellow:#f6d173;--color-magenta:#009596;--color-green:#7cc674;--color-gray:#ededed;--color-light-blue:#519de9;--color-light-yellow:#f9e0a2;--color-cyan:#73c5c5;--color-purple:#3c3d99;position:unset;width:100%;height:100%}.chart-canvas[_ngcontent-%COMP%]{position:unset;width:100%;height:100%;margin-left:auto;margin-right:auto;max-width:100%;max-height:100%}']],data:{}});function za(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{chartCanvasRef:0}),s["ɵqud"](402653184,2,{chartTooltipRef:0}),(t()(),s["ɵeld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""],["class","chart-canvas"]],null,null,null,null,null)),s["ɵdid"](4,999424,null,0,Ma.a,[s.ElementRef,Ma.c],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"],plugins:[5,"plugins"]},null),(t()(),s["ɵeld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.chartConfig.dataset,n.chartConfig.labels,n.chartConfig.options,n.chartConfig.chartType,n.chartConfig.colors,n.doughnutChartPlugins)}),null)}class Ya{constructor(t){this.i18n=t}transform(t){return t?`${t.monmap.mons.length.toString()} (${this.i18n("quorum")} ${t.quorum.join(", ")})`:""}}class Ha{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e=0,n=0;X.each(t.osds,t=>{t.in&&e++,t.up&&n++});const a=[{content:`${t.osds.length} ${this.i18n("total")}`,class:""}];a.push({content:"",class:"card-text-line-break"}),a.push({content:`${n} ${this.i18n("up")}, ${e} ${this.i18n("in")}`,class:""});const r=t.osds.length-n,i=t.osds.length-e;if(r>0||i>0){a.push({content:"",class:"card-text-line-break"});const t=r>0?`${r} ${this.i18n("down")}`:"",e=r>0&&i>0?", ":"",n=i>0?`${i} ${this.i18n("out")}`:"";a.push({content:`${t}${e}${n}`,class:"card-text-error"})}return a}}class Ua{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e=this.i18n("n/a");const n=X.isUndefined(t.active_name)?"":`${this.i18n("active daemon")}: ${t.active_name}`;n.length>0&&(e="1");const a=t.standbys.map(t=>t.name).join(", "),r=a?`${this.i18n("standby daemons")}: ${a}`:"",i=t.standbys.length,s=[{content:`${e} ${this.i18n("active")}`,class:"popover-info",titleText:n}];return s.push({content:"",class:"card-text-line-break",titleText:""}),s.push({content:`${i} ${this.i18n("standby")}`,class:"popover-info",titleText:r}),s}}class Wa{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e="",n="",a=0,r=0,i=0;X.each(t.standbys,()=>{a+=1}),t.standbys&&!t.filesystems?(e=`${a} ${this.i18n("up")}`,n=this.i18n("no filesystems")):0===t.filesystems.length?e=this.i18n("no filesystems"):(X.each(t.filesystems,t=>{X.each(t.mdsmap.info,t=>{"up:standby-replay"===t.state?i+=1:r+=1})}),e=`${r} ${this.i18n("active")}`,n=`${a+i} ${this.i18n("standby")}`);const s=t.standbys.map(t=>t.name).join(", "),u=s?`${this.i18n("standby daemons")}: ${s}`:"",o=t.filesystems?t.filesystems.length:0,l=Object.values(o>0?t.filesystems[0].mdsmap.info:{}).map(t=>t.name).join(", ");let d=l?`${this.i18n("active daemon")}: ${l}`:"";!r&&o>0&&(d=`${i} ${this.i18n("standbyReplay")}`);const c=[{content:e,class:"popover-info",titleText:d}];return n&&(c.push({content:"",class:"card-text-line-break",titleText:""}),c.push({content:n,class:"popover-info",titleText:u})),c}}var Ka=n("aXbf");let $a=(()=>{class t{constructor(t){this.http=t}getFullHealth(){return this.http.get("api/health/full")}getMinimalHealth(){return this.http.get("api/health/minimal")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t})();var Ja=n("Y7HM");function Za(t){const{subscriber:e,counter:n,period:a}=t;e.next(n),this.schedule({subscriber:e,counter:n+1,period:a},a)}let Qa=(()=>{class t{constructor(t){this.ngZone=t,this.intervalDataSource=new xe.a(null),this.intervalData$=this.intervalDataSource.asObservable();const e=parseInt(sessionStorage.getItem("dashboard_interval"),10)||5e3;this.setRefreshInterval(e)}setRefreshInterval(t){this.intervalTime=t,sessionStorage.setItem("dashboard_interval",t.toString()),this.intervalSubscription&&this.intervalSubscription.unsubscribe(),this.ngZone.runOutsideAngular(()=>{this.intervalSubscription=function(t=0,e=Ie.a){return(!Object(Ja.a)(t)||t<0)&&(t=0),e&&"function"==typeof e.schedule||(e=Ie.a),new Jn.a(n=>(n.add(e.schedule(Za,t,{subscriber:n,counter:0,period:t})),n))}(this.intervalTime).subscribe(()=>this.ngZone.run(()=>{this.intervalDataSource.next(this.intervalTime)}))})}getRefreshInterval(){return this.intervalTime}ngOnDestroy(){this.intervalSubscription&&this.intervalSubscription.unsubscribe()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](s.NgZone))},token:t,providedIn:"root"}),t})();var Xa=n("d+Og");class tr{constructor(t,e,n,a,r,i,s,u){this.healthService=t,this.i18n=e,this.authStorageService=n,this.pgCategoryService=a,this.featureToggles=r,this.refreshIntervalService=i,this.dimlessBinary=s,this.dimless=u,this.interval=new gt.a,this.icons=pt.a,this.clientStatsConfig={colors:[{backgroundColor:["--color-cyan","--color-purple"]}]},this.rawCapacityChartConfig={colors:[{backgroundColor:["--color-blue","--color-gray"]}]},this.pgStatusChartConfig={options:{events:[""]}},this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}ngOnInit(){this.getHealth(),this.interval=this.refreshIntervalService.intervalData$.subscribe(()=>{this.getHealth()})}ngOnDestroy(){this.interval.unsubscribe()}getHealth(){this.healthService.getMinimalHealth().subscribe(t=>{this.healthData=t})}prepareReadWriteRatio(t){const e=[],n=[],a=this.healthData.client_perf.write_op_per_sec+this.healthData.client_perf.read_op_per_sec;e.push(`${this.i18n("Reads")}: ${this.dimless.transform(this.healthData.client_perf.read_op_per_sec)} ${this.i18n("/s")}`),n.push(this.calcPercentage(this.healthData.client_perf.read_op_per_sec,a)),e.push(`${this.i18n("Writes")}: ${this.dimless.transform(this.healthData.client_perf.write_op_per_sec)} ${this.i18n("/s")}`),n.push(this.calcPercentage(this.healthData.client_perf.write_op_per_sec,a)),t.labels=e,t.dataset[0].data=n,t.dataset[0].label=`${this.dimless.transform(a)}\n${this.i18n("IOPS")}`}prepareClientThroughput(t){const e=[],n=[],a=this.healthData.client_perf.read_bytes_sec+this.healthData.client_perf.write_bytes_sec;e.push(`${this.i18n("Reads")}: ${this.dimlessBinary.transform(this.healthData.client_perf.read_bytes_sec)}${this.i18n("/s")}`),n.push(this.calcPercentage(this.healthData.client_perf.read_bytes_sec,a)),e.push(`${this.i18n("Writes")}: ${this.dimlessBinary.transform(this.healthData.client_perf.write_bytes_sec)}${this.i18n("/s")}`),n.push(this.calcPercentage(this.healthData.client_perf.write_bytes_sec,a)),t.labels=e,t.dataset[0].data=n,t.dataset[0].label=`${this.dimlessBinary.transform(a).replace(" ","\n")}${this.i18n("/s")}`}prepareRawUsage(t,e){const n=this.calcPercentage(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes,e.df.stats.total_bytes),a=this.calcPercentage(e.df.stats.total_used_raw_bytes,e.df.stats.total_bytes);t.dataset[0].data=[a,n],t.labels=[`${this.i18n("Used")}: ${this.dimlessBinary.transform(e.df.stats.total_used_raw_bytes)}`,`${this.i18n("Avail.")}: ${this.dimlessBinary.transform(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes)}`],t.dataset[0].label=`${a}%\nof ${this.dimlessBinary.transform(e.df.stats.total_bytes)}`}preparePgStatus(t,e){const n={};let a=0;X.forEach(e.pg_info.statuses,(t,e)=>{const r=this.pgCategoryService.getTypeByStates(e);X.isUndefined(n[r])&&(n[r]=0),n[r]+=t,a+=t});for(const r of this.pgCategoryService.getAllTypes())X.isUndefined(n[r])&&(n[r]=0);t.dataset[0].data=this.pgCategoryService.getAllTypes().map(t=>this.calcPercentage(n[t],a)),t.labels=[`${this.i18n("Clean")}: ${this.dimless.transform(n.clean)}`,`${this.i18n("Working")}: ${this.dimless.transform(n.working)}`,`${this.i18n("Warning")}: ${this.dimless.transform(n.warning)}`,`${this.i18n("Unknown")}: ${this.dimless.transform(n.unknown)}`],t.dataset[0].label=`${a}\n${this.i18n("PGs")}`}prepareObjects(t,e){const n=e.pg_info.object_stats.num_object_copies,a=this.calcPercentage(n-e.pg_info.object_stats.num_objects_misplaced-e.pg_info.object_stats.num_objects_degraded-e.pg_info.object_stats.num_objects_unfound,n),r=this.calcPercentage(e.pg_info.object_stats.num_objects_misplaced,n),i=this.calcPercentage(e.pg_info.object_stats.num_objects_degraded,n),s=this.calcPercentage(e.pg_info.object_stats.num_objects_unfound,n);t.labels=[`${this.i18n("Healthy")}: ${a}%`,`${this.i18n("Misplaced")}: ${r}%`,`${this.i18n("Degraded")}: ${i}%`,`${this.i18n("Unfound")}: ${s}%`],t.dataset[0].data=[a,r,i,s],t.dataset[0].label=`${this.dimless.transform(e.pg_info.object_stats.num_objects)}\n${this.i18n("objects")}`}isClientReadWriteChartShowable(){return(this.healthData.client_perf.read_op_per_sec||0)+(this.healthData.client_perf.write_op_per_sec||0)>0}calcPercentage(t,e){return X.isNumber(t)&&X.isNumber(e)&&0!==e?Math.round(t/e*100):0}}var er=s["ɵcrt"]({encapsulation:0,styles:[['cd-info-card[_ngcontent-%COMP%]{padding:0 .5vw}  .pg-status-popover-wrapper{position:relative}  .pg-status-popover-wrapper .popover{position:absolute;width:116%;max-height:20vh;min-width:unset!important;max-width:unset!important}  .pg-status-popover-wrapper .popover .popover-body{max-width:100%;max-height:19vh;font-size:12px}.logs-link[_ngcontent-%COMP%]{text-align:center}.card-text-error[_ngcontent-%COMP%]{display:inline;color:red}.card-text-line-break[_ngcontent-%COMP%]:after{content:"\\a";white-space:pre}.popover-info[_ngcontent-%COMP%]:hover{cursor:pointer}']],data:{}});function nr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function ar(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](4,1),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵted"](6,null,[": "," "]))],(function(t,e){var n=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent.parent.parent.parent,0),e.context.$implicit.severity));t(e,3,0,n)}),(function(t,e){t(e,5,0,e.context.$implicit.type),t(e,6,0,e.context.$implicit.summary.message)}))}function rr(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,nr)),s["ɵdid"](1,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](2,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ar)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e.parent.parent.parent.parent,7)),t(e,4,0,n.healthData.health.checks)}),null)}function ir(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"i",[["class","fa fa-exclamation-triangle"]],null,null,null,null,null))],null,null)}function sr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,null,null,null,null,null,null,null)),(t()(),s["ɵand"](0,[["healthChecks",2]],null,0,null,rr)),(t()(),s["ɵeld"](2,16777216,null,null,7,"div",[["class","info-card-content-clickable"],["container","body"],["containerClass","info-card-popover-cluster-status"],["placement","bottom"],["triggers",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).toggle()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](5,1),s["ɵdid"](6,212992,[["healthChecksTarget",4]],0,Ia.c,[Ia.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,Na.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"],container:[3,"container"],containerClass:[4,"containerClass"]},null),(t()(),s["ɵted"](7,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,ir)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,4,0,a),t(e,6,0,s["ɵnov"](e,1),"bottom","","body","info-card-popover-cluster-status"),t(e,9,0,"HEALTH_OK"!=(null==n.healthData.health?null:n.healthData.health.status))}),(function(t,e){t(e,7,0,e.component.healthData.health.status)}))}function ur(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](4,1),(t()(),s["ɵted"](5,null,[" "," "]))],(function(t,e){var n=e.component,a=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,3,0,a)}),(function(t,e){t(e,5,0,e.component.healthData.health.status)}))}function or(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-info-card",[["cardTitle","Cluster Status"],["class","cd-status-card"],["contentClass","content-highlight"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,sr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ur)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Cluster Status","content-highlight"),t(e,3,0,(null==n.healthData.health||null==n.healthData.health.checks?null:n.healthData.health.checks.length)>0),t(e,5,0,!(null!=n.healthData.health&&null!=n.healthData.health.checks&&n.healthData.health.checks.length))}),null)}function lr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Hosts"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/hosts"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "]))],(function(t,e){t(e,1,0,"Hosts","/hosts","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.hosts)}))}function dr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Monitors"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/monitor"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Monitors","/monitor","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,1),n.healthData.mon_status));t(e,2,0,a)}))}function cr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,3,0,e.context.$implicit.content)}))}function fr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","OSDs"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/osd"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,cr)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,"OSDs","/osd","content-highlight"),t(e,3,0,e.context.ngIf)}),null)}function hr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,3,0,e.context.$implicit.content)}))}function gr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"cd-info-card",[["cardTitle","Managers"],["class","cd-status-card"],["contentClass","content-highlight"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,hr)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵppd"](4,1)],(function(t,e){var n=e.component;t(e,1,0,"Managers","content-highlight");var a=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent,3),n.healthData.mgr_map));t(e,3,0,a)}),null)}function pr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Object Gateways"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/rgw/daemon"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "]))],(function(t,e){t(e,1,0,"Object Gateways","/rgw/daemon","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.rgw)}))}function br(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,3,0,e.context.$implicit.content)}))}function mr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Metadata Servers"],["class","cd-status-card"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,br)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,"Metadata Servers",(e.context.ngIf.length>1?"text-area-size-2":"")+" content-highlight"),t(e,3,0,e.context.ngIf)}),null)}function yr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"cd-info-card",[["cardTitle","iSCSI Gateways"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/block/iscsi"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "])),(t()(),s["ɵeld"](3,0,null,0,0,"span",[["class","card-text-line-break"]],null,null,null,null,null)),(t()(),s["ɵted"](4,0,[" "," up, "])),(t()(),s["ɵeld"](5,0,null,0,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](8,{"card-text-error":0}),(t()(),s["ɵted"](9,null,[""," down"]))],(function(t,e){var n=e.component;t(e,1,0,"iSCSI Gateways","/block/iscsi","content-highlight");var a=t(e,8,0,n.healthData.iscsi_daemons.down>0);t(e,7,0,a)}),(function(t,e){var n=e.component;t(e,2,0,n.healthData.iscsi_daemons.up+n.healthData.iscsi_daemons.down),t(e,4,0,n.healthData.iscsi_daemons.up),t(e,9,0,n.healthData.iscsi_daemons.down)}))}function vr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,19,"cd-info-group",[["groupTitle","Status"]],null,null,null,Pa,Da)),s["ɵdid"](1,49152,null,0,La,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,or)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,lr)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,dr)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,fr)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](10,1),(t()(),s["ɵand"](16777216,null,0,1,null,gr)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,pr)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,mr)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](17,1),(t()(),s["ɵand"](16777216,null,0,1,null,yr)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Status"),t(e,3,0,null==n.healthData.health?null:n.healthData.health.status),t(e,5,0,null!=n.healthData.hosts),t(e,7,0,n.healthData.mon_status);var a=s["ɵunv"](e,9,0,t(e,10,0,s["ɵnov"](e.parent.parent,2),n.healthData.osd_map));t(e,9,0,a),t(e,12,0,n.healthData.mgr_map),t(e,14,0,e.parent.context.ngIf.rgw&&null!=n.healthData.rgw);var r=s["ɵunv"](e,16,0,t(e,17,0,s["ɵnov"](e.parent.parent,4),e.parent.context.ngIf.cephfs&&n.healthData.fs_map));t(e,16,0,r),t(e,19,0,e.parent.context.ngIf.iscsi&&null!=n.healthData.iscsi_daemons)}),null)}function xr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Raw Capacity"],["class","cd-capacity-card cd-chart-card"],["contentClass","content-chart"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareRawUsage(n[0],n[1])&&a),a}),za,Ba)),s["ɵdid"](3,638976,null,0,Ga,[Fa.a,Va.a],{data:[0,"data"],config:[1,"config"],isBytesData:[2,"isBytesData"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Raw Capacity","content-chart"),t(e,3,0,n.healthData,n.rawCapacityChartConfig,!0)}),null)}function _r(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Objects"],["class","cd-capacity-card cd-chart-card"],["contentClass","content-chart"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareObjects(n[0],n[1])&&a),a}),za,Ba)),s["ɵdid"](3,638976,null,0,Ga,[Fa.a,Va.a],{data:[0,"data"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Objects","content-chart"),t(e,3,0,n.healthData)}),null)}function Tr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function wr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": "," "]))],null,(function(t,e){t(e,1,0,e.context.$implicit.key,e.context.$implicit.value)}))}function Or(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Tr)),s["ɵdid"](1,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](2,0,null,null,3,"ul",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,wr)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e.parent.parent.parent,7)),t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(n.healthData.pg_info.statuses)))}),null)}function Sr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"cd-info-card",[["cardTitle","PG Status"],["class","cd-capacity-card cd-chart-card"],["contentClass","content-chart"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).toggle()&&a),a}),Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](0,[["pgStatus",2]],0,0,null,Or)),(t()(),s["ɵeld"](3,0,null,0,4,"div",[["class","pg-status-popover-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,16777216,null,null,3,"div",[["placement","bottom"],["triggers",""]],null,null,null,null,null)),s["ɵdid"](5,212992,[["pgStatusTarget",4]],0,Ia.c,[Ia.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a,Na.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"]},null),(t()(),s["ɵeld"](6,0,null,null,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.preparePgStatus(n[0],n[1])&&a),a}),za,Ba)),s["ɵdid"](7,638976,null,0,Ga,[Fa.a,Va.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"PG Status","content-chart"),t(e,5,0,s["ɵnov"](e,2),"bottom",""),t(e,7,0,n.healthData,n.pgStatusChartConfig)}),null)}function Ir(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Pools"],["class","cd-capacity-card"],["contentClass","content-highlight"],["link","/pool"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "]))],(function(t,e){t(e,1,0,"Pools","/pool","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.pools.length)}))}function Nr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","PGs per OSD"],["class","cd-capacity-card"],["contentClass","content-highlight"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"PGs per OSD","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,5),n.healthData.pg_info.pgs_per_osd));t(e,2,0,a)}))}function Cr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"cd-info-group",[["groupTitle","Capacity"]],null,null,null,Pa,Da)),s["ɵdid"](1,49152,null,0,La,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,xr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,_r)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Sr)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ir)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Nr)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Capacity"),t(e,3,0,n.healthData.df),t(e,5,0,null!=(null==n.healthData.pg_info||null==n.healthData.pg_info.object_stats?null:n.healthData.pg_info.object_stats.num_objects)),t(e,7,0,n.healthData.pg_info),t(e,9,0,n.healthData.pools),t(e,11,0,n.healthData.pg_info)}),null)}function Rr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Client Read/Write"],["class","cd-performance-card cd-chart-card"],["contentClass","content-chart"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareReadWriteRatio(n[0],n[1])&&a),a}),za,Ba)),s["ɵdid"](3,638976,null,0,Ga,[Fa.a,Va.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Client Read/Write","content-chart"),t(e,3,0,n.healthData,n.clientStatsConfig)}),null)}function Ar(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Client Throughput"],["class","cd-performance-card cd-chart-card"],["contentClass","content-chart"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareClientThroughput(n[0],n[1])&&a),a}),za,Ba)),s["ɵdid"](3,638976,null,0,Ga,[Fa.a,Va.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Client Throughput","content-chart"),t(e,3,0,n.healthData,n.clientStatsConfig)}),null)}function kr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Recovery Throughput"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Recovery Throughput","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,6),n.healthData.client_perf.recovering_bytes_per_sec))+"/s";t(e,2,0,a)}))}function Er(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Scrubbing"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,Ea,Ra)),s["ɵdid"](1,49152,null,0,Ca,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "]))],(function(t,e){t(e,1,0,"Scrubbing","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.scrub_status)}))}function Lr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"cd-info-group",[["groupTitle","Performance"]],null,null,null,Pa,Da)),s["ɵdid"](1,49152,null,0,La,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Rr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ar)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,kr)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Er)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance"),t(e,3,0,n.healthData.client_perf),t(e,5,0,n.healthData.client_perf),t(e,7,0,n.healthData.client_perf),t(e,9,0,n.healthData.scrub_status)}),null)}function Dr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"p",[["class","logs-link"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵted"](-1,null,[" See "])),(t()(),s["ɵeld"](7,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,8).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](8,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Logs"])),(t()(),s["ɵted"](-1,null,[" for more details."]))],(function(t,e){var n=t(e,5,0,e.component.icons.infoCircle);t(e,4,0,n),t(e,8,0,"/logs")}),(function(t,e){t(e,7,0,s["ɵnov"](e,8).target,s["ɵnov"](e,8).href)}))}function Pr(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Dr)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.permissions.log.read)}),null)}function Mr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"div",[["class","container-fluid"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,vr)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cr)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lr)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["logsLink",2]],null,0,null,Pr))],(function(t,e){var n=e.component;t(e,2,0,(null==n.healthData.health?null:n.healthData.health.status)||n.healthData.mon_status||n.healthData.osd_map||n.healthData.mgr_map||null!=n.healthData.hosts||null!=n.healthData.rgw||n.healthData.fs_map||null!=n.healthData.iscsi_daemons),t(e,4,0,n.healthData.pools||n.healthData.df||n.healthData.pg_info),t(e,6,0,n.healthData.client_perf||n.healthData.scrub_status)}),null)}function qr(t){return s["ɵvid"](0,[s["ɵpid"](0,Jt,[]),s["ɵpid"](0,Ya,[fe.a]),s["ɵpid"](0,Ha,[fe.a]),s["ɵpid"](0,Ua,[fe.a]),s["ɵpid"](0,Wa,[fe.a]),s["ɵpid"](0,Va.a,[Ka.a]),s["ɵpid"](0,Fa.a,[Ka.a]),(t()(),s["ɵand"](16777216,null,null,2,null,Mr)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](131072,i.AsyncPipe,[s.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,8,0,s["ɵunv"](e,8,0,s["ɵnov"](e,9).transform(n.healthData&&n.enabledFeature$)))}),null)}class jr{constructor(t){this.refreshIntervalService=t,this.intervalList={"5 s":5e3,"10 s":1e4,"15 s":15e3,"30 s":3e4,"1 min":6e4,"3 min":18e4,"5 min":3e5},this.intervalKeys=Object.keys(this.intervalList)}ngOnInit(){this.selectedInterval=this.refreshIntervalService.getRefreshInterval()||5e3}changeRefreshInterval(t){this.refreshIntervalService.setRefreshInterval(t)}}var Fr=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Vr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){var n=e.component;t(e,1,0,n.intervalList[e.context.$implicit]),t(e,2,0,n.intervalList[e.context.$implicit])}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Gr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,13,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,12,"div",[["class","float-right d-inline-flex"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"label",[["class","col-form-label my-0 mx-2"],["for","refreshInterval"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Refresh"])),(t()(),s["ɵeld"](5,0,null,null,9,"select",[["class","form-control custom-select"],["id","refreshInterval"],["name","refreshInterval"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,6).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,6).onTouched()&&a),"change"===e&&(a=!1!==r.changeRefreshInterval(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedInterval=n)&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](8,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](10,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](11,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](12,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Vr)),s["ɵdid"](14,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,8,0,"refreshInterval",n.selectedInterval),t(e,14,0,n.intervalKeys)}),(function(t,e){t(e,5,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending,s["ɵnov"](e,12).validClass,s["ɵnov"](e,12).invalidClass)}))}class Br{constructor(){this.hasGrafana=!1}ngOnInit(){}}var zr=s["ɵcrt"]({encapsulation:0,styles:[["div[_ngcontent-%COMP%]{padding-top:20px}"]],data:{}});function Yr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-health",[],null,null,null,qr,er)),s["ɵdid"](5,245760,null,0,tr,[$a,fe.a,Z.a,Xa.a,vn.a,Qa,Fa.a,Va.a],null,null),(t()(),s["ɵeld"](6,0,null,0,1,"tab",[["heading","Statistics"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null)],(function(t,e){t(e,3,0,"Health"),t(e,5,0),t(e,7,0,"Statistics")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby)}))}function Hr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-health",[],null,null,null,qr,er)),s["ɵdid"](1,245760,null,0,tr,[$a,fe.a,Z.a,Xa.a,vn.a,Qa,Fa.a,Va.a],null,null)],(function(t,e){t(e,1,0)}),null)}function Ur(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"cd-refresh-selector",[],null,null,null,Gr,Fr)),s["ɵdid"](2,114688,null,0,jr,[Qa],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Yr)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hr)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0,n.hasGrafana),t(e,6,0,!n.hasGrafana)}),null)}function Wr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-dashboard",[],null,null,null,Ur,zr)),s["ɵdid"](1,114688,null,0,Br,[],null,null)],(function(t,e){t(e,1,0)}),null)}var Kr=s["ɵccf"]("cd-dashboard",Br,Wr,{},{},[]),$r=n("a278"),Jr=n("insk"),Zr=n("25BL"),Qr=n("uIqm"),Xr=n("NUGo"),ti=n("S7zO"),ei=n("i4WA"),ni=n("6qls");class ai{}var ri=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ii(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Orchestrator is not available. Please consult the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","orch"]],null,null,null,ei.b,ei.a)),s["ɵdid"](4,114688,null,0,ni.a,[Tt.a,fe.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,[" on how to configure and enable the functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"orch")}),null)}let si=(()=>{class t{constructor(t){this.http=t,this.url="api/orchestrator"}status(){return this.http.get(this.url+"/status")}identifyDevice(t,e,n){return this.http.post(this.url+"/identify_device",{hostname:t,device:e,duration:n})}inventoryList(t,e){let n=new et.h;return t&&(n=n.append("hostname",t)),e&&(n=n.append("refresh",X.toString(e))),this.http.get(this.url+"/inventory",{params:n})}inventoryDeviceList(t,e){return this.inventoryList(t,e).pipe(Object(we.a)(t=>{const e=X.flatMap(t,t=>t.devices.map(e=>(e.hostname=t.name,e.uid=e.device_id?e.device_id:`${e.hostname}-${e.path}`,e)));return Object(_e.a)(e)}))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t})();var ui=n("Rf2I"),oi=n("x38r"),li=n("vCyI");class di{constructor(t,e,n,a,r,i){this.authStorageService=t,this.dimlessBinary=e,this.i18n=n,this.modalService=a,this.notificationService=r,this.orchService=i,this.devices=[],this.hiddenColumns=[],this.filterColumns=["hostname","human_readable_type","available","sys_api.vendor","sys_api.model","sys_api.size"],this.selectionType=void 0,this.filterChange=new s.EventEmitter,this.fetchInventory=new s.EventEmitter,this.icons=pt.a,this.columns=[],this.selection=new li.a}ngOnInit(){this.permission=this.authStorageService.getPermissions().osd,this.tableActions=[{permission:"update",icon:pt.a.show,click:()=>this.identifyDevice(),name:this.i18n("Identify"),disable:()=>!this.selection.hasSingleSelection,canBePrimary:t=>!t.hasSingleSelection,visible:()=>X.isString(this.selectionType)}];const t=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Device path"),prop:"path",flexGrow:1},{name:this.i18n("Type"),prop:"human_readable_type",flexGrow:1,cellTransformation:oi.a.badge,customTemplateConfig:{map:{hdd:{value:"HDD",class:"badge-hdd"},ssd:{value:"SSD",class:"badge-ssd"}}}},{name:this.i18n("Available"),prop:"available",flexGrow:1,cellClass:"text-center",cellTransformation:oi.a.checkIcon},{name:this.i18n("Vendor"),prop:"sys_api.vendor",flexGrow:1},{name:this.i18n("Model"),prop:"sys_api.model",flexGrow:1},{name:this.i18n("Size"),prop:"sys_api.size",flexGrow:1,pipe:this.dimlessBinary},{name:this.i18n("OSDs"),prop:"osd_ids",flexGrow:1,cellTransformation:oi.a.badge,customTemplateConfig:{class:"badge-dark",prefix:"osd."}}];this.columns=t.filter(t=>!this.hiddenColumns.includes(t.prop)),X.forEach(this.filterColumns,t=>{const e=X.find(this.columns,{prop:t});e&&(e.filterable=!0)}),this.fetchInventory.observers.length>0&&(this.fetchInventorySub=this.table.fetchData.subscribe(()=>{this.fetchInventory.emit()}))}ngOnDestroy(){this.fetchInventorySub&&this.fetchInventorySub.unsubscribe()}onColumnFiltersChanged(t){this.filterChange.emit(t)}updateSelection(t){this.selection=t}identifyDevice(){const t=this.selection.first(),e=t.hostname,n=t.path||t.device_id;this.modalService.show(ui.a,{initialState:{titleText:this.i18n("Identify device {{device}}",{device:n}),message:this.i18n("Please enter the duration how long to blink the LED."),fields:[{type:"select",name:"duration",value:300,required:!0,typeConfig:{options:[{text:this.i18n("1 minute"),value:60},{text:this.i18n("2 minutes"),value:120},{text:this.i18n("5 minutes"),value:300},{text:this.i18n("10 minutes"),value:600},{text:this.i18n("15 minutes"),value:900}]}}],submitButtonText:this.i18n("Execute"),onSubmit:t=>{this.orchService.identifyDevice(e,n,t.duration).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n("Identifying '{{device}}' started on host '{{hostname}}'",{hostname:e,device:n}))})}}})}}var ci=s["ɵcrt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}"]],data:{}});function fi(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),(t()(),s["ɵeld"](1,0,null,null,3,"cd-table",[["columnMode","flex"],["identifier","uid"]],null,[[null,"updateSelection"],[null,"columnFiltersChanged"]],(function(t,e,n){var a=!0,r=t.component;return"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"columnFiltersChanged"===e&&(a=!1!==r.onColumnFiltersChanged(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](2,2867200,[[1,4]],0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],searchField:[3,"searchField"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],forceIdentifier:[6,"forceIdentifier"],selectionType:[7,"selectionType"]},{updateSelection:"updateSelection",columnFiltersChanged:"columnFiltersChanged"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](4,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.devices,n.columns,"flex",!1,!1,"uid",!0,n.selectionType),t(e,4,0,n.permission,n.selection,n.tableActions)}),null)}var hi=n("PqYM");class gi{constructor(t,e){this.orchService=t,this.ngZone=e,this.reloadInterval=5e3,this.firstRefresh=!0,this.icons=pt.a,this.hasOrchestrator=!1,this.showDocPanel=!1,this.devices=[]}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.showDocPanel=!t.available,t.available&&this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=Object(hi.a)(this.reloadInterval,this.reloadInterval).subscribe(()=>{this.ngZone.run(()=>{this.getInventory(!1)})})})})}ngOnDestroy(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe()}ngOnChanges(){this.hasOrchestrator&&(this.devices=[],this.getInventory(!1))}getInventory(t){""!==this.hostname&&this.orchService.inventoryDeviceList(this.hostname,t).subscribe(t=>{this.devices=t},()=>{this.devices=[]})}refresh(){this.getInventory(!this.firstRefresh),this.firstRefresh=!1}}var pi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function bi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ii,ri)),s["ɵdid"](1,49152,null,0,ai,[],null,null)],null,null)}function mi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Devices"])),(t()(),s["ɵeld"](3,0,null,null,4,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"cd-inventory-devices",[["selectionType","single"]],null,[[null,"fetchInventory"]],(function(t,e,n){var a=!0;return"fetchInventory"===e&&(a=!1!==t.component.refresh()&&a),a}),fi,ci)),s["ɵdid"](6,245760,null,0,di,[Z.a,Fa.a,fe.a,Ct.b,bt.a,si],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],selectionType:[2,"selectionType"]},{fetchInventory:"fetchInventory"}),s["ɵpad"](7,1)],(function(t,e){var n=e.component,a=n.devices,r=void 0===n.hostname?s["ɵEMPTY_ARRAY"]:t(e,7,0,"hostname");t(e,6,0,a,r,"single")}),null)}function yi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,bi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mi)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.showDocPanel),t(e,3,0,n.hasOrchestrator)}),null)}function vi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-inventory",[],null,null,null,yi,pi)),s["ɵdid"](1,770048,null,0,gi,[si,s.NgZone],null,null)],(function(t,e){t(e,1,0)}),null)}var xi=s["ɵccf"]("cd-inventory",gi,vi,{hostname:"hostname"},{},[]);let _i=(()=>{class t{constructor(t){this.http=t,this.url="api/service"}list(t){const e=t?{params:(new et.h).set("service_name",t)}:{};return this.http.get(this.url,e)}getDaemons(t){return this.http.get(`${this.url}/${t}/daemons`)}create(t){return this.http.post(this.url,{service_name:t.service_id?`${t.service_type}.${t.service_id}`:t.service_type,service_spec:t},{observe:"response"})}delete(t){return this.http.delete(`${this.url}/${t}`,{observe:"response"})}getKnownTypes(){return this.http.get(this.url+"/known_types")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t})(),Ti=(()=>{class t{constructor(){}calculateAdditionalData(t){if(!t.life_expectancy_min||!t.life_expectancy_max)return t.state="unknown",t;const e=t=>!!Number.parseFloat(t),n=(t,n)=>t&&n&&e(t)&&e(n)?ze.duration(ze(t).diff(ze(n))).asWeeks():null,a=ze.duration(ze(ze.now()).diff(ze(t.life_expectancy_stamp))).asWeeks(),r=n(t.life_expectancy_max,t.life_expectancy_stamp),i=n(t.life_expectancy_min,t.life_expectancy_stamp);return t.state=a>1?"stale":null!==r&&r<=2?"bad":null!==i&&i<=4?"warning":"good",t.life_expectancy_weeks={max:null!==r?Math.round(r):null,min:null!==i?Math.round(i):null},t}readable(t){return t.readableDaemons=t.daemons.join(" "),t}prepareDevice(t){return this.readable(this.calculateAdditionalData(t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})(),wi=(()=>{class t{constructor(t,e){this.http=t,this.deviceService=e,this.baseURL="api/host"}list(){return this.http.get(this.baseURL)}create(t){return this.http.post(this.baseURL,{hostname:t},{observe:"response"})}delete(t){return this.http.delete(`${this.baseURL}/${t}`,{observe:"response"})}getDevices(t){return this.http.get(`${this.baseURL}/${t}/devices`).pipe(Object(Qe.a)(t=>t.map(t=>this.deviceService.prepareDevice(t))))}getSmartData(t){return this.http.get(`${this.baseURL}/${t}/smart`)}getDaemons(t){return this.http.get(`${this.baseURL}/${t}/daemons`)}getLabels(){return this.http.get("ui-api/host/labels")}update(t,e){return this.http.put(`${this.baseURL}/${t}`,{labels:e})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](Ti))},token:t,providedIn:ue.a}),t})();class Oi{constructor(t,e,n,a){this.i18n=t,this.hostService=e,this.cephServiceService=n,this.orchService=a,this.daemons=[],this.columns=[],this.hasOrchestrator=!1,this.showDocPanel=!1}ngOnInit(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1,filterable:!0},{name:this.i18n("Daemon type"),prop:"daemon_type",flexGrow:1,filterable:!0},{name:this.i18n("Daemon ID"),prop:"daemon_id",flexGrow:1,filterable:!0},{name:this.i18n("Container ID"),prop:"container_id",flexGrow:3,filterable:!0,cellTransformation:oi.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Container Image name"),prop:"container_image_name",flexGrow:3,filterable:!0},{name:this.i18n("Container Image ID"),prop:"container_image_id",flexGrow:3,filterable:!0,cellTransformation:oi.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Version"),prop:"version",flexGrow:1,filterable:!0},{name:this.i18n("Status"),prop:"status_desc",flexGrow:1,filterable:!0,cellTemplate:this.statusTpl},{name:this.i18n("Last Refreshed"),prop:"last_refresh",flexGrow:2}],this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.showDocPanel=!t.available})}ngOnChanges(){X.isUndefined(this.daemonsTable)||this.daemonsTable.reloadData()}ngAfterViewInit(){this.daemonsTableTplsSub=this.daemonsTableTpls.changes.subscribe(t=>{this.daemonsTable=t.first})}ngOnDestroy(){this.daemonsTableTplsSub&&this.daemonsTableTplsSub.unsubscribe()}getStatusClass(t){return X.get({"-1":"badge-danger",0:"badge-warning",1:"badge-success"},t,"badge-dark")}getDaemons(t){let e;if(this.hostname)e=this.hostService.getDaemons(this.hostname);else{if(!this.serviceName)return void(this.daemons=[]);e=this.cephServiceService.getDaemons(this.serviceName)}e.subscribe(t=>{this.daemons=t},()=>{this.daemons=[],t.error()})}}var Si=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ii(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ii,ri)),s["ɵdid"](1,49152,null,0,ai,[],null,null)],null,null)}function Ni(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.getDaemons(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](1,2867200,[[2,4],["daemonsTable",4]],0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,1,0,n.daemons,n.columns,"flex",5e3)}),null)}function Ci(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[["class","badge"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,"badge",e.component.getStatusClass(e.context.row.status))}),(function(t,e){t(e,3,0,e.context.row.status_desc)}))}function Ri(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{statusTpl:0}),s["ɵqud"](671088640,2,{daemonsTableTpls:1}),(t()(),s["ɵand"](16777216,null,null,1,null,Ii)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ni)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["statusTpl",2]],null,0,null,Ci))],(function(t,e){var n=e.component;t(e,3,0,n.showDocPanel),t(e,5,0,n.hasOrchestrator)}),null)}var Ai=n("sLuX"),ki=n("FSuO"),Ei=n("QC43"),Li=n("XFyV"),Di=n("zWsK");let Pi=(()=>{class t{constructor(t,e,n){this.http=t,this.i18n=e,this.deviceService=n,this.path="api/osd",this.osdRecvSpeedModalPriorities={KNOWN_PRIORITIES:[{name:null,text:this.i18n("-- Select the priority --"),values:{osd_max_backfills:null,osd_recovery_max_active:null,osd_recovery_max_single_start:null,osd_recovery_sleep:null}},{name:"low",text:this.i18n("Low"),values:{osd_max_backfills:1,osd_recovery_max_active:1,osd_recovery_max_single_start:1,osd_recovery_sleep:.5}},{name:"default",text:this.i18n("Default"),values:{osd_max_backfills:1,osd_recovery_max_active:3,osd_recovery_max_single_start:1,osd_recovery_sleep:0}},{name:"high",text:this.i18n("High"),values:{osd_max_backfills:4,osd_recovery_max_active:4,osd_recovery_max_single_start:4,osd_recovery_sleep:0}}]}}create(t){const e={method:"drive_groups",data:t,tracking_id:X.join(X.map(t,"service_id"),", ")};return this.http.post(this.path,e,{observe:"response"})}getList(){return this.http.get(""+this.path)}getDetails(t){return this.http.get(`${this.path}/${t}`)}getSmartData(t){return this.http.get(`${this.path}/${t}/smart`)}scrub(t,e){return this.http.post(`${this.path}/${t}/scrub?deep=${e}`,null)}getFlags(){return this.http.get(this.path+"/flags")}updateFlags(t){return this.http.put(this.path+"/flags",{flags:t})}updateIndividualFlags(t,e){return this.http.put(this.path+"/flags/individual",{flags:t,ids:e})}markOut(t){return this.http.post(`${this.path}/${t}/mark_out`,null)}markIn(t){return this.http.post(`${this.path}/${t}/mark_in`,null)}markDown(t){return this.http.post(`${this.path}/${t}/mark_down`,null)}reweight(t,e){return this.http.post(`${this.path}/${t}/reweight`,{weight:e})}update(t,e){return this.http.put(`${this.path}/${t}`,{device_class:e})}markLost(t){return this.http.post(`${this.path}/${t}/mark_lost`,null)}purge(t){return this.http.post(`${this.path}/${t}/purge`,null)}destroy(t){return this.http.post(`${this.path}/${t}/destroy`,null)}delete(t,e,n){return this.http.delete(`${this.path}/${t}`,{observe:"response",params:{preserve_id:e?"true":"false",force:n?"true":"false"}})}safeToDestroy(t){return this.http.get(`${this.path}/safe_to_destroy?ids=${t}`)}safeToDelete(t){return this.http.get(`${this.path}/safe_to_delete?svc_ids=${t}`)}getDevices(t){return this.http.get(`${this.path}/${t}/devices`).pipe(Object(Qe.a)(t=>t.map(t=>this.deviceService.prepareDevice(t))))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](fe.a),s["ɵɵinject"](Ti))},token:t,providedIn:ue.a}),t})();class Mi{constructor(t,e,n){this.i18n=t,this.osdService=e,this.hostService=n,this.osdId=null,this.hostname=null,this.loading=!1,this.incompatible=!1,this.error=!1,this.data={},this.isEmpty=X.isEmpty}isSmartError(t){return void 0!==X.get(t,"error")}isNvmeSmartData(t){return"nvme"===X.get(t,"device.protocol","").toLowerCase()}isHddSmartData(t){return"ata"===X.get(t,"device.protocol","").toLowerCase()}fetchData(t){const e={};X.each(t,(t,n)=>{if(this.isSmartError(t)){let a="";a=this.i18n(-22===t.smartctl_error_code?"Smartctl has received an unknown argument (error code {{code}}). You may be using an incompatible version of smartmontools. Version >= 7.0 of smartmontools is required to successfully retrieve data.":"An error with error code {{code}} occurred.",{code:t.smartctl_error_code}),e[n]={error:t.error,smartctl_error_code:t.smartctl_error_code,smartctl_output:t.smartctl_output,userMessage:a,device:t.dev,identifier:t.nvme_vendor}}else 1!==t.json_format_version[0]?this.incompatible=!0:this.isHddSmartData(t)?e[n]=this.extractHddData(t):this.isNvmeSmartData(t)&&(e[n]=this.extractNvmeData(t))}),this.data=e,this.loading=!1}extractNvmeData(t){return{info:X.omitBy(t,(t,e)=>["nvme_smart_health_information_log"].includes(e)),smart:{nvmeData:t.nvme_smart_health_information_log},device:t.device.name,identifier:t.serial_number}}extractHddData(t){const e=X.omitBy(t,(t,e)=>["ata_smart_attributes","ata_smart_selective_self_test_log","ata_smart_data"].includes(e));return{info:e,smart:{attributes:t.ata_smart_attributes,data:t.ata_smart_data},device:e.device.name,identifier:e.serial_number}}updateData(){this.loading=!0,null!==this.osdId?this.osdService.getSmartData(this.osdId).subscribe(this.fetchData.bind(this),t=>{t.preventDefault(),this.error=t,this.loading=!1}):null!==this.hostname&&this.hostService.getSmartData(this.hostname).subscribe(this.fetchData.bind(this),t=>{t.preventDefault(),this.error=t,this.loading=!1})}ngOnInit(){this.smartDataColumns=[{prop:"id",name:this.i18n("ID")},{prop:"name",name:this.i18n("Name")},{prop:"raw.value",name:this.i18n("Raw")},{prop:"thresh",name:this.i18n("Threshold")},{prop:"value",name:this.i18n("Value")},{prop:"when_failed",name:this.i18n("When Failed")},{prop:"worst",name:this.i18n("Worst")}]}ngOnChanges(t){this.data={},t.osdId?this.osdId=t.osdId.currentValue:t.hostname&&(this.hostname=t.hostname.currentValue),this.updateData()}}var qi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ji(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Failed to retrieve SMART data."]))],(function(t,e){t(e,1,0,"error")}),null)}function Fi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The data received has the JSON format version 2.x and is currently incompatible with the dashboard."]))],(function(t,e){t(e,1,0,"warning")}),null)}function Vi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No SMART data available."]))],(function(t,e){t(e,1,0,"info")}),null)}function Gi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"cd-alert-panel",[["id","alert-error"],["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](2,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](3,0,["",""]))],(function(t,e){t(e,2,0,"warning")}),(function(t,e){t(e,3,0,e.parent.context.$implicit.value.userMessage)}))}function Bi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-unknown"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["unknown"]))],(function(t,e){t(e,1,0,"SMART overall-health self-assessment test result","warning","slim")}),null)}function zi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-passed"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](2,114688,null,0,me.a,[fe.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["passed"]))],(function(t,e){t(e,2,0,"SMART overall-health self-assessment test result","info","slim")}),null)}function Yi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-failed"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["failed"]))],(function(t,e){t(e,1,0,"SMART overall-health self-assessment test result","warning","slim")}),null)}function Hi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,zi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["selfTestFailed",2]],null,0,null,Yi))],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.info.smart_status.passed,s["ɵnov"](e,2))}),null)}function Ui(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,2,null,Bi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),s["ɵppd"](2,2),(t()(),s["ɵand"](0,[["hasSmartStatus",2]],null,0,null,Hi))],(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent.parent.parent.parent,0),null==e.parent.context.$implicit.value.info?null:e.parent.context.$implicit.value.info.smart_status,n.isEmpty));t(e,1,0,a,s["ɵnov"](e,3))}),null)}function Wi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,638976,null,0,ki.a,[He.a],{data:[0,"data"],renderObjects:[1,"renderObjects"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.info,!0)}),null)}function Ki(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-device-info-unavailable"],["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No device information available for this device."]))],(function(t,e){t(e,1,0,"info")}),null)}function $i(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[["updateSelectionOnRefresh","never"]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](1,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],updateSelectionOnRefresh:[2,"updateSelectionOnRefresh"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.smart.attributes.table,e.component.smartDataColumns,"never")}),null)}function Ji(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["updateSelectionOnRefresh","never"]],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,638976,null,0,ki.a,[He.a],{data:[0,"data"],renderObjects:[1,"renderObjects"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.smart.nvmeData,!0)}),null)}function Zi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-device-smart-data-unavailable"],["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No SMART data available for this device."]))],(function(t,e){t(e,1,0,"info")}),null)}function Qi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,[[1,4],["innerTabset",4]],0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,7,"tab",[["heading","Device Information"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,2,null,Wi)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](6,2),(t()(),s["ɵand"](16777216,null,null,2,null,Ki)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](9,2),(t()(),s["ɵeld"](10,0,null,0,7,"tab",[["heading","SMART"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](11,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$i)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ji)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zi)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Device Information");var a=!s["ɵunv"](e,5,0,t(e,6,0,s["ɵnov"](e.parent.parent.parent.parent.parent,0),e.parent.context.$implicit.value.info,n.isEmpty));t(e,5,0,a);var r=s["ɵunv"](e,8,0,t(e,9,0,s["ɵnov"](e.parent.parent.parent.parent.parent,0),e.parent.context.$implicit.value.info,n.isEmpty));t(e,8,0,r),t(e,11,0,"SMART"),t(e,13,0,null==e.parent.context.$implicit.value.smart?null:e.parent.context.$implicit.value.smart.attributes),t(e,15,0,null==e.parent.context.$implicit.value.smart?null:e.parent.context.$implicit.value.smart.nvmeData),t(e,17,0,!(null!=e.parent.context.$implicit.value.smart&&e.parent.context.$implicit.value.smart.attributes||null!=e.parent.context.$implicit.value.smart&&e.parent.context.$implicit.value.smart.nvmeData))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,10,0,s["ɵnov"](e,11).id,s["ɵnov"](e,11).active,s["ɵnov"](e,11).addClass,s["ɵnov"](e,11).role,s["ɵnov"](e,11).ariaLabelledby)}))}function Xi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gi)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noError",2]],null,0,null,Ui)),(t()(),s["ɵand"](16777216,null,null,3,null,Qi)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](7,2),s["ɵppd"](8,2)],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit.value.device+" ("+e.context.$implicit.value.identifier+")"),t(e,3,0,e.context.$implicit.value.error,s["ɵnov"](e,4));var a=!s["ɵunv"](e,6,0,t(e,7,0,s["ɵnov"](e.parent.parent.parent.parent,0),e.context.$implicit.value.info,n.isEmpty))||!s["ɵunv"](e,6,0,t(e,8,0,s["ɵnov"](e.parent.parent.parent.parent,0),e.context.$implicit.value.smart,n.isEmpty));t(e,6,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function ts(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](2,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵand"](16777216,null,0,2,null,Xi)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(n.data)))}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).clazz)}))}function es(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Vi)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](3,2),(t()(),s["ɵand"](16777216,null,null,2,null,ts)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](6,2),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent,0),n.data,n.isEmpty));t(e,2,0,a);var r=!s["ɵunv"](e,5,0,t(e,6,0,s["ɵnov"](e.parent.parent,0),n.data,n.isEmpty));t(e,5,0,r)}),null)}function ns(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ji)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fi)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,es)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.error),t(e,4,0,n.incompatible),t(e,6,0,!n.error&&!n.incompatible)}),null)}function as(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ei.b,Ei.a)),s["ɵdid"](1,49152,null,0,Li.a,[],null,null),(t()(),s["ɵted"](-1,0,["SMART data is loading."]))],null,null)}function rs(t){return s["ɵvid"](0,[s["ɵpid"](0,Di.b,[]),s["ɵqud"](671088640,1,{innerTabset:0}),(t()(),s["ɵand"](16777216,null,null,1,null,ns)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["isLoading",2]],null,0,null,as))],(function(t,e){t(e,3,0,!e.component.loading,s["ɵnov"](e,4))}),null)}class is{constructor(t,e,n,a){this.hostService=t,this.i18n=e,this.datePipe=n,this.osdService=a,this.hostname="",this.osdId=null,this.devices=null,this.columns=[],this.translationMapping={"=1":"# week",other:"# weeks"}}ngOnInit(){this.columns=[{prop:"devid",name:this.i18n("Device ID"),minWidth:200},{prop:"state",name:this.i18n("State of Health"),flexGrow:1,cellTransformation:oi.a.badge,customTemplateConfig:{map:{good:{value:this.i18n("Good"),class:"badge-success"},warning:{value:this.i18n("Warning"),class:"badge-warning"},bad:{value:this.i18n("Bad"),class:"badge-danger"},stale:{value:this.i18n("Stale"),class:"badge-info"},unknown:{value:this.i18n("Unknown"),class:"badge-dark"}}}},{prop:"life_expectancy_weeks",name:this.i18n("Life Expectancy"),cellTemplate:this.lifeExpectancyTemplate},{prop:"life_expectancy_stamp",name:this.i18n("Prediction Creation Date"),cellTemplate:this.lifeExpectancyTimestampTemplate,pipe:this.datePipe,isHidden:!0},{prop:"location",name:this.i18n("Device Name"),cellTemplate:this.locationTemplate},{prop:"readableDaemons",name:this.i18n("Daemons")}]}ngOnChanges(){const t=t=>this.devices=t;this.hostname?this.hostService.getDevices(this.hostname).subscribe(t):null!==this.osdId&&this.osdService.getDevices(this.osdId).subscribe(t)}}var ss=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function us(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[],null,null,null,Zr.b,Zr.a)),s["ɵdid"](1,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.devices,n.columns)}),null)}function os(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Neither hostname nor OSD ID given"]))],(function(t,e){t(e,1,0,"warning")}),null)}function ls(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit.dev)}))}function ds(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ls)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function cs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["> ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.min,n.translationMapping));t(e,1,0,a)}))}function fs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["< ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.max,n.translationMapping));t(e,1,0,a)}))}function hs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[""," to ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=e.parent.context.value.min,r=s["ɵunv"](e,1,1,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.max,n.translationMapping));t(e,1,0,a,r)}))}function gs(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,cs)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fs)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hs)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value.min&&!e.context.value.max),t(e,3,0,e.context.value.max&&!e.context.value.min),t(e,5,0,e.context.value.max&&e.context.value.min)}),null)}function ps(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" ","\n"]))],null,(function(t,e){t(e,0,0,e.context.value)}))}function bs(t){return s["ɵvid"](0,[s["ɵpid"](0,i.I18nPluralPipe,[i.NgLocalization]),s["ɵqud"](402653184,1,{locationTemplate:0}),s["ɵqud"](402653184,2,{lifeExpectancyTemplate:0}),s["ɵqud"](402653184,3,{lifeExpectancyTimestampTemplate:0}),(t()(),s["ɵand"](16777216,null,null,1,null,us)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,os)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["deviceLocation",2]],null,0,null,ds)),(t()(),s["ɵand"](0,[[2,2],["lifeExpectancy",2]],null,0,null,gs)),(t()(),s["ɵand"](0,[[3,2],["lifeExpectancyTimestamp",2]],null,0,null,ps))],(function(t,e){var n=e.component;t(e,5,0,n.hostname||null!==n.osdId),t(e,7,0,""===n.hostname&&null===n.osdId)}),null)}n("jKX/");class ms{get selectedHostname(){return void 0!==this.selection?this.selection.hostname:null}constructor(){}}var ys=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function vs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Inventory"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-inventory",[],null,null,null,yi,pi)),s["ɵdid"](3,770048,null,0,gi,[si,s.NgZone],{hostname:[0,"hostname"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Inventory"),t(e,3,0,n.selectedHostname)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function xs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Daemons"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-service-daemon-list",[],null,null,null,Ri,Si)),s["ɵdid"](3,4964352,null,0,Oi,[fe.a,wi,_i,si],{hostname:[0,"hostname"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Daemons"),t(e,3,0,n.selectedHostname)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function _s(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","four"],["uid","rtOg0AiWz"]],null,null,null,$r.b,$r.a)),s["ɵdid"](3,638976,null,0,Jr.a,[ve.b,Xt.a,fe.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"host-details?var-ceph_hosts="+n.selectedHostname,"four","rtOg0AiWz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Ts(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-smart-list",[],null,null,null,rs,qi)),s["ɵdid"](1,638976,null,0,Mi,[fe.a,Pi,wi],{hostname:[0,"hostname"]},null)],(function(t,e){t(e,1,0,e.component.selectedHostname)}),null)}function ws(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,[[1,4]],0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Devices"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-device-list",[],null,null,null,bs,ss)),s["ɵdid"](5,638976,null,0,is,[wi,fe.a,i.DatePipe,Pi],{hostname:[0,"hostname"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,vs)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,xs)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,_s)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,3,"tab",[["heading","Device health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](13,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ts)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Devices"),t(e,5,0,n.selection.hostname),t(e,7,0,n.permissions.hosts.read),t(e,9,0,n.permissions.hosts.read),t(e,11,0,n.permissions.grafana.read),t(e,13,0,"Device health"),t(e,15,0,n.selectedHostname,s["ɵnov"](e.parent,3))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,12,0,s["ɵnov"](e,13).id,s["ɵnov"](e,13).active,s["ɵnov"](e,13).addClass,s["ɵnov"](e,13).role,s["ɵnov"](e,13).ariaLabelledby)}))}function Os(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No hostname found."]))],(function(t,e){t(e,1,0,"error")}),null)}function Ss(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tabsetChild:0}),(t()(),s["ɵand"](16777216,null,null,1,null,ws)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["noHostname",2]],null,0,null,Os))],(function(t,e){t(e,2,0,e.component.selection)}),null)}var Is=n("EgGo"),Ns=n("+fVR"),Cs=n("0+/T"),Rs=n("DNAf"),As=n("kvvV"),ks=n("85J/");class Es{constructor(t){this.bsModalRef=t}ngOnInit(){}onSubmit(){this.bsModalRef.hide()}}let Ls=(()=>{class t{constructor(t,e){this.orchService=t,this.modalService=e}checkOrchestratorOrModal(t,e,n){this.orchService.status().subscribe(a=>{a.available?n():this.modalService.show(Es,{initialState:{actionDescription:t,itemDescription:e}})})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](si),s["ɵɵinject"](Ct.b))},token:t,providedIn:"root"}),t})();var Ds=n("kn/O");const Ps=new Is.a("hosts");class Ms extends Ns.a{constructor(t,e,n,a,r,i,s,u,o,l,d){super(),this.authStorageService=t,this.hostService=e,this.cephShortVersionPipe=n,this.i18n=a,this.urlBuilder=r,this.actionLabels=i,this.modalService=s,this.taskWrapper=u,this.router=o,this.depCheckerService=l,this.notificationService=d,this.columns=[],this.hosts=[],this.isLoadingHosts=!1,this.cdParams={fromLink:"/hosts"},this.selection=new li.a,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:pt.a.add,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.CREATE,this.i18n("Host"),()=>{this.router.navigate([this.urlBuilder.getCreate()])})}},{name:this.actionLabels.EDIT,permission:"update",icon:pt.a.edit,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.EDIT,this.i18n("Host"),()=>this.editAction())},disable:this.getEditDisableDesc.bind(this)},{name:this.actionLabels.DELETE,permission:"delete",icon:pt.a.destroy,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.DELETE,this.i18n("Host"),()=>this.deleteAction())},disable:this.getDeleteDisableDesc.bind(this)}]}ngOnInit(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Services"),prop:"services",flexGrow:3,cellTemplate:this.servicesTpl},{name:this.i18n("Labels"),prop:"labels",flexGrow:1,cellTransformation:oi.a.badge,customTemplateConfig:{class:"badge-dark"}},{name:this.i18n("Version"),prop:"ceph_version",flexGrow:1,pipe:this.cephShortVersionPipe}]}updateSelection(t){this.selection=t}editAction(){this.hostService.getLabels().subscribe(t=>{const e=this.selection.first(),n=t.map(t=>({enabled:!0,name:t}));this.modalService.show(ui.a,{initialState:{titleText:this.i18n("Edit Host: {{hostname}}",e),fields:[{type:"select-badges",name:"labels",value:e.labels,label:this.i18n("Labels"),typeConfig:{customBadges:!0,options:n,messages:new Rs.a({empty:this.i18n("There are no labels."),filter:this.i18n("Filter or add labels"),add:this.i18n("Add label")},this.i18n)}}],submitButtonText:this.i18n("Edit Host"),onSubmit:t=>{this.hostService.update(e.hostname,t.labels).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n('Updated Host "{{hostname}}"',e)),this.table.refreshBtn()})}}})})}getEditDisableDesc(t){return!t||!t.hasSingleSelection||!t.first().sources.orchestrator&&this.i18n("Host editing is disabled because the selected host is not managed by Orchestrator.")}deleteAction(){const t=this.selection.first().hostname;this.modalRef=this.modalService.show(Cs.a,{initialState:{itemDescription:"Host",itemNames:[t],actionDescription:"delete",submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new As.a("host/delete",{hostname:t}),call:this.hostService.delete(t)})}})}getDeleteDisableDesc(t){return!t||!t.hasSelection||!t.selected.every(t=>t.sources.orchestrator)&&this.i18n("Host deletion is disabled because a selected host is not managed by Orchestrator.")}getHosts(t){if(this.isLoadingHosts)return;const e={mds:"cephfs",mon:"monitor",osd:"osd",rgw:"rgw","rbd-mirror":"rbdMirroring",mgr:"manager","tcmu-runner":"iscsi"};this.isLoadingHosts=!0,this.hostService.list().subscribe(t=>{t.map(t=>(t.services.map(t=>{t.cdLink=`/perf_counters/${t.type}/${encodeURIComponent(t.id)}`;const n=this.permissions[e[t.type]];return t.canRead=!!n&&n.read,t}),t)),this.hosts=t,this.isLoadingHosts=!1},()=>{this.isLoadingHosts=!1,t.error()})}}var qs=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function js(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"a",[["class","service-link"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,Et.p,[Et.m,Et.a,i.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),s["ɵpad"](2,1),(t()(),s["ɵted"](3,null,["",".",""]))],(function(t,e){var n=e.component.cdParams,a=t(e,2,0,e.parent.context.$implicit.cdLink);t(e,1,0,n,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,3,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)}))}function Fs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ","."," "]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)}))}function Vs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[", "]))],null,null)}function Gs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,js)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fs)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vs)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit.canRead),t(e,4,0,!e.context.$implicit.canRead),t(e,6,0,!e.context.last)}),null)}function Bs(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Gs)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function zs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","y0KGL0iZz"]],null,null,null,$r.b,$r.a)),s["ɵdid"](3,638976,null,0,Jr.a,[ve.b,Xt.a,fe.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){t(e,1,0,"Overall Performance"),t(e,3,0,"host-overview?","two","y0KGL0iZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Ys(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),s["ɵqud"](402653184,2,{servicesTpl:0}),(t()(),s["ɵeld"](2,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](3,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](4,0,null,0,9,"tab",[["heading","Hosts List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](5,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](6,0,null,null,7,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getHosts(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](7,2867200,[[1,4]],0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](8,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"cd-table-actions",[["class","btn-group"],["id","host-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](10,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](0,[[2,2],["servicesTpl",2]],null,0,null,Bs)),(t()(),s["ɵeld"](12,0,null,3,1,"cd-host-details",[["cdTableDetail",""]],null,null,null,Ss,ys)),s["ɵdid"](13,49152,null,0,ms,[],{permissions:[0,"permissions"],selection:[1,"selection"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,zs)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,"Hosts List"),t(e,7,0,n.hosts,n.columns,"flex",!0,"single"),t(e,10,0,n.permissions.hosts,n.selection,n.tableActions),t(e,13,0,n.permissions,n.expandedRow),t(e,15,0,n.permissions.grafana.read)}),(function(t,e){t(e,2,0,s["ɵnov"](e,3).clazz),t(e,4,0,s["ɵnov"](e,5).id,s["ɵnov"](e,5).active,s["ɵnov"](e,5).addClass,s["ɵnov"](e,5).role,s["ɵnov"](e,5).ariaLabelledby)}))}function Hs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-hosts",[],null,null,null,Ys,qs)),s["ɵprd"](256,null,Is.a,Ps,[]),s["ɵdid"](2,114688,null,0,Ms,[Z.a,wi,ks.a,fe.a,Is.a,St.b,Ct.b,Ds.a,Et.m,Ls,bt.a],null,null)],(function(t,e){t(e,2,0)}),null)}var Us=s["ɵccf"]("cd-hosts",Ms,Hs,{},{},[]),Ws=n("mXUL"),Ks=n("IZUe"),$s=n("gp3X"),Js=n("sb0X"),Zs=n("KVJa"),Qs=n("Z21x"),Xs=n("8xTl"),tu=n("QFaf"),eu=n("1Ni5");class nu{constructor(t,e,n,a,r){this.router=t,this.i18n=e,this.actionLabels=n,this.hostService=a,this.taskWrapper=r,this.loading=!0,this.resource=this.i18n("host"),this.action=this.actionLabels.CREATE,this.createForm()}ngOnInit(){this.hostService.list().subscribe(t=>{this.hostnames=t.map(t=>t.hostname),this.loading=!1})}createForm(){this.hostForm=new tu.a({hostname:new K.i("",{validators:[K.B.required,eu.a.custom("uniqueName",t=>this.hostnames&&-1!==this.hostnames.indexOf(t))]})})}submit(){const t=this.hostForm.get("hostname").value;this.taskWrapper.wrapTaskAroundCall({task:new As.a("host/"+St.e.CREATE,{hostname:t}),call:this.hostService.create(t)}).subscribe(void 0,()=>{this.hostForm.setErrors({cdSubmitButton:!0})},()=>{this.router.navigate(["/hosts"])})}}var au=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ru(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ei.b,Ei.a)),s["ɵdid"](1,49152,null,0,Li.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading..."]))],null,null)}function iu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function su(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The chosen hostname is already in use."]))],null,null)}function uu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,40,"form",[["name","hostForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,2).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,2).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.G,[],null,null),s["ɵdid"](2,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](4,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](5,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](6,0,null,null,34,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,[""," ",""])),s["ɵppd"](9,1),s["ɵppd"](10,1),(t()(),s["ɵeld"](11,0,null,null,20,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](13,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","hostname"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Hostname"])),(t()(),s["ɵeld"](18,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,8,"input",[["autofocus",""],["class","form-control"],["formControlName","hostname"],["id","hostname"],["name","hostname"],["placeholder","mon-123"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,22)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,22).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,22)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,22)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,Ks.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](24,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](26,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,iu)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,su)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](32,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](34,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),$s.b,$s.a)),s["ɵdid"](35,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](36,0,[""," ",""])),s["ɵppd"](37,1),s["ɵppd"](38,1),(t()(),s["ɵeld"](39,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](40,49152,null,0,Qs.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,2,0,n.hostForm),t(e,5,0,n.hostForm),t(e,13,0),t(e,20,0,""),t(e,24,0,"hostname"),t(e,27,0,"hostname"),t(e,29,0,n.hostForm.showError("hostname",s["ɵnov"](e,2),"required")),t(e,31,0,n.hostForm.showError("hostname",s["ɵnov"](e,2),"uniqueName")),t(e,35,0,s["ɵnov"](e,2))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,4).ngClassUntouched,s["ɵnov"](e,4).ngClassTouched,s["ɵnov"](e,4).ngClassPristine,s["ɵnov"](e,4).ngClassDirty,s["ɵnov"](e,4).ngClassValid,s["ɵnov"](e,4).ngClassInvalid,s["ɵnov"](e,4).ngClassPending);var a=s["ɵunv"](e,8,0,t(e,9,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,8,1,t(e,10,0,s["ɵnov"](e.parent,1),n.resource));t(e,8,0,a,r),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,26).ngClassUntouched,s["ɵnov"](e,26).ngClassTouched,s["ɵnov"](e,26).ngClassPristine,s["ɵnov"](e,26).ngClassDirty,s["ɵnov"](e,26).ngClassValid,s["ɵnov"](e,26).ngClassInvalid,s["ɵnov"](e,26).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass);var i=s["ɵunv"](e,36,0,t(e,37,0,s["ɵnov"](e.parent,0),n.action)),u=s["ɵunv"](e,36,1,t(e,38,0,s["ɵnov"](e.parent,1),n.resource));t(e,36,0,i,u)}))}function ou(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Xs.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,ru)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](4,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,uu)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.loading),t(e,6,0,!n.loading)}),null)}function lu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-host-form",[],null,null,null,ou,au)),s["ɵdid"](1,114688,null,0,nu,[Et.m,fe.a,St.b,wi,Ds.a],null,null)],(function(t,e){t(e,1,0)}),null)}var du=s["ɵccf"]("cd-host-form",nu,lu,{},{},[]);let cu=(()=>{class t{constructor(t){this.http=t}getMonitor(){return this.http.get("api/monitor")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t})();class fu{constructor(t,e){this.monitorService=t,this.i18n=e,this.inQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:oi.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")},{prop:"cdOpenSessions",name:this.i18n("Open Sessions"),cellTransformation:oi.a.sparkline,comparator:(t,e)=>{const n=X.last(t),a=X.last(e);return n&&a&&n!==a?n>a?1:-1:0}}]},this.notInQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:oi.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")}]}}refresh(){this.monitorService.getMonitor().subscribe(t=>{t.in_quorum.map(t=>(t.cdOpenSessions=t.stats.num_sessions.map(t=>t[1]),t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t)),t.out_quorum.map(t=>(t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t)),this.inQuorum.data=[...t.in_quorum],this.notInQuorum.data=[...t.out_quorum],this.mon_status=t.mon_status})}}var hu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function gu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,35,"table",[["class","table table-striped"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster ID"])),(t()(),s["ɵeld"](4,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["monmap modified"])),(t()(),s["ɵeld"](9,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](10,null,["",""])),(t()(),s["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["monmap epoch"])),(t()(),s["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](15,null,["",""])),(t()(),s["ɵeld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["quorum con"])),(t()(),s["ɵeld"](19,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](20,null,["",""])),(t()(),s["ɵeld"](21,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["quorum mon"])),(t()(),s["ɵeld"](24,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](25,null,["",""])),(t()(),s["ɵeld"](26,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["required con"])),(t()(),s["ɵeld"](29,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](30,null,["",""])),(t()(),s["ɵeld"](31,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["required mon"])),(t()(),s["ɵeld"](34,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](35,null,["",""]))],null,(function(t,e){var n=e.component;t(e,5,0,n.mon_status.monmap.fsid),t(e,10,0,n.mon_status.monmap.modified),t(e,15,0,n.mon_status.monmap.epoch),t(e,20,0,n.mon_status.features.quorum_con),t(e,25,0,n.mon_status.features.quorum_mon),t(e,30,0,n.mon_status.features.required_con),t(e,35,0,n.mon_status.features.required_mon)}))}function pu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"div",[["class","col-lg-4"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Status"])),(t()(),s["ɵand"](16777216,null,null,1,null,gu)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](7,0,null,null,8,"div",[["class","col-lg-8"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"legend",[["class","in-quorum cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["In Quorum"])),(t()(),s["ɵeld"](10,0,null,null,1,"cd-table",[],null,null,null,Zr.b,Zr.a)),s["ɵdid"](11,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(t()(),s["ɵeld"](12,0,null,null,1,"legend",[["class","in-quorum cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Not In Quorum"])),(t()(),s["ɵeld"](14,0,null,null,1,"cd-table",[],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.refresh()&&a),a}),Zr.b,Zr.a)),s["ɵdid"](15,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,6,0,n.mon_status),t(e,11,0,n.inQuorum.data,n.inQuorum.columns),t(e,15,0,n.notInQuorum.data,n.notInQuorum.columns)}),null)}function bu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-monitor",[],null,null,null,pu,hu)),s["ɵdid"](1,49152,null,0,fu,[cu,fe.a],null,null)],null,null)}var mu=s["ɵccf"]("cd-monitor",fu,bu,{},{},[]);class yu{constructor(){}ngOnInit(){}}var vu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function xu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,[[1,4]],0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Daemons"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-service-daemon-list",[],null,null,null,Ri,Si)),s["ɵdid"](5,4964352,null,0,Oi,[fe.a,wi,_i,si],{serviceName:[0,"serviceName"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Daemons"),t(e,5,0,n.selection.service_name)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function _u(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tabsetChild:0}),(t()(),s["ɵand"](16777216,null,null,1,null,xu)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.component.selection)}),null)}var Tu=n("nYR2");class wu{constructor(t){this.i18n=t}transform(t){if(X.isUndefined(t))return this.i18n("no spec");if(X.get(t,"unmanaged",!1))return this.i18n("unmanaged");const e=[],n=X.get(t,"placement.hosts"),a=X.get(t,"placement.count"),r=X.get(t,"placement.label"),i=X.get(t,"placement.host_pattern");return X.isArray(n)&&e.push(...n),X.isNumber(a)&&e.push(this.i18n("count:{{count}}",{count:a})),X.isString(r)&&e.push(this.i18n("label:{{label}}",{label:r})),X.isString(i)&&e.push(i),e.join(";")}}const Ou=new Is.a("services");class Su extends Ns.a{constructor(t,e,n,a,r,i,s,u){super(),this.actionLabels=t,this.authStorageService=e,this.i18n=n,this.bsModalService=a,this.orchService=r,this.cephServiceService=i,this.taskWrapperService=s,this.urlBuilder=u,this.hiddenColumns=[],this.showDocPanel=!1,this.checkingOrchestrator=!0,this.hasOrchestrator=!1,this.columns=[],this.services=[],this.isLoadingServices=!1,this.selection=new li.a,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:pt.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:t=>!t.hasSelection},{permission:"delete",icon:pt.a.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSingleSelection,name:this.actionLabels.DELETE}]}ngOnInit(){const t=[{name:this.i18n("Service"),prop:"service_name",flexGrow:1},{name:this.i18n("Container image name"),prop:"status.container_image_name",flexGrow:3},{name:this.i18n("Container image ID"),prop:"status.container_image_id",flexGrow:1.5,cellTransformation:oi.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Placement"),prop:"",pipe:new wu(this.i18n),flexGrow:2},{name:this.i18n("Running"),prop:"status.running",flexGrow:1},{name:this.i18n("Size"),prop:"status.size",flexGrow:1},{name:this.i18n("Last Refreshed"),prop:"status.last_refresh",flexGrow:1}];this.columns=t.filter(t=>!this.hiddenColumns.includes(t.prop)),this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.showDocPanel=!t.available})}ngOnChanges(){this.hasOrchestrator&&(this.services=[],this.table.reloadData())}getServices(t){this.isLoadingServices||(this.isLoadingServices=!0,this.cephServiceService.list().subscribe(t=>{this.services=t,this.isLoadingServices=!1},()=>{this.isLoadingServices=!1,this.services=[],t.error()}))}updateSelection(t){this.selection=t}deleteAction(){const t=this.selection.first();this.bsModalService.show(Cs.a,{initialState:{itemDescription:this.i18n("Service"),itemNames:[t.service_name],actionDescription:"delete",submitActionObservable:()=>this.taskWrapperService.wrapTaskAroundCall({task:new As.a("service/"+St.e.DELETE,{service_name:t.service_name}),call:this.cephServiceService.delete(t.service_name)}).pipe(Re(2e3),Object(Tu.a)(()=>{this.table.refreshBtn()}))}})}}var Iu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Nu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ii,ri)),s["ɵdid"](1,49152,null,0,ai,[],null,null)],null,null)}function Cu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","service_name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getServices(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](2,2867200,[[1,4]],0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],forceIdentifier:[6,"forceIdentifier"],selectionType:[7,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](4,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](5,0,null,3,1,"cd-service-details",[["cdTableDetail",""]],null,null,null,_u,vu)),s["ɵdid"](6,114688,null,0,yu,[],{permissions:[0,"permissions"],selection:[1,"selection"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.services,n.columns,"flex",!0,5e3,"service_name","true","single"),t(e,4,0,n.permissions.hosts,n.selection,n.tableActions),t(e,6,0,n.permissions,n.expandedRow)}),null)}function Ru(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{table:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Nu)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cu)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.showDocPanel),t(e,4,0,n.hasOrchestrator)}),null)}function Au(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-services",[],null,null,null,Ru,Iu)),s["ɵprd"](256,null,Is.a,Ou,[]),s["ɵdid"](2,638976,null,0,Su,[St.b,Z.a,fe.a,Ct.b,si,_i,Ds.a,Is.a],null,null)],(function(t,e){t(e,2,0)}),null)}var ku=s["ɵccf"]("cd-services",Su,Au,{hostname:"hostname",hiddenColumns:"hiddenColumns"},{},[]),Eu=n("hpHm");function Lu(t){return!!t&&(t instanceof Jn.a||"function"==typeof t.lift&&"function"==typeof t.subscribe)}function Du(t,e=Ie.a){return n=>n.lift(new Pu(t,e))}class Pu{constructor(t,e){this.dueTime=t,this.scheduler=e}call(t,e){return e.subscribe(new Mu(t,this.dueTime,this.scheduler))}}class Mu extends Ne.a{constructor(t,e,n){super(t),this.dueTime=e,this.scheduler=n,this.debouncedSubscription=null,this.lastValue=null,this.hasValue=!1}_next(t){this.clearDebounce(),this.lastValue=t,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(qu,this.dueTime,this))}_complete(){this.debouncedNext(),this.destination.complete()}debouncedNext(){if(this.clearDebounce(),this.hasValue){const{lastValue:t}=this;this.lastValue=null,this.hasValue=!1,this.destination.next(t)}}clearDebounce(){const t=this.debouncedSubscription;null!==t&&(this.remove(t),t.unsubscribe(),this.debouncedSubscription=null)}}function qu(t){t.debouncedNext()}var ju=n("eIep");const Fu={"Á":"A","Ă":"A","Ắ":"A","Ặ":"A","Ằ":"A","Ẳ":"A","Ẵ":"A","Ǎ":"A","Â":"A","Ấ":"A","Ậ":"A","Ầ":"A","Ẩ":"A","Ẫ":"A","Ä":"A","Ǟ":"A","Ȧ":"A","Ǡ":"A","Ạ":"A","Ȁ":"A","À":"A","Ả":"A","Ȃ":"A","Ā":"A","Ą":"A","Å":"A","Ǻ":"A","Ḁ":"A","Ⱥ":"A","Ã":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ḃ":"B","Ḅ":"B","Ɓ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ć":"C","Č":"C","Ç":"C","Ḉ":"C","Ĉ":"C","Ċ":"C","Ƈ":"C","Ȼ":"C","Ď":"D","Ḑ":"D","Ḓ":"D","Ḋ":"D","Ḍ":"D","Ɗ":"D","Ḏ":"D","Dz":"D","Dž":"D","Đ":"D","Ƌ":"D","DZ":"DZ","DŽ":"DZ","É":"E","Ĕ":"E","Ě":"E","Ȩ":"E","Ḝ":"E","Ê":"E","Ế":"E","Ệ":"E","Ề":"E","Ể":"E","Ễ":"E","Ḙ":"E","Ë":"E","Ė":"E","Ẹ":"E","Ȅ":"E","È":"E","Ẻ":"E","Ȇ":"E","Ē":"E","Ḗ":"E","Ḕ":"E","Ę":"E","Ɇ":"E","Ẽ":"E","Ḛ":"E","Ꝫ":"ET","Ḟ":"F","Ƒ":"F","Ǵ":"G","Ğ":"G","Ǧ":"G","Ģ":"G","Ĝ":"G","Ġ":"G","Ɠ":"G","Ḡ":"G","Ǥ":"G","Ḫ":"H","Ȟ":"H","Ḩ":"H","Ĥ":"H","Ⱨ":"H","Ḧ":"H","Ḣ":"H","Ḥ":"H","Ħ":"H","Í":"I","Ĭ":"I","Ǐ":"I","Î":"I","Ï":"I","Ḯ":"I","İ":"I","Ị":"I","Ȉ":"I","Ì":"I","Ỉ":"I","Ȋ":"I","Ī":"I","Į":"I","Ɨ":"I","Ĩ":"I","Ḭ":"I","Ꝺ":"D","Ꝼ":"F","Ᵹ":"G","Ꞃ":"R","Ꞅ":"S","Ꞇ":"T","Ꝭ":"IS","Ĵ":"J","Ɉ":"J","Ḱ":"K","Ǩ":"K","Ķ":"K","Ⱪ":"K","Ꝃ":"K","Ḳ":"K","Ƙ":"K","Ḵ":"K","Ꝁ":"K","Ꝅ":"K","Ĺ":"L","Ƚ":"L","Ľ":"L","Ļ":"L","Ḽ":"L","Ḷ":"L","Ḹ":"L","Ⱡ":"L","Ꝉ":"L","Ḻ":"L","Ŀ":"L","Ɫ":"L","Lj":"L","Ł":"L","LJ":"LJ","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ń":"N","Ň":"N","Ņ":"N","Ṋ":"N","Ṅ":"N","Ṇ":"N","Ǹ":"N","Ɲ":"N","Ṉ":"N","Ƞ":"N","Nj":"N","Ñ":"N","NJ":"NJ","Ó":"O","Ŏ":"O","Ǒ":"O","Ô":"O","Ố":"O","Ộ":"O","Ồ":"O","Ổ":"O","Ỗ":"O","Ö":"O","Ȫ":"O","Ȯ":"O","Ȱ":"O","Ọ":"O","Ő":"O","Ȍ":"O","Ò":"O","Ỏ":"O","Ơ":"O","Ớ":"O","Ợ":"O","Ờ":"O","Ở":"O","Ỡ":"O","Ȏ":"O","Ꝋ":"O","Ꝍ":"O","Ō":"O","Ṓ":"O","Ṑ":"O","Ɵ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Õ":"O","Ṍ":"O","Ṏ":"O","Ȭ":"O","Ƣ":"OI","Ꝏ":"OO","Ɛ":"E","Ɔ":"O","Ȣ":"OU","Ṕ":"P","Ṗ":"P","Ꝓ":"P","Ƥ":"P","Ꝕ":"P","Ᵽ":"P","Ꝑ":"P","Ꝙ":"Q","Ꝗ":"Q","Ŕ":"R","Ř":"R","Ŗ":"R","Ṙ":"R","Ṛ":"R","Ṝ":"R","Ȑ":"R","Ȓ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꜿ":"C","Ǝ":"E","Ś":"S","Ṥ":"S","Š":"S","Ṧ":"S","Ş":"S","Ŝ":"S","Ș":"S","Ṡ":"S","Ṣ":"S","Ṩ":"S","Ť":"T","Ţ":"T","Ṱ":"T","Ț":"T","Ⱦ":"T","Ṫ":"T","Ṭ":"T","Ƭ":"T","Ṯ":"T","Ʈ":"T","Ŧ":"T","Ɐ":"A","Ꞁ":"L","Ɯ":"M","Ʌ":"V","Ꜩ":"TZ","Ú":"U","Ŭ":"U","Ǔ":"U","Û":"U","Ṷ":"U","Ü":"U","Ǘ":"U","Ǚ":"U","Ǜ":"U","Ǖ":"U","Ṳ":"U","Ụ":"U","Ű":"U","Ȕ":"U","Ù":"U","Ủ":"U","Ư":"U","Ứ":"U","Ự":"U","Ừ":"U","Ử":"U","Ữ":"U","Ȗ":"U","Ū":"U","Ṻ":"U","Ų":"U","Ů":"U","Ũ":"U","Ṹ":"U","Ṵ":"U","Ꝟ":"V","Ṿ":"V","Ʋ":"V","Ṽ":"V","Ꝡ":"VY","Ẃ":"W","Ŵ":"W","Ẅ":"W","Ẇ":"W","Ẉ":"W","Ẁ":"W","Ⱳ":"W","Ẍ":"X","Ẋ":"X","Ý":"Y","Ŷ":"Y","Ÿ":"Y","Ẏ":"Y","Ỵ":"Y","Ỳ":"Y","Ƴ":"Y","Ỷ":"Y","Ỿ":"Y","Ȳ":"Y","Ɏ":"Y","Ỹ":"Y","Ź":"Z","Ž":"Z","Ẑ":"Z","Ⱬ":"Z","Ż":"Z","Ẓ":"Z","Ȥ":"Z","Ẕ":"Z","Ƶ":"Z","IJ":"IJ","Œ":"OE","ᴀ":"A","ᴁ":"AE","ʙ":"B","ᴃ":"B","ᴄ":"C","ᴅ":"D","ᴇ":"E","ꜰ":"F","ɢ":"G","ʛ":"G","ʜ":"H","ɪ":"I","ʁ":"R","ᴊ":"J","ᴋ":"K","ʟ":"L","ᴌ":"L","ᴍ":"M","ɴ":"N","ᴏ":"O","ɶ":"OE","ᴐ":"O","ᴕ":"OU","ᴘ":"P","ʀ":"R","ᴎ":"N","ᴙ":"R","ꜱ":"S","ᴛ":"T","ⱻ":"E","ᴚ":"R","ᴜ":"U","ᴠ":"V","ᴡ":"W","ʏ":"Y","ᴢ":"Z","á":"a","ă":"a","ắ":"a","ặ":"a","ằ":"a","ẳ":"a","ẵ":"a","ǎ":"a","â":"a","ấ":"a","ậ":"a","ầ":"a","ẩ":"a","ẫ":"a","ä":"a","ǟ":"a","ȧ":"a","ǡ":"a","ạ":"a","ȁ":"a","à":"a","ả":"a","ȃ":"a","ā":"a","ą":"a","ᶏ":"a","ẚ":"a","å":"a","ǻ":"a","ḁ":"a","ⱥ":"a","ã":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ḃ":"b","ḅ":"b","ɓ":"b","ḇ":"b","ᵬ":"b","ᶀ":"b","ƀ":"b","ƃ":"b","ɵ":"o","ć":"c","č":"c","ç":"c","ḉ":"c","ĉ":"c","ɕ":"c","ċ":"c","ƈ":"c","ȼ":"c","ď":"d","ḑ":"d","ḓ":"d","ȡ":"d","ḋ":"d","ḍ":"d","ɗ":"d","ᶑ":"d","ḏ":"d","ᵭ":"d","ᶁ":"d","đ":"d","ɖ":"d","ƌ":"d","ı":"i","ȷ":"j","ɟ":"j","ʄ":"j","dz":"dz","dž":"dz","é":"e","ĕ":"e","ě":"e","ȩ":"e","ḝ":"e","ê":"e","ế":"e","ệ":"e","ề":"e","ể":"e","ễ":"e","ḙ":"e","ë":"e","ė":"e","ẹ":"e","ȅ":"e","è":"e","ẻ":"e","ȇ":"e","ē":"e","ḗ":"e","ḕ":"e","ⱸ":"e","ę":"e","ᶒ":"e","ɇ":"e","ẽ":"e","ḛ":"e","ꝫ":"et","ḟ":"f","ƒ":"f","ᵮ":"f","ᶂ":"f","ǵ":"g","ğ":"g","ǧ":"g","ģ":"g","ĝ":"g","ġ":"g","ɠ":"g","ḡ":"g","ᶃ":"g","ǥ":"g","ḫ":"h","ȟ":"h","ḩ":"h","ĥ":"h","ⱨ":"h","ḧ":"h","ḣ":"h","ḥ":"h","ɦ":"h","ẖ":"h","ħ":"h","ƕ":"hv","í":"i","ĭ":"i","ǐ":"i","î":"i","ï":"i","ḯ":"i","ị":"i","ȉ":"i","ì":"i","ỉ":"i","ȋ":"i","ī":"i","į":"i","ᶖ":"i","ɨ":"i","ĩ":"i","ḭ":"i","ꝺ":"d","ꝼ":"f","ᵹ":"g","ꞃ":"r","ꞅ":"s","ꞇ":"t","ꝭ":"is","ǰ":"j","ĵ":"j","ʝ":"j","ɉ":"j","ḱ":"k","ǩ":"k","ķ":"k","ⱪ":"k","ꝃ":"k","ḳ":"k","ƙ":"k","ḵ":"k","ᶄ":"k","ꝁ":"k","ꝅ":"k","ĺ":"l","ƚ":"l","ɬ":"l","ľ":"l","ļ":"l","ḽ":"l","ȴ":"l","ḷ":"l","ḹ":"l","ⱡ":"l","ꝉ":"l","ḻ":"l","ŀ":"l","ɫ":"l","ᶅ":"l","ɭ":"l","ł":"l","lj":"lj","ſ":"s","ẜ":"s","ẛ":"s","ẝ":"s","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ᵯ":"m","ᶆ":"m","ń":"n","ň":"n","ņ":"n","ṋ":"n","ȵ":"n","ṅ":"n","ṇ":"n","ǹ":"n","ɲ":"n","ṉ":"n","ƞ":"n","ᵰ":"n","ᶇ":"n","ɳ":"n","ñ":"n","nj":"nj","ó":"o","ŏ":"o","ǒ":"o","ô":"o","ố":"o","ộ":"o","ồ":"o","ổ":"o","ỗ":"o","ö":"o","ȫ":"o","ȯ":"o","ȱ":"o","ọ":"o","ő":"o","ȍ":"o","ò":"o","ỏ":"o","ơ":"o","ớ":"o","ợ":"o","ờ":"o","ở":"o","ỡ":"o","ȏ":"o","ꝋ":"o","ꝍ":"o","ⱺ":"o","ō":"o","ṓ":"o","ṑ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","õ":"o","ṍ":"o","ṏ":"o","ȭ":"o","ƣ":"oi","ꝏ":"oo","ɛ":"e","ᶓ":"e","ɔ":"o","ᶗ":"o","ȣ":"ou","ṕ":"p","ṗ":"p","ꝓ":"p","ƥ":"p","ᵱ":"p","ᶈ":"p","ꝕ":"p","ᵽ":"p","ꝑ":"p","ꝙ":"q","ʠ":"q","ɋ":"q","ꝗ":"q","ŕ":"r","ř":"r","ŗ":"r","ṙ":"r","ṛ":"r","ṝ":"r","ȑ":"r","ɾ":"r","ᵳ":"r","ȓ":"r","ṟ":"r","ɼ":"r","ᵲ":"r","ᶉ":"r","ɍ":"r","ɽ":"r","ↄ":"c","ꜿ":"c","ɘ":"e","ɿ":"r","ś":"s","ṥ":"s","š":"s","ṧ":"s","ş":"s","ŝ":"s","ș":"s","ṡ":"s","ṣ":"s","ṩ":"s","ʂ":"s","ᵴ":"s","ᶊ":"s","ȿ":"s","ɡ":"g","ᴑ":"o","ᴓ":"o","ᴝ":"u","ť":"t","ţ":"t","ṱ":"t","ț":"t","ȶ":"t","ẗ":"t","ⱦ":"t","ṫ":"t","ṭ":"t","ƭ":"t","ṯ":"t","ᵵ":"t","ƫ":"t","ʈ":"t","ŧ":"t","ᵺ":"th","ɐ":"a","ᴂ":"ae","ǝ":"e","ᵷ":"g","ɥ":"h","ʮ":"h","ʯ":"h","ᴉ":"i","ʞ":"k","ꞁ":"l","ɯ":"m","ɰ":"m","ᴔ":"oe","ɹ":"r","ɻ":"r","ɺ":"r","ⱹ":"r","ʇ":"t","ʌ":"v","ʍ":"w","ʎ":"y","ꜩ":"tz","ú":"u","ŭ":"u","ǔ":"u","û":"u","ṷ":"u","ü":"u","ǘ":"u","ǚ":"u","ǜ":"u","ǖ":"u","ṳ":"u","ụ":"u","ű":"u","ȕ":"u","ù":"u","ủ":"u","ư":"u","ứ":"u","ự":"u","ừ":"u","ử":"u","ữ":"u","ȗ":"u","ū":"u","ṻ":"u","ų":"u","ᶙ":"u","ů":"u","ũ":"u","ṹ":"u","ṵ":"u","ᵫ":"ue","ꝸ":"um","ⱴ":"v","ꝟ":"v","ṿ":"v","ʋ":"v","ᶌ":"v","ⱱ":"v","ṽ":"v","ꝡ":"vy","ẃ":"w","ŵ":"w","ẅ":"w","ẇ":"w","ẉ":"w","ẁ":"w","ⱳ":"w","ẘ":"w","ẍ":"x","ẋ":"x","ᶍ":"x","ý":"y","ŷ":"y","ÿ":"y","ẏ":"y","ỵ":"y","ỳ":"y","ƴ":"y","ỷ":"y","ỿ":"y","ȳ":"y","ẙ":"y","ɏ":"y","ỹ":"y","ź":"z","ž":"z","ẑ":"z","ʑ":"z","ⱬ":"z","ż":"z","ẓ":"z","ȥ":"z","ẕ":"z","ᵶ":"z","ᶎ":"z","ʐ":"z","ƶ":"z","ɀ":"z","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ij":"ij","œ":"oe","st":"st","ₐ":"a","ₑ":"e","ᵢ":"i","ⱼ":"j","ₒ":"o","ᵣ":"r","ᵤ":"u","ᵥ":"v","ₓ":"x"};class Vu{constructor(t,e=t,n=!1){this.item=t,this.value=e,this.header=n}isHeader(){return this.header}toString(){return this.value}}function Gu(t){return t?t.replace(/[^A-Za-z0-9\[\] ]/g,(function(t){return Fu[t]||t})):""}function Bu(t,e=" ",n=""){const a=t.split(new RegExp(`(?:[${n}])([^${n}]+)(?:[${n}])|([^${e}]+)`,"g")),r=[],i=a.length;let s;const u=new RegExp(`[${n}]+`,"g");for(let o=0;o<i;o+=1)s=a[o],s&&s.length&&s!==e&&r.push(s.replace(u,""));return r}function zu(t,e){if(!e||"object"!=typeof t)return t.toString();if(e.endsWith("()"))return t[e.slice(0,e.length-2)]().toString();const n=e.replace(/\[(\w+)\]/g,".$1").replace(/^\./,"").split(".");for(const a of n)a in t&&(t=t[a]);return t?t.toString():""}class Yu{constructor(t,e,n,a){this.positionService=t,this.renderer=e,this.element=n,this.changeDetectorRef=a,this.isFocused=!1,this.height=0,this._matches=[],this.isScrolledIntoView=function(t){const e=this.ulElement.nativeElement.scrollTop,n=e+Number(this.ulElement.nativeElement.offsetHeight),a=t.offsetTop;return a+t.offsetHeight<=n&&a>=e},this.positionServiceSubscription=this.positionService.event$.subscribe(()=>{if(this.isAnimated)return this.animationState=this.isTopPosition?"animated-up":"animated-down",void this.changeDetectorRef.detectChanges();this.animationState="unanimated",this.changeDetectorRef.detectChanges()})}get isBs4(){return!Object(Eu.d)()}get active(){return this._active}get matches(){return this._matches}set matches(t){if(this.positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition}},allowedPositions:["top","bottom"]}),this._matches=t,this.needScrollbar=this.typeaheadScrollable&&this.typeaheadOptionsInScrollableView<this.matches.length,this.typeaheadScrollable&&setTimeout(()=>{this.setScrollableMode()}),this.typeaheadIsFirstItemActive&&this._matches.length>0&&(this._active=this._matches[0],this._active.isHeader()&&this.nextActiveMatch()),this._active&&!this.typeaheadIsFirstItemActive){const t=this._matches.find(t=>t.value===this._active.value);if(t)return void this.selectActive(t);this._active=null}}get isTopPosition(){return this.element.nativeElement.classList.contains("top")}get optionsListTemplate(){return this.parent?this.parent.optionsListTemplate:void 0}get isAnimated(){return!!this.parent&&this.parent.isAnimated}get adaptivePosition(){return!!this.parent&&this.parent.adaptivePosition}get typeaheadScrollable(){return!!this.parent&&this.parent.typeaheadScrollable}get typeaheadOptionsInScrollableView(){return this.parent?this.parent.typeaheadOptionsInScrollableView:5}get typeaheadIsFirstItemActive(){return!this.parent||this.parent.typeaheadIsFirstItemActive}get itemTemplate(){return this.parent?this.parent.typeaheadItemTemplate:void 0}selectActiveMatch(t){this._active&&this.parent.typeaheadSelectFirstItem&&this.selectMatch(this._active),!this.parent.typeaheadSelectFirstItem&&t&&this.selectMatch(this._active)}prevActiveMatch(){const t=this.matches.indexOf(this._active);this._active=this.matches[t-1<0?this.matches.length-1:t-1],this._active.isHeader()&&this.prevActiveMatch(),this.typeaheadScrollable&&this.scrollPrevious(t)}nextActiveMatch(){const t=this.matches.indexOf(this._active);this._active=this.matches[t+1>this.matches.length-1?0:t+1],this._active.isHeader()&&this.nextActiveMatch(),this.typeaheadScrollable&&this.scrollNext(t)}selectActive(t){this.isFocused=!0,this._active=t}highlight(t,e){let n,a,r=t.value,i=(this.parent&&this.parent.typeaheadLatinize?Gu(r):r).toLowerCase();if("object"==typeof e){const t=e.length;for(let s=0;s<t;s+=1)n=i.indexOf(e[s]),a=e[s].length,n>=0&&a>0&&(r=`${r.substring(0,n)}<strong>${r.substring(n,n+a)}</strong>`+r.substring(n+a),i=`${i.substring(0,n)}        ${" ".repeat(a)}         `+i.substring(n+a))}else e&&(n=i.indexOf(e),a=e.length,n>=0&&a>0&&(r=`${r.substring(0,n)}<strong>${r.substring(n,n+a)}</strong>`+r.substring(n+a)));return r}focusLost(){this.isFocused=!1}isActive(t){return this._active===t}selectMatch(t,e){return e&&(e.stopPropagation(),e.preventDefault()),this.parent.changeModel(t),setTimeout(()=>this.parent.typeaheadOnSelect.emit(t),0),!1}setScrollableMode(){if(this.ulElement||(this.ulElement=this.element),this.liElements.first){const t=Eu.b.getStyles(this.ulElement.nativeElement),e=Eu.b.getStyles(this.liElements.first.nativeElement),n=parseFloat((t["padding-bottom"]?t["padding-bottom"]:"").replace("px","")),a=parseFloat((t["padding-top"]?t["padding-top"]:"0").replace("px","")),r=parseFloat((e.height?e.height:"0").replace("px",""));this.guiHeight=this.typeaheadOptionsInScrollableView*r+a+n+"px"}this.renderer.setStyle(this.element.nativeElement,"visibility","visible")}scrollPrevious(t){if(0!==t){if(this.liElements){const e=this.liElements.toArray()[t-1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop)}}else this.scrollToBottom()}scrollNext(t){if(t+1>this.matches.length-1)this.scrollToTop();else if(this.liElements){const e=this.liElements.toArray()[t+1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop-Number(this.ulElement.nativeElement.offsetHeight)+Number(e.nativeElement.offsetHeight))}}ngOnDestroy(){this.positionServiceSubscription.unsubscribe()}scrollToBottom(){this.ulElement.nativeElement.scrollTop=this.ulElement.nativeElement.scrollHeight}scrollToTop(){this.ulElement.nativeElement.scrollTop=0}}class Hu{constructor(){this.adaptivePosition=!1,this.isAnimated=!1,this.hideResultsOnBlur=!0,this.selectFirstItem=!0,this.isFirstItemActive=!0,this.minLength=1}}class Uu{constructor(t,e,n,a,r,i,u){this.changeDetection=n,this.element=a,this.ngControl=r,this.renderer=i,this.typeaheadMinLength=void 0,this.isAnimated=!1,this.typeaheadAsync=void 0,this.typeaheadLatinize=!0,this.typeaheadSingleWords=!0,this.typeaheadWordDelimiters=" ",this.typeaheadPhraseDelimiters="'\"",this.typeaheadScrollable=!1,this.typeaheadOptionsInScrollableView=5,this.typeaheadSelectFirstItem=!0,this.typeaheadIsFirstItemActive=!0,this.typeaheadLoading=new s.EventEmitter,this.typeaheadNoResults=new s.EventEmitter,this.typeaheadOnSelect=new s.EventEmitter,this.typeaheadOnBlur=new s.EventEmitter,this.dropup=!1,this.isActiveItemChanged=!1,this.isTypeaheadOptionsListActive=!1,this.keyUpEventEmitter=new s.EventEmitter,this.placement="bottom-left",this._subscriptions=[],this._typeahead=t.createLoader(a,u,i).provide({provide:Hu,useValue:e}),Object.assign(this,{typeaheadHideResultsOnBlur:e.hideResultsOnBlur,typeaheadSelectFirstItem:e.selectFirstItem,typeaheadIsFirstItemActive:e.isFirstItemActive,typeaheadMinLength:e.minLength,adaptivePosition:e.adaptivePosition,isAnimated:e.isAnimated})}ngOnInit(){this.typeaheadOptionsLimit=this.typeaheadOptionsLimit||20,this.typeaheadMinLength=void 0===this.typeaheadMinLength?1:this.typeaheadMinLength,this.typeaheadWaitMs=this.typeaheadWaitMs||0,void 0!==this.typeaheadAsync||Lu(this.typeahead)||(this.typeaheadAsync=!1),Lu(this.typeahead)&&(this.typeaheadAsync=!0),this.typeaheadAsync?this.asyncActions():this.syncActions()}onInput(t){const e=void 0!==t.target.value?t.target.value:void 0!==t.target.textContent?t.target.textContent:t.target.innerText;null!=e&&e.trim().length>=this.typeaheadMinLength?(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(t.target.value)):(this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!1),this.hide())}onChange(t){if(this._container){if(27===t.keyCode||"Escape"===t.key)return void this.hide();if(38===t.keyCode||"ArrowUp"===t.key)return this.isActiveItemChanged=!0,void this._container.prevActiveMatch();if(40===t.keyCode||"ArrowDown"===t.key)return this.isActiveItemChanged=!0,void this._container.nextActiveMatch();if(13===t.keyCode||"Enter"===t.key)return void this._container.selectActiveMatch()}}onFocus(){0===this.typeaheadMinLength&&(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(this.element.nativeElement.value||""))}onBlur(){this._container&&!this._container.isFocused&&this.typeaheadOnBlur.emit(this._container.active)}onKeydown(t){if(this._container&&(9===t.keyCode||"Tab"===t.key||13===t.keyCode||"Enter"===t.key)){if(t.preventDefault(),this.typeaheadSelectFirstItem)return void this._container.selectActiveMatch();this.typeaheadSelectFirstItem||(this._container.selectActiveMatch(this.isActiveItemChanged),this.isActiveItemChanged=!1,this.hide())}}changeModel(t){const e=t.value;this.ngControl.viewToModelUpdate(e),this.ngControl.control.setValue(e),this.changeDetection.markForCheck(),this.hide()}get matches(){return this._matches}show(){this._typeahead.attach(Yu).to(this.container).position({attachment:(this.dropup?"top":"bottom")+" start"}).show({typeaheadRef:this,placement:this.placement,animation:!1,dropup:this.dropup}),this._outsideClickListener=this.renderer.listen("document","click",t=>{0===this.typeaheadMinLength&&this.element.nativeElement.contains(t.target)||this.typeaheadHideResultsOnBlur&&!this.element.nativeElement.contains(t.target)&&this.onOutsideClick()}),this._container=this._typeahead.instance,this._container.parent=this;const t=(this.typeaheadLatinize?Gu(this.ngControl.control.value):this.ngControl.control.value).toString().toLowerCase();this._container.query=this.typeaheadSingleWords?Bu(t,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):t,this._container.matches=this._matches,this.element.nativeElement.focus()}hide(){this._typeahead.isShown&&(this._typeahead.hide(),this._outsideClickListener(),this._container=null)}onOutsideClick(){this._container&&!this._container.isFocused&&this.hide()}ngOnDestroy(){for(const t of this._subscriptions)t.unsubscribe();this._typeahead.dispose()}asyncActions(){this._subscriptions.push(this.keyUpEventEmitter.pipe(Du(this.typeaheadWaitMs),Object(ju.a)(t=>this.typeahead.pipe(Object(Qe.a)(e=>{const n=this.normalizeQuery(t);return e.filter(t=>t&&this.testMatch(this.normalizeOption(t),n))})))).subscribe(t=>{this.finalizeAsyncCall(t)}))}syncActions(){this._subscriptions.push(this.keyUpEventEmitter.pipe(Du(this.typeaheadWaitMs),Object(we.a)(t=>{const e=this.normalizeQuery(t);return Object(Zn.a)(this.typeahead).pipe(Object(Qn.a)(t=>t&&this.testMatch(this.normalizeOption(t),e)),ia())})).subscribe(t=>{this.finalizeAsyncCall(t)}))}normalizeOption(t){const e=zu(t,this.typeaheadOptionField);return(this.typeaheadLatinize?Gu(e):e).toLowerCase()}normalizeQuery(t){let e=(this.typeaheadLatinize?Gu(t):t).toString().toLowerCase();return e=this.typeaheadSingleWords?Bu(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e,e}testMatch(t,e){let n;if("object"==typeof e){n=e.length;for(let a=0;a<n;a+=1)if(e[a].length>0&&t.indexOf(e[a])<0)return!1;return!0}return t.indexOf(e)>=0}finalizeAsyncCall(t){if(this.prepareMatches(t||[]),this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!this.hasMatches()),this.hasMatches())if(this._container){const t=((this.typeaheadLatinize?Gu(this.ngControl.control.value):this.ngControl.control.value)||"").toString().toLowerCase();this._container.query=this.typeaheadSingleWords?Bu(t,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):t,this._container.matches=this._matches}else this.show();else this.hide()}prepareMatches(t){const e=t.slice(0,this.typeaheadOptionsLimit);if(this.typeaheadGroupField){let t=[];e.map(t=>zu(t,this.typeaheadGroupField)).filter((t,e,n)=>n.indexOf(t)===e).forEach(n=>{t.push(new Vu(n,n,!0)),t=t.concat(e.filter(t=>zu(t,this.typeaheadGroupField)===n).map(t=>new Vu(t,zu(t,this.typeaheadOptionField))))}),this._matches=t}else this._matches=e.map(t=>new Vu(t,zu(t,this.typeaheadOptionField)))}hasMatches(){return this._matches.length>0}}class Wu{static forRoot(){return{ngModule:Wu,providers:[U.a,Na.a,Hu]}}}var Ku=n("pYKc"),$u=n("ppaS"),Ju=n("4HWh"),Zu=n("p4Cf"),Qu=n("D4zM"),Xu=n("OcYo"),to=n("Ekvf"),eo=n("a96k"),no=n("2EZI");class ao{constructor(t,e,n,a,r,i,s,u){this.actionLabels=t,this.cephServiceService=e,this.formBuilder=n,this.hostService=a,this.i18n=r,this.poolService=i,this.router=s,this.taskWrapperService=u,this.serviceTypes=[],this.searchLabels=new Jn.a(t=>{t.next(this.serviceForm.getValue("label"))}).pipe(Object(Qe.a)(t=>this.labels.filter(e=>e.toLowerCase().indexOf(t.toLowerCase())>-1).slice(0,10))),this.resource=this.i18n("service"),this.hosts={options:[],messages:new Rs.a({empty:this.i18n("There are no hosts."),filter:this.i18n("Filter hosts")},this.i18n)},this.createForm()}createForm(){this.serviceForm=this.formBuilder.group({service_type:[null,[K.B.required]],service_id:[null,[eu.a.requiredIf({service_type:"mds"}),eu.a.requiredIf({service_type:"nfs"}),eu.a.requiredIf({service_type:"iscsi"}),eu.a.composeIf({service_type:"rgw"},[K.B.required,eu.a.custom("rgwPattern",t=>!X.isEmpty(t)&&!/^[^.]+\.[^.]+(\.[^.]+)?$/.test(t))])]],placement:["hosts"],label:[null,[eu.a.requiredIf({placement:"label",unmanaged:!1})]],hosts:[[]],count:[null,[eu.a.number(!1),K.B.min(1)]],unmanaged:[!1],pool:[null,[eu.a.requiredIf({service_type:"nfs",unmanaged:!1}),eu.a.requiredIf({service_type:"iscsi",unmanaged:!1})]],namespace:[null],rgw_frontend_port:[null,[eu.a.number(!1),K.B.min(1),K.B.max(65535)]],trusted_ip_list:[null],api_port:[null,[eu.a.number(!1),K.B.min(1),K.B.max(65535)]],api_user:[null,[eu.a.requiredIf({service_type:"iscsi",unmanaged:!1})]],api_password:[null,[eu.a.requiredIf({service_type:"iscsi",unmanaged:!1})]],ssl:[!1],ssl_cert:["",[eu.a.composeIf({service_type:"rgw",unmanaged:!1,ssl:!0},[K.B.required,eu.a.sslCert()]),eu.a.composeIf({service_type:"iscsi",unmanaged:!1,ssl:!0},[K.B.required,eu.a.sslCert()])]],ssl_key:["",[eu.a.composeIf({service_type:"rgw",unmanaged:!1,ssl:!0},[K.B.required,eu.a.sslPrivKey()]),eu.a.composeIf({service_type:"iscsi",unmanaged:!1,ssl:!0},[K.B.required,eu.a.sslPrivKey()])]]})}ngOnInit(){this.action=this.actionLabels.CREATE,this.cephServiceService.getKnownTypes().subscribe(t=>{this.serviceTypes=X.difference(t,["osd"]).sort()}),this.hostService.list().subscribe(t=>{const e=[];X.forEach(t,t=>{if(X.get(t,"sources.orchestrator",!1)){const n=new eo.a(!1,X.get(t,"hostname"),"");e.push(n)}}),this.hosts.options=[...e]}),this.hostService.getLabels().subscribe(t=>{this.labels=t}),this.poolService.getList().subscribe(t=>{this.pools=t})}goToListView(){this.router.navigate(["/services"])}fileUpload(t,e){const n=t[0],a=new FileReader;a.addEventListener("load",t=>{const n=this.serviceForm.get(e);n.setValue(t.target.result),n.markAsDirty(),n.markAsTouched(),n.updateValueAndValidity()}),a.readAsText(n,"utf8")}onSubmit(){const t=this,e=this.serviceForm.value,n=e.service_id,a=e.service_type,r={service_type:a,placement:{},unmanaged:e.unmanaged};let i=a;if(X.isString(n)&&!X.isEmpty(n)&&(i=`${a}.${n}`,r.service_id=n),!e.unmanaged){switch(e.placement){case"hosts":e.hosts.length>0&&(r.placement.hosts=e.hosts);break;case"label":r.placement.label=e.label}switch(X.isNumber(e.count)&&e.count>0&&(r.placement.count=e.count),a){case"nfs":r.pool=e.pool,X.isString(e.namespace)&&!X.isEmpty(e.namespace)&&(r.namespace=e.namespace);break;case"rgw":X.isNumber(e.rgw_frontend_port)&&e.rgw_frontend_port>0&&(r.rgw_frontend_port=e.rgw_frontend_port),r.ssl=e.ssl,e.ssl&&(r.rgw_frontend_ssl_certificate=e.ssl_cert.trim(),r.rgw_frontend_ssl_key=e.ssl_key.trim());break;case"iscsi":if(r.pool=e.pool,X.isString(e.trusted_ip_list)&&!X.isEmpty(e.trusted_ip_list)){let t=X.split(e.trusted_ip_list,",");t=X.map(t,X.trim),r.trusted_ip_list=t}X.isNumber(e.api_port)&&e.api_port>0&&(r.api_port=e.api_port),r.api_user=e.api_user,r.api_password=e.api_password,r.api_secure=e.ssl,e.ssl&&(r.ssl_cert=e.ssl_cert.trim(),r.ssl_key=e.ssl_key.trim())}}this.taskWrapperService.wrapTaskAroundCall({task:new As.a("service/"+St.e.CREATE,{service_name:i}),call:this.cephServiceService.create(r)}).subscribe({error(){t.serviceForm.setErrors({cdSubmitButton:!0})},complete(){t.goToListView()}})}}var ro=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function io(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function so(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function uo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function oo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value does not match the pattern "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["<realm_name>.<zone_name>[.<subcluster>]"])),(t()(),s["ɵted"](-1,null,["."]))],null,null)}function lo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","placement"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Placement"])),(t()(),s["ɵeld"](6,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","placement"],["id","placement"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](11,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](15,0,null,null,3,"option",[["value","hosts"]],null,null,null,null,null)),s["ɵdid"](16,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](17,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Hosts"])),(t()(),s["ɵeld"](19,0,null,null,3,"option",[["value","label"]],null,null,null,null,null)),s["ɵdid"](20,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](21,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Label"]))],(function(t,e){t(e,1,0),t(e,11,0,"placement"),t(e,14,0,"placement"),t(e,16,0,"hosts"),t(e,17,0,"hosts"),t(e,20,0,"label"),t(e,21,0,"label")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function co(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function fo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Label"])),(t()(),s["ɵeld"](6,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,8,"input",[["autocomplete","off"],["class","form-control"],["formControlName","label"],["id","label"],["type","text"],["typeaheadWaitMs","200"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,9)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,14).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,14).onKeydown(n)&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](11,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,212992,null,0,Uu,[U.a,Hu,s.ChangeDetectorRef,s.ElementRef,K.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"],typeaheadWaitMs:[1,"typeaheadWaitMs"]},null),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,co)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,11,0,"label"),t(e,14,0,n.searchLabels,"200"),t(e,15,0,"label"),t(e,17,0,n.serviceForm.showError("label",s["ɵnov"](e.parent,5),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass)}))}function ho(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","hosts"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Hosts"])),(t()(),s["ɵeld"](6,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"cd-select-badges",[["id","hosts"]],null,null,null,Ku.b,Ku.a)),s["ɵdid"](8,49152,null,0,$u.a,[fe.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,8,0,n.serviceForm.controls.hosts.value,n.hosts.options,n.hosts.messages)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess)}))}function go(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value must be at least 1."]))],null,null)}function po(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function bo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","count"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Count"])),(t()(),s["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](8,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](-1,0,["Only that number of daemons will be created."])),(t()(),s["ɵeld"](10,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,8,"input",[["class","form-control"],["formControlName","count"],["id","count"],["min","1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,13)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,13)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,13)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onTouched()&&a),a}),null,null)),s["ɵdid"](12,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](13,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](14,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](16,671744,[[13,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](18,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](19,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,go)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,po)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,16,0,"count"),t(e,19,0,"count"),t(e,21,0,n.serviceForm.showError("count",s["ɵnov"](e.parent,5),"min")),t(e,23,0,n.serviceForm.showError("count",s["ɵnov"](e.parent,5),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,18).ngClassUntouched,s["ɵnov"](e,18).ngClassTouched,s["ɵnov"](e,18).ngClassPristine,s["ɵnov"](e,18).ngClassDirty,s["ɵnov"](e,18).ngClassValid,s["ɵnov"](e,18).ngClassInvalid,s["ɵnov"](e,18).ngClassPending,s["ɵnov"](e,19).validClass,s["ɵnov"](e,19).invalidClass)}))}function mo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function yo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- No pools available --"]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function vo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select a pool --"]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function xo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.pool_name),t(e,2,0,e.context.$implicit.pool_name)}),(function(t,e){t(e,3,0,e.context.$implicit.pool_name)}))}function _o(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function To(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,40,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","pool"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pool"])),(t()(),s["ɵeld"](7,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","pool"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,10).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,10).onTouched()&&a),a}),null,null)),s["ɵdid"](9,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](10,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](12,671744,[[15,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](14,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mo)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yo)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vo)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xo)),s["ɵdid"](23,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_o)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](27,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,17,{FormControlNames:1}),s["ɵqud"](603979776,18,{messagesBlock:0}),(t()(),s["ɵeld"](30,0,null,0,1,"label",[["class","cd-col-form-label"],["for","namespace"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Namespace"])),(t()(),s["ɵeld"](32,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,7,"input",[["class","form-control"],["formControlName","namespace"],["id","namespace"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,35)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,35).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,35)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,35)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](34,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](35,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](37,671744,[[17,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](39,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](40,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,12,0,"pool"),t(e,15,0,"pool"),t(e,17,0,null===n.pools),t(e,19,0,null!==n.pools&&0===n.pools.length),t(e,21,0,null!==n.pools&&n.pools.length>0),t(e,23,0,n.pools),t(e,25,0,n.serviceForm.showError("pool",s["ɵnov"](e.parent,5),"required")),t(e,27,0),t(e,37,0,"namespace"),t(e,40,0,"namespace")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,8,0,s["ɵnov"](e,14).ngClassUntouched,s["ɵnov"](e,14).ngClassTouched,s["ɵnov"](e,14).ngClassPristine,s["ɵnov"](e,14).ngClassDirty,s["ɵnov"](e,14).ngClassValid,s["ɵnov"](e,14).ngClassInvalid,s["ɵnov"](e,14).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass),t(e,26,0,s["ɵnov"](e,27).hasErrors,s["ɵnov"](e,27).hasSuccess),t(e,33,0,s["ɵnov"](e,39).ngClassUntouched,s["ɵnov"](e,39).ngClassTouched,s["ɵnov"](e,39).ngClassPristine,s["ɵnov"](e,39).ngClassDirty,s["ɵnov"](e,39).ngClassValid,s["ɵnov"](e,39).ngClassInvalid,s["ɵnov"](e,39).ngClassPending,s["ɵnov"](e,40).validClass,s["ɵnov"](e,40).invalidClass)}))}function wo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function Oo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value must be at least 1."]))],null,null)}function So(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value cannot exceed 65535."]))],null,null)}function Io(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,19,{FormControlNames:1}),s["ɵqud"](603979776,20,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"],["for","rgw_frontend_port"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Port"])),(t()(),s["ɵeld"](7,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,8,"input",[["class","form-control"],["formControlName","rgw_frontend_port"],["id","rgw_frontend_port"],["max","65535"],["min","1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,10)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,10).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,10)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,10)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,11).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,11).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,11).onTouched()&&a),a}),null,null)),s["ɵdid"](9,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](10,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](11,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](13,671744,[[19,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](15,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](16,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wo)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Oo)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,So)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,13,0,"rgw_frontend_port"),t(e,16,0,"rgw_frontend_port"),t(e,18,0,n.serviceForm.showError("rgw_frontend_port",s["ɵnov"](e.parent,5),"pattern")),t(e,20,0,n.serviceForm.showError("rgw_frontend_port",s["ɵnov"](e.parent,5),"min")),t(e,22,0,n.serviceForm.showError("rgw_frontend_port",s["ɵnov"](e.parent,5),"max"))}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,8,0,s["ɵnov"](e,15).ngClassUntouched,s["ɵnov"](e,15).ngClassTouched,s["ɵnov"](e,15).ngClassPristine,s["ɵnov"](e,15).ngClassDirty,s["ɵnov"](e,15).ngClassValid,s["ɵnov"](e,15).ngClassInvalid,s["ɵnov"](e,15).ngClassPending,s["ɵnov"](e,16).validClass,s["ɵnov"](e,16).invalidClass)}))}function No(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function Co(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- No pools available --"]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function Ro(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select a pool --"]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),null)}function Ao(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.pool_name),t(e,2,0,e.context.$implicit.pool_name)}),(function(t,e){t(e,3,0,e.context.$implicit.pool_name)}))}function ko(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Eo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function Lo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value must be at least 1."]))],null,null)}function Do(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value cannot exceed 65535."]))],null,null)}function Po(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Mo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function qo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,121,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,21,{FormControlNames:1}),s["ɵqud"](603979776,22,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","pool"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pool"])),(t()(),s["ɵeld"](7,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","pool"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,10).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,10).onTouched()&&a),a}),null,null)),s["ɵdid"](9,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](10,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](12,671744,[[21,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](14,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,No)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Co)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ro)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ao)),s["ɵdid"](23,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ko)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](27,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,23,{FormControlNames:1}),s["ɵqud"](603979776,24,{messagesBlock:0}),(t()(),s["ɵeld"](30,0,null,0,12,"label",[["class","cd-col-form-label"],["for","trusted_ip_list"]],null,null,null,null,null)),(t()(),s["ɵeld"](31,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Trusted IPs"])),(t()(),s["ɵeld"](33,0,null,null,9,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](34,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](35,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Comma separated list of IP addresses."])),(t()(),s["ɵeld"](37,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,0,4,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please add the "])),(t()(),s["ɵeld"](40,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ceph Manager"])),(t()(),s["ɵted"](-1,null,[" IP addresses here, otherwise the iSCSI gateways can't be reached."])),(t()(),s["ɵeld"](43,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,7,"input",[["class","form-control"],["formControlName","trusted_ip_list"],["id","trusted_ip_list"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,46)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,46).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,46)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,46)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](45,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](46,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](48,671744,[[23,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](50,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](51,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](52,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](53,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,25,{FormControlNames:1}),s["ɵqud"](603979776,26,{messagesBlock:0}),(t()(),s["ɵeld"](56,0,null,0,1,"label",[["class","cd-col-form-label"],["for","api_port"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Port"])),(t()(),s["ɵeld"](58,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,8,"input",[["class","form-control"],["formControlName","api_port"],["id","api_port"],["max","65535"],["min","1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,61)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,61).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,61)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,61)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,62).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,62).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,62).onTouched()&&a),a}),null,null)),s["ɵdid"](60,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](61,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](62,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](64,671744,[[25,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](66,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](67,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Eo)),s["ɵdid"](69,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lo)),s["ɵdid"](71,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Do)),s["ɵdid"](73,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](74,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](75,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,27,{FormControlNames:1}),s["ɵqud"](603979776,28,{messagesBlock:0}),(t()(),s["ɵeld"](78,0,null,0,5,"label",[["class","cd-col-form-label"],["for","api_user"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](80,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](81,1),s["ɵpod"](82,{required:0}),(t()(),s["ɵted"](-1,null,["User"])),(t()(),s["ɵeld"](84,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](85,0,null,null,7,"input",[["class","form-control"],["formControlName","api_user"],["id","api_user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,87)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,87).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,87)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,87)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](86,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](87,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](89,671744,[[27,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](91,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](92,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Po)),s["ɵdid"](94,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](95,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](96,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,29,{FormControlNames:1}),s["ɵqud"](603979776,30,{messagesBlock:0}),(t()(),s["ɵeld"](99,0,null,0,5,"label",[["class","cd-col-form-label"],["for","api_password"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](101,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](102,1),s["ɵpod"](103,{required:0}),(t()(),s["ɵted"](-1,null,["Password"])),(t()(),s["ɵeld"](105,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](106,0,null,null,15,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](107,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","api_password"],["id","api_password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,109)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,109).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,109)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,109)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](108,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](109,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](111,671744,[[29,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](113,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](114,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](115,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](116,0,null,null,1,"button",[["cdPasswordButton","api_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,117).onClick()&&a),a}),null,null)),s["ɵdid"](117,81920,null,0,Qu.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](118,0,null,null,1,"button",[["cdCopy2ClipboardButton","api_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,119).onClick()&&a),a}),null,null)),s["ɵdid"](119,81920,null,0,Xu.a,[s.ElementRef,s.Renderer2,d.j,fe.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mo)),s["ɵdid"](121,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,12,0,"pool"),t(e,15,0,"pool"),t(e,17,0,null===n.pools),t(e,19,0,null!==n.pools&&0===n.pools.length),t(e,21,0,null!==n.pools&&n.pools.length>0),t(e,23,0,n.pools),t(e,25,0,n.serviceForm.showError("pool",s["ɵnov"](e.parent,5),"required")),t(e,27,0),t(e,48,0,"trusted_ip_list"),t(e,51,0,"trusted_ip_list"),t(e,53,0),t(e,64,0,"api_port"),t(e,67,0,"api_port"),t(e,69,0,n.serviceForm.showError("api_port",s["ɵnov"](e.parent,5),"pattern")),t(e,71,0,n.serviceForm.showError("api_port",s["ɵnov"](e.parent,5),"min")),t(e,73,0,n.serviceForm.showError("api_port",s["ɵnov"](e.parent,5),"max")),t(e,75,0);var a=t(e,82,0,t(e,81,0,"iscsi").includes(n.serviceForm.controls.service_type.value));t(e,80,0,"cd-col-form-label",a),t(e,89,0,"api_user"),t(e,92,0,"api_user"),t(e,94,0,n.serviceForm.showError("api_user",s["ɵnov"](e.parent,5),"required")),t(e,96,0);var r=t(e,103,0,t(e,102,0,"iscsi").includes(n.serviceForm.controls.service_type.value));t(e,101,0,"cd-col-form-label",r),t(e,111,0,"api_password"),t(e,114,0,"api_password"),t(e,117,0,"api_password"),t(e,119,0,"api_password"),t(e,121,0,n.serviceForm.showError("api_password",s["ɵnov"](e.parent,5),"required"))}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,8,0,s["ɵnov"](e,14).ngClassUntouched,s["ɵnov"](e,14).ngClassTouched,s["ɵnov"](e,14).ngClassPristine,s["ɵnov"](e,14).ngClassDirty,s["ɵnov"](e,14).ngClassValid,s["ɵnov"](e,14).ngClassInvalid,s["ɵnov"](e,14).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass),t(e,26,0,s["ɵnov"](e,27).hasErrors,s["ɵnov"](e,27).hasSuccess),t(e,44,0,s["ɵnov"](e,50).ngClassUntouched,s["ɵnov"](e,50).ngClassTouched,s["ɵnov"](e,50).ngClassPristine,s["ɵnov"](e,50).ngClassDirty,s["ɵnov"](e,50).ngClassValid,s["ɵnov"](e,50).ngClassInvalid,s["ɵnov"](e,50).ngClassPending,s["ɵnov"](e,51).validClass,s["ɵnov"](e,51).invalidClass),t(e,52,0,s["ɵnov"](e,53).hasErrors,s["ɵnov"](e,53).hasSuccess),t(e,59,0,s["ɵnov"](e,66).ngClassUntouched,s["ɵnov"](e,66).ngClassTouched,s["ɵnov"](e,66).ngClassPristine,s["ɵnov"](e,66).ngClassDirty,s["ɵnov"](e,66).ngClassValid,s["ɵnov"](e,66).ngClassInvalid,s["ɵnov"](e,66).ngClassPending,s["ɵnov"](e,67).validClass,s["ɵnov"](e,67).invalidClass),t(e,74,0,s["ɵnov"](e,75).hasErrors,s["ɵnov"](e,75).hasSuccess),t(e,85,0,s["ɵnov"](e,91).ngClassUntouched,s["ɵnov"](e,91).ngClassTouched,s["ɵnov"](e,91).ngClassPristine,s["ɵnov"](e,91).ngClassDirty,s["ɵnov"](e,91).ngClassValid,s["ɵnov"](e,91).ngClassInvalid,s["ɵnov"](e,91).ngClassPending,s["ɵnov"](e,92).validClass,s["ɵnov"](e,92).invalidClass),t(e,95,0,s["ɵnov"](e,96).hasErrors,s["ɵnov"](e,96).hasSuccess),t(e,107,0,s["ɵnov"](e,113).ngClassUntouched,s["ɵnov"](e,113).ngClassTouched,s["ɵnov"](e,113).ngClassPristine,s["ɵnov"](e,113).ngClassDirty,s["ɵnov"](e,113).ngClassValid,s["ɵnov"](e,113).ngClassInvalid,s["ɵnov"](e,113).ngClassPending,s["ɵnov"](e,114).validClass,s["ɵnov"](e,114).invalidClass)}))}function jo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Fo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Invalid SSL certificate."]))],null,null)}function Vo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,33,{FormControlNames:1}),s["ɵqud"](603979776,34,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","ssl_cert"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Certificate"])),(t()(),s["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](8,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](-1,0,["The SSL certificate in PEM format."])),(t()(),s["ɵeld"](10,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,7,"textarea",[["class","form-control resize-vertical text-monospace text-pre"],["formControlName","ssl_cert"],["id","ssl_cert"],["rows","5"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,12)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,12).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,12)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,12)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](14,671744,[[33,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](16,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](17,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["              "])),(t()(),s["ɵeld"](19,0,null,null,1,"input",[["type","file"]],null,[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.fileUpload(n.target.files,"ssl_cert")&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,jo)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fo)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,14,0,"ssl_cert"),t(e,17,0,"ssl_cert"),t(e,22,0,n.serviceForm.showError("ssl_cert",s["ɵnov"](e.parent.parent,5),"required")),t(e,24,0,n.serviceForm.showError("ssl_cert",s["ɵnov"](e.parent.parent,5),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending,s["ɵnov"](e,17).validClass,s["ɵnov"](e,17).invalidClass)}))}function Go(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Bo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Invalid SSL private key."]))],null,null)}function zo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,35,{FormControlNames:1}),s["ɵqud"](603979776,36,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","ssl_key"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Private key"])),(t()(),s["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](8,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](-1,0,["The SSL private key in PEM format."])),(t()(),s["ɵeld"](10,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,7,"textarea",[["class","form-control resize-vertical text-monospace text-pre"],["formControlName","ssl_key"],["id","ssl_key"],["rows","5"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,12)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,12).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,12)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,12)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](14,671744,[[35,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](16,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](17,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["              "])),(t()(),s["ɵeld"](19,0,null,null,1,"input",[["type","file"]],null,[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.fileUpload(n.target.files,"ssl_key")&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Go)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bo)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,14,0,"ssl_key"),t(e,17,0,"ssl_key"),t(e,22,0,n.serviceForm.showError("ssl_key",s["ɵnov"](e.parent.parent,5),"required")),t(e,24,0,n.serviceForm.showError("ssl_key",s["ɵnov"](e.parent.parent,5),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending,s["ɵnov"](e,17).validClass,s["ɵnov"](e,17).invalidClass)}))}function Yo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,31,{FormControlNames:1}),s["ɵqud"](603979776,32,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,11,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","ssl"],["id","ssl"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,9).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](11,671744,[[31,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](15,0,null,null,1,"label",[["class","custom-control-label"],["for","ssl"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["SSL"])),(t()(),s["ɵand"](16777216,null,null,1,null,Vo)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zo)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0),t(e,11,0,"ssl"),t(e,14,0,"ssl"),t(e,18,0,n.serviceForm.controls.ssl.value),t(e,20,0,n.serviceForm.controls.ssl.value)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function Ho(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Xs.a,[]),(t()(),s["ɵeld"](2,0,null,null,100,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,99,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,5).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit()&&a),a}),null,null)),s["ɵdid"](4,16384,null,0,K.G,[],null,null),s["ɵdid"](5,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](7,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](8,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](9,0,null,null,93,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](11,null,[""," ",""])),s["ɵppd"](12,1),s["ɵppd"](13,1),(t()(),s["ɵeld"](14,0,null,null,79,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](16,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](19,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","service_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type"])),(t()(),s["ɵeld"](21,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","service_type"],["id","service_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,24).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,24).onTouched()&&a),a}),null,null)),s["ɵdid"](23,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](24,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](26,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](28,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](29,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](30,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](31,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](32,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select a service type --"])),(t()(),s["ɵand"](16777216,null,null,1,null,io)),s["ɵdid"](35,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,so)),s["ɵdid"](37,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](38,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](39,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](42,0,null,0,5,"label",[["class","cd-col-form-label"],["for","service_id"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](44,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](45,4),s["ɵpod"](46,{required:0}),(t()(),s["ɵted"](-1,null,["Id"])),(t()(),s["ɵeld"](48,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,7,"input",[["class","form-control"],["formControlName","service_id"],["id","service_id"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,51)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,51).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,51)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,51)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](50,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](51,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](53,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](55,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](56,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,uo)),s["ɵdid"](58,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,oo)),s["ɵdid"](60,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](61,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](62,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](65,0,null,0,11,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](66,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](67,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","unmanaged"],["id","unmanaged"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,69).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,69).onTouched()&&a),a}),null,null)),s["ɵdid"](68,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](69,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](71,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](73,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](74,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](75,0,null,null,1,"label",[["class","custom-control-label"],["for","unmanaged"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Unmanaged"])),(t()(),s["ɵand"](16777216,null,null,1,null,lo)),s["ɵdid"](78,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fo)),s["ɵdid"](80,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ho)),s["ɵdid"](82,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bo)),s["ɵdid"](84,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,To)),s["ɵdid"](86,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Io)),s["ɵdid"](88,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qo)),s["ɵdid"](90,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,2,null,Yo)),s["ɵdid"](92,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](93,2),(t()(),s["ɵeld"](94,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](95,0,null,null,7,"div",[["class","text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](96,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),$s.b,$s.a)),s["ɵdid"](97,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](98,0,[""," "," "])),s["ɵppd"](99,1),s["ɵppd"](100,1),(t()(),s["ɵeld"](101,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](102,49152,null,0,Qs.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,5,0,n.serviceForm),t(e,8,0,n.serviceForm),t(e,16,0),t(e,26,0,"service_type"),t(e,29,0,"service_type"),t(e,31,0,null),t(e,32,0,null),t(e,35,0,n.serviceTypes),t(e,37,0,n.serviceForm.showError("service_type",s["ɵnov"](e,5),"required")),t(e,39,0);var a=t(e,46,0,t(e,45,0,"mds","rgw","nfs","iscsi").includes(n.serviceForm.controls.service_type.value));t(e,44,0,"cd-col-form-label",a),t(e,53,0,"service_id"),t(e,56,0,"service_id"),t(e,58,0,n.serviceForm.showError("service_id",s["ɵnov"](e,5),"required")),t(e,60,0,n.serviceForm.showError("service_id",s["ɵnov"](e,5),"rgwPattern")),t(e,62,0),t(e,71,0,"unmanaged"),t(e,74,0,"unmanaged"),t(e,78,0,!n.serviceForm.controls.unmanaged.value),t(e,80,0,!n.serviceForm.controls.unmanaged.value&&"label"===n.serviceForm.controls.placement.value),t(e,82,0,!n.serviceForm.controls.unmanaged.value&&"hosts"===n.serviceForm.controls.placement.value),t(e,84,0,!n.serviceForm.controls.unmanaged.value),t(e,86,0,!n.serviceForm.controls.unmanaged.value&&"nfs"===n.serviceForm.controls.service_type.value),t(e,88,0,!n.serviceForm.controls.unmanaged.value&&"rgw"===n.serviceForm.controls.service_type.value),t(e,90,0,!n.serviceForm.controls.unmanaged.value&&"iscsi"===n.serviceForm.controls.service_type.value);var r=!n.serviceForm.controls.unmanaged.value&&t(e,93,0,"rgw","iscsi").includes(n.serviceForm.controls.service_type.value);t(e,92,0,r),t(e,97,0,n.serviceForm)}),(function(t,e){var n=e.component;t(e,3,0,s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending);var a=s["ɵunv"](e,11,0,t(e,12,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,11,1,t(e,13,0,s["ɵnov"](e,1),n.resource));t(e,11,0,a,r),t(e,15,0,s["ɵnov"](e,16).hasErrors,s["ɵnov"](e,16).hasSuccess),t(e,22,0,s["ɵnov"](e,28).ngClassUntouched,s["ɵnov"](e,28).ngClassTouched,s["ɵnov"](e,28).ngClassPristine,s["ɵnov"](e,28).ngClassDirty,s["ɵnov"](e,28).ngClassValid,s["ɵnov"](e,28).ngClassInvalid,s["ɵnov"](e,28).ngClassPending,s["ɵnov"](e,29).validClass,s["ɵnov"](e,29).invalidClass),t(e,38,0,s["ɵnov"](e,39).hasErrors,s["ɵnov"](e,39).hasSuccess),t(e,49,0,s["ɵnov"](e,55).ngClassUntouched,s["ɵnov"](e,55).ngClassTouched,s["ɵnov"](e,55).ngClassPristine,s["ɵnov"](e,55).ngClassDirty,s["ɵnov"](e,55).ngClassValid,s["ɵnov"](e,55).ngClassInvalid,s["ɵnov"](e,55).ngClassPending,s["ɵnov"](e,56).validClass,s["ɵnov"](e,56).invalidClass),t(e,61,0,s["ɵnov"](e,62).hasErrors,s["ɵnov"](e,62).hasSuccess),t(e,67,0,s["ɵnov"](e,73).ngClassUntouched,s["ɵnov"](e,73).ngClassTouched,s["ɵnov"](e,73).ngClassPristine,s["ɵnov"](e,73).ngClassDirty,s["ɵnov"](e,73).ngClassValid,s["ɵnov"](e,73).ngClassInvalid,s["ɵnov"](e,73).ngClassPending,s["ɵnov"](e,74).validClass,s["ɵnov"](e,74).invalidClass);var i=s["ɵunv"](e,98,0,t(e,99,0,s["ɵnov"](e,0),n.action)),u=s["ɵunv"](e,98,1,t(e,100,0,s["ɵnov"](e,1),n.resource));t(e,98,0,i,u)}))}function Uo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-service-form",[],null,null,null,Ho,ro)),s["ɵdid"](1,114688,null,0,ao,[St.b,_i,no.a,wi,fe.a,to.a,Et.m,Ds.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Wo=s["ɵccf"]("cd-service-form",ao,Uo,{},{},[]),Ko=n("xSw7"),$o=n("GgAd"),Jo=n("FFMq"),Zo=n("j8L6"),Qo=n("b5OY"),Xo=n("pxLl");class tl{constructor(){this.last={}}ngOnChanges(){this.render()}hexdigits(t){const e=Math.floor(255*t).toString(16);return 1===e.length?"0"+e:e}hexcolor(t,e,n){return"#"+this.hexdigits(t)+this.hexdigits(e)+this.hexdigits(n)}render(){if(!this.histogram)return;let t=0;X.each(this.histogram.values,(e,n)=>{X.each(e,(e,a)=>{let r;r=this.last&&this.last[n]&&this.last[n][a]?e-this.last[n][a]:e,t=Math.max(t,r)})}),this.valuesStyle=this.histogram.values.map((e,n)=>e.map((e,a)=>{const r=t?(this.last&&this.last[n]&&this.last[n][a]?e-this.last[n][a]:e)/t:0;return{backgroundColor:this.hexcolor(1-r,r,0)}})),this.last=this.histogram.values}}var el=s["ɵcrt"]({encapsulation:0,styles:[["table[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]{height:10px}table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{width:10px;height:10px}"]],data:{}});function nl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function al(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,nl)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function rl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"table",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,al)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.valuesStyle)}),null)}class il{constructor(t,e){this.osdService=t,this.authStorageService=e,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){X.get(this,"osd.id")!==X.get(this,"selection.id")&&(this.osd=this.selection),X.isNumber(X.get(this,"osd.id"))&&this.refresh()}refresh(){this.osdService.getDetails(this.osd.id).subscribe(t=>{this.osd.details=t,this.osd.histogram_failed="",X.isObject(t.histogram)||(this.osd.histogram_failed=t.histogram,this.osd.details.histogram=void 0)})}}var sl=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ul(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.refresh()&&a),a}),Ai.b,Ai.a)),s["ɵdid"](1,638976,null,0,ki.a,[He.a],{data:[0,"data"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,1,0,null==n.osd||null==n.osd.details?null:n.osd.details.osd_metadata)}),null)}function ol(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Metadata not available"]))],(function(t,e){t(e,1,0,"warning")}),null)}function ll(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-performance-counter",[["serviceType","osd"]],null,null,null,Zo.b,Zo.a)),s["ɵdid"](1,114688,null,0,Qo.a,[Xo.a,fe.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],(function(t,e){var n=e.component;t(e,1,0,"osd",null==n.osd?null:n.osd.id)}),null)}function dl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](2,0,["Histogram not available: ",""]))],(function(t,e){t(e,1,0,"warning")}),(function(t,e){t(e,2,0,e.component.osd.histogram_failed)}))}function cl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Writes"])),(t()(),s["ɵeld"](4,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,rl,el)),s["ɵdid"](5,573440,null,0,tl,[],{histogram:[0,"histogram"]},null),(t()(),s["ɵeld"](6,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Reads"])),(t()(),s["ɵeld"](9,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,rl,el)),s["ɵdid"](10,573440,null,0,tl,[],{histogram:[0,"histogram"]},null)],(function(t,e){var n=e.component;t(e,5,0,null==n.osd||null==n.osd.details||null==n.osd.details.histogram||null==n.osd.details.histogram.osd?null:n.osd.details.histogram.osd.op_w_latency_in_bytes_histogram),t(e,10,0,null==n.osd||null==n.osd.details||null==n.osd.details.histogram||null==n.osd.details.histogram.osd?null:n.osd.details.histogram.osd.op_r_latency_out_bytes_histogram)}),null)}function fl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","CrAHE0iZz"]],null,null,null,$r.b,$r.a)),s["ɵdid"](3,638976,null,0,Jr.a,[ve.b,Xt.a,fe.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"osd-device-details?var-osd=osd."+n.osd.id,"three","CrAHE0iZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function hl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,30,"tabset",[["id","tabset-osd-details"]],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Devices"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-device-list",[],null,null,null,bs,ss)),s["ɵdid"](5,638976,null,0,is,[wi,fe.a,i.DatePipe,Pi],{osdId:[0,"osdId"]},null),(t()(),s["ɵeld"](6,0,null,0,3,"tab",[["heading","Attributes (OSD map)"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"cd-table-key-value",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](9,638976,null,0,ki.a,[He.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](10,0,null,0,4,"tab",[["heading","Metadata"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](11,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ul)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noMetaData",2]],null,0,null,ol)),(t()(),s["ɵeld"](15,0,null,0,3,"tab",[["heading","Device health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](16,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](17,0,null,null,1,"cd-smart-list",[],null,null,null,rs,qi)),s["ɵdid"](18,638976,null,0,Mi,[fe.a,Pi,wi],{osdId:[0,"osdId"]},null),(t()(),s["ɵeld"](19,0,null,0,3,"tab",[["heading","Performance counter"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](20,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ll)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](23,0,null,0,5,"tab",[["heading","Histogram"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](24,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dl)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cl)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,fl)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Devices"),t(e,5,0,null==n.osd?null:n.osd.id),t(e,7,0,"Attributes (OSD map)"),t(e,9,0,null==n.osd||null==n.osd.details?null:n.osd.details.osd_map),t(e,11,0,"Metadata"),t(e,13,0,null==n.osd||null==n.osd.details?null:n.osd.details.osd_metadata,s["ɵnov"](e,14)),t(e,16,0,"Device health"),t(e,18,0,null==n.osd?null:n.osd.id),t(e,20,0,"Performance counter"),t(e,22,0,null==n.osd?null:n.osd.details),t(e,24,0,"Histogram"),t(e,26,0,null==n.osd?null:n.osd.histogram_failed),t(e,28,0,null==n.osd||null==n.osd.details?null:n.osd.details.histogram),t(e,30,0,n.grafanaPermission.read)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby),t(e,10,0,s["ɵnov"](e,11).id,s["ɵnov"](e,11).active,s["ɵnov"](e,11).addClass,s["ɵnov"](e,11).role,s["ɵnov"](e,11).ariaLabelledby),t(e,15,0,s["ɵnov"](e,16).id,s["ɵnov"](e,16).active,s["ɵnov"](e,16).addClass,s["ɵnov"](e,16).role,s["ɵnov"](e,16).ariaLabelledby),t(e,19,0,s["ɵnov"](e,20).id,s["ɵnov"](e,20).active,s["ɵnov"](e,20).addClass,s["ɵnov"](e,20).role,s["ɵnov"](e,20).ariaLabelledby),t(e,23,0,s["ɵnov"](e,24).id,s["ɵnov"](e,24).active,s["ɵnov"](e,24).addClass,s["ɵnov"](e,24).role,s["ɵnov"](e,24).ariaLabelledby)}))}function gl(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,hl)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}function pl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-details",[],null,null,null,gl,sl)),s["ɵdid"](1,573440,null,0,il,[Pi,Z.a],null,null)],null,null)}var bl=s["ɵccf"]("cd-osd-details",il,pl,{selection:"selection"},{},[]),ml=n("cp0P"),yl=n("OLbh");class vl{constructor(t,e,n,a,r){this.activeModal=t,this.authStorageService=e,this.osdService=n,this.notificationService=a,this.i18n=r,this.initialSelection=[],this.osdFlagsForm=new K.k({}),this.flags=[{code:"noup",name:this.i18n("No Up"),description:this.i18n("OSDs are not allowed to start"),value:!1,clusterWide:!1,indeterminate:!1},{code:"nodown",name:this.i18n("No Down"),description:this.i18n("OSD failure reports are being ignored, such that the monitors will not mark OSDs down"),value:!1,clusterWide:!1,indeterminate:!1},{code:"noin",name:this.i18n("No In"),description:this.i18n("OSDs that were previously marked out will not be marked back in when they start"),value:!1,clusterWide:!1,indeterminate:!1},{code:"noout",name:this.i18n("No Out"),description:this.i18n("OSDs will not automatically be marked out after the configured interval"),value:!1,clusterWide:!1,indeterminate:!1}],this.clusterWideTooltip=this.i18n("The flag has been enabled for the entire cluster."),this.permissions=this.authStorageService.getPermissions()}ngOnInit(){const t=this.selected.length;this.osdService.getFlags().subscribe(e=>{const n=this.getActivatedIndivFlags();this.flags.forEach(a=>{const r=n[a.code];e.includes(a.code)&&(a.clusterWide=!0),r===t?a.value=!0:r>0&&(a.indeterminate=!0)}),this.initialSelection=X.cloneDeep(this.flags)})}getActivatedIndivFlags(){const t={};return this.flags.forEach(e=>{t[e.code]=0}),[].concat(...this.selected.map(t=>t.state)).map(e=>{Object.keys(t).includes(e)&&(t[e]=t[e]+1)}),t}changeValue(t){t.value=!t.value,t.indeterminate=!1}resetSelection(){this.flags=X.cloneDeep(this.initialSelection)}submitAction(){const t={};this.flags.forEach(e=>{t[e.code]=e.indeterminate?null:e.value});const e=this.selected.map(t=>t.osd);this.osdService.updateIndividualFlags(t,e).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n("Updated OSD Flags")),this.activeModal.hide()},()=>{this.activeModal.hide()})}}class xl{constructor(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.osdService=n,this.notificationService=a,this.i18n=r,this.osdFlagsForm=new K.k({}),this.allFlags={noin:{code:"noin",name:this.i18n("No In"),value:!1,description:this.i18n("OSDs that were previously marked out will not be marked back in when they start")},noout:{code:"noout",name:this.i18n("No Out"),value:!1,description:this.i18n("OSDs will not automatically be marked out after the configured interval")},noup:{code:"noup",name:this.i18n("No Up"),value:!1,description:this.i18n("OSDs are not allowed to start")},nodown:{code:"nodown",name:this.i18n("No Down"),value:!1,description:this.i18n("OSD failure reports are being ignored, such that the monitors will not mark OSDs down")},pause:{code:"pause",name:this.i18n("Pause"),value:!1,description:this.i18n("Pauses reads and writes")},noscrub:{code:"noscrub",name:this.i18n("No Scrub"),value:!1,description:this.i18n("Scrubbing is disabled")},"nodeep-scrub":{code:"nodeep-scrub",name:this.i18n("No Deep Scrub"),value:!1,description:this.i18n("Deep Scrubbing is disabled")},nobackfill:{code:"nobackfill",name:this.i18n("No Backfill"),value:!1,description:this.i18n("Backfilling of PGs is suspended")},norebalance:{code:"norebalance",name:this.i18n("No Rebalance"),value:!1,description:this.i18n("OSD will choose not to backfill unless PG is also degraded")},norecover:{code:"norecover",name:this.i18n("No Recover"),value:!1,description:this.i18n("Recovery of PGs is suspended")},sortbitwise:{code:"sortbitwise",name:this.i18n("Bitwise Sort"),value:!1,description:this.i18n("Use bitwise sort"),disabled:!0},purged_snapdirs:{code:"purged_snapdirs",name:this.i18n("Purged Snapdirs"),value:!1,description:this.i18n("OSDs have converted snapsets"),disabled:!0},recovery_deletes:{code:"recovery_deletes",name:this.i18n("Recovery Deletes"),value:!1,description:this.i18n("Deletes performed during recovery instead of peering"),disabled:!0},pglog_hardlimit:{code:"pglog_hardlimit",name:this.i18n("PG Log Hard Limit"),value:!1,description:this.i18n("Puts a hard limit on pg log length"),disabled:!0}},this.unknownFlags=[],this.permissions=this.authStorageService.getPermissions()}ngOnInit(){this.osdService.getFlags().subscribe(t=>{t.forEach(t=>{this.allFlags[t]?this.allFlags[t].value=!0:this.unknownFlags.push(t)}),this.flags=X.toArray(this.allFlags)})}submitAction(){const t=this.flags.filter(t=>t.value).map(t=>t.code).concat(this.unknownFlags);this.osdService.updateFlags(t).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n("Updated OSD Flags")),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}var _l=n("MuvH");let Tl=(()=>{class t{static getType(t){const e=X.find(this.knownTypes,e=>e.name===t);if(void 0!==e)return e;throw new Error('Found unknown type "'+t+'" for config option.')}static getTypeValidators(e){const n=t.getType(e.type);if("bool"===n.name||"str"===n.name)return;const a={validators:[],patternHelpText:n.patternHelpText};return n.isNumberType?(e.max&&""!==e.max&&(a.max=e.max,a.validators.push(K.B.max(e.max))),e.min&&""!==e.min?(a.min=e.min,a.validators.push(K.B.min(e.min))):"defaultMin"in n&&(a.min=n.defaultMin,a.validators.push(K.B.min(n.defaultMin))),a.validators.push("float"===e.type?eu.a.decimalNumber():eu.a.number(n.allowsNegative))):"addr"===e.type?a.validators=[eu.a.ip()]:"uuid"===e.type&&(a.validators=[eu.a.uuid()]),a}static getTypeStep(t,e){if(["uint","int","size","secs"].includes(t))return 1;if("float"===t){if(null!==e&&-1!==e.toString().indexOf(".")){const t=e.toString().split(".");return Math.pow(10,-t[1].length)}return.1}}}return t.knownTypes=[{name:"uint",inputType:"number",humanReadable:"Unsigned integer value",defaultMin:0,patternHelpText:"The entered value needs to be an unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"int",inputType:"number",humanReadable:"Integer value",patternHelpText:"The entered value needs to be a number.",isNumberType:!0,allowsNegative:!0},{name:"size",inputType:"number",humanReadable:"Unsigned integer value (>=16bit)",defaultMin:0,patternHelpText:"The entered value needs to be a unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"secs",inputType:"number",humanReadable:"Number of seconds",defaultMin:1,patternHelpText:"The entered value needs to be a number >= 1.",isNumberType:!0,allowsNegative:!1},{name:"float",inputType:"number",humanReadable:"Double value",patternHelpText:"The entered value needs to be a number or decimal.",isNumberType:!0,allowsNegative:!0},{name:"str",inputType:"text",humanReadable:"Text",isNumberType:!1},{name:"addr",inputType:"text",humanReadable:"IPv4 or IPv6 address",patternHelpText:"The entered value needs to be a valid IP address.",isNumberType:!1},{name:"uuid",inputType:"text",humanReadable:"UUID",patternHelpText:"The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8",isNumberType:!1},{name:"bool",inputType:"checkbox",humanReadable:"Boolean value",isNumberType:!1}],t})();class wl{constructor(t){this.configService=t,this.optionNames=[],this.optionsForm=new tu.a({}),this.optionsFormDir=new K.t([],[]),this.optionsFormGroupName="",this.optionsFormShowReset=!0,this.icons=pt.a,this.options=[],this.optionsFormGroup=new tu.a({})}static optionNameToText(t){const e=["mon","mgr","osd","mds","client"];return t.split("_").filter((t,n)=>0!==n||!e.includes(t)).map(t=>t.charAt(0).toUpperCase()+t.substring(1)).join(" ")}ngOnInit(){this.createForm(),this.loadStoredData()}createForm(){this.optionsForm.addControl(this.optionsFormGroupName,this.optionsFormGroup),this.optionNames.forEach(t=>{this.optionsFormGroup.addControl(t,new K.i(null))})}getStep(t,e){return Tl.getTypeStep(t,e)}loadStoredData(){this.configService.filter(this.optionNames).subscribe(t=>{this.options=t.map(t=>{const e=this.optionsForm.get(t.name),n=Tl.getTypeValidators(t);return t.additionalTypeInfo=Tl.getType(t.type),t.text=wl.optionNameToText(t.name),t.value=X.find(t.value,t=>"osd"===t.section),t.value&&e.setValue("bool"===t.additionalTypeInfo.name?"true"===t.value.value:t.value.value),n&&(t.patternHelpText=n.patternHelpText,"max"in n&&""!==n.max&&(t.maxValue=n.max),"min"in n&&""!==n.min&&(t.minValue=n.min),e.setValidators(n.validators)),t})})}saveValues(){const t={};return this.optionNames.forEach(e=>{const n=this.optionsForm.getValue(e);null!==n&&""!==n&&(t[e]={section:"osd",value:n})}),this.configService.bulkCreate({options:t})}resetValue(t){this.configService.delete(t,"osd").subscribe(()=>{this.optionsForm.get(t).reset()})}}let Ol=(()=>{class t{}return t.basicOptions=["osd_scrub_during_recovery","osd_scrub_begin_hour","osd_scrub_end_hour","osd_scrub_begin_week_day","osd_scrub_end_week_day","osd_scrub_min_interval","osd_scrub_max_interval","osd_deep_scrub_interval","osd_scrub_auto_repair","osd_max_scrubs","osd_scrub_priority","osd_scrub_sleep"],t.advancedOptions=["osd_scrub_auto_repair_num_errors","osd_debug_deep_scrub_sleep","osd_deep_scrub_keys","osd_deep_scrub_large_omap_object_key_threshold","osd_deep_scrub_large_omap_object_value_sum_threshold","osd_deep_scrub_randomize_ratio","osd_deep_scrub_stride","osd_deep_scrub_update_digest_min_age","osd_requested_scrub_priority","osd_scrub_backoff_ratio","osd_scrub_chunk_max","osd_scrub_chunk_min","osd_scrub_cost","osd_scrub_interval_randomize_ratio","osd_scrub_invalid_stats","osd_scrub_load_threshold","osd_scrub_max_preemptions"],t})();class Sl{constructor(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.notificationService=n,this.i18n=a,this.actionLabels=r,this.basicOptions=Ol.basicOptions,this.advancedOptions=Ol.advancedOptions,this.advancedEnabled=!1,this.osdPgScrubForm=new tu.a({}),this.resource=this.i18n("PG scrub options"),this.action=this.actionLabels.EDIT,this.permissions=this.authStorageService.getPermissions()}submitAction(){const t=[this.basicOptionsValues.saveValues()];this.advancedOptionsValues&&t.push(this.advancedOptionsValues.saveValues()),Object(ml.a)(t).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n("Updated PG scrub options")),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}class Il{constructor(t,e,n,a,r,i){this.bsModalRef=t,this.authStorageService=e,this.configService=n,this.notificationService=a,this.i18n=r,this.osdService=i,this.priorities=[],this.priorityAttrs={},this.permissions=this.authStorageService.getPermissions(),this.priorities=this.osdService.osdRecvSpeedModalPriorities.KNOWN_PRIORITIES,this.osdRecvSpeedForm=new tu.a({priority:new K.i(null,{validators:[K.B.required]}),customizePriority:new K.i(!1)}),this.priorityAttrs={osd_max_backfills:{text:this.i18n("Max Backfills"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_active:{text:this.i18n("Recovery Max Active"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_single_start:{text:this.i18n("Recovery Max Single Start"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_sleep:{text:this.i18n("Recovery Sleep"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0}},Object.keys(this.priorityAttrs).forEach(t=>{this.osdRecvSpeedForm.addControl(t,new K.i(null,{validators:[K.B.required]}))})}ngOnInit(){this.configService.filter(Object.keys(this.priorityAttrs)).subscribe(t=>{const e=this.getCurrentValues(t);this.detectPriority(e.values,t=>{this.setPriority(t)}),this.setDescription(e.configOptions),this.setValidators(e.configOptions)})}detectPriority(t,e){const n=X.find(this.priorities,e=>X.isEqual(e.values,t));return this.osdRecvSpeedForm.controls.customizePriority.setValue(!1),n?e(n):4===Object.entries(t).length?(this.osdRecvSpeedForm.controls.customizePriority.setValue(!0),e(Object({name:"custom",text:this.i18n("Custom"),values:t}))):e(this.priorities[0])}getCurrentValues(t){const e={values:{},configOptions:[]};return t.forEach(t=>{e.configOptions.push(t),"value"in t?t.value.forEach(n=>{"osd"===n.section&&(e.values[t.name]=Number(n.value))}):"default"in t&&null!==t.default&&(e.values[t.name]=Number(t.default))}),e}setDescription(t){t.forEach(t=>{""!==t.desc&&(this.priorityAttrs[t.name].desc=t.desc)})}setPriority(t){const e=X.find(this.priorities,t=>"custom"===t.name);"custom"===t.name?e||this.priorities.push(t):e&&this.priorities.splice(this.priorities.indexOf(e),1),this.osdRecvSpeedForm.controls.priority.setValue(t.name),Object.entries(t.values).forEach(([t,e])=>{this.osdRecvSpeedForm.controls[t].setValue(e)})}setValidators(t){t.forEach(t=>{const e=Tl.getTypeValidators(t);e?(e.validators.push(K.B.required),"max"in e&&""!==e.max&&(this.priorityAttrs[t.name].maxValue=e.max),"min"in e&&""!==e.min&&(this.priorityAttrs[t.name].minValue=e.min),this.priorityAttrs[t.name].patternHelpText=e.patternHelpText,this.osdRecvSpeedForm.controls[t.name].setValidators(e.validators)):this.osdRecvSpeedForm.controls[t.name].setValidators(K.B.required)})}onCustomizePriorityChange(){const t={};if(Object.keys(this.priorityAttrs).forEach(e=>{t[e]=this.osdRecvSpeedForm.getValue(e)}),this.osdRecvSpeedForm.getValue("customizePriority")){const e={name:"custom",text:this.i18n("Custom"),values:t};this.setPriority(e)}else this.detectPriority(t,t=>{this.setPriority(t)})}onPriorityChange(t){const e=X.find(this.priorities,e=>e.name===t)||this.priorities[0];this.osdRecvSpeedForm.get("customizePriority").setValue(!1),this.setPriority(e)}submitAction(){const t={};Object.keys(this.priorityAttrs).forEach(e=>{t[e]={section:"osd",value:this.osdRecvSpeedForm.getValue(e)}}),this.configService.bulkCreate({options:t}).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n('Updated OSD recovery speed priority "{{value}}"',{value:this.osdRecvSpeedForm.getValue("priority")})),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}class Nl{constructor(t,e,n){this.bsModalRef=t,this.osdService=e,this.fb=n,this.currentWeight=1}get weight(){return this.reweightForm.get("weight")}ngOnInit(){this.reweightForm=this.fb.group({weight:this.fb.control(this.currentWeight,[K.B.required,K.B.max(1),K.B.min(0)])})}reweight(){this.osdService.reweight(this.osdId,this.reweightForm.value.weight).subscribe(()=>this.bsModalRef.hide())}}class Cl{constructor(t,e,n,a,r){this.bsModalRef=t,this.osdService=e,this.notificationService=n,this.i18n=a,this.joinPipe=r,this.selected=[]}ngOnInit(){this.scrubForm=new K.k({})}scrub(){Object(ml.a)(this.selected.map(t=>this.osdService.scrub(t,this.deep))).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n("{{operation}} was initialized in the following OSD(s): {{id}}",{operation:this.deep?"Deep scrub":"Scrub",id:this.joinPipe.transform(this.selected)})),this.bsModalRef.hide()},()=>this.bsModalRef.hide())}}const Rl=new Is.a("osd");class Al extends Ns.a{constructor(t,e,n,a,r,i,s,u,o,l,d){super(),this.authStorageService=t,this.osdService=e,this.dimlessBinaryPipe=n,this.modalService=a,this.i18n=r,this.urlBuilder=i,this.router=s,this.depCheckerService=u,this.taskWrapper=o,this.actionLabels=l,this.notificationService=d,this.icons=pt.a,this.selection=new li.a,this.osds=[],this.disabledFlags=["sortbitwise","purged_snapdirs","recovery_deletes","pglog_hardlimit"],this.indivFlagNames=["noup","nodown","noin","noout"],this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:pt.a.add,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.CREATE,this.i18n("OSD"),()=>{this.router.navigate([this.urlBuilder.getCreate()])})},canBePrimary:t=>!t.hasSelection},{name:this.actionLabels.EDIT,permission:"update",icon:pt.a.edit,click:()=>this.editAction()},{name:this.actionLabels.FLAGS,permission:"update",icon:pt.a.flag,click:()=>this.configureFlagsIndivAction(),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.SCRUB,permission:"update",icon:pt.a.analyse,click:()=>this.scrubAction(!1),disable:()=>!this.hasOsdSelected,canBePrimary:t=>t.hasSelection},{name:this.actionLabels.DEEP_SCRUB,permission:"update",icon:pt.a.deepCheck,click:()=>this.scrubAction(!0),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.REWEIGHT,permission:"update",click:()=>this.reweight(),disable:()=>!this.hasOsdSelected||!this.selection.hasSingleSelection,icon:pt.a.reweight},{name:this.actionLabels.MARK_OUT,permission:"update",click:()=>this.showConfirmationModal(this.i18n("out"),this.osdService.markOut),disable:()=>this.isNotSelectedOrInState("out"),icon:pt.a.left},{name:this.actionLabels.MARK_IN,permission:"update",click:()=>this.showConfirmationModal(this.i18n("in"),this.osdService.markIn),disable:()=>this.isNotSelectedOrInState("in"),icon:pt.a.right},{name:this.actionLabels.MARK_DOWN,permission:"update",click:()=>this.showConfirmationModal(this.i18n("down"),this.osdService.markDown),disable:()=>this.isNotSelectedOrInState("down"),icon:pt.a.down},{name:this.actionLabels.MARK_LOST,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("Mark"),this.i18n("OSD lost"),this.i18n("marked lost"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",this.osdService.markLost),disable:()=>this.isNotSelectedOrInState("up"),icon:pt.a.flatten},{name:this.actionLabels.PURGE,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("Purge"),this.i18n("OSD"),this.i18n("purged"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",t=>(this.selection=new li.a,this.osdService.purge(t))),disable:()=>this.isNotSelectedOrInState("up"),icon:pt.a.erase},{name:this.actionLabels.DESTROY,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("destroy"),this.i18n("OSD"),this.i18n("destroyed"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",t=>(this.selection=new li.a,this.osdService.destroy(t))),disable:()=>this.isNotSelectedOrInState("up"),icon:pt.a.destroyCircle},{name:this.actionLabels.DELETE,permission:"delete",click:()=>this.delete(),disable:()=>!this.hasOsdSelected,icon:pt.a.destroy}]}static collectStates(t){const e=[t.in?"in":"out"];return t.up?e.push("up"):t.state.includes("destroyed")?e.push("destroyed"):e.push("down"),e}ngOnInit(){this.clusterWideActions=[{name:this.i18n("Flags"),icon:pt.a.flag,click:()=>this.configureFlagsAction(),permission:"read",visible:()=>this.permissions.osd.read},{name:this.i18n("Recovery Priority"),icon:pt.a.deepCheck,click:()=>this.configureQosParamsAction(),permission:"read",visible:()=>this.permissions.configOpt.read},{name:this.i18n("PG scrub"),icon:pt.a.analyse,click:()=>this.configurePgScrubAction(),permission:"read",visible:()=>this.permissions.configOpt.read}],this.columns=[{prop:"host.name",name:this.i18n("Host")},{prop:"id",name:this.i18n("ID"),flexGrow:1,cellTransformation:oi.a.bold},{prop:"collectedStates",name:this.i18n("Status"),flexGrow:1,cellTransformation:oi.a.badge,customTemplateConfig:{map:{in:{class:"badge-success"},up:{class:"badge-success"},down:{class:"badge-danger"},out:{class:"badge-danger"},destroyed:{class:"badge-danger"}}}},{prop:"tree.device_class",name:this.i18n("Device class"),flexGrow:1,cellTransformation:oi.a.badge,customTemplateConfig:{map:{hdd:{class:"badge-hdd"},ssd:{class:"badge-ssd"}}}},{prop:"stats.numpg",name:this.i18n("PGs"),flexGrow:1},{prop:"stats.stat_bytes",name:this.i18n("Size"),flexGrow:1,pipe:this.dimlessBinaryPipe},{prop:"state",name:this.i18n("Flags"),cellTemplate:this.flagsTpl},{prop:"stats.usage",name:this.i18n("Usage"),cellTemplate:this.osdUsageTpl},{prop:"stats_history.out_bytes",name:this.i18n("Read bytes"),cellTransformation:oi.a.sparkline},{prop:"stats_history.in_bytes",name:this.i18n("Write bytes"),cellTransformation:oi.a.sparkline},{prop:"stats.op_r",name:this.i18n("Read ops"),cellTransformation:oi.a.perSecond},{prop:"stats.op_w",name:this.i18n("Write ops"),cellTransformation:oi.a.perSecond}]}getSelectedOsdIds(){const t=this.osds.map(t=>t.id);return this.selection.selected.map(t=>t.id).filter(e=>t.includes(e))}getSelectedOsds(){return this.osds.filter(t=>!X.isUndefined(t)&&this.getSelectedOsdIds().includes(t.id))}get hasOsdSelected(){return this.getSelectedOsdIds().length>0}updateSelection(t){this.selection=t}isNotSelectedOrInState(t){const e=this.getSelectedOsds();if(0===e.length)return!0;switch(t){case"in":return e.some(t=>1===t.in);case"out":return e.some(t=>1!==t.in);case"down":return e.some(t=>1!==t.up);case"up":return e.some(t=>1===t.up)}}getOsdList(){const t=[this.osdService.getList(),this.osdService.getFlags()];Object(ml.a)(t).subscribe(t=>{this.osds=t[0].map(e=>(e.collectedStates=Al.collectStates(e),e.stats_history.out_bytes=e.stats_history.op_out_bytes.map(t=>t[1]),e.stats_history.in_bytes=e.stats_history.op_in_bytes.map(t=>t[1]),e.stats.usage=e.stats.stat_bytes_used/e.stats.stat_bytes,e.cdIsBinary=!0,e.cdIndivFlags=e.state.filter(t=>this.indivFlagNames.includes(t)),e.cdClusterFlags=t[1].filter(t=>!this.disabledFlags.includes(t)),e))})}editAction(){const t=X.filter(this.osds,["id",this.selection.first().id]).pop();this.modalService.show(ui.a,{initialState:{titleText:this.i18n("Edit OSD: {{id}}",{id:t.id}),fields:[{type:"text",name:"deviceClass",value:t.tree.device_class,label:this.i18n("Device class"),required:!0}],submitButtonText:this.i18n("Edit OSD"),onSubmit:e=>{this.osdService.update(t.id,e.deviceClass).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n('Updated OSD "{{id}}"',{id:t.id})),this.getOsdList()})}}})}scrubAction(t){if(!this.hasOsdSelected)return;const e={selected:this.getSelectedOsdIds(),deep:t};this.bsModalRef=this.modalService.show(Cl,{initialState:e})}configureFlagsAction(){this.bsModalRef=this.modalService.show(xl,{})}configureFlagsIndivAction(){const t={selected:this.getSelectedOsds()};this.bsModalRef=this.modalService.show(vl,{initialState:t})}showConfirmationModal(t,e){this.bsModalRef=this.modalService.show(yl.a,{initialState:{titleText:this.i18n("Mark OSD {{markAction}}",{markAction:t}),buttonText:this.i18n("Mark {{markAction}}",{markAction:t}),bodyTpl:this.markOsdConfirmationTpl,bodyContext:{markActionDescription:t},onSubmit:()=>{Object(ml.a)(this.getSelectedOsdIds().map(t=>e.call(this.osdService,t))).subscribe(()=>this.bsModalRef.hide())}}})}reweight(){const t=this.osds.filter(t=>t.id===this.selection.first().id).pop();this.modalService.show(Nl,{initialState:{currentWeight:t.weight,osdId:t.id}})}delete(){const t=new tu.a({preserve:new K.i(!1)});this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.DELETE,this.i18n("OSD"),()=>{this.showCriticalConfirmationModal(this.i18n("delete"),this.i18n("OSD"),this.i18n("deleted"),t=>this.osdService.safeToDelete(JSON.stringify(t)),"is_safe_to_delete",e=>(this.selection=new li.a,this.taskWrapper.wrapTaskAroundCall({task:new As.a("osd/"+St.e.DELETE,{svc_id:e}),call:this.osdService.delete(e,t.value.preserve,!0)})),!0,t,this.deleteOsdExtraTpl)})}showCriticalConfirmationModal(t,e,n,a,r,i,s=!1,u,o){a(this.getSelectedOsdIds()).subscribe(a=>{const l=this.modalService.show(Cs.a,{initialState:{actionDescription:t,itemDescription:e,bodyTemplate:this.criticalConfirmationTpl,bodyContext:{safeToPerform:a[r],message:a.message,actionDescription:n,osdIds:this.getSelectedOsdIds()},childFormGroup:u,childFormGroupTemplate:o,submitAction:()=>{const t=Object(ml.a)(this.getSelectedOsdIds().map(t=>i.call(this.osdService,t)));s?t.subscribe(void 0,()=>{this.getOsdList(),l.hide()},()=>l.hide()):t.subscribe(()=>{this.getOsdList(),l.hide()},()=>l.hide())}}})})}configureQosParamsAction(){this.bsModalRef=this.modalService.show(Il,{})}configurePgScrubAction(){this.bsModalRef=this.modalService.show(Sl,{class:"modal-lg"})}}var kl=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function El(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Ko.b,Ko.a)),s["ɵdid"](1,573440,null,0,$o.a,[],{total:[0,"total"],used:[1,"used"]},null)],(function(t,e){t(e,1,0,e.context.row.stats.stat_bytes,e.context.row.stats.stat_bytes_used)}),null)}function Ll(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-hdd mr-1"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit)}))}function Dl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-info mr-1"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit)}))}function Pl(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ll)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dl)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.row.cdClusterFlags),t(e,3,0,e.context.row.cdIndivFlags)}),null)}function Ml(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","four"],["uid","lo02I1Aiz"]],null,null,null,$r.b,$r.a)),s["ɵdid"](3,638976,null,0,Jr.a,[ve.b,Xt.a,fe.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){t(e,1,0,"Overall Performance"),t(e,3,0,"osd-overview?","four","lo02I1Aiz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function ql(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["OSD(s) ",""])),s["ɵppd"](3,1),(t()(),s["ɵted"](-1,null,[" will be marked\n"])),(t()(),s["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵted"](-1,null,[" if you proceed."]))],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.getSelectedOsdIds()));t(e,2,0,a),t(e,6,0,e.context.markActionDescription)}))}function jl(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["OSD is"]))],null,null)}function Fl(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["OSDs are"]))],null,null)}function Vl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","danger"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"cd-alert-panel",[["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](2,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The "])),(t()(),s["ɵeld"](4,0,null,0,5,null,null,null,null,null,null,null)),s["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jl)),s["ɵdid"](7,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fl)),s["ɵdid"](9,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](10,0,[" not safe to be ","! ",""]))],(function(t,e){var n=e.component;t(e,2,0,"warning"),t(e,5,0,n.selection.hasSingleSelection),t(e,7,0,"true"),t(e,9,0,"false")}),(function(t,e){t(e,10,0,e.parent.context.actionDescription,e.parent.context.message)}))}function Gl(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Vl)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](2,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](4,null,["OSD ",""])),s["ɵppd"](5,1),(t()(),s["ɵted"](-1,null,[" will be "])),(t()(),s["ɵeld"](7,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""])),(t()(),s["ɵted"](-1,null,[" if you proceed."]))],(function(t,e){t(e,1,0,!e.context.safeToPerform)}),(function(t,e){var n=s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent,0),e.context.osdIds));t(e,4,0,n),t(e,8,0,e.context.actionDescription)}))}function Bl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,null,null,null,null,(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,1).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,1).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,4).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,540672,null,0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](3,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](4,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](5,0,null,null,18,null,null,null,null,null,null,null)),s["ɵdid"](6,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](8,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](9,0,null,null,14,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](10,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](13,0,null,0,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","preserve"],["id","preserve"],["name","preserve"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,16).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),a}),null,null)),s["ɵdid"](15,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](16,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](18,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](20,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](21,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](22,0,null,null,1,"label",[["class","custom-control-label"],["for","preserve"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Preserve OSD ID(s) for replacement."]))],(function(t,e){t(e,1,0,e.context.form),t(e,4,0,e.context.form),t(e,6,0,"child"),t(e,10,0),t(e,18,0,"preserve"),t(e,21,0,"preserve")}),(function(t,e){t(e,9,0,s["ɵnov"](e,10).hasErrors,s["ɵnov"](e,10).hasSuccess),t(e,14,0,s["ɵnov"](e,20).ngClassUntouched,s["ɵnov"](e,20).ngClassTouched,s["ɵnov"](e,20).ngClassPristine,s["ɵnov"](e,20).ngClassDirty,s["ɵnov"](e,20).ngClassValid,s["ɵnov"](e,20).ngClassInvalid,s["ɵnov"](e,20).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass)}))}function zl(t){return s["ɵvid"](0,[s["ɵpid"](0,Jo.a,[]),s["ɵqud"](402653184,1,{osdUsageTpl:0}),s["ɵqud"](402653184,2,{markOsdConfirmationTpl:0}),s["ɵqud"](402653184,3,{criticalConfirmationTpl:0}),s["ɵqud"](402653184,4,{tableComponent:0}),s["ɵqud"](671088640,5,{reweightBodyTpl:0}),s["ɵqud"](671088640,6,{safeToDestroyBodyTpl:0}),s["ɵqud"](671088640,7,{deleteOsdExtraTpl:0}),s["ɵqud"](402653184,8,{flagsTpl:0}),(t()(),s["ɵeld"](9,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](10,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](11,0,null,0,13,"tab",[["heading","OSDs List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](12,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](13,0,null,null,9,"cd-table",[["selectionType","multiClick"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getOsdList()&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](14,2867200,[[4,4]],0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"],updateSelectionOnRefresh:[4,"updateSelectionOnRefresh"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](15,0,null,1,5,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,1,"cd-table-actions",[["class","btn-group"],["id","osd-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](17,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](18,0,null,null,2,"cd-table-actions",[["btnColor","light"],["class","btn-group"],["dropDownOnly","Cluster-wide configuration"],["id","cluster-wide-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](19,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"],btnColor:[3,"btnColor"],dropDownOnly:[4,"dropDownOnly"]},null),s["ɵpod"](20,{read:0}),(t()(),s["ɵeld"](21,0,null,3,1,"cd-osd-details",[["cdTableDetail",""]],null,null,null,gl,sl)),s["ɵdid"](22,573440,null,0,il,[Pi,Z.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[1,2],["osdUsageTpl",2]],null,0,null,El)),(t()(),s["ɵand"](0,[[8,2],["flagsTpl",2]],null,0,null,Pl)),(t()(),s["ɵand"](16777216,null,0,1,null,Ml)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[2,2],["markOsdConfirmationTpl",2]],null,0,null,ql)),(t()(),s["ɵand"](0,[[3,2],["criticalConfirmationTpl",2]],null,0,null,Gl)),(t()(),s["ɵand"](0,[[7,2],["deleteOsdExtraTpl",2]],null,0,null,Bl))],(function(t,e){var n=e.component;t(e,12,0,"OSDs List"),t(e,14,0,n.osds,n.columns,!0,"multiClick","never"),t(e,17,0,n.permissions.osd,n.selection,n.tableActions);var a=t(e,20,0,!0);t(e,19,0,a,n.selection,n.clusterWideActions,"light","Cluster-wide configuration"),t(e,22,0,n.expandedRow),t(e,26,0,n.permissions.grafana.read)}),(function(t,e){t(e,9,0,s["ɵnov"](e,10).clazz),t(e,11,0,s["ɵnov"](e,12).id,s["ɵnov"](e,12).active,s["ɵnov"](e,12).addClass,s["ɵnov"](e,12).role,s["ɵnov"](e,12).ariaLabelledby)}))}function Yl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-osd-list",[],null,null,null,zl,kl)),s["ɵprd"](256,null,Is.a,Rl,[]),s["ɵdid"](2,114688,null,0,Al,[Z.a,Pi,Fa.a,Ct.b,fe.a,Is.a,Et.m,Ls,Ds.a,St.b,bt.a],null,null)],(function(t,e){t(e,2,0)}),null)}var Hl=s["ɵccf"]("cd-osd-list",Al,Yl,{},{},[]);class Ul{constructor(t,e,n){this.formBuilder=t,this.bsModalRef=e,this.actionLabels=n,this.submitAction=new s.EventEmitter,this.icons=pt.a,this.filterColumns=[],this.devices=[],this.filteredDevices=[],this.capacity=0,this.canSubmit=!1,this.requiredFilters=[],this.action=n.ADD,this.createForm()}ngAfterViewInit(){const t=X.filter(this.inventoryDevices.columns,t=>this.filterColumns.includes(t.prop)&&"hostname"!==t.prop);this.requiredFilters=X.map(t,"name")}createForm(){this.formGroup=this.formBuilder.group({})}onFilterChange(t){if(this.capacity=0,this.canSubmit=!1,X.isEmpty(t.filters))this.filteredDevices=[],this.event=void 0;else{const e=t.filters.filter(t=>"hostname"!==t.prop);this.canSubmit=!X.isEmpty(e),this.filteredDevices=t.data,this.capacity=X.sumBy(this.filteredDevices,"sys_api.size"),this.event=t}}onSubmit(){this.submitAction.emit(this.event),this.bsModalRef.hide()}}class Wl{constructor(t,e){this.bsModalService=t,this.i18n=e,this.selected=new s.EventEmitter,this.cleared=new s.EventEmitter,this.icons=pt.a,this.devices=[],this.capacity=0,this.appliedFilters=[],this.tooltips={noAvailDevices:this.i18n("No available devices"),addPrimaryFirst:this.i18n("Please add primary devices first"),addByFilters:this.i18n("Add devices by using filters")}}ngOnInit(){this.updateAddButtonTooltip()}ngOnChanges(){this.updateAddButtonTooltip()}showSelectionModal(){let t=["human_readable_type","sys_api.vendor","sys_api.model","sys_api.size"];"data"===this.type&&(t=["hostname",...t]),this.bsModalService.show(Ul,{class:"modal-xl",initialState:{hostname:this.hostname,deviceType:this.name,devices:this.availDevices,filterColumns:t}}).content.submitAction.subscribe(t=>{this.devices=t.data,this.capacity=X.sumBy(this.devices,"sys_api.size"),this.appliedFilters=t.filters;const e=X.assign({type:this.type},t);this.selected.emit(e)})}updateAddButtonTooltip(){this.addButtonTooltip="data"===this.type&&0===this.availDevices.length?this.tooltips.noAvailDevices:this.canSelect?0===this.availDevices.length?this.tooltips.noAvailDevices:this.tooltips.addByFilters:this.tooltips.addPrimaryFirst}clearDevices(){const t={type:this.type,clearedDevices:[...this.devices]};this.devices=[],this.cleared.emit(t)}}var Kl=s["ɵcrt"]({encapsulation:0,styles:[[".tc_clearSelections[_ngcontent-%COMP%]{text-decoration:none}"]],data:{}});function $l(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The primary storage devices. These devices contain all OSD data."]))],null,null)}function Jl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device."]))],null,null)}function Zl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DB devices can be used for storing BlueStore’s internal metadata. It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD)."]))],null,null)}function Ql(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"button",[["class","btn btn-light"],["data-toggle","tooltip"],["type","button"]],[[8,"title",0],[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showSelectionModal()&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add"]))],(function(t,e){var n=t(e,5,0,e.component.icons.add);t(e,4,0,n)}),(function(t,e){var n=e.component;t(e,1,0,n.addButtonTooltip,0===n.availDevices.length||!n.canSelect)}))}function Xl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",": ",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.name,e.context.$implicit.value.formatted)}))}function td(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["Raw capacity: ",""])),s["ɵppd"](3,1)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent,0),n.capacity));t(e,2,0,a)}))}function ed(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","pb-2 my-2 border-bottom"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Xl)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](3,0,null,null,6,"a",[["class","tc_clearSelections"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.clearDevices(),a=!1),a}),null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clear"])),(t()(),s["ɵeld"](10,0,null,null,3,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,2,"cd-inventory-devices",[],null,null,null,fi,ci)),s["ɵdid"](12,245760,null,0,di,[Z.a,Fa.a,fe.a,Ct.b,bt.a,si],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],filterColumns:[2,"filterColumns"]},null),s["ɵpad"](13,2),(t()(),s["ɵand"](16777216,null,null,1,null,td)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.appliedFilters);var a=t(e,7,0,n.icons.clearFilters);t(e,6,0,a);var r=n.devices,i=t(e,13,0,"available","osd_ids");t(e,12,0,r,i,s["ɵEMPTY_ARRAY"]),t(e,15,0,"data"===n.type)}),null)}function nd(t){return s["ɵvid"](0,[s["ɵpid"](0,Fa.a,[Ka.a]),(t()(),s["ɵeld"](1,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,10,"label",[["class","cd-col-form-label"],["for","createDeleteButton"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](7,null,[""," devices"])),(t()(),s["ɵeld"](8,0,null,null,7,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](9,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵand"](16777216,null,0,1,null,$l)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Jl)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Zl)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](16,0,null,0,3,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ql)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["blockClearDevices",2]],null,0,null,ed))],(function(t,e){var n=e.component;t(e,2,0),t(e,11,0,"data"===n.type),t(e,13,0,"wal"===n.type),t(e,15,0,"db"===n.type),t(e,18,0,0===n.devices.length,s["ɵnov"](e,19))}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,n.name)}))}class ad{constructor(t,e,n,a,r){this.bsModalRef=t,this.actionLabels=e,this.formBuilder=n,this.osdService=a,this.taskWrapper=r,this.driveGroups=[],this.submitAction=new s.EventEmitter,this.action=e.CREATE,this.createForm()}ngOnInit(){}createForm(){this.formGroup=this.formBuilder.group({})}onSubmit(){this.taskWrapper.wrapTaskAroundCall({task:new As.a("osd/"+St.e.CREATE,{tracking_id:X.join(X.map(this.driveGroups,"service_id"),", ")}),call:this.osdService.create(this.driveGroups)}).subscribe(void 0,()=>{this.formGroup.setErrors({cdSubmitButton:!0})},()=>{this.submitAction.emit(),this.bsModalRef.hide()})}}class rd{constructor(){this.reset(),this.formatterService=new Ka.a,this.deviceSelectionAttrs={"sys_api.vendor":{name:"vendor"},"sys_api.model":{name:"model"},device_id:{name:"device_id"},human_readable_type:{name:"rotational",formatter:t=>"hdd"===t.toLowerCase()},"sys_api.size":{name:"size",formatter:t=>this.formatterService.format_number(t,1024,["B","KB","MB","GB","TB","PB"]).replace(" ","")}}}reset(){this.spec={service_type:"osd",service_id:"dashboard-"+X.now()}}setName(t){this.spec.service_id=t}setHostPattern(t){this.spec.host_pattern=t}setDeviceSelection(t,e){const n=t+"_devices";this.spec[n]={},e.forEach(t=>{const e=this.deviceSelectionAttrs[t.prop];e&&(this.spec[n][e.name]=e.formatter?e.formatter(t.value.raw):t.value.raw)})}clearDeviceSelection(t){delete this.spec[t+"_devices"]}setSlots(t,e){const n=t+"_slots";0===e?delete this.spec[n]:this.spec[n]=e}setFeature(t,e){e?this.spec[t]=!0:delete this.spec[t]}}class id{constructor(t,e,n,a,r,i){this.actionLabels=t,this.authStorageService=e,this.i18n=n,this.orchService=a,this.router=r,this.bsModalService=i,this.icons=pt.a,this.columns=[],this.loading=!1,this.allDevices=[],this.availDevices=[],this.dataDeviceFilters=[],this.dbDeviceFilters=[],this.walDeviceFilters=[],this.hostname="",this.driveGroup=new rd,this.featureList=[],this.hasOrchestrator=!1,this.resource=this.i18n("OSDs"),this.action=this.actionLabels.CREATE,this.features={encrypted:{key:"encrypted",desc:this.i18n("Encryption")}},this.featureList=X.map(this.features,(t,e)=>Object.assign(t,{key:e})),this.createForm()}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.hasOrchestrator&&this.getDataDevices()}),this.form.get("walSlots").valueChanges.subscribe(t=>this.setSlots("wal",t)),this.form.get("dbSlots").valueChanges.subscribe(t=>this.setSlots("db",t)),X.each(this.features,t=>{this.form.get("features").get(t.key).valueChanges.subscribe(e=>this.featureFormUpdate(t.key,e))})}createForm(){this.form=new tu.a({walSlots:new K.i(0,{validators:[K.B.min(0)]}),dbSlots:new K.i(0,{validators:[K.B.min(0)]}),features:new tu.a(this.featureList.reduce((t,e)=>(t[e.key]=new K.i({value:!1,disabled:!0}),t),{}))})}getDataDevices(){this.loading||(this.loading=!0,this.orchService.inventoryDeviceList().subscribe(t=>{this.allDevices=X.filter(t,"available"),this.availDevices=[...this.allDevices],this.loading=!1},()=>{this.allDevices=[],this.availDevices=[],this.loading=!1}))}setSlots(t,e){"number"==typeof e&&e>=0&&this.driveGroup.setSlots(t,e)}featureFormUpdate(t,e){this.driveGroup.setFeature(t,e)}enableFeatures(){this.featureList.forEach(t=>{this.form.get(t.key).enable({emitEvent:!1})})}disableFeatures(){this.featureList.forEach(t=>{const e=this.form.get(t.key);e.disable({emitEvent:!1}),e.setValue(!1,{emitEvent:!1})})}onDevicesSelected(t){if(this.availDevices=t.dataOut,"data"===t.type){const e=X.find(t.filters,{prop:"hostname"});e?(this.hostname=e.value.raw,this.availDevices=t.dataOut.filter(t=>t.hostname===this.hostname),this.driveGroup.setHostPattern(this.hostname)):this.driveGroup.setHostPattern("*"),this.enableFeatures()}this.driveGroup.setDeviceSelection(t.type,t.filters)}onDevicesCleared(t){"data"===t.type?(this.availDevices=[...this.allDevices],this.walDeviceSelectionGroups.devices=[],this.dbDeviceSelectionGroups.devices=[],this.disableFeatures(),this.driveGroup.reset(),this.form.get("walSlots").setValue(0,{emitEvent:!1}),this.form.get("dbSlots").setValue(0,{emitEvent:!1})):(this.availDevices=[...this.availDevices,...t.clearedDevices],this.driveGroup.clearDeviceSelection(t.type),this.form.get(t.type+"Slots").setValue(0,{emitEvent:!1}))}submit(){const t=this.authStorageService.getUsername();this.driveGroup.setName(`dashboard-${t}-${X.now()}`),this.bsModalService.show(ad,{initialState:{driveGroups:[this.driveGroup.spec]}}).content.submitAction.subscribe(()=>{this.router.navigate(["/osd"])}),this.previewButton.loading=!1}}var sd=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ud(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ii,ri)),s["ɵdid"](1,49152,null,0,ai,[],null,null)],null,null)}function od(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value should be greater than or equal to 0"]))],null,null)}function ld(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,9,"label",[["class","cd-col-form-label"],["for","walSlots"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["WAL slots"])),(t()(),s["ɵeld"](7,0,null,null,6,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](8,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["How many OSDs per WAL device."])),(t()(),s["ɵeld"](11,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Specify 0 to let Orchestrator backend decide it."])),(t()(),s["ɵeld"](14,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,8,"input",[["class","form-control"],["formControlName","walSlots"],["id","walSlots"],["min","0"],["name","walSlots"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,17)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,17)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,17)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,18).onTouched()&&a),a}),null,null)),s["ɵdid"](16,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](17,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](18,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](20,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](22,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](23,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,od)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,20,0,"walSlots"),t(e,23,0,"walSlots"),t(e,25,0,n.form.showError("walSlots",s["ɵnov"](e.parent,3),"min"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,15,0,s["ɵnov"](e,22).ngClassUntouched,s["ɵnov"](e,22).ngClassTouched,s["ɵnov"](e,22).ngClassPristine,s["ɵnov"](e,22).ngClassDirty,s["ɵnov"](e,22).ngClassValid,s["ɵnov"](e,22).ngClassInvalid,s["ɵnov"](e,22).ngClassPending,s["ɵnov"](e,23).validClass,s["ɵnov"](e,23).invalidClass)}))}function dd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value should be greater than or equal to 0"]))],null,null)}function cd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,9,"label",[["class","cd-col-form-label"],["for","dbSlots"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DB slots"])),(t()(),s["ɵeld"](7,0,null,null,6,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](8,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["How many OSDs per DB device."])),(t()(),s["ɵeld"](11,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Specify 0 to let Orchestrator backend decide it."])),(t()(),s["ɵeld"](14,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,8,"input",[["class","form-control"],["formControlName","dbSlots"],["id","dbSlots"],["min","0"],["name","dbSlots"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,17)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,17)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,17)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,18).onTouched()&&a),a}),null,null)),s["ɵdid"](16,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](17,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](18,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](20,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](22,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](23,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dd)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,20,0,"dbSlots"),t(e,23,0,"dbSlots"),t(e,25,0,n.form.showError("dbSlots",s["ɵnov"](e.parent,3),"min"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,15,0,s["ɵnov"](e,22).ngClassUntouched,s["ɵnov"](e,22).ngClassTouched,s["ɵnov"](e,22).ngClassPristine,s["ɵnov"](e,22).ngClassDirty,s["ɵnov"](e,22).ngClassValid,s["ɵnov"](e,22).ngClassInvalid,s["ɵnov"](e,22).ngClassPending,s["ɵnov"](e,23).validClass,s["ɵnov"](e,23).invalidClass)}))}function fd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](3,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](5,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](7,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](8,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](9,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](10,null,["",""]))],(function(t,e){t(e,5,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,"")),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""))}),(function(t,e){t(e,1,1,[s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""),s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,8).validClass,s["ɵnov"](e,8).invalidClass]),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,"")),t(e,10,0,e.context.$implicit.desc)}))}function hd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,48,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,47,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,41,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,[""," ",""])),s["ɵppd"](10,1),s["ɵppd"](11,1),(t()(),s["ɵeld"](12,0,null,null,29,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,2,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"cd-osd-devices-selection-groups",[["name","Primary"],["type","data"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),nd,Kl)),s["ɵdid"](15,638976,[[1,4],["dataDeviceSelectionGroups",4]],0,Wl,[Ct.b,fe.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵeld"](16,0,null,null,10,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Shared devices"])),(t()(),s["ɵeld"](19,0,null,null,1,"cd-osd-devices-selection-groups",[["name","WAL"],["type","wal"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),nd,Kl)),s["ɵdid"](20,638976,[[2,4],["walDeviceSelectionGroups",4]],0,Wl,[Ct.b,fe.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵand"](16777216,null,null,1,null,ld)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](23,0,null,null,1,"cd-osd-devices-selection-groups",[["name","DB"],["type","db"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),nd,Kl)),s["ɵdid"](24,638976,[[3,4],["dbDeviceSelectionGroups",4]],0,Wl,[Ct.b,fe.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵand"](16777216,null,null,1,null,cd)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](27,0,null,null,14,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Configuration"])),(t()(),s["ɵeld"](30,0,null,null,11,"div",[["class","form-group row"],["formGroupName","features"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](31,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](33,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](34,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](37,0,null,0,1,"label",[["class","cd-col-form-label"],["for","features"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Features"])),(t()(),s["ɵeld"](39,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,fd)),s["ɵdid"](41,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](42,0,null,null,6,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),$s.b,$s.a)),s["ɵdid"](45,114688,[[4,4],["previewButton",4]],0,Js.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Preview"])),(t()(),s["ɵeld"](47,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](48,49152,null,0,Qs.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,3,0,n.form),t(e,6,0,n.form),t(e,15,0,"data","Primary",n.availDevices,0!==n.availDevices.length),t(e,20,0,"wal","WAL",n.availDevices,0!==s["ɵnov"](e,15).devices.length),t(e,22,0,0!==s["ɵnov"](e,20).devices.length),t(e,24,0,"db","DB",n.availDevices,0!==s["ɵnov"](e,15).devices.length),t(e,26,0,0!==s["ɵnov"](e,24).devices.length),t(e,31,0,"features"),t(e,34,0),t(e,41,0,n.featureList),t(e,45,0,s["ɵnov"](e,3),0===s["ɵnov"](e,15).devices.length)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending);var a=s["ɵunv"](e,9,0,t(e,10,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,9,1,t(e,11,0,s["ɵnov"](e.parent,1),n.resource));t(e,9,0,a,r),t(e,30,0,s["ɵnov"](e,33).ngClassUntouched,s["ɵnov"](e,33).ngClassTouched,s["ɵnov"](e,33).ngClassPristine,s["ɵnov"](e,33).ngClassDirty,s["ɵnov"](e,33).ngClassValid,s["ɵnov"](e,33).ngClassInvalid,s["ɵnov"](e,33).ngClassPending,s["ɵnov"](e,34).hasErrors,s["ɵnov"](e,34).hasSuccess)}))}function gd(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Xs.a,[]),s["ɵqud"](671088640,1,{dataDeviceSelectionGroups:0}),s["ɵqud"](671088640,2,{walDeviceSelectionGroups:0}),s["ɵqud"](671088640,3,{dbDeviceSelectionGroups:0}),s["ɵqud"](671088640,4,{previewButton:0}),(t()(),s["ɵand"](16777216,null,null,1,null,ud)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hd)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,7,0,!n.hasOrchestrator),t(e,9,0,!n.loading&&n.hasOrchestrator)}),null)}function pd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-form",[],null,null,null,gd,sd)),s["ɵdid"](1,114688,null,0,id,[St.b,Z.a,fe.a,si,Et.m,Ct.b],null,null)],(function(t,e){t(e,1,0)}),null)}var bd=s["ɵccf"]("cd-osd-form",id,pd,{},{},[]),md=n("iExv");class yd{constructor(t){this.i18n=t,this.flags={runtime:this.i18n("The value can be updated at runtime."),no_mon_update:this.i18n("Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via 'ceph config\n      set ...'. This option should be configured via ceph.conf or via the\n      command line."),startup:this.i18n("Option takes effect only during daemon startup."),cluster_create:this.i18n("Option only affects cluster creation."),create:this.i18n("Option only affects daemon creation.")}}ngOnChanges(){this.selection&&(this.selection.services=X.split(this.selection.services,","))}}var vd=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function xd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": ","",""])),(t()(),s["ɵeld"](2,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,1,0,e.context.$implicit.section,e.context.$implicit.value,e.context.last?"":",")}))}function _d(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""])),s["ɵppd"](4,1)],null,(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](1,"",e.component.flags[e.context.$implicit],""));var n=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent,0),e.context.$implicit));t(e,3,0,n)}))}function Td(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function wd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,94,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,92,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,90,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,89,"tbody",[],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](9,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(t()(),s["ɵted"](10,null,["",""])),(t()(),s["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](15,null,["",""])),(t()(),s["ɵeld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Long description"])),(t()(),s["ɵeld"](19,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](20,null,["",""])),(t()(),s["ɵeld"](21,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Current values"])),(t()(),s["ɵeld"](24,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,xd)),s["ɵdid"](26,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](27,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Default"])),(t()(),s["ɵeld"](30,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](31,null,["",""])),(t()(),s["ɵeld"](32,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemon default"])),(t()(),s["ɵeld"](35,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](36,null,["",""])),(t()(),s["ɵeld"](37,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type"])),(t()(),s["ɵeld"](40,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](41,null,["",""])),(t()(),s["ɵeld"](42,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Min"])),(t()(),s["ɵeld"](45,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](46,null,["",""])),(t()(),s["ɵeld"](47,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Max"])),(t()(),s["ɵeld"](50,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](51,null,["",""])),(t()(),s["ɵeld"](52,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Flags"])),(t()(),s["ɵeld"](55,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_d)),s["ɵdid"](57,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](58,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Services"])),(t()(),s["ɵeld"](61,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Td)),s["ɵdid"](63,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](64,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](65,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Source"])),(t()(),s["ɵeld"](67,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](68,null,["",""])),(t()(),s["ɵeld"](69,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](70,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Level"])),(t()(),s["ɵeld"](72,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](73,null,["",""])),(t()(),s["ɵeld"](74,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Can be updated at runtime (editable)"])),(t()(),s["ɵeld"](77,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](78,null,["",""])),s["ɵppd"](79,1),(t()(),s["ɵeld"](80,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](81,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tags"])),(t()(),s["ɵeld"](83,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](84,null,["",""])),(t()(),s["ɵeld"](85,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](86,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Enum values"])),(t()(),s["ɵeld"](88,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](89,null,["",""])),(t()(),s["ɵeld"](90,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](91,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["See also"])),(t()(),s["ɵeld"](93,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](94,null,["",""]))],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,26,0,n.selection.value),t(e,57,0,n.selection.flags),t(e,63,0,n.selection.services)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,10,0,n.selection.name),t(e,15,0,n.selection.desc),t(e,20,0,n.selection.long_desc),t(e,31,0,n.selection.default),t(e,36,0,n.selection.daemon_default),t(e,41,0,n.selection.type),t(e,46,0,n.selection.min),t(e,51,0,n.selection.max),t(e,68,0,n.selection.source),t(e,73,0,n.selection.level);var a=s["ɵunv"](e,78,0,t(e,79,0,s["ɵnov"](e.parent,1),n.selection.can_update_at_runtime));t(e,78,0,a),t(e,84,0,n.selection.tags),t(e,89,0,n.selection.enum_values),t(e,94,0,n.selection.see_also)}))}function Od(t){return s["ɵvid"](0,[s["ɵpid"](0,i.UpperCasePipe,[]),s["ɵpid"](0,md.a,[fe.a]),(t()(),s["ɵand"](16777216,null,null,1,null,wd)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,3,0,e.component.selection)}),null)}class Sd extends Ns.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.configurationService=e,this.i18n=n,this.actionLabels=a,this.data=[],this.icons=pt.a,this.selection=new li.a,this.filters=[{name:this.i18n("Level"),prop:"level",filterOptions:["basic","advanced","dev"],filterInitValue:"basic",filterPredicate:(t,e)=>{let n;return function(t){t[t.basic=0]="basic",t[t.advanced=1]="advanced",t[t.dev=2]="dev"}(n||(n={})),n[t.level]<=n[e]}},{name:this.i18n("Service"),prop:"services",filterOptions:["mon","mgr","osd","mds","common","mds_client","rgw"],filterPredicate:(t,e)=>t.services.includes(e)},{name:this.i18n("Source"),prop:"source",filterOptions:["mon"],filterPredicate:(t,e)=>!!t.hasOwnProperty("source")&&t.source.includes(e)},{name:this.i18n("Modified"),prop:"modified",filterOptions:["yes","no"],filterPredicate:(t,e)=>!("yes"!==e||!t.hasOwnProperty("value"))||"no"===e&&!t.hasOwnProperty("value")}],this.permission=this.authStorageService.getPermissions().configOpt;const r=()=>this.selection.first()&&""+encodeURIComponent(this.selection.first().name);this.tableActions=[{permission:"update",icon:pt.a.edit,routerLink:()=>"/configuration/edit/"+r(),name:this.actionLabels.EDIT,disable:()=>!this.isEditable(this.selection)}]}ngOnInit(){this.columns=[{canAutoResize:!0,prop:"name",name:this.i18n("Name")},{prop:"desc",name:this.i18n("Description"),cellClass:"wrap"},{prop:"value",name:this.i18n("Current value"),cellClass:"wrap",cellTemplate:this.confValTpl},{prop:"default",name:this.i18n("Default"),cellClass:"wrap"},{prop:"can_update_at_runtime",name:this.i18n("Editable"),cellTransformation:oi.a.checkIcon,flexGrow:.4,cellClass:"text-center"}]}updateSelection(t){this.selection=t}getConfigurationList(t){this.configurationService.getConfigData().subscribe(t=>{this.data=t},()=>{t.error()})}isEditable(t){return 1===t.selected.length&&t.selected[0].can_update_at_runtime}}var Id=s["ɵcrt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}  datatable-body-cell.wrap{word-break:break-all}"]],data:{}});function Nd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": ","",""])),(t()(),s["ɵeld"](2,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,1,0,e.context.$implicit.section,e.context.$implicit.value,e.context.last?"":",")}))}function Cd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Nd)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.parent.context.value)}),null)}function Rd(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Cd)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function Ad(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{confValTpl:0}),s["ɵqud"](671088640,2,{confFlagTpl:0}),(t()(),s["ɵeld"](2,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getConfigurationList(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](3,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"],extraFilterableColumns:[4,"extraFilterableColumns"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](5,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](6,0,null,3,1,"cd-configuration-details",[["cdTableDetail",""]],null,null,null,Od,vd)),s["ɵdid"](7,573440,null,0,yd,[fe.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[1,2],["confValTpl",2]],null,0,null,Rd))],(function(t,e){var n=e.component;t(e,3,0,n.data,n.columns,!0,"single",n.filters),t(e,5,0,n.permission,n.selection,n.tableActions),t(e,7,0,n.expandedRow)}),null)}function kd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-configuration",[],null,null,null,Ad,Id)),s["ɵdid"](1,114688,null,0,Sd,[Z.a,_l.a,fe.a,St.b],null,null)],(function(t,e){t(e,1,0)}),null)}var Ed=s["ɵccf"]("cd-configuration",Sd,kd,{},{},[]);class Ld{constructor(){this.value=[]}}class Dd{constructor(t,e,n,a,r){this.route=t,this.router=e,this.configService=n,this.notificationService=a,this.i18n=r,this.availSections=["global","mon","mgr","osd","mds","client"],this.createForm()}createForm(){const t={name:new K.i({value:null}),desc:new K.i({value:null}),long_desc:new K.i({value:null}),values:new K.k({}),default:new K.i({value:null}),daemon_default:new K.i({value:null}),services:new K.i([])};this.availSections.forEach(e=>{t.values.addControl(e,new K.i(null))}),this.configForm=new tu.a(t)}ngOnInit(){this.route.params.subscribe(t=>{this.configService.get(t.name).subscribe(t=>{this.setResponse(t)})})}getValidators(t){const e=Tl.getTypeValidators(t);if(e)return this.patternHelpText=e.patternHelpText,"max"in e&&""!==e.max&&(this.maxValue=e.max),"min"in e&&""!==e.min&&(this.minValue=e.min),e.validators}getStep(t,e){return Tl.getTypeStep(t,e)}setResponse(t){this.response=t;const e=this.getValidators(t);this.configForm.get("name").setValue(t.name),this.configForm.get("desc").setValue(t.desc),this.configForm.get("long_desc").setValue(t.long_desc),this.configForm.get("default").setValue(t.default),this.configForm.get("daemon_default").setValue(t.daemon_default),this.configForm.get("services").setValue(t.services),this.response.value&&this.response.value.forEach(t=>{let e=null;e="true"===t.value||"false"!==t.value&&t.value,this.configForm.get("values").get(t.section).setValue(e)}),this.availSections.forEach(t=>{this.configForm.get("values").get(t).setValidators(e)});const n=Tl.getType(t.type);this.type=n.name,this.inputType=n.inputType,this.humanReadableType=n.humanReadable}createRequest(){const t=[];if(this.availSections.forEach(e=>{const n=this.configForm.getValue(e);null!==n&&""!==n&&t.push({section:e,value:n})}),!X.isEqual(this.response.value,t)){const e=new Ld;return e.name=this.configForm.getValue("name"),e.value=t,e}return null}submit(){const t=this.createRequest();t&&this.configService.create(t).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n("Updated config option {{name}}",{name:t.name})),this.router.navigate(["/configuration"])},()=>{this.configForm.setErrors({cdSubmitButton:!0})}),this.router.navigate(["/configuration"])}}var Pd=s["ɵcrt"]({encapsulation:0,styles:[[".form-component-badge[_ngcontent-%COMP%]{height:34px;display:block}.form-component-badge[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{margin-top:7px}.resize-vertical[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function Md(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"textarea",[["class","form-control resize-vertical"],["formControlName","desc"],["id","desc"],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](10,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "]))],(function(t,e){t(e,1,0),t(e,10,0,"desc"),t(e,13,0,"desc")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function qd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Long description"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"textarea",[["class","form-control resize-vertical"],["formControlName","long_desc"],["id","long_desc"],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](10,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "]))],(function(t,e){t(e,1,0),t(e,10,0,"long_desc"),t(e,13,0,"long_desc")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function jd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Default"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","default"],["id","default"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,9)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](11,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,11,0,"default"),t(e,14,0,"default")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function Fd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemon default"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","daemon_default"],["id","daemon_default"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,9)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](11,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,11,0,"daemon_default"),t(e,14,0,"daemon_default")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function Vd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[["class","form-component-badge"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function Gd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Services"])),(t()(),s["ɵeld"](6,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Vd)),s["ɵdid"](8,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,8,0,n.configForm.getValue("services"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess)}))}function Bd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,0,20,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,19,"select",[["class","form-control custom-select"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](11,671744,[[13,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](15,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](16,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](17,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Default --"])),(t()(),s["ɵeld"](19,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](20,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](21,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["true"])),(t()(),s["ɵeld"](23,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](24,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](25,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["false"]))],(function(t,e){t(e,1,0),t(e,11,0,e.parent.context.$implicit),t(e,14,0,e.parent.context.$implicit),t(e,16,0,null),t(e,17,0,null),t(e,20,0,!0),t(e,21,0,!0),t(e,24,0,!1),t(e,25,0,!1)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit),t(e,5,0,e.parent.context.$implicit),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function zd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.patternHelpText)}))}function Yd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.patternHelpText)}))}function Hd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.component.maxValue)}))}function Ud(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.component.minValue)}))}function Wd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"placeholder",0],[8,"step",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,9)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](11,671744,[[15,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zd)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yd)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hd)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ud)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,11,0,e.parent.context.$implicit),t(e,14,0,e.parent.context.$implicit),t(e,16,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"pattern")),t(e,18,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"invalidUuid")),t(e,20,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"max")),t(e,22,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit),t(e,5,0,e.parent.context.$implicit),t(e,7,1,[n.inputType,e.parent.context.$implicit,n.humanReadableType,n.getStep(n.type,n.configForm.getValue(e.parent.context.$implicit)),s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass])}))}function Kd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Bd)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wd)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,"bool"===n.type),t(e,4,0,"bool"!==n.type)}),null)}function $d(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,53,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,52,"form",[["name","configForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,46,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Edit"])),(t()(),s["ɵted"](11,null,[" "," "])),(t()(),s["ɵeld"](12,0,null,null,33,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](14,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](19,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,7,"input",[["class","form-control"],["formControlName","name"],["id","name"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,22)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,22).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,22)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,22)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](24,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](26,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Md)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qd)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jd)),s["ɵdid"](33,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fd)),s["ɵdid"](35,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gd)),s["ɵdid"](37,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](38,0,null,null,7,"div",[["formGroupName","values"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](39,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](41,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](42,0,null,null,1,"h3",[["class","cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Values"])),(t()(),s["ɵand"](16777216,null,null,1,null,Kd)),s["ɵdid"](45,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](46,0,null,null,7,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](47,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),$s.b,$s.a)),s["ɵdid"](49,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](50,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Save"])),(t()(),s["ɵeld"](52,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](53,49152,null,0,Qs.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,6,0,n.configForm),t(e,14,0),t(e,24,0,"name"),t(e,27,0,"name"),t(e,29,0,n.configForm.getValue("desc")),t(e,31,0,n.configForm.getValue("long_desc")),t(e,33,0,""!==n.configForm.getValue("default")),t(e,35,0,""!==n.configForm.getValue("daemon_default")),t(e,37,0,n.configForm.getValue("services").length>0),t(e,39,0,"values"),t(e,45,0,n.availSections),t(e,49,0,s["ɵnov"](e,3))}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,11,0,n.configForm.getValue("name")),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,20,0,s["ɵnov"](e,26).ngClassUntouched,s["ɵnov"](e,26).ngClassTouched,s["ɵnov"](e,26).ngClassPristine,s["ɵnov"](e,26).ngClassDirty,s["ɵnov"](e,26).ngClassValid,s["ɵnov"](e,26).ngClassInvalid,s["ɵnov"](e,26).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass),t(e,38,0,s["ɵnov"](e,41).ngClassUntouched,s["ɵnov"](e,41).ngClassTouched,s["ɵnov"](e,41).ngClassPristine,s["ɵnov"](e,41).ngClassDirty,s["ɵnov"](e,41).ngClassValid,s["ɵnov"](e,41).ngClassInvalid,s["ɵnov"](e,41).ngClassPending)}))}function Jd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-configuration-form",[],null,null,null,$d,Pd)),s["ɵdid"](1,114688,null,0,Dd,[Et.a,Et.m,_l.a,bt.a,fe.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Zd=s["ɵccf"]("cd-configuration-form",Dd,Jd,{},{},[]),Qd=n("LOMR"),Xd=n("MP8s"),tc=n("fxL3"),ec=n("gk6K"),nc=n("mrSG"),ac=n("yYhs");class rc{constructor(t){this.healthService=t,this.icons=pt.a,this.loadingIndicator=!0,this.nodes=[],this.treeOptions={useVirtualScroll:!0,nodeHeight:22,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}},this.metadataKeyMap={}}ngOnInit(){this.healthService.getFullHealth().subscribe(t=>{this.loadingIndicator=!1,this.nodes=this.abstractTreeData(t)})}abstractTreeData(t){const e=t.osd_map.tree.nodes||[],n={};if(0===e.length)return[{name:"No nodes!"}];const a=[];return e.reverse().forEach(t=>{"root"===t.type&&a.push(t.id),n[t.id]=this.generateTreeLeaf(t,n)}),a.map(t=>n[t])}generateTreeLeaf(t,e){const n=t.id;this.metadataKeyMap[n]=t;const a=[],r={name:t.name+" ("+t.type+")",status:t.status,cdId:n,type:t.type};return t.children&&(t.children.sort().forEach(t=>{a.push(e[t])}),r.children=a),r}onNodeSelected(t,e){if(ac.a.ACTIVATE(t,e,!0),void 0!==e.data.cdId){const t=this.metadataKeyMap[e.data.cdId],{name:n,type:a}=t,r=nc.__rest(t,["name","type","status"]);this.metadata=r,this.metadataTitle=n+" ("+a+")"}else delete this.metadata,delete this.metadataTitle}onUpdateData(){this.tree.treeModel.expandAll()}}var ic=s["ɵcrt"]({encapsulation:0,styles:[[".tree-container[_ngcontent-%COMP%]{height:calc(100vh - 200px)}"]],data:{}});function sc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](3,3)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.large,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function uc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[["class","badge"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](3,2),s["ɵpad"](4,3),s["ɵpod"](5,{"badge-success":0,"badge-danger":1}),(t()(),s["ɵted"](6,null,[" "," "]))],(function(t,e){var n=t(e,5,0,t(e,3,0,"in","up").includes(e.parent.context.$implicit.data.status),t(e,4,0,"down","out","destroyed").includes(e.parent.context.$implicit.data.status));t(e,2,0,"badge",n)}),(function(t,e){t(e,6,0,e.parent.context.$implicit.data.status)}))}function oc(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,uc)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "])),(t()(),s["ɵeld"](4,0,null,null,3,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{"type-osd":0})],(function(t,e){t(e,1,0,e.context.$implicit.data.status);var n=t(e,7,0,"osd"===e.context.$implicit.data.type);t(e,6,0,"node-name",n)}),(function(t,e){t(e,4,0,e.context.$implicit.data.name)}))}function lc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[["class","col-sm-6 col-lg-6 metadata"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),(t()(),s["ɵeld"](3,0,null,null,1,"cd-table-key-value",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](4,638976,null,0,ki.a,[He.a],{data:[0,"data"]},null)],(function(t,e){t(e,4,0,e.component.metadata)}),(function(t,e){t(e,2,0,e.component.metadataTitle)}))}function dc(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tree:0}),(t()(),s["ɵeld"](1,0,null,null,19,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,18,"div",[["class","col-sm-12 col-lg-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,17,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CRUSH map viewer"])),(t()(),s["ɵeld"](6,0,null,null,14,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,10,"div",[["class","col-sm-6 col-lg-6 tree-container"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,sc)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](11,0,null,null,7,"tree-root",[],null,[[null,"updateData"],["body","keydown"],["body","mousedown"]],(function(t,e,n){var a=!0,r=t.component;return"body:keydown"===e&&(a=!1!==s["ɵnov"](t,13).onKeydown(n)&&a),"body:mousedown"===e&&(a=!1!==s["ɵnov"](t,13).onMousedown(n)&&a),"updateData"===e&&(a=!1!==r.onUpdateData()&&a),a}),Qd.b,Qd.a)),s["ɵprd"](131584,null,Xd.a,Xd.a,[]),s["ɵdid"](13,573440,[[1,4],["tree",4]],4,tc.a,[Xd.a,ec.a],{nodes:[0,"nodes"],options:[1,"options"]},{updateData:"updateData"}),s["ɵqud"](603979776,2,{loadingTemplate:0}),s["ɵqud"](603979776,3,{treeNodeTemplate:0}),s["ɵqud"](603979776,4,{treeNodeWrapperTemplate:0}),s["ɵqud"](603979776,5,{treeNodeFullTemplate:0}),(t()(),s["ɵand"](0,[[3,2],["treeNodeTemplate",2]],null,0,null,oc)),(t()(),s["ɵand"](16777216,null,null,1,null,lc)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,10,0,n.loadingIndicator),t(e,13,0,n.nodes,n.treeOptions),t(e,20,0,n.metadata)}),null)}function cc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-crushmap",[],null,null,null,dc,ic)),s["ɵdid"](1,114688,null,0,rc,[$a],null,null)],(function(t,e){t(e,1,0)}),null)}var fc=s["ɵccf"]("cd-crushmap",rc,cc,{},{},[]),hc=n("AfCQ");let gc=(()=>{class t{writeValue(e){return{type:t.WRITE_VALUE,payload:e}}changeHours(e){return{type:t.CHANGE_HOURS,payload:e}}changeMinutes(e){return{type:t.CHANGE_MINUTES,payload:e}}changeSeconds(e){return{type:t.CHANGE_SECONDS,payload:e}}setTime(e){return{type:t.SET_TIME_UNIT,payload:e}}updateControls(e){return{type:t.UPDATE_CONTROLS,payload:e}}}return t.WRITE_VALUE="[timepicker] write value from ng model",t.CHANGE_HOURS="[timepicker] change hours",t.CHANGE_MINUTES="[timepicker] change minutes",t.CHANGE_SECONDS="[timepicker] change seconds",t.SET_TIME_UNIT="[timepicker] set time unit",t.UPDATE_CONTROLS="[timepicker] update controls",t})();function pc(t){return!!t&&!(t instanceof Date&&isNaN(t.getHours()))&&("string"!=typeof t||pc(new Date(t)))}function bc(t,e){return!(t.min&&e<t.min||t.max&&e>t.max)}function mc(t){return"number"==typeof t?t:parseInt(t,10)}function yc(t,e=!1){const n=mc(t);return isNaN(n)||n<0||n>(e?12:24)?NaN:n}function vc(t){const e=mc(t);return isNaN(e)||e<0||e>60?NaN:e}function xc(t){const e=mc(t);return isNaN(e)||e<0||e>60?NaN:e}function _c(t){return"string"==typeof t?new Date(t):t}function Tc(t,e){if(!t)return Tc(Oc(new Date,0,0,0),e);let n=t.getHours(),a=t.getMinutes(),r=t.getSeconds();return e.hour&&(n+=mc(e.hour)),e.minute&&(a+=mc(e.minute)),e.seconds&&(r+=mc(e.seconds)),Oc(t,n,a,r)}function wc(t,e){let n=yc(e.hour);const a=vc(e.minute),r=xc(e.seconds)||0;return e.isPM&&12!==n&&(n+=12),t?isNaN(n)||isNaN(a)?t:Oc(t,n,a,r):isNaN(n)||isNaN(a)?t:Oc(new Date,n,a,r)}function Oc(t,e,n,a){const r=new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,n,a,t.getMilliseconds());return r.setFullYear(t.getFullYear()),r.setMonth(t.getMonth()),r.setDate(t.getDate()),r}function Sc(t){const e=t.toString();return e.length>1?e:"0"+e}function Ic(t,e){return!isNaN(yc(t,e))}function Nc(t){return!isNaN(vc(t))}function Cc(t){return!isNaN(xc(t))}function Rc(t,e="0",n="0",a){return Ic(t,a)&&Nc(e)&&Cc(n)}function Ac(t,e){if(t.readonlyInput||t.disabled)return!1;if(e){if("wheel"===e.source&&!t.mousewheel)return!1;if("key"===e.source&&!t.arrowkeys)return!1}return!0}function kc(t){const{hourStep:e,minuteStep:n,secondsStep:a,readonlyInput:r,disabled:i,mousewheel:s,arrowkeys:u,showSpinners:o,showMeridian:l,showSeconds:d,meridians:c,min:f,max:h}=t;return{hourStep:e,minuteStep:n,secondsStep:a,readonlyInput:r,disabled:i,mousewheel:s,arrowkeys:u,showSpinners:o,showMeridian:l,showSeconds:d,meridians:c,min:f,max:h}}class Ec{constructor(){this.hourStep=1,this.minuteStep=5,this.secondsStep=10,this.showMeridian=!0,this.meridians=["AM","PM"],this.readonlyInput=!1,this.disabled=!1,this.mousewheel=!0,this.arrowkeys=!0,this.showSpinners=!0,this.showSeconds=!1,this.showMinutes=!0,this.hoursPlaceholder="HH",this.minutesPlaceholder="MM",this.secondsPlaceholder="SS",this.ariaLabelHours="hours",this.ariaLabelMinutes="minutes",this.ariaLabelSeconds="seconds"}}const Lc={value:null,config:new Ec,controls:{canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0}};function Dc(t=Lc,e){switch(e.type){case gc.WRITE_VALUE:return Object.assign({},t,{value:e.payload});case gc.CHANGE_HOURS:{if(!Ac(t.config,e.payload)||(a=t.controls,!(n=e.payload).step||n.step>0&&!a.canIncrementHours||n.step<0&&!a.canDecrementHours))return t;const r=Tc(t.value,{hour:e.payload.step});return!t.config.max&&!t.config.min||bc(t.config,r)?Object.assign({},t,{value:r}):t}case gc.CHANGE_MINUTES:{if(!Ac(t.config,e.payload)||!function(t,e){return!(!t.step||t.step>0&&!e.canIncrementMinutes||t.step<0&&!e.canDecrementMinutes)}(e.payload,t.controls))return t;const n=Tc(t.value,{minute:e.payload.step});return!t.config.max&&!t.config.min||bc(t.config,n)?Object.assign({},t,{value:n}):t}case gc.CHANGE_SECONDS:{if(!Ac(t.config,e.payload)||!function(t,e){return!(!t.step||t.step>0&&!e.canIncrementSeconds||t.step<0&&!e.canDecrementSeconds)}(e.payload,t.controls))return t;const n=Tc(t.value,{seconds:e.payload.step});return!t.config.max&&!t.config.min||bc(t.config,n)?Object.assign({},t,{value:n}):t}case gc.SET_TIME_UNIT:{if(!Ac(t.config))return t;const n=wc(t.value,e.payload);return Object.assign({},t,{value:n})}case gc.UPDATE_CONTROLS:{const n=function(t,e){const{min:n,max:a,hourStep:r,minuteStep:i,secondsStep:s,showSeconds:u}=e,o={canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0};if(!t)return o;if(a){const e=Tc(t,{hour:r});if(o.canIncrementHours=a>e,!o.canIncrementHours){const e=Tc(t,{minute:i});o.canIncrementMinutes=u?a>e:a>=e}if(!o.canIncrementMinutes){const e=Tc(t,{seconds:s});o.canIncrementSeconds=a>=e}t.getHours()<12&&(o.canToggleMeridian=Tc(t,{hour:12})<a)}if(n){const e=Tc(t,{hour:-r});if(o.canDecrementHours=n<e,!o.canDecrementHours){const e=Tc(t,{minute:-i});o.canDecrementMinutes=u?n<e:n<=e}if(!o.canDecrementMinutes){const e=Tc(t,{seconds:-s});o.canDecrementSeconds=n<=e}t.getHours()>=12&&(o.canToggleMeridian=Tc(t,{hour:-12})>n)}return o}(t.value,e.payload),a={value:t.value,config:e.payload,controls:n};return t.config.showMeridian!==a.config.showMeridian&&t.value&&(a.value=new Date(t.value)),Object.assign({},t,a)}default:return t}var n,a}class Pc extends hc.b{constructor(){const t=new xe.a({type:"[mini-ngrx] dispatcher init"});super(t,Dc,new hc.a(Lc,t,Dc))}}class Mc{constructor(t,e,n,a){this._cd=e,this._store=n,this._timepickerActions=a,this.isValid=new s.EventEmitter,this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1,this.onChange=Function.prototype,this.onTouched=Function.prototype,Object.assign(this,t),this.timepickerSub=n.select(t=>t.value).subscribe(t=>{this._renderTime(t),this.onChange(t),this._store.dispatch(this._timepickerActions.updateControls(kc(this)))}),n.select(t=>t.controls).subscribe(t=>{this.isValid.emit(Rc(this.hours,this.minutes,this.seconds,this.isPM())),Object.assign(this,t),e.markForCheck()})}get isSpinnersVisible(){return this.showSpinners&&!this.readonlyInput}get isEditable(){return!(this.readonlyInput||this.disabled)}resetValidation(){this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1}isPM(){return this.showMeridian&&this.meridian===this.meridians[1]}prevDef(t){t.preventDefault()}wheelSign(t){return-1*Math.sign(t.deltaY)}ngOnChanges(t){this._store.dispatch(this._timepickerActions.updateControls(kc(this)))}changeHours(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeHours({step:t,source:e}))}changeMinutes(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeMinutes({step:t,source:e}))}changeSeconds(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeSeconds({step:t,source:e}))}updateHours(t){if(this.resetValidation(),this.hours=t,!Ic(this.hours,this.isPM())||!this.isValidLimit())return this.invalidHours=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}updateMinutes(t){if(this.resetValidation(),this.minutes=t,!Nc(this.minutes)||!this.isValidLimit())return this.invalidMinutes=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}updateSeconds(t){if(this.resetValidation(),this.seconds=t,!Cc(this.seconds)||!this.isValidLimit())return this.invalidSeconds=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}isValidLimit(){return function(t,e,n){const a=wc(new Date,t);return!(e&&a>e||n&&a<n)}({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()},this.max,this.min)}_updateTime(){if(!Rc(this.hours,this.showMinutes?this.minutes:void 0,this.showSeconds?this.seconds:void 0,this.isPM()))return this.isValid.emit(!1),void this.onChange(null);this._store.dispatch(this._timepickerActions.setTime({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()}))}toggleMeridian(){this.showMeridian&&this.isEditable&&this._store.dispatch(this._timepickerActions.changeHours({step:12,source:""}))}writeValue(t){pc(t)?this._store.dispatch(this._timepickerActions.writeValue(_c(t))):null==t&&this._store.dispatch(this._timepickerActions.writeValue(null))}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.disabled=t,this._cd.markForCheck()}ngOnDestroy(){this.timepickerSub.unsubscribe()}_renderTime(t){if(!pc(t))return this.hours="",this.minutes="",this.seconds="",void(this.meridian=this.meridians[0]);const e=_c(t);let n=e.getHours();this.showMeridian&&(this.meridian=this.meridians[n>=12?1:0],n%=12,0===n&&(n=12)),this.hours=Sc(n),this.minutes=Sc(e.getMinutes()),this.seconds=Sc(e.getUTCSeconds())}}class qc{static forRoot(){return{ngModule:qc,providers:[Ec,gc,Pc]}}}var jc=s["ɵcrt"]({encapsulation:2,styles:["\n    .bs-chevron {\n      border-style: solid;\n      display: block;\n      width: 9px;\n      height: 9px;\n      position: relative;\n      border-width: 3px 0px 0 3px;\n    }\n\n    .bs-chevron-up {\n      -webkit-transform: rotate(45deg);\n      transform: rotate(45deg);\n      top: 2px;\n    }\n\n    .bs-chevron-down {\n      -webkit-transform: rotate(-135deg);\n      transform: rotate(-135deg);\n      top: -2px;\n    }\n\n    .bs-timepicker-field {\n      width: 50px;\n      padding: .375rem .55rem;\n    }\n  "],data:{}});function Fc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function Vc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeMinutes(r.minuteStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canIncrementMinutes||!n.isEditable)}))}function Gc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "]))],null,null)}function Bc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeSeconds(r.secondsStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canIncrementSeconds||!n.isEditable)}))}function zc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function Yc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function Hc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" : "]))],null,null)}function Uc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeMinutes(r.minuteStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeMinutes(r.minuteStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeMinutes(0-r.minuteStep,"key")&&a),"change"===e&&(a=!1!==r.updateMinutes(n.target.value)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.invalidMinutes),t(e,1,0,n.invalidMinutes,n.minutesPlaceholder,n.readonlyInput,n.disabled,n.minutes,n.labelMinutes)}))}function Wc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" : "]))],null,null)}function Kc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeSeconds(r.secondsStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeSeconds(r.secondsStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeSeconds(0-r.secondsStep,"key")&&a),"change"===e&&(a=!1!==r.updateSeconds(n.target.value)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.invalidSeconds),t(e,1,0,n.invalidSeconds,n.secondsPlaceholder,n.readonlyInput,n.disabled,n.seconds,n.labelSeconds)}))}function $c(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function Jc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-default text-center"],["type","button"]],[[8,"disabled",0],[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleMeridian()&&a),a}),null,null)),(t()(),s["ɵted"](2,null,[""," "]))],null,(function(t,e){var n=e.component;t(e,1,0,!n.isEditable||!n.canToggleMeridian,!n.isEditable||!n.canToggleMeridian),t(e,2,0,n.meridian)}))}function Zc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function Qc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeMinutes(0-r.minuteStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canDecrementMinutes||!n.isEditable)}))}function Xc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "]))],null,null)}function tf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeSeconds(0-r.secondsStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canDecrementSeconds||!n.isEditable)}))}function ef(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function nf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function af(t){return s["ɵvid"](2,[(t()(),s["ɵeld"](0,0,null,null,48,"table",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,47,"tbody",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeHours(r.hourStep)&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Fc)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vc)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gc)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bc)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zc)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yc)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,14,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeHours(r.hourStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeHours(r.hourStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeHours(0-r.hourStep,"key")&&a),"change"===e&&(a=!1!==r.updateHours(n.target.value)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Hc)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Uc)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wc)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kc)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$c)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jc)),s["ɵdid"](32,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](33,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),s["ɵeld"](34,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeHours(0-r.hourStep)&&a),a}),null,null)),(t()(),s["ɵeld"](36,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Zc)),s["ɵdid"](38,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qc)),s["ɵdid"](40,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xc)),s["ɵdid"](42,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tf)),s["ɵdid"](44,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ef)),s["ɵdid"](46,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,nf)),s["ɵdid"](48,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,7,0,n.showMinutes),t(e,9,0,n.showMinutes),t(e,11,0,n.showSeconds),t(e,13,0,n.showSeconds),t(e,15,0,n.showMeridian),t(e,17,0,n.showMeridian),t(e,22,0,n.showMinutes),t(e,24,0,n.showMinutes),t(e,26,0,n.showSeconds),t(e,28,0,n.showSeconds),t(e,30,0,n.showMeridian),t(e,32,0,n.showMeridian),t(e,38,0,n.showMinutes),t(e,40,0,n.showMinutes),t(e,42,0,n.showSeconds),t(e,44,0,n.showSeconds),t(e,46,0,n.showMeridian),t(e,48,0,n.showMeridian)}),(function(t,e){var n=e.component;t(e,2,0,!n.showSpinners),t(e,4,0,!n.canIncrementHours||!n.isEditable),t(e,19,0,n.invalidHours),t(e,20,0,n.invalidHours,n.hoursPlaceholder,n.readonlyInput,n.disabled,n.hours,n.labelHours),t(e,33,0,!n.showSpinners),t(e,35,0,!n.canDecrementHours||!n.isEditable)}))}var rf=n("E2fk");let sf=(()=>{class t{constructor(t){this.http=t}getLogs(){return this.http.get("api/logs/all")}validateDashboardUrl(t){return this.http.get("api/grafana/validation/"+t)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t})();class uf{constructor(t,e,n){this.logsService=t,this.datePipe=e,this.ngZone=n,this.icons=pt.a,this.bsConfig={dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default"},this.prioritys=[{name:"Info",value:"[INF]"},{name:"Warning",value:"[WRN]"},{name:"Error",value:"[ERR]"},{name:"All",value:"All"}],this.priority="All",this.search="",this.startTime=new Date,this.endTime=new Date,this.startTime.setHours(0,0),this.endTime.setHours(23,59)}ngOnInit(){this.getInfo(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.getInfo()})},5e3)})}ngOnDestroy(){clearInterval(this.interval)}getInfo(){this.logsService.getLogs().subscribe(t=>{this.contentData=t,this.filterLogs()})}abstractfilters(){const t=this.priority,e=this.search.toLowerCase().replace(/,/g,"");let n;if(this.selectedDate){const t=this.selectedDate.getMonth()+1,e=this.selectedDate.getDate();n=`${this.selectedDate.getFullYear().toString()}-${t<=9?"0"+t:""+t}-${e<=9?"0"+e:""+e}`}else n="";return{priority:t,key:e,yearMonthDay:n,sTime:60*(this.startTime?this.startTime.getHours():0)+(this.startTime?this.startTime.getMinutes():0),eTime:60*(this.endTime?this.endTime.getHours():23)+(this.endTime?this.endTime.getMinutes():59)}}filterExecutor(t,e){return t.filter(t=>{const n=this.datePipe.transform(t.stamp,"mediumTime"),a=parseInt(n.split(":")[0],10),r=parseInt(n.split(":")[1],10);let i,s,u;return i="All"===e.priority?t.priority:e.priority,s=e.yearMonthDay?e.yearMonthDay:t.stamp,u=60*a+r,t.priority===i&&-1!==t.message.toLowerCase().indexOf(e.key)&&-1!==t.stamp.indexOf(s)&&u>=e.sTime&&u<=e.eTime})}filterLogs(){const t=this.abstractfilters();this.clog=this.filterExecutor(this.contentData.clog,t),this.audit_log=this.filterExecutor(this.contentData.audit_log,t)}clearSearchKey(){this.search="",this.filterLogs()}clearDate(){this.selectedDate=null,this.filterLogs()}}var of=s["ɵcrt"]({encapsulation:0,styles:[["p[_ngcontent-%COMP%]{font-family:monospace}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{display:flex}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.card[_ngcontent-%COMP%]   .timestamp[_ngcontent-%COMP%]{font-weight:700;flex-shrink:0}.card[_ngcontent-%COMP%]   .priority[_ngcontent-%COMP%]{margin-left:.5rem}.card[_ngcontent-%COMP%]   .message[_ngcontent-%COMP%]{margin-left:1rem}.card[_ngcontent-%COMP%]   .err[_ngcontent-%COMP%]{color:#a94442}.card[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{color:#ffc200}.card[_ngcontent-%COMP%]   .info[_ngcontent-%COMP%]{color:#2b99a8}  timepicker table tbody tr td input.bs-timepicker-field{width:3.5rem!important;font-size:1rem;padding:4px 6px}.middle[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function lf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function df(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),s["ɵppd"](3,1),(t()(),s["ɵeld"](4,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),s["ɵppd"](5,1),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""]))],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.stamp));t(e,2,0,n);var a=s["ɵinlineInterpolate"](1,"priority ",s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent,1),e.context.$implicit.priority)),"");t(e,4,0,a),t(e,6,0,e.context.$implicit.priority),t(e,8,0,e.context.$implicit.message)}))}function cf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["No entries found"]))],null,null)}function ff(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","card bg-light mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,df)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cf)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.clog),t(e,5,0,0===n.contentData.clog.length)}),null)}function hf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),s["ɵppd"](3,1),(t()(),s["ɵeld"](4,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),s["ɵppd"](5,1),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""]))],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.stamp));t(e,2,0,n);var a=s["ɵinlineInterpolate"](1,"priority ",s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent,1),e.context.$implicit.priority)),"");t(e,4,0,a),t(e,6,0,e.context.$implicit.priority),t(e,8,0,e.context.$implicit.message)}))}function gf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["No entries found"]))],null,null)}function pf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","card bg-light mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,hf)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gf)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.audit_log),t(e,5,0,0===n.contentData.audit_log.length)}),null)}function bf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,lf)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](3,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](4,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](5,0,null,0,3,"tab",[["heading","Cluster Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](6,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ff)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,0,3,"tab",[["heading","Audit Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](10,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pf)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,s["ɵnov"](e.parent,4)),t(e,6,0,"Cluster Logs"),t(e,8,0,n.clog),t(e,10,0,"Audit Logs"),t(e,12,0,n.audit_log)}),(function(t,e){t(e,3,0,s["ɵnov"](e,4).clazz),t(e,5,0,s["ɵnov"](e,6).id,s["ɵnov"](e,6).active,s["ɵnov"](e,6).addClass,s["ɵnov"](e,6).role,s["ɵnov"](e,6).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby)}))}function mf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function yf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,84,"div",[["class","form-inline"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Priority:"])),(t()(),s["ɵeld"](7,0,null,0,9,"select",[["class","form-control custom-select"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,9).onTouched()&&a),"ngModelChange"===e&&(a=!1!==(r.priority=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](11,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](13,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,mf)),s["ɵdid"](16,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](17,0,null,null,23,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](18,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](21,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Keyword:"])),(t()(),s["ɵeld"](23,0,null,0,17,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,5,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),s["ɵeld"](25,0,null,null,4,"span",[["class","input-group-text"]],null,null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](28,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](29,1),(t()(),s["ɵeld"](30,0,null,null,7,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,32)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,32).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,32)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,32)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.search=n)&&a),"keyup"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](31,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](32,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](34,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](36,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](37,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵeld"](38,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](39,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.clearSearchKey()&&a),a}),null,null)),(t()(),s["ɵeld"](40,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](41,0,null,null,20,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](42,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](45,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Date:"])),(t()(),s["ɵeld"](47,0,null,0,14,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](48,16777216,null,null,10,"input",[["bsDatepicker",""],["class","form-control"],["placeholder","Datepicker"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,50)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,50).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,50)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,50)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,52).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,52).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,52).onBlur()&&a),"ngModelChange"===e&&(a=!1!==(r.selectedDate=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](49,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](50,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](51,737280,null,0,st.c,[st.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](52,16384,null,0,st.f,[st.c,st.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[st.f]),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,st.f]),s["ɵdid"](55,671744,null,0,K.u,[[8,null],[6,K.o],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](57,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](58,16384,null,0,Q.h,[[8,null],Q.a],null,null),(t()(),s["ɵeld"](59,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](60,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.clearDate()&&a),a}),null,null)),(t()(),s["ɵeld"](61,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](62,0,null,null,22,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](63,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](66,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Time range:"])),(t()(),s["ɵeld"](68,0,null,0,16,"div",[["class","d-inline-flex"]],null,null,null,null,null)),(t()(),s["ɵeld"](69,0,null,null,6,"timepicker",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"]],(function(t,e,n){var a=!0,r=t.component;return"ngModelChange"===e&&(a=!1!==(r.startTime=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),af,jc)),s["ɵprd"](512,null,Pc,Pc,[]),s["ɵdid"](71,704512,null,0,Mc,[Ec,s.ChangeDetectorRef,Pc,gc],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[Mc]),s["ɵdid"](73,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](75,16384,null,0,K.r,[[4,K.q]],null,null),(t()(),s["ɵeld"](76,0,null,null,1,"span",[["class","middle"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" — "])),(t()(),s["ɵeld"](78,0,null,null,6,"timepicker",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"]],(function(t,e,n){var a=!0,r=t.component;return"ngModelChange"===e&&(a=!1!==(r.endTime=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),af,jc)),s["ɵprd"](512,null,Pc,Pc,[]),s["ɵdid"](80,704512,null,0,Mc,[Ec,s.ChangeDetectorRef,Pc,gc],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[Mc]),s["ɵdid"](82,671744,null,0,K.u,[[8,null],[8,null],[8,null],[6,K.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](84,16384,null,0,K.r,[[4,K.q]],null,null)],(function(t,e){var n=e.component;t(e,2,0),t(e,11,0,n.priority),t(e,16,0,n.prioritys),t(e,18,0);var a=t(e,29,0,n.icons.search);t(e,28,0,a),t(e,34,0,n.search),t(e,42,0),t(e,51,0,n.bsConfig),t(e,55,0,n.selectedDate),t(e,63,0),t(e,71,0,1,!1,!1),t(e,73,0,n.startTime),t(e,80,0,1,!1,!1),t(e,82,0,n.endTime)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,13).ngClassUntouched,s["ɵnov"](e,13).ngClassTouched,s["ɵnov"](e,13).ngClassPristine,s["ɵnov"](e,13).ngClassDirty,s["ɵnov"](e,13).ngClassValid,s["ɵnov"](e,13).ngClassInvalid,s["ɵnov"](e,13).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass),t(e,17,0,s["ɵnov"](e,18).hasErrors,s["ɵnov"](e,18).hasSuccess),t(e,30,0,s["ɵnov"](e,36).ngClassUntouched,s["ɵnov"](e,36).ngClassTouched,s["ɵnov"](e,36).ngClassPristine,s["ɵnov"](e,36).ngClassDirty,s["ɵnov"](e,36).ngClassValid,s["ɵnov"](e,36).ngClassInvalid,s["ɵnov"](e,36).ngClassPending,s["ɵnov"](e,37).validClass,s["ɵnov"](e,37).invalidClass),t(e,40,0,s["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,"")),t(e,41,0,s["ɵnov"](e,42).hasErrors,s["ɵnov"](e,42).hasSuccess),t(e,48,0,s["ɵnov"](e,57).ngClassUntouched,s["ɵnov"](e,57).ngClassTouched,s["ɵnov"](e,57).ngClassPristine,s["ɵnov"](e,57).ngClassDirty,s["ɵnov"](e,57).ngClassValid,s["ɵnov"](e,57).ngClassInvalid,s["ɵnov"](e,57).ngClassPending,s["ɵnov"](e,58).validClass,s["ɵnov"](e,58).invalidClass),t(e,61,0,s["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,"")),t(e,62,0,s["ɵnov"](e,63).hasErrors,s["ɵnov"](e,63).hasSuccess),t(e,69,0,s["ɵnov"](e,75).ngClassUntouched,s["ɵnov"](e,75).ngClassTouched,s["ɵnov"](e,75).ngClassPristine,s["ɵnov"](e,75).ngClassDirty,s["ɵnov"](e,75).ngClassValid,s["ɵnov"](e,75).ngClassInvalid,s["ɵnov"](e,75).ngClassPending),t(e,78,0,s["ɵnov"](e,84).ngClassUntouched,s["ɵnov"](e,84).ngClassTouched,s["ɵnov"](e,84).ngClassPristine,s["ɵnov"](e,84).ngClassDirty,s["ɵnov"](e,84).ngClassValid,s["ɵnov"](e,84).ngClassInvalid,s["ɵnov"](e,84).ngClassPending)}))}function vf(t){return s["ɵvid"](0,[s["ɵpid"](0,He.a,[i.DatePipe]),s["ɵpid"](0,rf.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,bf)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["logFiltersTpl",2]],null,0,null,yf))],(function(t,e){t(e,3,0,e.component.contentData)}),null)}function xf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-logs",[],null,null,null,vf,of)),s["ɵdid"](1,245760,null,0,uf,[sf,i.DatePipe,s.NgZone],null,null)],(function(t,e){t(e,1,0)}),null)}var _f=s["ɵccf"]("cd-logs",uf,xf,{},{},[]);let Tf=(()=>{class t{constructor(t,e,n,a,r,i,s,u){this.formBuilder=t,this.mgrModuleService=e,this.notificationService=n,this.router=a,this.telemetryService=r,this.i18n=i,this.textToDownloadService=s,this.telemetryNotificationService=u,this.error=!1,this.licenseAgrmt=!1,this.loading=!1,this.options={},this.requiredFields=["channel_basic","channel_crash","channel_device","channel_ident","interval","proxy","contact","description"],this.report=void 0,this.reportId=void 0,this.sendToUrl="",this.sendToDeviceUrl="",this.step=1}ngOnInit(){this.loading=!0;const t=[this.mgrModuleService.getOptions("telemetry"),this.mgrModuleService.getConfig("telemetry")];Object(ml.a)(t).subscribe(t=>{const e=t[1];this.moduleEnabled=e.enabled,this.sendToUrl=e.url,this.sendToDeviceUrl=e.device_url,this.options=X.pick(t[0],this.requiredFields);const n=X.pick(e,this.requiredFields);this.createConfigForm(),this.configForm.setValue(n),this.loading=!1},t=>{this.error=!0})}createConfigForm(){const t={};X.forEach(Object.values(this.options),e=>{t[e.name]=[e.default_value,this.getValidators(e)]}),this.configForm=this.formBuilder.group(t)}createPreviewForm(){const t={report:JSON.stringify(this.report,null,2),reportId:this.reportId,licenseAgrmt:[this.licenseAgrmt,K.B.requiredTrue]};this.previewForm=this.formBuilder.group(t)}getValidators(t){const e=[];switch(t.type){case"int":e.push(eu.a.number()),e.push(K.B.required),X.isNumber(t.min)&&e.push(K.B.min(t.min)),X.isNumber(t.max)&&e.push(K.B.max(t.max));break;case"str":X.isNumber(t.min)&&e.push(K.B.minLength(t.min)),X.isNumber(t.max)&&e.push(K.B.maxLength(t.max))}return e}getReport(){this.loading=!0,this.telemetryService.getReport().subscribe(t=>{this.report=t,this.reportId=t.report.report_id,this.createPreviewForm(),this.loading=!1,this.step++},t=>{this.error=!0})}updateConfig(){const t={};X.forEach(Object.values(this.options),e=>{const n=this.configForm.get(e.name);n.dirty&&n.valid&&(t[e.name]=n.value)}),this.mgrModuleService.updateConfig("telemetry",t).subscribe(()=>{this.disableModule(this.i18n("Your settings have been applied successfully. Due to privacy/legal reasons the Telemetry module is now disabled until you complete the next step and accept the license."),()=>{this.getReport()})},()=>{this.configForm.setErrors({cdSubmitButton:!0})})}download(t,e){this.textToDownloadService.download(JSON.stringify(t,null,2),e)}disableModule(t=null,e=null){this.telemetryService.enable(!1).subscribe(()=>{this.telemetryNotificationService.setVisibility(!0),t&&this.notificationService.show(le.a.success,t),e?e():this.router.navigate([""])})}next(){this.configForm.pristine?this.getReport():this.updateConfig()}back(){this.step--}onSubmit(){this.telemetryService.enable().subscribe(()=>{this.telemetryNotificationService.setVisibility(!1),this.notificationService.show(le.a.success,this.i18n("The Telemetry module has been configured and activated successfully.")),this.router.navigate([""])})}}return nc.__decorate([E(),nc.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t})(),wf=(()=>{class t{constructor(t){this.http=t,this.url="api/telemetry"}getReport(){return this.http.get(this.url+"/report")}enable(t=!0){const e={enable:t};return t&&(e.license_name="sharing-1-0"),this.http.put(""+this.url,e)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t})();var Of=n("Iab2");let Sf=(()=>{class t{constructor(){}download(t,e){Object(Of.saveAs)(new Blob([t]),e)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();var If=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Nf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ei.b,Ei.a)),s["ɵdid"](1,49152,null,0,Li.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading configuration..."]))],null,null)}function Cf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The configuration could not be loaded."]))],(function(t,e){t(e,1,0,"error")}),null)}function Rf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" The plugin is already "])),(t()(),s["ɵeld"](2,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["enabled"])),(t()(),s["ɵted"](-1,null,[". Click "])),(t()(),s["ɵeld"](5,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Deactivate"])),(t()(),s["ɵted"](-1,null,[" to disable it.  "])),(t()(),s["ɵeld"](8,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.disableModule("The Telemetry module has been disabled successfully.")&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Deactivate"]))],null,null)}function Af(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value is too low! It must be greater or equal to 8."]))],null,null)}function kf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,232,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,231,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,225,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["Step "," of 2: Telemetry report configuration"])),(t()(),s["ɵeld"](10,0,null,null,217,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,12,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The telemetry module sends anonymous data about this Ceph cluster back to the Ceph developers to help understand how Ceph is used and what problems users may be experiencing."])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" This data is visualized on "])),(t()(),s["ɵeld"](15,0,null,null,1,"a",[["href","https://telemetry-public.ceph.com/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["public dashboards"])),(t()(),s["ɵted"](-1,null,[" that allow the community to quickly see summary statistics on how many clusters are reporting, their total capacity and OSD count, and version distribution trends."])),(t()(),s["ɵeld"](18,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" The data being reported does "])),(t()(),s["ɵeld"](21,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["not"])),(t()(),s["ɵted"](23,null,[" contain any sensitive data like pool names, object names, object contents, hostnames, or device serial numbers. It contains counters and statistics on how the cluster has been deployed, the version of Ceph, the distribution of the hosts and other parameters which help the project to gain a better understanding of the way Ceph is used. The data is sent secured to "," and "," (device report)."])),(t()(),s["ɵand"](16777216,null,null,1,null,Rf)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Channels"])),(t()(),s["ɵeld"](28,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,['The telemetry report is broken down into several "channels", each with a different type of information that can be configured below.'])),(t()(),s["ɵeld"](30,0,null,null,32,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](31,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](34,0,null,0,17,"label",[["class","cd-col-form-label"],["for","channel_basic"]],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Basic"])),(t()(),s["ɵeld"](37,0,null,null,14,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](38,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](39,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes basic information about the cluster:"])),(t()(),s["ɵeld"](41,0,null,0,10,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](42,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Capacity of the cluster"])),(t()(),s["ɵeld"](44,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Number of monitors, managers, OSDs, MDSs, object gateways, or other daemons"])),(t()(),s["ɵeld"](46,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Software version currently being used"])),(t()(),s["ɵeld"](48,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Number and types of RADOS pools and CephFS file systems"])),(t()(),s["ɵeld"](50,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Names of configuration options that have been changed from their default (but not their values)"])),(t()(),s["ɵeld"](52,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](54,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","channel_basic"],["id","channel_basic"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,56).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,56).onTouched()&&a),a}),null,null)),s["ɵdid"](55,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](56,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](58,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](60,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](61,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](62,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_basic"]],null,null,null,null,null)),(t()(),s["ɵeld"](63,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](64,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](67,0,null,0,15,"label",[["class","cd-col-form-label"],["for","channel_crash"]],null,null,null,null,null)),(t()(),s["ɵeld"](68,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Crash"])),(t()(),s["ɵeld"](70,0,null,null,12,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](71,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](72,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes information about daemon crashes:"])),(t()(),s["ɵeld"](74,0,null,0,8,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type of daemon"])),(t()(),s["ɵeld"](77,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Version of the daemon"])),(t()(),s["ɵeld"](79,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Operating system (OS distribution, kernel version)"])),(t()(),s["ɵeld"](81,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Stack trace identifying where in the Ceph code the crash occurred"])),(t()(),s["ɵeld"](83,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](84,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](85,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","channel_crash"],["id","channel_crash"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,87).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,87).onTouched()&&a),a}),null,null)),s["ɵdid"](86,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](87,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](89,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](91,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](92,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](93,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_crash"]],null,null,null,null,null)),(t()(),s["ɵeld"](94,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](95,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](98,0,null,0,4,"label",[["class","cd-col-form-label"],["for","channel_device"]],null,null,null,null,null)),(t()(),s["ɵeld"](99,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Device"])),(t()(),s["ɵeld"](101,0,null,null,1,"cd-helper",[["html","Includes information about device metrics like anonymized SMART metrics."]],null,null,null,Ju.b,Ju.a)),s["ɵdid"](102,49152,null,0,Zu.a,[],{html:[0,"html"]},null),(t()(),s["ɵeld"](103,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](104,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](105,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","channel_device"],["id","channel_device"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,107).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,107).onTouched()&&a),a}),null,null)),s["ɵdid"](106,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](107,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](109,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](111,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](112,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](113,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_device"]],null,null,null,null,null)),(t()(),s["ɵeld"](114,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](115,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](118,0,null,0,11,"label",[["class","cd-col-form-label"],["for","channel_ident"]],null,null,null,null,null)),(t()(),s["ɵeld"](119,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ident"])),(t()(),s["ɵeld"](121,0,null,null,8,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](122,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](123,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes user-provided identifying information about the cluster:"])),(t()(),s["ɵeld"](125,0,null,0,4,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](126,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster description"])),(t()(),s["ɵeld"](128,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact email address"])),(t()(),s["ɵeld"](130,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](131,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](132,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","channel_ident"],["id","channel_ident"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,134).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,134).onTouched()&&a),a}),null,null)),s["ɵdid"](133,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](134,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](136,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](138,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](139,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](140,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_ident"]],null,null,null,null,null)),(t()(),s["ɵeld"](141,0,null,null,5,"legend",[],null,null,null,null,null)),(t()(),s["ɵeld"](142,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact Information"])),(t()(),s["ɵeld"](144,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](145,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](-1,0,["Submitting any contact information is completely optional and disabled by default."])),(t()(),s["ɵeld"](147,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](148,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](151,0,null,0,1,"label",[["class","cd-col-form-label"],["for","contact"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact"])),(t()(),s["ɵeld"](153,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](154,0,null,null,7,"input",[["class","form-control"],["formControlName","contact"],["id","contact"],["placeholder","Example User <user@example.com>"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,156)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,156).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,156)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,156)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](155,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](156,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](158,671744,[[9,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](160,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](161,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](162,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](163,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](166,0,null,0,1,"label",[["class","cd-col-form-label"],["for","description"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](168,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](169,0,null,null,7,"input",[["class","form-control"],["formControlName","description"],["id","description"],["placeholder","My first Ceph cluster"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,171)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,171).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,171)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,171)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](170,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](171,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](173,671744,[[11,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](175,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](176,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](177,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Advanced Settings"])),(t()(),s["ɵeld"](179,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](180,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](183,0,null,0,5,"label",[["class","cd-col-form-label"],["for","interval"]],null,null,null,null,null)),(t()(),s["ɵeld"](184,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Interval"])),(t()(),s["ɵeld"](186,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](187,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](-1,0,["The module compiles and sends a new report every 24 hours by default. You can adjust this interval by setting a different number of hours."])),(t()(),s["ɵeld"](189,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](190,0,null,null,8,"input",[["class","form-control"],["formControlName","interval"],["id","interval"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,192)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,192).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,192)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,192)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,193).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,193).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,193).onTouched()&&a),a}),null,null)),s["ɵdid"](191,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](192,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](193,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](195,671744,[[13,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](197,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](198,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Af)),s["ɵdid"](200,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](201,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](202,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](205,0,null,0,8,"label",[["class","cd-col-form-label"],["for","proxy"]],null,null,null,null,null)),(t()(),s["ɵeld"](206,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Proxy"])),(t()(),s["ɵeld"](208,0,null,null,5,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](209,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](210,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["If the cluster cannot directly connect to the configured telemetry endpoint (default telemetry.ceph.com), you can configure a HTTP/HTTPS proxy server by e.g. adding https://10.0.0.1:8080"])),(t()(),s["ɵeld"](212,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You can also include a user:pass if needed e.g. https://ceph:telemetry@10.0.0.1:8080"])),(t()(),s["ɵeld"](214,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](215,0,null,null,7,"input",[["class","form-control"],["formControlName","proxy"],["id","proxy"],["placeholder","https://10.0.0.1:8080"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,217)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,217).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,217)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,217)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](216,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](217,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](219,671744,[[15,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](221,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](222,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](223,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](224,0,null,null,3,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](225,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Note:"])),(t()(),s["ɵted"](-1,null,[" By clicking 'Next' you will first see a preview of the report content before you can activate the automatic submission of your data."])),(t()(),s["ɵeld"](228,0,null,null,4,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](229,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](230,0,null,null,2,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.next()&&a),a}),null,null)),(t()(),s["ɵeld"](231,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Next"]))],(function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,6,0,n.configForm),t(e,25,0,n.moduleEnabled),t(e,31,0),t(e,58,0,"channel_basic"),t(e,61,0,"channel_basic"),t(e,64,0),t(e,89,0,"channel_crash"),t(e,92,0,"channel_crash"),t(e,95,0),t(e,102,0,"Includes information about device metrics like anonymized SMART metrics."),t(e,109,0,"channel_device"),t(e,112,0,"channel_device"),t(e,115,0),t(e,136,0,"channel_ident"),t(e,139,0,"channel_ident"),t(e,148,0),t(e,158,0,"contact"),t(e,161,0,"contact"),t(e,163,0),t(e,173,0,"description"),t(e,176,0,"description"),t(e,180,0),t(e,195,0,"interval"),t(e,198,0,"interval"),t(e,200,0,n.configForm.showError("interval",s["ɵnov"](e,3),"min")),t(e,202,0),t(e,219,0,"proxy"),t(e,222,0,"proxy")}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,9,0,n.step),t(e,23,0,n.sendToUrl,n.sendToDeviceUrl),t(e,30,0,s["ɵnov"](e,31).hasErrors,s["ɵnov"](e,31).hasSuccess),t(e,54,0,s["ɵnov"](e,60).ngClassUntouched,s["ɵnov"](e,60).ngClassTouched,s["ɵnov"](e,60).ngClassPristine,s["ɵnov"](e,60).ngClassDirty,s["ɵnov"](e,60).ngClassValid,s["ɵnov"](e,60).ngClassInvalid,s["ɵnov"](e,60).ngClassPending,s["ɵnov"](e,61).validClass,s["ɵnov"](e,61).invalidClass),t(e,63,0,s["ɵnov"](e,64).hasErrors,s["ɵnov"](e,64).hasSuccess),t(e,85,0,s["ɵnov"](e,91).ngClassUntouched,s["ɵnov"](e,91).ngClassTouched,s["ɵnov"](e,91).ngClassPristine,s["ɵnov"](e,91).ngClassDirty,s["ɵnov"](e,91).ngClassValid,s["ɵnov"](e,91).ngClassInvalid,s["ɵnov"](e,91).ngClassPending,s["ɵnov"](e,92).validClass,s["ɵnov"](e,92).invalidClass),t(e,94,0,s["ɵnov"](e,95).hasErrors,s["ɵnov"](e,95).hasSuccess),t(e,105,0,s["ɵnov"](e,111).ngClassUntouched,s["ɵnov"](e,111).ngClassTouched,s["ɵnov"](e,111).ngClassPristine,s["ɵnov"](e,111).ngClassDirty,s["ɵnov"](e,111).ngClassValid,s["ɵnov"](e,111).ngClassInvalid,s["ɵnov"](e,111).ngClassPending,s["ɵnov"](e,112).validClass,s["ɵnov"](e,112).invalidClass),t(e,114,0,s["ɵnov"](e,115).hasErrors,s["ɵnov"](e,115).hasSuccess),t(e,132,0,s["ɵnov"](e,138).ngClassUntouched,s["ɵnov"](e,138).ngClassTouched,s["ɵnov"](e,138).ngClassPristine,s["ɵnov"](e,138).ngClassDirty,s["ɵnov"](e,138).ngClassValid,s["ɵnov"](e,138).ngClassInvalid,s["ɵnov"](e,138).ngClassPending,s["ɵnov"](e,139).validClass,s["ɵnov"](e,139).invalidClass),t(e,147,0,s["ɵnov"](e,148).hasErrors,s["ɵnov"](e,148).hasSuccess),t(e,154,0,s["ɵnov"](e,160).ngClassUntouched,s["ɵnov"](e,160).ngClassTouched,s["ɵnov"](e,160).ngClassPristine,s["ɵnov"](e,160).ngClassDirty,s["ɵnov"](e,160).ngClassValid,s["ɵnov"](e,160).ngClassInvalid,s["ɵnov"](e,160).ngClassPending,s["ɵnov"](e,161).validClass,s["ɵnov"](e,161).invalidClass),t(e,162,0,s["ɵnov"](e,163).hasErrors,s["ɵnov"](e,163).hasSuccess),t(e,169,0,s["ɵnov"](e,175).ngClassUntouched,s["ɵnov"](e,175).ngClassTouched,s["ɵnov"](e,175).ngClassPristine,s["ɵnov"](e,175).ngClassDirty,s["ɵnov"](e,175).ngClassValid,s["ɵnov"](e,175).ngClassInvalid,s["ɵnov"](e,175).ngClassPending,s["ɵnov"](e,176).validClass,s["ɵnov"](e,176).invalidClass),t(e,179,0,s["ɵnov"](e,180).hasErrors,s["ɵnov"](e,180).hasSuccess),t(e,190,0,s["ɵnov"](e,197).ngClassUntouched,s["ɵnov"](e,197).ngClassTouched,s["ɵnov"](e,197).ngClassPristine,s["ɵnov"](e,197).ngClassDirty,s["ɵnov"](e,197).ngClassValid,s["ɵnov"](e,197).ngClassInvalid,s["ɵnov"](e,197).ngClassPending,s["ɵnov"](e,198).validClass,s["ɵnov"](e,198).invalidClass),t(e,201,0,s["ɵnov"](e,202).hasErrors,s["ɵnov"](e,202).hasSuccess),t(e,215,0,s["ɵnov"](e,221).ngClassUntouched,s["ɵnov"](e,221).ngClassTouched,s["ɵnov"](e,221).ngClassPristine,s["ɵnov"](e,221).ngClassDirty,s["ɵnov"](e,221).ngClassValid,s["ɵnov"](e,221).ngClassInvalid,s["ɵnov"](e,221).ngClassPending,s["ɵnov"](e,222).validClass,s["ɵnov"](e,222).invalidClass)}))}function Ef(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,79,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,78,"form",[["name","previewForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,72,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["Step "," of 2: Telemetry report preview"])),(t()(),s["ɵeld"](10,0,null,null,61,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](12,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,17,{FormControlNames:1}),s["ɵqud"](603979776,18,{messagesBlock:0}),(t()(),s["ɵeld"](15,0,null,0,3,"label",[["class","cd-col-form-label"],["for","reportId"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Report ID "])),(t()(),s["ɵeld"](17,0,null,null,1,"cd-helper",[["html","A randomized UUID to identify a particular cluster over the course of several telemetry reports."]],null,null,null,Ju.b,Ju.a)),s["ɵdid"](18,49152,null,0,Zu.a,[],{html:[0,"html"]},null),(t()(),s["ɵeld"](19,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,7,"input",[["class","form-control"],["formControlName","reportId"],["id","reportId"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,22)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,22).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,22)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,22)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](24,671744,[[17,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](26,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](28,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](29,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,19,{FormControlNames:1}),s["ɵqud"](603979776,20,{messagesBlock:0}),(t()(),s["ɵeld"](32,0,null,0,3,"label",[["class","cd-col-form-label"],["for","report"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Report preview "])),(t()(),s["ɵeld"](34,0,null,null,1,"cd-helper",[["html","The actual telemetry data that will be submitted."]],null,null,null,Ju.b,Ju.a)),s["ɵdid"](35,49152,null,0,Zu.a,[],{html:[0,"html"]},null),(t()(),s["ɵeld"](36,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](37,0,null,null,6,"textarea",[["class","form-control"],["formControlName","report"],["id","report"],["readonly",""],["rows","15"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,38)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,38).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,38)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,38)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](38,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](40,671744,[[19,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](42,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](43,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](44,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](45,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,21,{FormControlNames:1}),s["ɵqud"](603979776,22,{messagesBlock:0}),(t()(),s["ɵeld"](48,0,null,0,4,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,1,"button",[["class","btn btn-light mr-2"],["title","Download"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.download(r.report,"telemetry_report.json")&&a),a}),null,null)),(t()(),s["ɵeld"](50,0,null,null,0,"i",[["class","fa fa-download"]],null,null,null,null,null)),(t()(),s["ɵeld"](51,0,null,null,1,"button",[["cdCopy2ClipboardButton","report"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,52).onClick()&&a),a}),null,null)),s["ɵdid"](52,81920,null,0,Xu.a,[s.ElementRef,s.Renderer2,d.j,fe.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(t()(),s["ɵeld"](53,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](54,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,23,{FormControlNames:1}),s["ɵqud"](603979776,24,{messagesBlock:0}),(t()(),s["ɵeld"](57,0,null,0,14,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](58,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","licenseAgrmt"],["id","licenseAgrmt"],["name","licenseAgrmt"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,61).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,61).onTouched()&&a),a}),null,null)),s["ɵdid"](60,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](61,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](63,671744,[[23,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](65,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](66,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](67,0,null,null,4,"label",[["class","custom-control-label"],["for","licenseAgrmt"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["I agree to my telemetry data being submitted under the Community Data License Agreement - Sharing - Version 1.0 ("])),(t()(),s["ɵeld"](69,0,null,null,1,"a",[["href","https://cdla.io/sharing-1-0/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["https://cdla.io/sharing-1-0/"])),(t()(),s["ɵted"](-1,null,[")"])),(t()(),s["ɵeld"](72,0,null,null,7,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](73,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](74,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),$s.b,$s.a)),s["ɵdid"](75,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](76,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Save"])),(t()(),s["ɵeld"](78,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.back()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){var n=e.component;t(e,3,0,n.previewForm),t(e,6,0,n.previewForm),t(e,12,0),t(e,18,0,"A randomized UUID to identify a particular cluster over the course of several telemetry reports."),t(e,24,0,"reportId"),t(e,27,0,"reportId"),t(e,29,0),t(e,35,0,"The actual telemetry data that will be submitted."),t(e,40,0,"report"),t(e,43,0,"report"),t(e,45,0),t(e,52,0,"report"),t(e,54,0),t(e,63,0,"licenseAgrmt"),t(e,66,0,"licenseAgrmt"),t(e,75,0,n.previewForm)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,9,0,n.step),t(e,11,0,s["ɵnov"](e,12).hasErrors,s["ɵnov"](e,12).hasSuccess),t(e,20,0,s["ɵnov"](e,26).ngClassUntouched,s["ɵnov"](e,26).ngClassTouched,s["ɵnov"](e,26).ngClassPristine,s["ɵnov"](e,26).ngClassDirty,s["ɵnov"](e,26).ngClassValid,s["ɵnov"](e,26).ngClassInvalid,s["ɵnov"](e,26).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass),t(e,28,0,s["ɵnov"](e,29).hasErrors,s["ɵnov"](e,29).hasSuccess),t(e,37,0,s["ɵnov"](e,42).ngClassUntouched,s["ɵnov"](e,42).ngClassTouched,s["ɵnov"](e,42).ngClassPristine,s["ɵnov"](e,42).ngClassDirty,s["ɵnov"](e,42).ngClassValid,s["ɵnov"](e,42).ngClassInvalid,s["ɵnov"](e,42).ngClassPending,s["ɵnov"](e,43).validClass,s["ɵnov"](e,43).invalidClass),t(e,44,0,s["ɵnov"](e,45).hasErrors,s["ɵnov"](e,45).hasSuccess),t(e,53,0,s["ɵnov"](e,54).hasErrors,s["ɵnov"](e,54).hasSuccess),t(e,59,0,s["ɵnov"](e,65).ngClassUntouched,s["ɵnov"](e,65).ngClassTouched,s["ɵnov"](e,65).ngClassPristine,s["ɵnov"](e,65).ngClassDirty,s["ɵnov"](e,65).ngClassValid,s["ɵnov"](e,65).ngClassInvalid,s["ɵnov"](e,65).ngClassPending,s["ɵnov"](e,66).validClass,s["ɵnov"](e,66).invalidClass)}))}function Lf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](2,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kf)),s["ɵdid"](4,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ef)),s["ɵdid"](6,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null)],(function(t,e){t(e,2,0,e.component.step),t(e,4,0,1),t(e,6,0,2)}),null)}function Df(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Nf)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cf)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lf)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.loading&&!n.error),t(e,3,0,n.loading&&n.error),t(e,5,0,!n.loading&&!n.error)}),null)}function Pf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-telemetry",[],null,null,null,Df,If)),s["ɵdid"](1,114688,null,0,Tf,[no.a,oe,bt.a,Et.m,wf,fe.a,Sf,de],null,null)],(function(t,e){t(e,1,0)}),null)}var Mf=s["ɵccf"]("cd-telemetry",Tf,Pf,{},{},[]);const qf=new Is.a("silence");class jf extends Ns.a{constructor(t,e,n,a,r){super(),this.authStorageService=t,this.prometheusAlertService=e,this.urlBuilder=n,this.i18n=a,this.cdDatePipe=r,this.selection=new li.a,this.icons=pt.a,this.customCss={"badge badge-danger":"active","badge badge-warning":"unprocessed","badge badge-info":"suppressed"},this.permission=this.authStorageService.getPermissions().prometheus,this.tableActions=[{permission:"create",canBePrimary:t=>t.hasSingleSelection,disable:t=>!t.hasSingleSelection||t.first().cdExecuting,icon:pt.a.add,routerLink:()=>"/monitoring"+this.urlBuilder.getCreateFrom(this.selection.first().fingerprint),name:this.i18n("Create Silence")}]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"labels.alertname",flexGrow:2},{name:this.i18n("Job"),prop:"labels.job",flexGrow:2},{name:this.i18n("Severity"),prop:"labels.severity"},{name:this.i18n("State"),prop:"status.state",cellTransformation:oi.a.classAdding},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("URL"),prop:"generatorURL",sortable:!1,cellTemplate:this.externalLinkTpl}]}updateSelection(t){this.selection=t}}var Ff=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Vf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,638976,null,0,ki.a,[He.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],appendParentKey:[3,"appendParentKey"],hideEmpty:[4,"hideEmpty"],customCss:[5,"customCss"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!1,!0,!1,!0,n.customCss)}),null)}function Gf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](4,1),(t()(),s["ɵted"](-1,null,[" Source"]))],(function(t,e){var n=t(e,4,0,e.component.icons.lineChart);t(e,3,0,n)}),(function(t,e){t(e,0,0,e.context.value)}))}function Bf(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{externalLinkTpl:0}),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["identifier","fingerprint"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](2,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"],customCss:[6,"customCss"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](4,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](16777216,null,3,1,null,Vf)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["externalLinkTpl",2]],null,0,null,Gf))],(function(t,e){var n=e.component;t(e,2,0,n.prometheusAlertService.alerts,n.columns,!0,"fingerprint",!0,"single",n.customCss),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.expandedRow)}),null)}class zf extends Ns.a{constructor(t){super(),this.i18n=t,this.hideKeys=["alerts","type"]}ngOnInit(){this.columns=[{prop:"name",name:this.i18n("Name")},{prop:"labels.severity",name:this.i18n("Severity")},{prop:"group",name:this.i18n("Group")},{prop:"duration",name:this.i18n("Duration"),pipe:new Ye},{prop:"query",name:this.i18n("Query"),isHidden:!0},{prop:"annotations.description",name:this.i18n("Description")}]}}var Yf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Hf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,638976,null,0,ki.a,[He.a],{data:[0,"data"],renderObjects:[1,"renderObjects"],hideKeys:[2,"hideKeys"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!0,n.hideKeys)}),null)}function Uf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-table",[],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.setExpandedRow(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](1,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵand"](16777216,null,3,1,null,Hf)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.data,n.columns,!0,"single"),t(e,3,0,n.expandedRow)}),null)}var Wf=n("w9WL");const Kf=new Is.a("monitoring/silence");class $f extends Ns.a{constructor(t,e,n,a,r,i,s,u,o){super(),this.authStorageService=t,this.i18n=e,this.cdDatePipe=n,this.prometheusService=a,this.modalService=r,this.notificationService=i,this.urlBuilder=s,this.actionLabels=u,this.succeededLabels=o,this.silences=[],this.selection=new li.a,this.customCss={"badge badge-danger":"active","badge badge-warning":"pending","badge badge-default":"expired"},this.sorts=[{prop:"endsAt",dir:Wf.A.desc}],this.permission=this.authStorageService.getPermissions().prometheus;const l=t=>t.first()&&t.first().status&&"expired"===t.first().status.state;this.tableActions=[{permission:"create",icon:pt.a.add,routerLink:()=>this.urlBuilder.getCreate(),preserveFragment:!0,canBePrimary:t=>!t.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"create",canBePrimary:t=>t.hasSingleSelection&&l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&l(t)||!l(t),icon:pt.a.copy,routerLink:()=>this.urlBuilder.getRecreate(this.selection.first().id),preserveFragment:!0,name:this.actionLabels.RECREATE},{permission:"update",icon:pt.a.edit,canBePrimary:t=>t.hasSingleSelection&&!l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&!l(t)||l(t),routerLink:()=>this.urlBuilder.getEdit(this.selection.first().id),preserveFragment:!0,name:this.actionLabels.EDIT},{permission:"delete",icon:pt.a.trash,canBePrimary:t=>t.hasSingleSelection&&!l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||l(t),click:()=>this.expireSilence(),name:this.actionLabels.EXPIRE}],this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:3},{name:this.i18n("Created by"),prop:"createdBy",flexGrow:2},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("Updated"),prop:"updatedAt",pipe:this.cdDatePipe},{name:this.i18n("Ends"),prop:"endsAt",pipe:this.cdDatePipe},{name:this.i18n("Status"),prop:"status.state",cellTransformation:oi.a.classAdding}]}refresh(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getSilences().subscribe(t=>{this.silences=t},()=>{this.prometheusService.disableAlertmanagerConfig()})})}updateSelection(t){this.selection=t}expireSilence(){const t=this.selection.first().id,e=this.i18n("Silence");this.modalRef=this.modalService.show(Cs.a,{initialState:{itemDescription:e,itemNames:[t],actionDescription:this.actionLabels.EXPIRE,submitActionObservable:()=>new Jn.a(n=>{this.prometheusService.expireSilence(t).subscribe(()=>{this.notificationService.show(le.a.success,`${this.succeededLabels.EXPIRED} ${e} ${t}`,void 0,void 0,"Prometheus")},t=>{t.application="Prometheus",n.error(t)},()=>{n.complete(),this.refresh()})})}})}}var Jf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Zf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,Ai.b,Ai.a)),s["ɵdid"](1,638976,null,0,ki.a,[He.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],appendParentKey:[3,"appendParentKey"],hideEmpty:[4,"hideEmpty"],customCss:[5,"customCss"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!1,!0,!1,!0,n.customCss)}),null)}function Qf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"fetchData"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"fetchData"===e&&(a=!1!==r.refresh()&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](1,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],sorts:[2,"sorts"],hasDetails:[3,"hasDetails"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"],customCss:[6,"customCss"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](2,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](3,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](16777216,null,3,1,null,Zf)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.silences,n.columns,n.sorts,!0,!0,"single",n.customCss),t(e,3,0,n.permission,n.selection,n.tableActions),t(e,5,0,n.expandedRow)}),null)}class Xf{constructor(t,e,n,a){this.prometheusAlertService=t,this.prometheusService=e,this.route=n,this.router=a,this.isPrometheusConfigured=!1,this.isAlertmanagerConfigured=!1}ngOnInit(){if(this.prometheusService.ifAlertmanagerConfigured(()=>{this.isAlertmanagerConfigured=!0}),this.prometheusService.ifPrometheusConfigured(()=>{this.isPrometheusConfigured=!0}),this.route.snapshot.fragment){const t=this.tabs.tabs.find(t=>t.elementRef.nativeElement.id===this.route.snapshot.fragment);t&&(t.active=!0),this.router.navigate([],{fragment:this.route.snapshot.fragment})}}setFragment(t){this.router.navigate([],{fragment:t.id})}}var th=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function eh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-active-alert-list",[],null,null,null,Bf,Ff)),s["ɵprd"](256,null,Is.a,qf,[]),s["ɵdid"](2,114688,null,0,jf,[Z.a,en,Is.a,fe.a,He.a],null,null)],(function(t,e){t(e,2,0)}),null)}function nh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To see all active Prometheus alerts, please provide the URL to the API of Prometheus' Alertmanager as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,ei.b,ei.a)),s["ɵdid"](4,114688,null,0,ni.a,[Tt.a,fe.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function ah(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-rules-list",[],null,null,null,Uf,Yf)),s["ɵdid"](1,114688,null,0,zf,[fe.a],{data:[0,"data"]},null)],(function(t,e){t(e,1,0,e.component.prometheusAlertService.rules)}),null)}function rh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To see all configured Prometheus alerts, please provide the URL to the API of Prometheus as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,ei.b,ei.a)),s["ɵdid"](4,114688,null,0,ni.a,[Tt.a,fe.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function ih(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-silences-list",[],null,null,null,Qf,Jf)),s["ɵprd"](256,null,Is.a,Kf,[]),s["ɵdid"](2,49152,null,0,$f,[Z.a,fe.a,He.a,Xe,Ct.b,bt.a,Is.a,St.b,St.d],null,null)],null,null)}function sh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To enable Silences, please provide the URL to the API of the Prometheus' Alertmanager as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,ei.b,ei.a)),s["ɵdid"](4,114688,null,0,ni.a,[Tt.a,fe.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function uh(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{tabs:0}),(t()(),s["ɵeld"](1,0,null,null,19,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](2,180224,[[1,4],["tabs",4]],0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](3,0,null,0,5,"tab",[["heading","Active Alerts"],["id","active-alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](4,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,eh)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,nh)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,0,5,"tab",[["heading","All Alerts"],["id","all-alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](10,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,ah)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rh)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](15,0,null,0,5,"tab",[["heading","Silences"],["id","silences"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](16,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,ih)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sh)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,"Active Alerts","active-alerts"),t(e,6,0,n.isAlertmanagerConfigured),t(e,8,0,!n.isAlertmanagerConfigured),t(e,10,0,"All Alerts","all-alerts"),t(e,12,0,n.isPrometheusConfigured),t(e,14,0,!n.isPrometheusConfigured),t(e,16,0,"Silences","silences"),t(e,18,0,n.isAlertmanagerConfigured),t(e,20,0,!n.isAlertmanagerConfigured)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).clazz),t(e,3,0,s["ɵnov"](e,4).id,s["ɵnov"](e,4).active,s["ɵnov"](e,4).addClass,s["ɵnov"](e,4).role,s["ɵnov"](e,4).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby),t(e,15,0,s["ɵnov"](e,16).id,s["ɵnov"](e,16).active,s["ɵnov"](e,16).addClass,s["ɵnov"](e,16).role,s["ɵnov"](e,16).ariaLabelledby)}))}function oh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-monitoring-list",[],null,null,null,uh,th)),s["ɵdid"](1,114688,null,0,Xf,[en,Xe,Et.a,Et.m],null,null)],(function(t,e){t(e,1,0)}),null)}var lh=s["ɵccf"]("cd-monitoring-list",Xf,oh,{},{},[]);let dh=(()=>{class t{constructor(t){this.i18n=t,this.valueAttributePath={alertname:"name",instance:"alerts.0.labels.instance",job:"alerts.0.labels.job",severity:"labels.severity"}}singleMatch(t,e){return this.multiMatch([t],e)}multiMatch(t,e){if(!t.some(t=>t.isRegex))return t.forEach(t=>{e=this.getMatchedRules(t,e)}),this.describeMatch(e)}getMatchedRules(t,e){const n=this.getAttributePath(t.name);return e.filter(e=>X.get(e,n)===t.value)}describeMatch(t){let e=0;return t.forEach(t=>e+=t.alerts.length),{status:this.getMatchText(t.length,e),cssClass:e?"has-success":"has-warning"}}getAttributePath(t){return this.valueAttributePath[t]}getMatchText(t,e){const n={noRule:this.i18n("Your matcher seems to match no currently defined rule or active alert."),noAlerts:this.i18n("no active alerts"),alert:this.i18n("1 active alert"),alerts:this.i18n("{{n}} active alerts",{n:e}),rule:this.i18n("Matches 1 rule"),rules:this.i18n("Matches {{n}} rules",{n:t})};return t?this.i18n("{{rules}} with {{alerts}}.",{rules:t>1?n.rules:n.rule,alerts:e?e>1?n.alerts:n.alert:n.noAlerts}):n.noRule}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](fe.a))},token:t,providedIn:"root"}),t})(),ch=(()=>{class t{constructor(){}calculateDuration(t,e){const n=+t,a=+e,r=this.getDuration(Math.abs(n-a));return n>a?"-"+r:r}getDuration(t){const e=new Date(t),n=e.getUTCHours(),a=e.getUTCMinutes(),r=(t,e)=>t?t+e:t;return[r(Math.floor(t/864e5),"d"),r(n,"h"),r(a,"m")].filter(t=>t).join(" ")}calculateDate(t,e,n){const a=+t;if(X.isNaN(a))return;const r=this.getDurationMs(e)*(n?-1:1);return new Date(a+r)}getDurationMs(t){return 6e4*(60*(24*this.getNumbersFromString(t,"d")+this.getNumbersFromString(t,"h"))+this.getNumbersFromString(t,"m"))}getNumbersFromString(t,e){const n=t.match(new RegExp("[0-9 ]+"+e,"i"));return n?parseInt(n[0],10):0}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();class fh{constructor(t,e,n){this.formBuilder=t,this.silenceMatcher=e,this.bsModalRef=n,this.submitAction=new s.EventEmitter,this.editMode=!1,this.nameAttributes=["alertname","instance","job","severity"],this.possibleValues=[],this.matcherMatch=void 0,this.createForm(),this.subscribeToChanges()}createForm(){this.form=this.formBuilder.group({name:[null,[K.B.required]],value:[{value:null,disabled:!0},[K.B.required]],isRegex:new K.i(!1)})}subscribeToChanges(){this.form.get("name").valueChanges.subscribe(t=>{null!==t?(this.setPossibleValues(t),this.form.get("value").enable()):this.form.get("value").disable()}),this.form.get("value").valueChanges.subscribe(t=>{const e=this.form.value;e.value=t,this.matcherMatch=this.silenceMatcher.singleMatch(e,this.rules)})}setPossibleValues(t){this.possibleValues=X.sortedUniq(this.rules.map(e=>X.get(e,this.silenceMatcher.getAttributePath(t))).filter(t=>t))}preFillControls(t){this.form.setValue(t)}onSubmit(){this.submitAction.emit(this.form.value),this.bsModalRef.hide()}}class hh{constructor(t,e,n,a,r,i,s,u,o,l,d,c){this.i18n=t,this.router=e,this.authStorageService=n,this.formBuilder=a,this.prometheusService=r,this.notificationService=i,this.route=s,this.timeDiff=u,this.bsModalService=o,this.silenceMatcher=l,this.actionLabels=d,this.succeededLabels=c,this.icons=pt.a,this.bsConfig={dateInputFormat:"YYYY-MM-DDT HH:mm"},this.recreate=!1,this.edit=!1,this.resource=this.i18n("silence"),this.matchers=[],this.matcherMatch=void 0,this.matcherConfig=[{tooltip:this.i18n("Attribute name"),icon:this.icons.paragraph,attribute:"name"},{tooltip:this.i18n("Value"),icon:this.icons.terminal,attribute:"value"},{tooltip:this.i18n("Regular expression"),icon:this.icons.magic,attribute:"isRegex"}],this.init()}init(){this.chooseMode(),this.authenticate(),this.createForm(),this.setupDates(),this.getData()}chooseMode(){this.edit=this.router.url.startsWith("/monitoring/silence/edit"),this.recreate=this.router.url.startsWith("/monitoring/silence/recreate"),this.action=this.edit?this.actionLabels.EDIT:this.recreate?this.actionLabels.RECREATE:this.actionLabels.CREATE}authenticate(){this.permission=this.authStorageService.getPermissions().prometheus,this.permission.read&&(this.edit?this.permission.update:this.permission.create)||this.router.navigate(["/404"])}createForm(){this.form=this.formBuilder.group({startsAt:[null,[K.B.required]],duration:["2h",[K.B.min(1)]],endsAt:[null,[K.B.required]],createdBy:[this.authStorageService.getUsername(),[K.B.required]],comment:[null,[K.B.required]]},{validators:eu.a.custom("matcherRequired",()=>0===this.matchers.length)})}setupDates(){const t=new Date;t.setSeconds(0,0),this.form.silentSet("startsAt",t),this.updateDate(),this.subscribeDateChanges()}updateDate(t){const e=this.timeDiff.calculateDate(this.form.getValue(t?"endsAt":"startsAt"),this.form.getValue("duration"),t);e&&this.form.silentSet(t?"startsAt":"endsAt",e)}subscribeDateChanges(){this.form.get("startsAt").valueChanges.subscribe(()=>{this.onDateChange()}),this.form.get("duration").valueChanges.subscribe(()=>{this.updateDate()}),this.form.get("endsAt").valueChanges.subscribe(()=>{this.onDateChange(!0)})}onDateChange(t){this.form.getValue("startsAt")<this.form.getValue("endsAt")?this.updateDuration():this.updateDate(t)}updateDuration(){this.form.silentSet("duration",this.timeDiff.calculateDuration(this.form.getValue("startsAt"),this.form.getValue("endsAt")))}getData(){this.getRules(),this.getModeSpecificData()}getRules(){this.prometheusService.ifPrometheusConfigured(()=>this.prometheusService.getRules().subscribe(t=>{this.rules=t.groups.reduce((t,e)=>X.concat(t,e.rules),[])},()=>{this.prometheusService.disablePrometheusConfig(),this.rules=[]}),()=>{this.rules=[],this.notificationService.show(le.a.info,this.i18n("Please add your Prometheus host to the dashboard configuration and refresh the page"),void 0,void 0,"Prometheus")})}getModeSpecificData(){this.route.params.subscribe(t=>{t.id&&(this.edit||this.recreate?this.prometheusService.getSilences(t).subscribe(t=>{this.fillFormWithSilence(t[0])}):this.prometheusService.getAlerts(t).subscribe(t=>{this.fillFormByAlert(t[0])}))})}fillFormWithSilence(t){this.id=t.id,this.edit&&(["startsAt","endsAt"].forEach(e=>this.form.silentSet(e,new Date(t[e]))),this.updateDuration()),["createdBy","comment"].forEach(e=>this.form.silentSet(e,t[e])),this.matchers=t.matchers,this.validateMatchers()}validateMatchers(){this.rules?(this.matcherMatch=this.silenceMatcher.multiMatch(this.matchers,this.rules),this.form.markAsDirty(),this.form.updateValueAndValidity()):window.setTimeout(()=>this.validateMatchers(),100)}fillFormByAlert(t){const e=t.labels;Object.keys(e).forEach(t=>this.setMatcher({name:t,value:e[t],isRegex:!1}))}setMatcher(t,e){X.isNumber(e)?this.matchers[e]=t:this.matchers.push(t),this.validateMatchers()}showMatcherModal(t){const e=this.bsModalService.show(fh),n=e.content;n.rules=this.rules,X.isNumber(t)&&(n.editMode=!0,n.preFillControls(this.matchers[t])),e.content.submitAction.subscribe(e=>{this.setMatcher(e,t)})}deleteMatcher(t){this.matchers.splice(t,1),this.validateMatchers()}submit(){this.form.invalid||this.prometheusService.setSilence(this.getSubmitData()).subscribe(t=>{this.router.navigate(["/monitoring"],{fragment:"silences"}),this.notificationService.show(le.a.success,this.getNotificationTile(t.body.silenceId),void 0,void 0,"Prometheus")},()=>this.form.setErrors({cdSubmitButton:!0}))}getSubmitData(){const t=this.form.value;return delete t.duration,t.startsAt=t.startsAt.toISOString(),t.endsAt=t.endsAt.toISOString(),t.matchers=this.matchers,this.edit&&(t.id=this.id),t}getNotificationTile(t){let e;return e=this.edit?this.succeededLabels.EDITED:this.recreate?this.succeededLabels.RECREATED:this.succeededLabels.CREATED,`${e} ${this.resource} ${t}`}}var gh=s["ɵcrt"]({encapsulation:0,styles:[["textarea[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function ph(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"input",[["class","form-control"],["disabled",""],["readonly",""],["type","text"]],[[8,"id",0],[8,"value",0],[2,"is-valid",null],[2,"is-invalid",null]],null,null,null,null)),s["ɵdid"](2,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](3,16384,null,0,Q.h,[[8,null],Q.a],null,null)],null,(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute],s["ɵnov"](e,3).validClass,s["ɵnov"](e,3).invalidClass)}))}function bh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"div",[["class","input-group-text"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"input",[["disabled",""],["readonly",""],["type","checkbox"]],[[8,"id",0],[8,"checked",0]],null,null,null,null)),s["ɵdid"](4,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null)],null,(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute])}))}function mh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,16777216,null,null,5,"span",[["class","input-group-text"]],null,null,null,null,null)),s["ɵdid"](3,212992,null,0,ba.c,[s.ViewContainerRef,U.a,ba.a,s.ElementRef,s.Renderer2,Na.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵand"](16777216,null,null,1,null,ph)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bh)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,3,0,e.context.$implicit.tooltip);var n=t(e,7,0,e.context.$implicit.icon);t(e,6,0,n),t(e,9,0,"isRegex"!==e.context.$implicit.attribute),t(e,11,0,"isRegex"===e.context.$implicit.attribute)}),null)}function yh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"div",[["class","input-group my-2"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,mh)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](3,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","Edit"],["type","button"]],[[8,"id",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showMatcherModal(t.context.index)&&a),a}),null,null)),s["ɵdid"](5,212992,null,0,ba.c,[s.ViewContainerRef,U.a,ba.a,s.ElementRef,s.Renderer2,Na.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](8,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](9,1),(t()(),s["ɵeld"](10,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","Delete"],["type","button"]],[[8,"id",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.deleteMatcher(t.context.index)&&a),a}),null,null)),s["ɵdid"](11,212992,null,0,ba.c,[s.ViewContainerRef,U.a,ba.a,s.ElementRef,s.Renderer2,Na.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,1),(t()(),s["ɵeld"](16,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,2,0,n.matcherConfig),t(e,5,0,"Edit");var a=t(e,9,0,n.icons.edit);t(e,8,0,a),t(e,11,0,"Delete");var r=t(e,15,0,n.icons.trash);t(e,14,0,r)}),(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"matcher-edit-",e.context.index,"")),t(e,10,0,s["ɵinlineInterpolate"](1,"matcher-delete-",e.context.index,""))}))}function vh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](1,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](-1,0,["Editing a silence will expire the old silence and recreate it as a new silence"]))],null,null)}function xh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function _h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Th(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function wh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Oh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Sh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"h5",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](3,{"text-warning":0,"text-danger":1}),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["A silence requires at least one matcher"]))],(function(t,e){var n=t(e,3,0,!s["ɵnov"](e.parent,6).submitted,s["ɵnov"](e.parent,6).submitted);t(e,2,0,n)}),null)}function Ih(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Nh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Ih)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](3,{index:0,matcher:1})],(function(t,e){var n=t(e,3,0,e.context.index,e.context.$implicit);t(e,2,0,n,s["ɵnov"](e.parent,2))}),null)}function Ch(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵted"](2,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,s["ɵinlineInterpolate"](1,"cd-col-form-offset ",n.matcherMatch.cssClass,"")),t(e,1,0,s["ɵinlineInterpolate"](1,"text-muted ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)}))}function Rh(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Xs.a,[]),(t()(),s["ɵand"](0,[["matcherTpl",2]],null,0,null,yh)),(t()(),s["ɵeld"](3,0,null,null,141,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,140,"form",[["class","form"],["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,6).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit()&&a),a}),null,null)),s["ɵdid"](5,16384,null,0,K.G,[],null,null),s["ɵdid"](6,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](8,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](9,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](10,0,null,null,134,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](13,null,[" "," "," "])),s["ɵppd"](14,1),s["ɵppd"](15,1),(t()(),s["ɵand"](16777216,null,null,1,null,vh)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,117,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](20,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](23,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","created-by"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Creator"])),(t()(),s["ɵeld"](25,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,7,"input",[["class","form-control"],["formControlName","createdBy"],["id","created-by"],["name","created-by"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,28)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,28).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,28)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,28)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](27,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](28,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](30,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](32,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](33,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xh)),s["ɵdid"](35,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](36,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](37,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](40,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","comment"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Comment"])),(t()(),s["ɵeld"](42,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,7,"textarea",[["class","form-control"],["formControlName","comment"],["id","comment"],["name","comment"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,44)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,44).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,44)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,44)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](44,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](46,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](48,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](49,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "])),(t()(),s["ɵand"](16777216,null,null,1,null,_h)),s["ɵdid"](52,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](53,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](54,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](57,0,null,0,5,"label",[["class","cd-col-form-label"],["for","starts-at"]],null,null,null,null,null)),(t()(),s["ɵeld"](58,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Start time"])),(t()(),s["ɵeld"](60,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](61,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](-1,0,["If the start time lies in the past the creation time will be used"])),(t()(),s["ɵeld"](63,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](64,16777216,null,null,10,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","startsAt"],["id","starts-at"],["name","starts-at"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,66)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,66).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,66)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,66)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,68).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,68).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,68).onBlur()&&a),a}),null,null)),s["ɵdid"](65,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](66,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](67,737280,null,0,st.c,[st.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](68,16384,null,0,st.f,[st.c,st.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[st.f]),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,st.f]),s["ɵdid"](71,671744,[[5,4]],0,K.j,[[3,K.d],[6,K.o],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](73,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](74,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Th)),s["ɵdid"](76,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](77,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](78,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](81,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","duration"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Duration"])),(t()(),s["ɵeld"](83,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](84,0,null,null,7,"input",[["class","form-control"],["formControlName","duration"],["id","duration"],["name","duration"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,86)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,86).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,86)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,86)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](85,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](86,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](88,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](90,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](91,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wh)),s["ɵdid"](93,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](94,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](95,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](98,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","ends-at"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["End time"])),(t()(),s["ɵeld"](100,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](101,16777216,null,null,10,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","endsAt"],["id","ends-at"],["name","ends-at"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,103)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,103).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,103)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,103)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,105).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,105).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,105).onBlur()&&a),a}),null,null)),s["ɵdid"](102,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](103,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](104,737280,null,0,st.c,[st.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,U.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](105,16384,null,0,st.f,[st.c,st.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[st.f]),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,st.f]),s["ɵdid"](108,671744,[[9,4]],0,K.j,[[3,K.d],[6,K.o],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](110,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](111,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Oh)),s["ɵdid"](113,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](114,0,null,null,21,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](115,0,null,null,1,"legend",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Matchers"])),(t()(),s["ɵeld"](117,0,null,null,16,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Sh)),s["ɵdid"](119,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nh)),s["ɵdid"](121,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](122,0,null,null,11,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](123,0,null,null,10,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](124,0,null,null,9,"button",[["class","btn btn-light float-right my-3"],["id","add-matcher"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showMatcherModal()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](126,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](127,{"btn-warning":0}),(t()(),s["ɵeld"](128,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](130,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](131,1),(t()(),s["ɵeld"](132,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add matcher"])),(t()(),s["ɵand"](16777216,null,null,1,null,Ch)),s["ɵdid"](135,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](136,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](137,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](138,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),$s.b,$s.a)),s["ɵdid"](139,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](140,0,[" "," "," "])),s["ɵppd"](141,1),s["ɵppd"](142,1),(t()(),s["ɵeld"](143,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](144,49152,null,0,Qs.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,6,0,n.form),t(e,9,0,n.form),t(e,17,0,n.edit),t(e,20,0),t(e,30,0,"createdBy"),t(e,33,0,"createdBy"),t(e,35,0,n.form.showError("createdBy",s["ɵnov"](e,6),"required")),t(e,37,0),t(e,46,0,"comment"),t(e,49,0,"comment"),t(e,52,0,n.form.showError("comment",s["ɵnov"](e,6),"required")),t(e,54,0),t(e,67,0,n.bsConfig),t(e,71,0,"startsAt"),t(e,74,0,"startsAt"),t(e,76,0,n.form.showError("startsAt",s["ɵnov"](e,6),"required")),t(e,78,0),t(e,88,0,"duration"),t(e,91,0,"duration"),t(e,93,0,n.form.showError("duration",s["ɵnov"](e,6),"required")),t(e,95,0),t(e,104,0,n.bsConfig),t(e,108,0,"endsAt"),t(e,111,0,"endsAt"),t(e,113,0,n.form.showError("endsAt",s["ɵnov"](e,6),"required")),t(e,119,0,0===n.matchers.length),t(e,121,0,n.matchers);var a=t(e,127,0,s["ɵnov"](e,6).submitted&&0===n.matchers.length);t(e,126,0,"btn btn-light float-right my-3",a);var r=t(e,131,0,n.icons.add);t(e,130,0,r),t(e,135,0,n.matchers.length&&n.matcherMatch),t(e,139,0,s["ɵnov"](e,6))}),(function(t,e){var n=e.component;t(e,4,0,s["ɵnov"](e,8).ngClassUntouched,s["ɵnov"](e,8).ngClassTouched,s["ɵnov"](e,8).ngClassPristine,s["ɵnov"](e,8).ngClassDirty,s["ɵnov"](e,8).ngClassValid,s["ɵnov"](e,8).ngClassInvalid,s["ɵnov"](e,8).ngClassPending);var a=s["ɵunv"](e,13,0,t(e,14,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,13,1,t(e,15,0,s["ɵnov"](e,1),n.resource));t(e,13,0,a,r),t(e,19,0,s["ɵnov"](e,20).hasErrors,s["ɵnov"](e,20).hasSuccess),t(e,26,0,s["ɵnov"](e,32).ngClassUntouched,s["ɵnov"](e,32).ngClassTouched,s["ɵnov"](e,32).ngClassPristine,s["ɵnov"](e,32).ngClassDirty,s["ɵnov"](e,32).ngClassValid,s["ɵnov"](e,32).ngClassInvalid,s["ɵnov"](e,32).ngClassPending,s["ɵnov"](e,33).validClass,s["ɵnov"](e,33).invalidClass),t(e,36,0,s["ɵnov"](e,37).hasErrors,s["ɵnov"](e,37).hasSuccess),t(e,43,0,s["ɵnov"](e,48).ngClassUntouched,s["ɵnov"](e,48).ngClassTouched,s["ɵnov"](e,48).ngClassPristine,s["ɵnov"](e,48).ngClassDirty,s["ɵnov"](e,48).ngClassValid,s["ɵnov"](e,48).ngClassInvalid,s["ɵnov"](e,48).ngClassPending,s["ɵnov"](e,49).validClass,s["ɵnov"](e,49).invalidClass),t(e,53,0,s["ɵnov"](e,54).hasErrors,s["ɵnov"](e,54).hasSuccess),t(e,64,0,s["ɵnov"](e,73).ngClassUntouched,s["ɵnov"](e,73).ngClassTouched,s["ɵnov"](e,73).ngClassPristine,s["ɵnov"](e,73).ngClassDirty,s["ɵnov"](e,73).ngClassValid,s["ɵnov"](e,73).ngClassInvalid,s["ɵnov"](e,73).ngClassPending,s["ɵnov"](e,74).validClass,s["ɵnov"](e,74).invalidClass),t(e,77,0,s["ɵnov"](e,78).hasErrors,s["ɵnov"](e,78).hasSuccess),t(e,84,0,s["ɵnov"](e,90).ngClassUntouched,s["ɵnov"](e,90).ngClassTouched,s["ɵnov"](e,90).ngClassPristine,s["ɵnov"](e,90).ngClassDirty,s["ɵnov"](e,90).ngClassValid,s["ɵnov"](e,90).ngClassInvalid,s["ɵnov"](e,90).ngClassPending,s["ɵnov"](e,91).validClass,s["ɵnov"](e,91).invalidClass),t(e,94,0,s["ɵnov"](e,95).hasErrors,s["ɵnov"](e,95).hasSuccess),t(e,101,0,s["ɵnov"](e,110).ngClassUntouched,s["ɵnov"](e,110).ngClassTouched,s["ɵnov"](e,110).ngClassPristine,s["ɵnov"](e,110).ngClassDirty,s["ɵnov"](e,110).ngClassValid,s["ɵnov"](e,110).ngClassInvalid,s["ɵnov"](e,110).ngClassPending,s["ɵnov"](e,111).validClass,s["ɵnov"](e,111).invalidClass);var i=s["ɵunv"](e,140,0,t(e,141,0,s["ɵnov"](e,0),n.action)),u=s["ɵunv"](e,140,1,t(e,142,0,s["ɵnov"](e,1),n.resource));t(e,140,0,i,u)}))}function Ah(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-prometheus-form",[],null,null,null,Rh,gh)),s["ɵdid"](1,49152,null,0,hh,[fe.a,Et.m,Z.a,no.a,Xe,bt.a,Et.a,ch,Ct.b,dh,St.b,St.d],null,null)],null,null)}var kh=s["ɵccf"]("cd-prometheus-form",hh,Ah,{},{},[]);let Eh=(()=>{class t{constructor(e){this.route=e,this.route.queryParams.subscribe(e=>{this.fromLink=e.fromLink||t.defaultFromLink}),this.route.params.subscribe(t=>{this.serviceId=decodeURIComponent(t.id),this.serviceType=t.type})}}return t.defaultFromLink="/hosts",t})();var Lh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Dh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",".",""])),(t()(),s["ɵeld"](2,0,null,null,1,"cd-table-performance-counter",[],null,null,null,Zo.b,Zo.a)),s["ɵdid"](3,114688,null,0,Qo.a,[Xo.a,fe.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.serviceType,n.serviceId)}),(function(t,e){var n=e.component;t(e,1,0,n.serviceType,n.serviceId)}))}function Ph(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-performance-counter",[],null,null,null,Dh,Lh)),s["ɵdid"](1,49152,null,0,Eh,[Et.a],null,null)],null,null)}var Mh=s["ɵccf"]("cd-performance-counter",Eh,Ph,{},{},[]);class qh{constructor(t){this.mgrModuleService=t}ngOnChanges(){this.selection&&this.mgrModuleService.getConfig(this.selection.name).subscribe(t=>{this.module_config=t})}}var jh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Fh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](5,638976,null,0,ki.a,[He.a],{data:[0,"data"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.module_config)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function Vh(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Fh)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}let Gh=(()=>{class t extends Ns.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.mgrModuleService=e,this.notificationService=n,this.i18n=a,this.columns=[],this.modules=[],this.selection=new li.a,this.permission=this.authStorageService.getPermissions().configOpt,this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Enabled"),prop:"enabled",flexGrow:1,cellClass:"text-center",cellTransformation:oi.a.checkIcon},{name:this.i18n("Always-On"),prop:"always_on",flexGrow:1,cellClass:"text-center",cellTransformation:oi.a.checkIcon}];const r=()=>this.selection.first()&&encodeURIComponent(this.selection.first().name);this.tableActions=[{name:this.i18n("Edit"),permission:"update",disable:()=>!this.selection.hasSelection||0===Object.values(this.selection.first().options).length,routerLink:()=>"/mgr-modules/edit/"+r(),icon:pt.a.edit},{name:this.i18n("Enable"),permission:"update",click:()=>this.updateModuleState(),disable:()=>this.isTableActionDisabled("enabled"),icon:pt.a.start},{name:this.i18n("Disable"),permission:"update",click:()=>this.updateModuleState(),disable:()=>this.getTableActionDisabledDesc(),icon:pt.a.stop}]}getModuleList(t){this.mgrModuleService.list().subscribe(t=>{this.modules=t},()=>{t.error()})}updateSelection(t){this.selection=t}isTableActionDisabled(t){if(!this.selection.hasSelection)return!0;const e=this.selection.first();if("dashboard"===e.name)return!0;if(e.always_on)return!0;switch(t){case"enabled":return e.enabled;case"disabled":return!e.enabled}}getTableActionDisabledDesc(){return this.selection&&this.selection.first().always_on?this.i18n("This Manager module is always on."):this.isTableActionDisabled("disabled")}updateModuleState(){if(!this.selection.hasSelection)return;let t;const e=()=>{Object(hi.a)(2e3).subscribe(()=>{this.mgrModuleService.list().subscribe(()=>{this.notificationService.suspendToasties(!1),this.blockUI.stop(),this.table.refreshBtn()},()=>{e()})})},n=this.selection.first();t=n.enabled?this.mgrModuleService.disable(n.name):this.mgrModuleService.enable(n.name),t.subscribe(()=>{},()=>{this.notificationService.suspendToasties(!0),this.blockUI.start(this.i18n("Reconnecting, please wait ...")),e()})}}return nc.__decorate([E(),nc.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t})();var Bh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function zh(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","module"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"],[null,"fetchData"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"fetchData"===e&&(a=!1!==r.getModuleList(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](2,2867200,[[1,4],["table",4]],0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](4,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](5,0,null,3,1,"cd-mgr-module-details",[["cdTableDetail",""]],null,null,null,Vh,jh)),s["ɵdid"](6,573440,null,0,qh,[oe],{selection:[0,"selection"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.modules,n.columns,"flex",!0,!1,"module","single"),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.expandedRow)}),null)}function Yh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-mgr-module-list",[],null,null,null,zh,Bh)),s["ɵdid"](1,49152,null,0,Gh,[Z.a,oe,bt.a,fe.a],null,null)],null,null)}var Hh=s["ɵccf"]("cd-mgr-module-list",Gh,Yh,{},{},[]);class Uh{constructor(t,e,n,a,r,i){this.route=t,this.router=e,this.formBuilder=n,this.mgrModuleService=a,this.notificationService=r,this.i18n=i,this.error=!1,this.loading=!1,this.moduleName="",this.moduleOptions=[]}ngOnInit(){this.route.params.subscribe(t=>{this.moduleName=decodeURIComponent(t.name),this.loading=!0;const e=[this.mgrModuleService.getOptions(this.moduleName),this.mgrModuleService.getConfig(this.moduleName)];Object(ml.a)(e).subscribe(t=>{this.loading=!1,this.moduleOptions=t[0],this.createForm(),this.mgrModuleForm.setValue(t[1])},t=>{this.error=!0})})}getValidators(t){const e=[];switch(t.type){case"addr":e.push(eu.a.ip());break;case"uint":case"int":case"size":case"secs":e.push(eu.a.number()),e.push(K.B.required),X.isNumber(t.min)&&e.push(K.B.min(t.min)),X.isNumber(t.max)&&e.push(K.B.max(t.max));break;case"str":X.isNumber(t.min)&&e.push(K.B.minLength(t.min)),X.isNumber(t.max)&&e.push(K.B.maxLength(t.max));break;case"float":e.push(K.B.required),e.push(eu.a.decimalNumber());break;case"uuid":e.push(eu.a.uuid())}return e}createForm(){const t={};X.forEach(this.moduleOptions,e=>{t[e.name]=[e.default_value,this.getValidators(e)]}),this.mgrModuleForm=this.formBuilder.group(t)}goToListView(){this.router.navigate(["/mgr-modules"])}onSubmit(){if(this.mgrModuleForm.pristine)return void this.goToListView();const t={};X.forEach(this.moduleOptions,e=>{const n=this.mgrModuleForm.get(e.name);n.dirty&&n.valid&&(t[e.name]=n.value)}),this.mgrModuleService.updateConfig(this.moduleName,t).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n('Updated options for module "{{name}}".',{name:this.moduleName})),this.goToListView()},()=>{this.mgrModuleForm.setErrors({cdSubmitButton:!0})})}}var Wh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Kh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ei.b,Ei.a)),s["ɵdid"](1,49152,null,0,Li.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading configuration..."]))],null,null)}function $h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The configuration could not be loaded."]))],(function(t,e){t(e,1,0,"error")}),null)}function Jh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](1,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.parent.context.$implicit.value.long_desc||e.parent.context.$implicit.value.desc));t(e,2,0,n)}))}function Zh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,7,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](3,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](5,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](7,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](10,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],(function(t,e){t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))}),(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,9).validClass,s["ɵnov"](e,9).invalidClass),t(e,10,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))}))}function Qh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"input",[["class","form-control"],["type","text"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,1)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](3,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](5,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](6,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](7,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,7,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""))}),(function(t,e){t(e,0,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass)}))}function Xh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function tg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"select",[["class","form-control custom-select"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](3,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](5,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](6,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](7,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xh)),s["ɵdid"](9,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,7,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,9,0,e.parent.parent.context.$implicit.value.enum_allowed)}),(function(t,e){t(e,0,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass)}))}function eg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8"]))],null,null)}function ng(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a valid IP address."]))],null,null)}function ag(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Qh)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tg)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,eg)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ng)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,0===e.parent.context.$implicit.value.enum_allowed.length),t(e,4,0,e.parent.context.$implicit.value.enum_allowed.length>0),t(e,6,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"invalidUuid")),t(e,8,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),null)}function rg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function ig(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must be lower or equal to ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.max)}))}function sg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must be greater or equal to ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.min)}))}function ug(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function og(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[8,"min",0],[8,"max",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](3,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](5,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](7,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rg)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ig)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ug)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,11,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"required")),t(e,13,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"max")),t(e,15,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"min")),t(e,17,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),(function(t,e){t(e,1,1,[s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.min,""),s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.max,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,9).validClass,s["ɵnov"](e,9).invalidClass])}))}function lg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function dg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number or decimal."]))],null,null)}function cg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](3,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](5,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](7,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](8,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](9,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lg)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dg)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,11,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"required")),t(e,13,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,9).validClass,s["ɵnov"](e,9).invalidClass)}))}function fg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,3,"label",[["class","col-form-label col-sm-5"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,Jh)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Zh)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,ag)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](12,3),(t()(),s["ɵand"](16777216,null,0,2,null,og)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](15,4),(t()(),s["ɵand"](16777216,null,0,1,null,cg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0),t(e,7,0,e.context.$implicit.value.long_desc||e.context.$implicit.value.desc),t(e,9,0,"bool"===e.context.$implicit.value.type);var n=t(e,12,0,"addr","str","uuid").includes(e.context.$implicit.value.type);t(e,11,0,n);var a=t(e,15,0,"uint","int","size","secs").includes(e.context.$implicit.value.type);t(e,14,0,a),t(e,17,0,"float"===e.context.$implicit.value.type)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.value.name,"")),t(e,5,0,e.context.$implicit.value.name)}))}function hg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,21,"form",[["name","mgrModuleForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](6,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,15,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Edit Manager module"])),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,fg)),s["ɵdid"](12,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵeld"](14,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),$s.b,$s.a)),s["ɵdid"](17,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](18,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Update"])),(t()(),s["ɵeld"](20,0,null,null,2,"button",[["class","btn btn-light"],["routerLink","/mgr-modules"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,21).onClick()&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,Et.n,[Et.m,Et.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){var n=e.component;t(e,3,0,n.mgrModuleForm),t(e,6,0,n.mgrModuleForm),t(e,12,0,s["ɵunv"](e,12,0,s["ɵnov"](e,13).transform(n.moduleOptions))),t(e,17,0,n.mgrModuleForm),t(e,21,0,"/mgr-modules")}),(function(t,e){t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending)}))}function gg(t){return s["ɵvid"](0,[s["ɵpid"](0,Xs.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,Kh)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$h)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hg)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.loading&&!n.error),t(e,4,0,n.loading&&n.error),t(e,6,0,!n.loading&&!n.error)}),null)}function pg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-mgr-module-form",[],null,null,null,gg,Wh)),s["ɵdid"](1,114688,null,0,Uh,[Et.a,Et.m,no.a,oe,bt.a,fe.a],null,null)],(function(t,e){t(e,1,0)}),null)}var bg=s["ɵccf"]("cd-mgr-module-form",Uh,pg,{},{},[]),mg=n("xTzq");let yg=(()=>{let t=class{constructor(t){this.http=t,this.baseURL="api/cephfs",this.baseUiURL="ui-api/cephfs"}list(){return this.http.get(""+this.baseURL)}lsDir(t,e){let n=`${this.baseUiURL}/${t}/ls_dir?depth=2`;return e&&(n+="&path="+encodeURIComponent(e)),this.http.get(n)}getCephfs(t){return this.http.get(`${this.baseURL}/${t}`)}getTabs(t){return this.http.get(`ui-api/cephfs/${t}/tabs`)}getClients(t){return this.http.get(`${this.baseURL}/${t}/clients`)}evictClient(t,e){return this.http.delete(`${this.baseURL}/${t}/client/${e}`)}getMdsCounters(t){return this.http.get(`${this.baseURL}/${t}/mds_counters`)}mkSnapshot(t,e,n){let a=new et.h;return a=a.append("path",e),X.isUndefined(n)||(a=a.append("name",n)),this.http.post(`${this.baseURL}/${t}/mk_snapshot`,null,{params:a})}rmSnapshot(t,e,n){let a=new et.h;return a=a.append("path",e),a=a.append("name",n),this.http.post(`${this.baseURL}/${t}/rm_snapshot`,null,{params:a})}updateQuota(t,e,n){let a=new et.h;return a=a.append("path",e),this.http.post(`${this.baseURL}/${t}/set_quotas`,n,{observe:"response",params:a})}};return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t=nc.__decorate([mg.a,nc.__metadata("design:paramtypes",[et.c])],t),t})();class vg{constructor(t,e,n,a,r,i,s,u){this.authStorageService=t,this.modalService=e,this.cephfsService=n,this.cdDatePipe=a,this.i18n=r,this.actionLabels=i,this.notificationService=s,this.dimlessBinaryPipe=u,this.icons=pt.a,this.loadingIndicator=!1,this.loading={},this.treeOptions={useVirtualScroll:!0,getChildren:t=>this.updateDirectory(t.id),actionMapping:{mouse:{click:this.selectAndShowNode.bind(this),expanderClick:this.selectAndShowNode.bind(this)}}}}selectAndShowNode(t,e,n){ac.a.TOGGLE_EXPANDED(t,e,n),this.selectNode(e)}selectNode(t){ac.a.TOGGLE_ACTIVE(void 0,t,void 0),this.selectedDir=this.getDirectory(t),"/"!==t.id&&this.setSettings(t)}ngOnInit(){this.permission=this.authStorageService.getPermissions().cephfs,this.setUpQuotaTable(),this.setUpSnapshotTable()}setUpQuotaTable(){this.quota={columns:[{prop:"row.name",name:this.i18n("Name"),flexGrow:1},{prop:"row.value",name:this.i18n("Value"),sortable:!1,flexGrow:1},{prop:"row.originPath",name:this.i18n("Origin"),sortable:!1,cellTemplate:this.originTmpl,flexGrow:1}],selection:new li.a,updateSelection:t=>{this.quota.selection=t},tableActions:[{name:this.actionLabels.SET,icon:pt.a.edit,permission:"update",visible:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UPDATE,icon:pt.a.edit,permission:"update",visible:t=>t.first()&&t.first().dirValue>0,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UNSET,icon:pt.a.destroy,permission:"update",disable:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.unsetQuotaModal()}]}}setUpSnapshotTable(){this.snapshot={columns:[{prop:"name",name:this.i18n("Name"),flexGrow:1},{prop:"path",name:this.i18n("Path"),isHidden:!0,flexGrow:2},{prop:"created",name:this.i18n("Created"),flexGrow:1,pipe:this.cdDatePipe}],selection:new li.a,updateSelection:t=>{this.snapshot.selection=t},tableActions:[{name:this.actionLabels.CREATE,icon:pt.a.add,permission:"create",canBePrimary:t=>!t.hasSelection,click:()=>this.createSnapshot()},{name:this.actionLabels.DELETE,icon:pt.a.destroy,permission:"delete",click:()=>this.deleteSnapshotModal(),canBePrimary:t=>t.hasSelection,disable:t=>!t.hasSelection}]}}ngOnChanges(){this.selectedDir=void 0,this.dirs=[],this.requestedPaths=[],this.nodeIds={},this.id&&(this.setRootNode(),this.firstCall())}setRootNode(){this.nodes=[{name:"/",id:"/",isExpanded:!0}]}firstCall(){setTimeout(()=>{this.getNode("/").loadNodeChildren()},10)}updateDirectory(t){if(this.unsetLoadingIndicator(),this.requestedPaths.includes(t)){if(!0===this.loading[t])return}else this.requestedPaths.push(t);return new Promise(e=>{this.setLoadingIndicator(t,!0),this.cephfsService.lsDir(this.id,t).subscribe(n=>{this.updateTreeStructure(n),this.updateQuotaTable(),this.updateTree(),e(this.getChildren(t)),this.setLoadingIndicator(t,!1)})})}setLoadingIndicator(t,e){this.loading[t]=e,this.unsetLoadingIndicator()}getSubDirectories(t,e=this.dirs){return e.filter(e=>e.parent===t)}getChildren(t){const e=this.getSubTree(t);return X.sortBy(this.getSubDirectories(t),"path").map(t=>this.createNode(t,e))}createNode(t,e){return this.nodeIds[t.path]=t,e||this.getSubTree(t.parent),{name:t.name,id:t.path,hasChildren:this.getSubDirectories(t.path,e).length>0}}getSubTree(t){return this.dirs.filter(e=>e.parent&&e.parent.startsWith(t))}setSettings(t){const e=(t,e)=>t?e?e(t):t:"";this.settings=[this.getQuota(t,"max_files",e),this.getQuota(t,"max_bytes",t=>e(t,t=>this.dimlessBinaryPipe.transform(t)))]}getQuota(t,e,n){const a=t.id;t=this.getOrigin(t,e);const r=this.getDirectory(t),i=r.quotas[e];let s=i,u=r.path;if(t.id===a)if("/"===t.parent.id)s=0;else{const n=this.getDirectory(this.getOrigin(t.parent,e));s=n.quotas[e],u=n.path}return{row:{name:this.i18n("max_bytes"===e?"Max size":"Max files"),value:n(i),originPath:i?r.path:""},quotaKey:e,dirValue:this.nodeIds[a].quotas[e],nextTreeMaximum:{value:s,path:s?u:""}}}getOrigin(t,e){if(t.parent&&"/"!==t.parent.id){const n=this.getQuotaFromTree(t,e),a=this.getOrigin(t.parent,e),r=this.getQuotaFromTree(a,e);return 0===n||0!==r&&r<n?a:t}return t}getQuotaFromTree(t,e){return this.getDirectory(t).quotas[e]}getDirectory(t){return this.nodeIds[t.id]}selectOrigin(t){this.selectNode(this.getNode(t))}getNode(t){return this.treeComponent.treeModel.getNodeById(t)}updateQuotaModal(){const t=this.selectedDir.path,e=this.quota.selection.first(),n=e.nextTreeMaximum,a=e.quotaKey,r=e.dirValue;this.modalService.show(ui.a,{initialState:{titleText:this.getModalQuotaTitle(0===r?this.actionLabels.SET:this.actionLabels.UPDATE,t),message:n.value?this.i18n("The inherited {{quotaValue}} is the maximum value to be used.",{quotaValue:this.getQuotaValueFromPathMsg(n.value,n.path)}):void 0,fields:[this.getQuotaFormField(e.row.name,a,r,n.value)],submitButtonText:this.i18n("Save"),onSubmit:t=>this.updateQuota(t)}})}getModalQuotaTitle(t,e){return this.i18n("{{action}} CephFS {{quotaName}} quota for '{{path}}'",{action:t,quotaName:this.getQuotaName(),path:e})}getQuotaName(){return this.isBytesQuotaSelected()?this.i18n("size"):this.i18n("files")}isBytesQuotaSelected(){return"max_bytes"===this.quota.selection.first().quotaKey}getQuotaValueFromPathMsg(t,e){return this.i18n("{{quotaName}} quota {{value}} from '{{path}}'",{value:this.isBytesQuotaSelected()?this.dimlessBinaryPipe.transform(t):t,quotaName:this.getQuotaName(),path:e})}getQuotaFormField(t,e,n,a){const r="max_bytes"===e,i=[r?eu.a.binaryMin(0):K.B.min(0)];a&&i.push(r?eu.a.binaryMax(a):K.B.max(a));const s={type:r?"binary":"number",label:t,name:e,value:n,validators:i,required:!0};return r||(s.errors={min:this.i18n("Value has to be at least {{value}} or more",{value:0}),max:this.i18n("Value has to be at most {{value}} or less",{value:a})}),s}updateQuota(t,e){const n=this.selectedDir.path,a=this.quota.selection.first().quotaKey,r=0===this.selectedDir.quotas[a]?this.actionLabels.SET:0===t[a]?this.actionLabels.UNSET:this.i18n("Updated");this.cephfsService.updateQuota(this.id,n,t).subscribe(()=>{e&&e(),this.notificationService.show(le.a.success,this.getModalQuotaTitle(r,n)),this.forceDirRefresh()})}unsetQuotaModal(){const t=this.selectedDir.path,e=this.quota.selection.first(),n=e.quotaKey,a=e.nextTreeMaximum,r=e.dirValue;this.modalRef=this.modalService.show(yl.a,{initialState:{titleText:this.getModalQuotaTitle(this.actionLabels.UNSET,t),buttonText:this.actionLabels.UNSET,description:this.i18n("{{action}} {{quotaValue}} {{conclusion}}.",{action:this.actionLabels.UNSET,quotaValue:this.getQuotaValueFromPathMsg(r,t),conclusion:a.value>0?this.i18n(a.value>r?"in order to inherit {{quotaValue}}":"which isn't used because of the inheritance of {{quotaValue}}",{quotaValue:this.getQuotaValueFromPathMsg(a.value,a.path)}):this.i18n("in order to have no quota on the directory")}),onSubmit:()=>this.updateQuota({[n]:0},()=>this.modalRef.hide())}})}createSnapshot(){const t=this.selectedDir.path;this.modalService.show(ui.a,{initialState:{titleText:this.i18n("Create Snapshot"),message:this.i18n("Please enter the name of the snapshot."),fields:[{type:"text",name:"name",value:""+ze().toISOString(!0),required:!0}],submitButtonText:this.i18n("Create Snapshot"),onSubmit:e=>{this.cephfsService.mkSnapshot(this.id,t,e.name).subscribe(e=>{this.notificationService.show(le.a.success,this.i18n('Created snapshot "{{name}}" for "{{path}}"',{name:e,path:t})),this.forceDirRefresh()})}}})}forceDirRefresh(t){if(!t){const e=this.selectedDir;if(!e)throw new Error("This function can only be called without path if an selection was made");t=e.parent?e.parent:e.path}this.getNode(t).loadNodeChildren()}updateTreeStructure(t){const e=(t,e)=>{const n=t.filter(t=>t.parent===e),a=n.map(t=>t.path);return{children:n,paths:a}};X.uniq(t.map(t=>t.parent).sort()).forEach(n=>{const a=e(t,n),r=e(this.dirs,n);r.children.forEach(t=>{a.paths.includes(t.path)||this.removeOldDirectory(t)}),a.children.forEach(t=>{r.paths.includes(t.path)?this.updateExistingDirectory(r.children,t):this.addNewDirectory(t)})})}removeOldDirectory(t){const e=t.path;X.remove(this.dirs,t=>t.path===e),delete this.nodeIds[e],this.updateDirectoriesParentNode(t)}updateDirectoriesParentNode(t){const e=t.parent;if(!e)return;const n=this.getNode(e);if(!n)return;const a=this.getChildren(e);n.data.children=a,n.data.hasChildren=a.length>0,this.treeComponent.treeModel.update()}addNewDirectory(t){this.dirs.push(t),this.nodeIds[t.path]=t,this.updateDirectoriesParentNode(t)}updateExistingDirectory(t,e){const n=t.find(t=>t.path===e.path);Object.assign(n,e)}updateQuotaTable(){const t=this.selectedDir?this.getNode(this.selectedDir.path):void 0;t&&"/"!==t.id&&this.setSettings(t)}updateTree(t=!1){this.loadingIndicator&&!t||(this.treeComponent.treeModel.update(),this.nodes=[...this.nodes],this.treeComponent.sizeChanged())}deleteSnapshotModal(){this.modalRef=this.modalService.show(Cs.a,{initialState:{itemDescription:this.i18n("CephFs Snapshot"),itemNames:this.snapshot.selection.selected.map(t=>t.name),submitAction:()=>this.deleteSnapshot()}})}deleteSnapshot(){const t=this.selectedDir.path;this.snapshot.selection.selected.forEach(e=>{const n=e.name;this.cephfsService.rmSnapshot(this.id,t,n).subscribe(()=>{this.notificationService.show(le.a.success,this.i18n('Deleted snapshot "{{name}}" for "{{path}}"',{name:n,path:t}))})}),this.modalRef.hide(),this.forceDirRefresh()}refreshAllDirectories(){this.loadingIndicator=!0,this.requestedPaths.map(t=>this.forceDirRefresh(t));const t=setInterval(()=>{this.updateTree(!0),this.loadingIndicator||clearInterval(t)},3e3)}unsetLoadingIndicator(){this.loadingIndicator&&(clearTimeout(this.loadingTimeout),this.loadingTimeout=setTimeout(()=>{if(Object.values(this.loading).some(t=>t))return this.unsetLoadingIndicator();this.loadingIndicator=!1,this.updateTree()},3e3))}}var xg=s["ɵcrt"]({encapsulation:0,styles:[["tree-root .tree-children{overflow:inherit}.quota-origin[_ngcontent-%COMP%]{cursor:pointer;color:#2b99a8}.quota-origin[_ngcontent-%COMP%]:hover{color:#212121}"]],data:{}});function _g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](3,2)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function Tg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"tree-root",[],null,[["body","keydown"],["body","mousedown"]],(function(t,e,n){var a=!0;return"body:keydown"===e&&(a=!1!==s["ɵnov"](t,2).onKeydown(n)&&a),"body:mousedown"===e&&(a=!1!==s["ɵnov"](t,2).onMousedown(n)&&a),a}),Qd.b,Qd.a)),s["ɵprd"](131584,null,Xd.a,Xd.a,[]),s["ɵdid"](2,573440,[[1,4]],4,tc.a,[Xd.a,ec.a],{nodes:[0,"nodes"],options:[1,"options"]},null),s["ɵqud"](603979776,3,{loadingTemplate:0}),s["ɵqud"](603979776,4,{treeNodeTemplate:0}),s["ɵqud"](603979776,5,{treeNodeWrapperTemplate:0}),s["ɵqud"](603979776,6,{treeNodeFullTemplate:0}),(t()(),s["ɵand"](0,[[3,2],["loadingTemplate",2]],null,0,null,_g))],(function(t,e){var n=e.component;t(e,2,0,n.nodes,n.treeOptions)}),null)}function wg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Quotas"])),(t()(),s["ɵeld"](3,0,null,null,3,"cd-table",[["identifier","quotaKey"],["selectionType","single"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.quota.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](4,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],onlyActionHeader:[2,"onlyActionHeader"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],identifier:[6,"identifier"],forceIdentifier:[7,"forceIdentifier"],selectionType:[8,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](5,0,null,0,1,"cd-table-actions",[["class","only-table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](6,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.settings,n.quota.columns,!0,!1,!1,0,"quotaKey",!0,"single"),t(e,6,0,n.permission,n.quota.selection,n.quota.tableActions)}),null)}function Og(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[["class","col-sm-8 metadata"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,11,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,[" "," "])),(t()(),s["ɵeld"](4,0,null,null,8,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,wg)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Snapshots"])),(t()(),s["ɵeld"](9,0,null,null,3,"cd-table",[["forceIdentifier","true"],["identifier","name"],["selectionType","multiClick"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.snapshot.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](10,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](11,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](12,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,6,0,"/"!==n.selectedDir.path),t(e,10,0,n.selectedDir.snapshots,n.snapshot.columns,"name","true","multiClick"),t(e,12,0,n.permission,n.snapshot.selection,n.snapshot.tableActions)}),(function(t,e){t(e,3,0,e.component.selectedDir.path)}))}function Sg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","quota-origin"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectOrigin(t.context.value)&&a),a}),null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.value)}))}function Ig(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{treeComponent:0}),s["ɵqud"](402653184,2,{originTmpl:0}),(t()(),s["ɵeld"](2,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,10,"div",[["class","col-sm-4 pr-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,9,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,5,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,4,"button",[["class","btn btn-light pull-right"],["type","button"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshAllDirectories()&&a),a}),null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"i",[],[[2,"fa-spin",null]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](9,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](10,2),(t()(),s["ɵeld"](11,0,null,null,2,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Tg)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Og)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[2,2],["origin",2]],null,0,null,Sg))],(function(t,e){var n=e.component,a=t(e,10,0,n.icons.large,n.icons.refresh);t(e,9,0,a),t(e,13,0,n.nodes),t(e,15,0,n.selectedDir)}),(function(t,e){var n=e.component;t(e,6,0,n.loadingIndicator),t(e,7,0,n.loadingIndicator)}))}class Ng{constructor(){this.lhsCounter="mds_mem.ino",this.rhsCounter="mds_server.handle_client_request",this.chart={datasets:[{label:this.lhsCounter,yAxisID:"LHS",data:[],lineTension:.1},{label:this.rhsCounter,yAxisID:"RHS",data:[],lineTension:.1}],options:{title:{text:"",display:!0},responsive:!0,maintainAspectRatio:!1,legend:{position:"top"},scales:{xAxes:[{position:"top",type:"time",time:{displayFormats:{quarter:"MMM YYYY"}},ticks:{maxRotation:0}}],yAxes:[{id:"LHS",type:"linear",position:"left"},{id:"RHS",type:"linear",position:"right"}]},tooltips:{enabled:!1,mode:"index",intersect:!1,position:"nearest",callbacks:{title:(t,e)=>{let n=0;if(t.length>0){const a=t[0];n=e.datasets[a.datasetIndex].data[a.index].x}return n.toString()}}}},chartType:"line"}}ngOnInit(){X.isUndefined(this.mdsCounter)||(this.setChartTooltip(),this.updateChart())}ngOnChanges(){X.isUndefined(this.mdsCounter)||this.updateChart()}setChartTooltip(){const t=new ja.a(this.chartCanvas,this.chartTooltip,t=>t.caretX+"px",t=>t.caretY-t.height-23+"px");t.getTitle=t=>ze(t,"x").format("LTS"),t.checkOffset=!0,X.merge(this.chart,{options:{title:{text:this.mdsCounter.name},tooltips:{custom:e=>t.customTooltips(e)}}})}updateChart(){const t=[{data:this.convertTimeSeries(this.mdsCounter[this.lhsCounter])},{data:this.deltaTimeSeries(this.mdsCounter[this.rhsCounter])}];X.merge(this.chart,{datasets:t}),this.chart.datasets=[...this.chart.datasets]}convertTimeSeries(t){const e=[];return X.each(t,t=>{e.push({x:1e3*t[0],y:t[1]})}),e.shift(),e}deltaTimeSeries(t){let e,n=t[0];const a=[];for(e=1;e<t.length;e++){const r=t[e];a.push({x:1e3*r[0],y:r[1]-n[1]}),n=r}return a}}var Cg=s["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto auto 20px;cursor:pointer;overflow:visible;position:relative;height:500px;width:100%}']],data:{}});function Rg(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{chartCanvas:0}),s["ɵqud"](402653184,2,{chartTooltip:0}),(t()(),s["ɵeld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),s["ɵdid"](4,999424,null,0,Ma.a,[s.ElementRef,Ma.c],{datasets:[0,"datasets"],options:[1,"options"],chartType:[2,"chartType"]},null),(t()(),s["ɵeld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.chart.datasets,n.chart.options,n.chart.chartType)}),null)}class Ag{constructor(t,e,n){this.dimlessBinary=t,this.dimless=e,this.i18n=n,this.standbys=[],this.objectValues=Object.values}ngOnChanges(){this.setStandbys()}setStandbys(){this.standbys=[{key:this.i18n("Standby daemons"),value:this.data.standbys}]}ngOnInit(){this.columns={ranks:[{prop:"rank",name:this.i18n("Rank")},{prop:"state",name:this.i18n("State")},{prop:"mds",name:this.i18n("Daemon")},{prop:"activity",name:this.i18n("Activity"),cellTemplate:this.activityTmpl},{prop:"dns",name:this.i18n("Dentries"),pipe:this.dimless},{prop:"inos",name:this.i18n("Inodes"),pipe:this.dimless}],pools:[{prop:"pool",name:this.i18n("Pool")},{prop:"type",name:this.i18n("Type")},{prop:"size",name:this.i18n("Size"),pipe:this.dimlessBinary},{name:this.i18n("Usage"),cellTemplate:this.poolUsageTpl,comparator:(t,e,n,a)=>{const r=n.used/n.avail,i=a.used/a.avail;return r===i?0:r>i?1:-1}}]}}trackByFn(t,e){return e.name}}var kg=s["ɵcrt"]({encapsulation:0,styles:[[".progress[_ngcontent-%COMP%]{margin-bottom:0}"]],data:{}});function Eg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"cd-cephfs-chart",[],null,null,null,Rg,Cg)),s["ɵdid"](3,638976,null,0,Ng,[],{mdsCounter:[0,"mdsCounter"]},null)],(function(t,e){t(e,3,0,e.context.$implicit)}),null)}function Lg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Ko.b,Ko.a)),s["ɵdid"](1,573440,null,0,$o.a,[],{total:[0,"total"],used:[1,"used"]},null)],(function(t,e){t(e,1,0,e.context.row.size,e.context.row.used)}),null)}function Dg(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" ",": "," /s\n"])),s["ɵppd"](1,1)],null,(function(t,e){var n="standby-replay"===e.context.row.state?"Evts":"Reqs",a=s["ɵunv"](e,0,1,t(e,1,0,s["ɵnov"](e.parent,0),e.context.value));t(e,0,0,n,a)}))}function Pg(t){return s["ɵvid"](0,[s["ɵpid"](0,Va.a,[Ka.a]),s["ɵqud"](402653184,1,{poolUsageTpl:0}),s["ɵqud"](402653184,2,{activityTmpl:0}),(t()(),s["ɵeld"](3,0,null,null,14,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,8,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ranks"])),(t()(),s["ɵeld"](7,0,null,null,1,"cd-table",[],null,null,null,Zr.b,Zr.a)),s["ɵdid"](8,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),s["ɵeld"](9,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Standbys"])),(t()(),s["ɵeld"](11,0,null,null,1,"cd-table-key-value",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](12,638976,null,0,ki.a,[He.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](13,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pools"])),(t()(),s["ɵeld"](16,0,null,null,1,"cd-table",[],null,null,null,Zr.b,Zr.a)),s["ɵdid"](17,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),s["ɵeld"](18,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["MDS performance counters"])),(t()(),s["ɵand"](16777216,null,null,1,null,Eg)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵand"](0,[[1,2],["poolUsageTpl",2]],null,0,null,Lg)),(t()(),s["ɵand"](0,[[2,2],["activityTmpl",2]],null,0,null,Dg))],(function(t,e){var n=e.component;t(e,8,0,n.data.ranks,n.columns.ranks,!1),t(e,12,0,n.standbys),t(e,17,0,n.data.pools,n.columns.pools,!1),t(e,21,0,n.objectValues(n.data.mdsCounters),n.trackByFn)}),null)}var Mg=n("C6Ij"),qg=n("AWcq");class jg{constructor(t,e,n,a,r,i){this.cephfsService=t,this.modalService=e,this.notificationService=n,this.authStorageService=a,this.i18n=r,this.actionLabels=i,this.triggerApiUpdate=new s.EventEmitter,this.selection=new li.a,this.permission=this.authStorageService.getPermissions().cephfs,this.tableActions=[{permission:"update",icon:pt.a.signOut,click:()=>this.evictClientModal(),name:this.actionLabels.EVICT}]}ngOnInit(){this.columns=[{prop:"id",name:this.i18n("id")},{prop:"type",name:this.i18n("type")},{prop:"state",name:this.i18n("state")},{prop:"version",name:this.i18n("version")},{prop:"hostname",name:this.i18n("Host")},{prop:"root",name:this.i18n("root")}]}updateSelection(t){this.selection=t}evictClient(t){this.cephfsService.evictClient(this.id,t).subscribe(()=>{this.triggerApiUpdate.emit(),this.modalRef.hide(),this.notificationService.show(le.a.success,this.i18n('Evicted client "{{clientId}}"',{clientId:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}evictClientModal(){const t=this.selection.first().id;this.modalRef=this.modalService.show(Cs.a,{initialState:{itemDescription:"client",itemNames:[t],actionDescription:"evict",submitAction:()=>this.evictClient(t)}})}}var Fg=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Vg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Mg.b,Mg.a)),s["ɵdid"](1,114688,null,0,qg.a,[],{status:[0,"status"]},null),(t()(),s["ɵeld"](2,0,null,null,3,"cd-table",[["selectionType","single"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](3,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](5,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.clients.status),t(e,3,0,n.clients.data,n.columns,"single"),t(e,5,0,n.permission,n.selection,n.tableActions)}),null)}var Gg=n("yJti");class Bg{constructor(t,e,n){this.ngZone=t,this.authStorageService=e,this.cephfsService=n,this.clients={data:[],status:Gg.a.ValueNone},this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.directoriesSelected=!1,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection?this.selection.id!==this.id&&this.setupSelected(this.selection.id,this.selection.mdsmap.info):this.unsubscribeInterval()}setupSelected(t,e){this.id=t;const n=X.first(Object.values(e));this.grafanaId=n&&n.name,this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.clients={data:[],status:Gg.a.ValueNone},this.updateInterval()}updateInterval(){this.unsubscribeInterval(),this.subscribeInterval()}unsubscribeInterval(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe()}subscribeInterval(){this.ngZone.runOutsideAngular(()=>this.reloadSubscriber=Object(hi.a)(0,5e3).subscribe(()=>this.ngZone.run(()=>this.refresh())))}refresh(){this.cephfsService.getTabs(this.id).subscribe(t=>{this.data=t,this.softRefresh()},()=>{this.clients.status=Gg.a.ValueException})}softRefresh(){const t=X.cloneDeep(this.data);this.clients=t.clients,this.details={standbys:t.standbys,pools:t.pools,ranks:t.ranks,mdsCounters:t.mds_counters,name:t.name}}ngOnDestroy(){this.unsubscribeInterval()}}var zg=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Yg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients"])),(t()(),s["ɵeld"](2,0,null,null,1,"span",[["class","badge badge-pill badge-tab ml-1"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""]))],null,(function(t,e){t(e,3,0,e.component.clients.data.length)}))}function Hg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-cephfs-directories",[],null,null,null,Ig,xg)),s["ɵdid"](1,638976,null,0,vg,[Z.a,Ct.b,yg,He.a,fe.a,St.b,bt.a,Fa.a],{id:[0,"id"]},null)],(function(t,e){t(e,1,0,e.component.id)}),null)}function Ug(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","tbO9LAiZz"]],null,null,null,$r.b,$r.a)),s["ɵdid"](3,638976,null,0,Jr.a,[ve.b,Xt.a,fe.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"mds-performance?var-mds_servers=mds."+n.grafanaId,"one","tbO9LAiZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Wg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.softRefresh()&&a),a}),null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},{selectTab:"selectTab"}),(t()(),s["ɵeld"](4,0,null,null,1,"cd-cephfs-detail",[],null,null,null,Pg,kg)),s["ɵdid"](5,638976,null,0,Ag,[Fa.a,Va.a,fe.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](6,0,null,0,5,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.softRefresh()&&a),a}),null,null)),s["ɵdid"](7,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],null,{selectTab:"selectTab"}),(t()(),s["ɵand"](0,null,null,1,null,Yg)),s["ɵdid"](9,16384,null,0,Sa.c,[s.TemplateRef,Sa.b],null,null),(t()(),s["ɵeld"](10,0,null,null,1,"cd-cephfs-clients",[],null,[[null,"triggerApiUpdate"]],(function(t,e,n){var a=!0;return"triggerApiUpdate"===e&&(a=!1!==t.component.refresh()&&a),a}),Vg,Fg)),s["ɵdid"](11,114688,null,0,jg,[yg,Ct.b,bt.a,Z.a,fe.a,St.b],{id:[0,"id"],clients:[1,"clients"]},{triggerApiUpdate:"triggerApiUpdate"}),(t()(),s["ɵeld"](12,0,null,0,3,"tab",[["heading","Directories"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=0!=(t.component.directoriesSelected=!0)&&a),a}),null,null)),s["ɵdid"](13,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,Hg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ug)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.details),t(e,7,0),t(e,11,0,n.id,n.clients),t(e,13,0,"Directories"),t(e,15,0,n.directoriesSelected),t(e,17,0,n.grafanaPermission.read&&n.grafanaId)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby),t(e,12,0,s["ɵnov"](e,13).id,s["ɵnov"](e,13).active,s["ɵnov"](e,13).addClass,s["ɵnov"](e,13).role,s["ɵnov"](e,13).ariaLabelledby)}))}function Kg(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Wg)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}class $g extends Ns.a{constructor(t,e,n){super(),this.cephfsService=t,this.cdDatePipe=e,this.i18n=n,this.filesystems=[],this.selection=new li.a}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"mdsmap.fs_name",flexGrow:2},{name:this.i18n("Created"),prop:"mdsmap.created",flexGrow:2,pipe:this.cdDatePipe},{name:this.i18n("Enabled"),prop:"mdsmap.enabled",flexGrow:1,cellTransformation:oi.a.checkIcon}]}loadFilesystems(t){this.cephfsService.list().subscribe(t=>{this.filesystems=t},()=>{t.error()})}updateSelection(t){this.selection=t}}var Jg=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Zg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.loadFilesystems(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](1,2867200,null,0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](2,0,null,3,1,"cd-cephfs-tabs",[["cdTableDetail",""]],null,null,null,Kg,zg)),s["ɵdid"](3,704512,null,0,Bg,[s.NgZone,Z.a,yg],{selection:[0,"selection"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.filesystems,n.columns,"flex",!0,"id","true","single"),t(e,3,0,n.expandedRow)}),null)}function Qg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-cephfs-list",[],null,null,null,Zg,Jg)),s["ɵdid"](1,114688,null,0,$g,[yg,He.a,fe.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Xg=s["ɵccf"]("cd-cephfs-list",$g,Qg,{},{},[]),tp=n("1nQr");class ep{constructor(t,e,n,a,r,i,s,u){this.i18n=t,this.actionLabels=e,this.notificationService=n,this.userService=a,this.authStorageService=r,this.formBuilder=i,this.router=s,this.passwordPolicyService=u,this.passwordPolicyHelpText="",this.icons=pt.a,this.action=this.actionLabels.CHANGE,this.resource=this.i18n("password"),this.createForm()}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({oldpassword:[null,[K.B.required,eu.a.custom("notmatch",()=>this.userForm&&this.userForm.getValue("newpassword")===this.userForm.getValue("oldpassword"))]],newpassword:[null,[K.B.required,eu.a.custom("notmatch",()=>this.userForm&&this.userForm.getValue("oldpassword")===this.userForm.getValue("newpassword"))],[eu.a.passwordPolicy(this.userService,()=>this.authStorageService.getUsername(),(t,e,n)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(e),this.passwordValuation=X.defaultTo(n,"")})]],confirmnewpassword:[null,[K.B.required]]},{validators:[eu.a.match("newpassword","confirmnewpassword")]})}onSubmit(){if(this.userForm.pristine)return;const t=this.authStorageService.getUsername(),e=this.userForm.getValue("oldpassword"),n=this.userForm.getValue("newpassword");this.userService.changePassword(t,e,n).subscribe(()=>this.onPasswordChange(),()=>{this.userForm.setErrors({cdSubmitButton:!0})})}onPasswordChange(){this.notificationService.show(le.a.success,this.i18n('Updated user password"')),this.router.navigate(["/login"])}}var np=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ap(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function rp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function ip(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-helper",[["class","text-pre-wrap"]],null,null,null,Ju.b,Ju.a)),s["ɵdid"](1,49152,null,0,Zu.a,[],{class:[0,"class"],html:[1,"html"]},null)],(function(t,e){t(e,1,0,"text-pre-wrap",s["ɵinlineInterpolate"](1,"",e.component.passwordPolicyHelpText,""))}),null)}function sp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function up(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function op(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.passwordValuation)}))}function lp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function dp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password confirmation doesn't match the new password."]))],null,null)}function cp(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Xs.a,[]),(t()(),s["ɵeld"](2,0,null,null,96,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,95,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,5).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit()&&a),a}),null,null)),s["ɵdid"](4,16384,null,0,K.G,[],null,null),s["ɵdid"](5,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](7,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](8,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](9,0,null,null,89,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](11,null,[""," ",""])),s["ɵppd"](12,1),s["ɵppd"](13,1),(t()(),s["ɵeld"](14,0,null,null,77,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](16,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](19,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","oldpassword"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Old password"])),(t()(),s["ɵeld"](21,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,8,"input",[["autocomplete","new-password"],["autofocus",""],["class","form-control"],["formControlName","oldpassword"],["id","oldpassword"],["placeholder","Old password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,24)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,24).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,24)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,24)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](24,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](26,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](28,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](29,4210688,null,0,Ks.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](30,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](31,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](32,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,1,"button",[["cdPasswordButton","oldpassword"],["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,34).onClick()&&a),a}),null,null)),s["ɵdid"](34,81920,null,0,Qu.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ap)),s["ɵdid"](36,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rp)),s["ɵdid"](38,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](39,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](40,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](43,0,null,0,4,"label",[["class","cd-col-form-label"],["for","newpassword"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New password"])),(t()(),s["ɵand"](16777216,null,null,1,null,ip)),s["ɵdid"](47,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](48,0,null,0,20,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](50,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","newpassword"],["id","newpassword"],["placeholder","Password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,51)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,51).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,51)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,51)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](51,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](53,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](55,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](56,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](57,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](58,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,1,"button",[["cdPasswordButton","newpassword"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,60).onClick()&&a),a}),null,null)),s["ɵdid"](60,81920,null,0,Qu.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](61,0,null,null,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(t()(),s["ɵeld"](62,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,sp)),s["ɵdid"](64,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,up)),s["ɵdid"](66,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,op)),s["ɵdid"](68,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](69,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](70,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](73,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","confirmnewpassword"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Confirm new password"])),(t()(),s["ɵeld"](75,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](76,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](77,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","confirmnewpassword"],["id","confirmnewpassword"],["placeholder","Confirm new password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,78)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,78).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,78)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,78)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](78,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](80,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](82,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](83,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](84,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](85,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](86,0,null,null,1,"button",[["cdPasswordButton","confirmnewpassword"],["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,87).onClick()&&a),a}),null,null)),s["ɵdid"](87,81920,null,0,Qu.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lp)),s["ɵdid"](89,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dp)),s["ɵdid"](91,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](92,0,null,null,6,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](93,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](94,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),$s.b,$s.a)),s["ɵdid"](95,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](96,0,[" "," "," "])),s["ɵppd"](97,1),s["ɵppd"](98,1)],(function(t,e){var n=e.component;t(e,5,0,n.userForm),t(e,8,0,n.userForm),t(e,16,0),t(e,26,0,"oldpassword"),t(e,29,0,""),t(e,31,0,"oldpassword"),t(e,34,0,"oldpassword"),t(e,36,0,n.userForm.showError("oldpassword",s["ɵnov"](e,5),"required")),t(e,38,0,n.userForm.showError("oldpassword",s["ɵnov"](e,5),"notmatch")),t(e,40,0),t(e,47,0,n.passwordPolicyHelpText.length>0),t(e,53,0,"newpassword"),t(e,57,0,"newpassword"),t(e,60,0,"newpassword"),t(e,64,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"required")),t(e,66,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"notmatch")),t(e,68,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"passwordPolicy")),t(e,70,0),t(e,80,0,"confirmnewpassword"),t(e,84,0,"confirmnewpassword"),t(e,87,0,"confirmnewpassword"),t(e,89,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,5),"required")),t(e,91,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,5),"match")),t(e,95,0,n.userForm)}),(function(t,e){var n=e.component;t(e,3,0,s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending);var a=s["ɵunv"](e,11,0,t(e,12,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,11,1,t(e,13,0,s["ɵnov"](e,1),n.resource));t(e,11,0,a,r),t(e,15,0,s["ɵnov"](e,16).hasErrors,s["ɵnov"](e,16).hasSuccess),t(e,23,0,s["ɵnov"](e,28).ngClassUntouched,s["ɵnov"](e,28).ngClassTouched,s["ɵnov"](e,28).ngClassPristine,s["ɵnov"](e,28).ngClassDirty,s["ɵnov"](e,28).ngClassValid,s["ɵnov"](e,28).ngClassInvalid,s["ɵnov"](e,28).ngClassPending,s["ɵnov"](e,31).validClass,s["ɵnov"](e,31).invalidClass),t(e,39,0,s["ɵnov"](e,40).hasErrors,s["ɵnov"](e,40).hasSuccess),t(e,50,0,s["ɵnov"](e,55).ngClassUntouched,s["ɵnov"](e,55).ngClassTouched,s["ɵnov"](e,55).ngClassPristine,s["ɵnov"](e,55).ngClassDirty,s["ɵnov"](e,55).ngClassValid,s["ɵnov"](e,55).ngClassInvalid,s["ɵnov"](e,55).ngClassPending,s["ɵnov"](e,57).validClass,s["ɵnov"](e,57).invalidClass),t(e,62,0,s["ɵinlineInterpolate"](1,"",n.passwordStrengthLevelClass,""),s["ɵinlineInterpolate"](1,"",n.passwordValuation,"")),t(e,69,0,s["ɵnov"](e,70).hasErrors,s["ɵnov"](e,70).hasSuccess),t(e,77,0,s["ɵnov"](e,82).ngClassUntouched,s["ɵnov"](e,82).ngClassTouched,s["ɵnov"](e,82).ngClassPristine,s["ɵnov"](e,82).ngClassDirty,s["ɵnov"](e,82).ngClassValid,s["ɵnov"](e,82).ngClassInvalid,s["ɵnov"](e,82).ngClassPending,s["ɵnov"](e,84).validClass,s["ɵnov"](e,84).invalidClass);var i=s["ɵunv"](e,96,0,t(e,97,0,s["ɵnov"](e,0),n.action)),u=s["ɵunv"](e,96,1,t(e,98,0,s["ɵnov"](e,1),n.resource));t(e,96,0,i,u)}))}function fp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-user-password-form",[],null,null,null,cp,np)),s["ɵdid"](1,49152,null,0,ep,[fe.a,St.b,bt.a,Ot.a,Z.a,no.a,Et.m,tp.a],null,null)],null,null)}var hp=s["ɵccf"]("cd-user-password-form",ep,fp,{},{},[]);class gp{constructor(t,e){this.route=t,this.i18n=e,this.message=this.i18n("The NFS Ganesha service is not configured.")}ngOnInit(){this.routeParamsSubscribe=this.route.params.subscribe(t=>{this.message=t.message})}ngOnDestroy(){this.routeParamsSubscribe.unsubscribe()}}var pp=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function bp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"cd-alert-panel",[["type","info"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"]},null),(t()(),s["ɵted"](2,0,[" ",""])),(t()(),s["ɵeld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,0,4,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please consult the "])),(t()(),s["ɵeld"](6,0,null,null,1,"cd-doc",[["section","nfs-ganesha"]],null,null,null,ei.b,ei.a)),s["ɵdid"](7,114688,null,0,ni.a,[Tt.a,fe.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,null,[" on how to configure and enable the NFS Ganesha management functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,7,0,"nfs-ganesha")}),(function(t,e){t(e,2,0,e.component.message)}))}function mp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-nfs-501",[],null,null,null,bp,pp)),s["ɵdid"](1,245760,null,0,gp,[Et.a,fe.a],null,null)],(function(t,e){t(e,1,0)}),null)}var yp=s["ɵccf"]("cd-nfs-501",gp,mp,{},{},[]);class vp{constructor(t){this.i18n=t,this.clients=[],this.clientsColumns=[{name:this.i18n("Addresses"),prop:"addresses",flexGrow:2},{name:this.i18n("Access Type"),prop:"access_type",flexGrow:1},{name:this.i18n("Squash"),prop:"squash",flexGrow:1}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.clients=this.selectedItem.clients,this.data={},this.data[this.i18n("Cluster")]=this.selectedItem.cluster_id,this.data[this.i18n("Daemons")]=this.selectedItem.daemons,this.data[this.i18n("NFS Protocol")]=this.selectedItem.protocols.map(t=>"NFSv"+t),this.data[this.i18n("Pseudo")]=this.selectedItem.pseudo,this.data[this.i18n("Access Type")]=this.selectedItem.access_type,this.data[this.i18n("Squash")]=this.selectedItem.squash,this.data[this.i18n("Transport")]=this.selectedItem.transports,this.data[this.i18n("Path")]=this.selectedItem.path,"CEPH"===this.selectedItem.fsal.name?(this.data[this.i18n("Storage Backend")]=this.i18n("CephFS"),this.data[this.i18n("CephFS User")]=this.selectedItem.fsal.user_id,this.data[this.i18n("CephFS Filesystem")]=this.selectedItem.fsal.fs_name,this.data[this.i18n("Security Label")]=this.selectedItem.fsal.sec_label_xattr):(this.data[this.i18n("Storage Backend")]=this.i18n("Object Gateway"),this.data[this.i18n("Object Gateway User")]=this.selectedItem.fsal.rgw_user_id))}}var xp=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _p(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Oa.b,Oa.a)),s["ɵdid"](1,180224,null,0,Sa.e,[Sa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Ai.b,Ai.a)),s["ɵdid"](5,638976,null,0,ki.a,[He.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](6,0,null,0,3,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,Sa.b,[Sa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","addresses"],["selectionType",""]],null,null,null,Zr.b,Zr.a)),s["ɵdid"](9,2867200,[["table",4]],0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.data),t(e,7,0,s["ɵinlineInterpolate"](1,"Clients (",n.clients.length,")")),t(e,9,0,n.clients,n.clientsColumns,"flex","addresses","true","")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby)}))}function Tp(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,_p)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}var wp=n("VTlA");let Op=(()=>{class t{constructor(t,e){this.http=t,this.i18n=e,this.apiPath="api/nfs-ganesha",this.uiApiPath="ui-api/nfs-ganesha",this.nfsAccessType=[{value:"RW",help:this.i18n("Allows all operations")},{value:"RO",help:this.i18n("Allows only operations that do not modify the server")},{value:"MDONLY",help:this.i18n("Does not allow read or write operations, but allows any other operation")},{value:"MDONLY_RO",help:this.i18n("Does not allow read, write, or any operation that modifies file        attributes or directory content")},{value:"NONE",help:this.i18n("Allows no access at all")}],this.nfsFsal=[{value:"CEPH",descr:this.i18n("CephFS")},{value:"RGW",descr:this.i18n("Object Gateway")}],this.nfsSquash=["no_root_squash","root_id_squash","root_squash","all_squash"]}list(){return this.http.get(this.apiPath+"/export")}get(t,e){return this.http.get(`${this.apiPath}/export/${t}/${e}`)}create(t){return this.http.post(this.apiPath+"/export",t,{observe:"response"})}update(t,e,n){return this.http.put(`${this.apiPath}/export/${t}/${e}`,n,{observe:"response"})}delete(t,e){return this.http.delete(`${this.apiPath}/export/${t}/${e}`,{observe:"response"})}lsDir(t,e){return this.http.get(`${this.uiApiPath}/lsdir/${t}?root_dir=${e}`)}buckets(t){return this.http.get(`${this.uiApiPath}/rgw/buckets?user_id=${t}`)}clients(){return this.http.get(this.uiApiPath+"/cephx/clients")}fsals(){return this.http.get(this.uiApiPath+"/fsals")}filesystems(){return this.http.get(this.uiApiPath+"/cephfs/filesystems")}daemon(){return this.http.get(this.apiPath+"/daemon")}start(t){return this.http.put(`${this.apiPath}/service/${t}/start`,null,{observe:"response"})}stop(t){return this.http.put(`${this.apiPath}/service/${t}/stop`,null,{observe:"response"})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](fe.a))},token:t,providedIn:ue.a}),t})();class Sp extends Ns.a{constructor(t,e,n,a,r,i,s){super(),this.authStorageService=t,this.i18n=e,this.modalService=n,this.nfsService=a,this.taskListService=r,this.taskWrapper=i,this.actionLabels=s,this.selection=new li.a,this.isDefaultCluster=!1,this.builders={"nfs/create":t=>({path:t.path,cluster_id:t.cluster_id,fsal:t.fsal})},this.permission=this.authStorageService.getPermissions().nfs;const u=()=>this.selection.first()&&`${encodeURI(this.selection.first().cluster_id)}/${encodeURI(this.selection.first().export_id)}`;this.tableActions=[{permission:"create",icon:pt.a.add,routerLink:()=>"/nfs/create",canBePrimary:t=>!t.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:pt.a.edit,routerLink:()=>"/nfs/edit/"+u(),name:this.actionLabels.EDIT},{permission:"delete",icon:pt.a.destroy,click:()=>this.deleteNfsModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Path"),prop:"path",flexGrow:2,cellTransformation:oi.a.executing},{name:this.i18n("Pseudo"),prop:"pseudo",flexGrow:2},{name:this.i18n("Cluster"),prop:"cluster_id",flexGrow:2},{name:this.i18n("Daemons"),prop:"daemons",flexGrow:2},{name:this.i18n("Storage Backend"),prop:"fsal",flexGrow:2,cellTemplate:this.nfsFsal},{name:this.i18n("Access Type"),prop:"access_type",flexGrow:2}],this.nfsService.daemon().subscribe(t=>{const e=X(t).map(t=>t.cluster_id).uniq().value();this.isDefaultCluster=1===e.length&&"_default_"===e[0],this.columns[2].isHidden=this.isDefaultCluster,this.table&&this.table.updateColumns(),this.taskListService.init(()=>this.nfsService.list(),t=>this.prepareResponse(t),t=>this.exports=t,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders)},()=>{this.onFetchError()})}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}prepareResponse(t){let e=[];return t.forEach(t=>{t.id=`${t.cluster_id}:${t.export_id}`,t.state="LOADING",e=e.concat(t)}),e}onFetchError(){this.table.reset(),this.viewCacheStatus={status:Gg.a.ValueException}}itemFilter(t,e){return t.cluster_id===e.metadata.cluster_id&&t.export_id===e.metadata.export_id}taskFilter(t){return["nfs/create","nfs/delete","nfs/edit"].includes(t.name)}updateSelection(t){this.selection=t}deleteNfsModal(){const t=this.selection.first().cluster_id,e=this.selection.first().export_id;this.modalRef=this.modalService.show(Cs.a,{initialState:{itemDescription:this.i18n("NFS export"),itemNames:[`${t}:${e}`],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new As.a("nfs/delete",{cluster_id:t,export_id:e}),call:this.nfsService.delete(t,e)})}})}}var Ip=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Np(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS"]))],null,null)}function Cp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway"]))],null,null)}function Rp(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Np)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cp)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,"CEPH"===e.context.value.name),t(e,3,0,"RGW"===e.context.value.name)}),null)}function Ap(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{nfsState:0}),s["ɵqud"](402653184,2,{nfsFsal:0}),s["ɵqud"](402653184,3,{table:0}),(t()(),s["ɵeld"](3,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Zr.b,Zr.a)),s["ɵdid"](4,2867200,[[3,4],["table",4]],0,Qr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](5,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Xr.b,Xr.a)),s["ɵdid"](7,114688,null,0,ti.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](8,0,null,3,1,"cd-nfs-details",[["cdTableDetail",""]],null,null,null,Tp,xp)),s["ɵdid"](9,573440,null,0,vp,[fe.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[2,2],["nfsFsal",2]],null,0,null,Rp))],(function(t,e){var n=e.component;t(e,4,0,n.exports,n.columns,"flex",!0,"id","true","single"),t(e,7,0,n.permission,n.selection,n.tableActions),t(e,9,0,n.expandedRow)}),null)}function kp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-nfs-list",[],null,null,null,Ap,Ip)),s["ɵprd"](131584,null,wp.a,wp.a,[an.a,mt.a]),s["ɵdid"](2,245760,null,0,Sp,[Z.a,fe.a,Ct.b,Op,wp.a,Ds.a,St.b],null,null)],(function(t,e){t(e,2,0)}),null)}var Ep=s["ɵccf"]("cd-nfs-list",Sp,kp,{},{},[]),Lp=n("WiuZ"),Dp=n("wnGv"),Pp=n("TYzs");class Mp{constructor(t,e){this.nfsService=t,this.i18n=e,this.nfsSquash=this.nfsService.nfsSquash,this.nfsAccessType=this.nfsService.nfsAccessType,this.icons=pt.a}getNoAccessTypeDescr(){return this.form.getValue("access_type")?`${this.form.getValue("access_type")} ${this.i18n("(inherited from global config)")}`:this.i18n("-- Select the access type --")}getAccessTypeHelp(t){const e=this.nfsAccessType.find(e=>this.getValue(t,"access_type")===e.value);return X.isObjectLike(e)?e.help:""}getNoSquashDescr(){return this.form.getValue("squash")?`${this.form.getValue("squash")} (${this.i18n("inherited from global config")})`:this.i18n("-- Select what kind of user id squashing is performed --")}addClient(){const t=this.form.get("clients"),e="(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?)",n=new tu.a({addresses:new K.i("",{validators:[K.B.required,K.B.pattern(`${e}([ ,]{1,2}${e})*`)]}),access_type:new K.i(""),squash:new K.i("")});return t.push(n),n}removeClient(t){this.form.get("clients").removeAt(t)}showError(t,e,n,a){return this.form.controls.clients.controls[t].showError(e,n,a)}getValue(t,e){return this.form.get("clients").at(t).getValue(e)}resolveModel(t){X.forEach(t,t=>{this.addClient().patchValue(t)})}trackByFn(t){return t}}var qp=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function jp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[["class","no-border text-muted"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Any client can access"]))],null,null)}function Fp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Vp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Must contain one or more comma-separated values"])),(t()(),s["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["For example:"])),(t()(),s["ɵted"](-1,null,[" 192.168.0.10, 192.168.1.0/8 "]))],null,null)}function Gp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function Bp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.getAccessTypeHelp(e.parent.context.index))}))}function zp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Yp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,74,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,73,"div",[["class","card"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](2,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](4,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](5,0,null,null,4,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](6,null,[" "," "])),s["ɵppd"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,"span",[["class","float-right clickable"],["tooltip","Remove"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeClient(t.context.index)&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](10,0,null,null,64,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](12,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](15,0,null,0,1,"label",[["class","cd-col-form-label"],["for","addresses"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Addresses"])),(t()(),s["ɵeld"](17,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,7,"input",[["class","form-control"],["formControlName","addresses"],["id","addresses"],["name","addresses"],["placeholder","192.168.0.10, 192.168.1.0/8"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](21,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](23,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](24,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](25,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](26,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Fp)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vp)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](31,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](32,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](35,0,null,0,1,"label",[["class","cd-col-form-label"],["for","access_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Access Type"])),(t()(),s["ɵeld"](37,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","access_type"],["id","access_type"],["name","access_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,39).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,39).onTouched()&&a),a}),null,null)),s["ɵdid"](39,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](41,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](43,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](44,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](45,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](46,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](47,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](48,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](49,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Gp)),s["ɵdid"](51,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bp)),s["ɵdid"](53,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](54,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](55,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](58,0,null,0,1,"label",[["class","cd-col-form-label"],["for","squash"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Squash"])),(t()(),s["ɵeld"](60,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](61,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","squash"],["id","squash"],["name","squash"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,62).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,62).onTouched()&&a),a}),null,null)),s["ɵdid"](62,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](64,671744,[[7,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](66,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](67,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](68,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](69,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](70,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](71,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](72,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,zp)),s["ɵdid"](74,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,2,0,e.context.index),t(e,12,0),t(e,21,0,"addresses"),t(e,25,0,"addresses"),t(e,28,0,n.showError(e.context.index,"addresses",s["ɵnov"](e.parent,8),"required")),t(e,30,0,n.showError(e.context.index,"addresses",s["ɵnov"](e.parent,8),"pattern")),t(e,32,0),t(e,41,0,"access_type"),t(e,45,0,"access_type"),t(e,47,0,""),t(e,48,0,""),t(e,51,0,n.nfsAccessType),t(e,53,0,n.getValue(e.context.index,"access_type")),t(e,55,0),t(e,64,0,"squash"),t(e,68,0,"squash"),t(e,70,0,""),t(e,71,0,""),t(e,74,0,n.nfsSquash)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,4).ngClassUntouched,s["ɵnov"](e,4).ngClassTouched,s["ɵnov"](e,4).ngClassPristine,s["ɵnov"](e,4).ngClassDirty,s["ɵnov"](e,4).ngClassValid,s["ɵnov"](e,4).ngClassInvalid,s["ɵnov"](e,4).ngClassPending);var a=s["ɵunv"](e,6,0,t(e,7,0,s["ɵnov"](e.parent,0),e.context.index+1));t(e,6,0,a),t(e,11,0,s["ɵnov"](e,12).hasErrors,s["ɵnov"](e,12).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass),t(e,31,0,s["ɵnov"](e,32).hasErrors,s["ɵnov"](e,32).hasSuccess),t(e,38,0,s["ɵnov"](e,43).ngClassUntouched,s["ɵnov"](e,43).ngClassTouched,s["ɵnov"](e,43).ngClassPristine,s["ɵnov"](e,43).ngClassDirty,s["ɵnov"](e,43).ngClassValid,s["ɵnov"](e,43).ngClassInvalid,s["ɵnov"](e,43).ngClassPending,s["ɵnov"](e,45).validClass,s["ɵnov"](e,45).invalidClass),t(e,49,0,n.getNoAccessTypeDescr()),t(e,54,0,s["ɵnov"](e,55).hasErrors,s["ɵnov"](e,55).hasSuccess),t(e,61,0,s["ɵnov"](e,66).ngClassUntouched,s["ɵnov"](e,66).ngClassTouched,s["ɵnov"](e,66).ngClassPristine,s["ɵnov"](e,66).ngClassDirty,s["ɵnov"](e,66).ngClassValid,s["ɵnov"](e,66).ngClassInvalid,s["ɵnov"](e,66).ngClassPending,s["ɵnov"](e,68).validClass,s["ɵnov"](e,68).invalidClass),t(e,72,0,n.getNoSquashDescr())}))}function Hp(t){return s["ɵvid"](0,[s["ɵpid"](0,Pp.a,[]),(t()(),s["ɵeld"](1,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](2,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients"])),(t()(),s["ɵeld"](7,0,null,0,22,"div",[["class","cd-col-form-input"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](8,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](10,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](11,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jp)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](14,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](15,212992,null,0,K.g,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.g]),s["ɵdid"](17,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Yp)),s["ɵdid"](19,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵeld"](20,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,8,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,7,"div",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,6,"button",[["class","btn btn-light "]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addClient()&&a),a}),null,null)),(t()(),s["ɵeld"](24,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](26,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](27,1),(t()(),s["ɵeld"](28,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add clients"]))],(function(t,e){var n=e.component;t(e,2,0),t(e,8,0,n.form),t(e,11,0,n.form),t(e,13,0,0===n.form.get("clients").value.length),t(e,15,0,"clients"),t(e,19,0,n.form.get("clients").value,n.trackByFn);var a=t(e,27,0,n.icons.add);t(e,26,0,a)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending)}))}var Up=n("P8lu"),Wp=function(t){return t.user="user",t.orchestrator="orchestrator",t}({});class Kp{constructor(t,e,n,a,r,i,s,u,o,l){this.authStorageService=t,this.nfsService=e,this.route=n,this.router=a,this.rgwUserService=r,this.formBuilder=i,this.taskWrapper=s,this.cdRef=u,this.i18n=o,this.actionLabels=l,this.isEdit=!1,this.cluster_id=null,this.clusterType=null,this.export_id=null,this.isNewDirectory=!1,this.isNewBucket=!1,this.isDefaultCluster=!1,this.allClusters=null,this.allDaemons={},this.icons=pt.a,this.allFsals=[],this.allRgwUsers=[],this.allCephxClients=null,this.allFsNames=null,this.defaultAccessType={RGW:"RO"},this.nfsAccessType=this.nfsService.nfsAccessType,this.nfsSquash=this.nfsService.nfsSquash,this.daemonsSelections=[],this.daemonsMessages=new Rs.a({noOptions:this.i18n("There are no daemons available.")},this.i18n),this.pathDataSource=Jn.a.create(t=>{t.next(this.nfsForm.getValue("path"))}).pipe(Object(we.a)(t=>this.getPathTypeahead(t)),Object(Qe.a)(t=>t.paths)),this.bucketDataSource=Jn.a.create(t=>{t.next(this.nfsForm.getValue("path"))}).pipe(Object(we.a)(t=>this.getBucketTypeahead(t))),this.permission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("NFS export"),this.createForm()}ngOnInit(){const t=[this.nfsService.daemon(),this.nfsService.fsals(),this.nfsService.clients(),this.nfsService.filesystems()];this.router.url.startsWith("/nfs/edit")&&(this.isEdit=!0),this.isEdit?(this.action=this.actionLabels.EDIT,this.route.params.subscribe(e=>{this.cluster_id=decodeURIComponent(e.cluster_id),this.export_id=decodeURIComponent(e.export_id),t.push(this.nfsService.get(this.cluster_id,this.export_id)),this.getData(t)}),this.nfsForm.get("cluster_id").disable()):(this.action=this.actionLabels.CREATE,this.getData(t))}getData(t){Object(ml.a)(t).subscribe(t=>{this.resolveDaemons(t[0]),this.resolvefsals(t[1]),this.resolveClients(t[2]),this.resolveFilesystems(t[3]),t[4]&&this.resolveModel(t[4])})}createForm(){this.nfsForm=new tu.a({cluster_id:new K.i("",{validators:[K.B.required]}),daemons:new K.i([]),fsal:new tu.a({name:new K.i("",{validators:[K.B.required]}),user_id:new K.i("",{validators:[eu.a.requiredIf({name:"CEPH"})]}),fs_name:new K.i("",{validators:[eu.a.requiredIf({name:"CEPH"})]}),rgw_user_id:new K.i("",{validators:[eu.a.requiredIf({name:"RGW"})]})}),path:new K.i(""),protocolNfsv3:new K.i(!1,{validators:[eu.a.requiredIf({protocolNfsv4:!1},t=>!t)]}),protocolNfsv4:new K.i(!0,{validators:[eu.a.requiredIf({protocolNfsv3:!1},t=>!t)]}),tag:new K.i(""),pseudo:new K.i("",{validators:[eu.a.requiredIf({protocolNfsv4:!0}),K.B.pattern("^/[^><|&()]*$")]}),access_type:new K.i("RW",{validators:[K.B.required]}),squash:new K.i("",{validators:[K.B.required]}),transportUDP:new K.i(!0,{validators:[eu.a.requiredIf({transportTCP:!1},t=>!t)]}),transportTCP:new K.i(!0,{validators:[eu.a.requiredIf({transportUDP:!1},t=>!t)]}),clients:this.formBuilder.array([]),security_label:new K.i(!1),sec_label_xattr:new K.i("security.selinux",eu.a.requiredIf({security_label:!0,"fsal.name":"CEPH"}))})}resolveModel(t){"CEPH"===t.fsal.name&&(t.sec_label_xattr=t.fsal.sec_label_xattr),this.clusterType===Wp.user&&(this.daemonsSelections=X.map(this.allDaemons[t.cluster_id],e=>new eo.a(-1!==t.daemons.indexOf(e),e,"")),this.daemonsSelections=[...this.daemonsSelections]),t.protocolNfsv3=-1!==t.protocols.indexOf(3),t.protocolNfsv4=-1!==t.protocols.indexOf(4),delete t.protocols,t.transportTCP=-1!==t.transports.indexOf("TCP"),t.transportUDP=-1!==t.transports.indexOf("UDP"),delete t.transports,t.clients.forEach(t=>{let e="";t.addresses.forEach(t=>{e+=t+", "}),e.length>=2&&(e=e.substring(0,e.length-2)),t.addresses=e}),this.nfsForm.patchValue(t),this.setPathValidation(),this.nfsClients.resolveModel(t.clients)}resolveDaemons(t){t=X.sortBy(t,["daemon_id"]);const e=X.groupBy(t,"cluster_id");if(this.allClusters=[],X.forIn(e,(t,e)=>{this.allClusters.push({cluster_id:e,cluster_type:t[0].cluster_type}),this.allDaemons[e]=[]}),X.forEach(t,t=>{this.allDaemons[t.cluster_id].push(t.daemon_id)}),this.isEdit){const t=X.find(this.allClusters,{cluster_id:this.cluster_id});this.clusterType=t?t.cluster_type:null}const n=X.isArray(this.allClusters)&&1===this.allClusters.length;this.isDefaultCluster=n&&"_default_"===this.allClusters[0].cluster_id,n&&(this.nfsForm.patchValue({cluster_id:this.allClusters[0].cluster_id}),this.onClusterChange())}resolvefsals(t){t.forEach(t=>{const e=this.nfsService.nfsFsal.find(e=>t===e.value);X.isObjectLike(e)&&(this.allFsals.push(e),"RGW"===e.value&&this.rgwUserService.list().subscribe(t=>{t.forEach(t=>{0===t.suspended&&t.keys.length>0&&this.allRgwUsers.push(t.user_id)})}))}),1===this.allFsals.length&&X.isUndefined(this.nfsForm.getValue("fsal"))&&this.nfsForm.patchValue({fsal:this.allFsals[0]})}resolveClients(t){this.allCephxClients=t}resolveFilesystems(t){this.allFsNames=t,1===t.length&&this.nfsForm.patchValue({fsal:{fs_name:t[0].name}})}fsalChangeHandler(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo(),access_type:this._updateAccessType()}),this.setPathValidation(),this.cdRef.detectChanges()}accessTypeChangeHandler(){const t=this.nfsForm.getValue("name"),e=this.nfsForm.getValue("access_type");this.defaultAccessType[t]=e}setPathValidation(){"RGW"===this.nfsForm.getValue("name")?this.nfsForm.get("path").setValidators([K.B.required,K.B.pattern("^(/|[^/><|&()#?]+)$")]):this.nfsForm.get("path").setValidators([K.B.required,K.B.pattern("^/[^><|&()?]*$")])}rgwUserIdChangeHandler(){this.nfsForm.patchValue({pseudo:this._generatePseudo()})}getAccessTypeHelp(t){const e=this.nfsAccessType.find(e=>{if(t===e.value)return e});return X.isObjectLike(e)?e.help:""}getId(){return X.isString(this.nfsForm.getValue("cluster_id"))&&X.isString(this.nfsForm.getValue("path"))?this.nfsForm.getValue("cluster_id")+":"+this.nfsForm.getValue("path"):""}getPathTypeahead(t){if(!X.isString(t)||"/"===t)return Object(_e.a)([]);const e=this.nfsForm.getValue("fsal").fs_name;return this.nfsService.lsDir(e,t)}pathChangeHandler(){this.nfsForm.patchValue({pseudo:this._generatePseudo()});const t=this.nfsForm.getValue("path");this.getPathTypeahead(t).subscribe(e=>{this.isNewDirectory="/"!==t&&-1===e.paths.indexOf(t)})}bucketChangeHandler(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo()});const t=this.nfsForm.getValue("path");this.getBucketTypeahead(t).subscribe(e=>{this.isNewBucket=""!==t&&-1===e.indexOf(t)})}getBucketTypeahead(t){const e=this.nfsForm.getValue("rgw_user_id");return X.isString(e)&&X.isString(t)&&"/"!==t&&""!==t?this.nfsService.buckets(e):Object(_e.a)([])}_generateTag(){let t=this.nfsForm.getValue("tag");return this.nfsForm.get("tag").dirty||(t=void 0,"RGW"===this.nfsForm.getValue("fsal")&&(t=this.nfsForm.getValue("path"))),t}_generatePseudo(){let t=this.nfsForm.getValue("pseudo");return this.nfsForm.get("pseudo")&&!this.nfsForm.get("pseudo").dirty&&(t=void 0,"CEPH"===this.nfsForm.getValue("fsal")?(t="/cephfs",X.isString(this.nfsForm.getValue("path"))&&(t+=this.nfsForm.getValue("path"))):"RGW"===this.nfsForm.getValue("fsal")&&X.isString(this.nfsForm.getValue("rgw_user_id"))&&(t="/"+this.nfsForm.getValue("rgw_user_id"),X.isString(this.nfsForm.getValue("path"))&&(t+="/"+this.nfsForm.getValue("path")))),t}_updateAccessType(){const t=this.nfsForm.getValue("name");let e=this.defaultAccessType[t];return e||(e="RW"),e}onClusterChange(){const t=this.nfsForm.getValue("cluster_id"),e=X.find(this.allClusters,{cluster_id:t});this.clusterType=e?e.cluster_type:null,this.clusterType===Wp.user?(this.daemonsSelections=X.map(this.allDaemons[t],t=>new eo.a(!1,t,"")),this.daemonsSelections=[...this.daemonsSelections]):this.daemonsSelections=[],this.nfsForm.patchValue({daemons:[]})}removeDaemon(t,e){this.daemonsSelections.forEach(t=>{t.name===e&&(t.selected=!1)});const n=this.nfsForm.get("daemons");return n.value.splice(t,1),n.setValue(n.value),!1}onDaemonSelection(){this.nfsForm.get("daemons").setValue(this.nfsForm.getValue("daemons"))}onToggleAllDaemonsSelection(){const t=this.nfsForm.getValue("cluster_id"),e=0===this.nfsForm.getValue("daemons").length?this.allDaemons[t]:[];this.nfsForm.patchValue({daemons:e})}submitAction(){let t;const e=this._buildRequest();t=this.taskWrapper.wrapTaskAroundCall(this.isEdit?{task:new As.a("nfs/edit",{cluster_id:this.cluster_id,export_id:this.export_id}),call:this.nfsService.update(this.cluster_id,this.export_id,e)}:{task:new As.a("nfs/create",{path:e.path,fsal:e.fsal,cluster_id:e.cluster_id}),call:this.nfsService.create(e)}),t.subscribe(void 0,()=>this.nfsForm.setErrors({cdSubmitButton:!0}),()=>this.router.navigate(["/nfs"]))}_buildRequest(){const t=X.cloneDeep(this.nfsForm.value);return(X.isUndefined(t.tag)||""===t.tag)&&(t.tag=null),this.isEdit&&(t.export_id=this.export_id),"CEPH"===t.fsal.name?delete t.fsal.rgw_user_id:(delete t.fsal.fs_name,delete t.fsal.user_id),t.protocols=[],t.protocolNfsv3?t.protocols.push(3):t.tag=null,delete t.protocolNfsv3,t.protocolNfsv4?t.protocols.push(4):t.pseudo=null,delete t.protocolNfsv4,t.transports=[],t.transportTCP&&t.transports.push("TCP"),delete t.transportTCP,t.transportUDP&&t.transports.push("UDP"),delete t.transportUDP,t.clients.forEach(e=>{e.addresses=X.isString(e.addresses)?X(e.addresses).split(/[ ,]+/).uniq().filter(t=>""!==t).value():[],e.squash||(e.squash=t.squash),e.access_type||(e.access_type=t.access_type)}),t.fsal.sec_label_xattr=!1===t.security_label||"RGW"===t.fsal.name?null:t.sec_label_xattr,delete t.sec_label_xattr,t}}var $p=s["ɵcrt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function Jp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Zp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No cluster available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Qp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the cluster --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Xp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.cluster_id),t(e,2,0,e.context.$implicit.cluster_id)}),(function(t,e){t(e,3,0,e.context.$implicit.cluster_id)}))}function tb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function eb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,2,{FormControlNames:1}),s["ɵqud"](603979776,3,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","cluster_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster"])),(t()(),s["ɵeld"](6,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","cluster_id"],["id","cluster_id"],["name","cluster_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.onClusterChange()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](10,671744,[[2,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jp)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zp)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qp)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xp)),s["ɵdid"](22,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tb)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"cluster_id"),t(e,14,0,"cluster_id"),t(e,16,0,null===n.allClusters),t(e,18,0,null!==n.allClusters&&0===n.allClusters.length),t(e,20,0,null!==n.allClusters&&n.allClusters.length>0),t(e,22,0,n.allClusters),t(e,24,0,n.nfsForm.showError("cluster_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function nb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeDaemon(t.parent.context.index,t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1)],(function(t,e){var n=t(e,5,0,e.component.icons.destroy);t(e,4,0,n)}),null)}function ab(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),s["ɵdid"](3,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,nb)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,5,0,"user"===e.component.clusterType)}),(function(t,e){t(e,2,0,e.context.$implicit)}))}function rb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.onDaemonSelection()&&a),a}),Lp.b,Lp.a)),s["ɵdid"](3,638976,null,0,Dp.a,[fe.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(t()(),s["ɵeld"](4,0,null,0,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵeld"](8,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add daemon"]))],(function(t,e){var n=e.component;t(e,3,0,"btn btn-light float-right",n.nfsForm.get("daemons").value,n.daemonsSelections,n.daemonsMessages);var a=t(e,7,0,n.icons.add);t(e,6,0,a)}),null)}function ib(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add all daemons"]))],null,null)}function sb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Remove all daemons"]))],null,null)}function ub(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,7,"button",[["class","btn btn-light float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onToggleAllDaemonsSelection()&&a),a}),null,null)),(t()(),s["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](5,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](6,1),(t()(),s["ɵand"](16777216,null,null,1,null,ib)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["hasDaemons",2]],null,0,null,sb))],(function(t,e){var n=e.component,a=t(e,6,0,n.icons.add);t(e,5,0,a),t(e,8,0,0===n.nfsForm.getValue("daemons").length,s["ɵnov"](e,9))}),null)}function ob(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,4,{FormControlNames:1}),s["ɵqud"](603979776,5,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,2,"label",[["class","cd-col-form-label"],["for","daemons"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemons"])),(t()(),s["ɵeld"](7,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ab)),s["ɵdid"](9,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rb)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ub)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,9,0,n.nfsForm.getValue("daemons")),t(e,11,0,"user"===n.clusterType),t(e,13,0,"orchestrator"===n.clusterType)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess)}))}function lb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function db(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No data pools available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function cb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the storage backend --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function fb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.descr)}))}function hb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function gb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function pb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No users available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function bb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the object gateway user --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function mb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function yb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function vb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,8,{FormControlNames:1}),s["ɵqud"](603979776,9,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","rgw_user_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway User"])),(t()(),s["ɵeld"](6,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","rgw_user_id"],["id","rgw_user_id"],["name","rgw_user_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](10,671744,[[8,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gb)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pb)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bb)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mb)),s["ɵdid"](22,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yb)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"rgw_user_id"),t(e,14,0,"rgw_user_id"),t(e,16,0,null===n.allRgwUsers),t(e,18,0,null!==n.allRgwUsers&&0===n.allRgwUsers.length),t(e,20,0,null!==n.allRgwUsers&&n.allRgwUsers.length>0),t(e,22,0,n.allRgwUsers),t(e,24,0,n.nfsForm.showError("rgw_user_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function xb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function _b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No clients available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Tb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the cephx client --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function wb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Ob(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Sb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,10,{FormControlNames:1}),s["ɵqud"](603979776,11,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","user_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS User ID"])),(t()(),s["ɵeld"](6,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","user_id"],["id","user_id"],["name","user_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](10,671744,[[10,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xb)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_b)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tb)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wb)),s["ɵdid"](22,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ob)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"user_id"),t(e,14,0,"user_id"),t(e,16,0,null===n.allCephxClients),t(e,18,0,null!==n.allCephxClients&&0===n.allCephxClients.length),t(e,20,0,null!==n.allCephxClients&&n.allCephxClients.length>0),t(e,22,0,n.allCephxClients),t(e,24,0,n.nfsForm.showError("user_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function Ib(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Nb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No CephFS filesystem available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Cb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the CephFS filesystem --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Rb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.name),t(e,2,0,e.context.$implicit.name)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function Ab(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function kb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,12,{FormControlNames:1}),s["ɵqud"](603979776,13,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","fs_name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS Name"])),(t()(),s["ɵeld"](6,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","fs_name"],["id","fs_name"],["name","fs_name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](10,671744,[[12,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ib)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nb)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cb)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rb)),s["ɵdid"](22,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ab)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"fs_name"),t(e,14,0,"fs_name"),t(e,16,0,null===n.allFsNames),t(e,18,0,null!==n.allFsNames&&0===n.allFsNames.length),t(e,20,0,null!==n.allFsNames&&n.allFsNames.length>0),t(e,22,0,n.allFsNames),t(e,24,0,n.nfsForm.showError("fs_name",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function Eb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"input",[["class","form-control"],["formControlName","sec_label_xattr"],["id","sec_label_xattr"],["name","sec_label_xattr"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,1)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](3,671744,[[14,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](5,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](6,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](7,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,"sec_label_xattr"),t(e,7,0,"sec_label_xattr")}),(function(t,e){t(e,0,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass)}))}function Lb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Db(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,14,{FormControlNames:1}),s["ɵqud"](603979776,15,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","security_label"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{required:0}),(t()(),s["ɵted"](-1,null,["Security Label"])),(t()(),s["ɵeld"](9,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","security_label"],["id","security_label"],["name","security_label"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,12).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,12).onTouched()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](14,671744,[[14,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](16,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](17,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](18,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](19,0,null,null,1,"label",[["class","custom-control-label"],["for","security_label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Enable security label"])),(t()(),s["ɵeld"](21,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Eb)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lb)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0);var a=t(e,7,0,n.nfsForm.getValue("security_label"));t(e,6,0,"cd-col-form-label",a),t(e,14,0,"security_label"),t(e,18,0,"security_label"),t(e,23,0,n.nfsForm.getValue("security_label")),t(e,25,0,n.nfsForm.showError("sec_label_xattr",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending,s["ɵnov"](e,18).validClass,s["ɵnov"](e,18).invalidClass)}))}function Pb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Mb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path need to start with a '/' and can be followed by a word"]))],null,null)}function qb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New directory will be created"]))],null,null)}function jb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,16,{FormControlNames:1}),s["ɵqud"](603979776,17,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","path"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS Path"])),(t()(),s["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,8,"input",[["class","form-control"],["formControlName","path"],["id","path"],["name","path"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,14).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,14).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.pathChangeHandler()&&a),"blur"===e&&(a=!1!==r.pathChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](10,671744,[[16,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,212992,null,0,Uu,[U.a,Hu,s.ChangeDetectorRef,s.ElementRef,K.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pb)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mb)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qb)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"path"),t(e,14,0,n.pathDataSource),t(e,15,0,"path"),t(e,17,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"required")),t(e,19,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"pattern")),t(e,21,0,n.isNewDirectory&&!n.nfsForm.showError("path",s["ɵnov"](e.parent,6)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass)}))}function Fb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Vb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path can only be a single '/' or a word"]))],null,null)}function Gb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New bucket will be created"]))],null,null)}function Bb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,18,{FormControlNames:1}),s["ɵqud"](603979776,19,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","path"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path"])),(t()(),s["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,8,"input",[["class","form-control"],["formControlName","path"],["id","path"],["name","path"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,14).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,14).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,14).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,14).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.bucketChangeHandler()&&a),"blur"===e&&(a=!1!==r.bucketChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](10,671744,[[18,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](12,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](13,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](14,212992,null,0,Uu,[U.a,Hu,s.ChangeDetectorRef,s.ElementRef,K.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),s["ɵdid"](15,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fb)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vb)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gb)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"path"),t(e,14,0,n.bucketDataSource),t(e,15,0,"path"),t(e,17,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"required")),t(e,19,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"pattern")),t(e,21,0,n.isNewBucket&&!n.nfsForm.showError("path",s["ɵnov"](e.parent,6)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,15).validClass,s["ɵnov"](e,15).invalidClass)}))}function zb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Yb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,22,{FormControlNames:1}),s["ɵqud"](603979776,23,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,13,"label",[["class","cd-col-form-label"],["for","tag"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS Tag"])),(t()(),s["ɵeld"](7,0,null,null,10,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](8,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,4,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Alternative access for "])),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS v3"])),(t()(),s["ɵted"](-1,null,[" mounts (it must not have a leading /)."])),(t()(),s["ɵeld"](14,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz)."])),(t()(),s["ɵeld"](16,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["By using different Tag options, the same Path may be exported multiple times."])),(t()(),s["ɵeld"](18,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,7,"input",[["class","form-control"],["formControlName","tag"],["id","tag"],["name","tag"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,20)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,20).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,20)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,20)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](22,671744,[[22,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](24,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](25,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](26,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,22,0,"tag"),t(e,26,0,"tag")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,19,0,s["ɵnov"](e,24).ngClassUntouched,s["ɵnov"](e,24).ngClassTouched,s["ɵnov"](e,24).ngClassPristine,s["ɵnov"](e,24).ngClassDirty,s["ɵnov"](e,24).ngClassValid,s["ɵnov"](e,24).ngClassInvalid,s["ɵnov"](e,24).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass)}))}function Hb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Ub(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or )."]))],null,null)}function Wb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,31,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,24,{FormControlNames:1}),s["ɵqud"](603979776,25,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,14,"label",[["class","cd-col-form-label"],["for","pseudo"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo"])),(t()(),s["ɵeld"](7,0,null,null,11,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](8,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,7,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The position that this "])),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS v4"])),(t()(),s["ɵted"](-1,null,[" export occupies in the "])),(t()(),s["ɵeld"](14,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo FS"])),(t()(),s["ɵted"](-1,null,[" (it must be unique)."])),(t()(),s["ɵeld"](17,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["By using different Pseudo options, the same Path may be exported multiple times."])),(t()(),s["ɵeld"](19,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,7,"input",[["class","form-control"],["formControlName","pseudo"],["id","pseudo"],["name","pseudo"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,21)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](23,671744,[[24,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](25,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](26,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hb)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ub)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,23,0,"pseudo"),t(e,27,0,"pseudo"),t(e,29,0,n.nfsForm.showError("pseudo",s["ɵnov"](e.parent,6),"required")),t(e,31,0,n.nfsForm.showError("pseudo",s["ɵnov"](e.parent,6),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,20,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass)}))}function Kb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function $b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No access type available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Jb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the access type --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Zb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function Qb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,1,0,n.getAccessTypeHelp(n.nfsForm.getValue("access_type")))}))}function Xb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","form-text text-warning"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The Object Gateway NFS backend has a number of limitations which will seriously affect applications writing to the share. Please consult the "])),(t()(),s["ɵeld"](2,0,null,null,1,"cd-doc",[["section","rgw-nfs"]],null,null,null,ei.b,ei.a)),s["ɵdid"](3,114688,null,0,ni.a,[Tt.a,fe.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,null,[" for details before enabling write access."]))],(function(t,e){t(e,3,0,"rgw-nfs")}),null)}function tm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function em(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function nm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No squash available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function am(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["--Select what kind of user id squashing is performed --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function rm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function im(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function sm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function um(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Xs.a,[]),s["ɵqud"](402653184,1,{nfsClients:0}),(t()(),s["ɵeld"](3,0,null,null,189,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,188,"form",[["name","nfsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,6).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit()&&a),a}),null,null)),s["ɵdid"](5,16384,null,0,K.G,[],null,null),s["ɵdid"](6,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](8,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](9,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](10,0,null,null,182,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](12,null,[""," ",""])),s["ɵppd"](13,1),s["ɵppd"](14,1),(t()(),s["ɵeld"](15,0,null,null,168,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,eb)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ob)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](20,0,null,null,34,"div",[["formGroupName","fsal"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](21,212992,null,0,K.m,[[3,K.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.d,null,[K.m]),s["ɵdid"](23,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](24,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](25,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,6,{FormControlNames:1}),s["ɵqud"](603979776,7,{messagesBlock:0}),(t()(),s["ɵeld"](28,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Storage Backend"])),(t()(),s["ɵeld"](30,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](31,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","name"],["id","name"],["name","name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,32).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,32).onTouched()&&a),"change"===e&&(a=!1!==r.fsalChangeHandler()&&a),a}),null,null)),s["ɵdid"](32,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](34,671744,[[6,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](36,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](37,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](38,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lb)),s["ɵdid"](40,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,db)),s["ɵdid"](42,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cb)),s["ɵdid"](44,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fb)),s["ɵdid"](46,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hb)),s["ɵdid"](48,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vb)),s["ɵdid"](50,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sb)),s["ɵdid"](52,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kb)),s["ɵdid"](54,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Db)),s["ɵdid"](56,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jb)),s["ɵdid"](58,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bb)),s["ɵdid"](60,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](61,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](62,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,20,{FormControlNames:1}),s["ɵqud"](603979776,21,{messagesBlock:0}),(t()(),s["ɵeld"](65,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","protocols"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS Protocol"])),(t()(),s["ɵeld"](67,0,null,0,24,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](68,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](69,0,null,null,7,"input",[["class","custom-control-input"],["disabled",""],["formControlName","protocolNfsv3"],["id","protocolNfsv3"],["name","protocolNfsv3"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,70).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,70).onTouched()&&a),a}),null,null)),s["ɵdid"](70,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](72,671744,[[20,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"],isDisabled:[1,"isDisabled"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](74,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](75,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](76,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](77,0,null,null,1,"label",[["class","custom-control-label"],["for","protocolNfsv3"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFSv3"])),(t()(),s["ɵeld"](79,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](80,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","protocolNfsv4"],["id","protocolNfsv4"],["name","protocolNfsv4"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,81).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,81).onTouched()&&a),a}),null,null)),s["ɵdid"](81,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](83,671744,[[20,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](85,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](86,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](87,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](88,0,null,null,1,"label",[["class","custom-control-label"],["for","protocolNfsv4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFSv4"])),(t()(),s["ɵand"](16777216,null,null,1,null,zb)),s["ɵdid"](91,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yb)),s["ɵdid"](93,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wb)),s["ɵdid"](95,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](96,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](97,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,26,{FormControlNames:1}),s["ɵqud"](603979776,27,{messagesBlock:0}),(t()(),s["ɵeld"](100,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","access_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Access Type"])),(t()(),s["ɵeld"](102,0,null,0,22,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](103,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","access_type"],["id","access_type"],["name","access_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,104).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,104).onTouched()&&a),"change"===e&&(a=!1!==r.accessTypeChangeHandler()&&a),a}),null,null)),s["ɵdid"](104,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](106,671744,[[26,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](108,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](109,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](110,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kb)),s["ɵdid"](112,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$b)),s["ɵdid"](114,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jb)),s["ɵdid"](116,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zb)),s["ɵdid"](118,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qb)),s["ɵdid"](120,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xb)),s["ɵdid"](122,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tm)),s["ɵdid"](124,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](125,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](126,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,28,{FormControlNames:1}),s["ɵqud"](603979776,29,{messagesBlock:0}),(t()(),s["ɵeld"](129,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","squash"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Squash"])),(t()(),s["ɵeld"](131,0,null,0,18,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](132,0,null,null,15,"select",[["class","form-control custom-select"],["formControlName","squash"],["id","squash"],["name","squash"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,133).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,133).onTouched()&&a),a}),null,null)),s["ɵdid"](133,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](135,671744,[[28,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](137,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](138,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](139,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,em)),s["ɵdid"](141,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,nm)),s["ɵdid"](143,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,am)),s["ɵdid"](145,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rm)),s["ɵdid"](147,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,im)),s["ɵdid"](149,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](150,0,null,null,31,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](151,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,30,{FormControlNames:1}),s["ɵqud"](603979776,31,{messagesBlock:0}),(t()(),s["ɵeld"](154,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","transports"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Transport Protocol"])),(t()(),s["ɵeld"](156,0,null,0,25,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](157,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](158,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","transportUDP"],["id","transportUDP"],["name","transportUDP"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,159).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,159).onTouched()&&a),a}),null,null)),s["ɵdid"](159,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](161,671744,[[30,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](163,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](164,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](165,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](166,0,null,null,1,"label",[["class","custom-control-label"],["for","transportUDP"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["UDP"])),(t()(),s["ɵeld"](168,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](169,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","transportTCP"],["id","transportTCP"],["name","transportTCP"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,170).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,170).onTouched()&&a),a}),null,null)),s["ɵdid"](170,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](172,671744,[[30,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](174,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](175,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](176,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](177,0,null,null,1,"label",[["class","custom-control-label"],["for","transportTCP"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["TCP"])),(t()(),s["ɵand"](16777216,null,null,1,null,sm)),s["ɵdid"](180,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](181,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),s["ɵeld"](182,0,null,null,1,"cd-nfs-form-client",[],null,null,null,Hp,qp)),s["ɵdid"](183,49152,[[1,4],["nfsClients",4]],0,Mp,[Op,fe.a],{form:[0,"form"]},null),(t()(),s["ɵeld"](184,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](185,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](186,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),$s.b,$s.a)),s["ɵdid"](187,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](188,0,[""," ",""])),s["ɵppd"](189,1),s["ɵppd"](190,1),(t()(),s["ɵeld"](191,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](192,49152,null,0,Qs.a,[i.Location,St.b],null,null)],(function(t,e){var n=e.component;t(e,6,0,n.nfsForm),t(e,9,0,n.nfsForm),t(e,17,0,!n.isDefaultCluster),t(e,19,0,n.clusterType),t(e,21,0,"fsal"),t(e,25,0),t(e,34,0,"name"),t(e,38,0,"name"),t(e,40,0,null===n.allFsals),t(e,42,0,null!==n.allFsals&&0===n.allFsals.length),t(e,44,0,null!==n.allFsals&&n.allFsals.length>0),t(e,46,0,n.allFsals),t(e,48,0,n.nfsForm.showError("name",s["ɵnov"](e,6),"required")),t(e,50,0,"RGW"===n.nfsForm.getValue("name")),t(e,52,0,"CEPH"===n.nfsForm.getValue("name")),t(e,54,0,"CEPH"===n.nfsForm.getValue("name")),t(e,56,0,"CEPH"===n.nfsForm.getValue("name")),t(e,58,0,"CEPH"===n.nfsForm.getValue("name")),t(e,60,0,"RGW"===n.nfsForm.getValue("name")),t(e,62,0),t(e,72,0,"protocolNfsv3",""),t(e,76,0,"protocolNfsv3"),t(e,83,0,"protocolNfsv4"),t(e,87,0,"protocolNfsv4"),t(e,91,0,n.nfsForm.showError("protocolNfsv3",s["ɵnov"](e,6),"required")||n.nfsForm.showError("protocolNfsv4",s["ɵnov"](e,6),"required")),t(e,93,0,n.nfsForm.getValue("protocolNfsv3")),t(e,95,0,n.nfsForm.getValue("protocolNfsv4")),t(e,97,0),t(e,106,0,"access_type"),t(e,110,0,"access_type"),t(e,112,0,null===n.nfsAccessType),t(e,114,0,null!==n.nfsAccessType&&0===n.nfsAccessType.length),t(e,116,0,null!==n.nfsAccessType&&n.nfsAccessType.length>0),t(e,118,0,n.nfsAccessType),t(e,120,0,n.nfsForm.getValue("access_type")),t(e,122,0,"RW"===n.nfsForm.getValue("access_type")&&"RGW"===n.nfsForm.getValue("name")),t(e,124,0,n.nfsForm.showError("access_type",s["ɵnov"](e,6),"required")),t(e,126,0),t(e,135,0,"squash"),t(e,139,0,"squash"),t(e,141,0,null===n.nfsSquash),t(e,143,0,null!==n.nfsSquash&&0===n.nfsSquash.length),t(e,145,0,null!==n.nfsSquash&&n.nfsSquash.length>0),t(e,147,0,n.nfsSquash),t(e,149,0,n.nfsForm.showError("squash",s["ɵnov"](e,6),"required")),t(e,151,0),t(e,161,0,"transportUDP"),t(e,165,0,"transportUDP"),t(e,172,0,"transportTCP"),t(e,176,0,"transportTCP"),t(e,180,0,n.nfsForm.showError("transportUDP",s["ɵnov"](e,6),"required")||n.nfsForm.showError("transportTCP",s["ɵnov"](e,6),"required")),t(e,183,0,n.nfsForm),t(e,187,0,s["ɵnov"](e,6))}),(function(t,e){var n=e.component;t(e,4,0,s["ɵnov"](e,8).ngClassUntouched,s["ɵnov"](e,8).ngClassTouched,s["ɵnov"](e,8).ngClassPristine,s["ɵnov"](e,8).ngClassDirty,s["ɵnov"](e,8).ngClassValid,s["ɵnov"](e,8).ngClassInvalid,s["ɵnov"](e,8).ngClassPending);var a=s["ɵunv"](e,12,0,t(e,13,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,12,1,t(e,14,0,s["ɵnov"](e,1),n.resource));t(e,12,0,a,r),t(e,20,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending),t(e,24,0,s["ɵnov"](e,25).hasErrors,s["ɵnov"](e,25).hasSuccess),t(e,31,0,s["ɵnov"](e,36).ngClassUntouched,s["ɵnov"](e,36).ngClassTouched,s["ɵnov"](e,36).ngClassPristine,s["ɵnov"](e,36).ngClassDirty,s["ɵnov"](e,36).ngClassValid,s["ɵnov"](e,36).ngClassInvalid,s["ɵnov"](e,36).ngClassPending,s["ɵnov"](e,38).validClass,s["ɵnov"](e,38).invalidClass),t(e,61,0,s["ɵnov"](e,62).hasErrors,s["ɵnov"](e,62).hasSuccess),t(e,69,0,s["ɵnov"](e,74).ngClassUntouched,s["ɵnov"](e,74).ngClassTouched,s["ɵnov"](e,74).ngClassPristine,s["ɵnov"](e,74).ngClassDirty,s["ɵnov"](e,74).ngClassValid,s["ɵnov"](e,74).ngClassInvalid,s["ɵnov"](e,74).ngClassPending,s["ɵnov"](e,76).validClass,s["ɵnov"](e,76).invalidClass),t(e,80,0,s["ɵnov"](e,85).ngClassUntouched,s["ɵnov"](e,85).ngClassTouched,s["ɵnov"](e,85).ngClassPristine,s["ɵnov"](e,85).ngClassDirty,s["ɵnov"](e,85).ngClassValid,s["ɵnov"](e,85).ngClassInvalid,s["ɵnov"](e,85).ngClassPending,s["ɵnov"](e,87).validClass,s["ɵnov"](e,87).invalidClass),t(e,96,0,s["ɵnov"](e,97).hasErrors,s["ɵnov"](e,97).hasSuccess),t(e,103,0,s["ɵnov"](e,108).ngClassUntouched,s["ɵnov"](e,108).ngClassTouched,s["ɵnov"](e,108).ngClassPristine,s["ɵnov"](e,108).ngClassDirty,s["ɵnov"](e,108).ngClassValid,s["ɵnov"](e,108).ngClassInvalid,s["ɵnov"](e,108).ngClassPending,s["ɵnov"](e,110).validClass,s["ɵnov"](e,110).invalidClass),t(e,125,0,s["ɵnov"](e,126).hasErrors,s["ɵnov"](e,126).hasSuccess),t(e,132,0,s["ɵnov"](e,137).ngClassUntouched,s["ɵnov"](e,137).ngClassTouched,s["ɵnov"](e,137).ngClassPristine,s["ɵnov"](e,137).ngClassDirty,s["ɵnov"](e,137).ngClassValid,s["ɵnov"](e,137).ngClassInvalid,s["ɵnov"](e,137).ngClassPending,s["ɵnov"](e,139).validClass,s["ɵnov"](e,139).invalidClass),t(e,150,0,s["ɵnov"](e,151).hasErrors,s["ɵnov"](e,151).hasSuccess),t(e,158,0,s["ɵnov"](e,163).ngClassUntouched,s["ɵnov"](e,163).ngClassTouched,s["ɵnov"](e,163).ngClassPristine,s["ɵnov"](e,163).ngClassDirty,s["ɵnov"](e,163).ngClassValid,s["ɵnov"](e,163).ngClassInvalid,s["ɵnov"](e,163).ngClassPending,s["ɵnov"](e,165).validClass,s["ɵnov"](e,165).invalidClass),t(e,169,0,s["ɵnov"](e,174).ngClassUntouched,s["ɵnov"](e,174).ngClassTouched,s["ɵnov"](e,174).ngClassPristine,s["ɵnov"](e,174).ngClassDirty,s["ɵnov"](e,174).ngClassValid,s["ɵnov"](e,174).ngClassInvalid,s["ɵnov"](e,174).ngClassPending,s["ɵnov"](e,176).validClass,s["ɵnov"](e,176).invalidClass);var i=s["ɵunv"](e,188,0,t(e,189,0,s["ɵnov"](e,0),n.action)),u=s["ɵunv"](e,188,1,t(e,190,0,s["ɵnov"](e,1),n.resource));t(e,188,0,i,u)}))}function om(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-nfs-form",[],null,null,null,um,$p)),s["ɵdid"](1,114688,null,0,Kp,[Z.a,Op,Et.a,Et.m,Up.a,no.a,Ds.a,s.ChangeDetectorRef,fe.a,St.b],null,null)],(function(t,e){t(e,1,0)}),null)}var lm=s["ɵccf"]("cd-nfs-form",Kp,om,{},{},[]);class dm{}var cm=s["ɵcrt"]({encapsulation:0,styles:[[".login{color:#fff;background-color:#374249;background-image:url(ceph_background.7c127240f022e7baf57d.gif);background-position:right bottom;background-repeat:no-repeat}  .login header{position:absolute;width:100vw}  .login header .navbar{padding:1rem 2rem}  .login header .navbar .dropdown-menu{margin-top:.2rem}  .login header .navbar .dropdown-menu li a:hover{background-color:#2b99a8}  .login section{display:inline-flex;width:100vw;min-height:100vh}"]],data:{}});function fm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"main",[["class","login full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"header",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"nav",[["class","navbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,0,"a",[["class","navbar-brand"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,2,"div",[["class","form-inline"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"cd-language-selector",[],null,null,null,ht,ut)),s["ɵdid"](6,114688,null,0,it,[st.l,nt],null,null),(t()(),s["ɵeld"](7,0,null,null,6,"section",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,5,"div",[["class","container"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,4,"div",[["class","row full-height vertical-align"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","col-sm-12 col-md-6 d-sm-block"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,0,"img",[["alt","Ceph"],["class","img-fluid mb-5"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](13,212992,null,0,Et.r,[Et.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,6,0),t(e,13,0)}),null)}function hm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login-layout",[],null,null,null,fm,cm)),s["ɵdid"](1,49152,null,0,dm,[],null,null)],null,null)}var gm=s["ɵccf"]("cd-login-layout",dm,hm,{},{},[]);class pm{}class bm{constructor(t,e,n,a,r){this.authService=t,this.authStorageService=e,this.bsModalService=n,this.route=a,this.router=r,this.model=new pm,this.isLoginActive=!1}ngOnInit(){if(this.authStorageService.isLoggedIn())this.router.navigate([""]);else{const t=this.bsModalService.getModalsCount();for(let n=1;n<=t;n++)this.bsModalService.hide(n);let e=null;if(-1!==window.location.hash.indexOf("access_token=")){e=window.location.hash.split("access_token=")[1];const t=window.location.toString();window.history.replaceState({},document.title,t.split("?")[0])}this.authService.check(e).subscribe(t=>{t.login_url?"#/login"===t.login_url?this.isLoginActive=!0:window.location.replace(t.login_url):(this.authStorageService.set(t.username,t.permissions,t.sso,t.pwdExpirationDate),this.router.navigate([""]))})}}login(){this.authService.login(this.model).subscribe(()=>{const t=X.get(this.route.snapshot.queryParams,"returnUrl","/");this.router.navigate([t])})}}var mm=s["ɵcrt"]({encapsulation:0,styles:[["cd-login .form-group{border-left:4px solid #fff;background-color:#333e46;height:auto;margin-bottom:2rem}  cd-login .form-group:focus-within{border-left:4px solid #ef5c55}  cd-login .form-group .invalid-feedback{display:inline}  cd-login .btn-password,   cd-login .btn-password:focus,   cd-login .form-control,   cd-login .form-control:focus{border:none;outline:0;box-shadow:none;color:#fff;background-color:#333e46;filter:none}  cd-login .placeholder{color:#90949c}  cd-login .btn-password:focus{outline-color:#2b99a8}@keyframes autofill{to{color:#fff;background-color:#333e46}}input[_ngcontent-%COMP%]:-webkit-autofill{animation-name:autofill;animation-fill-mode:both;box-shadow:0 0 0 1000px #333e46 inset;-webkit-text-fill-color:#fff;transition-property:none;border-radius:0}"]],data:{}});function ym(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","invalid-feedback pl-4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Username is required"]))],null,null)}function vm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","invalid-feedback pl-4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password is required"]))],null,null)}function xm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,49,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,48,"form",[["name","loginForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngSubmit"],[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0,r=t.component;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"ngSubmit"===e&&(a=!1!==r.login()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,K.G,[],null,null),s["ɵdid"](3,4210688,[["loginForm",4]],0,K.t,[[8,null],[8,null]],null,{ngSubmit:"ngSubmit"}),s["ɵprd"](2048,null,K.d,null,[K.t]),s["ɵdid"](5,16384,null,0,K.s,[[4,K.d]],null,null),(t()(),s["ɵeld"](6,0,null,null,18,"div",[["class","form-group has-feedback d-flex flex-column py-3"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](7,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](10,0,null,0,1,"label",[["class","placeholder pl-4"],["for","username"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Username"])),(t()(),s["ɵeld"](12,0,null,0,10,"input",[["aria-labelledby","username"],["autofocus",""],["class","form-control pl-4"],["id","username"],["name","username"],["required",""],["type","text"]],[[1,"aria-invalid",0],[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,13)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,13)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,13)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.username=n)&&a),a}),null,null)),s["ɵdid"](13,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](14,16384,null,0,K.z,[],{required:[0,"required"]},null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[K.z]),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](17,671744,[["username",4]],0,K.u,[[2,K.d],[6,K.o],[8,null],[6,K.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](19,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](20,4210688,null,0,Ks.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,Q.h,[[3,K.d],Q.a],null,null),(t()(),s["ɵand"](16777216,null,0,1,null,ym)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](25,0,null,null,22,"div",[["class","form-group has-feedback"],["id","password-div"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](26,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](29,0,null,0,18,"div",[["class","input-group d-flex flex-nowrap"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,14,"div",[["class","d-flex flex-column flex-grow-1 py-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](31,0,null,null,1,"label",[["class","placeholder pl-4"],["for","password"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password"])),(t()(),s["ɵeld"](33,0,null,null,9,"input",[["aria-labelledby","password"],["class","form-control pl-4"],["id","password"],["name","password"],["required",""],["type","password"]],[[1,"aria-invalid",0],[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,34)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,34).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,34)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,34)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.password=n)&&a),a}),null,null)),s["ɵdid"](34,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](35,16384,null,0,K.z,[],{required:[0,"required"]},null),s["ɵprd"](1024,null,K.o,(function(t){return[t]}),[K.z]),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](38,671744,[["password",4]],0,K.u,[[2,K.d],[6,K.o],[8,null],[6,K.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,K.q,null,[K.u]),s["ɵdid"](40,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](41,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](42,16384,null,0,Q.h,[[3,K.d],Q.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,vm)),s["ɵdid"](44,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](45,0,null,null,2,"span",[["class","form-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-outline-light btn-password h-100 px-4"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,47).onClick()&&a),a}),null,null)),s["ɵdid"](47,81920,null,0,Qu.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](48,0,null,null,1,"input",[["class","btn btn-secondary px-5 py-2"],["type","submit"],["value","Login"]],[[8,"disabled",0]],null,null,null,null)),s["ɵdid"](49,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null)],(function(t,e){var n=e.component;t(e,7,0),t(e,14,0,""),t(e,17,0,"username",n.model.username),t(e,20,0,""),t(e,24,0,(s["ɵnov"](e,3).submitted||s["ɵnov"](e,17).dirty)&&s["ɵnov"](e,17).invalid),t(e,26,0),t(e,35,0,""),t(e,38,0,"password",n.model.password),t(e,44,0,(s["ɵnov"](e,3).submitted||s["ɵnov"](e,38).dirty)&&s["ɵnov"](e,38).invalid),t(e,47,0,"password")}),(function(t,e){t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,6,0,s["ɵnov"](e,7).hasErrors,s["ɵnov"](e,7).hasSuccess),t(e,12,1,[s["ɵnov"](e,17).invalid,s["ɵnov"](e,14).required?"":null,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,22).validClass,s["ɵnov"](e,22).invalidClass]),t(e,25,0,s["ɵnov"](e,26).hasErrors,s["ɵnov"](e,26).hasSuccess),t(e,33,1,[s["ɵnov"](e,38).invalid,s["ɵnov"](e,35).required?"":null,s["ɵnov"](e,40).ngClassUntouched,s["ɵnov"](e,40).ngClassTouched,s["ɵnov"](e,40).ngClassPristine,s["ɵnov"](e,40).ngClassDirty,s["ɵnov"](e,40).ngClassValid,s["ɵnov"](e,40).ngClassInvalid,s["ɵnov"](e,40).ngClassPending,s["ɵnov"](e,42).validClass,s["ɵnov"](e,42).invalidClass]),t(e,48,0,s["ɵnov"](e,3).invalid)}))}function _m(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,xm)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.isLoginActive)}),null)}function Tm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login",[],null,null,null,_m,mm)),s["ɵdid"](1,114688,null,0,bm,[Vt.a,Z.a,Ct.b,Et.a,Et.m],null,null)],(function(t,e){t(e,1,0)}),null)}var wm=s["ɵccf"]("cd-login",bm,Tm,{},{},[]);class Om extends ep{constructor(t,e,n,a,r,i,s,u,o){super(t,e,n,a,r,i,s,u),this.i18n=t,this.actionLabels=e,this.notificationService=n,this.userService=a,this.authStorageService=r,this.formBuilder=i,this.router=s,this.passwordPolicyService=u,this.authService=o}onPasswordChange(){this.authService.logout()}onCancel(){this.authService.logout()}}var Sm=s["ɵcrt"]({encapsulation:0,styles:[["cd-login-password-form h4{margin:0 0 30px}  cd-login-password-form .btn-password,   cd-login-password-form .btn-password:focus,   cd-login-password-form .form-control,   cd-login-password-form .form-control:focus{color:#fff;background-color:#333e46}  cd-login-password-form .form-control::placeholder{color:#90949c}  cd-login-password-form .btn-password:focus{outline-color:#2b99a8}  cd-login-password-form button.btn:not(:first-child){margin-left:5px}"]],data:{}});function Im(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Nm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function Cm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Rm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function Am(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.passwordValuation)}))}function km(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Em(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password confirmation doesn't match the new password."]))],null,null)}function Lm(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Xs.a,[]),(t()(),s["ɵeld"](2,0,null,null,84,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"h2",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please set a new password."])),(t()(),s["ɵeld"](5,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You will be redirected to the login page afterwards."])),(t()(),s["ɵeld"](7,0,null,null,70,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,9).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,12).onSubmit()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,K.G,[],null,null),s["ɵdid"](9,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](11,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](12,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](13,0,null,null,20,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](14,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,12,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,8,"input",[["autocomplete","new-password"],["autofocus",""],["class","form-control"],["formControlName","oldpassword"],["id","oldpassword"],["placeholder","Old password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](21,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](23,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](24,4210688,null,0,Ks.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](25,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](26,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](27,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"button",[["cdPasswordButton","oldpassword"],["class","btn btn-outline-light btn-password"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,29).onClick()&&a),a}),null,null)),s["ɵdid"](29,81920,null,0,Qu.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Im)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Nm)),s["ɵdid"](33,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](34,0,null,null,23,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](35,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](38,0,null,0,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](39,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","newpassword"],["id","newpassword"],["placeholder","New password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,40)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,40).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,40)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,40)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](40,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](42,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](44,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](45,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](46,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](47,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,1,"button",[["cdPasswordButton","newpassword"],["class","btn btn-outline-light btn-password"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,49).onClick()&&a),a}),null,null)),s["ɵdid"](49,81920,null,0,Qu.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](50,0,null,0,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(t()(),s["ɵeld"](51,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,0,1,null,Cm)),s["ɵdid"](53,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Rm)),s["ɵdid"](55,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Am)),s["ɵdid"](57,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](58,0,null,null,19,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](59,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](62,0,null,0,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](63,0,null,null,7,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","confirmnewpassword"],["id","confirmnewpassword"],["placeholder","Confirm new password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,64)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,64).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,64)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,64)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](64,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](66,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](68,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](69,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](70,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](71,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](72,0,null,null,1,"button",[["cdPasswordButton","confirmnewpassword"],["class","btn btn-outline-light btn-password"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,73).onClick()&&a),a}),null,null)),s["ɵdid"](73,81920,null,0,Qu.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,km)),s["ɵdid"](75,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Em)),s["ɵdid"](77,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](78,0,null,null,8,"div",[["class","form-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](79,0,null,null,4,"cd-submit-button",[["btnClass","btn-block"],["class","full-width"]],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),$s.b,$s.a)),s["ɵdid"](80,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"],btnClass:[1,"btnClass"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](81,0,[" "," "," "])),s["ɵppd"](82,1),s["ɵppd"](83,1),(t()(),s["ɵeld"](84,0,null,null,2,"button",[["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onCancel()&&a),a}),null,null)),(t()(),s["ɵeld"](85,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cancel"]))],(function(t,e){var n=e.component;t(e,9,0,n.userForm),t(e,12,0,n.userForm),t(e,14,0),t(e,21,0,"oldpassword"),t(e,24,0,""),t(e,26,0,"oldpassword"),t(e,29,0,"oldpassword"),t(e,31,0,n.userForm.showError("oldpassword",s["ɵnov"](e,9),"required")),t(e,33,0,n.userForm.showError("oldpassword",s["ɵnov"](e,9),"notmatch")),t(e,35,0),t(e,42,0,"newpassword"),t(e,46,0,"newpassword"),t(e,49,0,"newpassword"),t(e,53,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"required")),t(e,55,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"notmatch")),t(e,57,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"passwordPolicy")),t(e,59,0),t(e,66,0,"confirmnewpassword"),t(e,70,0,"confirmnewpassword"),t(e,73,0,"confirmnewpassword"),t(e,75,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,9),"required")),t(e,77,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,9),"match")),t(e,80,0,n.userForm,"btn-block")}),(function(t,e){var n=e.component;t(e,7,0,s["ɵnov"](e,11).ngClassUntouched,s["ɵnov"](e,11).ngClassTouched,s["ɵnov"](e,11).ngClassPristine,s["ɵnov"](e,11).ngClassDirty,s["ɵnov"](e,11).ngClassValid,s["ɵnov"](e,11).ngClassInvalid,s["ɵnov"](e,11).ngClassPending),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass),t(e,34,0,s["ɵnov"](e,35).hasErrors,s["ɵnov"](e,35).hasSuccess),t(e,39,0,s["ɵnov"](e,44).ngClassUntouched,s["ɵnov"](e,44).ngClassTouched,s["ɵnov"](e,44).ngClassPristine,s["ɵnov"](e,44).ngClassDirty,s["ɵnov"](e,44).ngClassValid,s["ɵnov"](e,44).ngClassInvalid,s["ɵnov"](e,44).ngClassPending,s["ɵnov"](e,46).validClass,s["ɵnov"](e,46).invalidClass),t(e,51,0,s["ɵinlineInterpolate"](1,"",n.passwordStrengthLevelClass,""),s["ɵinlineInterpolate"](1,"",n.passwordValuation,"")),t(e,58,0,s["ɵnov"](e,59).hasErrors,s["ɵnov"](e,59).hasSuccess),t(e,63,0,s["ɵnov"](e,68).ngClassUntouched,s["ɵnov"](e,68).ngClassTouched,s["ɵnov"](e,68).ngClassPristine,s["ɵnov"](e,68).ngClassDirty,s["ɵnov"](e,68).ngClassValid,s["ɵnov"](e,68).ngClassInvalid,s["ɵnov"](e,68).ngClassPending,s["ɵnov"](e,70).validClass,s["ɵnov"](e,70).invalidClass);var a=s["ɵunv"](e,81,0,t(e,82,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,81,1,t(e,83,0,s["ɵnov"](e,1),n.resource));t(e,81,0,a,r)}))}function Dm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login-password-form",[],null,null,null,Lm,Sm)),s["ɵdid"](1,49152,null,0,Om,[fe.a,St.b,bt.a,Ot.a,Z.a,no.a,Et.m,tp.a,Vt.a],null,null)],null,null)}var Pm=s["ɵccf"]("cd-login-password-form",Om,Dm,{},{},[]);class Mm{constructor(){}}var qm=s["ɵcrt"]({encapsulation:0,styles:[["#toast-container{margin-top:2vw}@media (max-width:1600px){  #toast-container{margin-top:2.5vw}}@media (max-width:calc(992px - 1px)){  #toast-container{margin-top:9vw}}@media (max-width:900px){  #toast-container{margin-top:10vw}}@media (max-width:319px){  #toast-container{margin-top:11vw}}@media (max-width:260px){  #toast-container{margin-top:14vw}}"]],data:{}});function jm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](1,212992,null,0,Et.r,[Et.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function Fm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-blank-layout",[],null,null,null,jm,qm)),s["ɵdid"](1,49152,null,0,Mm,[],null,null)],null,null)}var Vm=s["ɵccf"]("cd-blank-layout",Mm,Fm,{},{},[]);class Gm{constructor(){this.logoutUrl=window.location.origin+"/auth/saml2/slo"}}var Bm=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function zm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,16,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, the user does not exist in Ceph."])),(t()(),s["ɵeld"](4,0,null,null,4,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Return to "])),(t()(),s["ɵeld"](6,0,null,null,1,"a",[["class","sso-logout"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["Login Page"])),(t()(),s["ɵted"](-1,null,[". You'll be logged out from the Identity Provider when you retry logging in."])),(t()(),s["ɵeld"](9,0,null,null,0,"img",[["class","img-fluid mx-auto rounded"],["src","assets/1280px-Nautilus_Octopus.jpg"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[' "'])),(t()(),s["ɵeld"](13,0,null,null,1,"a",[["href","https://www.flickr.com/photos/146401137@N06/40335060661"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Nautilus Octopus"])),(t()(),s["ɵted"](-1,null,['" by Jin Kemoole is licensed under '])),(t()(),s["ɵeld"](16,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/2.0/"],["rel","nofollow"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CC BY 2.0"]))],null,(function(t,e){t(e,6,0,e.component.logoutUrl)}))}function Ym(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-sso-not-found",[],null,null,null,zm,Bm)),s["ɵdid"](1,49152,null,0,Gm,[],null,null)],null,null)}var Hm=s["ɵccf"]("cd-sso-not-found",Gm,Ym,{},{},[]);class Um{constructor(){this.icons=pt.a}}var Wm=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large;font-family:monospace}h2[_ngcontent-%COMP%]{font-size:xx-large;font-family:monospace}i[_ngcontent-%COMP%]{font-size:200px}"]],data:{}});function Km(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","horizontal-align vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"div",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Forbidden"])),(t()(),s["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"h2",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, you are not allowed to see what you were looking for."])),(t()(),s["ɵeld"](7,0,null,null,3,"button",[["class","btn btn-primary"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,8).onClick()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,Et.n,[Et.m,Et.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,8,0,"/login")}),(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"",e.component.icons.lock," text-danger"))}))}function $m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-forbidden",[],null,null,null,Km,Wm)),s["ɵdid"](1,49152,null,0,Um,[],null,null)],null,null)}var Jm=s["ɵccf"]("cd-forbidden",Um,$m,{},{},[]);class Zm{constructor(){}}var Qm=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large;font-family:monospace}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function Xm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","horizontal-align vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,16,"div",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, we could not find what you were looking for."])),(t()(),s["ɵeld"](4,0,null,null,0,"img",[["class","img-fluid mx-auto rounded"],["src","assets/1500px-Southern_Keeled_Octopus.jpg"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[' "'])),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["href","https://collections.museumvictoria.com.au/species/8696"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Southern Keeled Octopus, Octopus berrima"])),(t()(),s["ɵted"](-1,null,['" by Museums Victoria (Photographer: Julian Finn) is licensed under '])),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/4.0"],["rel","nofollow"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CC BY 4.0"])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,3,"button",[["class","btn btn-primary"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,15).onClick()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,Et.n,[Et.m,Et.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](16,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,15,0,"/login")}),null)}function ty(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-not-found",[],null,null,null,Xm,Qm)),s["ɵdid"](1,49152,null,0,Zm,[],null,null)],null,null)}var ey=s["ɵccf"]("cd-not-found",Zm,ty,{},{},[]),ny=n("ES0t"),ay=n("Xg1U"),ry=n("z5nN"),iy=n("iutN"),sy=n("EEJc"),uy=n("PEr+"),oy=n("a40w"),ly=n("hfeG"),dy=n("atuK"),cy=s["ɵcrt"]({encapsulation:0,styles:[[".about-container[_ngcontent-%COMP%]{background-color:#374249;background-image:url(ceph_background.7c127240f022e7baf57d.gif);background-position:right bottom;background-repeat:no-repeat;color:#fff;text-shadow:1px 1px #374249}.product-versions[_ngcontent-%COMP%]{margin-top:30px}.product-versions[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{margin-right:10px}.modal-header[_ngcontent-%COMP%]{border-bottom:none}.modal-header[_ngcontent-%COMP%]   .close[_ngcontent-%COMP%]{color:#fff;font-size:2em}.modal-body[_ngcontent-%COMP%]{padding-left:80px;padding-right:80px}.ceph-logo[_ngcontent-%COMP%]{width:25%;margin-bottom:30px;object-position:-20px 0}.modal-footer[_ngcontent-%COMP%]{display:block;border-top:none;padding:15px 80px 35px}"]],data:{}});function fy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,45,"div",[["class","about-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"button",[["aria-label","Close"],["class","close float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.modalRef.hide()&&a),a}),null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](5,0,null,null,37,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"img",[["class","ceph-logo"],["src","assets/Ceph_Logo_Standard_RGB_Reversed_120411_fa.png"]],[[8,"alt",0]],null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,2,"h3",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["",""])),(t()(),s["ɵeld"](10,0,null,null,6,"div",[["class","product-versions"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Version"])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](14,null,[" "," "," "])),(t()(),s["ɵeld"](15,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](16,null,[" "," "])),(t()(),s["ɵeld"](17,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,24,"dl",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ceph Manager"])),(t()(),s["ɵeld"](21,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](22,null,["",""])),(t()(),s["ɵeld"](23,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["User"])),(t()(),s["ɵeld"](25,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](26,null,["",""])),(t()(),s["ɵeld"](27,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["User Role"])),(t()(),s["ɵeld"](29,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](30,null,["",""])),(t()(),s["ɵeld"](31,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser"])),(t()(),s["ɵeld"](33,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](34,null,["",""])),(t()(),s["ɵeld"](35,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser Version"])),(t()(),s["ɵeld"](37,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](38,null,["",""])),(t()(),s["ɵeld"](39,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser OS"])),(t()(),s["ɵeld"](41,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](42,null,["",""])),(t()(),s["ɵeld"](43,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"div",[["class","text-left"]],null,null,null,null,null)),(t()(),s["ɵted"](45,null,[" "," "," "]))],null,(function(t,e){var n=e.component;t(e,6,0,s["ɵinlineInterpolate"](1,"",n.projectConstants.organization,"")),t(e,9,0,n.projectConstants.projectName),t(e,14,0,n.versionNumber,n.versionHash),t(e,16,0,n.versionName),t(e,22,0,n.hostAddr),t(e,26,0,n.modalVariables.user),t(e,30,0,n.modalVariables.role),t(e,34,0,n.modalVariables.browserName),t(e,38,0,n.modalVariables.browserVersion),t(e,42,0,n.modalVariables.browserOS),t(e,45,0,n.copyright,n.projectConstants.license)}))}function hy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-about",[],null,null,null,fy,cy)),s["ɵdid"](1,245760,null,0,It,[Ct.a,mt.a,Ot.a,Z.a],null,null)],(function(t,e){t(e,1,0)}),null)}var gy=s["ɵccf"]("cd-about",It,hy,{},{},[]),py=s["ɵcrt"]({encapsulation:0,styles:[".dropdown[_nghost-%COMP%] {\n      z-index: 1000;\n    }\n\n    .dropdown-menu[_nghost-%COMP%], .dropdown-menu[_ngcontent-%COMP%] {\n      overflow-y: auto;\n      height: 100px;\n    }"],data:{animation:[{type:7,name:"typeaheadAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function by(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function my(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,0,0,e.component.highlight(e.context.match,e.context.query))}))}function yy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,1,"li",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit)}))}function vy(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function xy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,4,"li",[],[[24,"@typeaheadAnimation",0],[2,"active",null]],[[null,"mouseenter"]],(function(t,e,n){var a=!0;return"mouseenter"===e&&(a=!1!==t.component.selectActive(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"a",[["href","#"],["tabindex","-1"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectMatch(t.parent.context.$implicit,n)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,vy)),s["ɵdid"](3,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](4,{item:0,index:1,match:2,query:3})],(function(t,e){var n=e.component,a=t(e,4,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,3,0,a,n.itemTemplate||s["ɵnov"](e.parent.parent.parent,5))}),(function(t,e){var n=e.component;t(e,0,0,n.animationState,n.isActive(e.parent.context.$implicit))}))}function _y(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,yy)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xy)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.context.$implicit.isHeader();t(e,1,0,n);var a=!e.context.$implicit.isHeader();t(e,3,0,a)}),null)}function Ty(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[1,0],["ulElement",1]],null,2,"ul",[["class","dropdown-menu"]],[[4,"overflow-y",null],[4,"height",null]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_y)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.matches)}),(function(t,e){var n=e.component;t(e,0,0,n.needScrollbar?"scroll":"auto",n.needScrollbar?n.guiHeight:"auto")}))}function wy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"h6",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit)}))}function Oy(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function Sy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,3,"button",[["class","dropdown-item"]],[[24,"@typeaheadAnimation",0],[2,"active",null]],[[null,"click"],[null,"mouseenter"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectMatch(t.parent.context.$implicit,n)&&a),"mouseenter"===e&&(a=!1!==r.selectActive(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Oy)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](3,{item:0,index:1,match:2,query:3})],(function(t,e){var n=e.component,a=t(e,3,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,2,0,a,n.itemTemplate||s["ɵnov"](e.parent.parent.parent,5))}),(function(t,e){var n=e.component;t(e,0,0,n.animationState,n.isActive(e.parent.context.$implicit))}))}function Iy(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,wy)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sy)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.context.$implicit.isHeader();t(e,1,0,n);var a=!e.context.$implicit.isHeader();t(e,3,0,a)}),null)}function Ny(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Iy)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.matches)}),null)}function Cy(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{ulElement:0}),s["ɵqud"](671088640,2,{liElements:1}),(t()(),s["ɵand"](16777216,null,null,2,null,by)),s["ɵdid"](3,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](4,{matches:0,itemTemplate:1,query:2}),(t()(),s["ɵand"](0,[["bsItemTemplate",2]],null,0,null,my)),(t()(),s["ɵand"](0,[["bs3Template",2]],null,0,null,Ty)),(t()(),s["ɵand"](0,[["bs4Template",2]],null,0,null,Ny))],(function(t,e){var n=e.component,a=t(e,4,0,n.matches,n.itemTemplate,n.query);t(e,3,0,a,n.optionsListTemplate||s["ɵnov"](e,n.isBs4?7:6))}),null)}function Ry(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"typeahead-container",[["class","dropdown open bottom"],["style","position: absolute;display: block;"]],[[2,"dropdown-menu",null],[4,"height",null],[4,"visibility",null],[2,"dropup",null]],[[null,"mouseleave"],[null,"blur"]],(function(t,e,n){var a=!0;return"mouseleave"===e&&(a=!1!==s["ɵnov"](t,1).focusLost()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).focusLost()&&a),a}),Cy,py)),s["ɵdid"](1,180224,null,0,Yu,[Na.a,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null)],null,(function(t,e){t(e,0,0,s["ɵnov"](e,1).isBs4,s["ɵnov"](e,1).isBs4&&s["ɵnov"](e,1).needScrollbar?s["ɵnov"](e,1).guiHeight:"auto","inherit",s["ɵnov"](e,1).dropup)}))}var Ay=s["ɵccf"]("typeahead-container",Yu,Ry,{},{},[]),ky=n("ajRT"),Ey=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ly(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Deep "]))],null,null)}function Dy(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["deep "]))],null,null)}function Py(t){return s["ɵvid"](0,[s["ɵpid"](0,Jo.a,[]),(t()(),s["ɵeld"](1,0,null,null,33,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](2,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](3,0,null,0,6,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSDs "])),(t()(),s["ɵeld"](5,0,null,null,3,null,null,null,null,null,null,null)),s["ɵdid"](6,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ly)),s["ɵdid"](8,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](-1,null,["Scrub"])),(t()(),s["ɵeld"](10,0,null,1,24,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,23,"form",[["name","scrubForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,13).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,16).onSubmit()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,K.G,[],null,null),s["ɵdid"](13,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](15,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](16,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](17,0,null,null,11,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,10,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You are about to apply a "])),(t()(),s["ɵeld"](20,0,null,null,3,null,null,null,null,null,null,null)),s["ɵdid"](21,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dy)),s["ɵdid"](23,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](-1,null,["scrub to the OSD(s): "])),(t()(),s["ɵeld"](25,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](26,null,["",""])),s["ɵppd"](27,1),(t()(),s["ɵted"](-1,null,["."])),(t()(),s["ɵeld"](29,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.scrub()&&a),a}),$s.b,$s.a)),s["ɵdid"](31,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"])),(t()(),s["ɵeld"](33,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Zs.b,Zs.a)),s["ɵdid"](34,49152,null,0,Qs.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.bsModalRef),t(e,6,0,n.deep),t(e,8,0,"1"),t(e,13,0,n.scrubForm),t(e,16,0,n.scrubForm),t(e,21,0,n.deep),t(e,23,0,"1"),t(e,31,0,n.scrubForm),t(e,34,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,11,0,s["ɵnov"](e,15).ngClassUntouched,s["ɵnov"](e,15).ngClassTouched,s["ɵnov"](e,15).ngClassPristine,s["ɵnov"](e,15).ngClassDirty,s["ɵnov"](e,15).ngClassValid,s["ɵnov"](e,15).ngClassInvalid,s["ɵnov"](e,15).ngClassPending);var a=s["ɵunv"](e,26,0,t(e,27,0,s["ɵnov"](e,0),n.selected));t(e,26,0,a)}))}function My(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-scrub-modal",[],null,null,null,Py,Ey)),s["ɵdid"](1,114688,null,0,Cl,[Ct.a,Pi,bt.a,fe.a,Jo.a],null,null)],(function(t,e){t(e,1,0)}),null)}var qy=s["ɵccf"]("cd-osd-scrub-modal",Cl,My,{},{},[]),jy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Fy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","m-1"]],null,null,null,null,null))],null,null)}function Vy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"checked",0],[8,"name",0],[8,"id",0],[8,"disabled",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=0!=(t.context.$implicit.value=!t.context.$implicit.value)&&a),a}),null,null)),s["ɵdid"](2,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](3,16384,null,0,Q.h,[[3,K.d],Q.a],null,null),(t()(),s["ɵeld"](4,0,null,null,5,"label",[["class","custom-control-label"],["ng-class","['tc_' + key]"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Fy)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,11,0,!e.context.last)}),(function(t,e){t(e,1,0,e.context.$implicit.value,e.context.$implicit.code,e.context.$implicit.code,e.context.$implicit.disabled,s["ɵnov"](e,3).validClass,s["ɵnov"](e,3).invalidClass),t(e,4,0,e.context.$implicit.code),t(e,6,0,e.context.$implicit.name),t(e,9,0,e.context.$implicit.description)}))}function Gy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),$s.b,$s.a)),s["ɵdid"](1,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdFlagsForm)}),null)}function By(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster-wide OSD Flags"])),(t()(),s["ɵeld"](4,0,null,1,16,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,15,"form",[["cdFormScope","osd"],["name","osdFlagsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,J.a,[],{cdFormScope:[0,"cdFormScope"]},null),s["ɵdid"](7,16384,null,0,K.G,[],null,null),s["ɵdid"](8,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](10,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](11,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](12,0,null,null,2,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Vy)),s["ɵdid"](14,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](15,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Gy)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](19,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Zs.b,Zs.a)),s["ɵdid"](20,49152,null,0,Qs.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,6,0,"osd"),t(e,8,0,n.osdFlagsForm),t(e,11,0,n.osdFlagsForm),t(e,14,0,n.flags),t(e,18,0,n.permissions.osd.update),t(e,20,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending)}))}function zy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-flags-modal",[],null,null,null,By,jy)),s["ɵdid"](1,114688,null,0,xl,[Ct.a,Z.a,Pi,bt.a,fe.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Yy=s["ɵccf"]("cd-osd-flags-modal",xl,zy,{},{},[]),Hy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Uy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-hdd ml-2"]],[[8,"title",0]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster-wide"]))],null,(function(t,e){t(e,0,0,e.component.clusterWideTooltip)}))}function Wy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","m-1"]],null,null,null,null,null))],null,null)}function Ky(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"checked",0],[8,"indeterminate",0],[8,"name",0],[8,"id",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.changeValue(t.context.$implicit)&&a),a}),null,null)),s["ɵdid"](2,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](3,16384,null,0,Q.h,[[3,K.d],Q.a],null,null),(t()(),s["ɵeld"](4,0,null,null,7,"label",[["class","custom-control-label"],["ng-class","['tc_' + key]"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Uy)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](11,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Wy)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,8,0,e.context.$implicit.clusterWide),t(e,13,0,!e.context.last)}),(function(t,e){t(e,1,0,e.context.$implicit.value,e.context.$implicit.indeterminate,e.context.$implicit.code,e.context.$implicit.code,s["ɵnov"](e,3).validClass,s["ɵnov"](e,3).invalidClass),t(e,4,0,e.context.$implicit.code),t(e,6,0,e.context.$implicit.name),t(e,11,0,e.context.$implicit.description)}))}function $y(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),$s.b,$s.a)),s["ɵdid"](1,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdFlagsForm)}),null)}function Jy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Individual OSD Flags"])),(t()(),s["ɵeld"](4,0,null,1,16,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,15,"form",[["name","osdFlagsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,K.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](9,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](10,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,2,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ky)),s["ɵdid"](13,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](14,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.resetSelection()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Restore previous selection"])),(t()(),s["ɵand"](16777216,null,null,1,null,$y)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](19,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Zs.b,Zs.a)),s["ɵdid"](20,49152,null,0,Qs.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.activeModal),t(e,7,0,n.osdFlagsForm),t(e,10,0,n.osdFlagsForm),t(e,13,0,n.flags),t(e,18,0,n.permissions.osd.update),t(e,20,0,"Cancel",n.activeModal.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending)}))}function Zy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-flags-indiv-modal",[],null,null,null,Jy,Hy)),s["ɵdid"](1,114688,null,0,vl,[Ct.a,Z.a,Pi,bt.a,fe.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Qy=s["ɵccf"]("cd-osd-flags-indiv-modal",vl,Zy,{},{},[]),Xy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function tv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit.name),t(e,2,0,e.context.$implicit.name)}),(function(t,e){t(e,3,0,e.context.$implicit.text)}))}function ev(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function nv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](1,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](2,0,["",""]))],null,(function(t,e){t(e,2,0,e.parent.context.$implicit.value.desc)}))}function av(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function rv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.patternHelpText)}))}function iv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.maxValue)}))}function sv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.minValue)}))}function uv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,7,"label",[["class","col-form-label col-sm-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](8,{required:0}),(t()(),s["ɵted"](9,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,nv)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,17,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,8,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,15)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,15)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,15)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,16).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,16).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),a}),null,null)),s["ɵdid"](14,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](15,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](16,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](18,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](20,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](21,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,av)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rv)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,iv)),s["ɵdid"](27,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sv)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0);var a=t(e,8,0,n.osdRecvSpeedForm.getValue("customizePriority"));t(e,7,0,a),t(e,11,0,e.context.$implicit.value.desc),t(e,18,0,e.context.$implicit.key),t(e,21,0,e.context.$implicit.key),t(e,23,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,8),"required")),t(e,25,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,8),"pattern")),t(e,27,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,8),"max")),t(e,29,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,8),"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.context.$implicit.key),t(e,9,0,e.context.$implicit.value.text),t(e,13,1,[e.context.$implicit.key,!n.osdRecvSpeedForm.getValue("customizePriority"),s["ɵnov"](e,20).ngClassUntouched,s["ɵnov"](e,20).ngClassTouched,s["ɵnov"](e,20).ngClassPristine,s["ɵnov"](e,20).ngClassDirty,s["ɵnov"](e,20).ngClassValid,s["ɵnov"](e,20).ngClassInvalid,s["ɵnov"](e,20).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass])}))}function ov(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),$s.b,$s.a)),s["ɵdid"](1,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdRecvSpeedForm)}),null)}function lv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,56,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSD Recovery Priority"])),(t()(),s["ɵeld"](4,0,null,1,52,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,51,"form",[["cdFormScope","osd"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,J.a,[],{cdFormScope:[0,"cdFormScope"]},null),s["ɵdid"](7,16384,null,0,K.G,[],null,null),s["ɵdid"](8,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](10,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](11,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](12,0,null,null,38,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](14,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,1,"label",[["class","col-form-label col-sm-6 required"],["for","priority"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Priority"])),(t()(),s["ɵeld"](19,0,null,0,12,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,9,"select",[["class","form-control custom-select"],["formControlName","priority"],["id","priority"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,22).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,22).onTouched()&&a),"change"===e&&(a=!1!==r.onPriorityChange(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](22,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](24,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](26,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](27,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tv)),s["ɵdid"](29,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ev)),s["ɵdid"](31,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](32,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](33,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](36,0,null,0,11,"div",[["class","offset-sm-6 col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](37,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","customizePriority"],["id","customizePriority"],["name","customizePriority"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,40).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,40).onTouched()&&a),"change"===e&&(a=!1!==r.onCustomizePriorityChange()&&a),a}),null,null)),s["ɵdid"](39,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](40,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](42,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](44,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](45,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](46,0,null,null,1,"label",[["class","custom-control-label"],["for","customizePriority"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Customize priority values"])),(t()(),s["ɵand"](16777216,null,null,2,null,uv)),s["ɵdid"](49,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵeld"](51,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](52,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ov)),s["ɵdid"](54,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](55,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Zs.b,Zs.a)),s["ɵdid"](56,49152,null,0,Qs.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,6,0,"osd"),t(e,8,0,n.osdRecvSpeedForm),t(e,11,0,n.osdRecvSpeedForm),t(e,14,0),t(e,24,0,"priority"),t(e,27,0,"priority"),t(e,29,0,n.priorities),t(e,31,0,n.osdRecvSpeedForm.showError("priority",s["ɵnov"](e,8),"required")),t(e,33,0),t(e,42,0,"customizePriority"),t(e,45,0,"customizePriority"),t(e,49,0,s["ɵunv"](e,49,0,s["ɵnov"](e,50).transform(n.priorityAttrs))),t(e,54,0,n.permissions.configOpt.update),t(e,56,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,20,0,s["ɵnov"](e,26).ngClassUntouched,s["ɵnov"](e,26).ngClassTouched,s["ɵnov"](e,26).ngClassPristine,s["ɵnov"](e,26).ngClassDirty,s["ɵnov"](e,26).ngClassValid,s["ɵnov"](e,26).ngClassInvalid,s["ɵnov"](e,26).ngClassPending,s["ɵnov"](e,27).validClass,s["ɵnov"](e,27).invalidClass),t(e,32,0,s["ɵnov"](e,33).hasErrors,s["ɵnov"](e,33).hasSuccess),t(e,38,0,s["ɵnov"](e,44).ngClassUntouched,s["ɵnov"](e,44).ngClassTouched,s["ɵnov"](e,44).ngClassPristine,s["ɵnov"](e,44).ngClassDirty,s["ɵnov"](e,44).ngClassValid,s["ɵnov"](e,44).ngClassInvalid,s["ɵnov"](e,44).ngClassPending,s["ɵnov"](e,45).validClass,s["ɵnov"](e,45).invalidClass)}))}function dv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-recv-speed-modal",[],null,null,null,lv,Xy)),s["ɵdid"](1,114688,null,0,Il,[Ct.a,Z.a,_l.a,bt.a,fe.a,Pi],null,null)],(function(t,e){t(e,1,0)}),null)}var cv=s["ɵccf"]("cd-osd-recv-speed-modal",Il,dv,{},{},[]),fv=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function hv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function gv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value needs to be between 0 and 1."]))],null,null)}function pv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,hv)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gv)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,null==n.weight.errors?null:n.weight.errors.required),t(e,4,0,(null==n.weight.errors?null:n.weight.errors.max)||(null==n.weight.errors?null:n.weight.errors.min))}),null)}function bv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,32,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](3,null,["Reweight OSD: ",""])),(t()(),s["ɵeld"](4,0,null,1,28,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,27,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,K.G,[],null,null),s["ɵdid"](7,540672,null,0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](9,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](10,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,15,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,14,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"label",[["class","col-sm-2 col-form-label"],["for","weight"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Weight"])),(t()(),s["ɵeld"](15,0,null,null,11,"div",[["class","col-sm-10"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,8,"input",[["class","form-control"],["formControlName","weight"],["id","weight"],["max","1"],["min","0"],["step","0.1"],["type","number"]],[[8,"value",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,18)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,18).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,18)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,18)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,19).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,19).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),a}),null,null)),s["ɵdid"](17,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](18,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵdid"](19,16384,null,0,K.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t,e){return[t,e]}),[K.e,K.w]),s["ɵdid"](21,671744,null,0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](23,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](24,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pv)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](27,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.reweight()&&a),a}),$s.b,$s.a)),s["ɵdid"](29,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Reweight"])),(t()(),s["ɵeld"](31,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Zs.b,Zs.a)),s["ɵdid"](32,49152,null,0,Qs.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.reweightForm),t(e,10,0,n.reweightForm),t(e,21,0,"weight"),t(e,24,0,"weight"),t(e,26,0,n.weight.errors),t(e,29,0,n.reweightForm,n.reweightForm.invalid),t(e,32,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,3,0,n.osdId),t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,16,0,n.currentWeight,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,24).validClass,s["ɵnov"](e,24).invalidClass)}))}function mv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-reweight-modal",[],null,null,null,bv,fv)),s["ɵdid"](1,114688,null,0,Nl,[Ct.a,Pi,no.a],null,null)],(function(t,e){t(e,1,0)}),null)}var yv=s["ɵccf"]("cd-osd-reweight-modal",Nl,mv,{},{},[]),vv=s["ɵcrt"]({encapsulation:0,styles:[[".custom-checkbox[_ngcontent-%COMP%]   input[_ngcontent-%COMP%], .custom-checkbox[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{cursor:pointer}.col-form-label[_ngcontent-%COMP%]{text-align:left}"]],data:{}});function xv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](1,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](2,0,[" ",""]))],null,(function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)}))}function _v(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","form-group row pt-2"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,7,"label",[["class","col-form-label col-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,xv)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,10,"div",[["class","col-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,7,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](17,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](19,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](20,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](21,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](22,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],(function(t,e){t(e,1,0),t(e,11,0,e.parent.context.$implicit.long_desc),t(e,17,0,e.parent.context.$implicit.name),t(e,21,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit.name),t(e,6,0,e.parent.context.$implicit.text),t(e,9,0,e.parent.context.$implicit.desc),t(e,14,0,e.parent.context.$implicit.name,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass),t(e,22,0,e.parent.context.$implicit.name)}))}function Tv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,Ju.b,Ju.a)),s["ɵdid"](1,49152,null,0,Zu.a,[],null,null),(t()(),s["ɵted"](2,0,[" ",""]))],null,(function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)}))}function wv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["data-toggle","button"],["title","Remove the custom configuration value. The default configuration will be inherited and used instead."],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.resetValue(t.parent.parent.context.$implicit.name)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1)],(function(t,e){var n=t(e,5,0,e.component.icons.erase);t(e,4,0,n)}),null)}function Ov(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",""]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)}))}function Sv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",""]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)}))}function Iv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.maxValue)}))}function Nv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.minValue)}))}function Cv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,30,"div",[["class","form-group row pt-2"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](1,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,6,"label",[["class","col-6 col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,Tv)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](11,0,null,0,19,"div",[["class","col-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,7,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"placeholder",0],[8,"step",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,14)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,14)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,14)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](14,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](16,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](18,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](19,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](20,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wv)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ov)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sv)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Iv)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nv)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,e.parent.context.$implicit.long_desc),t(e,16,0,e.parent.context.$implicit.name),t(e,20,0,e.parent.context.$implicit.name),t(e,22,0,n.optionsFormShowReset),t(e,24,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"pattern")),t(e,26,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"invalidUuid")),t(e,28,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"max")),t(e,30,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit.name),t(e,5,0,e.parent.context.$implicit.text),t(e,8,0,e.parent.context.$implicit.desc),t(e,13,1,[e.parent.context.$implicit.additionalTypeInfo.inputType,e.parent.context.$implicit.name,e.parent.context.$implicit.additionalTypeInfo.humanReadable,n.getStep(e.parent.context.$implicit.type,n.optionsForm.getValue(e.parent.context.$implicit.name)),s["ɵnov"](e,18).ngClassUntouched,s["ɵnov"](e,18).ngClassTouched,s["ɵnov"](e,18).ngClassPristine,s["ɵnov"](e,18).ngClassDirty,s["ɵnov"](e,18).ngClassValid,s["ɵnov"](e,18).ngClassInvalid,s["ɵnov"](e,18).ngClassPending,s["ɵnov"](e,20).validClass,s["ɵnov"](e,20).invalidClass])}))}function Rv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","my-2"]],null,null,null,null,null))],null,null)}function Av(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_v)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cv)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rv)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,"bool"===e.context.$implicit.type),t(e,4,0,"bool"!==e.context.$implicit.type),t(e,6,0,!e.context.last)}),null)}function kv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,1).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,1).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,4).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,540672,null,0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](3,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](4,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Av)),s["ɵdid"](6,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.optionsFormGroup),t(e,4,0,n.optionsFormGroup),t(e,6,0,n.options)}),(function(t,e){t(e,0,0,s["ɵnov"](e,3).ngClassUntouched,s["ɵnov"](e,3).ngClassTouched,s["ɵnov"](e,3).ngClassPristine,s["ɵnov"](e,3).ngClassDirty,s["ɵnov"](e,3).ngClassValid,s["ɵnov"](e,3).ngClassInvalid,s["ɵnov"](e,3).ngClassPending)}))}var Ev=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Lv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"a",[["class","pull-right margin-right-md"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=0!=(t.component.advancedEnabled=!0)&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Advanced..."]))],null,null)}function Dv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"h3",[["class","page-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Advanced configuration options"])),(t()(),s["ɵeld"](3,0,null,null,1,"cd-config-option",[],null,null,null,kv,vv)),s["ɵdid"](4,114688,[[2,4],["advancedOptionsValues",4]],0,wl,[_l.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.advancedOptions,n.osdPgScrubForm,s["ɵnov"](e.parent,14),"advancedFormGroup")}),null)}function Pv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),$s.b,$s.a)),s["ɵdid"](1,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](2,0,[""," ",""])),s["ɵppd"](3,1),s["ɵppd"](4,1)],(function(t,e){t(e,1,0,e.component.osdPgScrubForm)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,2,1,t(e,4,0,s["ɵnov"](e.parent,1),n.resource));t(e,2,0,a,r)}))}function Mv(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Xs.a,[]),s["ɵqud"](402653184,1,{basicOptionsValues:0}),s["ɵqud"](671088640,2,{advancedOptionsValues:0}),(t()(),s["ɵeld"](4,0,null,null,28,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](5,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](6,0,null,0,3,null,null,null,null,null,null,null)),(t()(),s["ɵted"](7,null,[""," ",""])),s["ɵppd"](8,1),s["ɵppd"](9,1),(t()(),s["ɵeld"](10,0,null,1,22,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,21,"form",[["cdFormScope","osd"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,14).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,14).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,17).onSubmit()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,J.a,[],{cdFormScope:[0,"cdFormScope"]},null),s["ɵdid"](13,16384,null,0,K.G,[],null,null),s["ɵdid"](14,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](16,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](17,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](18,0,null,null,8,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"cd-config-option",[],null,null,null,kv,vv)),s["ɵdid"](20,114688,[[1,4],["basicOptionsValues",4]],0,wl,[_l.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null),(t()(),s["ɵeld"](21,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Lv)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dv)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](27,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Pv)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](31,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](32,49152,null,0,Qs.a,[i.Location,St.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.bsModalRef),t(e,12,0,"osd"),t(e,14,0,n.osdPgScrubForm),t(e,17,0,n.osdPgScrubForm),t(e,20,0,n.basicOptions,n.osdPgScrubForm,s["ɵnov"](e,14),"basicFormGroup"),t(e,24,0,!n.advancedEnabled),t(e,26,0,n.advancedEnabled),t(e,30,0,n.permissions.configOpt.update),t(e,32,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,7,0,t(e,8,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,7,1,t(e,9,0,s["ɵnov"](e,1),n.resource));t(e,7,0,a,r),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending)}))}function qv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-pg-scrub-modal",[],null,null,null,Mv,Ev)),s["ɵdid"](1,49152,null,0,Sl,[Ct.a,Z.a,bt.a,fe.a,St.b],null,null)],null,null)}var jv=s["ɵccf"]("cd-osd-pg-scrub-modal",Sl,qv,{},{},[]),Fv=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Vv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Gv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Bv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function zv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵted"](2,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,s["ɵinlineInterpolate"](1,"cd-col-form-offset ",n.matcherMatch.cssClass,"")),t(e,1,0,s["ɵinlineInterpolate"](1,"text-muted ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)}))}function Yv(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Update"]))],null,null)}function Hv(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Add"]))],null,null)}function Uv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,82,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Matcher"])),(t()(),s["ɵeld"](4,0,null,1,78,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,77,"form",[["class","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,K.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](9,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](10,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,59,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](13,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](18,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,13,"select",[["class","form-control"],["formControlName","name"],["id","name"],["name","name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,21).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](21,16384,null,0,K.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.A]),s["ɵdid"](23,671744,[[1,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](25,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](26,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](27,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](28,147456,null,0,K.v,[s.ElementRef,s.Renderer2,[2,K.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](29,147456,null,0,K.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select an attribute to match against --"])),(t()(),s["ɵand"](16777216,null,null,1,null,Vv)),s["ɵdid"](32,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gv)),s["ɵdid"](34,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](35,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](36,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](39,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","value"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value"])),(t()(),s["ɵeld"](41,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](42,16777216,null,null,8,"input",[["class","form-control"],["formControlName","value"],["id","value"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,44)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,44).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,44)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,44)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,49).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,49).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,49).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,49).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,49).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,49).onKeydown(n)&&a),a}),null,null)),s["ɵdid"](43,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](44,16384,null,0,K.e,[s.Renderer2,s.ElementRef,[2,K.b]],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.e]),s["ɵdid"](46,671744,[[3,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](48,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](49,212992,null,0,Uu,[U.a,Hu,s.ChangeDetectorRef,s.ElementRef,K.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"],typeaheadMinLength:[1,"typeaheadMinLength"]},null),s["ɵdid"](50,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bv)),s["ɵdid"](52,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,zv)),s["ɵdid"](54,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](55,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ws.b,Ws.a)),s["ɵdid"](56,1163264,null,2,Q.c,[s.ElementRef,Q.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](59,0,null,0,11,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](60,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](61,0,null,null,7,"input",[["class","custom-control-input"],["formControlName","isRegex"],["id","is-regex"],["name","is-regex"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,63).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,63).onTouched()&&a),a}),null,null)),s["ɵdid"](62,4210688,null,0,$.a,[[2,J.a],Z.a,s.ElementRef],null,null),s["ɵdid"](63,16384,null,0,K.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,K.p,(function(t){return[t]}),[K.c]),s["ɵdid"](65,671744,[[5,4]],0,K.j,[[3,K.d],[8,null],[8,null],[6,K.p],[2,K.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,K.q,null,[K.j]),s["ɵdid"](67,16384,null,0,K.r,[[4,K.q]],null,null),s["ɵdid"](68,16384,null,0,Q.h,[[3,K.d],Q.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](69,0,null,null,1,"label",[["class","custom-control-label"],["for","is-regex"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Use regular expression"])),(t()(),s["ɵeld"](71,0,null,null,11,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](72,0,null,null,8,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),$s.b,$s.a)),s["ɵdid"](73,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](74,0,null,0,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](76,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yv)),s["ɵdid"](78,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hv)),s["ɵdid"](80,16384,null,0,i.NgSwitchDefault,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],null,null),(t()(),s["ɵeld"](81,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,Zs.b,Zs.a)),s["ɵdid"](82,49152,null,0,Qs.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.form),t(e,10,0,n.form),t(e,13,0),t(e,23,0,"name"),t(e,26,0,"name"),t(e,28,0,null),t(e,29,0,null),t(e,32,0,n.nameAttributes),t(e,34,0,n.form.showError("name",s["ɵnov"](e,7),"required")),t(e,36,0),t(e,46,0,"value"),t(e,49,0,n.possibleValues,0),t(e,50,0,"value"),t(e,52,0,n.form.showError("value",s["ɵnov"](e,7),"required")),t(e,54,0,n.form.getValue("value")&&!n.form.getValue("isRegex")&&n.matcherMatch),t(e,56,0),t(e,65,0,"isRegex"),t(e,68,0,"isRegex"),t(e,73,0,n.form),t(e,76,0,n.editMode),t(e,78,0,"1"),t(e,82,0,"Close",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass),t(e,35,0,s["ɵnov"](e,36).hasErrors,s["ɵnov"](e,36).hasSuccess),t(e,42,0,s["ɵnov"](e,48).ngClassUntouched,s["ɵnov"](e,48).ngClassTouched,s["ɵnov"](e,48).ngClassPristine,s["ɵnov"](e,48).ngClassDirty,s["ɵnov"](e,48).ngClassValid,s["ɵnov"](e,48).ngClassInvalid,s["ɵnov"](e,48).ngClassPending,s["ɵnov"](e,50).validClass,s["ɵnov"](e,50).invalidClass),t(e,55,0,s["ɵnov"](e,56).hasErrors,s["ɵnov"](e,56).hasSuccess),t(e,61,0,s["ɵnov"](e,67).ngClassUntouched,s["ɵnov"](e,67).ngClassTouched,s["ɵnov"](e,67).ngClassPristine,s["ɵnov"](e,67).ngClassDirty,s["ɵnov"](e,67).ngClassValid,s["ɵnov"](e,67).ngClassInvalid,s["ɵnov"](e,67).ngClassPending,s["ɵnov"](e,68).validClass,s["ɵnov"](e,68).invalidClass)}))}function Wv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-silence-matcher-modal",[],null,null,null,Uv,Fv)),s["ɵdid"](1,49152,null,0,fh,[no.a,dh,Ct.a],null,null)],null,null)}var Kv=s["ɵccf"]("cd-silence-matcher-modal",fh,Wv,{},{submitAction:"submitAction"},[]),$v=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Jv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-dark ml-2"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.context.$implicit)}))}function Zv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["size","slim"],["type","warning"]],null,null,null,be.b,be.a)),s["ɵdid"](1,114688,null,0,me.a,[fe.a],{type:[0,"type"],size:[1,"size"],showTitle:[2,"showTitle"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["At least one of these filters must be applied in order to proceed:"])),(t()(),s["ɵand"](16777216,null,0,1,null,Jv)),s["ɵdid"](5,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"warning","slim",!1),t(e,5,0,n.requiredFilters)}),null)}function Qv(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"p",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["Number of devices: ",". Raw capacity: ","."])),s["ɵppd"](4,1)],null,(function(t,e){var n=e.component,a=n.filteredDevices.length,r=s["ɵunv"](e,3,1,t(e,4,0,s["ɵnov"](e.parent,0),n.capacity));t(e,3,0,a,r)}))}function Xv(t){return s["ɵvid"](0,[s["ɵpid"](0,Fa.a,[Ka.a]),s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵqud"](671088640,1,{inventoryDevices:0}),(t()(),s["ɵeld"](3,0,null,null,25,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](4,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](5,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](6,null,[""," devices"])),(t()(),s["ɵeld"](7,0,null,1,21,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,20,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,10).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit()&&a),a}),null,null)),s["ɵdid"](9,16384,null,0,K.G,[],null,null),s["ɵdid"](10,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](12,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](13,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](14,0,null,null,7,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Zv)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](17,0,null,null,2,"cd-inventory-devices",[],null,[[null,"filterChange"]],(function(t,e,n){var a=!0;return"filterChange"===e&&(a=!1!==t.component.onFilterChange(n)&&a),a}),fi,ci)),s["ɵdid"](18,245760,[[1,4],["inventoryDevices",4]],0,di,[Z.a,Fa.a,fe.a,Ct.b,bt.a,si],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],filterColumns:[2,"filterColumns"]},{filterChange:"filterChange"}),s["ɵpad"](19,2),(t()(),s["ɵand"](16777216,null,null,1,null,Qv)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](22,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),$s.b,$s.a)),s["ɵdid"](24,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](25,0,["",""])),s["ɵppd"](26,1),(t()(),s["ɵeld"](27,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](28,49152,null,0,Qs.a,[i.Location,St.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.bsModalRef),t(e,10,0,n.formGroup),t(e,13,0,n.formGroup),t(e,16,0,!n.canSubmit);var a=n.devices,r=t(e,19,0,"available","osd_ids");t(e,18,0,a,r,n.filterColumns),t(e,21,0,n.canSubmit),t(e,24,0,n.formGroup,!n.canSubmit||0===n.filteredDevices.length),t(e,28,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,6,0,n.deviceType),t(e,8,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending);var a=s["ɵunv"](e,25,0,t(e,26,0,s["ɵnov"](e,1),n.action));t(e,25,0,a)}))}function tx(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-devices-selection-modal",[],null,null,null,Xv,$v)),s["ɵdid"](1,4243456,null,0,Ul,[no.a,Ct.a,St.b],null,null)],null,null)}var ex=s["ɵccf"]("cd-osd-devices-selection-modal",Ul,tx,{},{submitAction:"submitAction"},[]),nx=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ax(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),(t()(),s["ɵeld"](1,0,null,null,23,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](2,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](3,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSD creation preview"])),(t()(),s["ɵeld"](5,0,null,1,19,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,18,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](7,16384,null,0,K.G,[],null,null),s["ɵdid"](8,540672,[["frm",4]],0,K.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,K.d,null,[K.l]),s["ɵdid"](10,16384,null,0,K.s,[[4,K.d]],null,null),s["ɵdid"](11,16384,null,0,Q.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](12,0,null,null,5,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DriveGroups"])),(t()(),s["ɵeld"](15,0,null,null,2,"pre",[],null,null,null,null,null)),(t()(),s["ɵted"](16,null,["",""])),s["ɵpid"](0,i.JsonPipe,[]),(t()(),s["ɵeld"](18,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),$s.b,$s.a)),s["ɵdid"](20,114688,null,0,Js.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](21,0,["",""])),s["ɵppd"](22,1),(t()(),s["ɵeld"](23,0,null,null,1,"cd-back-button",[],null,null,null,Zs.b,Zs.a)),s["ɵdid"](24,49152,null,0,Qs.a,[i.Location,St.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.bsModalRef),t(e,8,0,n.formGroup),t(e,11,0,n.formGroup),t(e,20,0,n.formGroup),t(e,24,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,6,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending),t(e,16,0,s["ɵunv"](e,16,0,s["ɵnov"](e,17).transform(n.driveGroups)));var a=s["ɵunv"](e,21,0,t(e,22,0,s["ɵnov"](e,0),n.action));t(e,21,0,a)}))}function rx(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-creation-preview-modal",[],null,null,null,ax,nx)),s["ɵdid"](1,114688,null,0,ad,[Ct.a,St.b,no.a,Pi,Ds.a],null,null)],(function(t,e){t(e,1,0)}),null)}var ix=s["ɵccf"]("cd-osd-creation-preview-modal",ad,rx,{driveGroups:"driveGroups"},{submitAction:"submitAction"},[]),sx=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ux(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"cd-modal",[],null,null,null,sy.c,sy.b)),s["ɵdid"](1,49152,null,0,ky.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](3,null,[""," ",""])),(t()(),s["ɵeld"](4,0,null,1,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,ii,ri)),s["ɵdid"](7,49152,null,0,ai,[],null,null),(t()(),s["ɵeld"](8,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,Zs.b,Zs.a)),s["ɵdid"](10,49152,null,0,Qs.a,[i.Location,St.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,10,0,"Close",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,3,0,n.actionDescription,n.itemDescription)}))}function ox(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-modal",[],null,null,null,ux,sx)),s["ɵdid"](1,114688,null,0,Es,[Ct.a],null,null)],(function(t,e){t(e,1,0)}),null)}var lx=s["ɵccf"]("cd-orchestrator-doc-modal",Es,ox,{},{},[]),dx=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function cx(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](1,212992,null,0,Et.r,[Et.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function fx(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-root",[],null,null,null,cx,dx)),s["ɵdid"](1,49152,null,0,l,[],null,null)],null,null)}var hx=s["ɵccf"]("cd-root",l,fx,{},{},[]),gx=n("z6cu");let px=(()=>{class t{constructor(t,e,n){this.router=t,this.authStorageService=e,this.notificationService=n}intercept(t,e){return e.handle(t).pipe(Object(Oe.a)(t=>{if(t instanceof et.f){let e;switch(t.status){case 400:const n=new As.a,a=t.error.task;X.isPlainObject(a)?(a.metadata.component=a.metadata.component||t.error.component,n.name=a.name,n.metadata=a.metadata):n.metadata=t.error,n.success=!1,n.exception=t.error,e=this.notificationService.notifyTask(n);break;case 401:this.authStorageService.remove(),this.router.navigate(["/login"]);break;case 403:this.router.navigate(["/403"]);break;default:e=this.prepareNotification(t)}t.preventDefault=()=>{this.notificationService.cancel(e)},t.ignoreStatusCode=function(t){this.status===t&&this.preventDefault()}}return Object(gx.a)(t)}))}prepareNotification(t){return this.notificationService.show(()=>{let e="";return X.isPlainObject(t.error)&&X.isString(t.error.detail)?e=t.error.detail:X.isString(t.error)?e=t.error:X.isString(t.message)&&(e=t.message),new Ze.b(le.a.error,`${t.status} - ${t.statusText}`,e,void 0,t.application)})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Et.m),s["ɵɵinject"](Z.a),s["ɵɵinject"](bt.a))},token:t,providedIn:"root"}),t})();function bx(){return"undefined"!=typeof process}function mx(t){switch(t.length){case 0:return new W.d;case 1:return t[0];default:return new W.k(t)}}function yx(t,e,n,a,r={},i={}){const s=[],u=[];let o=-1,l=null;if(a.forEach(t=>{const n=t.offset,a=n==o,d=a&&l||{};Object.keys(t).forEach(n=>{let a=n,u=t[n];if("offset"!==n)switch(a=e.normalizePropertyName(a,s),u){case W.l:u=r[n];break;case W.a:u=i[n];break;default:u=e.normalizeStyleValue(n,a,u,s)}d[a]=u}),a||u.push(d),l=d,o=n}),s.length){const t="\n - ";throw new Error(`Unable to animate due to the following errors:${t}${s.join(t)}`)}return u}function vx(t,e,n,a){switch(e){case"start":t.onStart(()=>a(n&&xx(n,"start",t)));break;case"done":t.onDone(()=>a(n&&xx(n,"done",t)));break;case"destroy":t.onDestroy(()=>a(n&&xx(n,"destroy",t)))}}function xx(t,e,n){const a=n.totalTime,r=_x(t.element,t.triggerName,t.fromState,t.toState,e||t.phaseName,null==a?t.totalTime:a,!!n.disabled),i=t._data;return null!=i&&(r._data=i),r}function _x(t,e,n,a,r="",i=0,s){return{element:t,triggerName:e,fromState:n,toState:a,phaseName:r,totalTime:i,disabled:!!s}}function Tx(t,e,n){let a;return t instanceof Map?(a=t.get(e),a||t.set(e,a=n)):(a=t[e],a||(a=t[e]=n)),a}function wx(t){const e=t.indexOf(":");return[t.substring(1,e),t.substr(e+1)]}let Ox=(t,e)=>!1,Sx=(t,e)=>!1,Ix=(t,e,n)=>[];const Nx=bx();(Nx||"undefined"!=typeof Element)&&(Ox=(t,e)=>t.contains(e),Sx=(()=>{if(Nx||Element.prototype.matches)return(t,e)=>t.matches(e);{const t=Element.prototype,e=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector;return e?(t,n)=>e.apply(t,[n]):Sx}})(),Ix=(t,e,n)=>{let a=[];if(n)a.push(...t.querySelectorAll(e));else{const n=t.querySelector(e);n&&a.push(n)}return a});let Cx=null,Rx=!1;function Ax(t){Cx||(Cx=("undefined"!=typeof document?document.body:null)||{},Rx=!!Cx.style&&"WebkitAppearance"in Cx.style);let e=!0;return Cx.style&&!function(t){return"ebkit"==t.substring(1,6)}(t)&&(e=t in Cx.style,!e&&Rx)&&(e="Webkit"+t.charAt(0).toUpperCase()+t.substr(1)in Cx.style),e}const kx=Sx,Ex=Ox,Lx=Ix;function Dx(t){const e={};return Object.keys(t).forEach(n=>{const a=n.replace(/([a-z])([A-Z])/g,"$1-$2");e[a]=t[n]}),e}class Px{validateStyleProperty(t){return Ax(t)}matchesElement(t,e){return kx(t,e)}containsElement(t,e){return Ex(t,e)}query(t,e,n){return Lx(t,e,n)}computeStyle(t,e,n){return n||""}animate(t,e,n,a,r,i=[],s){return new W.d(n,a)}}let Mx=(()=>{class t{}return t.NOOP=new Px,t})();function qx(t){if("number"==typeof t)return t;const e=t.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:jx(parseFloat(e[1]),e[2])}function jx(t,e){switch(e){case"s":return 1e3*t;default:return t}}function Fx(t,e,n){return t.hasOwnProperty("duration")?t:function(t,e,n){let a,r=0,i="";if("string"==typeof t){const n=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===n)return e.push(`The provided timing value "${t}" is invalid.`),{duration:0,delay:0,easing:""};a=jx(parseFloat(n[1]),n[2]);const s=n[3];null!=s&&(r=jx(parseFloat(s),n[4]));const u=n[5];u&&(i=u)}else a=t;if(!n){let n=!1,i=e.length;a<0&&(e.push("Duration values below 0 are not allowed for this animation step."),n=!0),r<0&&(e.push("Delay values below 0 are not allowed for this animation step."),n=!0),n&&e.splice(i,0,`The provided timing value "${t}" is invalid.`)}return{duration:a,delay:r,easing:i}}(t,e,n)}function Vx(t,e={}){return Object.keys(t).forEach(n=>{e[n]=t[n]}),e}function Gx(t,e,n={}){if(e)for(let a in t)n[a]=t[a];else Vx(t,n);return n}function Bx(t,e,n){return n?e+":"+n+";":""}function zx(t){let e="";for(let n=0;n<t.style.length;n++){const a=t.style.item(n);e+=Bx(0,a,t.style.getPropertyValue(a))}for(const n in t.style)t.style.hasOwnProperty(n)&&!n.startsWith("_")&&(e+=Bx(0,n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),t.style[n]));t.setAttribute("style",e)}function Yx(t,e,n){t.style&&(Object.keys(e).forEach(a=>{const r=Qx(a);n&&!n.hasOwnProperty(a)&&(n[a]=t.style[r]),t.style[r]=e[a]}),bx()&&zx(t))}function Hx(t,e){t.style&&(Object.keys(e).forEach(e=>{const n=Qx(e);t.style[n]=""}),bx()&&zx(t))}function Ux(t){return Array.isArray(t)?1==t.length?t[0]:Object(W.f)(t):t}const Wx=new RegExp("{{\\s*(.+?)\\s*}}","g");function Kx(t){let e=[];if("string"==typeof t){const n=t.toString();let a;for(;a=Wx.exec(n);)e.push(a[1]);Wx.lastIndex=0}return e}function $x(t,e,n){const a=t.toString(),r=a.replace(Wx,(t,a)=>{let r=e[a];return e.hasOwnProperty(a)||(n.push("Please provide a value for the animation param "+a),r=""),r.toString()});return r==a?t:r}function Jx(t){const e=[];let n=t.next();for(;!n.done;)e.push(n.value),n=t.next();return e}const Zx=/-+([a-z0-9])/g;function Qx(t){return t.replace(Zx,(...t)=>t[1].toUpperCase())}function Xx(t,e){return 0===t||0===e}function t_(t,e,n){const a=Object.keys(n);if(a.length&&e.length){let i=e[0],s=[];if(a.forEach(t=>{i.hasOwnProperty(t)||s.push(t),i[t]=n[t]}),s.length)for(var r=1;r<e.length;r++){let n=e[r];s.forEach((function(e){n[e]=n_(t,e)}))}}return e}function e_(t,e,n){switch(e.type){case 7:return t.visitTrigger(e,n);case 0:return t.visitState(e,n);case 1:return t.visitTransition(e,n);case 2:return t.visitSequence(e,n);case 3:return t.visitGroup(e,n);case 4:return t.visitAnimate(e,n);case 5:return t.visitKeyframes(e,n);case 6:return t.visitStyle(e,n);case 8:return t.visitReference(e,n);case 9:return t.visitAnimateChild(e,n);case 10:return t.visitAnimateRef(e,n);case 11:return t.visitQuery(e,n);case 12:return t.visitStagger(e,n);default:throw new Error("Unable to resolve animation metadata node #"+e.type)}}function n_(t,e){return window.getComputedStyle(t)[e]}function a_(t,e){const n=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(t=>function(t,e,n){if(":"==t[0]){const a=function(t,e){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,e)=>parseFloat(e)>parseFloat(t);case":decrement":return(t,e)=>parseFloat(e)<parseFloat(t);default:return e.push(`The transition alias value "${t}" is not supported`),"* => *"}}(t,n);if("function"==typeof a)return void e.push(a);t=a}const a=t.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(null==a||a.length<4)return n.push(`The provided transition expression "${t}" is not supported`),e;const r=a[1],i=a[2],s=a[3];e.push(s_(r,s)),"<"!=i[0]||"*"==r&&"*"==s||e.push(s_(s,r))}(t,n,e)):n.push(t),n}const r_=new Set(["true","1"]),i_=new Set(["false","0"]);function s_(t,e){const n=r_.has(t)||i_.has(t),a=r_.has(e)||i_.has(e);return(r,i)=>{let s="*"==t||t==r,u="*"==e||e==i;return!s&&n&&"boolean"==typeof r&&(s=r?r_.has(t):i_.has(t)),!u&&a&&"boolean"==typeof i&&(u=i?r_.has(e):i_.has(e)),s&&u}}const u_=new RegExp("s*:selfs*,?","g");function o_(t,e,n){return new l_(t).build(e,n)}class l_{constructor(t){this._driver=t}build(t,e){const n=new d_(e);return this._resetContextStyleTimingState(n),e_(this,Ux(t),n)}_resetContextStyleTimingState(t){t.currentQuerySelector="",t.collectedStyles={},t.collectedStyles[""]={},t.currentTime=0}visitTrigger(t,e){let n=e.queryCount=0,a=e.depCount=0;const r=[],i=[];return"@"==t.name.charAt(0)&&e.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),t.definitions.forEach(t=>{if(this._resetContextStyleTimingState(e),0==t.type){const n=t,a=n.name;a.toString().split(/\s*,\s*/).forEach(t=>{n.name=t,r.push(this.visitState(n,e))}),n.name=a}else if(1==t.type){const r=this.visitTransition(t,e);n+=r.queryCount,a+=r.depCount,i.push(r)}else e.errors.push("only state() and transition() definitions can sit inside of a trigger()")}),{type:7,name:t.name,states:r,transitions:i,queryCount:n,depCount:a,options:null}}visitState(t,e){const n=this.visitStyle(t.styles,e),a=t.options&&t.options.params||null;if(n.containsDynamicStyles){const r=new Set,i=a||{};if(n.styles.forEach(t=>{if(c_(t)){const e=t;Object.keys(e).forEach(t=>{Kx(e[t]).forEach(t=>{i.hasOwnProperty(t)||r.add(t)})})}}),r.size){const n=Jx(r.values());e.errors.push(`state("${t.name}", ...) must define default values for all the following style substitutions: ${n.join(", ")}`)}}return{type:0,name:t.name,style:n,options:a?{params:a}:null}}visitTransition(t,e){e.queryCount=0,e.depCount=0;const n=e_(this,Ux(t.animation),e);return{type:1,matchers:a_(t.expr,e.errors),animation:n,queryCount:e.queryCount,depCount:e.depCount,options:f_(t.options)}}visitSequence(t,e){return{type:2,steps:t.steps.map(t=>e_(this,t,e)),options:f_(t.options)}}visitGroup(t,e){const n=e.currentTime;let a=0;const r=t.steps.map(t=>{e.currentTime=n;const r=e_(this,t,e);return a=Math.max(a,e.currentTime),r});return e.currentTime=a,{type:3,steps:r,options:f_(t.options)}}visitAnimate(t,e){const n=function(t,e){let n=null;if(t.hasOwnProperty("duration"))n=t;else if("number"==typeof t)return h_(Fx(t,e).duration,0,"");const a=t;if(a.split(/\s+/).some(t=>"{"==t.charAt(0)&&"{"==t.charAt(1))){const t=h_(0,0,"");return t.dynamic=!0,t.strValue=a,t}return n=n||Fx(a,e),h_(n.duration,n.delay,n.easing)}(t.timings,e.errors);let a;e.currentAnimateTimings=n;let r=t.styles?t.styles:Object(W.h)({});if(5==r.type)a=this.visitKeyframes(r,e);else{let r=t.styles,i=!1;if(!r){i=!0;const t={};n.easing&&(t.easing=n.easing),r=Object(W.h)(t)}e.currentTime+=n.duration+n.delay;const s=this.visitStyle(r,e);s.isEmptyStep=i,a=s}return e.currentAnimateTimings=null,{type:4,timings:n,style:a,options:null}}visitStyle(t,e){const n=this._makeStyleAst(t,e);return this._validateStyleAst(n,e),n}_makeStyleAst(t,e){const n=[];Array.isArray(t.styles)?t.styles.forEach(t=>{"string"==typeof t?t==W.a?n.push(t):e.errors.push(`The provided style string value ${t} is not allowed.`):n.push(t)}):n.push(t.styles);let a=!1,r=null;return n.forEach(t=>{if(c_(t)){const e=t,n=e.easing;if(n&&(r=n,delete e.easing),!a)for(let t in e)if(e[t].toString().indexOf("{{")>=0){a=!0;break}}}),{type:6,styles:n,easing:r,offset:t.offset,containsDynamicStyles:a,options:null}}_validateStyleAst(t,e){const n=e.currentAnimateTimings;let a=e.currentTime,r=e.currentTime;n&&r>0&&(r-=n.duration+n.delay),t.styles.forEach(t=>{"string"!=typeof t&&Object.keys(t).forEach(n=>{if(!this._driver.validateStyleProperty(n))return void e.errors.push(`The provided animation property "${n}" is not a supported CSS property for animations`);const i=e.collectedStyles[e.currentQuerySelector],s=i[n];let u=!0;s&&(r!=a&&r>=s.startTime&&a<=s.endTime&&(e.errors.push(`The CSS property "${n}" that exists between the times of "${s.startTime}ms" and "${s.endTime}ms" is also being animated in a parallel animation between the times of "${r}ms" and "${a}ms"`),u=!1),r=s.startTime),u&&(i[n]={startTime:r,endTime:a}),e.options&&function(t,e,n){const a=e.params||{},r=Kx(t);r.length&&r.forEach(t=>{a.hasOwnProperty(t)||n.push(`Unable to resolve the local animation param ${t} in the given list of values`)})}(t[n],e.options,e.errors)})})}visitKeyframes(t,e){const n={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push("keyframes() must be placed inside of a call to animate()"),n;let a=0;const r=[];let i=!1,s=!1,u=0;const o=t.steps.map(t=>{const n=this._makeStyleAst(t,e);let o=null!=n.offset?n.offset:function(t){if("string"==typeof t)return null;let e=null;if(Array.isArray(t))t.forEach(t=>{if(c_(t)&&t.hasOwnProperty("offset")){const n=t;e=parseFloat(n.offset),delete n.offset}});else if(c_(t)&&t.hasOwnProperty("offset")){const n=t;e=parseFloat(n.offset),delete n.offset}return e}(n.styles),l=0;return null!=o&&(a++,l=n.offset=o),s=s||l<0||l>1,i=i||l<u,u=l,r.push(l),n});s&&e.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),i&&e.errors.push("Please ensure that all keyframe offsets are in order");const l=t.steps.length;let d=0;a>0&&a<l?e.errors.push("Not all style() steps within the declared keyframes() contain offsets"):0==a&&(d=1/(l-1));const c=l-1,f=e.currentTime,h=e.currentAnimateTimings,g=h.duration;return o.forEach((t,a)=>{const i=d>0?a==c?1:d*a:r[a],s=i*g;e.currentTime=f+h.delay+s,h.duration=s,this._validateStyleAst(t,e),t.offset=i,n.styles.push(t)}),n}visitReference(t,e){return{type:8,animation:e_(this,Ux(t.animation),e),options:f_(t.options)}}visitAnimateChild(t,e){return e.depCount++,{type:9,options:f_(t.options)}}visitAnimateRef(t,e){return{type:10,animation:this.visitReference(t.animation,e),options:f_(t.options)}}visitQuery(t,e){const n=e.currentQuerySelector,a=t.options||{};e.queryCount++,e.currentQuery=t;const[r,i]=function(t){const e=!!t.split(/\s*,\s*/).find(t=>":self"==t);return e&&(t=t.replace(u_,"")),[t=t.replace(/@\*/g,".ng-trigger").replace(/@\w+/g,t=>".ng-trigger-"+t.substr(1)).replace(/:animating/g,".ng-animating"),e]}(t.selector);e.currentQuerySelector=n.length?n+" "+r:r,Tx(e.collectedStyles,e.currentQuerySelector,{});const s=e_(this,Ux(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=n,{type:11,selector:r,limit:a.limit||0,optional:!!a.optional,includeSelf:i,animation:s,originalSelector:t.selector,options:f_(t.options)}}visitStagger(t,e){e.currentQuery||e.errors.push("stagger() can only be used inside of query()");const n="full"===t.timings?{duration:0,delay:0,easing:"full"}:Fx(t.timings,e.errors,!0);return{type:12,animation:e_(this,Ux(t.animation),e),timings:n,options:null}}}class d_{constructor(t){this.errors=t,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles={},this.options=null}}function c_(t){return!Array.isArray(t)&&"object"==typeof t}function f_(t){var e;return t?(t=Vx(t)).params&&(t.params=(e=t.params)?Vx(e):null):t={},t}function h_(t,e,n){return{duration:t,delay:e,easing:n}}function g_(t,e,n,a,r,i,s=null,u=!1){return{type:1,element:t,keyframes:e,preStyleProps:n,postStyleProps:a,duration:r,delay:i,totalTime:r+i,easing:s,subTimeline:u}}class p_{constructor(){this._map=new Map}consume(t){let e=this._map.get(t);return e?this._map.delete(t):e=[],e}append(t,e){let n=this._map.get(t);n||this._map.set(t,n=[]),n.push(...e)}has(t){return this._map.has(t)}clear(){this._map.clear()}}const b_=new RegExp(":enter","g"),m_=new RegExp(":leave","g");function y_(t,e,n,a,r,i={},s={},u,o,l=[]){return(new v_).buildKeyframes(t,e,n,a,r,i,s,u,o,l)}class v_{buildKeyframes(t,e,n,a,r,i,s,u,o,l=[]){o=o||new p_;const d=new __(t,e,o,a,r,l,[]);d.options=u,d.currentTimeline.setStyles([i],null,d.errors,u),e_(this,n,d);const c=d.timelines.filter(t=>t.containsAnimation());if(c.length&&Object.keys(s).length){const t=c[c.length-1];t.allowOnlyTimelineStyles()||t.setStyles([s],null,d.errors,u)}return c.length?c.map(t=>t.buildKeyframes()):[g_(e,[],[],[],0,0,"",!1)]}visitTrigger(t,e){}visitState(t,e){}visitTransition(t,e){}visitAnimateChild(t,e){const n=e.subInstructions.consume(e.element);if(n){const a=e.createSubContext(t.options),r=e.currentTimeline.currentTime,i=this._visitSubInstructions(n,a,a.options);r!=i&&e.transformIntoNewTimeline(i)}e.previousNode=t}visitAnimateRef(t,e){const n=e.createSubContext(t.options);n.transformIntoNewTimeline(),this.visitReference(t.animation,n),e.transformIntoNewTimeline(n.currentTimeline.currentTime),e.previousNode=t}_visitSubInstructions(t,e,n){let a=e.currentTimeline.currentTime;const r=null!=n.duration?qx(n.duration):null,i=null!=n.delay?qx(n.delay):null;return 0!==r&&t.forEach(t=>{const n=e.appendInstructionToTimeline(t,r,i);a=Math.max(a,n.duration+n.delay)}),a}visitReference(t,e){e.updateOptions(t.options,!0),e_(this,t.animation,e),e.previousNode=t}visitSequence(t,e){const n=e.subContextCount;let a=e;const r=t.options;if(r&&(r.params||r.delay)&&(a=e.createSubContext(r),a.transformIntoNewTimeline(),null!=r.delay)){6==a.previousNode.type&&(a.currentTimeline.snapshotCurrentStyles(),a.previousNode=x_);const t=qx(r.delay);a.delayNextStep(t)}t.steps.length&&(t.steps.forEach(t=>e_(this,t,a)),a.currentTimeline.applyStylesToKeyframe(),a.subContextCount>n&&a.transformIntoNewTimeline()),e.previousNode=t}visitGroup(t,e){const n=[];let a=e.currentTimeline.currentTime;const r=t.options&&t.options.delay?qx(t.options.delay):0;t.steps.forEach(i=>{const s=e.createSubContext(t.options);r&&s.delayNextStep(r),e_(this,i,s),a=Math.max(a,s.currentTimeline.currentTime),n.push(s.currentTimeline)}),n.forEach(t=>e.currentTimeline.mergeTimelineCollectedStyles(t)),e.transformIntoNewTimeline(a),e.previousNode=t}_visitTiming(t,e){if(t.dynamic){const n=t.strValue;return Fx(e.params?$x(n,e.params,e.errors):n,e.errors)}return{duration:t.duration,delay:t.delay,easing:t.easing}}visitAnimate(t,e){const n=e.currentAnimateTimings=this._visitTiming(t.timings,e),a=e.currentTimeline;n.delay&&(e.incrementTime(n.delay),a.snapshotCurrentStyles());const r=t.style;5==r.type?this.visitKeyframes(r,e):(e.incrementTime(n.duration),this.visitStyle(r,e),a.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=t}visitStyle(t,e){const n=e.currentTimeline,a=e.currentAnimateTimings;!a&&n.getCurrentStyleProperties().length&&n.forwardFrame();const r=a&&a.easing||t.easing;t.isEmptyStep?n.applyEmptyStep(r):n.setStyles(t.styles,r,e.errors,e.options),e.previousNode=t}visitKeyframes(t,e){const n=e.currentAnimateTimings,a=e.currentTimeline.duration,r=n.duration,i=e.createSubContext().currentTimeline;i.easing=n.easing,t.styles.forEach(t=>{i.forwardTime((t.offset||0)*r),i.setStyles(t.styles,t.easing,e.errors,e.options),i.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(i),e.transformIntoNewTimeline(a+r),e.previousNode=t}visitQuery(t,e){const n=e.currentTimeline.currentTime,a=t.options||{},r=a.delay?qx(a.delay):0;r&&(6===e.previousNode.type||0==n&&e.currentTimeline.getCurrentStyleProperties().length)&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=x_);let i=n;const s=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!a.optional,e.errors);e.currentQueryTotal=s.length;let u=null;s.forEach((n,a)=>{e.currentQueryIndex=a;const s=e.createSubContext(t.options,n);r&&s.delayNextStep(r),n===e.element&&(u=s.currentTimeline),e_(this,t.animation,s),s.currentTimeline.applyStylesToKeyframe(),i=Math.max(i,s.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(i),u&&(e.currentTimeline.mergeTimelineCollectedStyles(u),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t}visitStagger(t,e){const n=e.parentContext,a=e.currentTimeline,r=t.timings,i=Math.abs(r.duration),s=i*(e.currentQueryTotal-1);let u=i*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":u=s-u;break;case"full":u=n.currentStaggerTime}const o=e.currentTimeline;u&&o.delayNextStep(u);const l=o.currentTime;e_(this,t.animation,e),e.previousNode=t,n.currentStaggerTime=a.currentTime-l+(a.startTime-n.currentTimeline.startTime)}}const x_={};class __{constructor(t,e,n,a,r,i,s,u){this._driver=t,this.element=e,this.subInstructions=n,this._enterClassName=a,this._leaveClassName=r,this.errors=i,this.timelines=s,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=x_,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=u||new T_(this._driver,e,0),s.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(t,e){if(!t)return;const n=t;let a=this.options;null!=n.duration&&(a.duration=qx(n.duration)),null!=n.delay&&(a.delay=qx(n.delay));const r=n.params;if(r){let t=a.params;t||(t=this.options.params={}),Object.keys(r).forEach(n=>{e&&t.hasOwnProperty(n)||(t[n]=$x(r[n],t,this.errors))})}}_copyOptions(){const t={};if(this.options){const e=this.options.params;if(e){const n=t.params={};Object.keys(e).forEach(t=>{n[t]=e[t]})}}return t}createSubContext(t=null,e,n){const a=e||this.element,r=new __(this._driver,a,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(a,n||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(t),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(t){return this.previousNode=x_,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(t,e,n){const a={duration:null!=e?e:t.duration,delay:this.currentTimeline.currentTime+(null!=n?n:0)+t.delay,easing:""},r=new w_(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,a,t.stretchStartingKeyframe);return this.timelines.push(r),a}incrementTime(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)}delayNextStep(t){t>0&&this.currentTimeline.delayNextStep(t)}invokeQuery(t,e,n,a,r,i){let s=[];if(a&&s.push(this.element),t.length>0){t=(t=t.replace(b_,"."+this._enterClassName)).replace(m_,"."+this._leaveClassName);let e=this._driver.query(this.element,t,1!=n);0!==n&&(e=n<0?e.slice(e.length+n,e.length):e.slice(0,n)),s.push(...e)}return r||0!=s.length||i.push(`\`query("${e}")\` returned zero elements. (Use \`query("${e}", { optional: true })\` if you wish to allow this.)`),s}}class T_{constructor(t,e,n,a){this._driver=t,this.element=e,this.startTime=n,this._elementTimelineStylesLookup=a,this.duration=0,this._previousKeyframe={},this._currentKeyframe={},this._keyframes=new Map,this._styleSummary={},this._pendingStyles={},this._backFill={},this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._localTimelineStyles=Object.create(this._backFill,{}),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.getCurrentStyleProperties().length>0;default:return!0}}getCurrentStyleProperties(){return Object.keys(this._currentKeyframe)}get currentTime(){return this.startTime+this.duration}delayNextStep(t){const e=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t}fork(t,e){return this.applyStylesToKeyframe(),new T_(this._driver,t,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=Object.create(this._backFill,{}),this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()}_updateStyle(t,e){this._localTimelineStyles[t]=e,this._globalTimelineStyles[t]=e,this._styleSummary[t]={time:this.currentTime,value:e}}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(t){t&&(this._previousKeyframe.easing=t),Object.keys(this._globalTimelineStyles).forEach(t=>{this._backFill[t]=this._globalTimelineStyles[t]||W.a,this._currentKeyframe[t]=W.a}),this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(t,e,n,a){e&&(this._previousKeyframe.easing=e);const r=a&&a.params||{},i=function(t,e){const n={};let a;return t.forEach(t=>{"*"===t?(a=a||Object.keys(e),a.forEach(t=>{n[t]=W.a})):Gx(t,!1,n)}),n}(t,this._globalTimelineStyles);Object.keys(i).forEach(t=>{const e=$x(i[t],r,n);this._pendingStyles[t]=e,this._localTimelineStyles.hasOwnProperty(t)||(this._backFill[t]=this._globalTimelineStyles.hasOwnProperty(t)?this._globalTimelineStyles[t]:W.a),this._updateStyle(t,e)})}applyStylesToKeyframe(){const t=this._pendingStyles,e=Object.keys(t);0!=e.length&&(this._pendingStyles={},e.forEach(e=>{this._currentKeyframe[e]=t[e]}),Object.keys(this._localTimelineStyles).forEach(t=>{this._currentKeyframe.hasOwnProperty(t)||(this._currentKeyframe[t]=this._localTimelineStyles[t])}))}snapshotCurrentStyles(){Object.keys(this._localTimelineStyles).forEach(t=>{const e=this._localTimelineStyles[t];this._pendingStyles[t]=e,this._updateStyle(t,e)})}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const t=[];for(let e in this._currentKeyframe)t.push(e);return t}mergeTimelineCollectedStyles(t){Object.keys(t._styleSummary).forEach(e=>{const n=this._styleSummary[e],a=t._styleSummary[e];(!n||a.time>n.time)&&this._updateStyle(e,a.value)})}buildKeyframes(){this.applyStylesToKeyframe();const t=new Set,e=new Set,n=1===this._keyframes.size&&0===this.duration;let a=[];this._keyframes.forEach((r,i)=>{const s=Gx(r,!0);Object.keys(s).forEach(n=>{const a=s[n];a==W.l?t.add(n):a==W.a&&e.add(n)}),n||(s.offset=i/this.duration),a.push(s)});const r=t.size?Jx(t.values()):[],i=e.size?Jx(e.values()):[];if(n){const t=a[0],e=Vx(t);t.offset=0,e.offset=1,a=[t,e]}return g_(this.element,a,r,i,this.duration,this.startTime,this.easing,!1)}}class w_ extends T_{constructor(t,e,n,a,r,i,s=!1){super(t,e,i.delay),this.element=e,this.keyframes=n,this.preStyleProps=a,this.postStyleProps=r,this._stretchStartingKeyframe=s,this.timings={duration:i.duration,delay:i.delay,easing:i.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let t=this.keyframes,{delay:e,duration:n,easing:a}=this.timings;if(this._stretchStartingKeyframe&&e){const r=[],i=n+e,s=e/i,u=Gx(t[0],!1);u.offset=0,r.push(u);const o=Gx(t[0],!1);o.offset=O_(s),r.push(o);const l=t.length-1;for(let a=1;a<=l;a++){let s=Gx(t[a],!1);s.offset=O_((e+s.offset*n)/i),r.push(s)}n=i,e=0,a="",t=r}return g_(this.element,t,this.preStyleProps,this.postStyleProps,n,e,a,!0)}}function O_(t,e=3){const n=Math.pow(10,e-1);return Math.round(t*n)/n}class S_{}class I_ extends S_{normalizePropertyName(t,e){return Qx(t)}normalizeStyleValue(t,e,n,a){let r="";const i=n.toString().trim();if(N_[e]&&0!==n&&"0"!==n)if("number"==typeof n)r="px";else{const e=n.match(/^[+-]?[\d\.]+([a-z]*)$/);e&&0==e[1].length&&a.push(`Please provide a CSS unit value for ${t}:${n}`)}return i+r}}const N_=(()=>function(t){const e={};return t.forEach(t=>e[t]=!0),e}("width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective".split(",")))();function C_(t,e,n,a,r,i,s,u,o,l,d,c,f){return{type:0,element:t,triggerName:e,isRemovalTransition:r,fromState:n,fromStyles:i,toState:a,toStyles:s,timelines:u,queriedElements:o,preStyleProps:l,postStyleProps:d,totalTime:c,errors:f}}const R_={};class A_{constructor(t,e,n){this._triggerName=t,this.ast=e,this._stateStyles=n}match(t,e,n,a){return function(t,e,n,a,r){return t.some(t=>t(e,n,a,r))}(this.ast.matchers,t,e,n,a)}buildStyles(t,e,n){const a=this._stateStyles["*"],r=this._stateStyles[t],i=a?a.buildStyles(e,n):{};return r?r.buildStyles(e,n):i}build(t,e,n,a,r,i,s,u,o,l){const d=[],c=this.ast.options&&this.ast.options.params||R_,f=this.buildStyles(n,s&&s.params||R_,d),h=u&&u.params||R_,g=this.buildStyles(a,h,d),p=new Set,b=new Map,m=new Map,y="void"===a,v={params:Object.assign({},c,h)},x=l?[]:y_(t,e,this.ast.animation,r,i,f,g,v,o,d);let _=0;if(x.forEach(t=>{_=Math.max(t.duration+t.delay,_)}),d.length)return C_(e,this._triggerName,n,a,y,f,g,[],[],b,m,_,d);x.forEach(t=>{const n=t.element,a=Tx(b,n,{});t.preStyleProps.forEach(t=>a[t]=!0);const r=Tx(m,n,{});t.postStyleProps.forEach(t=>r[t]=!0),n!==e&&p.add(n)});const T=Jx(p.values());return C_(e,this._triggerName,n,a,y,f,g,x,T,b,m,_)}}class k_{constructor(t,e){this.styles=t,this.defaultParams=e}buildStyles(t,e){const n={},a=Vx(this.defaultParams);return Object.keys(t).forEach(e=>{const n=t[e];null!=n&&(a[e]=n)}),this.styles.styles.forEach(t=>{if("string"!=typeof t){const r=t;Object.keys(r).forEach(t=>{let i=r[t];i.length>1&&(i=$x(i,a,e)),n[t]=i})}}),n}}class E_{constructor(t,e){this.name=t,this.ast=e,this.transitionFactories=[],this.states={},e.states.forEach(t=>{this.states[t.name]=new k_(t.style,t.options&&t.options.params||{})}),L_(this.states,"true","1"),L_(this.states,"false","0"),e.transitions.forEach(e=>{this.transitionFactories.push(new A_(t,e,this.states))}),this.fallbackTransition=new A_(t,{type:1,animation:{type:2,steps:[],options:null},matchers:[(t,e)=>!0],options:null,queryCount:0,depCount:0},this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(t,e,n,a){return this.transitionFactories.find(r=>r.match(t,e,n,a))||null}matchStyles(t,e,n){return this.fallbackTransition.buildStyles(t,e,n)}}function L_(t,e,n){t.hasOwnProperty(e)?t.hasOwnProperty(n)||(t[n]=t[e]):t.hasOwnProperty(n)&&(t[e]=t[n])}const D_=new p_;class P_{constructor(t,e,n){this.bodyNode=t,this._driver=e,this._normalizer=n,this._animations={},this._playersById={},this.players=[]}register(t,e){const n=[],a=o_(this._driver,e,n);if(n.length)throw new Error("Unable to build the animation due to the following errors: "+n.join("\n"));this._animations[t]=a}_buildPlayer(t,e,n){const a=t.element,r=yx(0,this._normalizer,0,t.keyframes,e,n);return this._driver.animate(a,r,t.duration,t.delay,t.easing,[],!0)}create(t,e,n={}){const a=[],r=this._animations[t];let i;const s=new Map;if(r?(i=y_(this._driver,e,r,"ng-enter","ng-leave",{},{},n,D_,a),i.forEach(t=>{const e=Tx(s,t.element,{});t.postStyleProps.forEach(t=>e[t]=null)})):(a.push("The requested animation doesn't exist or has already been destroyed"),i=[]),a.length)throw new Error("Unable to create the animation due to the following errors: "+a.join("\n"));s.forEach((t,e)=>{Object.keys(t).forEach(n=>{t[n]=this._driver.computeStyle(e,n,W.a)})});const u=mx(i.map(t=>{const e=s.get(t.element);return this._buildPlayer(t,{},e)}));return this._playersById[t]=u,u.onDestroy(()=>this.destroy(t)),this.players.push(u),u}destroy(t){const e=this._getPlayer(t);e.destroy(),delete this._playersById[t];const n=this.players.indexOf(e);n>=0&&this.players.splice(n,1)}_getPlayer(t){const e=this._playersById[t];if(!e)throw new Error("Unable to find the timeline player referenced by "+t);return e}listen(t,e,n,a){const r=_x(e,"","","");return vx(this._getPlayer(t),n,r,a),()=>{}}command(t,e,n,a){if("register"==n)return void this.register(t,a[0]);if("create"==n)return void this.create(t,e,a[0]||{});const r=this._getPlayer(t);switch(n){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(a[0]));break;case"destroy":this.destroy(t)}}}const M_=[],q_={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},j_={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0};class F_{constructor(t,e=""){this.namespaceId=e;const n=t&&t.hasOwnProperty("value");if(this.value=null!=(a=n?t.value:t)?a:null,n){const e=Vx(t);delete e.value,this.options=e}else this.options={};var a;this.options.params||(this.options.params={})}get params(){return this.options.params}absorbOptions(t){const e=t.params;if(e){const t=this.options.params;Object.keys(e).forEach(n=>{null==t[n]&&(t[n]=e[n])})}}}const V_=new F_("void");class G_{constructor(t,e,n){this.id=t,this.hostElement=e,this._engine=n,this.players=[],this._triggers={},this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+t,K_(e,this._hostClassName)}listen(t,e,n,a){if(!this._triggers.hasOwnProperty(e))throw new Error(`Unable to listen on the animation trigger event "${n}" because the animation trigger "${e}" doesn't exist!`);if(null==n||0==n.length)throw new Error(`Unable to listen on the animation trigger "${e}" because the provided event is undefined!`);if("start"!=(r=n)&&"done"!=r)throw new Error(`The provided animation trigger event "${n}" for the animation trigger "${e}" is not supported!`);var r;const i=Tx(this._elementListeners,t,[]),s={name:e,phase:n,callback:a};i.push(s);const u=Tx(this._engine.statesByElement,t,{});return u.hasOwnProperty(e)||(K_(t,"ng-trigger"),K_(t,"ng-trigger-"+e),u[e]=V_),()=>{this._engine.afterFlush(()=>{const t=i.indexOf(s);t>=0&&i.splice(t,1),this._triggers[e]||delete u[e]})}}register(t,e){return!this._triggers[t]&&(this._triggers[t]=e,!0)}_getTrigger(t){const e=this._triggers[t];if(!e)throw new Error(`The provided animation trigger "${t}" has not been registered!`);return e}trigger(t,e,n,a=!0){const r=this._getTrigger(e),i=new z_(this.id,e,t);let s=this._engine.statesByElement.get(t);s||(K_(t,"ng-trigger"),K_(t,"ng-trigger-"+e),this._engine.statesByElement.set(t,s={}));let u=s[e];const o=new F_(n,this.id);if(!(n&&n.hasOwnProperty("value"))&&u&&o.absorbOptions(u.options),s[e]=o,u||(u=V_),"void"!==o.value&&u.value===o.value){if(!function(t,e){const n=Object.keys(t),a=Object.keys(e);if(n.length!=a.length)return!1;for(let r=0;r<n.length;r++){const a=n[r];if(!e.hasOwnProperty(a)||t[a]!==e[a])return!1}return!0}(u.params,o.params)){const e=[],n=r.matchStyles(u.value,u.params,e),a=r.matchStyles(o.value,o.params,e);e.length?this._engine.reportError(e):this._engine.afterFlush(()=>{Hx(t,n),Yx(t,a)})}return}const l=Tx(this._engine.playersByElement,t,[]);l.forEach(t=>{t.namespaceId==this.id&&t.triggerName==e&&t.queued&&t.destroy()});let d=r.matchTransition(u.value,o.value,t,o.params),c=!1;if(!d){if(!a)return;d=r.fallbackTransition,c=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:e,transition:d,fromState:u,toState:o,player:i,isFallbackTransition:c}),c||(K_(t,"ng-animate-queued"),i.onStart(()=>{$_(t,"ng-animate-queued")})),i.onDone(()=>{let e=this.players.indexOf(i);e>=0&&this.players.splice(e,1);const n=this._engine.playersByElement.get(t);if(n){let t=n.indexOf(i);t>=0&&n.splice(t,1)}}),this.players.push(i),l.push(i),i}deregister(t){delete this._triggers[t],this._engine.statesByElement.forEach((e,n)=>{delete e[t]}),this._elementListeners.forEach((e,n)=>{this._elementListeners.set(n,e.filter(e=>e.name!=t))})}clearElementCache(t){this._engine.statesByElement.delete(t),this._elementListeners.delete(t);const e=this._engine.playersByElement.get(t);e&&(e.forEach(t=>t.destroy()),this._engine.playersByElement.delete(t))}_signalRemovalForInnerTriggers(t,e,n=!1){this._engine.driver.query(t,".ng-trigger",!0).forEach(t=>{if(t.__ng_removed)return;const n=this._engine.fetchNamespacesByElement(t);n.size?n.forEach(n=>n.triggerLeaveAnimation(t,e,!1,!0)):this.clearElementCache(t)})}triggerLeaveAnimation(t,e,n,a){const r=this._engine.statesByElement.get(t);if(r){const i=[];if(Object.keys(r).forEach(e=>{if(this._triggers[e]){const n=this.trigger(t,e,"void",a);n&&i.push(n)}}),i.length)return this._engine.markElementAsRemoved(this.id,t,!0,e),n&&mx(i).onDone(()=>this._engine.processLeaveNode(t)),!0}return!1}prepareLeaveAnimationListeners(t){const e=this._elementListeners.get(t);if(e){const n=new Set;e.forEach(e=>{const a=e.name;if(n.has(a))return;n.add(a);const r=this._triggers[a].fallbackTransition,i=this._engine.statesByElement.get(t)[a]||V_,s=new F_("void"),u=new z_(this.id,a,t);this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:a,transition:r,fromState:i,toState:s,player:u,isFallbackTransition:!0})})}}removeNode(t,e){const n=this._engine;if(t.childElementCount&&this._signalRemovalForInnerTriggers(t,e,!0),this.triggerLeaveAnimation(t,e,!0))return;let a=!1;if(n.totalAnimations){const e=n.players.length?n.playersByQueriedElement.get(t):[];if(e&&e.length)a=!0;else{let e=t;for(;e=e.parentNode;)if(n.statesByElement.get(e)){a=!0;break}}}this.prepareLeaveAnimationListeners(t),a?n.markElementAsRemoved(this.id,t,!1,e):(n.afterFlush(()=>this.clearElementCache(t)),n.destroyInnerAnimations(t),n._onRemovalComplete(t,e))}insertNode(t,e){K_(t,this._hostClassName)}drainQueuedTransitions(t){const e=[];return this._queue.forEach(n=>{const a=n.player;if(a.destroyed)return;const r=n.element,i=this._elementListeners.get(r);i&&i.forEach(e=>{if(e.name==n.triggerName){const a=_x(r,n.triggerName,n.fromState.value,n.toState.value);a._data=t,vx(n.player,e.phase,a,e.callback)}}),a.markedForDestroy?this._engine.afterFlush(()=>{a.destroy()}):e.push(n)}),this._queue=[],e.sort((t,e)=>{const n=t.transition.ast.depCount,a=e.transition.ast.depCount;return 0==n||0==a?n-a:this._engine.driver.containsElement(t.element,e.element)?1:-1})}destroy(t){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,t)}elementContainsData(t){let e=!1;return this._elementListeners.has(t)&&(e=!0),e=!!this._queue.find(e=>e.element===t)||e,e}}class B_{constructor(t,e,n){this.bodyNode=t,this.driver=e,this._normalizer=n,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(t,e)=>{}}_onRemovalComplete(t,e){this.onRemovalComplete(t,e)}get queuedPlayers(){const t=[];return this._namespaceList.forEach(e=>{e.players.forEach(e=>{e.queued&&t.push(e)})}),t}createNamespace(t,e){const n=new G_(t,e,this);return e.parentNode?this._balanceNamespaceList(n,e):(this.newHostElements.set(e,n),this.collectEnterElement(e)),this._namespaceLookup[t]=n}_balanceNamespaceList(t,e){const n=this._namespaceList.length-1;if(n>=0){let a=!1;for(let r=n;r>=0;r--)if(this.driver.containsElement(this._namespaceList[r].hostElement,e)){this._namespaceList.splice(r+1,0,t),a=!0;break}a||this._namespaceList.splice(0,0,t)}else this._namespaceList.push(t);return this.namespacesByHostElement.set(e,t),t}register(t,e){let n=this._namespaceLookup[t];return n||(n=this.createNamespace(t,e)),n}registerTrigger(t,e,n){let a=this._namespaceLookup[t];a&&a.register(e,n)&&this.totalAnimations++}destroy(t,e){if(!t)return;const n=this._fetchNamespace(t);this.afterFlush(()=>{this.namespacesByHostElement.delete(n.hostElement),delete this._namespaceLookup[t];const e=this._namespaceList.indexOf(n);e>=0&&this._namespaceList.splice(e,1)}),this.afterFlushAnimationsDone(()=>n.destroy(e))}_fetchNamespace(t){return this._namespaceLookup[t]}fetchNamespacesByElement(t){const e=new Set,n=this.statesByElement.get(t);if(n){const t=Object.keys(n);for(let a=0;a<t.length;a++){const r=n[t[a]].namespaceId;if(r){const t=this._fetchNamespace(r);t&&e.add(t)}}}return e}trigger(t,e,n,a){if(Y_(e)){const r=this._fetchNamespace(t);if(r)return r.trigger(e,n,a),!0}return!1}insertNode(t,e,n,a){if(!Y_(e))return;const r=e.__ng_removed;if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const t=this.collectedLeaveElements.indexOf(e);t>=0&&this.collectedLeaveElements.splice(t,1)}if(t){const a=this._fetchNamespace(t);a&&a.insertNode(e,n)}a&&this.collectEnterElement(e)}collectEnterElement(t){this.collectedEnterElements.push(t)}markElementAsDisabled(t,e){e?this.disabledNodes.has(t)||(this.disabledNodes.add(t),K_(t,"ng-animate-disabled")):this.disabledNodes.has(t)&&(this.disabledNodes.delete(t),$_(t,"ng-animate-disabled"))}removeNode(t,e,n,a){if(Y_(e)){const r=t?this._fetchNamespace(t):null;if(r?r.removeNode(e,a):this.markElementAsRemoved(t,e,!1,a),n){const n=this.namespacesByHostElement.get(e);n&&n.id!==t&&n.removeNode(e,a)}}else this._onRemovalComplete(e,a)}markElementAsRemoved(t,e,n,a){this.collectedLeaveElements.push(e),e.__ng_removed={namespaceId:t,setForRemoval:a,hasAnimation:n,removedBeforeQueried:!1}}listen(t,e,n,a,r){return Y_(e)?this._fetchNamespace(t).listen(e,n,a,r):()=>{}}_buildInstruction(t,e,n,a,r){return t.transition.build(this.driver,t.element,t.fromState.value,t.toState.value,n,a,t.fromState.options,t.toState.options,e,r)}destroyInnerAnimations(t){let e=this.driver.query(t,".ng-trigger",!0);e.forEach(t=>this.destroyActiveAnimationsForElement(t)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(t,".ng-animating",!0),e.forEach(t=>this.finishActiveQueriedAnimationOnElement(t)))}destroyActiveAnimationsForElement(t){const e=this.playersByElement.get(t);e&&e.forEach(t=>{t.queued?t.markedForDestroy=!0:t.destroy()})}finishActiveQueriedAnimationOnElement(t){const e=this.playersByQueriedElement.get(t);e&&e.forEach(t=>t.finish())}whenRenderingDone(){return new Promise(t=>{if(this.players.length)return mx(this.players).onDone(()=>t());t()})}processLeaveNode(t){const e=t.__ng_removed;if(e&&e.setForRemoval){if(t.__ng_removed=q_,e.namespaceId){this.destroyInnerAnimations(t);const n=this._fetchNamespace(e.namespaceId);n&&n.clearElementCache(t)}this._onRemovalComplete(t,e.setForRemoval)}this.driver.matchesElement(t,".ng-animate-disabled")&&this.markElementAsDisabled(t,!1),this.driver.query(t,".ng-animate-disabled",!0).forEach(t=>{this.markElementAsDisabled(t,!1)})}flush(t=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((t,e)=>this._balanceNamespaceList(t,e)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let n=0;n<this.collectedEnterElements.length;n++)K_(this.collectedEnterElements[n],"ng-star-inserted");if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){const n=[];try{e=this._flushAnimations(n,t)}finally{for(let t=0;t<n.length;t++)n[t]()}}else for(let n=0;n<this.collectedLeaveElements.length;n++)this.processLeaveNode(this.collectedLeaveElements[n]);if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(t=>t()),this._flushFns=[],this._whenQuietFns.length){const t=this._whenQuietFns;this._whenQuietFns=[],e.length?mx(e).onDone(()=>{t.forEach(t=>t())}):t.forEach(t=>t())}}reportError(t){throw new Error("Unable to process animations due to the following failed trigger transitions\n "+t.join("\n"))}_flushAnimations(t,e){const n=new p_,a=[],r=new Map,i=[],s=new Map,u=new Map,o=new Map,l=new Set;this.disabledNodes.forEach(t=>{l.add(t);const e=this.driver.query(t,".ng-animate-queued",!0);for(let n=0;n<e.length;n++)l.add(e[n])});const d=this.bodyNode,c=Array.from(this.statesByElement.keys()),f=W_(c,this.collectedEnterElements),h=new Map;let g=0;f.forEach((t,e)=>{const n="ng-enter"+g++;h.set(e,n),t.forEach(t=>K_(t,n))});const p=[],b=new Set,m=new Set;for(let A=0;A<this.collectedLeaveElements.length;A++){const t=this.collectedLeaveElements[A],e=t.__ng_removed;e&&e.setForRemoval&&(p.push(t),b.add(t),e.hasAnimation?this.driver.query(t,".ng-star-inserted",!0).forEach(t=>b.add(t)):m.add(t))}const y=new Map,v=W_(c,Array.from(b));v.forEach((t,e)=>{const n="ng-leave"+g++;y.set(e,n),t.forEach(t=>K_(t,n))}),t.push(()=>{f.forEach((t,e)=>{const n=h.get(e);t.forEach(t=>$_(t,n))}),v.forEach((t,e)=>{const n=y.get(e);t.forEach(t=>$_(t,n))}),p.forEach(t=>{this.processLeaveNode(t)})});const x=[],_=[];for(let A=this._namespaceList.length-1;A>=0;A--)this._namespaceList[A].drainQueuedTransitions(e).forEach(t=>{const e=t.player,r=t.element;if(x.push(e),this.collectedEnterElements.length){const t=r.__ng_removed;if(t&&t.setForMove)return void e.destroy()}const l=!d||!this.driver.containsElement(d,r),c=y.get(r),f=h.get(r),g=this._buildInstruction(t,n,f,c,l);if(g.errors&&g.errors.length)_.push(g);else{if(l)return e.onStart(()=>Hx(r,g.fromStyles)),e.onDestroy(()=>Yx(r,g.toStyles)),void a.push(e);if(t.isFallbackTransition)return e.onStart(()=>Hx(r,g.fromStyles)),e.onDestroy(()=>Yx(r,g.toStyles)),void a.push(e);g.timelines.forEach(t=>t.stretchStartingKeyframe=!0),n.append(r,g.timelines),i.push({instruction:g,player:e,element:r}),g.queriedElements.forEach(t=>Tx(s,t,[]).push(e)),g.preStyleProps.forEach((t,e)=>{const n=Object.keys(t);if(n.length){let t=u.get(e);t||u.set(e,t=new Set),n.forEach(e=>t.add(e))}}),g.postStyleProps.forEach((t,e)=>{const n=Object.keys(t);let a=o.get(e);a||o.set(e,a=new Set),n.forEach(t=>a.add(t))})}});if(_.length){const t=[];_.forEach(e=>{t.push(`@${e.triggerName} has failed due to:\n`),e.errors.forEach(e=>t.push(`- ${e}\n`))}),x.forEach(t=>t.destroy()),this.reportError(t)}const T=new Map,w=new Map;i.forEach(t=>{const e=t.element;n.has(e)&&(w.set(e,e),this._beforeAnimationBuild(t.player.namespaceId,t.instruction,T))}),a.forEach(t=>{const e=t.element;this._getPreviousPlayers(e,!1,t.namespaceId,t.triggerName,null).forEach(t=>{Tx(T,e,[]).push(t),t.destroy()})});const O=p.filter(t=>Z_(t,u,o)),S=new Map;U_(S,this.driver,m,o,W.a).forEach(t=>{Z_(t,u,o)&&O.push(t)});const I=new Map;f.forEach((t,e)=>{U_(I,this.driver,new Set(t),u,W.l)}),O.forEach(t=>{const e=S.get(t),n=I.get(t);S.set(t,Object.assign({},e,n))});const N=[],C=[],R={};i.forEach(t=>{const{element:e,player:i,instruction:s}=t;if(n.has(e)){if(l.has(e))return i.onDestroy(()=>Yx(e,s.toStyles)),i.disabled=!0,i.overrideTotalTime(s.totalTime),void a.push(i);let t=R;if(w.size>1){let n=e;const a=[];for(;n=n.parentNode;){const e=w.get(n);if(e){t=e;break}a.push(n)}a.forEach(e=>w.set(e,t))}const n=this._buildAnimation(i.namespaceId,s,T,r,I,S);if(i.setRealPlayer(n),t===R)N.push(i);else{const e=this.playersByElement.get(t);e&&e.length&&(i.parentPlayer=mx(e)),a.push(i)}}else Hx(e,s.fromStyles),i.onDestroy(()=>Yx(e,s.toStyles)),C.push(i),l.has(e)&&a.push(i)}),C.forEach(t=>{const e=r.get(t.element);if(e&&e.length){const n=mx(e);t.setRealPlayer(n)}}),a.forEach(t=>{t.parentPlayer?t.syncPlayerEvents(t.parentPlayer):t.destroy()});for(let A=0;A<p.length;A++){const t=p[A],e=t.__ng_removed;if($_(t,"ng-leave"),e&&e.hasAnimation)continue;let n=[];if(s.size){let e=s.get(t);e&&e.length&&n.push(...e);let a=this.driver.query(t,".ng-animating",!0);for(let t=0;t<a.length;t++){let e=s.get(a[t]);e&&e.length&&n.push(...e)}}const a=n.filter(t=>!t.destroyed);a.length?J_(this,t,a):this.processLeaveNode(t)}return p.length=0,N.forEach(t=>{this.players.push(t),t.onDone(()=>{t.destroy();const e=this.players.indexOf(t);this.players.splice(e,1)}),t.play()}),N}elementContainsData(t,e){let n=!1;const a=e.__ng_removed;return a&&a.setForRemoval&&(n=!0),this.playersByElement.has(e)&&(n=!0),this.playersByQueriedElement.has(e)&&(n=!0),this.statesByElement.has(e)&&(n=!0),this._fetchNamespace(t).elementContainsData(e)||n}afterFlush(t){this._flushFns.push(t)}afterFlushAnimationsDone(t){this._whenQuietFns.push(t)}_getPreviousPlayers(t,e,n,a,r){let i=[];if(e){const e=this.playersByQueriedElement.get(t);e&&(i=e)}else{const e=this.playersByElement.get(t);if(e){const t=!r||"void"==r;e.forEach(e=>{e.queued||(t||e.triggerName==a)&&i.push(e)})}}return(n||a)&&(i=i.filter(t=>!(n&&n!=t.namespaceId||a&&a!=t.triggerName))),i}_beforeAnimationBuild(t,e,n){const a=e.element,r=e.isRemovalTransition?void 0:t,i=e.isRemovalTransition?void 0:e.triggerName;for(const s of e.timelines){const t=s.element,u=t!==a,o=Tx(n,t,[]);this._getPreviousPlayers(t,u,r,i,e.toState).forEach(t=>{const e=t.getRealPlayer();e.beforeDestroy&&e.beforeDestroy(),t.destroy(),o.push(t)})}Hx(a,e.fromStyles)}_buildAnimation(t,e,n,a,r,i){const s=e.triggerName,u=e.element,o=[],l=new Set,d=new Set,c=e.timelines.map(e=>{const c=e.element;l.add(c);const f=c.__ng_removed;if(f&&f.removedBeforeQueried)return new W.d(e.duration,e.delay);const h=c!==u,g=function(t){const e=[];return function t(e,n){for(let a=0;a<e.length;a++){const r=e[a];r instanceof W.k?t(r.players,n):n.push(r)}}(t,e),e}((n.get(c)||M_).map(t=>t.getRealPlayer())).filter(t=>!!t.element&&t.element===c),p=r.get(c),b=i.get(c),m=yx(0,this._normalizer,0,e.keyframes,p,b),y=this._buildPlayer(e,m,g);if(e.subTimeline&&a&&d.add(c),h){const e=new z_(t,s,c);e.setRealPlayer(y),o.push(e)}return y});o.forEach(t=>{Tx(this.playersByQueriedElement,t.element,[]).push(t),t.onDone(()=>function(t,e,n){let a;if(t instanceof Map){if(a=t.get(e),a){if(a.length){const t=a.indexOf(n);a.splice(t,1)}0==a.length&&t.delete(e)}}else if(a=t[e],a){if(a.length){const t=a.indexOf(n);a.splice(t,1)}0==a.length&&delete t[e]}return a}(this.playersByQueriedElement,t.element,t))}),l.forEach(t=>K_(t,"ng-animating"));const f=mx(c);return f.onDestroy(()=>{l.forEach(t=>$_(t,"ng-animating")),Yx(u,e.toStyles)}),d.forEach(t=>{Tx(a,t,[]).push(f)}),f}_buildPlayer(t,e,n){return e.length>0?this.driver.animate(t.element,e,t.duration,t.delay,t.easing,n):new W.d(t.duration,t.delay)}}class z_{constructor(t,e,n){this.namespaceId=t,this.triggerName=e,this.element=n,this._player=new W.d,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(t){this._containsRealPlayer||(this._player=t,Object.keys(this._queuedCallbacks).forEach(e=>{this._queuedCallbacks[e].forEach(n=>vx(t,e,void 0,n))}),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(t.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(t){this.totalTime=t}syncPlayerEvents(t){const e=this._player;e.triggerCallback&&t.onStart(()=>e.triggerCallback("start")),t.onDone(()=>this.finish()),t.onDestroy(()=>this.destroy())}_queueEvent(t,e){Tx(this._queuedCallbacks,t,[]).push(e)}onDone(t){this.queued&&this._queueEvent("done",t),this._player.onDone(t)}onStart(t){this.queued&&this._queueEvent("start",t),this._player.onStart(t)}onDestroy(t){this.queued&&this._queueEvent("destroy",t),this._player.onDestroy(t)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(t){this.queued||this._player.setPosition(t)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(t){const e=this._player;e.triggerCallback&&e.triggerCallback(t)}}function Y_(t){return t&&1===t.nodeType}function H_(t,e){const n=t.style.display;return t.style.display=null!=e?e:"none",n}function U_(t,e,n,a,r){const i=[];n.forEach(t=>i.push(H_(t)));const s=[];a.forEach((n,a)=>{const i={};n.forEach(t=>{const n=i[t]=e.computeStyle(a,t,r);n&&0!=n.length||(a.__ng_removed=j_,s.push(a))}),t.set(a,i)});let u=0;return n.forEach(t=>H_(t,i[u++])),s}function W_(t,e){const n=new Map;if(t.forEach(t=>n.set(t,[])),0==e.length)return n;const a=new Set(e),r=new Map;return e.forEach(t=>{const e=function t(e){if(!e)return 1;let i=r.get(e);if(i)return i;const s=e.parentNode;return i=n.has(s)?s:a.has(s)?1:t(s),r.set(e,i),i}(t);1!==e&&n.get(e).push(t)}),n}function K_(t,e){if(t.classList)t.classList.add(e);else{let n=t.$$classes;n||(n=t.$$classes={}),n[e]=!0}}function $_(t,e){if(t.classList)t.classList.remove(e);else{let n=t.$$classes;n&&delete n[e]}}function J_(t,e,n){mx(n).onDone(()=>t.processLeaveNode(e))}function Z_(t,e,n){const a=n.get(t);if(!a)return!1;let r=e.get(t);return r?a.forEach(t=>r.add(t)):e.set(t,a),n.delete(t),!0}class Q_{constructor(t,e,n){this.bodyNode=t,this._driver=e,this._triggerCache={},this.onRemovalComplete=(t,e)=>{},this._transitionEngine=new B_(t,e,n),this._timelineEngine=new P_(t,e,n),this._transitionEngine.onRemovalComplete=(t,e)=>this.onRemovalComplete(t,e)}registerTrigger(t,e,n,a,r){const i=t+"-"+a;let s=this._triggerCache[i];if(!s){const t=[],e=o_(this._driver,r,t);if(t.length)throw new Error(`The animation trigger "${a}" has failed to build due to the following errors:\n - ${t.join("\n - ")}`);s=function(t,e){return new E_(t,e)}(a,e),this._triggerCache[i]=s}this._transitionEngine.registerTrigger(e,a,s)}register(t,e){this._transitionEngine.register(t,e)}destroy(t,e){this._transitionEngine.destroy(t,e)}onInsert(t,e,n,a){this._transitionEngine.insertNode(t,e,n,a)}onRemove(t,e,n,a){this._transitionEngine.removeNode(t,e,a||!1,n)}disableAnimations(t,e){this._transitionEngine.markElementAsDisabled(t,e)}process(t,e,n,a){if("@"==n.charAt(0)){const[t,r]=wx(n);this._timelineEngine.command(t,e,r,a)}else this._transitionEngine.trigger(t,e,n,a)}listen(t,e,n,a,r){if("@"==n.charAt(0)){const[t,a]=wx(n);return this._timelineEngine.listen(t,e,a,r)}return this._transitionEngine.listen(t,e,n,a,r)}flush(t=-1){this._transitionEngine.flush(t)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}function X_(t,e){let n=null,a=null;return Array.isArray(e)&&e.length?(n=eT(e[0]),e.length>1&&(a=eT(e[e.length-1]))):e&&(n=eT(e)),n||a?new tT(t,n,a):null}let tT=(()=>{class t{constructor(e,n,a){this._element=e,this._startStyles=n,this._endStyles=a,this._state=0;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r={}),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&Yx(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Yx(this._element,this._initialStyles),this._endStyles&&(Yx(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(Hx(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Hx(this._element,this._endStyles),this._endStyles=null),Yx(this._element,this._initialStyles),this._state=3)}}return t.initialStylesByElement=new WeakMap,t})();function eT(t){let e=null;const n=Object.keys(t);for(let a=0;a<n.length;a++){const r=n[a];nT(r)&&(e=e||{},e[r]=t[r])}return e}function nT(t){return"display"===t||"position"===t}class aT{constructor(t,e,n,a,r,i,s){this._element=t,this._name=e,this._duration=n,this._delay=a,this._easing=r,this._fillMode=i,this._onDoneFn=s,this._finished=!1,this._destroyed=!1,this._startTime=0,this._position=0,this._eventFn=t=>this._handleCallback(t)}apply(){!function(t,e){const n=lT(t,"").trim();n.length&&(function(t,e){let n=0;for(let a=0;a<t.length;a++)","===t.charAt(a)&&n++}(n),e=`${n}, ${e}`),oT(t,"",e)}(this._element,`${this._duration}ms ${this._easing} ${this._delay}ms 1 normal ${this._fillMode} ${this._name}`),uT(this._element,this._eventFn,!1),this._startTime=Date.now()}pause(){rT(this._element,this._name,"paused")}resume(){rT(this._element,this._name,"running")}setPosition(t){const e=iT(this._element,this._name);this._position=t*this._duration,oT(this._element,"Delay",`-${this._position}ms`,e)}getPosition(){return this._position}_handleCallback(t){const e=t._ngTestManualTimestamp||Date.now(),n=1e3*parseFloat(t.elapsedTime.toFixed(3));t.animationName==this._name&&Math.max(e-this._startTime,0)>=this._delay&&n>=this._duration&&this.finish()}finish(){this._finished||(this._finished=!0,this._onDoneFn(),uT(this._element,this._eventFn,!0))}destroy(){this._destroyed||(this._destroyed=!0,this.finish(),function(t,e){const n=lT(t,"").split(","),a=sT(n,e);a>=0&&(n.splice(a,1),oT(t,"",n.join(",")))}(this._element,this._name))}}function rT(t,e,n){oT(t,"PlayState",n,iT(t,e))}function iT(t,e){const n=lT(t,"");return n.indexOf(",")>0?sT(n.split(","),e):sT([n],e)}function sT(t,e){for(let n=0;n<t.length;n++)if(t[n].indexOf(e)>=0)return n;return-1}function uT(t,e,n){n?t.removeEventListener("animationend",e):t.addEventListener("animationend",e)}function oT(t,e,n,a){const r="animation"+e;if(null!=a){const e=t.style[r];if(e.length){const t=e.split(",");t[a]=n,n=t.join(",")}}t.style[r]=n}function lT(t,e){return t.style["animation"+e]}class dT{constructor(t,e,n,a,r,i,s,u){this.element=t,this.keyframes=e,this.animationName=n,this._duration=a,this._delay=r,this._finalStyles=s,this._specialStyles=u,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this.currentSnapshot={},this._state=0,this.easing=i||"linear",this.totalTime=a+r,this._buildStyler()}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}destroy(){this.init(),this._state>=4||(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}_flushDoneFns(){this._onDoneFns.forEach(t=>t()),this._onDoneFns=[]}_flushStartFns(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}finish(){this.init(),this._state>=3||(this._state=3,this._styler.finish(),this._flushStartFns(),this._specialStyles&&this._specialStyles.finish(),this._flushDoneFns())}setPosition(t){this._styler.setPosition(t)}getPosition(){return this._styler.getPosition()}hasStarted(){return this._state>=2}init(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())}play(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2,this._specialStyles&&this._specialStyles.start()),this._styler.resume()}pause(){this.init(),this._styler.pause()}restart(){this.reset(),this.play()}reset(){this._styler.destroy(),this._buildStyler(),this._styler.apply()}_buildStyler(){this._styler=new aT(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",()=>this.finish())}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}beforeDestroy(){this.init();const t={};if(this.hasStarted()){const e=this._state>=3;Object.keys(this._finalStyles).forEach(n=>{"offset"!=n&&(t[n]=e?this._finalStyles[n]:n_(this.element,n))})}this.currentSnapshot=t}}class cT extends W.d{constructor(t,e){super(),this.element=t,this._startingStyles={},this.__initialized=!1,this._styles=Dx(e)}init(){!this.__initialized&&this._startingStyles&&(this.__initialized=!0,Object.keys(this._styles).forEach(t=>{this._startingStyles[t]=this.element.style[t]}),super.init())}play(){this._startingStyles&&(this.init(),Object.keys(this._styles).forEach(t=>this.element.style.setProperty(t,this._styles[t])),super.play())}destroy(){this._startingStyles&&(Object.keys(this._startingStyles).forEach(t=>{const e=this._startingStyles[t];e?this.element.style.setProperty(t,e):this.element.style.removeProperty(t)}),this._startingStyles=null,super.destroy())}}class fT{constructor(){this._count=0,this._head=document.querySelector("head"),this._warningIssued=!1}validateStyleProperty(t){return Ax(t)}matchesElement(t,e){return kx(t,e)}containsElement(t,e){return Ex(t,e)}query(t,e,n){return Lx(t,e,n)}computeStyle(t,e,n){return window.getComputedStyle(t)[e]}buildKeyframeElement(t,e,n){n=n.map(t=>Dx(t));let a=`@keyframes ${e} {\n`,r="";n.forEach(t=>{r=" ";const e=parseFloat(t.offset);a+=`${r}${100*e}% {\n`,r+=" ",Object.keys(t).forEach(e=>{const n=t[e];switch(e){case"offset":return;case"easing":return void(n&&(a+=`${r}animation-timing-function: ${n};\n`));default:return void(a+=`${r}${e}: ${n};\n`)}}),a+=r+"}\n"}),a+="}\n";const i=document.createElement("style");return i.innerHTML=a,i}animate(t,e,n,a,r,i=[],s){s&&this._notifyFaultyScrubber();const u=i.filter(t=>t instanceof dT),o={};Xx(n,a)&&u.forEach(t=>{let e=t.currentSnapshot;Object.keys(e).forEach(t=>o[t]=e[t])});const l=function(t){let e={};return t&&(Array.isArray(t)?t:[t]).forEach(t=>{Object.keys(t).forEach(n=>{"offset"!=n&&"easing"!=n&&(e[n]=t[n])})}),e}(e=t_(t,e,o));if(0==n)return new cT(t,l);const d="gen_css_kf_"+this._count++,c=this.buildKeyframeElement(t,d,e);document.querySelector("head").appendChild(c);const f=X_(t,e),h=new dT(t,e,d,n,a,r,l,f);return h.onDestroy(()=>{var t;(t=c).parentNode.removeChild(t)}),h}_notifyFaultyScrubber(){this._warningIssued||(console.warn("@angular/animations: please load the web-animations.js polyfill to allow programmatic access...\n","  visit http://bit.ly/IWukam to learn more about using the web-animation-js polyfill."),this._warningIssued=!0)}}class hT{constructor(t,e,n,a){this.element=t,this.keyframes=e,this.options=n,this._specialStyles=a,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this.time=0,this.parentPlayer=null,this.currentSnapshot={},this._duration=n.duration,this._delay=n.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const t=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,t,this.options),this._finalKeyframe=t.length?t[t.length-1]:{},this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_triggerWebAnimation(t,e,n){return t.animate(e,n)}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(t=>t()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}setPosition(t){this.domPlayer.currentTime=t*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const t={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(e=>{"offset"!=e&&(t[e]=this._finished?this._finalKeyframe[e]:n_(this.element,e))}),this.currentSnapshot=t}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}class gT{constructor(){this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(pT().toString()),this._cssKeyframesDriver=new fT}validateStyleProperty(t){return Ax(t)}matchesElement(t,e){return kx(t,e)}containsElement(t,e){return Ex(t,e)}query(t,e,n){return Lx(t,e,n)}computeStyle(t,e,n){return window.getComputedStyle(t)[e]}overrideWebAnimationsSupport(t){this._isNativeImpl=t}animate(t,e,n,a,r,i=[],s){if(!s&&!this._isNativeImpl)return this._cssKeyframesDriver.animate(t,e,n,a,r,i);const u={duration:n,delay:a,fill:0==a?"both":"forwards"};r&&(u.easing=r);const o={},l=i.filter(t=>t instanceof hT);Xx(n,a)&&l.forEach(t=>{let e=t.currentSnapshot;Object.keys(e).forEach(t=>o[t]=e[t])});const d=X_(t,e=t_(t,e=e.map(t=>Gx(t,!1)),o));return new hT(t,e,u,d)}}function pT(){return"undefined"!=typeof window&&void 0!==window.document&&Element.prototype.animate||{}}class bT extends W.b{constructor(t,e){super(),this._nextAnimationId=0,this._renderer=t.createRenderer(e.body,{id:"0",encapsulation:s.ViewEncapsulation.None,styles:[],data:{animation:[]}})}build(t){const e=this._nextAnimationId.toString();this._nextAnimationId++;const n=Array.isArray(t)?Object(W.f)(t):t;return vT(this._renderer,null,e,"register",[n]),new mT(e,this._renderer)}}class mT extends W.c{constructor(t,e){super(),this._id=t,this._renderer=e}create(t,e){return new yT(this._id,t,e||{},this._renderer)}}class yT{constructor(t,e,n,a){this.id=t,this.element=e,this._renderer=a,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",n)}_listen(t,e){return this._renderer.listen(this.element,`@@${this.id}:${t}`,e)}_command(t,...e){return vT(this._renderer,this.element,this.id,t,e)}onDone(t){this._listen("done",t)}onStart(t){this._listen("start",t)}onDestroy(t){this._listen("destroy",t)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset")}setPosition(t){this._command("setPosition",t)}getPosition(){return 0}}function vT(t,e,n,a,r){return t.setProperty(e,`@@${n}:${a}`,r)}class xT{constructor(t,e,n){this.delegate=t,this.engine=e,this._zone=n,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),e.onRemovalComplete=(t,e)=>{e&&e.parentNode(t)&&e.removeChild(t.parentNode,t)}}createRenderer(t,e){const n=this.delegate.createRenderer(t,e);if(!(t&&e&&e.data&&e.data.animation)){let t=this._rendererCache.get(n);return t||(t=new _T("",n,this.engine),this._rendererCache.set(n,t)),t}const a=e.id,r=e.id+"-"+this._currentId;return this._currentId++,this.engine.register(r,t),e.data.animation.forEach(e=>this.engine.registerTrigger(a,r,t,e.name,e)),new TT(this,r,n,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(t,e,n){t>=0&&t<this._microtaskId?this._zone.run(()=>e(n)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(t=>{const[e,n]=t;e(n)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([e,n]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}class _T{constructor(t,e,n){this.namespaceId=t,this.delegate=e,this.engine=n,this.destroyNode=this.delegate.destroyNode?t=>e.destroyNode(t):null}get data(){return this.delegate.data}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy()}createElement(t,e){return this.delegate.createElement(t,e)}createComment(t){return this.delegate.createComment(t)}createText(t){return this.delegate.createText(t)}appendChild(t,e){this.delegate.appendChild(t,e),this.engine.onInsert(this.namespaceId,e,t,!1)}insertBefore(t,e,n){this.delegate.insertBefore(t,e,n),this.engine.onInsert(this.namespaceId,e,t,!0)}removeChild(t,e,n){this.engine.onRemove(this.namespaceId,e,this.delegate,n)}selectRootElement(t,e){return this.delegate.selectRootElement(t,e)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setAttribute(t,e,n,a){this.delegate.setAttribute(t,e,n,a)}removeAttribute(t,e,n){this.delegate.removeAttribute(t,e,n)}addClass(t,e){this.delegate.addClass(t,e)}removeClass(t,e){this.delegate.removeClass(t,e)}setStyle(t,e,n,a){this.delegate.setStyle(t,e,n,a)}removeStyle(t,e,n){this.delegate.removeStyle(t,e,n)}setProperty(t,e,n){"@"==e.charAt(0)&&"@.disabled"==e?this.disableAnimations(t,!!n):this.delegate.setProperty(t,e,n)}setValue(t,e){this.delegate.setValue(t,e)}listen(t,e,n){return this.delegate.listen(t,e,n)}disableAnimations(t,e){this.engine.disableAnimations(t,e)}}class TT extends _T{constructor(t,e,n,a){super(e,n,a),this.factory=t,this.namespaceId=e}setProperty(t,e,n){"@"==e.charAt(0)?"."==e.charAt(1)&&"@.disabled"==e?this.disableAnimations(t,n=void 0===n||!!n):this.engine.process(this.namespaceId,t,e.substr(1),n):this.delegate.setProperty(t,e,n)}listen(t,e,n){if("@"==e.charAt(0)){const a=function(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(t);let r=e.substr(1),i="";return"@"!=r.charAt(0)&&([r,i]=function(t){const e=t.indexOf(".");return[t.substring(0,e),t.substr(e+1)]}(r)),this.engine.listen(this.namespaceId,a,r,i,t=>{this.factory.scheduleListenerCallback(t._data||-1,n,t)})}return this.delegate.listen(t,e,n)}}class wT extends Q_{constructor(t,e,n){super(t.body,e,n)}}function OT(){return"function"==typeof pT()?new gT:new fT}function ST(){return new I_}function IT(t,e,n){return new xT(t,e,n)}const NT=new s.InjectionToken("AnimationModuleType");class CT{}var RT=n("Avrn");let AT=(()=>{class t{constructor(t,e){this.router=t,this.authStorageService=e}canActivate(){return!(this.authStorageService.isLoggedIn()&&!this.authStorageService.isSSO()&&this.authStorageService.getPwdUpdateRequired()&&(this.router.navigate(["/login-change-password"]),1))}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Et.m),s["ɵɵinject"](Z.a))},token:t,providedIn:"root"}),t})();var kT=n("Vhfg");let ET=(()=>{class t{constructor(t,e){this.http=t,this.router=e}canActivate(t){return this.doCheck(t)}canActivateChild(t){return this.doCheck(t)}doCheck(e){if(e.url.length>0&&t.WHITELIST.includes(e.url[0].path))return Object(_e.a)(!0);const n=e.data.moduleStatusGuardConfig;return this.http.get(`api/${n.apiPath}/status`).pipe(Object(Qe.a)(t=>(t.available||this.router.navigate([n.redirectTo,t.message||""]),t.available)),Object(Oe.a)(()=>(this.router.navigate([n.redirectTo]),Object(_e.a)(!1))))}}return t.WHITELIST=["501"],t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c),s["ɵɵinject"](Et.m))},token:t,providedIn:"root"}),t})(),LT=(()=>{class t{constructor(t,e){this.authStorageService=t,this.router=e}canActivate(){return!this.authStorageService.isSSO()||(this.router.navigate(["404"]),!1)}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Z.a),s["ɵɵinject"](Et.m))},token:t,providedIn:"root"}),t})();class DT extends oa{resolve(t){const e=[],n=t.queryParams.fromLink||null;let a="";switch(n){case"/monitor":a="Monitors";break;case"/hosts":a="Hosts"}return e.push({text:"Cluster",path:null}),e.push({text:a,path:n}),e.push({text:"Performance Counters",path:""}),e}}class PT extends oa{resolve(t){const e=t.params.name;return[{text:X.startCase(e)+"/Edit",path:e}]}}const MT={breadcrumbs:"Cluster/Hosts"},qT={breadcrumbs:St.a.CREATE},jT={breadcrumbs:"Cluster/Monitors"},FT={breadcrumbs:"Cluster/Services"},VT={breadcrumbs:St.a.CREATE},GT={breadcrumbs:"Cluster/Inventory"},BT={breadcrumbs:"Cluster/OSDs"},zT={breadcrumbs:St.a.CREATE},YT={breadcrumbs:"Cluster/Configuration"},HT={breadcrumbs:St.a.EDIT},UT={breadcrumbs:"Cluster/CRUSH map"},WT={breadcrumbs:"Cluster/Logs"},KT={breadcrumbs:"Telemetry configuration"},$T={breadcrumbs:"Cluster/Monitoring"},JT={breadcrumbs:St.a.CREATE+" Silence"},ZT={breadcrumbs:St.a.CREATE},QT={breadcrumbs:St.a.EDIT},XT={breadcrumbs:St.a.RECREATE},tw={breadcrumbs:DT},ew={breadcrumbs:"Cluster/Manager Modules"},nw={breadcrumbs:PT},aw={breadcrumbs:"Pools"},rw=()=>Promise.all([n.e(1),n.e(6)]).then(n.bind(null,"nOaW")).then(t=>t.RoutedPoolModuleNgFactory),iw={breadcrumbs:!0,text:"Block",path:null},sw=()=>Promise.all([n.e(1),n.e(5)]).then(n.bind(null,"J6Oi")).then(t=>t.RoutedBlockModuleNgFactory),uw={breadcrumbs:"Filesystems"},ow={moduleStatusGuardConfig:{apiPath:"rgw",redirectTo:"rgw/501"},breadcrumbs:!0,text:"Object Gateway",path:null},lw=()=>n.e(7).then(n.bind(null,"Znkk")).then(t=>t.RoutedRgwModuleNgFactory),dw={breadcrumbs:"User management",path:null},cw=()=>n.e(8).then(n.bind(null,"DY6s")).then(t=>t.RoutedAuthModuleNgFactory),fw={breadcrumbs:"User profile",path:null},hw={breadcrumbs:St.a.EDIT},gw={breadcrumbs:"NFS"},pw={moduleStatusGuardConfig:{apiPath:"nfs-ganesha",redirectTo:"nfs/501"},breadcrumbs:"NFS"},bw={breadcrumbs:St.a.CREATE},mw={breadcrumbs:St.a.EDIT};class yw{}var vw=n("yT6U"),xw=n("4DD9"),_w=n("+0ag"),Tw=n("IzCI"),ww=n("Dwqy"),Ow=n("uYzU"),Sw=n("nSDx"),Iw=n("SB+Q"),Nw=n("BQkM"),Cw=n("dEH0"),Rw=n("G1/K"),Aw=n("TJUb"),kw=n("efK2");class Ew{constructor(){this.closeOthers=!1,this.isAnimated=!1}}class Lw{static forRoot(){return{ngModule:Lw,providers:[Ew]}}}let Dw=(()=>{class t{constructor(t){this.http=t}jsError(t,e,n){return this.http.post("ui-api/logging/js-error",{url:t,message:e,stack:n})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](et.c))},token:t,providedIn:ue.a}),t})();class Pw{constructor(t){this.injector=t}handleError(t){const e=this.injector.get(Dw),n=window.location.href;throw e.jsError(n,t&&t.message,t&&t.stack).subscribe(),t}}var Mw=n("aHM3"),qw=n("9Xeq"),jw=n("yGOH"),Fw=n("bxSN"),Vw=n("V/fk"),Gw=n("ChqD"),Bw=n("PCNd"),zw=n("LceX");class Yw{}class Hw{}var Uw=n("G6Q+");class Ww{}var Kw=n("kJI8");class $w{}class Jw{}class Zw{}class Qw{}class Xw{}var tO=s["ɵcmf"](o,[l],(function(t){return s["ɵmod"]([s["ɵmpd"](512,s.ComponentFactoryResolver,s["ɵCodegenComponentFactoryResolver"],[[8,[x,_.a,wa,Kr,Us,du,mu,ku,Wo,xi,Hl,bd,Ed,Zd,fc,_f,Mf,lh,kh,Mh,Hh,bg,Xg,hp,yp,Ep,lm,gm,wm,Pm,Vm,Hm,Jm,ey,M,Y,ny.a,Zt.a,ay.a,ry.a,ry.b,iy.a,sy.a,uy.a,oy.a,ly.a,dy.a,dy.c,dy.b,dy.d,gy,Ay,bl,qy,Yy,Qy,cv,yv,jv,Kv,ex,ix,lx,hx]],[3,s.ComponentFactoryResolver],s.NgModuleRef]),s["ɵmpd"](4608,et.j,et.p,[i.DOCUMENT,s.PLATFORM_ID,et.n]),s["ɵmpd"](4608,et.q,et.q,[et.j,et.o]),s["ɵmpd"](4608,Z.a,Z.a,[]),s["ɵmpd"](5120,et.a,(function(t,e,n,a){return[t,new px(e,n,a)]}),[et.q,Et.m,Z.a,bt.a]),s["ɵmpd"](4608,et.m,et.m,[]),s["ɵmpd"](6144,et.k,null,[et.m]),s["ɵmpd"](4608,et.i,et.i,[et.k]),s["ɵmpd"](6144,et.b,null,[et.i]),s["ɵmpd"](4608,et.g,et.l,[et.b,s.Injector]),s["ɵmpd"](4608,et.c,et.c,[et.g]),s["ɵmpd"](4352,s.LOCALE_ID,"en-US",[]),s["ɵmpd"](4608,i.NgLocalization,i.NgLocaleLocalization,[s.LOCALE_ID,[2,i["ɵangular_packages_common_common_a"]]]),s["ɵmpd"](5120,s["ɵangular_packages_core_core_ba"],s["ɵangular_packages_core_core_r"],[s.NgZone]),s["ɵmpd"](5120,s.APP_ID,s["ɵangular_packages_core_core_f"],[]),s["ɵmpd"](5120,s.IterableDiffers,s["ɵangular_packages_core_core_n"],[]),s["ɵmpd"](5120,s.KeyValueDiffers,s["ɵangular_packages_core_core_o"],[]),s["ɵmpd"](4608,ve.b,ve.k,[i.DOCUMENT]),s["ɵmpd"](6144,s.Sanitizer,null,[ve.b]),s["ɵmpd"](4608,ve.e,ve.g,[]),s["ɵmpd"](5120,ve.c,(function(t,e,n,a,r,i,s,u){return[new ve.i(t,e,n),new ve.n(a),new ve.m(r,i,s,u)]}),[i.DOCUMENT,s.NgZone,s.PLATFORM_ID,i.DOCUMENT,i.DOCUMENT,ve.e,s["ɵConsole"],[2,ve.f]]),s["ɵmpd"](4608,ve.d,ve.d,[ve.c,s.NgZone]),s["ɵmpd"](135680,ve.l,ve.l,[i.DOCUMENT]),s["ɵmpd"](4608,ve.j,ve.j,[ve.d,ve.l,s.APP_ID]),s["ɵmpd"](5120,Mx,OT,[]),s["ɵmpd"](5120,S_,ST,[]),s["ɵmpd"](4608,Q_,wT,[i.DOCUMENT,Mx,S_]),s["ɵmpd"](5120,s.RendererFactory2,IT,[ve.j,Q_,s.NgZone]),s["ɵmpd"](6144,ve.o,null,[ve.l]),s["ɵmpd"](4608,s.Testability,s.Testability,[s.NgZone]),s["ɵmpd"](4608,W.b,bT,[s.RendererFactory2,i.DOCUMENT]),s["ɵmpd"](5120,Et.a,Et.B,[Et.m]),s["ɵmpd"](4608,Et.g,Et.g,[]),s["ɵmpd"](6144,Et.h,null,[Et.g]),s["ɵmpd"](135680,Et.s,Et.s,[Et.m,s.NgModuleFactoryLoader,s.Compiler,s.Injector,Et.h]),s["ɵmpd"](4608,Et.f,Et.f,[]),s["ɵmpd"](5120,Et.G,Et.x,[Et.m,i.ViewportScroller,Et.i]),s["ɵmpd"](5120,Et.j,Et.E,[Et.C]),s["ɵmpd"](5120,s.APP_BOOTSTRAP_LISTENER,(function(t){return[t]}),[Et.j]),s["ɵmpd"](4608,PT,PT,[]),s["ɵmpd"](4608,DT,DT,[]),s["ɵmpd"](4608,K.D,K.D,[]),s["ɵmpd"](4608,K.h,K.h,[]),s["ɵmpd"](4608,vw.a,vw.a,[]),s["ɵmpd"](4608,xw.a,xw.a,[]),s["ɵmpd"](5120,s.TRANSLATIONS,u,[s.LOCALE_ID]),s["ɵmpd"](4608,fe.a,fe.a,[s.TRANSLATIONS_FORMAT,s.TRANSLATIONS,s.LOCALE_ID,[2,fe.b]]),s["ɵmpd"](4608,md.a,md.a,[fe.a]),s["ɵmpd"](4608,i.DatePipe,i.DatePipe,[s.LOCALE_ID]),s["ɵmpd"](4608,ks.a,ks.a,[]),s["ɵmpd"](4608,_w.a,_w.a,[]),s["ɵmpd"](4608,Ka.a,Ka.a,[]),s["ɵmpd"](4608,Fa.a,Fa.a,[Ka.a]),s["ɵmpd"](4608,Tw.a,Tw.a,[Ka.a]),s["ɵmpd"](4608,Va.a,Va.a,[Ka.a]),s["ɵmpd"](4608,ww.a,ww.a,[]),s["ɵmpd"](4608,Ow.a,Ow.a,[]),s["ɵmpd"](4608,Jo.a,Jo.a,[]),s["ɵmpd"](4608,rf.a,rf.a,[]),s["ɵmpd"](4608,He.a,He.a,[i.DatePipe]),s["ɵmpd"](4608,Sw.a,Sw.a,[]),s["ɵmpd"](4608,Iw.a,Iw.a,[]),s["ɵmpd"](4608,Pp.a,Pp.a,[]),s["ɵmpd"](4608,Nw.a,Nw.a,[]),s["ɵmpd"](4608,Cw.a,Cw.a,[]),s["ɵmpd"](4608,Rw.a,Rw.a,[fe.a]),s["ɵmpd"](4608,Xs.a,Xs.a,[]),s["ɵmpd"](4608,Aw.a,Aw.a,[]),s["ɵmpd"](4608,kw.a,kw.a,[]),s["ɵmpd"](4608,ye.a,ye.a,[ve.b]),s["ɵmpd"](4608,Qt.b,Qt.b,[]),s["ɵmpd"](4608,Ia.a,Ia.a,[]),s["ɵmpd"](4608,Na.a,Na.a,[s.NgZone,s.RendererFactory2,s.PLATFORM_ID]),s["ɵmpd"](4608,U.a,U.a,[s.ComponentFactoryResolver,s.NgZone,s.Injector,Na.a,s.ApplicationRef]),s["ɵmpd"](4608,Be.c,Be.c,[]),s["ɵmpd"](4608,ba.a,ba.a,[]),s["ɵmpd"](4608,Ct.b,Ct.b,[s.RendererFactory2,U.a]),s["ɵmpd"](4608,Wf.y,Wf.y,[i.DOCUMENT]),s["ɵmpd"](4608,Wf.r,Wf.r,[]),s["ɵmpd"](4608,Wf.a,Wf.a,[]),s["ɵmpd"](4608,H.f,H.f,[]),s["ɵmpd"](4608,RT.a,RT.a,[Et.m,Z.a]),s["ɵmpd"](4608,Sa.f,Sa.f,[]),s["ɵmpd"](4608,st.t,st.t,[]),s["ɵmpd"](4608,st.v,st.v,[]),s["ɵmpd"](4608,st.a,st.a,[]),s["ɵmpd"](4608,st.h,st.h,[]),s["ɵmpd"](4608,st.d,st.d,[]),s["ɵmpd"](4608,st.j,st.j,[]),s["ɵmpd"](4608,st.l,st.l,[]),s["ɵmpd"](4608,st.u,st.u,[st.v,st.l]),s["ɵmpd"](5120,O,A,[R]),s["ɵmpd"](4608,N,N,[O]),s["ɵmpd"](4608,Hu,Hu,[]),s["ɵmpd"](4608,Ec,Ec,[]),s["ɵmpd"](4608,gc,gc,[]),s["ɵmpd"](4608,Pc,Pc,[]),s["ɵmpd"](4608,ec.a,ec.a,[]),s["ɵmpd"](4608,Ew,Ew,[]),s["ɵmpd"](4608,Q.g,Q.g,[Q.b]),s["ɵmpd"](1073742336,et.e,et.e,[]),s["ɵmpd"](1073742336,et.d,et.d,[]),s["ɵmpd"](1073742336,i.CommonModule,i.CommonModule,[]),s["ɵmpd"](512,s.ErrorHandler,Pw,[s.Injector]),s["ɵmpd"](1024,s.NgProbeToken,(function(){return[Et.w()]}),[]),s["ɵmpd"](512,Et.C,Et.C,[s.Injector]),s["ɵmpd"](1024,s.APP_INITIALIZER,(function(t,e){return[ve.p(t),Et.D(e)]}),[[2,s.NgProbeToken],Et.C]),s["ɵmpd"](512,s.ApplicationInitStatus,s.ApplicationInitStatus,[[2,s.APP_INITIALIZER]]),s["ɵmpd"](131584,s.ApplicationRef,s.ApplicationRef,[s.NgZone,s["ɵConsole"],s.Injector,s.ErrorHandler,s.ComponentFactoryResolver,s.ApplicationInitStatus]),s["ɵmpd"](1073742336,s.ApplicationModule,s.ApplicationModule,[s.ApplicationRef]),s["ɵmpd"](1073742336,ve.a,ve.a,[[3,ve.a]]),s["ɵmpd"](1073742336,CT,CT,[]),s["ɵmpd"](1073742336,d.i,d.i,[]),s["ɵmpd"](1024,Et.v,Et.z,[[3,Et.m]]),s["ɵmpd"](512,Et.u,Et.c,[]),s["ɵmpd"](512,Et.b,Et.b,[]),s["ɵmpd"](256,Et.i,{useHash:!0,preloadingStrategy:Et.g},[]),s["ɵmpd"](1024,i.LocationStrategy,Et.y,[i.PlatformLocation,[2,i.APP_BASE_HREF],Et.i]),s["ɵmpd"](512,i.Location,i.Location,[i.LocationStrategy,i.PlatformLocation]),s["ɵmpd"](512,s.Compiler,s.Compiler,[]),s["ɵmpd"](512,s.NgModuleFactoryLoader,s.SystemJsNgModuleLoader,[s.Compiler,[2,s.SystemJsNgModuleLoaderConfig]]),s["ɵmpd"](1024,Et.k,(function(){return[[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"",component:va,canActivate:[RT.a,AT],canActivateChild:[RT.a,AT],children:[{path:"dashboard",component:Br},{path:"hosts",data:MT,children:[{path:"",component:Ms},{path:"create",component:nu,data:qT}]},{path:"monitor",component:fu,data:jT},{path:"services",data:FT,children:[{path:"",component:Su},{path:"create",component:ao,data:VT}]},{path:"inventory",component:gi,data:GT},{path:"osd",data:BT,children:[{path:"",component:Al},{path:"create",component:id,data:zT}]},{path:"configuration",data:YT,children:[{path:"",component:Sd},{path:"edit/:name",component:Dd,data:HT}]},{path:"crush-map",component:rc,data:UT},{path:"logs",component:uf,data:WT},{path:"telemetry",component:Tf,data:KT},{path:"monitoring",data:$T,children:[{path:"",component:Xf},{path:"silence/create",component:hh,data:JT},{path:"silence/create/:id",component:hh,data:ZT},{path:"silence/edit/:id",component:hh,data:QT},{path:"silence/recreate/:id",component:hh,data:XT}]},{path:"perf_counters/:type/:id",component:Eh,data:tw},{path:"mgr-modules",data:ew,children:[{path:"",component:Gh},{path:"edit/:name",component:Uh,data:nw}]},{path:"pool",data:aw,loadChildren:rw},{path:"block",data:iw,loadChildren:sw},{path:"cephfs",component:$g,canActivate:[kT.a],data:uw},{path:"rgw",canActivateChild:[kT.a,ET],data:ow,loadChildren:lw},{path:"user-management",data:dw,loadChildren:cw},{path:"user-profile",data:fw,children:[{path:"edit",component:ep,canActivate:[LT],data:hw}]},{path:"nfs/501/:message",component:gp,data:gw},{path:"nfs",canActivateChild:[kT.a,ET],data:pw,children:[{path:"",component:Sp},{path:"create",component:Kp,data:bw},{path:"edit/:cluster_id/:export_id",component:Kp,data:mw}]}]},{path:"",component:dm,children:[{path:"login",component:bm},{path:"login-change-password",component:Om,canActivate:[LT]}]},{path:"",component:Mm,children:[{path:"sso/404",component:Gm},{path:"403",component:Um},{path:"404",component:Zm},{path:"**",redirectTo:"/404"}]}]]}),[]),s["ɵmpd"](1024,Et.m,Et.A,[s.ApplicationRef,Et.u,Et.b,i.Location,s.Injector,s.NgModuleFactoryLoader,s.Compiler,Et.k,Et.i,[2,Et.t],[2,Et.l]]),s["ɵmpd"](1073742336,Et.q,Et.q,[[2,Et.v],[2,Et.m]]),s["ɵmpd"](1073742336,yw,yw,[]),s["ɵmpd"](1073742336,k,k,[]),s["ɵmpd"](1073742336,Mw.a,Mw.a,[]),s["ɵmpd"](1073742336,K.C,K.C,[]),s["ɵmpd"](1073742336,K.n,K.n,[]),s["ɵmpd"](1073742336,Ia.d,Ia.d,[]),s["ɵmpd"](1073742336,K.y,K.y,[]),s["ɵmpd"](1073742336,qw.a,qw.a,[]),s["ɵmpd"](1073742336,Qt.c,Qt.c,[]),s["ɵmpd"](1073742336,Be.d,Be.d,[]),s["ɵmpd"](1073742336,ba.d,ba.d,[]),s["ɵmpd"](1073742336,Ma.b,Ma.b,[]),s["ɵmpd"](1073742336,Ct.e,Ct.e,[]),s["ɵmpd"](1073742336,jw.a,jw.a,[]),s["ɵmpd"](1073742336,H.e,H.e,[]),s["ɵmpd"](1073742336,Q.f,Q.f,[]),s["ɵmpd"](1073742336,Fw.ClickOutsideModule,Fw.ClickOutsideModule,[]),s["ɵmpd"](1073742336,We.b,We.b,[]),s["ɵmpd"](1073742336,Vw.a,Vw.a,[]),s["ɵmpd"](1073742336,Wf.u,Wf.u,[]),s["ɵmpd"](1073742336,Gw.a,Gw.a,[]),s["ɵmpd"](1073742336,ue.a,ue.a,[]),s["ɵmpd"](1073742336,Bw.a,Bw.a,[]),s["ɵmpd"](1073742336,Sa.d,Sa.d,[]),s["ɵmpd"](1073742336,st.g,st.g,[]),s["ɵmpd"](1073742336,zw.a,zw.a,[]),s["ɵmpd"](1073742336,$t,$t,[]),s["ɵmpd"](1073742336,Yw,Yw,[]),s["ɵmpd"](1073742336,Hw,Hw,[]),s["ɵmpd"](1073742336,Uw.a,Uw.a,[]),s["ɵmpd"](1073742336,Ww,Ww,[]),s["ɵmpd"](1073742336,Wu,Wu,[]),s["ɵmpd"](1073742336,qc,qc,[]),s["ɵmpd"](1073742336,ac.b,ac.b,[]),s["ɵmpd"](1073742336,Di.a,Di.a,[]),s["ɵmpd"](1073742336,Kw.a,Kw.a,[]),s["ɵmpd"](1073742336,$w,$w,[]),s["ɵmpd"](1073742336,Jw,Jw,[]),s["ɵmpd"](1073742336,Zw,Zw,[]),s["ɵmpd"](1073742336,Qw,Qw,[]),s["ɵmpd"](1073742336,Xw,Xw,[]),s["ɵmpd"](1073742336,Lw,Lw,[]),s["ɵmpd"](1073742336,o,o,[]),s["ɵmpd"](256,et.n,"XSRF-TOKEN",[]),s["ɵmpd"](256,et.o,"X-XSRF-TOKEN",[]),s["ɵmpd"](256,s["ɵAPP_ROOT"],!0,[]),s["ɵmpd"](256,NT,"BrowserAnimations",[]),s["ɵmpd"](256,s.TRANSLATIONS_FORMAT,"xlf",[]),s["ɵmpd"](256,H.a,{autoClose:!0,insideClick:!1},[]),s["ɵmpd"](256,R,{},[]),s["ɵmpd"](256,d.b,{default:d.a,config:{positionClass:"toast-top-right",preventDuplicates:!0,enableHtml:!0}},[]),s["ɵmpd"](1024,Q.b,(function(){return[[]]}),[]),s["ɵmpd"](256,Q.a,1,[])])}));i.registerLocaleData(r.a),Object(s.enableProdMode)(),ve.h().bootstrapModuleFactory(tO).catch(t=>console.log(t))},zWsK:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));class a{transform(t,e,n){return n?e.call(n,t):e(t)}}class r{}},zavE:function(t,e,n){!function(t){"use strict";t.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},zk60:function(t,e,n){var a=n("2oRo"),r=Object.defineProperty;t.exports=function(t,e){try{r(a,t,{value:e,configurable:!0,writable:!0})}catch(n){a[t]=e}return e}},zx6S:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))}},[[0,0]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.aa7c24ee4ac262fc4e51.js.LICENSE.txt b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.aa7c24ee4ac262fc4e51.js.LICENSE.txt
deleted file mode 100644 (file)
index e401131..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*!
- * Chart.js v2.8.0
- * https://www.chartjs.org
- * (c) 2019 Chart.js Contributors
- * Released under the MIT License
- */
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation. All rights reserved.
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-this file except in compliance with the License. You may obtain a copy of the
-License at http://www.apache.org/licenses/LICENSE-2.0
-
-THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-MERCHANTABLITY OR NON-INFRINGEMENT.
-
-See the Apache Version 2.0 License for specific language governing permissions
-and limitations under the License.
-***************************************************************************** */
-
-/**
- * @license
- * Copyright Google Inc. All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- * @param {?} cb
- * @return {?}
- */
-
-/**
- * @license
- * Copyright Google Inc. All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- * @type {?}
- */
-
-/**
- * @license
- * Copyright Google Inc. All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-/**
- * @license
- * Lodash <https://lodash.com/>
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/**
- * @license Angular v8.2.14
- * (c) 2010-2019 Google LLC. https://angular.io/
- * License: MIT
- */
-
-/**
-* @license
-* Copyright Google Inc. All Rights Reserved.
-*
-* Use of this source code is governed by an MIT-style license that can be
-* found in the LICENSE file at https://angular.io/license
-*/
-
-//! author : Abdel Said: https://github.com/abdelsaid
-
-//! author : Ahmed Elkhatib
-
-//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-
-//! author : Chris Gedrim : https://github.com/chrisgedrim
-
-//! author : Julio Napurí : https://github.com/julionc
-
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-
-//! author : Rafal Hirsz : https://github.com/evoL
-
-//! author : bustta : https://github.com/bustta
-
-//! author : forabi https://github.com/forabi
-
-//! author : lluchs : https://github.com/lluchs
-
-//! author : petrbela : https://github.com/petrbela
-
-//! author: Menelion Elensúle: https://github.com/Oire
-
-//! locale : Arabic [ar]
-
-//! locale : Czech [cs]
-
-//! locale : English (United Kingdom) [en-gb]
-
-//! locale : German [de]
-
-//! locale : Polish [pl]
-
-//! locale : Portuguese (Brazil) [pt-br]
-
-//! locale : Spanish (United States) [es-us]
-
-//! locale : Spanish [es]
-
-//! moment.js locale configuration
index 2a12f9d9a66af73660add55098a3ecb706778b40..77f39ac17bf84ca51ae312e0bfc832c1ba80034a 100644 (file)
                   <input type="checkbox"
                          class="custom-control-input"
                          id="channel_ident"
-                         formControlName="channel_ident">
+                         formControlName="channel_ident"
+                         (click)="toggleIdent()">
                   <label class="custom-control-label"
                          for="channel_ident"></label>
                 </div>
               </div>
             </div>
+            <ng-container *ngIf="showContactInfo">
             <legend>
               <ng-container i18n>Contact Information</ng-container>
               <cd-helper i18n>Submitting any contact information is completely optional and disabled by default.</cd-helper>
                        i18n-placeholder>
               </div>
             </div>
+            <div class="form-group row">
+              <label class="cd-col-form-label"
+                     for="organization"
+                     i18n>Organization</label>
+              <div class="cd-col-form-input">
+                <input id="organization"
+                       class="form-control"
+                       type="text"
+                       formControlName="organization"
+                       placeholder="Organization name"
+                       i18n-placeholder>
+              </div>
+            </div>
+          </ng-container>
             <legend i18n>Advanced Settings</legend>
             <div class="form-group row">
               <label class="cd-col-form-label"
index cc56046df62e8722418ca1ea32c0b84b4a1fe1b4..2bc758a4dc4bd839e77ddd378cb5fcf1fd5c7cac 100644 (file)
@@ -80,6 +80,35 @@ describe('TelemetryComponent', () => {
       expect(component).toBeTruthy();
     });
 
+    it('should show/hide ident fields on checking/unchecking', () => {
+      const getContactField = () =>
+        fixture.debugElement.nativeElement.querySelector('input[id=contact]');
+      const getDescriptionField = () =>
+        fixture.debugElement.nativeElement.querySelector('input[id=description]');
+      const checkVisibility = () => {
+        if (component.showContactInfo) {
+          expect(getContactField()).toBeTruthy();
+          expect(getDescriptionField()).toBeTruthy();
+        } else {
+          expect(getContactField()).toBeFalsy();
+          expect(getDescriptionField()).toBeFalsy();
+        }
+      };
+
+      // Initial check.
+      checkVisibility();
+
+      // toggle fields.
+      component.toggleIdent();
+      fixture.detectChanges();
+      checkVisibility();
+
+      // toggle fields again.
+      component.toggleIdent();
+      fixture.detectChanges();
+      checkVisibility();
+    });
+
     it('should set module enability to true correctly', () => {
       expect(component.moduleEnabled).toBeTruthy();
     });
@@ -96,16 +125,6 @@ describe('TelemetryComponent', () => {
       });
     });
 
-    it('should update the Telemetry configuration', () => {
-      component.updateConfig();
-      const req = httpTesting.expectOne('api/mgr/module/telemetry');
-      expect(req.request.method).toBe('PUT');
-      expect(req.request.body).toEqual({
-        config: {}
-      });
-      req.flush({});
-    });
-
     it('should disable the Telemetry module', () => {
       const message = 'Module disabled message.';
       const followUpFunc = function () {
@@ -164,14 +183,22 @@ describe('TelemetryComponent', () => {
 
     it('should submit', () => {
       component.onSubmit();
-      const req = httpTesting.expectOne('api/telemetry');
-      expect(req.request.method).toBe('PUT');
-      expect(req.request.body).toEqual({
+      const req1 = httpTesting.expectOne('api/telemetry');
+      expect(req1.request.method).toBe('PUT');
+      expect(req1.request.body).toEqual({
         enable: true,
         license_name: 'sharing-1-0'
       });
-      req.flush({});
-      expect(router.navigate).toHaveBeenCalledWith(['']);
+      req1.flush({});
+      const req2 = httpTesting.expectOne({
+        url: 'api/mgr/module/telemetry',
+        method: 'PUT'
+      });
+      expect(req2.request.body).toEqual({
+        config: {}
+      });
+      req2.flush({});
+      expect(router.url).toBe('/');
     });
   });
 });
index d6d928e19500c8f15bf53ef347c6df454b360254..53458aedbc9c7da692a3d80e08601f68cc124baf 100644 (file)
@@ -32,6 +32,8 @@ export class TelemetryComponent implements OnInit {
   loading = false;
   moduleEnabled: boolean;
   options: Object = {};
+  newConfig: Object = {};
+  configResp: object = {};
   previewForm: CdFormGroup;
   requiredFields = [
     'channel_basic',
@@ -41,13 +43,16 @@ export class TelemetryComponent implements OnInit {
     'interval',
     'proxy',
     'contact',
-    'description'
+    'description',
+    'organization'
   ];
+  contactInfofields = ['contact', 'description', 'organization'];
   report: object = undefined;
   reportId: number = undefined;
   sendToUrl = '';
   sendToDeviceUrl = '';
   step = 1;
+  showContactInfo: boolean;
 
   constructor(
     private formBuilder: CdFormBuilder,
@@ -72,10 +77,11 @@ export class TelemetryComponent implements OnInit {
         this.moduleEnabled = configResp['enabled'];
         this.sendToUrl = configResp['url'];
         this.sendToDeviceUrl = configResp['device_url'];
+        this.showContactInfo = configResp['channel_ident'];
         this.options = _.pick(resp[0], this.requiredFields);
-        const configs = _.pick(configResp, this.requiredFields);
+        this.configResp = _.pick(configResp, this.requiredFields);
         this.createConfigForm();
-        this.configForm.setValue(configs);
+        this.configForm.setValue(this.configResp);
         this.loading = false;
       },
       (_error) => {
@@ -126,12 +132,30 @@ export class TelemetryComponent implements OnInit {
     return result;
   }
 
+  private updateReportFromConfig(updatedConfig: Object = {}) {
+    // update channels
+    const availableChannels: string[] = this.report['report']['channels_available'];
+    const updatedChannels = [];
+    for (const channel of availableChannels) {
+      const key = `channel_${channel}`;
+      if (updatedConfig[key]) {
+        updatedChannels.push(channel);
+      }
+    }
+    this.report['report']['channels'] = updatedChannels;
+    // update contactInfo
+    for (const contactInfofield of this.contactInfofields) {
+      this.report['report'][contactInfofield] = updatedConfig[contactInfofield];
+    }
+  }
+
   private getReport() {
     this.loading = true;
     this.telemetryService.getReport().subscribe(
       (resp: object) => {
         this.report = resp;
         this.reportId = resp['report']['report_id'];
+        this.updateReportFromConfig(this.newConfig);
         this.createPreviewForm();
         this.loading = false;
         this.step++;
@@ -142,33 +166,29 @@ export class TelemetryComponent implements OnInit {
     );
   }
 
-  updateConfig() {
-    const config = {};
-    _.forEach(Object.values(this.options), (option) => {
+  toggleIdent() {
+    this.showContactInfo = !this.showContactInfo;
+  }
+
+  buildReport() {
+    this.newConfig = {};
+    for (const option of Object.values(this.options)) {
       const control = this.configForm.get(option.name);
-      // Append the option only if the value has been modified.
-      if (control.dirty && control.valid) {
-        config[option.name] = control.value;
-      }
-    });
-    this.mgrModuleService.updateConfig('telemetry', config).subscribe(
-      () => {
-        this.disableModule(
-          this.i18n(
-            `Your settings have been applied successfully. \
-Due to privacy/legal reasons the Telemetry module is now disabled until you \
-complete the next step and accept the license.`
-          ),
-          () => {
-            this.getReport();
-          }
-        );
-      },
-      () => {
-        // Reset the 'Submit' button.
+      // Append the option only if they are valid
+      if (control.valid) {
+        this.newConfig[option.name] = control.value;
+      } else {
         this.configForm.setErrors({ cdSubmitButton: true });
+        return;
       }
-    );
+    }
+    // reset contact info field  if ident channel is off
+    if (!this.newConfig['channel_ident']) {
+      for (const contactInfofield of this.contactInfofields) {
+        this.newConfig[contactInfofield] = '';
+      }
+    }
+    this.getReport();
   }
 
   download(report: object, fileName: string) {
@@ -190,25 +210,54 @@ complete the next step and accept the license.`
   }
 
   next() {
-    if (this.configForm.pristine) {
-      this.getReport();
-    } else {
-      this.updateConfig();
-    }
+    this.buildReport();
   }
 
   back() {
     this.step--;
   }
 
-  onSubmit() {
-    this.telemetryService.enable().subscribe(() => {
-      this.telemetryNotificationService.setVisibility(false);
-      this.notificationService.show(
-        NotificationType.success,
-        this.i18n('The Telemetry module has been configured and activated successfully.')
-      );
-      this.router.navigate(['']);
+  getChangedConfig() {
+    const updatedConfig = {};
+    _.forEach(this.requiredFields, (configField) => {
+      if (!_.isEqual(this.configResp[configField], this.newConfig[configField])) {
+        updatedConfig[configField] = this.newConfig[configField];
+      }
     });
+    return updatedConfig;
+  }
+
+  onSubmit() {
+    const updatedConfig = this.getChangedConfig();
+    const observables = [
+      this.telemetryService.enable(),
+      this.mgrModuleService.updateConfig('telemetry', updatedConfig)
+    ];
+
+    observableForkJoin(observables).subscribe(
+      () => {
+        this.telemetryNotificationService.setVisibility(false);
+        this.notificationService.show(
+          NotificationType.success,
+          this.i18n('The Telemetry module has been configured and activated successfully.')
+        );
+      },
+      () => {
+        this.telemetryNotificationService.setVisibility(false);
+        this.notificationService.show(
+          NotificationType.error,
+          this.i18n(
+            'An Error occurred while updating the Telemetry module configuration.\
+             Please Try again'
+          )
+        );
+        // Reset the 'Update' button.
+        this.previewForm.setErrors({ cdSubmitButton: true });
+      },
+      () => {
+        this.newConfig = {};
+        this.router.navigate(['']);
+      }
+    );
   }
 }
index 161e21db9bf3a71798fbd5e3c9b0021760d0f1ec..e20f4925cf787388ccdef9af4f72ca27a8081424 100644 (file)
-<cd-pwd-expiration-notification></cd-pwd-expiration-notification>
-<cd-telemetry-notification></cd-telemetry-notification>
-<cd-motd></cd-motd>
-<cd-notifications-sidebar></cd-notifications-sidebar>
+<div class="cd-navbar-main">
+  <cd-pwd-expiration-notification></cd-pwd-expiration-notification>
+  <cd-telemetry-notification></cd-telemetry-notification>
+  <cd-motd></cd-motd>
+  <cd-notifications-sidebar></cd-notifications-sidebar>
 
-<div class="cd-navbar-top">
-  <nav class="navbar fixed-top navbar-expand-md navbar-dark cd-navbar-brand">
-    <button class="btn btn-link py-0"
-            (click)="showMenuSidebar = !showMenuSidebar">
-      <i class="fa fa-bars fa-2x"
-         aria-hidden="true"></i>
-    </button>
+  <div class="cd-navbar-top">
+    <nav class="navbar navbar-expand-md navbar-dark cd-navbar-brand">
+      <button class="btn btn-link py-0"
+              (click)="showMenuSidebar = !showMenuSidebar">
+        <i class="fa fa-bars fa-2x"
+           aria-hidden="true"></i>
+      </button>
 
-    <a class="navbar-brand ml-2"
-       href="#">
-      <img src="assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"
-           alt="Ceph" />
-    </a>
+      <a class="navbar-brand ml-2"
+         href="#">
+        <img src="assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"
+             alt="Ceph" />
+      </a>
 
-    <button type="button"
-            class="navbar-toggler"
-            (click)="toggleRightSidebar()">
-      <span i18n
-            class="sr-only">Toggle navigation</span>
-      <span class="">
-        <i class="fa fa-navicon fa-lg"></i>
-      </span>
-    </button>
+      <button type="button"
+              class="navbar-toggler"
+              (click)="toggleRightSidebar()">
+        <span i18n
+              class="sr-only">Toggle navigation</span>
+        <span class="">
+          <i class="fa fa-navicon fa-lg"></i>
+        </span>
+      </button>
 
-    <div class="collapse navbar-collapse"
-         [ngClass]="{'show': rightSidebarOpen}">
-      <ul class="nav navbar-nav cd-navbar-utility my-2 my-md-0">
-        <ng-container *ngTemplateOutlet="cd_utilities"> </ng-container>
-      </ul>
-    </div>
-  </nav>
-</div>
+      <div class="collapse navbar-collapse"
+           [ngClass]="{'show': rightSidebarOpen}">
+        <ul class="nav navbar-nav cd-navbar-utility my-2 my-md-0">
+          <ng-container *ngTemplateOutlet="cd_utilities"> </ng-container>
+        </ul>
+      </div>
+    </nav>
+  </div>
 
-<div class="wrapper">
-  <!-- Content -->
-  <nav id="sidebar"
-       [ngClass]="{'active': !showMenuSidebar}">
-    <ngx-simplebar [options]="simplebar">
-      <ul class="list-unstyled components cd-navbar-primary">
-        <ng-container *ngTemplateOutlet="cd_menu"> </ng-container>
-      </ul>
-    </ngx-simplebar>
-  </nav>
+  <div class="wrapper">
+    <!-- Content -->
+    <nav id="sidebar"
+         [ngClass]="{'active': !showMenuSidebar}">
+      <ngx-simplebar [options]="simplebar">
+        <ul class="list-unstyled components cd-navbar-primary">
+          <ng-container *ngTemplateOutlet="cd_menu"> </ng-container>
+        </ul>
+      </ngx-simplebar>
+    </nav>
 
-  <!-- Page Content -->
-  <div id="content"
-       [ngClass]="{'active': !showMenuSidebar}">
-    <ng-content></ng-content>
+    <!-- Page Content -->
+    <div id="content"
+         [ngClass]="{'active': !showMenuSidebar}">
+      <ng-content></ng-content>
+    </div>
   </div>
-</div>
 
-<ng-template #cd_utilities>
-  <li class="nav-item ">
-    <cd-language-selector class="cd-navbar"></cd-language-selector>
-  </li>
-  <li class="nav-item ">
-    <cd-notifications class="cd-navbar"
-                      (click)="toggleRightSidebar()"></cd-notifications>
-  </li>
-  <li class="nav-item ">
-    <cd-dashboard-help class="cd-navbar"></cd-dashboard-help>
-  </li>
-  <li class="nav-item ">
-    <cd-administration class="cd-navbar"></cd-administration>
-  </li>
-  <li class="nav-item ">
-    <cd-identity class="cd-navbar"></cd-identity>
-  </li>
-</ng-template>
-
-<ng-template #cd_menu >
-  <ng-container *ngIf="enabledFeature$ | async as enabledFeature">
-    <!-- Dashboard -->
-    <li routerLinkActive="active"
-        class="nav-item tc_menuitem_dashboard">
-      <a routerLink="/dashboard"
-         class="nav-link">
-        <span i18n>Dashboard</span>&nbsp;
-        <i [ngClass]="[icons.health]"
-           [ngStyle]="summaryData?.health_status | healthColor"></i>
-      </a>
+  <ng-template #cd_utilities>
+    <li class="nav-item">
+      <cd-language-selector class="cd-navbar"></cd-language-selector>
     </li>
-
-    <!-- Cluster -->
-    <li routerLinkActive="active"
-        class="nav-item tc_menuitem_cluster"
-        *ngIf="permissions.hosts.read || permissions.monitor.read ||
-        permissions.osd.read || permissions.configOpt.read ||
-        permissions.log.read || permissions.prometheus.read">
-      <a (click)="toggleSubMenu('cluster')"
-         class="nav-link dropdown-toggle"
-         [attr.aria-expanded]="displayedSubMenu == 'cluster'"
-         aria-controls="collapseBasic">
-        <ng-container i18n>Cluster</ng-container>
-      </a>
-      <ul class="list-unstyled"
-          [collapse]="displayedSubMenu !== 'cluster'"
-          [isAnimated]="true">
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_hosts"
-            *ngIf="permissions.hosts.read">
-          <a i18n
-             routerLink="/hosts">Hosts</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_cluster_inventory"
-            *ngIf="permissions.hosts.read">
-          <a i18n
-             routerLink="/inventory">Inventory</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_cluster_monitor"
-            *ngIf="permissions.monitor.read">
-          <a i18n
-             routerLink="/monitor/">Monitors</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_cluster_services"
-            *ngIf="permissions.hosts.read">
-          <a i18n
-             routerLink="/services/">Services</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_osds"
-            *ngIf="permissions.osd.read">
-          <a i18n
-             routerLink="/osd">OSDs</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_configuration"
-            *ngIf="permissions.configOpt.read">
-          <a i18n
-             routerLink="/configuration">Configuration</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_crush"
-            *ngIf="permissions.osd.read">
-          <a i18n
-             routerLink="/crush-map">CRUSH map</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_modules"
-            *ngIf="permissions.configOpt.read">
-          <a i18n
-             routerLink="/mgr-modules">Manager Modules</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_log"
-            *ngIf="permissions.log.read">
-          <a i18n
-             routerLink="/logs">Logs</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_monitoring"
-            *ngIf="permissions.prometheus.read">
-          <a routerLink="/monitoring">
-            <ng-container i18n>Monitoring</ng-container>
-            <small *ngIf="prometheusAlertService.activeAlerts > 0"
-                   class="badge badge-danger">{{ prometheusAlertService.activeAlerts }}</small>
-          </a>
-        </li>
-      </ul>
+    <li class="nav-item">
+      <cd-notifications class="cd-navbar"
+                        (click)="toggleRightSidebar()"></cd-notifications>
     </li>
-
-    <!-- Pools -->
-    <li routerLinkActive="active"
-        class="nav-item tc_menuitem_pool"
-        *ngIf="permissions.pool.read">
-      <a class="nav-link"
-         i18n
-         routerLink="/pool">Pools</a>
+    <li class="nav-item">
+      <cd-dashboard-help class="cd-navbar"></cd-dashboard-help>
+    </li>
+    <li class="nav-item">
+      <cd-administration class="cd-navbar"></cd-administration>
     </li>
+    <li class="nav-item">
+      <cd-identity class="cd-navbar"></cd-identity>
+    </li>
+  </ng-template>
 
-    <!-- Block -->
-    <li routerLinkActive="active"
-        class="nav-item tc_menuitem_block"
-        *ngIf="(permissions.rbdImage.read || permissions.rbdMirroring.read || permissions.iscsi.read) &&
-        (enabledFeature.rbd || enabledFeature.mirroring || enabledFeature.iscsi)">
-      <a class="nav-link dropdown-toggle"
-         (click)="toggleSubMenu('block')"
-         [attr.aria-expanded]="displayedSubMenu == 'block'"
-         aria-controls="collapseBasic"
-         [ngStyle]="blockHealthColor()">
-        <ng-container i18n>Block</ng-container>
-      </a>
+  <ng-template #cd_menu >
+    <ng-container *ngIf="enabledFeature$ | async as enabledFeature">
+      <!-- Dashboard -->
+      <li routerLinkActive="active"
+          class="nav-item tc_menuitem_dashboard">
+        <a routerLink="/dashboard"
+           class="nav-link">
+          <span i18n>Dashboard</span>&nbsp;
+          <i [ngClass]="[icons.health]"
+             [ngStyle]="summaryData?.health_status | healthColor"></i>
+        </a>
+      </li>
 
-      <ul class="list-unstyled"
-          [collapse]="displayedSubMenu !== 'block'"
-          [isAnimated]="true">
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_block_images"
-            *ngIf="permissions.rbdImage.read && enabledFeature.rbd">
-          <a i18n
-             routerLink="/block/rbd">Images</a>
-        </li>
+      <!-- Cluster -->
+      <li routerLinkActive="active"
+          class="nav-item tc_menuitem_cluster"
+          *ngIf="permissions.hosts.read || permissions.monitor.read ||
+          permissions.osd.read || permissions.configOpt.read ||
+          permissions.log.read || permissions.prometheus.read">
+        <a (click)="toggleSubMenu('cluster')"
+           class="nav-link dropdown-toggle"
+           [attr.aria-expanded]="displayedSubMenu == 'cluster'"
+           aria-controls="collapseBasic">
+          <ng-container i18n>Cluster</ng-container>
+        </a>
+        <ul class="list-unstyled"
+            [collapse]="displayedSubMenu !== 'cluster'"
+            [isAnimated]="true">
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_hosts"
+              *ngIf="permissions.hosts.read">
+            <a i18n
+               routerLink="/hosts">Hosts</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_cluster_inventory"
+              *ngIf="permissions.hosts.read">
+            <a i18n
+               routerLink="/inventory">Inventory</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_cluster_monitor"
+              *ngIf="permissions.monitor.read">
+            <a i18n
+               routerLink="/monitor/">Monitors</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_cluster_services"
+              *ngIf="permissions.hosts.read">
+            <a i18n
+               routerLink="/services/">Services</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_osds"
+              *ngIf="permissions.osd.read">
+            <a i18n
+               routerLink="/osd">OSDs</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_configuration"
+              *ngIf="permissions.configOpt.read">
+            <a i18n
+               routerLink="/configuration">Configuration</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_crush"
+              *ngIf="permissions.osd.read">
+            <a i18n
+               routerLink="/crush-map">CRUSH map</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_modules"
+              *ngIf="permissions.configOpt.read">
+            <a i18n
+               routerLink="/mgr-modules">Manager Modules</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_log"
+              *ngIf="permissions.log.read">
+            <a i18n
+               routerLink="/logs">Logs</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_monitoring"
+              *ngIf="permissions.prometheus.read">
+            <a routerLink="/monitoring">
+              <ng-container i18n>Monitoring</ng-container>
+              <small *ngIf="prometheusAlertService.activeAlerts > 0"
+                     class="badge badge-danger">{{ prometheusAlertService.activeAlerts }}</small>
+            </a>
+          </li>
+        </ul>
+      </li>
 
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_block_mirroring"
-            *ngIf="permissions.rbdMirroring.read && enabledFeature.mirroring">
-          <a routerLink="/block/mirroring">
-            <ng-container i18n>Mirroring</ng-container>
-            <small *ngIf="summaryData?.rbd_mirroring?.warnings !== 0"
-                   class="badge badge-warning">{{ summaryData?.rbd_mirroring?.warnings }}</small>
-            <small *ngIf="summaryData?.rbd_mirroring?.errors !== 0"
-                   class="badge badge-danger">{{ summaryData?.rbd_mirroring?.errors }}</small>
-          </a>
-        </li>
+      <!-- Pools -->
+      <li routerLinkActive="active"
+          class="nav-item tc_menuitem_pool"
+          *ngIf="permissions.pool.read">
+        <a class="nav-link"
+           i18n
+           routerLink="/pool">Pools</a>
+      </li>
 
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_block_iscsi"
-            *ngIf="permissions.iscsi.read && enabledFeature.iscsi">
-          <a i18n
-             routerLink="/block/iscsi">iSCSI</a>
-        </li>
-      </ul>
-    </li>
+      <!-- Block -->
+      <li routerLinkActive="active"
+          class="nav-item tc_menuitem_block"
+          *ngIf="(permissions.rbdImage.read || permissions.rbdMirroring.read || permissions.iscsi.read) &&
+          (enabledFeature.rbd || enabledFeature.mirroring || enabledFeature.iscsi)">
+        <a class="nav-link dropdown-toggle"
+           (click)="toggleSubMenu('block')"
+           [attr.aria-expanded]="displayedSubMenu == 'block'"
+           aria-controls="collapseBasic"
+           [ngStyle]="blockHealthColor()">
+          <ng-container i18n>Block</ng-container>
+        </a>
 
-    <!-- NFS -->
-    <li routerLinkActive="active"
-        class="nav-item tc_menuitem_nfs"
-        *ngIf="permissions.nfs.read && enabledFeature.nfs">
-      <a i18n
-         class="nav-link"
-         routerLink="/nfs">NFS</a>
-    </li>
+        <ul class="list-unstyled"
+            [collapse]="displayedSubMenu !== 'block'"
+            [isAnimated]="true">
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_block_images"
+              *ngIf="permissions.rbdImage.read && enabledFeature.rbd">
+            <a i18n
+               routerLink="/block/rbd">Images</a>
+          </li>
 
-    <!-- Filesystem -->
-    <li routerLinkActive="active"
-        class="nav-item tc_menuitem_cephfs"
-        *ngIf="permissions.cephfs.read && enabledFeature.cephfs">
-      <a i18n
-         class="nav-link"
-         routerLink="/cephfs">Filesystems</a>
-    </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_block_mirroring"
+              *ngIf="permissions.rbdMirroring.read && enabledFeature.mirroring">
+            <a routerLink="/block/mirroring">
+              <ng-container i18n>Mirroring</ng-container>
+              <small *ngIf="summaryData?.rbd_mirroring?.warnings !== 0"
+                     class="badge badge-warning">{{ summaryData?.rbd_mirroring?.warnings }}</small>
+              <small *ngIf="summaryData?.rbd_mirroring?.errors !== 0"
+                     class="badge badge-danger">{{ summaryData?.rbd_mirroring?.errors }}</small>
+            </a>
+          </li>
 
-    <!-- Object Gateway -->
-    <li routerLinkActive="active"
-        class="nav-item tc_menuitem_rgw"
-        *ngIf="permissions.rgw.read && enabledFeature.rgw">
-      <a class="nav-link dropdown-toggle"
-         (click)="toggleSubMenu('rgw')"
-         [attr.aria-expanded]="displayedSubMenu == 'rgw'"
-         aria-controls="collapseBasic">
-        <ng-container i18n>Object Gateway</ng-container>
-      </a>
-      <ul class="list-unstyled"
-          [collapse]="displayedSubMenu !== 'rgw'"
-          [isAnimated]="true">
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_rgw_daemons">
-          <a i18n
-             routerLink="/rgw/daemon">Daemons</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_rgw_users">
-          <a i18n
-             routerLink="/rgw/user">Users</a>
-        </li>
-        <li routerLinkActive="active"
-            class="tc_submenuitem tc_submenuitem_rgw_buckets">
-          <a i18n
-             routerLink="/rgw/bucket">Buckets</a>
-        </li>
-      </ul>
-    </li>
-  </ng-container>
-</ng-template>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_block_iscsi"
+              *ngIf="permissions.iscsi.read && enabledFeature.iscsi">
+            <a i18n
+               routerLink="/block/iscsi">iSCSI</a>
+          </li>
+        </ul>
+      </li>
+
+      <!-- NFS -->
+      <li routerLinkActive="active"
+          class="nav-item tc_menuitem_nfs"
+          *ngIf="permissions.nfs.read && enabledFeature.nfs">
+        <a i18n
+           class="nav-link"
+           routerLink="/nfs">NFS</a>
+      </li>
+
+      <!-- Filesystem -->
+      <li routerLinkActive="active"
+          class="nav-item tc_menuitem_cephfs"
+          *ngIf="permissions.cephfs.read && enabledFeature.cephfs">
+        <a i18n
+           class="nav-link"
+           routerLink="/cephfs">Filesystems</a>
+      </li>
+
+      <!-- Object Gateway -->
+      <li routerLinkActive="active"
+          class="nav-item tc_menuitem_rgw"
+          *ngIf="permissions.rgw.read && enabledFeature.rgw">
+        <a class="nav-link dropdown-toggle"
+           (click)="toggleSubMenu('rgw')"
+           [attr.aria-expanded]="displayedSubMenu == 'rgw'"
+           aria-controls="collapseBasic">
+          <ng-container i18n>Object Gateway</ng-container>
+        </a>
+        <ul class="list-unstyled"
+            [collapse]="displayedSubMenu !== 'rgw'"
+            [isAnimated]="true">
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_rgw_daemons">
+            <a i18n
+               routerLink="/rgw/daemon">Daemons</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_rgw_users">
+            <a i18n
+               routerLink="/rgw/user">Users</a>
+          </li>
+          <li routerLinkActive="active"
+              class="tc_submenuitem tc_submenuitem_rgw_buckets">
+            <a i18n
+               routerLink="/rgw/bucket">Buckets</a>
+          </li>
+        </ul>
+      </li>
+    </ng-container>
+  </ng-template>
+
+</div>
index 38aa60e2f505fc119bcdc22331e1f26276b6f30d..b2537a76960aba469e0b9758023465b3a5464f4c 100644 (file)
@@ -1,5 +1,16 @@
 @import 'defaults';
 
+/* --------------------------------------------------
+   MAIN NAVBAR STYLE
+--------------------------------------------------- */
+
+.cd-navbar-main {
+  display: flex;
+  flex: 1;
+  flex-direction: column;
+  height: 100%;
+}
+
 /* ---------------------------------------------------
     NAVBAR STYLE
 --------------------------------------------------- */
@@ -146,18 +157,19 @@ $sidebar-width: 200px;
 
 .wrapper {
   display: flex;
+  height: 100%;
   width: 100%;
 
   #sidebar {
     width: $sidebar-width;
-    top: $navbar-height;
     background: $color-navbar-bg;
     overflow-y: auto;
-    position: fixed;
+    position: relative;
     bottom: 0;
     left: 0;
     z-index: 999;
     color: #fff;
+    height: auto;
     transition: all 0.3s;
 
     &.active {
@@ -240,8 +252,7 @@ $sidebar-width: 200px;
 #content {
   width: calc(100% - #{$sidebar-width});
   transition: all 0.3s;
-  position: absolute;
-  top: $navbar-height;
+  position: relative;
   bottom: 0;
   right: 0;
 
@@ -249,27 +260,3 @@ $sidebar-width: 200px;
     width: 100vw;
   }
 }
-
-/* ---------------------------------------------------
-    topNotification settings
---------------------------------------------------- */
-
-@for $i from 1 through 2 {
-  :host.top-notification-#{$i} {
-    .cd-navbar-top .cd-navbar-brand {
-      top: $top-notification-height * $i;
-    }
-
-    #sidebar {
-      top: $navbar-height + $top-notification-height * $i;
-    }
-
-    #content {
-      top: $navbar-height + $top-notification-height * $i;
-    }
-
-    cd-notifications-sidebar {
-      top: $navbar-height + $top-notification-height * $i + 10px;
-    }
-  }
-}
index 2fbe5d7f87d3ca918f650716d76944c28e8a739a..0b8d33d0e758db5dbe24ec66f372dbb0171f08cb 100644 (file)
@@ -1,4 +1,5 @@
-<cd-alert-panel *ngIf="motd"
+<cd-alert-panel class="no-margin-bottom"
+                *ngIf="motd"
                 size="slim"
                 [showTitle]="false"
                 [type]="motd.severity"
index 5a43e92e1dce42477e1c61989edeebda1178e9f4..4076d77d16f5e26ea0d4e268c0b5b0bcd2b6b206 100644 (file)
@@ -1,8 +1,10 @@
-<alert class="no-margin-bottom"
-       type="{{ alertType }}"
-       *ngIf="displayNotification"
-       [dismissible]="true"
-       (onClose)="close($event)">
+<cd-alert-panel class="no-margin-bottom"
+                [type]="alertType"
+                *ngIf="displayNotification"
+                [showTitle]="false"
+                size="slim"
+                [dismissible]="alertType !== 'danger'"
+                (dismissed)="onDismissed()">
   <div *ngIf="expirationDays === 0"
        i18n>Your password will expire in <strong>less than 1</strong> day. Click
   <a routerLink="/user-profile/edit"
@@ -11,4 +13,4 @@
        i18n>Your password will expire in <strong>{{ expirationDays }}</strong> day(s). Click
   <a routerLink="/user-profile/edit"
      class="alert-link">here</a> to change it now.</div>
-</alert>
+</cd-alert-panel>
index 7ebd64075eb2638f947bf237ce047d2dd64f4cd2..9761a412231297b76aeaa37d0500160c51eff2e4 100644 (file)
@@ -8,9 +8,10 @@ import { of as observableOf } from 'rxjs';
 
 import { AlertModule } from 'ngx-bootstrap/alert';
 
-import { configureTestBed } from '../../../../testing/unit-test-helper';
+import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
 
 import { SettingsService } from '../../api/settings.service';
+import { AlertPanelComponent } from '../../components/alert-panel/alert-panel.component';
 import { AuthStorageService } from '../../services/auth-storage.service';
 import { PwdExpirationNotificationComponent } from './pwd-expiration-notification.component';
 
@@ -31,13 +32,13 @@ describe('PwdExpirationNotificationComponent', () => {
   };
 
   configureTestBed({
-    declarations: [PwdExpirationNotificationComponent, FakeComponent],
+    declarations: [PwdExpirationNotificationComponent, FakeComponent, AlertPanelComponent],
     imports: [
       AlertModule.forRoot(),
       HttpClientTestingModule,
       RouterTestingModule.withRoutes(routes)
     ],
-    providers: [SettingsService, AuthStorageService]
+    providers: [SettingsService, AuthStorageService, i18nProviders]
   });
 
   describe('password expiration date has been set', () => {
index c713d4c7b6db19f849bfbbda9b821492a8e60260..d6c6607ad8b0ba82c3b7a1ed29afa59c0319c0c3 100644 (file)
@@ -48,7 +48,7 @@ export class PwdExpirationNotificationComponent implements OnInit, OnDestroy {
     return Math.floor((expiration.valueOf() - current.valueOf()) / (1000 * 3600 * 24));
   }
 
-  close() {
+  onDismissed(): void {
     this.authStorageService.isPwdDisplayedSource.next(false);
     this.displayNotification = false;
   }
index 474493cc991b76398562f10efcf357924d04c431..9af7958370a79d6f167dc362b1720b8f7bcd06f0 100644 (file)
@@ -1,10 +1,12 @@
-<alert class="no-margin-bottom"
-       type="warning"
-       *ngIf="displayNotification"
-       (close)="close($event)">
+<cd-alert-panel *ngIf="displayNotification"
+                class="no-margin-bottom"
+                [showTitle]="false"
+                size="slim"
+                [type]="notificationSeverity"
+                [dismissible]="notificationSeverity !== 'danger'"
+                (dismissed)="onDismissed()">
   <div i18n>The Ceph community needs your help to continue improving: please
     <a routerLink="/telemetry"
        class="btn activate-button alert-link activate-text">Activate</a> the
   <a href="https://docs.ceph.com/en/latest/mgr/telemetry/">Telemetry</a> module.</div>
-</alert>
-
+</cd-alert-panel>
index 3f30ac79c7fa1eaac36ad8e373f2dc844b52c1eb..c7ee2dd07ee82dfa07b6f3f001fac44182c2cee6 100644 (file)
@@ -1,7 +1,9 @@
 @import 'defaults';
 
-::ng-deep cd-telemetry-notification .no-margin-bottom {
-  margin-bottom: 0;
+.no-margin-bottom {
+  ::ng-deep .alert {
+    margin-bottom: 0;
+  }
 }
 
 .activate-button {
index d500f6b4bb998bde29f41a6a8dc980298cffa3ba..62137615b84f4f844fc2b7fbcf77e76cb866da7a 100644 (file)
@@ -14,6 +14,7 @@ import { PipesModule } from '../../pipes/pipes.module';
 import { AuthStorageService } from '../../services/auth-storage.service';
 import { NotificationService } from '../../services/notification.service';
 import { TelemetryNotificationService } from '../../services/telemetry-notification.service';
+import { AlertPanelComponent } from '../alert-panel/alert-panel.component';
 import { TelemetryNotificationComponent } from './telemetry-notification.component';
 
 describe('TelemetryActivationNotificationComponent', () => {
@@ -40,7 +41,7 @@ describe('TelemetryActivationNotificationComponent', () => {
   };
 
   configureTestBed({
-    declarations: [TelemetryNotificationComponent],
+    declarations: [TelemetryNotificationComponent, AlertPanelComponent],
     imports: [AlertModule.forRoot(), HttpClientTestingModule, ToastrModule.forRoot(), PipesModule],
     providers: [MgrModuleService, UserService, i18nProviders]
   });
@@ -92,7 +93,7 @@ describe('TelemetryActivationNotificationComponent', () => {
   it('should hide the notification if the user closes it', () => {
     spyOn(notificationService, 'show');
     fixture.detectChanges();
-    component.close();
+    component.onDismissed();
     expect(notificationService.show).toHaveBeenCalled();
     expect(localStorage.getItem('telemetry_notification_hidden')).toBe('true');
   });
index 6b38b75866441ccef55466906dd59bf65104e615..d3800de4a34f1257e8147429b26cbb6ffa7fc275 100644 (file)
@@ -16,6 +16,7 @@ import { TelemetryNotificationService } from '../../services/telemetry-notificat
 })
 export class TelemetryNotificationComponent implements OnInit, OnDestroy {
   displayNotification = false;
+  notificationSeverity = 'warning';
 
   constructor(
     private mgrModuleService: MgrModuleService,
@@ -50,7 +51,7 @@ export class TelemetryNotificationComponent implements OnInit, OnDestroy {
     return localStorage.getItem('telemetry_notification_hidden') === 'true';
   }
 
-  close() {
+  onDismissed(): void {
     this.telemetryNotificationService.setVisibility(false);
     localStorage.setItem('telemetry_notification_hidden', 'true');
     this.notificationService.show(
index 002a53a8e1c6d69979eb01c4ca2a0c19207c088e..56f441050e9108201df9fb20a4511742179950e7 100644 (file)
@@ -312,8 +312,12 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
     if (!this.userConfig.columns) {
       this.updateUserColumns();
     } else {
-      this.columns.forEach((c, i) => {
-        c.isHidden = this.userConfig.columns[i].isHidden;
+      this.userConfig.columns.forEach((col) => {
+        for (let i = 0; i < this.columns.length; i++) {
+          if (this.columns[i].prop === col.prop) {
+            this.columns[i].isHidden = col.isHidden;
+          }
+        }
       });
     }
   }
index f4a9a6134bbfabffc63873104f0e332c7ba923a0..38ce1daa17eca0ff0295658dc7bd0a030218e0d0 100644 (file)
@@ -118,7 +118,6 @@ $color-nav-active-link-bg: $color-primary !default;
 $color-nav-border-top-collapse: $color-white-gray !default;
 
 $navbar-height: 43px;
-$top-notification-height: 37.6px;
 
 /*Helper*/
 $color-helper-bg: $color-primary !default;
index c4e46854b9c09b95ca275e11498b4514bc9dfe86..24b39dff92520ab597a705ad22e14c3263c1e1a0 100644 (file)
@@ -8,7 +8,7 @@ from mgr_module import MgrModule, CommandResult
 import operator
 import rados
 from threading import Event
-from datetime import datetime, timedelta, date, time
+from datetime import datetime, timedelta, date, time, timezone
 from six import iteritems
 
 TIME_FORMAT = '%Y%m%d-%H%M%S'
@@ -491,7 +491,7 @@ class Module(MgrModule):
         devs = self.get("devices")
         osds_in = {}
         osds_out = {}
-        now = datetime.utcnow()
+        now = datetime.now(timezone.utc)  # e.g. '2021-09-22 13:18:45.021712+00:00'
         osdmap = self.get("osd_map")
         assert osdmap is not None
         for dev in devs['devices']:
@@ -506,7 +506,7 @@ class Module(MgrModule):
                 continue
             # life_expectancy_(min/max) is in the format of:
             # '%Y-%m-%dT%H:%M:%S.%f%z', e.g.:
-            # '2019-01-20T21:12:12.000000Z'
+            # '2019-01-20 21:12:12.000000+00:00'
             life_expectancy_max = datetime.strptime(
                 dev['life_expectancy_max'],
                 '%Y-%m-%dT%H:%M:%S.%f%z')
index df6486455d86289081cbef4d0d4d7c916b6be9a7..0d93db31c8906c050725578faa5c53f9441b37d1 100644 (file)
@@ -1,10 +1,19 @@
+import cephfs
 import contextlib
 import datetime
+import errno
 import os
 import socket
-import logging
 import time
+import logging
 from functools import wraps
+import sys
+from threading import Lock, Condition, Event
+from typing import no_type_check
+if sys.version_info >= (3, 3):
+    from threading import Timer
+else:
+    from threading import _Timer as Timer
 
 try:
     from typing import Tuple, Any, Callable
@@ -31,6 +40,231 @@ UNDERLINE_SEQ = "\033[4m"
 logger = logging.getLogger(__name__)
 
 
+class CephfsConnectionException(Exception):
+    def __init__(self, error_code, error_message):
+        self.errno = error_code
+        self.error_str = error_message
+
+    def to_tuple(self):
+        return self.errno, "", self.error_str
+
+    def __str__(self):
+        return "{0} ({1})".format(self.errno, self.error_str)
+
+
+class CephfsConnectionPool(object):
+    class Connection(object):
+        def __init__(self, mgr, fs_name):
+            self.fs = None
+            self.mgr = mgr
+            self.fs_name = fs_name
+            self.ops_in_progress = 0
+            self.last_used = time.time()
+            self.fs_id = self.get_fs_id()
+
+        def get_fs_id(self):
+            fs_map = self.mgr.get('fs_map')
+            for fs in fs_map['filesystems']:
+                if fs['mdsmap']['fs_name'] == self.fs_name:
+                    return fs['id']
+            raise CephfsConnectionException(
+                -errno.ENOENT, "FS '{0}' not found".format(self.fs_name))
+
+        def get_fs_handle(self):
+            self.last_used = time.time()
+            self.ops_in_progress += 1
+            return self.fs
+
+        def put_fs_handle(self, notify):
+            assert self.ops_in_progress > 0
+            self.ops_in_progress -= 1
+            if self.ops_in_progress == 0:
+                notify()
+
+        def del_fs_handle(self, waiter):
+            if waiter:
+                while self.ops_in_progress != 0:
+                    waiter()
+            if self.is_connection_valid():
+                self.disconnect()
+            else:
+                self.abort()
+
+        def is_connection_valid(self):
+            fs_id = None
+            try:
+                fs_id = self.get_fs_id()
+            except:
+                # the filesystem does not exist now -- connection is not valid.
+                pass
+            logger.debug("self.fs_id={0}, fs_id={1}".format(self.fs_id, fs_id))
+            return self.fs_id == fs_id
+
+        def is_connection_idle(self, timeout):
+            return (self.ops_in_progress == 0 and ((time.time() - self.last_used) >= timeout))
+
+        def connect(self):
+            assert self.ops_in_progress == 0
+            logger.debug("Connecting to cephfs '{0}'".format(self.fs_name))
+            self.fs = cephfs.LibCephFS(rados_inst=self.mgr.rados)
+            logger.debug("Setting user ID and group ID of CephFS mount as root...")
+            self.fs.conf_set("client_mount_uid", "0")
+            self.fs.conf_set("client_mount_gid", "0")
+            logger.debug("CephFS initializing...")
+            self.fs.init()
+            logger.debug("CephFS mounting...")
+            self.fs.mount(filesystem_name=self.fs_name.encode('utf-8'))
+            logger.debug("Connection to cephfs '{0}' complete".format(self.fs_name))
+            self.mgr._ceph_register_client(self.fs.get_addrs())
+
+        def disconnect(self):
+            try:
+                assert self.fs
+                assert self.ops_in_progress == 0
+                logger.info("disconnecting from cephfs '{0}'".format(self.fs_name))
+                addrs = self.fs.get_addrs()
+                self.fs.shutdown()
+                self.mgr._ceph_unregister_client(addrs)
+                self.fs = None
+            except Exception as e:
+                logger.debug("disconnect: ({0})".format(e))
+                raise
+
+        def abort(self):
+            assert self.fs
+            assert self.ops_in_progress == 0
+            logger.info("aborting connection from cephfs '{0}'".format(self.fs_name))
+            self.fs.abort_conn()
+            logger.info("abort done from cephfs '{0}'".format(self.fs_name))
+            self.fs = None
+
+    class RTimer(Timer):
+        """
+        recurring timer variant of Timer
+        """
+        @no_type_check
+        def run(self):
+            try:
+                while not self.finished.is_set():
+                    self.finished.wait(self.interval)
+                    self.function(*self.args, **self.kwargs)
+                self.finished.set()
+            except Exception as e:
+                logger.error("CephfsConnectionPool.RTimer: %s", e)
+                raise
+
+    # TODO: make this configurable
+    TIMER_TASK_RUN_INTERVAL = 30.0   # seconds
+    CONNECTION_IDLE_INTERVAL = 60.0  # seconds
+
+    def __init__(self, mgr):
+        self.mgr = mgr
+        self.connections = {}
+        self.lock = Lock()
+        self.cond = Condition(self.lock)
+        self.timer_task = CephfsConnectionPool.RTimer(
+            CephfsConnectionPool.TIMER_TASK_RUN_INTERVAL,
+            self.cleanup_connections)
+        self.timer_task.start()
+
+    def cleanup_connections(self):
+        with self.lock:
+            logger.info("scanning for idle connections..")
+            idle_fs = [fs_name for fs_name, conn in self.connections.items()
+                       if conn.is_connection_idle(CephfsConnectionPool.CONNECTION_IDLE_INTERVAL)]
+            for fs_name in idle_fs:
+                logger.info("cleaning up connection for '{}'".format(fs_name))
+                self._del_fs_handle(fs_name)
+
+    def get_fs_handle(self, fs_name):
+        with self.lock:
+            conn = None
+            try:
+                conn = self.connections.get(fs_name, None)
+                if conn:
+                    if conn.is_connection_valid():
+                        return conn.get_fs_handle()
+                    else:
+                        # filesystem id changed beneath us (or the filesystem does not exist).
+                        # this is possible if the filesystem got removed (and recreated with
+                        # same name) via "ceph fs rm/new" mon command.
+                        logger.warning("filesystem id changed for volume '{0}', reconnecting...".format(fs_name))
+                        self._del_fs_handle(fs_name)
+                conn = CephfsConnectionPool.Connection(self.mgr, fs_name)
+                conn.connect()
+            except cephfs.Error as e:
+                # try to provide a better error string if possible
+                if e.args[0] == errno.ENOENT:
+                    raise CephfsConnectionException(
+                        -errno.ENOENT, "FS '{0}' not found".format(fs_name))
+                raise CephfsConnectionException(-e.args[0], e.args[1])
+            self.connections[fs_name] = conn
+            return conn.get_fs_handle()
+
+    def put_fs_handle(self, fs_name):
+        with self.lock:
+            conn = self.connections.get(fs_name, None)
+            if conn:
+                conn.put_fs_handle(notify=lambda: self.cond.notifyAll())
+
+    def _del_fs_handle(self, fs_name, wait=False):
+        conn = self.connections.pop(fs_name, None)
+        if conn:
+            conn.del_fs_handle(waiter=None if not wait else lambda: self.cond.wait())
+
+    def del_fs_handle(self, fs_name, wait=False):
+        with self.lock:
+            self._del_fs_handle(fs_name, wait)
+
+    def del_all_handles(self):
+        with self.lock:
+            for fs_name in list(self.connections.keys()):
+                logger.info("waiting for pending ops for '{}'".format(fs_name))
+                self._del_fs_handle(fs_name, wait=True)
+                logger.info("pending ops completed for '{}'".format(fs_name))
+            # no new connections should have been initialized since its
+            # guarded on shutdown.
+            assert len(self.connections) == 0
+
+
+class CephfsClient(object):
+    def __init__(self, mgr):
+        self.mgr = mgr
+        self.stopping = Event()
+        self.connection_pool = CephfsConnectionPool(self.mgr)
+
+    def is_stopping(self):
+        return self.stopping.is_set()
+
+    def shutdown(self):
+        logger.info("shutting down")
+        # first, note that we're shutting down
+        self.stopping.set()
+        # second, delete all libcephfs handles from connection pool
+        self.connection_pool.del_all_handles()
+
+
+@contextlib.contextmanager
+def open_filesystem(fsc, fs_name):
+    """
+    Open a volume with shared access.
+    This API is to be used as a context manager.
+
+    :param fsc: cephfs client instance
+    :param fs_name: fs name
+    :return: yields a fs handle (ceph filesystem handle)
+    """
+    if fsc.is_stopping():
+        raise CephfsConnectionException(-errno.ESHUTDOWN,
+                                        "shutdown in progress")
+
+    fs_handle = fsc.connection_pool.get_fs_handle(fs_name)
+    try:
+        yield fs_handle
+    finally:
+        fsc.connection_pool.put_fs_handle(fs_name)
+
+
 def colorize(msg, color, dark=False):
     """
     Decorate `msg` with escape sequences to give the requested color
index c22ac4c2d3fefe038cfb9d03b25de13665875ca1..5deb8f45b689e0a8338d9713d94efebdd9abb5a7 100644 (file)
@@ -16,7 +16,7 @@ import uuid
 
 from collections import namedtuple, OrderedDict
 from contextlib import contextmanager
-from functools import wraps
+from functools import wraps, update_wrapper
 
 import yaml
 
@@ -979,8 +979,10 @@ class Orchestrator(object):
         :param osd_ids: list of OSD IDs
         :param replace: marks the OSD as being destroyed. See :ref:`orchestrator-osd-replace`
         :param force: Forces the OSD removal process without waiting for the data to be drained first.
-        Note that this can only remove OSDs that were successfully
-        created (i.e. got an OSD ID).
+
+
+        .. note:: this can only remove OSDs that were successfully
+            created (i.e. got an OSD ID).
         """
         raise NotImplementedError()
 
@@ -1470,13 +1472,14 @@ class InventoryFilter(object):
     When fetching inventory, use this filter to avoid unnecessarily
     scanning the whole estate.
 
-    Typical use: filter by host when presenting UI workflow for configuring
-                 a particular server.
-                 filter by label when not all of estate is Ceph servers,
-                 and we want to only learn about the Ceph servers.
-                 filter by label when we are interested particularly
-                 in e.g. OSD servers.
+    Typical use:
 
+      filter by host when presentig UI workflow for configuring
+      a particular server.
+      filter by label when not all of estate is Ceph servers,
+      and we want to only learn about the Ceph servers.
+      filter by label when we are interested particularly
+      in e.g. OSD servers.
     """
 
     def __init__(self, labels: Optional[List[str]] = None, hosts: Optional[List[str]] = None) -> None:
@@ -1630,9 +1633,10 @@ def _mk_orch_methods(cls):
             return completion
         return inner
 
-    for meth in Orchestrator.__dict__:
-        if not meth.startswith('_') and meth not in ['is_orchestrator_module']:
-            setattr(cls, meth, shim(meth))
+    for name, method in Orchestrator.__dict__.items():
+        if not name.startswith('_') and name not in ['is_orchestrator_module']:
+            remote_call = update_wrapper(shim(name), method)
+            setattr(cls, name, remote_call)
     return cls
 
 
index c150b11efa53c979185cb8bd19df7a8465704774..1af516d0d0ba49b568fa1760da9f3a1e5dbf1b7c 100644 (file)
@@ -14,7 +14,10 @@ from mgr_util import get_default_addr, profile_method
 from rbd import RBD
 from collections import namedtuple
 try:
-    from typing import DefaultDict, Optional, Dict, Any, Set
+    from typing import DefaultDict, Optional, Dict, Any, Set, Tuple, Union, List, Callable
+    LabelValues = Tuple[str, ...]
+    Number = Union[int, float]
+    MetricValue = Dict[LabelValues, Number]
 except ImportError:
     pass
 
@@ -66,7 +69,7 @@ def health_status_to_number(status):
 
 DF_CLUSTER = ['total_bytes', 'total_used_bytes', 'total_used_raw_bytes']
 
-DF_POOL = ['max_avail', 'stored', 'stored_raw', 'objects', 'dirty',
+DF_POOL = ['max_avail', 'avail_raw', 'stored', 'stored_raw', 'objects', 'dirty',
            'quota_bytes', 'quota_objects', 'rd', 'rd_bytes', 'wr', 'wr_bytes',
            'compress_bytes_used', 'compress_under_bytes']
 
@@ -186,6 +189,98 @@ class Metric(object):
             )
         return expfmt
 
+    def group_by(
+        self,
+        keys: List[str],
+        joins: Dict[str, Callable[[List[str]], str]],
+        name: Optional[str] = None,
+    ) -> "Metric":
+        """
+        Groups data by label names.
+
+        Label names not passed are being removed from the resulting metric but
+        by providing a join function, labels of metrics can be grouped.
+
+        The purpose of this method is to provide a version of a metric that can
+        be used in matching where otherwise multiple results would be returned.
+
+        As grouping is possible in Prometheus, the only additional value of this
+        method is the possibility to join labels when grouping. For that reason,
+        passing joins is required. Please use PromQL expressions in all other
+        cases.
+
+        >>> m = Metric('type', 'name', '', labels=('label1', 'id'))
+        >>> m.value = {
+        ...     ('foo', 'x'): 1,
+        ...     ('foo', 'y'): 1,
+        ... }
+        >>> m.group_by(['label1'], {'id': lambda ids: ','.join(ids)}).value
+        {('foo', 'x,y'): 1}
+
+        The functionality of group by could roughly be compared with Prometheus'
+
+            group (ceph_disk_occupation) by (device, instance)
+
+        with the exception that not all labels which aren't used as a condition
+        to group a metric are discarded, but their values can are joined and the
+        label is thereby preserved.
+
+        This function takes the value of the first entry of a found group to be
+        used for the resulting value of the grouping operation.
+
+        >>> m = Metric('type', 'name', '', labels=('label1', 'id'))
+        >>> m.value = {
+        ...     ('foo', 'x'): 555,
+        ...     ('foo', 'y'): 10,
+        ... }
+        >>> m.group_by(['label1'], {'id': lambda ids: ','.join(ids)}).value
+        {('foo', 'x,y'): 555}
+        """
+        assert self.labelnames, "cannot match keys without label names"
+        for key in keys:
+            assert key in self.labelnames, "unknown key: {}".format(key)
+        assert joins, "joins must not be empty"
+        assert all(callable(c) for c in joins.values()), "joins must be callable"
+
+        # group
+        grouped = defaultdict(list)  # type: Dict[LabelValues, List[Tuple[Dict[str, str], Number]]]
+        for label_values, metric_value in self.value.items():
+            labels = dict(zip(self.labelnames, label_values))
+            if not all(k in labels for k in keys):
+                continue
+            group_key = tuple(labels[k] for k in keys)
+            grouped[group_key].append((labels, metric_value))
+
+        # as there is nothing specified on how to join labels that are not equal
+        # and Prometheus `group` aggregation functions similarly, we simply drop
+        # those labels.
+        labelnames = tuple(
+            label for label in self.labelnames if label in keys or label in joins
+        )
+        superfluous_labelnames = [
+            label for label in self.labelnames if label not in labelnames
+        ]
+
+        # iterate and convert groups with more than one member into a single
+        # entry
+        values = {}  # type: MetricValue
+        for group in grouped.values():
+            labels, metric_value = group[0]
+
+            for label in superfluous_labelnames:
+                del labels[label]
+
+            if len(group) > 1:
+                for key, fn in joins.items():
+                    labels[key] = fn(list(labels[key] for labels, _ in group))
+
+            values[tuple(labels.values())] = metric_value
+
+        new_metric = Metric(self.mtype, name if name else self.name, self.desc, labelnames)
+        new_metric.value = values
+
+        return new_metric
+
 
 class MetricCollectionThread(threading.Thread):
     def __init__(self, module):
@@ -364,6 +459,14 @@ class Module(MgrModule):
             DISK_OCCUPATION
         )
 
+        metrics['disk_occupation_human'] = Metric(
+            'untyped',
+            'disk_occupation_human',
+            'Associate Ceph daemon with disk used for displaying to humans,'
+            ' not for joining tables (vector matching)',
+            DISK_OCCUPATION,  # label names are automatically decimated on grouping
+        )
+
         metrics['pool_metadata'] = Metric(
             'untyped',
             'pool_metadata',
@@ -770,6 +873,17 @@ class Module(MgrModule):
                 self.log.info("Missing dev node metadata for osd {0}, skipping "
                               "occupation record for this osd".format(id_))
 
+        if 'disk_occupation' in self.metrics:
+            try:
+                self.metrics['disk_occupation_human'] = \
+                    self.metrics['disk_occupation'].group_by(
+                        ['device', 'instance'],
+                        {'ceph_daemon': lambda daemons: ', '.join(daemons)},
+                        name='disk_occupation_human',
+                )
+            except Exception as e:
+                self.log.error(e)
+
         for pool in osd_map['pools']:
             self.metrics['pool_metadata'].set(
                 1, (pool['pool'], pool['pool_name']))
diff --git a/ceph/src/pybind/mgr/prometheus/test_module.py b/ceph/src/pybind/mgr/prometheus/test_module.py
new file mode 100644 (file)
index 0000000..0647cb6
--- /dev/null
@@ -0,0 +1,93 @@
+from typing import Dict
+from unittest import TestCase
+
+from prometheus.module import Metric, LabelValues, Number
+
+
+class MetricGroupTest(TestCase):
+    def setUp(self):
+        self.DISK_OCCUPATION = (
+            "ceph_daemon",
+            "device",
+            "db_device",
+            "wal_device",
+            "instance",
+        )
+        self.metric_value: Dict[LabelValues, Number] = {
+            ("osd.0", "/dev/dm-0", "", "", "node1"): 1,
+            ("osd.1", "/dev/dm-0", "", "", "node3"): 1,
+            ("osd.2", "/dev/dm-0", "", "", "node2"): 1,
+            ("osd.3", "/dev/dm-1", "", "", "node1"): 1,
+            ("osd.4", "/dev/dm-1", "", "", "node3"): 1,
+            ("osd.5", "/dev/dm-1", "", "", "node2"): 1,
+            ("osd.6", "/dev/dm-1", "", "", "node2"): 1,
+        }
+
+    def test_metric_group_by(self):
+        m = Metric("untyped", "disk_occupation", "", self.DISK_OCCUPATION)
+        m.value = self.metric_value
+        grouped_metric = m.group_by(
+            ["device", "instance"],
+            {"ceph_daemon": lambda xs: "+".join(xs)},
+            name="disk_occupation_display",
+        )
+        self.assertEqual(
+            grouped_metric.value,
+            {
+                ("osd.0", "/dev/dm-0", "node1"): 1,
+                ("osd.1", "/dev/dm-0", "node3"): 1,
+                ("osd.2", "/dev/dm-0", "node2"): 1,
+                ("osd.3", "/dev/dm-1", "node1"): 1,
+                ("osd.4", "/dev/dm-1", "node3"): 1,
+                ("osd.5+osd.6", "/dev/dm-1", "node2"): 1,
+            },
+        )
+        self.maxDiff = None
+        self.assertEqual(
+            grouped_metric.str_expfmt(),
+            """
+# HELP ceph_disk_occupation_display 
+# TYPE ceph_disk_occupation_display untyped
+ceph_disk_occupation_display{ceph_daemon="osd.0",device="/dev/dm-0",instance="node1"} 1.0
+ceph_disk_occupation_display{ceph_daemon="osd.1",device="/dev/dm-0",instance="node3"} 1.0
+ceph_disk_occupation_display{ceph_daemon="osd.2",device="/dev/dm-0",instance="node2"} 1.0
+ceph_disk_occupation_display{ceph_daemon="osd.3",device="/dev/dm-1",instance="node1"} 1.0
+ceph_disk_occupation_display{ceph_daemon="osd.4",device="/dev/dm-1",instance="node3"} 1.0
+ceph_disk_occupation_display{ceph_daemon="osd.5+osd.6",device="/dev/dm-1",instance="node2"} 1.0""",  # noqa: W291
+        )
+        self.assertEqual(
+            grouped_metric.labelnames, ("ceph_daemon", "device", "instance")
+        )
+
+    def test_metric_group_by__no_value(self):
+        m = Metric("metric_type", "name", "desc", labels=('foo', 'bar'))
+        grouped = m.group_by(['foo'], {'bar': lambda bars: ', '.join(bars)})
+        self.assertEqual(grouped.value, {})
+        self.assertEqual(grouped.str_expfmt(),
+                         '\n# HELP ceph_name desc\n# TYPE ceph_name metric_type')
+
+    def test_metric_group_by__no_labels(self):
+        m = Metric("metric_type", "name", "desc", labels=None)
+        with self.assertRaises(AssertionError) as cm:
+            m.group_by([], {})
+        self.assertEqual(str(cm.exception), "cannot match keys without label names")
+
+    def test_metric_group_by__key_not_in_labels(self):
+        m = Metric("metric_type", "name", "desc", labels=("foo", "bar"))
+        m.value = self.metric_value
+        with self.assertRaises(AssertionError) as cm:
+            m.group_by(["baz"], {})
+        self.assertEqual(str(cm.exception), "unknown key: baz")
+
+    def test_metric_group_by__empty_joins(self):
+        m = Metric("", "", "", ("foo", "bar"))
+        with self.assertRaises(AssertionError) as cm:
+            m.group_by(["foo"], joins={})
+        self.assertEqual(str(cm.exception), "joins must not be empty")
+
+    def test_metric_group_by__joins_not_callable(self):
+        m = Metric("", "", "", ("foo", "bar"))
+        m.value = self.metric_value
+        with self.assertRaises(AssertionError) as cm:
+            m.group_by(["foo"], {"bar": "not callable str"})
+        self.assertEqual(str(cm.exception), "joins must be callable")
index e5a14e46787769c7ab9be1c6299caa2bbc500aff..536ee3d16c9997fdfd4fa2cbb5cb7977c99cd557 100644 (file)
@@ -11,8 +11,6 @@ from threading import Condition, Lock, Thread
 from .common import get_rbd_pools
 from .schedule import LevelSpec, Interval, StartTime, Schedule, Schedules
 
-MIRRORING_OID = "rbd_mirroring"
-
 def namespace_validator(ioctx):
     mode = rbd.RBD().mirror_mode_get(ioctx)
     if mode != rbd.RBD_MIRROR_MODE_IMAGE:
@@ -24,125 +22,6 @@ def image_validator(image):
     if mode != rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT:
         raise rbd.InvalidArgument("Invalid mirror image mode")
 
-class Watchers:
-
-    lock = Lock()
-
-    def __init__(self, handler):
-        self.rados = handler.module.rados
-        self.log = handler.log
-        self.watchers = {}
-        self.updated = {}
-        self.error = {}
-        self.epoch = {}
-
-    def __del__(self):
-        self.unregister_all()
-
-    def _clean_watcher(self, pool_id, namespace, watch_id):
-        assert self.lock.locked()
-
-        del self.watchers[pool_id, namespace]
-        self.updated.pop(watch_id, None)
-        self.error.pop(watch_id, None)
-        self.epoch.pop(watch_id, None)
-
-    def check(self, pool_id, namespace, epoch):
-        error = None
-        with self.lock:
-            watch = self.watchers.get((pool_id, namespace))
-            if watch is not None:
-                error = self.error.get(watch.get_id())
-                if not error:
-                    updated = self.updated[watch.get_id()]
-                    self.updated[watch.get_id()] = False
-                    self.epoch[watch.get_id()] = epoch
-                    return updated
-        if error:
-            self.unregister(pool_id, namespace)
-
-        if self.register(pool_id, namespace):
-            return self.check(pool_id, namespace, epoch)
-        else:
-            return True
-
-    def register(self, pool_id, namespace):
-
-        def callback(notify_id, notifier_id, watch_id, data):
-            self.log.debug("watcher {}: got notify {} from {}".format(
-                watch_id, notify_id, notifier_id))
-
-            with self.lock:
-                self.updated[watch_id] = True
-
-        def error_callback(watch_id, error):
-            self.log.debug("watcher {}: got errror {}".format(
-                watch_id, error))
-
-            with self.lock:
-                self.error[watch_id] = error
-
-        try:
-            ioctx = self.rados.open_ioctx2(int(pool_id))
-            ioctx.set_namespace(namespace)
-            watch = ioctx.watch(MIRRORING_OID, callback, error_callback)
-        except rados.ObjectNotFound:
-            self.log.debug(
-                "{}/{}/{} watcher not registered: object not found".format(
-                    pool_id, namespace, MIRRORING_OID))
-            return False
-
-        self.log.debug("{}/{}/{} watcher {} registered".format(
-            pool_id, namespace, MIRRORING_OID, watch.get_id()))
-
-        with self.lock:
-            self.watchers[pool_id, namespace] = watch
-            self.updated[watch.get_id()] = True
-        return True
-
-    def unregister(self, pool_id, namespace):
-
-        with self.lock:
-            watch = self.watchers[pool_id, namespace]
-
-        watch_id = watch.get_id()
-
-        try:
-            watch.close()
-
-            self.log.debug("{}/{}/{} watcher {} unregistered".format(
-                pool_id, namespace, MIRRORING_OID, watch_id))
-
-        except rados.Error as e:
-            self.log.debug(
-                "exception when unregistering {}/{} watcher: {}".format(
-                    pool_id, namespace, e))
-
-        with self.lock:
-            self._clean_watcher(pool_id, namespace, watch_id)
-
-    def unregister_all(self):
-        with self.lock:
-            watchers = list(self.watchers)
-
-        for pool_id, namespace in watchers:
-            self.unregister(pool_id, namespace)
-
-    def unregister_stale(self, current_epoch):
-        with self.lock:
-            watchers = list(self.watchers)
-
-        for pool_id, namespace in watchers:
-            with self.lock:
-                watch = self.watchers[pool_id, namespace]
-                if self.epoch.get(watch.get_id()) == current_epoch:
-                    continue
-
-            self.log.debug("{}/{}/{} watcher {} stale".format(
-                pool_id, namespace, MIRRORING_OID, watch_id))
-
-            self.unregister(pool_id, namespace)
-
 
 class CreateSnapshotRequests:
 
@@ -421,6 +300,7 @@ class MirrorSnapshotScheduleHandler:
     MODULE_OPTION_NAME = "mirror_snapshot_schedule"
     MODULE_OPTION_NAME_MAX_CONCURRENT_SNAP_CREATE = "max_concurrent_snap_create"
     SCHEDULE_OID = "rbd_mirror_snapshot_schedule"
+    REFRESH_DELAY_SECONDS = 60.0
 
     lock = Lock()
     condition = Condition(lock)
@@ -438,18 +318,17 @@ class MirrorSnapshotScheduleHandler:
         self.thread.start()
 
     def _cleanup(self):
-        self.watchers.unregister_all()
         self.create_snapshot_requests.wait_for_pending()
 
     def run(self):
         try:
             self.log.info("MirrorSnapshotScheduleHandler: starting")
             while True:
-                self.refresh_images()
+                refresh_delay = self.refresh_images()
                 with self.lock:
                     (image_spec, wait_time) = self.dequeue()
                     if not image_spec:
-                        self.condition.wait(min(wait_time, 60))
+                        self.condition.wait(min(wait_time, refresh_delay))
                         continue
                 pool_id, namespace, image_id = image_spec
                 self.create_snapshot_requests.add(pool_id, namespace, image_id)
@@ -463,35 +342,32 @@ class MirrorSnapshotScheduleHandler:
     def init_schedule_queue(self):
         self.queue = {}
         self.images = {}
-        self.watchers = Watchers(self)
         self.refresh_images()
-        self.log.debug("scheduler queue is initialized")
+        self.log.debug("MirrorSnapshotScheduleHandler: queue is initialized")
 
     def load_schedules(self):
         self.log.info("MirrorSnapshotScheduleHandler: load_schedules")
 
         schedules = Schedules(self)
         schedules.load(namespace_validator, image_validator)
-        with self.lock:
-            self.schedules = schedules
+        self.schedules = schedules
 
     def refresh_images(self):
-        if (datetime.now() - self.last_refresh_images).seconds < 60:
-            return
+        elapsed = (datetime.now() - self.last_refresh_images).total_seconds()
+        if elapsed < self.REFRESH_DELAY_SECONDS:
+            return self.REFRESH_DELAY_SECONDS - elapsed
 
         self.log.debug("MirrorSnapshotScheduleHandler: refresh_images")
 
-        self.load_schedules()
-
         with self.lock:
+            self.load_schedules()
             if not self.schedules:
-                self.watchers.unregister_all()
+                self.log.debug("MirrorSnapshotScheduleHandler: no schedules")
                 self.images = {}
                 self.queue = {}
                 self.last_refresh_images = datetime.now()
-                return
+                return self.REFRESH_DELAY_SECONDS
 
-        epoch = int(datetime.now().strftime('%s'))
         images = {}
 
         for pool_id, pool_name in get_rbd_pools(self.module).items():
@@ -499,16 +375,16 @@ class MirrorSnapshotScheduleHandler:
                     LevelSpec.from_pool_spec(pool_id, pool_name)):
                 continue
             with self.module.rados.open_ioctx2(int(pool_id)) as ioctx:
-                self.load_pool_images(ioctx, epoch, images)
+                self.load_pool_images(ioctx, images)
 
         with self.lock:
             self.refresh_queue(images)
             self.images = images
 
-        self.watchers.unregister_stale(epoch)
         self.last_refresh_images = datetime.now()
+        return self.REFRESH_DELAY_SECONDS
 
-    def load_pool_images(self, ioctx, epoch, images):
+    def load_pool_images(self, ioctx, images):
         pool_id = str(ioctx.get_pool_id())
         pool_name = ioctx.get_pool_name()
         images[pool_id] = {}
@@ -525,14 +401,6 @@ class MirrorSnapshotScheduleHandler:
                     pool_name, namespace))
                 images[pool_id][namespace] = {}
                 ioctx.set_namespace(namespace)
-                updated = self.watchers.check(pool_id, namespace, epoch)
-                if not updated:
-                    self.log.debug("load_pool_images: {}/{} not updated".format(
-                        pool_name, namespace))
-                    with self.lock:
-                        images[pool_id][namespace] = \
-                            self.images[pool_id][namespace]
-                    continue
                 mirror_images = dict(rbd.RBD().mirror_image_info_list(
                     ioctx, rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT))
                 if not mirror_images:
@@ -561,25 +429,24 @@ class MirrorSnapshotScheduleHandler:
                     pool_name, e))
 
     def rebuild_queue(self):
-        with self.lock:
-            now = datetime.now()
+        now = datetime.now()
 
-            # don't remove from queue "due" images
-            now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
+        # don't remove from queue "due" images
+        now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
 
-            for schedule_time in list(self.queue):
-                if schedule_time > now_string:
-                    del self.queue[schedule_time]
+        for schedule_time in list(self.queue):
+            if schedule_time > now_string:
+                del self.queue[schedule_time]
 
-            if not self.schedules:
-                return
+        if not self.schedules:
+            return
 
-            for pool_id in self.images:
-                for namespace in self.images[pool_id]:
-                    for image_id in self.images[pool_id][namespace]:
-                        self.enqueue(now, pool_id, namespace, image_id)
+        for pool_id in self.images:
+            for namespace in self.images[pool_id]:
+                for image_id in self.images[pool_id][namespace]:
+                    self.enqueue(now, pool_id, namespace, image_id)
 
-            self.condition.notify()
+        self.condition.notify()
 
     def refresh_queue(self, current_images):
         now = datetime.now()
@@ -603,16 +470,19 @@ class MirrorSnapshotScheduleHandler:
         self.condition.notify()
 
     def enqueue(self, now, pool_id, namespace, image_id):
-
         schedule = self.schedules.find(pool_id, namespace, image_id)
         if not schedule:
+            self.log.debug(
+                "MirrorSnapshotScheduleHandler: no schedule for {}/{}/{}".format(
+                    pool_id, namespace, image_id))
             return
 
         schedule_time = schedule.next_run(now)
         if schedule_time not in self.queue:
             self.queue[schedule_time] = []
-        self.log.debug("schedule image {}/{}/{} at {}".format(
-            pool_id, namespace, image_id, schedule_time))
+        self.log.debug(
+            "MirrorSnapshotScheduleHandler: scheduling {}/{}/{} at {}".format(
+                pool_id, namespace, image_id, schedule_time))
         image_spec = (pool_id, namespace, image_id)
         if image_spec not in self.queue[schedule_time]:
             self.queue[schedule_time].append((pool_id, namespace, image_id))
@@ -636,6 +506,10 @@ class MirrorSnapshotScheduleHandler:
         return image, 0
 
     def remove_from_queue(self, pool_id, namespace, image_id):
+        self.log.debug(
+            "MirrorSnapshotScheduleHandler: descheduling {}/{}/{}".format(
+                pool_id, namespace, image_id))
+
         empty_slots = []
         for schedule_time, images in self.queue.items():
             if (pool_id, namespace, image_id) in images:
@@ -647,30 +521,30 @@ class MirrorSnapshotScheduleHandler:
 
     def add_schedule(self, level_spec, interval, start_time):
         self.log.debug(
-            "add_schedule: level_spec={}, interval={}, start_time={}".format(
+            "MirrorSnapshotScheduleHandler: add_schedule: level_spec={}, interval={}, start_time={}".format(
                 level_spec.name, interval, start_time))
 
+        # TODO: optimize to rebuild only affected part of the queue
         with self.lock:
             self.schedules.add(level_spec, interval, start_time)
-
-        # TODO: optimize to rebuild only affected part of the queue
-        self.rebuild_queue()
+            self.rebuild_queue()
         return 0, "", ""
 
     def remove_schedule(self, level_spec, interval, start_time):
         self.log.debug(
-            "remove_schedule: level_spec={}, interval={}, start_time={}".format(
+            "MirrorSnapshotScheduleHandler: remove_schedule: level_spec={}, interval={}, start_time={}".format(
                 level_spec.name, interval, start_time))
 
+        # TODO: optimize to rebuild only affected part of the queue
         with self.lock:
             self.schedules.remove(level_spec, interval, start_time)
-
-        # TODO: optimize to rebuild only affected part of the queue
-        self.rebuild_queue()
+            self.rebuild_queue()
         return 0, "", ""
 
     def list(self, level_spec):
-        self.log.debug("list: level_spec={}".format(level_spec.name))
+        self.log.debug(
+            "MirrorSnapshotScheduleHandler: list: level_spec={}".format(
+                level_spec.name))
 
         with self.lock:
             result = self.schedules.to_list(level_spec)
@@ -678,7 +552,9 @@ class MirrorSnapshotScheduleHandler:
         return 0, json.dumps(result, indent=4, sort_keys=True), ""
 
     def status(self, level_spec):
-        self.log.debug("status: level_spec={}".format(level_spec.name))
+        self.log.debug(
+            "MirrorSnapshotScheduleHandler: status: level_spec={}".format(
+                level_spec.name))
 
         scheduled_images = []
         with self.lock:
index 09e9a26a9ea79e45b81d0f50a48a05cd2fc83b30..3063a086a4117b7f37eb966b8bcbd642057496a1 100644 (file)
@@ -462,10 +462,12 @@ class Schedules:
             if interval is None:
                 schedule = None
             else:
-                schedule.remove(Interval.from_string(interval),
-                                StartTime.from_string(start_time))
-                if schedule:
-                    self.schedules[level_spec.id] = schedule
+                try:
+                    schedule.remove(Interval.from_string(interval),
+                                    StartTime.from_string(start_time))
+                finally:
+                    if schedule:
+                        self.schedules[level_spec.id] = schedule
             if not schedule:
                 del self.level_specs[level_spec.id]
         self.save(level_spec, schedule)
index 930607d4843073edd7209d876b52b8e021fff6b7..bf5d8ae70815a5700c33a46a26f9876f7669721f 100644 (file)
@@ -15,6 +15,7 @@ from .schedule import LevelSpec, Interval, StartTime, Schedule, Schedules
 class TrashPurgeScheduleHandler:
     MODULE_OPTION_NAME = "trash_purge_schedule"
     SCHEDULE_OID = "rbd_trash_purge_schedule"
+    REFRESH_DELAY_SECONDS = 60.0
 
     lock = Lock()
     condition = Condition(lock)
@@ -34,11 +35,11 @@ class TrashPurgeScheduleHandler:
         try:
             self.log.info("TrashPurgeScheduleHandler: starting")
             while True:
-                self.refresh_pools()
+                refresh_delay = self.refresh_pools()
                 with self.lock:
                     (ns_spec, wait_time) = self.dequeue()
                     if not ns_spec:
-                        self.condition.wait(min(wait_time, 60))
+                        self.condition.wait(min(wait_time, refresh_delay))
                         continue
                 pool_id, namespace = ns_spec
                 self.trash_purge(pool_id, namespace)
@@ -63,23 +64,30 @@ class TrashPurgeScheduleHandler:
         self.queue = {}
         self.pools = {}
         self.refresh_pools()
-        self.log.debug("scheduler queue is initialized")
+        self.log.debug("TrashPurgeScheduleHandler: queue is initialized")
 
     def load_schedules(self):
         self.log.info("TrashPurgeScheduleHandler: load_schedules")
 
         schedules = Schedules(self)
         schedules.load()
-        with self.lock:
-            self.schedules = schedules
+        self.schedules = schedules
 
     def refresh_pools(self):
-        if (datetime.now() - self.last_refresh_pools).seconds < 60:
-            return
+        elapsed = (datetime.now() - self.last_refresh_pools).total_seconds()
+        if elapsed < self.REFRESH_DELAY_SECONDS:
+            return self.REFRESH_DELAY_SECONDS - elapsed
 
         self.log.debug("TrashPurgeScheduleHandler: refresh_pools")
 
-        self.load_schedules()
+        with self.lock:
+            self.load_schedules()
+            if not self.schedules:
+                self.log.debug("TrashPurgeScheduleHandler: no schedules")
+                self.pools = {}
+                self.queue = {}
+                self.last_refresh_pools = datetime.now()
+                return self.REFRESH_DELAY_SECONDS
 
         pools = {}
 
@@ -95,6 +103,7 @@ class TrashPurgeScheduleHandler:
             self.pools = pools
 
         self.last_refresh_pools = datetime.now()
+        return self.REFRESH_DELAY_SECONDS
 
     def load_pool(self, ioctx, pools):
         pool_id = str(ioctx.get_pool_id())
@@ -116,24 +125,23 @@ class TrashPurgeScheduleHandler:
             pools[pool_id][namespace] = pool_name
 
     def rebuild_queue(self):
-        with self.lock:
-            now = datetime.now()
+        now = datetime.now()
 
-            # don't remove from queue "due" images
-            now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
+        # don't remove from queue "due" images
+        now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
 
-            for schedule_time in list(self.queue):
-                if schedule_time > now_string:
-                    del self.queue[schedule_time]
+        for schedule_time in list(self.queue):
+            if schedule_time > now_string:
+                del self.queue[schedule_time]
 
-            if not self.schedules:
-                return
+        if not self.schedules:
+            return
 
-            for pool_id, namespaces in self.pools.items():
-                for namespace in namespaces:
-                    self.enqueue(now, pool_id, namespace)
+        for pool_id, namespaces in self.pools.items():
+            for namespace in namespaces:
+                self.enqueue(now, pool_id, namespace)
 
-            self.condition.notify()
+        self.condition.notify()
 
     def refresh_queue(self, current_pools):
         now = datetime.now()
@@ -153,16 +161,19 @@ class TrashPurgeScheduleHandler:
         self.condition.notify()
 
     def enqueue(self, now, pool_id, namespace):
-
         schedule = self.schedules.find(pool_id, namespace)
         if not schedule:
+            self.log.debug(
+                "TrashPurgeScheduleHandler: no schedule for {}/{}".format(
+                    pool_id, namespace))
             return
 
         schedule_time = schedule.next_run(now)
         if schedule_time not in self.queue:
             self.queue[schedule_time] = []
-        self.log.debug("schedule {}/{} at {}".format(
-            pool_id, namespace, schedule_time))
+        self.log.debug(
+            "TrashPurgeScheduleHandler: scheduling {}/{} at {}".format(
+                pool_id, namespace, schedule_time))
         ns_spec = (pool_id, namespace)
         if ns_spec not in self.queue[schedule_time]:
             self.queue[schedule_time].append((pool_id, namespace))
@@ -186,6 +197,10 @@ class TrashPurgeScheduleHandler:
         return namespace, 0
 
     def remove_from_queue(self, pool_id, namespace):
+        self.log.debug(
+            "TrashPurgeScheduleHandler: descheduling {}/{}".format(
+                pool_id, namespace))
+
         empty_slots = []
         for schedule_time, namespaces in self.queue.items():
             if (pool_id, namespace) in namespaces:
@@ -197,30 +212,30 @@ class TrashPurgeScheduleHandler:
 
     def add_schedule(self, level_spec, interval, start_time):
         self.log.debug(
-            "add_schedule: level_spec={}, interval={}, start_time={}".format(
+            "TrashPurgeScheduleHandler: add_schedule: level_spec={}, interval={}, start_time={}".format(
                 level_spec.name, interval, start_time))
 
+        # TODO: optimize to rebuild only affected part of the queue
         with self.lock:
             self.schedules.add(level_spec, interval, start_time)
-
-        # TODO: optimize to rebuild only affected part of the queue
-        self.rebuild_queue()
+            self.rebuild_queue()
         return 0, "", ""
 
     def remove_schedule(self, level_spec, interval, start_time):
         self.log.debug(
-            "remove_schedule: level_spec={}, interval={}, start_time={}".format(
+            "TrashPurgeScheduleHandler: remove_schedule: level_spec={}, interval={}, start_time={}".format(
                 level_spec.name, interval, start_time))
 
+        # TODO: optimize to rebuild only affected part of the queue
         with self.lock:
             self.schedules.remove(level_spec, interval, start_time)
-
-        # TODO: optimize to rebuild only affected part of the queue
-        self.rebuild_queue()
+            self.rebuild_queue()
         return 0, "", ""
 
     def list(self, level_spec):
-        self.log.debug("list: level_spec={}".format(level_spec.name))
+        self.log.debug(
+            "TrashPurgeScheduleHandler: list: level_spec={}".format(
+                level_spec.name))
 
         with self.lock:
             result = self.schedules.to_list(level_spec)
@@ -228,7 +243,9 @@ class TrashPurgeScheduleHandler:
         return 0, json.dumps(result, indent=4, sort_keys=True), ""
 
     def status(self, level_spec):
-        self.log.debug("status: level_spec={}".format(level_spec.name))
+        self.log.debug(
+            "TrashPurgeScheduleHandler: status: level_spec={}".format(
+                level_spec.name))
 
         scheduled = []
         with self.lock:
index b7c8a12a5895ddc44dfa31518f7a093c6ad5bb83..7fdd0f7926b3b54350d0cde2b2bebe75e35e2e19 100644 (file)
@@ -1,3 +1,4 @@
+cherrypy
 pytest-cov==2.7.1
 mock; python_version <= '3.3'
 ipaddress; python_version < '3.3'
index f025e94013a81d05951e2bbea413ca2ba1ea83d0..41b8a4b111c9245a407d0bba8d6aed6f281d2045 100644 (file)
@@ -204,13 +204,17 @@ class Module(MgrModule):
         self.last_report = dict()
         self.report_id = None
         self.salt = None
+        self.config_update_module_option()
 
-    def config_notify(self):
+    def config_update_module_option(self):
         for opt in self.MODULE_OPTIONS:
             setattr(self,
                     opt['name'],
                     self.get_module_option(opt['name']))
             self.log.debug(' %s = %s', opt['name'], getattr(self, opt['name']))
+
+    def config_notify(self):
+        self.config_update_module_option()
         # wake up serve() thread
         self.event.set()
 
@@ -823,11 +827,10 @@ class Module(MgrModule):
 
     def serve(self):
         self.load()
-        self.config_notify()
         self.run = True
 
         self.log.debug('Waiting for mgr to warm up')
-        self.event.wait(10)
+        time.sleep(10)
 
         while self.run:
             self.event.clear()
index 3e129ba64eb16a422358678aa3e1fd42f52bdc69..7eec81613fd7f8e0acdca63ab5f0917f54dd05cc 100644 (file)
@@ -32,7 +32,7 @@ setenv =
     LD_LIBRARY_PATH = ../../../build/lib
 deps =
     cython
-    -rrequirements.txt
+    -r requirements.txt
 commands =
     pytest --cov --cov-append --cov-report= --doctest-modules {posargs: \
         mgr_util.py \
@@ -40,13 +40,15 @@ commands =
         cephadm/ \
         orchestrator/ \
         pg_autoscaler/ \
-        progress/}
+        progress/ \
+        prometheus/ \
+        }
 
 [testenv:mypy]
 basepython = python3
 deps =
     cython
-    -rrequirements.txt
+    -r requirements.txt
     mypy==0.770
 commands =
     mypy --config-file=../../mypy.ini \
index d08b7846512938d7443c20e7ef60dfdf32a597da..802a43f413b4072c254b1d58d8dae50cf73e0a56 100644 (file)
@@ -4,6 +4,7 @@ import time
 import errno
 import logging
 from contextlib import contextmanager
+from typing import Optional
 
 import cephfs
 
@@ -22,13 +23,13 @@ from .operations.template import SubvolumeOpType
 log = logging.getLogger(__name__)
 
 # helper for fetching a clone entry for a given volume
-def get_next_clone_entry(volume_client, volname, running_jobs):
+def get_next_clone_entry(fs_client, volspec, volname, running_jobs):
     log.debug("fetching clone entry for volume '{0}'".format(volname))
 
     try:
-        with open_volume_lockless(volume_client, volname) as fs_handle:
+        with open_volume_lockless(fs_client, volname) as fs_handle:
             try:
-                with open_clone_index(fs_handle, volume_client.volspec) as clone_index:
+                with open_clone_index(fs_handle, volspec) as clone_index:
                     job = clone_index.get_oldest_clone_entry(running_jobs)
                     return 0, job
             except IndexException as ve:
@@ -40,46 +41,46 @@ def get_next_clone_entry(volume_client, volname, running_jobs):
         return ve.errno, None
 
 @contextmanager
-def open_at_volume(volume_client, volname, groupname, subvolname, op_type):
-    with open_volume(volume_client, volname) as fs_handle:
-        with open_group(fs_handle, volume_client.volspec, groupname) as group:
-            with open_subvol(volume_client.mgr, fs_handle, volume_client.volspec, group, subvolname, op_type) as subvolume:
+def open_at_volume(fs_client, volspec, volname, groupname, subvolname, op_type):
+    with open_volume(fs_client, volname) as fs_handle:
+        with open_group(fs_handle, volspec, groupname) as group:
+            with open_subvol(fs_client.mgr, fs_handle, volspec, group, subvolname, op_type) as subvolume:
                 yield subvolume
 
 @contextmanager
-def open_at_group(volume_client, fs_handle, groupname, subvolname, op_type):
-    with open_group(fs_handle, volume_client.volspec, groupname) as group:
-        with open_subvol(volume_client.mgr, fs_handle, volume_client.volspec, group, subvolname, op_type) as subvolume:
+def open_at_group(fs_client, fs_handle, volspec, groupname, subvolname, op_type):
+    with open_group(fs_handle, volspec, groupname) as group:
+        with open_subvol(fs_client.mgr, fs_handle, volspec, group, subvolname, op_type) as subvolume:
             yield subvolume
 
 @contextmanager
-def open_at_group_unique(volume_client, fs_handle, s_groupname, s_subvolname, c_subvolume, c_groupname, c_subvolname, op_type):
+def open_at_group_unique(fs_client, fs_handle, volspec, s_groupname, s_subvolname, c_subvolume, c_groupname, c_subvolname, op_type):
     # if a snapshot of a retained subvolume is being cloned to recreate the same subvolume, return
     # the clone subvolume as the source subvolume
     if s_groupname == c_groupname and s_subvolname == c_subvolname:
         yield c_subvolume
     else:
-        with open_at_group(volume_client, fs_handle, s_groupname, s_subvolname, op_type) as s_subvolume:
+        with open_at_group(fs_client, fs_handle, volspec, s_groupname, s_subvolname, op_type) as s_subvolume:
             yield s_subvolume
 
 
 @contextmanager
-def open_clone_subvolume_pair(volume_client, fs_handle, volname, groupname, subvolname):
-    with open_at_group(volume_client, fs_handle, groupname, subvolname, SubvolumeOpType.CLONE_INTERNAL) as clone_subvolume:
+def open_clone_subvolume_pair(fs_client, fs_handle, volspec, volname, groupname, subvolname):
+    with open_at_group(fs_client, fs_handle, volspec, groupname, subvolname, SubvolumeOpType.CLONE_INTERNAL) as clone_subvolume:
         s_volname, s_groupname, s_subvolname, s_snapname = get_clone_source(clone_subvolume)
         if groupname == s_groupname and subvolname == s_subvolname:
             # use the same subvolume to avoid metadata overwrites
             yield (clone_subvolume, clone_subvolume, s_snapname)
         else:
-            with open_at_group(volume_client, fs_handle, s_groupname, s_subvolname, SubvolumeOpType.CLONE_SOURCE) as source_subvolume:
+            with open_at_group(fs_client, fs_handle, volspec, s_groupname, s_subvolname, SubvolumeOpType.CLONE_SOURCE) as source_subvolume:
                 yield (clone_subvolume, source_subvolume, s_snapname)
 
-def get_clone_state(volume_client, volname, groupname, subvolname):
-    with open_at_volume(volume_client, volname, groupname, subvolname, SubvolumeOpType.CLONE_INTERNAL) as subvolume:
+def get_clone_state(fs_client, volspec, volname, groupname, subvolname):
+    with open_at_volume(fs_client, volspec, volname, groupname, subvolname, SubvolumeOpType.CLONE_INTERNAL) as subvolume:
         return subvolume.state
 
-def set_clone_state(volume_client, volname, groupname, subvolname, state):
-    with open_at_volume(volume_client, volname, groupname, subvolname, SubvolumeOpType.CLONE_INTERNAL) as subvolume:
+def set_clone_state(fs_client, volspec, volname, groupname, subvolname, state):
+    with open_at_volume(fs_client, volspec, volname, groupname, subvolname, SubvolumeOpType.CLONE_INTERNAL) as subvolume:
         subvolume.state = (state, True)
 
 def get_clone_source(clone_subvolume):
@@ -98,7 +99,7 @@ def get_next_state_on_error(errnum):
                                               SubvolumeActions.ACTION_FAILED)
     return next_state
 
-def handle_clone_pending(volume_client, volname, index, groupname, subvolname, should_cancel):
+def handle_clone_pending(fs_client, volspec, volname, index, groupname, subvolname, should_cancel):
     try:
         if should_cancel():
             next_state = SubvolumeOpSm.transition(SubvolumeTypes.TYPE_CLONE,
@@ -184,68 +185,98 @@ def bulk_copy(fs_handle, source_path, dst_path, should_cancel):
     if should_cancel():
         raise VolumeException(-errno.EINTR, "clone operation interrupted")
 
-def do_clone(volume_client, volname, groupname, subvolname, should_cancel):
-    with open_volume_lockless(volume_client, volname) as fs_handle:
-        with open_clone_subvolume_pair(volume_client, fs_handle, volname, groupname, subvolname) as clone_volumes:
+def set_quota_on_clone(fs_handle, clone_volumes_pair):
+    src_path = clone_volumes_pair[1].snapshot_data_path(clone_volumes_pair[2])
+    dst_path = clone_volumes_pair[0].path
+    quota = None # type: Optional[int]
+    try:
+        quota = int(fs_handle.getxattr(src_path, 'ceph.quota.max_bytes').decode('utf-8'))
+    except cephfs.NoData:
+        pass
+
+    if quota is not None:
+        try:
+            fs_handle.setxattr(dst_path, 'ceph.quota.max_bytes', str(quota).encode('utf-8'), 0)
+        except cephfs.InvalidValue:
+            raise VolumeException(-errno.EINVAL, "invalid size specified: '{0}'".format(quota))
+        except cephfs.Error as e:
+             raise VolumeException(-e.args[0], e.args[1])
+
+def do_clone(fs_client, volspec, volname, groupname, subvolname, should_cancel):
+    with open_volume_lockless(fs_client, volname) as fs_handle:
+        with open_clone_subvolume_pair(fs_client, fs_handle, volspec, volname, groupname, subvolname) as clone_volumes:
             src_path = clone_volumes[1].snapshot_data_path(clone_volumes[2])
             dst_path = clone_volumes[0].path
             bulk_copy(fs_handle, src_path, dst_path, should_cancel)
+            set_quota_on_clone(fs_handle, clone_volumes)
+
+def log_clone_failure(volname, groupname, subvolname, ve):
+    if ve.errno == -errno.EINTR:
+        log.info("Clone cancelled: ({0}, {1}, {2})".format(volname, groupname, subvolname))
+    elif ve.errno == -errno.EDQUOT:
+        log.error("Clone failed: ({0}, {1}, {2}, reason -> Disk quota exceeded)".format(volname, groupname, subvolname))
+    else:
+        log.error("Clone failed: ({0}, {1}, {2}, reason -> {3})".format(volname, groupname, subvolname, ve))
 
-def handle_clone_in_progress(volume_client, volname, index, groupname, subvolname, should_cancel):
+def handle_clone_in_progress(fs_client, volspec, volname, index, groupname, subvolname, should_cancel):
     try:
-        do_clone(volume_client, volname, groupname, subvolname, should_cancel)
+        do_clone(fs_client, volspec, volname, groupname, subvolname, should_cancel)
         next_state = SubvolumeOpSm.transition(SubvolumeTypes.TYPE_CLONE,
                                               SubvolumeStates.STATE_INPROGRESS,
                                               SubvolumeActions.ACTION_SUCCESS)
     except VolumeException as ve:
+        log_clone_failure(volname, groupname, subvolname, ve)
         next_state = get_next_state_on_error(ve.errno)
     except OpSmException as oe:
         raise VolumeException(oe.errno, oe.error_str)
     return (next_state, False)
 
-def handle_clone_failed(volume_client, volname, index, groupname, subvolname, should_cancel):
+def handle_clone_failed(fs_client, volspec, volname, index, groupname, subvolname, should_cancel):
     try:
-        with open_volume(volume_client, volname) as fs_handle:
+        with open_volume(fs_client, volname) as fs_handle:
             # detach source but leave the clone section intact for later inspection
-            with open_clone_subvolume_pair(volume_client, fs_handle, volname, groupname, subvolname) as clone_volumes:
+            with open_clone_subvolume_pair(fs_client, fs_handle, volspec, volname, groupname, subvolname) as clone_volumes:
                 clone_volumes[1].detach_snapshot(clone_volumes[2], index)
     except (MetadataMgrException, VolumeException) as e:
         log.error("failed to detach clone from snapshot: {0}".format(e))
     return (None, True)
 
-def handle_clone_complete(volume_client, volname, index, groupname, subvolname, should_cancel):
+def handle_clone_complete(fs_client, volspec, volname, index, groupname, subvolname, should_cancel):
     try:
-        with open_volume(volume_client, volname) as fs_handle:
-            with open_clone_subvolume_pair(volume_client, fs_handle, volname, groupname, subvolname) as clone_volumes:
+        with open_volume(fs_client, volname) as fs_handle:
+            with open_clone_subvolume_pair(fs_client, fs_handle, volspec, volname, groupname, subvolname) as clone_volumes:
                 clone_volumes[1].detach_snapshot(clone_volumes[2], index)
                 clone_volumes[0].remove_clone_source(flush=True)
     except (MetadataMgrException, VolumeException) as e:
         log.error("failed to detach clone from snapshot: {0}".format(e))
     return (None, True)
 
-def start_clone_sm(volume_client, volname, index, groupname, subvolname, state_table, should_cancel):
+def start_clone_sm(fs_client, volspec, volname, index, groupname, subvolname, state_table, should_cancel, snapshot_clone_delay):
     finished = False
     current_state = None
     try:
-        current_state = get_clone_state(volume_client, volname, groupname, subvolname)
+        current_state = get_clone_state(fs_client, volspec, volname, groupname, subvolname)
         log.debug("cloning ({0}, {1}, {2}) -- starting state \"{3}\"".format(volname, groupname, subvolname, current_state))
+        if current_state == SubvolumeStates.STATE_PENDING:
+            time.sleep(snapshot_clone_delay)
+            log.info("Delayed cloning ({0}, {1}, {2}) -- by {3} seconds".format(volname, groupname, subvolname, snapshot_clone_delay))
         while not finished:
             handler = state_table.get(current_state, None)
             if not handler:
                 raise VolumeException(-errno.EINVAL, "invalid clone state: \"{0}\"".format(current_state))
-            (next_state, finished) = handler(volume_client, volname, index, groupname, subvolname, should_cancel)
+            (next_state, finished) = handler(fs_client, volspec, volname, index, groupname, subvolname, should_cancel)
             if next_state:
                 log.debug("({0}, {1}, {2}) transition state [\"{3}\" => \"{4}\"]".format(volname, groupname, subvolname,\
                                                                                          current_state, next_state))
-                set_clone_state(volume_client, volname, groupname, subvolname, next_state)
+                set_clone_state(fs_client, volspec, volname, groupname, subvolname, next_state)
                 current_state = next_state
     except VolumeException as ve:
         log.error("clone failed for ({0}, {1}, {2}) (current_state: {3}, reason: {4})".format(volname, groupname,\
                                                                                              subvolname, current_state, ve))
 
-def clone(volume_client, volname, index, clone_path, state_table, should_cancel):
+def clone(fs_client, volspec, volname, index, clone_path, state_table, should_cancel, snapshot_clone_delay):
     log.info("cloning to subvolume path: {0}".format(clone_path))
-    resolved = resolve(volume_client.volspec, clone_path)
+    resolved = resolve(volspec, clone_path)
 
     groupname  = resolved[0]
     subvolname = resolved[1]
@@ -253,7 +284,7 @@ def clone(volume_client, volname, index, clone_path, state_table, should_cancel)
 
     try:
         log.info("starting clone: ({0}, {1}, {2})".format(volname, groupname, subvolname))
-        start_clone_sm(volume_client, volname, index, groupname, subvolname, state_table, should_cancel)
+        start_clone_sm(fs_client, volspec, volname, index, groupname, subvolname, state_table, should_cancel, snapshot_clone_delay)
         log.info("finished clone: ({0}, {1}, {2})".format(volname, groupname, subvolname))
     except VolumeException as ve:
         log.error("clone failed for ({0}, {1}, {2}), reason: {3}".format(volname, groupname, subvolname, ve))
@@ -264,8 +295,9 @@ class Cloner(AsyncJobs):
     this relies on a simple state machine (which mimics states from SubvolumeOpSm class) as
     the driver. file types supported are directories, symbolic links and regular files.
     """
-    def __init__(self, volume_client, tp_size):
+    def __init__(self, volume_client, tp_size, snapshot_clone_delay):
         self.vc = volume_client
+        self.snapshot_clone_delay = snapshot_clone_delay
         self.state_table = {
             SubvolumeStates.STATE_PENDING      : handle_clone_pending,
             SubvolumeStates.STATE_INPROGRESS   : handle_clone_in_progress,
@@ -278,6 +310,9 @@ class Cloner(AsyncJobs):
     def reconfigure_max_concurrent_clones(self, tp_size):
         super(Cloner, self).reconfigure_max_concurrent_clones("cloner", tp_size)
 
+    def reconfigure_snapshot_clone_delay(self, timeout):
+        self.snapshot_clone_delay = timeout
+
     def is_clone_cancelable(self, clone_state):
         return not (SubvolumeOpSm.is_complete_state(clone_state) or SubvolumeOpSm.is_failed_state(clone_state))
 
@@ -293,8 +328,8 @@ class Cloner(AsyncJobs):
         s_subvolname = status['source']['subvolume']
         s_snapname = status['source']['snapshot']
 
-        with open_at_group_unique(self.vc, fs_handle, s_groupname, s_subvolname, clone_subvolume, clone_groupname,
-                                  clone_subvolname, SubvolumeOpType.CLONE_SOURCE) as s_subvolume:
+        with open_at_group_unique(self.fs_client, fs_handle, self.vc.volspec, s_groupname, s_subvolname, clone_subvolume,
+                                  clone_groupname, clone_subvolname, SubvolumeOpType.CLONE_SOURCE) as s_subvolume:
             next_state = SubvolumeOpSm.transition(SubvolumeTypes.TYPE_CLONE,
                                                   clone_state,
                                                   SubvolumeActions.ACTION_CANCELLED)
@@ -310,9 +345,9 @@ class Cloner(AsyncJobs):
         track_idx = None
 
         try:
-            with open_volume(self.vc, volname) as fs_handle:
+            with open_volume(self.fs_client, volname) as fs_handle:
                 with open_group(fs_handle, self.vc.volspec, groupname) as group:
-                    with open_subvol(self.vc.mgr, fs_handle, self.vc.volspec, group, clonename, SubvolumeOpType.CLONE_CANCEL) as clone_subvolume:
+                    with open_subvol(self.fs_client.mgr, fs_handle, self.vc.volspec, group, clonename, SubvolumeOpType.CLONE_CANCEL) as clone_subvolume:
                         status = clone_subvolume.status
                         clone_state = SubvolumeStates.from_value(status['state'])
                         if not self.is_clone_cancelable(clone_state):
@@ -330,9 +365,9 @@ class Cloner(AsyncJobs):
             # accessing the volume in exclusive mode here would lead to deadlock.
             assert track_idx is not None
             with self.lock:
-                with open_volume_lockless(self.vc, volname) as fs_handle:
+                with open_volume_lockless(self.fs_client, volname) as fs_handle:
                     with open_group(fs_handle, self.vc.volspec, groupname) as group:
-                        with open_subvol(self.vc.mgr, fs_handle, self.vc.volspec, group, clonename, SubvolumeOpType.CLONE_CANCEL) as clone_subvolume:
+                        with open_subvol(self.fs_client.mgr, fs_handle, self.vc.volspec, group, clonename, SubvolumeOpType.CLONE_CANCEL) as clone_subvolume:
                             if not self._cancel_job(volname, (track_idx, clone_subvolume.base_path)):
                                 raise VolumeException(-errno.EINVAL, "cannot cancel -- clone finished (check clone status)")
         except (IndexException, MetadataMgrException) as e:
@@ -340,7 +375,7 @@ class Cloner(AsyncJobs):
             raise VolumeException(-errno.EINVAL, "error canceling clone")
 
     def get_next_job(self, volname, running_jobs):
-        return get_next_clone_entry(self.vc, volname, running_jobs)
+        return get_next_clone_entry(self.fs_client, self.vc.volspec, volname, running_jobs)
 
     def execute_job(self, volname, job, should_cancel):
-        clone(self.vc, volname, job[0].decode('utf-8'), job[1].decode('utf-8'), self.state_table, should_cancel)
+        clone(self.fs_client, self.vc.volspec, volname, job[0].decode('utf-8'), job[1].decode('utf-8'), self.state_table, should_cancel, self.snapshot_clone_delay)
index fb7051f47c24282b07ec51f9149fde6f10243763..7a38ef53e0d2ef715fc5fe9d539f856d156e0695 100644 (file)
@@ -4,6 +4,7 @@ import logging
 import threading
 import traceback
 from collections import deque
+from mgr_util import CephfsClient
 
 from .exception import NotImplementedException
 
@@ -115,6 +116,8 @@ class AsyncJobs(object):
         self.waiting = False
         self.cancel_cv = threading.Condition(self.lock)
         self.nr_concurrent_jobs = nr_concurrent_jobs
+        # each async job group uses its own libcephfs connection (pool)
+        self.fs_client = CephfsClient(self.vc.mgr)
 
         self.threads = []
         for i in range(nr_concurrent_jobs):
index 2adec83f5aafc4d0b6adcbf525bb407c6439576b..c0cfef105aaf075871c987f114188c7dea0e5254 100644 (file)
@@ -162,3 +162,15 @@ def get_ancestor_xattr(fs, path, attr):
             raise VolumeException(-e.args[0], e.args[1])
         else:
             return get_ancestor_xattr(fs, os.path.split(path)[0], attr)
+
+def create_base_dir(fs, path, mode):
+    """
+    Create volspec base/group directory if it doesn't exist
+    """
+    try:
+        fs.stat(path)
+    except cephfs.Error as e:
+        if e.args[0] == errno.ENOENT:
+            fs.mkdirs(path, mode)
+        else:
+            raise VolumeException(-e.args[0], e.args[1])
index bcf1bc2fd73324ea8057dc2f51a5d9bdd61d1fc2..69e3959d7aa3d2ab684967854c9613382fe4d933 100644 (file)
@@ -8,7 +8,7 @@ import cephfs
 from .snapshot_util import mksnap, rmsnap
 from .pin_util import pin
 from .template import GroupTemplate
-from ..fs_util import listdir, listsnaps, get_ancestor_xattr
+from ..fs_util import listdir, listsnaps, get_ancestor_xattr, create_base_dir
 from ..exception import VolumeException
 
 log = logging.getLogger(__name__)
@@ -102,7 +102,11 @@ def create_group(fs, vol_spec, groupname, pool, mode, uid, gid):
     """
     group = Group(fs, vol_spec, groupname)
     path = group.path
-    fs.mkdirs(path, mode)
+    vol_spec_base_dir = group.vol_spec.base_dir.encode('utf-8')
+
+    # create vol_spec base directory with default mode(0o755) if it doesn't exist
+    create_base_dir(fs, vol_spec_base_dir, vol_spec.DEFAULT_MODE)
+    fs.mkdir(path, mode)
     try:
         if not pool:
             pool = get_ancestor_xattr(fs, path, "ceph.dir.layout.pool")
index 1b6c432783783f9b378a1b9409c51551880ec60c..cb3059e56534154304aac7034281a42c5e3f172d 100644 (file)
@@ -40,16 +40,17 @@ class MetadataManager(object):
     def refresh(self):
         fd = None
         conf_data = StringIO()
+        log.debug("opening config {0}".format(self.config_path))
         try:
-            log.debug("opening config {0}".format(self.config_path))
             fd = self.fs.open(self.config_path, os.O_RDONLY)
             while True:
                 data = self.fs.read(fd, -1, MetadataManager.MAX_IO_BYTES)
                 if not len(data):
                     break
                 conf_data.write(data.decode('utf-8'))
-            conf_data.seek(0)
-            self.config.readfp(conf_data)
+        except UnicodeDecodeError:
+            raise MetadataMgrException(-errno.EINVAL,
+                    "failed to decode, erroneous metadata config '{0}'".format(self.config_path))
         except cephfs.ObjectNotFound:
             raise MetadataMgrException(-errno.ENOENT, "metadata config '{0}' not found".format(self.config_path))
         except cephfs.Error as e:
@@ -58,6 +59,16 @@ class MetadataManager(object):
             if fd is not None:
                 self.fs.close(fd)
 
+        conf_data.seek(0)
+        try:
+            if sys.version_info >= (3, 2):
+                self.config.read_file(conf_data)
+            else:
+                self.config.readfp(conf_data)
+        except configparser.Error:
+            raise MetadataMgrException(-errno.EINVAL, "failed to parse, erroneous metadata config "
+                    "'{0}'".format(self.config_path))
+
     def flush(self):
         # cull empty sections
         for section in list(self.config.sections()):
index 2840a9f2ea354553cdddffd3118bd5b2dbebbd08..f7f72a2e7b0541582a811d8264a4c42b1941896e 100644 (file)
@@ -3,8 +3,9 @@ import stat
 import uuid
 import errno
 import logging
-from hashlib import md5
+import hashlib
 from typing import Dict, Union
+from pathlib import Path
 
 import cephfs
 
@@ -16,6 +17,7 @@ from ...fs_util import get_ancestor_xattr
 from ...exception import MetadataMgrException, VolumeException
 from .op_sm import SubvolumeOpSm
 from .auth_metadata import AuthMetadataManager
+from .subvolume_attrs import SubvolumeStates
 
 log = logging.getLogger(__name__)
 
@@ -73,9 +75,16 @@ class SubvolumeBase(object):
 
     @property
     def legacy_config_path(self):
-        m = md5()
-        m.update(self.base_path)
-        meta_config = "{0}.meta".format(m.digest().hex())
+        try:
+            m = hashlib.md5(self.base_path)
+        except ValueError:
+            try:
+                m = hashlib.md5(self.base_path, usedforsecurity=False) # type: ignore
+            except TypeError:
+                raise VolumeException(-errno.EINVAL,
+                                      "require python's hashlib library to support usedforsecurity flag in FIPS enabled systems")
+
+        meta_config = "{0}.meta".format(m.hexdigest())
         return os.path.join(self.legacy_dir, meta_config.encode('utf-8'))
 
     @property
@@ -111,7 +120,7 @@ class SubvolumeBase(object):
     @property
     def state(self):
         """ Subvolume state, one of SubvolumeStates """
-        raise NotImplementedError
+        return SubvolumeStates.from_value(self.metadata_mgr.get_global_option(MetadataManager.GLOBAL_META_KEY_STATE))
 
     @property
     def subvol_type(self):
@@ -123,6 +132,15 @@ class SubvolumeBase(object):
         raise NotImplementedError
 
     def load_config(self):
+        try:
+            self.fs.stat(self.legacy_config_path)
+            self.legacy_mode = True
+        except cephfs.Error as e:
+            pass
+
+        log.debug("loading config "
+                  "'{0}' [mode: {1}]".format(self.subvolname, "legacy"
+                                             if self.legacy_mode else "new"))
         if self.legacy_mode:
             self.metadata_mgr = MetadataManager(self.fs, self.legacy_config_path, 0o640)
         else:
@@ -271,8 +289,16 @@ class SubvolumeBase(object):
             self.fs.stat(self.base_path)
             self.metadata_mgr.refresh()
             log.debug("loaded subvolume '{0}'".format(self.subvolname))
+            subvolpath = self.metadata_mgr.get_global_option(MetadataManager.GLOBAL_META_KEY_PATH)
+            # subvolume with retained snapshots has empty path, don't mistake it for
+            # fabricated metadata.
+            if (not self.legacy_mode and self.state != SubvolumeStates.STATE_RETAINED and
+                self.base_path.decode('utf-8') != str(Path(subvolpath).parent)):
+                raise MetadataMgrException(-errno.ENOENT, 'fabricated .meta')
         except MetadataMgrException as me:
-            if me.errno == -errno.ENOENT and not self.legacy_mode:
+            if me.errno in (-errno.ENOENT, -errno.EINVAL) and not self.legacy_mode:
+                log.warn("subvolume '{0}', {1}, "
+                          "assuming legacy_mode".format(self.subvolname, me.error_str))
                 self.legacy_mode = True
                 self.load_config()
                 self.discover()
index b735ccd3a6f2cb5136c11b3f16094a633800eeb1..9e772653ba52726de7e2038d5d65b393bc968af0 100644 (file)
@@ -18,7 +18,7 @@ from ..template import SubvolumeTemplate
 from ..snapshot_util import mksnap, rmsnap
 from ..access import allow_access, deny_access
 from ...exception import IndexException, OpSmException, VolumeException, MetadataMgrException, EvictionError
-from ...fs_util import listsnaps, is_inherited_snap
+from ...fs_util import listsnaps, is_inherited_snap, create_base_dir
 from ..template import SubvolumeOpType
 from ..group import Group
 from ..rankevicter import RankEvicter
@@ -93,6 +93,8 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
 
         subvol_path = os.path.join(self.base_path, str(uuid.uuid4()).encode('utf-8'))
         try:
+            # create group directory with default mode(0o755) if it doesn't exist.
+            create_base_dir(self.fs, self.group.path, self.vol_spec.DEFAULT_MODE)
             # create directory and set attributes
             self.fs.mkdirs(subvol_path, mode)
             self.mark_subvolume()
@@ -150,6 +152,13 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
             # attributes of subvolume's content though, are synced during the cloning process.
             attrs = source_subvolume.get_attrs(source_subvolume.snapshot_data_path(snapname))
 
+            # The source of the clone may have exceeded its quota limit as
+            # CephFS quotas are imprecise. Cloning such a source may fail if
+            # the quota on the destination is set before starting the clone
+            # copy. So always set the quota on destination after cloning is
+            # successful.
+            attrs["quota"] = None
+
             # override snapshot pool setting, if one is provided for the clone
             if pool is not None:
                 attrs["data_pool"] = pool
@@ -664,7 +673,7 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
 
     @property
     def state(self):
-        return SubvolumeStates.from_value(self.metadata_mgr.get_global_option(MetadataManager.GLOBAL_META_KEY_STATE))
+        return super(SubvolumeV1, self).state
 
     @state.setter
     def state(self, val):
index 1dd6f3fe3aa82e6eb0d02ff45fd5c46d7845d368..737b685d42505052f23f87e940ceb31070e2e250 100644 (file)
@@ -12,7 +12,7 @@ from .op_sm import SubvolumeOpSm
 from .subvolume_v1 import SubvolumeV1
 from ..template import SubvolumeTemplate
 from ...exception import OpSmException, VolumeException, MetadataMgrException
-from ...fs_util import listdir
+from ...fs_util import listdir, create_base_dir
 from ..template import SubvolumeOpType
 
 log = logging.getLogger(__name__)
@@ -167,6 +167,8 @@ class SubvolumeV2(SubvolumeV1):
             raise VolumeException(-errno.EAGAIN, "asynchronous purge of subvolume in progress")
         subvol_path = os.path.join(self.base_path, str(uuid.uuid4()).encode('utf-8'))
         try:
+            # create group directory with default mode(0o755) if it doesn't exist.
+            create_base_dir(self.fs, self.group.path, self.vol_spec.DEFAULT_MODE)
             self.fs.mkdirs(subvol_path, mode)
             self.mark_subvolume()
             attrs = {
@@ -217,6 +219,13 @@ class SubvolumeV2(SubvolumeV1):
             # attributes of subvolume's content though, are synced during the cloning process.
             attrs = source_subvolume.get_attrs(source_subvolume.snapshot_data_path(snapname))
 
+            # The source of the clone may have exceeded its quota limit as
+            # CephFS quotas are imprecise. Cloning such a source may fail if
+            # the quota on the destination is set before starting the clone
+            # copy. So always set the quota on destination after cloning is
+            # successful.
+            attrs["quota"] = None
+
             # override snapshot pool setting, if one is provided for the clone
             if pool is not None:
                 attrs["data_pool"] = pool
index d8eecba7fe8b68e51c936a1683fc44ce97dcf0e8..b688617937b7a05f300a1c0983c5fc985e918238 100644 (file)
@@ -1,4 +1,3 @@
-import time
 import errno
 import logging
 import sys
@@ -6,196 +5,17 @@ import sys
 from typing import List
 
 from contextlib import contextmanager
-from threading import Lock, Condition
-from typing import no_type_check
 
-if sys.version_info >= (3, 3):
-    from threading import Timer
-else:
-    from threading import _Timer as Timer
-
-import cephfs
 import orchestrator
 
 from .lock import GlobalLock
 from ..exception import VolumeException
 from ..fs_util import create_pool, remove_pool, create_filesystem, \
     remove_filesystem, create_mds, volume_exists
+from mgr_util import open_filesystem
 
 log = logging.getLogger(__name__)
 
-class ConnectionPool(object):
-    class Connection(object):
-        def __init__(self, mgr, fs_name):
-            self.fs = None
-            self.mgr = mgr
-            self.fs_name = fs_name
-            self.ops_in_progress = 0
-            self.last_used = time.time()
-            self.fs_id = self.get_fs_id()
-
-        def get_fs_id(self):
-            fs_map = self.mgr.get('fs_map')
-            for fs in fs_map['filesystems']:
-                if fs['mdsmap']['fs_name'] == self.fs_name:
-                    return fs['id']
-            raise VolumeException(
-                -errno.ENOENT, "Volume '{0}' not found".format(self.fs_name))
-
-        def get_fs_handle(self):
-            self.last_used = time.time()
-            self.ops_in_progress += 1
-            return self.fs
-
-        def put_fs_handle(self, notify):
-            assert self.ops_in_progress > 0
-            self.ops_in_progress -= 1
-            if self.ops_in_progress == 0:
-                notify()
-
-        def del_fs_handle(self, waiter):
-            if waiter:
-                while self.ops_in_progress != 0:
-                    waiter()
-            if self.is_connection_valid():
-                self.disconnect()
-            else:
-                self.abort()
-
-        def is_connection_valid(self):
-            fs_id = None
-            try:
-                fs_id = self.get_fs_id()
-            except:
-                # the filesystem does not exist now -- connection is not valid.
-                pass
-            log.debug("self.fs_id={0}, fs_id={1}".format(self.fs_id, fs_id))
-            return self.fs_id == fs_id
-
-        def is_connection_idle(self, timeout):
-            return (self.ops_in_progress == 0 and ((time.time() - self.last_used) >= timeout))
-
-        def connect(self):
-            assert self.ops_in_progress == 0
-            log.debug("Connecting to cephfs '{0}'".format(self.fs_name))
-            self.fs = cephfs.LibCephFS(rados_inst=self.mgr.rados)
-            log.debug("Setting user ID and group ID of CephFS mount as root...")
-            self.fs.conf_set("client_mount_uid", "0")
-            self.fs.conf_set("client_mount_gid", "0")
-            log.debug("CephFS initializing...")
-            self.fs.init()
-            log.debug("CephFS mounting...")
-            self.fs.mount(filesystem_name=self.fs_name.encode('utf-8'))
-            log.debug("Connection to cephfs '{0}' complete".format(self.fs_name))
-            self.mgr._ceph_register_client(self.fs.get_addrs())
-
-        def disconnect(self):
-            try:
-                assert self.fs
-                assert self.ops_in_progress == 0
-                log.info("disconnecting from cephfs '{0}'".format(self.fs_name))
-                addrs = self.fs.get_addrs()
-                self.fs.shutdown()
-                self.mgr._ceph_unregister_client(addrs)
-                self.fs = None
-            except Exception as e:
-                log.debug("disconnect: ({0})".format(e))
-                raise
-
-        def abort(self):
-            assert self.fs
-            assert self.ops_in_progress == 0
-            log.info("aborting connection from cephfs '{0}'".format(self.fs_name))
-            self.fs.abort_conn()
-            log.info("abort done from cephfs '{0}'".format(self.fs_name))
-            self.fs = None
-
-    class RTimer(Timer):
-        """
-        recurring timer variant of Timer
-        """
-        @no_type_check
-        def run(self):
-            try:
-                while not self.finished.is_set():
-                    self.finished.wait(self.interval)
-                    self.function(*self.args, **self.kwargs)
-                self.finished.set()
-            except Exception as e:
-                log.error("ConnectionPool.RTimer: %s", e)
-                raise
-
-    # TODO: make this configurable
-    TIMER_TASK_RUN_INTERVAL = 30.0  # seconds
-    CONNECTION_IDLE_INTERVAL = 60.0 # seconds
-
-    def __init__(self, mgr):
-        self.mgr = mgr
-        self.connections = {}
-        self.lock = Lock()
-        self.cond = Condition(self.lock)
-        self.timer_task = ConnectionPool.RTimer(ConnectionPool.TIMER_TASK_RUN_INTERVAL,
-                                                self.cleanup_connections)
-        self.timer_task.start()
-
-    def cleanup_connections(self):
-        with self.lock:
-            log.info("scanning for idle connections..")
-            idle_fs = [fs_name for fs_name,conn in self.connections.items()
-                       if conn.is_connection_idle(ConnectionPool.CONNECTION_IDLE_INTERVAL)]
-            for fs_name in idle_fs:
-                log.info("cleaning up connection for '{}'".format(fs_name))
-                self._del_fs_handle(fs_name)
-
-    def get_fs_handle(self, fs_name):
-        with self.lock:
-            conn = None
-            try:
-                conn = self.connections.get(fs_name, None)
-                if conn:
-                    if conn.is_connection_valid():
-                        return conn.get_fs_handle()
-                    else:
-                        # filesystem id changed beneath us (or the filesystem does not exist).
-                        # this is possible if the filesystem got removed (and recreated with
-                        # same name) via "ceph fs rm/new" mon command.
-                        log.warning("filesystem id changed for volume '{0}', reconnecting...".format(fs_name))
-                        self._del_fs_handle(fs_name)
-                conn = ConnectionPool.Connection(self.mgr, fs_name)
-                conn.connect()
-            except cephfs.Error as e:
-                # try to provide a better error string if possible
-                if e.args[0] == errno.ENOENT:
-                    raise VolumeException(
-                        -errno.ENOENT, "Volume '{0}' not found".format(fs_name))
-                raise VolumeException(-e.args[0], e.args[1])
-            self.connections[fs_name] = conn
-            return conn.get_fs_handle()
-
-    def put_fs_handle(self, fs_name):
-        with self.lock:
-            conn = self.connections.get(fs_name, None)
-            if conn:
-                conn.put_fs_handle(notify=lambda: self.cond.notifyAll())
-
-    def _del_fs_handle(self, fs_name, wait=False):
-        conn = self.connections.pop(fs_name, None)
-        if conn:
-            conn.del_fs_handle(waiter=None if not wait else lambda: self.cond.wait())
-
-    def del_fs_handle(self, fs_name, wait=False):
-        with self.lock:
-            self._del_fs_handle(fs_name, wait)
-
-    def del_all_handles(self):
-        with self.lock:
-            for fs_name in list(self.connections.keys()):
-                log.info("waiting for pending ops for '{}'".format(fs_name))
-                self._del_fs_handle(fs_name, wait=True)
-                log.info("pending ops completed for '{}'".format(fs_name))
-            # no new connections should have been initialized since its
-            # guarded on shutdown.
-            assert len(self.connections) == 0
 
 def gen_pool_names(volname):
     """
@@ -260,6 +80,7 @@ def create_volume(mgr, volname, placement):
     # create mds
     return create_mds(mgr, volname, placement)
 
+
 def delete_volume(mgr, volname, metadata_pool, data_pools):
     """
     delete the given module (tear down mds, remove filesystem, remove pools)
@@ -298,6 +119,7 @@ def delete_volume(mgr, volname, metadata_pool, data_pools):
     result_str = "metadata pool: {0} data pool: {1} removed".format(metadata_pool, str(data_pools))
     return r, result_str, ""
 
+
 def list_volumes(mgr):
     """
     list all filesystem volumes.
@@ -311,40 +133,32 @@ def list_volumes(mgr):
         result.append({'name': f['mdsmap']['fs_name']})
     return result
 
+
 @contextmanager
 def open_volume(vc, volname):
     """
-    open a volume for exclusive access. This API is to be used as a context manager.
+    open a volume for exclusive access. This API is to be used as a contextr
+    manager.
 
     :param vc: volume client instance
     :param volname: volume name
     :return: yields a volume handle (ceph filesystem handle)
     """
-    if vc.is_stopping():
-        raise VolumeException(-errno.ESHUTDOWN, "shutdown in progress")
-
     g_lock = GlobalLock()
-    fs_handle = vc.connection_pool.get_fs_handle(volname)
-    try:
-        with g_lock.lock_op():
+    with g_lock.lock_op():
+        with open_filesystem(vc, volname) as fs_handle:
             yield fs_handle
-    finally:
-        vc.connection_pool.put_fs_handle(volname)
+
 
 @contextmanager
 def open_volume_lockless(vc, volname):
     """
-    open a volume with shared access. This API is to be used as a context manager.
+    open a volume with shared access. This API is to be used as a context
+    manager.
 
     :param vc: volume client instance
     :param volname: volume name
     :return: yields a volume handle (ceph filesystem handle)
     """
-    if vc.is_stopping():
-        raise VolumeException(-errno.ESHUTDOWN, "shutdown in progress")
-
-    fs_handle = vc.connection_pool.get_fs_handle(volname)
-    try:
+    with open_filesystem(vc, volname) as fs_handle:
         yield fs_handle
-    finally:
-        vc.connection_pool.put_fs_handle(volname)
index 7c902572e7aecbccbb97b9cd5dc006f82e080981..d67ef9af373f6fcaaf347c4ca5695ec42e78115b 100644 (file)
@@ -17,13 +17,13 @@ from .operations.trash import open_trashcan
 log = logging.getLogger(__name__)
 
 # helper for fetching a trash entry for a given volume
-def get_trash_entry_for_volume(volume_client, volname, running_jobs):
+def get_trash_entry_for_volume(fs_client, volspec, volname, running_jobs):
     log.debug("fetching trash entry for volume '{0}'".format(volname))
 
     try:
-        with open_volume_lockless(volume_client, volname) as fs_handle:
+        with open_volume_lockless(fs_client, volname) as fs_handle:
             try:
-                with open_trashcan(fs_handle, volume_client.volspec) as trashcan:
+                with open_trashcan(fs_handle, volspec) as trashcan:
                     path = trashcan.get_trash_entry(running_jobs)
                     return 0, path
             except VolumeException as ve:
@@ -34,14 +34,14 @@ def get_trash_entry_for_volume(volume_client, volname, running_jobs):
         log.error("error fetching trash entry for volume '{0}' ({1})".format(volname, ve))
         return ve.errno, None
 
-def subvolume_purge(volume_client, volname, trashcan, subvolume_trash_entry, should_cancel):
-    groupname, subvolname = resolve_trash(volume_client.volspec, subvolume_trash_entry.decode('utf-8'))
+def subvolume_purge(fs_client, volspec, volname, trashcan, subvolume_trash_entry, should_cancel):
+    groupname, subvolname = resolve_trash(volspec, subvolume_trash_entry.decode('utf-8'))
     log.debug("subvolume resolved to {0}/{1}".format(groupname, subvolname))
 
     try:
-        with open_volume(volume_client, volname) as fs_handle:
-            with open_group(fs_handle, volume_client.volspec, groupname) as group:
-                with open_subvol(volume_client.mgr, fs_handle, volume_client.volspec, group, subvolname, SubvolumeOpType.REMOVE) as subvolume:
+        with open_volume(fs_client, volname) as fs_handle:
+            with open_group(fs_handle, volspec, groupname) as group:
+                with open_subvol(fs_client.mgr, fs_handle, volspec, group, subvolname, SubvolumeOpType.REMOVE) as subvolume:
                     log.debug("subvolume.path={0}, purgeable={1}".format(subvolume.path, subvolume.purgeable))
                     if not subvolume.purgeable:
                         return
@@ -54,13 +54,13 @@ def subvolume_purge(volume_client, volname, trashcan, subvolume_trash_entry, sho
             raise
 
 # helper for starting a purge operation on a trash entry
-def purge_trash_entry_for_volume(volume_client, volname, purge_entry, should_cancel):
+def purge_trash_entry_for_volume(fs_client, volspec, volname, purge_entry, should_cancel):
     log.debug("purging trash entry '{0}' for volume '{1}'".format(purge_entry, volname))
 
     ret = 0
     try:
-        with open_volume_lockless(volume_client, volname) as fs_handle:
-            with open_trashcan(fs_handle, volume_client.volspec) as trashcan:
+        with open_volume_lockless(fs_client, volname) as fs_handle:
+            with open_trashcan(fs_handle, volspec) as trashcan:
                 try:
                     pth = os.path.join(trashcan.path, purge_entry)
                     stx = fs_handle.statx(pth, cephfs.CEPH_STATX_MODE | cephfs.CEPH_STATX_SIZE,
@@ -78,7 +78,7 @@ def purge_trash_entry_for_volume(volume_client, volname, purge_entry, should_can
                                 return ve.errno
                         finally:
                             if delink:
-                                subvolume_purge(volume_client, volname, trashcan, tgt, should_cancel)
+                                subvolume_purge(fs_client, volspec, volname, trashcan, tgt, should_cancel)
                                 log.debug("purging trash link: {0}".format(purge_entry))
                                 trashcan.delink(purge_entry)
                     else:
@@ -103,7 +103,7 @@ class ThreadPoolPurgeQueueMixin(AsyncJobs):
         super(ThreadPoolPurgeQueueMixin, self).__init__(volume_client, "puregejob", tp_size)
 
     def get_next_job(self, volname, running_jobs):
-        return get_trash_entry_for_volume(self.vc, volname, running_jobs)
+        return get_trash_entry_for_volume(self.fs_client, self.vc.volspec, volname, running_jobs)
 
     def execute_job(self, volname, job, should_cancel):
-        purge_trash_entry_for_volume(self.vc, volname, job, should_cancel)
+        purge_trash_entry_for_volume(self.fs_client, self.vc.volspec, volname, job, should_cancel)
index e18ab06906279488a7879204aa707cb89faa7753..5ff983115c3c1b81e227e3b922767ee4bfcb2e32 100644 (file)
@@ -9,6 +9,8 @@ class VolSpec(object):
     DEFAULT_SUBVOL_PREFIX = "/volumes"
     # and the default namespace
     DEFAULT_NS_PREFIX = "fsvolumens_"
+    # default mode for subvol prefix and group
+    DEFAULT_MODE = 0o755
 
     def __init__(self, snapshot_prefix, subvolume_prefix=None, pool_ns_prefix=None):
         self.snapshot_prefix = snapshot_prefix
index 9182318477817e8dde3a189ae9a821dba266ec55..95663569fcb37b579f4bb020edf1c3167165e0cf 100644 (file)
@@ -1,14 +1,13 @@
 import json
 import errno
 import logging
-from threading import Event
 
-import cephfs
+from mgr_util import CephfsClient
 
 from .fs_util import listdir
 
-from .operations.volume import ConnectionPool, open_volume, create_volume, \
-    delete_volume, list_volumes, get_pool_names
+from .operations.volume import create_volume, \
+    delete_volume, list_volumes, open_volume, get_pool_names
 from .operations.group import open_group, create_group, remove_group, open_group_unique
 from .operations.subvolume import open_subvol, create_subvol, remove_subvol, \
     create_clone
@@ -30,6 +29,7 @@ def octal_str_to_decimal_int(mode):
     except ValueError:
         raise VolumeException(-errno.EINVAL, "Invalid mode '{0}'".format(mode))
 
+
 def name_to_json(names):
     """
     convert the list of names to json
@@ -39,14 +39,14 @@ def name_to_json(names):
         namedict.append({'name': names[i].decode('utf-8')})
     return json.dumps(namedict, indent=4, sort_keys=True)
 
-class VolumeClient(object):
+
+class VolumeClient(CephfsClient):
     def __init__(self, mgr):
-        self.mgr = mgr
-        self.stopping = Event()
+        super().__init__(mgr)
         # volume specification
         self.volspec = VolSpec(mgr.rados.conf_get('client_snapdir'))
-        self.connection_pool = ConnectionPool(self.mgr)
-        self.cloner = Cloner(self, self.mgr.max_concurrent_clones)
+        # TODO: make thread pool size configurable
+        self.cloner = Cloner(self, self.mgr.max_concurrent_clones, self.mgr.snapshot_clone_delay)
         self.purge_queue = ThreadPoolPurgeQueueMixin(self, 4)
         # on startup, queue purge job for available volumes to kickstart
         # purge for leftover subvolume entries in trash. note that, if the
@@ -58,10 +58,8 @@ class VolumeClient(object):
             self.cloner.queue_job(fs['mdsmap']['fs_name'])
             self.purge_queue.queue_job(fs['mdsmap']['fs_name'])
 
-    def is_stopping(self):
-        return self.stopping.is_set()
-
     def shutdown(self):
+        # Overrides CephfsClient.shutdown()
         log.info("shutting down")
         # first, note that we're shutting down
         self.stopping.set()
index d6e118747f4ef0f8ea79efb53c5fac70aae615d2..67450665f041a570b93626c4b992455b7536b057 100644 (file)
@@ -418,13 +418,20 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
             'type': 'int',
             'default': 4,
             'desc': 'Number of asynchronous cloner threads',
-        }
+        },
+        {
+            'name': 'snapshot_clone_delay',
+            'type': 'int',
+            'default':0,
+            'desc':'Delay clone begin operation by snapshot_clone_delay seconds',
+        },
     ]
 
     def __init__(self, *args, **kwargs):
         self.inited = False
         # for mypy
         self.max_concurrent_clones = None
+        self.snapshot_clone_delay = None
         self.lock = threading.Lock()
         super(Module, self).__init__(*args, **kwargs)
         # Initialize config option members
@@ -455,6 +462,8 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                 if self.inited:
                     if opt['name'] == "max_concurrent_clones":
                         self.vc.cloner.reconfigure_max_concurrent_clones(self.max_concurrent_clones)
+                    elif opt['name'] == "snapshot_clone_delay":
+                        self.vc.cloner.reconfigure_snapshot_clone_delay(self.snapshot_clone_delay)
 
     def handle_command(self, inbuf, cmd):
         handler_name = "_cmd_" + cmd['prefix'].replace(" ", "_")
index e2409c932e991e8d9c1dee424235a7004f28d26a..9a4d6d77434e8dcb8a7d8570130afc31bfa51395 100644 (file)
@@ -79,6 +79,8 @@ class Device(object):
                 if key != 'human_readable_type'
             }
         )
+        if ret.rejected_reasons:
+            ret.rejected_reasons = sorted(ret.rejected_reasons)
         return ret
 
     @property
index e7e2ee44cc845600cd7c4b904286467ea38911fd..2b2c56da3f24742df35adf759eede53e4263bf4c 100644 (file)
@@ -282,28 +282,34 @@ class PlacementSpec(object):
         # type: (Optional[str]) -> PlacementSpec
         """
         A single integer is parsed as a count:
+
         >>> PlacementSpec.from_string('3')
         PlacementSpec(count=3)
 
         A list of names is parsed as host specifications:
+
         >>> PlacementSpec.from_string('host1 host2')
         PlacementSpec(hosts=[HostPlacementSpec(hostname='host1', network='', name=''), HostPlacemen\
 tSpec(hostname='host2', network='', name='')])
 
         You can also prefix the hosts with a count as follows:
+
         >>> PlacementSpec.from_string('2 host1 host2')
         PlacementSpec(count=2, hosts=[HostPlacementSpec(hostname='host1', network='', name=''), Hos\
 tPlacementSpec(hostname='host2', network='', name='')])
 
-        You can spefify labels using `label:<label>`
+        You can specify labels using `label:<label>`
+
         >>> PlacementSpec.from_string('label:mon')
         PlacementSpec(label='mon')
 
-        Labels als support a count:
+        Labels also support a count:
+
         >>> PlacementSpec.from_string('3 label:mon')
         PlacementSpec(count=3, label='mon')
 
         fnmatch is also supported:
+
         >>> PlacementSpec.from_string('data[1-3]')
         PlacementSpec(host_pattern='data[1-3]')
 
index 6d6db311929c5899b40df42de9ae365b671dab5a..12e30ceb04c61d638eae810d6d219a8e34492172 100644 (file)
@@ -912,20 +912,25 @@ connect_to_cluster(rados_t *pcluster)
        return 0;
 }
 
+#define OPT_NOT_FOUND -1
+
 int main(int argc, const char *argv[])
 {
        memset(&rbd_image_data, 0, sizeof(rbd_image_data));
 
-       // librados will filter out -f/-d options from command-line
-       std::map<std::string, bool> filter_args = {
-               {"-f", false},
-               {"-d", false}};
+       // librados will filter out -r/-f/-d options from command-line
+       std::map<std::string, int> filter_options = {
+               {"-r", OPT_NOT_FOUND},
+               {"-f", OPT_NOT_FOUND},
+               {"-d", OPT_NOT_FOUND}};
+
+       std::set<std::string> require_arg_options = {"-r"};
 
        std::vector<const char*> arg_vector;
        for (auto idx = 0; idx < argc; ++idx) {
-               auto it = filter_args.find(argv[idx]);
-               if (it != filter_args.end()) {
-                       it->second = true;
+               auto it = filter_options.find(argv[idx]);
+               if (it != filter_options.end()) {
+                       it->second = idx;
                }
                arg_vector.push_back(argv[idx]);
        }
@@ -941,9 +946,13 @@ int main(int argc, const char *argv[])
                exit(1);
        }
 
-       for (auto& it : filter_args) {
-               if (it.second) {
+       for (auto& it : filter_options) {
+               if (it.second != OPT_NOT_FOUND) {
                        arg_vector.push_back(it.first.c_str());
+                       if (require_arg_options.count(it.first) &&
+                           it.second + 1 < argc) {
+                               arg_vector.push_back(argv[it.second + 1]);
+                       }
                }
        }
 
index 9d3d8351e68d750a40e8d538afdd49a9563b2e16..7a1a1671fa0eb9064a1223690fb042a85437f69a 100644 (file)
@@ -1984,25 +1984,22 @@ static void get_md_sync_status(list<string>& status)
     }
   }
 
-  int total_behind = shards_behind.size() + (sync_status.sync_info.num_shards - num_inc);
-  if (total_behind == 0) {
-    push_ss(ss, status) << "metadata is caught up with master";
-  } else {
-    push_ss(ss, status) << "metadata is behind on " << total_behind << " shards";
-    
-    push_ss(ss, status) << "behind shards: " << "[" << shards_behind_set << "]";
-
+  // fetch remote log entries to determine the oldest change
+  std::optional<std::pair<int, ceph::real_time>> oldest;
+  if (!shards_behind.empty()) {
     map<int, rgw_mdlog_shard_data> master_pos;
     ret = sync.read_master_log_shards_next(sync_status.sync_info.period, shards_behind, &master_pos);
     if (ret < 0) {
       derr << "ERROR: failed to fetch master next positions (" << cpp_strerror(-ret) << ")" << dendl;
     } else {
-      std::optional<std::pair<int, ceph::real_time>> oldest;
-
       for (auto iter : master_pos) {
         rgw_mdlog_shard_data& shard_data = iter.second;
 
-        if (!shard_data.entries.empty()) {
+        if (shard_data.entries.empty()) {
+          // there aren't any entries in this shard, so we're not really behind
+          shards_behind.erase(iter.first);
+          shards_behind_set.erase(iter.first);
+        } else {
           rgw_mdlog_entry& entry = shard_data.entries.front();
           if (!oldest) {
             oldest.emplace(iter.first, entry.timestamp);
@@ -2011,11 +2008,18 @@ static void get_md_sync_status(list<string>& status)
           }
         }
       }
+    }
+  }
 
-      if (oldest) {
-        push_ss(ss, status) << "oldest incremental change not applied: "
-            << oldest->second << " [" << oldest->first << ']';
-      }
+  int total_behind = shards_behind.size() + (sync_status.sync_info.num_shards - num_inc);
+  if (total_behind == 0) {
+    push_ss(ss, status) << "metadata is caught up with master";
+  } else {
+    push_ss(ss, status) << "metadata is behind on " << total_behind << " shards";
+    push_ss(ss, status) << "behind shards: " << "[" << shards_behind_set << "]";
+    if (oldest) {
+      push_ss(ss, status) << "oldest incremental change not applied: "
+          << oldest->second << " [" << oldest->first << ']';
     }
   }
 
@@ -3887,16 +3891,27 @@ int main(int argc, const char **argv)
                         OPT::RESHARD_STATUS,
   };
 
+    std::set<OPT> gc_ops_list = {
+                        OPT::GC_LIST,
+                        OPT::GC_PROCESS,
+                        OPT::OBJECT_RM,
+                        OPT::BUCKET_RM,  // --purge-objects
+                        OPT::USER_RM,    // --purge-data
+                        OPT::OBJECTS_EXPIRE,
+                        OPT::OBJECTS_EXPIRE_STALE_RM,
+                        OPT::LC_PROCESS
+    };
 
   bool raw_storage_op = (raw_storage_ops_list.find(opt_cmd) != raw_storage_ops_list.end() ||
                          raw_period_update || raw_period_pull);
   bool need_cache = readonly_ops_list.find(opt_cmd) == readonly_ops_list.end();
+  bool need_gc = (gc_ops_list.find(opt_cmd) != gc_ops_list.end()) && !bypass_gc;
 
   if (raw_storage_op) {
     store = RGWStoreManager::get_raw_storage(g_ceph_context);
   } else {
     store = RGWStoreManager::get_storage(g_ceph_context, false, false, false, false, false,
-      need_cache && g_conf()->rgw_cache_enabled);
+      need_cache && g_conf()->rgw_cache_enabled, need_gc);
   }
   if (!store) {
     cerr << "couldn't init storage provider" << std::endl;
@@ -6600,6 +6615,7 @@ next:
 
       do {
         entries.clear();
+       // if object is specified, we use that as a filter to only retrieve some some entries
         ret = store->getRados()->bi_list(bs, object, marker, max_entries, &entries, &is_truncated);
         if (ret < 0) {
           cerr << "ERROR: bi_list(): " << cpp_strerror(-ret) << std::endl;
index ff30a7841d57260e8fc1123a58b839242031535d..1b514a60c5e1e91110131936512caff2440888d6 100644 (file)
@@ -314,8 +314,9 @@ std::string to_string(amqp_status_enum s) {
       return "AMQP_STATUS_SSL_CONNECTION_FAILED";
     case _AMQP_STATUS_SSL_NEXT_VALUE:
       return "AMQP_STATUS_INTERNAL"; 
+    default:
+      return "AMQP_STATUS_UNKNOWN";
   }
-  return "AMQP_STATUS_UNKNOWN";
 }
 
 // TODO: add status_to_string on the connection object to prinf full status
index 054de08e172a8e19afcc113cb8057886870218c4..ccf8aa8db79d6499e4ad75870c16061a5c439359 100644 (file)
@@ -2719,6 +2719,8 @@ static void get_md5_digest(const RGWBucketEntryPoint *be, string& md5_digest) {
    f->flush(bl);
 
    MD5 hash;
+   // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+   hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
    hash.Update((const unsigned char *)bl.c_str(), bl.length());
    hash.Final(m);
 
@@ -3633,7 +3635,6 @@ int RGWBucketCtl::chown(rgw::sal::RGWRadosStore *store, RGWBucketInfo& bucket_in
                         const rgw_user& user_id, const std::string& display_name,
                         const std::string& marker, optional_yield y)
 {
-  RGWObjectCtx obj_ctx(store);
   std::vector<rgw_bucket_dir_entry> objs;
   map<string, bool> common_prefixes;
 
@@ -3651,6 +3652,7 @@ int RGWBucketCtl::chown(rgw::sal::RGWRadosStore *store, RGWBucketInfo& bucket_in
   //Loop through objects and update object acls to point to bucket owner
 
   do {
+    RGWObjectCtx obj_ctx(store);
     objs.clear();
     int ret = list_op.list_objects(max_entries, &objs, &common_prefixes, &is_truncated, y);
     if (ret < 0) {
index 4c658ca30ac7c079f87a4daf5e686b47522701d5..85eb39c97d49e1eb060a710eeb15044fe7f7e57b 100644 (file)
@@ -142,15 +142,20 @@ RGWCoroutine::~RGWCoroutine() {
 
 void RGWCoroutine::init_new_io(RGWIOProvider *io_provider)
 {
+  ceph_assert(stack); // if there's no stack, io_provider won't be uninitialized
   stack->init_new_io(io_provider);
 }
 
 void RGWCoroutine::set_io_blocked(bool flag) {
-  stack->set_io_blocked(flag);
+  if (stack) {
+    stack->set_io_blocked(flag);
+  }
 }
 
 void RGWCoroutine::set_sleeping(bool flag) {
-  stack->set_sleeping(flag);
+  if (stack) {
+    stack->set_sleeping(flag);
+  }
 }
 
 int RGWCoroutine::io_block(int ret, int64_t io_id) {
@@ -158,6 +163,9 @@ int RGWCoroutine::io_block(int ret, int64_t io_id) {
 }
 
 int RGWCoroutine::io_block(int ret, const rgw_io_id& io_id) {
+  if (!stack) {
+    return 0;
+  }
   if (stack->consume_io_finish(io_id)) {
     return 0;
   }
@@ -167,7 +175,9 @@ int RGWCoroutine::io_block(int ret, const rgw_io_id& io_id) {
 }
 
 void RGWCoroutine::io_complete(const rgw_io_id& io_id) {
-  stack->io_complete(io_id);
+  if (stack) {
+    stack->io_complete(io_id);
+  }
 }
 
 void RGWCoroutine::StatusItem::dump(Formatter *f) const {
index 9d3e2f545573bbf18ecf1ca67d18353a4e2fecaa..a32a963f8aee6e5bc5fc18e21b5c9bb5a4f7aca1 100644 (file)
@@ -717,6 +717,8 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
       }
 
       MD5 key_hash;
+      // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+      key_hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
       unsigned char key_hash_res[CEPH_CRYPTO_MD5_DIGESTSIZE];
       key_hash.Update(reinterpret_cast<const unsigned char*>(key_bin.c_str()), key_bin.size());
       key_hash.Final(key_hash_res);
@@ -781,7 +783,7 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
          ldout(s->cct, 5) << "ERROR: not provide a valid key id" << dendl;
          s->err.message = "Server Side Encryption with KMS managed key requires "
            "HTTP header x-amz-server-side-encryption-aws-kms-key-id";
-         return -ERR_INVALID_ACCESS_KEY;
+         return -EINVAL;
        }
        /* try to retrieve actual key */
        std::string key_selector = create_random_key_selector(s->cct);
@@ -796,7 +798,7 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
          ldout(s->cct, 5) << "ERROR: key obtained from key_id:" <<
             key_id << " is not 256 bit size" << dendl;
          s->err.message = "KMS provided an invalid key for the given kms-keyid.";
-         return -ERR_INVALID_ACCESS_KEY;
+         return -EINVAL;
        }
        set_attr(attrs, RGW_ATTR_CRYPT_MODE, "SSE-KMS");
        set_attr(attrs, RGW_ATTR_CRYPT_KEYID, key_id);
@@ -960,6 +962,8 @@ int rgw_s3_prepare_decrypt(struct req_state* s,
     }
 
     MD5 key_hash;
+    // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+    key_hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
     uint8_t key_hash_res[CEPH_CRYPTO_MD5_DIGESTSIZE];
     key_hash.Update(reinterpret_cast<const unsigned char*>(key_bin.c_str()), key_bin.size());
     key_hash.Final(key_hash_res);
index 7e2579b92c97bab95c480e4e8dc61db99f27e56f..8197fb872a1ec9f7c09ea30c5fed2b94db68bd99 100644 (file)
@@ -30,7 +30,10 @@ protected:
 
 public:
   ETagVerifier(CephContext* cct_, rgw::putobj::DataProcessor *next)
-    : Pipe(next), cct(cct_) {}
+    : Pipe(next), cct(cct_) {
+      // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+      hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
+    }
 
   virtual void calculate_etag() = 0;
   string get_calculated_etag() { return calculated_etag;}
@@ -62,7 +65,10 @@ public:
                              rgw::putobj::DataProcessor *next)
     : ETagVerifier(cct, next),
       part_ofs(std::move(part_ofs))
-  {}
+  {
+    // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+    hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
+  }
 
   int process(bufferlist&& data, uint64_t logical_offset) override;
   void calculate_etag() override;
index b78d0506ef840745f50233e4fb34ae5736efa789..42de2ab918b52fc5030e396301ba2797a3b8b8c0 100644 (file)
@@ -736,6 +736,7 @@ namespace rgw {
         rgw_fh->set_acls(*(req.get_attr(RGW_ATTR_ACL))); 
 
        get<0>(mkr) = rgw_fh;
+       rgw_fh->file_ondisk_version = 0; // inital version
        rgw_fh->mtx.unlock();
       } else
        rc = -EIO;
@@ -953,7 +954,7 @@ namespace rgw {
     rgw::sal::RGWRadosUser ruser(rgwlib.get_store(), user);
     RGWSetAttrsRequest req(cct, &ruser, rgw_fh->bucket_name(), obj_name);
 
-    rgw_fh->encode_attrs(ux_key, ux_attrs);
+    rgw_fh->encode_attrs(ux_key, ux_attrs, false);
 
     req.emplace_attr(RGW_ATTR_UNIX_KEY1, std::move(ux_key));
     req.emplace_attr(RGW_ATTR_UNIX1, std::move(ux_attrs));
@@ -1187,12 +1188,23 @@ namespace rgw {
   }
 
   void RGWFileHandle::encode_attrs(ceph::buffer::list& ux_key1,
-                                  ceph::buffer::list& ux_attrs1)
+                                  ceph::buffer::list& ux_attrs1,
+                                  bool inc_ov)
   {
     using ceph::encode;
     fh_key fhk(this->fh.fh_hk);
     encode(fhk, ux_key1);
+    bool need_ondisk_version =
+      (fh.fh_type == RGW_FS_TYPE_FILE ||
+       fh.fh_type == RGW_FS_TYPE_SYMBOLIC_LINK);
+    if (need_ondisk_version &&
+       file_ondisk_version < 0) {
+      file_ondisk_version = 0;
+    }
     encode(*this, ux_attrs1);
+    if (need_ondisk_version && inc_ov) {
+      file_ondisk_version++;
+    }
   } /* RGWFileHandle::encode_attrs */
 
   DecodeAttrsResult RGWFileHandle::decode_attrs(const ceph::buffer::list* ux_key1,
@@ -1205,8 +1217,35 @@ namespace rgw {
     decode(fhk, bl_iter_key1);
     get<0>(dar) = true;
 
+    // decode to a temporary file handle which may not be
+    // copied to the current file handle if its file_ondisk_version
+    // is not newer
+    RGWFileHandle tmp_fh(fs);
+    tmp_fh.fh.fh_type = fh.fh_type;
     auto bl_iter_unix1 = ux_attrs1->cbegin();
-    decode(*this, bl_iter_unix1);
+    decode(tmp_fh, bl_iter_unix1);
+
+    fh.fh_type = tmp_fh.fh.fh_type;
+    // for file handles that represent files and whose file_ondisk_version
+    // is newer, no updates are need, otherwise, go updating the current
+    // file handle
+    if (!((fh.fh_type == RGW_FS_TYPE_FILE ||
+           fh.fh_type == RGW_FS_TYPE_SYMBOLIC_LINK) &&
+         file_ondisk_version >= tmp_fh.file_ondisk_version)) {
+      // make sure the following "encode" always encode a greater version
+      file_ondisk_version = tmp_fh.file_ondisk_version + 1;
+      state.dev = tmp_fh.state.dev;
+      state.size = tmp_fh.state.size;
+      state.nlink = tmp_fh.state.nlink;
+      state.owner_uid = tmp_fh.state.owner_uid;
+      state.owner_gid = tmp_fh.state.owner_gid;
+      state.unix_mode = tmp_fh.state.unix_mode;
+      state.ctime = tmp_fh.state.ctime;
+      state.mtime = tmp_fh.state.mtime;
+      state.atime = tmp_fh.state.atime;
+      state.version = tmp_fh.state.version;
+    }
+
     if (this->state.version < 2) {
       get<1>(dar) = true;
     }
index ac8ada0251f5fc64772f76a278d9c31bc2fc8764..ec258a2fc9996eb9989f9900c1fcd1c5dacbdec2 100644 (file)
@@ -192,6 +192,7 @@ namespace rgw {
     RGWLibFS* fs;
     RGWFileHandle* bucket;
     RGWFileHandle* parent;
+    std::atomic_int64_t file_ondisk_version; // version of unix attrs, file only
     /* const */ std::string name; /* XXX file or bucket name */
     /* const */ fh_key fhk;
 
@@ -279,8 +280,8 @@ namespace rgw {
 
   private:
     explicit RGWFileHandle(RGWLibFS* _fs)
-      : fs(_fs), bucket(nullptr), parent(nullptr), variant_type{directory()},
-       depth(0), flags(FLAG_NONE)
+      : fs(_fs), bucket(nullptr), parent(nullptr), file_ondisk_version(-1),
+       variant_type{directory()}, depth(0), flags(FLAG_NONE)
       {
         fh.fh_hk.bucket = 0;
         fh.fh_hk.object = 0;
@@ -317,11 +318,62 @@ namespace rgw {
       }
     }
 
+    void encode(buffer::list& bl) const {
+      ENCODE_START(3, 1, bl);
+      encode(uint32_t(fh.fh_type), bl);
+      encode(state.dev, bl);
+      encode(state.size, bl);
+      encode(state.nlink, bl);
+      encode(state.owner_uid, bl);
+      encode(state.owner_gid, bl);
+      encode(state.unix_mode, bl);
+      for (const auto& t : { state.ctime, state.mtime, state.atime }) {
+       encode(real_clock::from_timespec(t), bl);
+      }
+      encode((uint32_t)2, bl);
+      encode(file_ondisk_version.load(), bl);
+      ENCODE_FINISH(bl);
+    }
+
+    //XXX: RGWFileHandle::decode method can only be called from
+    //    RGWFileHandle::decode_attrs, otherwise the file_ondisk_version
+    //    fied would be contaminated
+    void decode(bufferlist::const_iterator& bl) {
+      DECODE_START(3, bl);
+      uint32_t fh_type;
+      decode(fh_type, bl);
+      if ((fh.fh_type != fh_type) &&
+        (fh_type == RGW_FS_TYPE_SYMBOLIC_LINK))
+        fh.fh_type = RGW_FS_TYPE_SYMBOLIC_LINK;
+      decode(state.dev, bl);
+      decode(state.size, bl);
+      decode(state.nlink, bl);
+      decode(state.owner_uid, bl);
+      decode(state.owner_gid, bl);
+      decode(state.unix_mode, bl);
+      ceph::real_time enc_time;
+      for (auto t : { &(state.ctime), &(state.mtime), &(state.atime) }) {
+       decode(enc_time, bl);
+       *t = real_clock::to_timespec(enc_time);
+      }
+      if (struct_v >= 2) {
+        decode(state.version, bl);
+      }
+      if (struct_v >= 3) {
+       int64_t fov;
+       decode(fov, bl);
+       file_ondisk_version = fov;
+      }
+      DECODE_FINISH(bl);
+    }
+
+    friend void encode(const RGWFileHandle& c, ::ceph::buffer::list &bl, uint64_t features);
+    friend void decode(RGWFileHandle &c, ::ceph::bufferlist::const_iterator &p);
   public:
     RGWFileHandle(RGWLibFS* _fs, RGWFileHandle* _parent,
                  const fh_key& _fhk, std::string& _name, uint32_t _flags)
-      : fs(_fs), bucket(nullptr), parent(_parent), name(std::move(_name)),
-       fhk(_fhk), flags(_flags) {
+      : fs(_fs), bucket(nullptr), parent(_parent), file_ondisk_version(-1),
+       name(std::move(_name)), fhk(_fhk), flags(_flags) {
 
       if (parent->is_root()) {
        fh.fh_type = RGW_FS_TYPE_DIRECTORY;
@@ -672,49 +724,9 @@ namespace rgw {
       acls = _acls;
     }
 
-    void encode(buffer::list& bl) const {
-      ENCODE_START(2, 1, bl);
-      encode(uint32_t(fh.fh_type), bl);
-      encode(state.dev, bl);
-      encode(state.size, bl);
-      encode(state.nlink, bl);
-      encode(state.owner_uid, bl);
-      encode(state.owner_gid, bl);
-      encode(state.unix_mode, bl);
-      for (const auto& t : { state.ctime, state.mtime, state.atime }) {
-       encode(real_clock::from_timespec(t), bl);
-      }
-      encode((uint32_t)2, bl);
-      ENCODE_FINISH(bl);
-    }
-
-    void decode(bufferlist::const_iterator& bl) {
-      DECODE_START(2, bl);
-      uint32_t fh_type;
-      decode(fh_type, bl);
-      if ((fh.fh_type != fh_type) &&
-        (fh_type == RGW_FS_TYPE_SYMBOLIC_LINK))
-        fh.fh_type = RGW_FS_TYPE_SYMBOLIC_LINK;  
-      ceph_assert(fh.fh_type == fh_type);
-      decode(state.dev, bl);
-      decode(state.size, bl);
-      decode(state.nlink, bl);
-      decode(state.owner_uid, bl);
-      decode(state.owner_gid, bl);
-      decode(state.unix_mode, bl);
-      ceph::real_time enc_time;
-      for (auto t : { &(state.ctime), &(state.mtime), &(state.atime) }) {
-       decode(enc_time, bl);
-       *t = real_clock::to_timespec(enc_time);
-      }
-      if (struct_v >= 2) {
-        decode(state.version, bl);
-      }
-      DECODE_FINISH(bl);
-    }
-
     void encode_attrs(ceph::buffer::list& ux_key1,
-                     ceph::buffer::list& ux_attrs1);
+                     ceph::buffer::list& ux_attrs1,
+                     bool inc_ov = true);
 
     DecodeAttrsResult decode_attrs(const ceph::buffer::list* ux_key1,
                                    const ceph::buffer::list* ux_attrs1);
@@ -2540,6 +2552,8 @@ public:
       ret = init_from_header(get_state());
     }
     op = this;
+    // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+    hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   }
 
   bool only_bucket() override { return true; }
index e9c14bd13a0a77ced5e7a177f3f1bc6d710b93da..fe37963691c4cf0cc550d924e3e11d523a89a7e9 100644 (file)
@@ -38,6 +38,8 @@ void rgw_get_token_id(const string& token, string& token_id)
   unsigned char m[CEPH_CRYPTO_MD5_DIGESTSIZE];
 
   MD5 hash;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   hash.Update((const unsigned char *)token.c_str(), token.size());
   hash.Final(m);
 
index 11defdcd4927a732afdd24db906bdb28751363b6..f7915d92967975b1bacfadf1293c05c38b81cde1 100644 (file)
@@ -481,7 +481,7 @@ public:
         if (ret < 0) {
           ldout(store->ctx(), 0) << "ERROR: list_op returned ret=" << ret
                                 << dendl;
-          return ret;
+          return false;
         }
       }
       delay();
index 7dc50a6ce1c795b990a19561a437a4dad24abb86..10187ab6461281db8a9a971d171a5e8144306cb4 100644 (file)
@@ -574,8 +574,8 @@ int rgw_build_bucket_policies(rgw::sal::RGWRadosStore* store, struct req_state*
 
   string bi = s->info.args.get(RGW_SYS_PARAM_PREFIX "bucket-instance");
   if (!bi.empty()) {
-    string bucket_name;
-    ret = rgw_bucket_parse_bucket_instance(bi, &bucket_name, &s->bucket_instance_id, &s->bucket_instance_shard_id);
+    // note: overwrites s->bucket_name, may include a tenant/
+    ret = rgw_bucket_parse_bucket_instance(bi, &s->bucket_name, &s->bucket_instance_id, &s->bucket_instance_shard_id);
     if (ret < 0) {
       return ret;
     }
@@ -794,7 +794,7 @@ int rgw_build_object_policies(rgw::sal::RGWRadosStore *store, struct req_state *
     }
     s->object_acl = std::make_unique<RGWAccessControlPolicy>(s->cct);
     rgw_obj obj(s->bucket, s->object);
-      
+
     store->getRados()->set_atomic(s->obj_ctx, obj);
     if (prefetch_data) {
       store->getRados()->set_prefetch_data(s->obj_ctx, obj);
@@ -1203,7 +1203,7 @@ void RGWGetBucketTags::pre_exec()
   rgw_bucket_object_pre_exec(s);
 }
 
-void RGWGetBucketTags::execute() 
+void RGWGetBucketTags::execute()
 {
   auto iter = s->bucket_attrs.find(RGW_ATTR_TAGS);
   if (iter != s->bucket_attrs.end()) {
@@ -1735,6 +1735,8 @@ static int iterate_user_manifest_parts(CephContext * const cct,
   list_op.params.delim = delim;
 
   MD5 etag_sum;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  etag_sum.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   do {
 #define MAX_LIST_OBJS 100
     int r = list_op.list_objects(MAX_LIST_OBJS, &objs, NULL, &is_truncated, null_yield);
@@ -2017,6 +2019,8 @@ int RGWGetObj::handle_slo_manifest(bufferlist& bl)
   map<uint64_t, rgw_slo_part> slo_parts;
 
   MD5 etag_sum;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  etag_sum.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   total_len = 0;
 
   for (const auto& entry : slo_info.entries) {
@@ -2835,7 +2839,7 @@ void RGWDeleteBucketWebsite::execute()
     bufferlist in_data;
     op_ret = forward_request_to_master(s, nullptr, store, in_data, nullptr);
     if (op_ret < 0) {
-      ldpp_dout(this, 0) << "NOTICE: forward_to_master failed on bucket=" << s->bucket.name 
+      ldpp_dout(this, 0) << "NOTICE: forward_to_master failed on bucket=" << s->bucket.name
                         << "returned err=" << op_ret << dendl;
       return;
     }
@@ -3534,7 +3538,7 @@ void RGWDeleteBucket::execute()
   if ( op_ret < 0) {
      ldpp_dout(this, 1) << "WARNING: failed to sync user stats before bucket delete: op_ret= " << op_ret << dendl;
   }
-  
+
   op_ret = store->getRados()->check_bucket_empty(s->bucket_info, s->yield);
   if (op_ret < 0) {
     return;
@@ -3847,6 +3851,8 @@ void RGWPutObj::execute()
   char calc_md5[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 1];
   unsigned char m[CEPH_CRYPTO_MD5_DIGESTSIZE];
   MD5 hash;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   bufferlist bl, aclbl, bs;
   int len;
   
@@ -4274,6 +4280,8 @@ void RGWPostObj::execute()
     char calc_md5[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 1];
     unsigned char m[CEPH_CRYPTO_MD5_DIGESTSIZE];
     MD5 hash;
+    // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+    hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
     ceph::buffer::list bl, aclbl;
     int len = 0;
 
@@ -4361,6 +4369,9 @@ void RGWPostObj::execute()
 
       hash.Update((const unsigned char *)data.c_str(), data.length());
       op_ret = filter->process(std::move(data), ofs);
+      if (op_ret < 0) {
+        return;
+      }
 
       ofs += len;
 
@@ -4995,16 +5006,17 @@ bool RGWCopyObj::parse_copy_location(const boost::string_view& url_src,
     params_str = url_src.substr(pos + 1);
   }
 
-  boost::string_view dec_src{name_str};
-  if (dec_src[0] == '/')
-    dec_src.remove_prefix(1);
+  if (name_str[0] == '/') // trim leading slash
+    name_str.remove_prefix(1);
+
+  std::string dec_src = url_decode(name_str);
 
   pos = dec_src.find('/');
   if (pos == string::npos)
     return false;
 
-  bucket_name = url_decode(dec_src.substr(0, pos));
-  key.name = url_decode(dec_src.substr(pos + 1));
+  bucket_name = dec_src.substr(0, pos);
+  key.name = dec_src.substr(pos + 1);
 
   if (key.name.empty()) {
     return false;
@@ -5607,6 +5619,8 @@ void RGWPutLC::execute()
   ldpp_dout(this, 15) << "read len=" << data.length() << " data=" << (buf ? buf : "") << dendl;
 
   MD5 data_hash;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  data_hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   unsigned char data_hash_res[CEPH_CRYPTO_MD5_DIGESTSIZE];
   data_hash.Update(reinterpret_cast<const unsigned char*>(buf), data.length());
   data_hash.Final(data_hash_res);
@@ -5972,7 +5986,7 @@ void RGWInitMultipart::execute()
 
     op_ret = obj_op.write_meta(bl.length(), 0, attrs, s->yield);
   } while (op_ret == -EEXIST);
-  
+
   const auto ret = rgw::notify::publish(s, s->object, s->obj_size, ceph::real_clock::now(), attrs[RGW_ATTR_ETAG].to_str(), rgw::notify::ObjectCreatedPost, store);
   if (ret < 0) {
     ldpp_dout(this, 5) << "WARNING: publishing notification failed, with error: " << ret << dendl;
@@ -6031,6 +6045,8 @@ void RGWCompleteMultipart::execute()
   map<string, bufferlist> attrs;
   off_t ofs = 0;
   MD5 hash;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   char final_etag[CEPH_CRYPTO_MD5_DIGESTSIZE];
   char final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 16];
   bufferlist etag_bl;
@@ -6115,6 +6131,11 @@ void RGWCompleteMultipart::execute()
   op_ret = serializer.try_lock(raw_obj.oid, dur);
   if (op_ret < 0) {
     ldpp_dout(this, 0) << "failed to acquire lock" << dendl;
+    if (op_ret == -ENOENT && check_previously_completed(this, parts)) {
+      ldpp_dout(this, 1) << "NOTICE: This multipart completion is already completed" << dendl;
+      op_ret = 0;
+      return;
+    }
     op_ret = -ERR_INTERNAL_ERROR;
     s->err.message = "This multipart completion is already in progress";
     return;
@@ -6196,9 +6217,9 @@ void RGWCompleteMultipart::execute()
           ldpp_dout(this, 0) << "ERROR: compression type was changed during multipart upload ("
                            << cs_info.compression_type << ">>" << obj_part.cs_info.compression_type << ")" << dendl;
           op_ret = -ERR_INVALID_PART;
-          return; 
+          return;
       }
-      
+
       if (part_compressed) {
         int64_t new_ofs; // offset in compression data for new part
         if (cs_info.blocks.size() > 0)
@@ -6212,7 +6233,7 @@ void RGWCompleteMultipart::execute()
           cb.len = block.len;
           cs_info.blocks.push_back(cb);
           new_ofs = cb.new_ofs + cb.len;
-        } 
+        }
         if (!compressed)
           cs_info.compression_type = obj_part.cs_info.compression_type;
         cs_info.orig_size += obj_part.cs_info.orig_size;
@@ -6286,7 +6307,7 @@ void RGWCompleteMultipart::execute()
   } else {
     ldpp_dout(this, 0) << "WARNING: failed to remove object " << meta_obj << dendl;
   }
-  
+
   const auto ret = rgw::notify::publish(s, s->object, ofs, ceph::real_clock::now(), final_etag_str, rgw::notify::ObjectCreatedCompleteMultipartUpload, store);
 
   if (ret < 0) {
@@ -6312,6 +6333,45 @@ int RGWCompleteMultipart::MPSerializer::try_lock(
   return ret;
 }
 
+bool RGWCompleteMultipart::check_previously_completed(const DoutPrefixProvider* dpp, const RGWMultiCompleteUpload* parts)
+{
+  // re-calculate the etag from the parts and compare to the existing object
+  map<string, bufferlist> sattrs;
+  int ret = get_obj_attrs(store, s, {s->bucket, s->object}, sattrs);
+  if (ret < 0) {
+    ldpp_dout(dpp, 0) << __func__ << "() ERROR: get_obj_attrs() returned ret=" << ret << dendl;
+    return false;
+  }
+  string oetag = sattrs[RGW_ATTR_ETAG].to_str();
+
+  MD5 hash;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
+  for (const auto& [index, part] : parts->parts) {
+    std::string partetag = rgw_string_unquote(part);
+    char petag[CEPH_CRYPTO_MD5_DIGESTSIZE];
+    hex_to_buf(partetag.c_str(), petag, CEPH_CRYPTO_MD5_DIGESTSIZE);
+    hash.Update((const unsigned char *)petag, sizeof(petag));
+    ldpp_dout(dpp, 20) << __func__ << "() re-calculating multipart etag: part: "
+                                   << index << ", etag: " << partetag << dendl;
+  }
+
+  unsigned char final_etag[CEPH_CRYPTO_MD5_DIGESTSIZE];
+  char final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 16];
+  hash.Final(final_etag);
+  buf_to_hex(final_etag, CEPH_CRYPTO_MD5_DIGESTSIZE, final_etag_str);
+  snprintf(&final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2], sizeof(final_etag_str) - CEPH_CRYPTO_MD5_DIGESTSIZE * 2,
+           "-%lld", (long long)parts->parts.size());
+
+  if (oetag.compare(final_etag_str) != 0) {
+    ldpp_dout(dpp, 1) << __func__ << "() NOTICE: etag mismatch: object etag:"
+                                  << oetag << ", re-calculated etag:" << final_etag_str << dendl;
+    return false;
+  }
+  ldpp_dout(dpp, 5) << __func__ << "() object etag and re-calculated etag match, etag: " << oetag << dendl;
+  return true;
+}
+
 void RGWCompleteMultipart::complete()
 {
   /* release exclusive lock iff not already */
@@ -6690,7 +6750,7 @@ void RGWDeleteMultiObj::execute()
     bufferlist etag_bl;
     const auto etag = obj_state->get_attr(RGW_ATTR_ETAG, etag_bl) ? etag_bl.to_str() : "";
 
-    const auto ret = rgw::notify::publish(s, obj.key, obj_state->size, obj_state->mtime, etag, 
+    const auto ret = rgw::notify::publish(s, obj.key, obj_state->size, obj_state->mtime, etag,
             del_op.result.delete_marker && s->object.instance.empty() ? rgw::notify::ObjectRemovedDeleteMarkerCreated : rgw::notify::ObjectRemovedDelete,
             store);
     if (ret < 0) {
@@ -7288,6 +7348,8 @@ int RGWBulkUploadOp::handle_file(const boost::string_ref path,
   ssize_t len = 0;
   size_t ofs = 0;
   MD5 hash;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   do {
     ceph::bufferlist data;
     len = body.get_at_most(s->cct->_conf->rgw_max_chunk_size, data);
@@ -7352,7 +7414,7 @@ int RGWBulkUploadOp::handle_file(const boost::string_ref path,
     ceph::bufferlist tmp;
     RGWCompressionInfo cs_info;
     cs_info.compression_type = plugin->get_type_name();
-    cs_info.orig_size = s->obj_size;
+    cs_info.orig_size = size;
     cs_info.blocks = std::move(compressor->get_compression_blocks());
     encode(cs_info, tmp);
     attrs.emplace(RGW_ATTR_COMPRESSION, std::move(tmp));
@@ -8007,10 +8069,20 @@ void RGWPutObjRetention::execute()
     }
     if (ceph::real_clock::to_time_t(obj_retention.get_retain_until_date()) < ceph::real_clock::to_time_t(old_obj_retention.get_retain_until_date())) {
       if (old_obj_retention.get_mode().compare("GOVERNANCE") != 0 || !bypass_perm || !bypass_governance_mode) {
-       s->err.message = "proposed retain-until date shortens an existing retention period and governance bypass check failed";
+         s->err.message = "proposed retain-until date shortens an existing retention period and governance bypass check failed";
         op_ret = -EACCES;
         return;
       }
+    } else if (old_obj_retention.get_mode() == obj_retention.get_mode()) {
+      // ok if retention mode doesn't change
+    } else if (obj_retention.get_mode() == "GOVERNANCE") {
+      s->err.message = "can't change retention mode from COMPLIANCE to GOVERNANCE";
+      op_ret = -EACCES;
+      return;
+    } else if (!bypass_perm || !bypass_governance_mode) {
+      s->err.message = "can't change retention mode from GOVERNANCE without governance bypass";
+      op_ret = -EACCES;
+      return;
     }
   }
 
index 8074607d3fbf2d91ae734faab5638a383326771f..2eb37ebbdbc31a9863028d8d830a8cc15d0a4354 100644 (file)
@@ -1773,6 +1773,7 @@ public:
   int verify_permission() override;
   void pre_exec() override;
   void execute() override;
+  bool check_previously_completed(const DoutPrefixProvider* dpp, const RGWMultiCompleteUpload* parts);
   void complete() override;
 
   virtual int get_params() = 0;
index 02ab414e22ca797e9facacd2546324759dc3027d..b65af0358db512ac9749338f9db59fa7ad54797e 100644 (file)
@@ -639,6 +639,8 @@ int AppendObjectProcessor::complete(size_t accounted_size, const string &etag, c
   //calculate the etag
   if (!cur_etag.empty()) {
     MD5 hash;
+    // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+    hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
     char petag[CEPH_CRYPTO_MD5_DIGESTSIZE];
     char final_etag[CEPH_CRYPTO_MD5_DIGESTSIZE];
     char final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 16];
index 7c4b2280965c8446dc53dc2e05c8cf98d5cbadf4..b6a8488f677d2afb83069c903aa819e5c23dc5ab 100644 (file)
@@ -1184,12 +1184,16 @@ int RGWRados::init_complete()
 
   pools_initialized = true;
 
-  gc = new RGWGC();
-  gc->initialize(cct, this);
+  if (use_gc) {
+    gc = new RGWGC();
+    gc->initialize(cct, this);
+  } else {
+    ldout(cct, 5) << "note: GC not initialized" << dendl;
+  }
 
   obj_expirer = new RGWObjectExpirer(this->store);
 
-  if (use_gc_thread) {
+  if (use_gc_thread && use_gc) {
     gc->start_processor();
     obj_expirer->start_processor();
   }
@@ -5228,6 +5232,8 @@ static void generate_fake_tag(RGWRados *store, map<string, bufferlist>& attrset,
   unsigned char md5[CEPH_CRYPTO_MD5_DIGESTSIZE];
   char md5_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 1];
   MD5 hash;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   hash.Update((const unsigned char *)manifest_bl.c_str(), manifest_bl.length());
 
   map<string, bufferlist>::iterator iter = attrset.find(RGW_ATTR_ETAG);
@@ -8050,9 +8056,9 @@ int RGWRados::bi_put(rgw_bucket& bucket, rgw_obj& obj, rgw_cls_bi_entry& entry)
   return bi_put(bs, entry);
 }
 
-int RGWRados::bi_list(rgw_bucket& bucket, const string& obj_name, const string& marker, uint32_t max, list<rgw_cls_bi_entry> *entries, bool *is_truncated)
+int RGWRados::bi_list(rgw_bucket& bucket, const string& obj_name_filter, const string& marker, uint32_t max, list<rgw_cls_bi_entry> *entries, bool *is_truncated)
 {
-  rgw_obj obj(bucket, obj_name);
+  rgw_obj obj(bucket, obj_name_filter);
   BucketShard bs(this);
   int ret = bs.init(bucket, obj, nullptr /* no RGWBucketInfo */);
   if (ret < 0) {
@@ -8061,7 +8067,7 @@ int RGWRados::bi_list(rgw_bucket& bucket, const string& obj_name, const string&
   }
 
   auto& ref = bs.bucket_obj.get_ref();
-  ret = cls_rgw_bi_list(ref.pool.ioctx(), ref.obj.oid, obj_name, marker, max, entries, is_truncated);
+  ret = cls_rgw_bi_list(ref.pool.ioctx(), ref.obj.oid, obj_name_filter, marker, max, entries, is_truncated);
   if (ret == -ENOENT) {
     *is_truncated = false;
   }
@@ -8071,16 +8077,29 @@ int RGWRados::bi_list(rgw_bucket& bucket, const string& obj_name, const string&
   return 0;
 }
 
-int RGWRados::bi_list(BucketShard& bs, const string& filter_obj, const string& marker, uint32_t max, list<rgw_cls_bi_entry> *entries, bool *is_truncated)
+int RGWRados::bi_list(BucketShard& bs, const string& obj_name_filter, const string& marker, uint32_t max,
+                     list<rgw_cls_bi_entry> *entries, bool *is_truncated)
 {
   auto& ref = bs.bucket_obj.get_ref();
-  int ret = cls_rgw_bi_list(ref.pool.ioctx(), ref.obj.oid, filter_obj, marker, max, entries, is_truncated);
+  int ret = cls_rgw_bi_list(ref.pool.ioctx(), ref.obj.oid, obj_name_filter, marker, max, entries, is_truncated);
   if (ret < 0)
     return ret;
 
   return 0;
 }
 
+int RGWRados::bi_list(rgw_bucket& bucket, int shard_id, const string& filter_obj, const string& marker, uint32_t max, list<rgw_cls_bi_entry> *entries, bool *is_truncated)
+{
+  BucketShard bs(this);
+  int ret = bs.init(bucket, shard_id, nullptr /* no RGWBucketInfo */);
+  if (ret < 0) {
+    ldout(cct, 5) << "bs.init() returned ret=" << ret << dendl;
+    return ret;
+  }
+
+  return bi_list(bs, filter_obj, marker, max, entries, is_truncated);
+}
+
 int RGWRados::bi_remove(BucketShard& bs)
 {
   auto& ref = bs.bucket_obj.get_ref();
@@ -8096,18 +8115,6 @@ int RGWRados::bi_remove(BucketShard& bs)
   return 0;
 }
 
-int RGWRados::bi_list(rgw_bucket& bucket, int shard_id, const string& filter_obj, const string& marker, uint32_t max, list<rgw_cls_bi_entry> *entries, bool *is_truncated)
-{
-  BucketShard bs(this);
-  int ret = bs.init(bucket, shard_id, nullptr /* no RGWBucketInfo */);
-  if (ret < 0) {
-    ldout(cct, 5) << "bs.init() returned ret=" << ret << dendl;
-    return ret;
-  }
-
-  return bi_list(bs, filter_obj, marker, max, entries, is_truncated);
-}
-
 int RGWRados::gc_operate(string& oid, librados::ObjectWriteOperation *op)
 {
   return rgw_rados_operate(gc_pool_ctx, oid, op, null_yield);
@@ -8424,7 +8431,7 @@ int RGWRados::cls_bucket_list_ordered(RGWBucketInfo& bucket_info,
   // (key=candidate, value=index into results_trackers); as we consume
   // entries from shards, we replace them with the next entries in the
   // shards until we run out
-  map<string, size_t> candidates;
+  std::map<std::string, size_t> candidates;
   size_t tracker_idx = 0;
   for (auto& t : results_trackers) {
     // it's important that the values in the map refer to the index
@@ -8688,6 +8695,7 @@ int RGWRados::cls_bucket_list_unordered(RGWBucketInfo& bucket_info,
          ent_list.emplace_back(std::move(dirent));
          ++count;
        } else {
+         last_added_entry = dirent.key;
          *is_truncated = true;
          goto check_updates;
        }
@@ -8881,6 +8889,7 @@ int RGWRados::check_disk_state(librados::IoCtx io_ctx,
        * non-bad ways this could happen (there probably are, but annoying
        * to handle!) */
     }
+
     // encode a suggested removal of that key
     list_state.ver.epoch = io_ctx.get_last_version();
     list_state.ver.pool = io_ctx.get_id();
@@ -8936,16 +8945,29 @@ int RGWRados::check_disk_state(librados::IoCtx io_ctx,
   object.meta.owner_display_name = owner.get_display_name();
 
   // encode suggested updates
-  list_state.ver.pool = io_ctx.get_id();
-  list_state.ver.epoch = astate->epoch;
+
   list_state.meta.size = object.meta.size;
   list_state.meta.accounted_size = object.meta.accounted_size;
   list_state.meta.mtime = object.meta.mtime;
   list_state.meta.category = main_category;
   list_state.meta.etag = etag;
   list_state.meta.content_type = content_type;
-  if (astate->obj_tag.length() > 0)
+
+  librados::IoCtx head_obj_ctx; // initialize to data pool so we can get pool id
+  const bool head_pool_found =
+    get_obj_head_ioctx(bucket_info, obj, &head_obj_ctx);
+  if (head_pool_found) {
+    list_state.ver.pool = head_obj_ctx.get_id();
+    list_state.ver.epoch = astate->epoch;
+  } else {
+    dout(0) << __PRETTY_FUNCTION__ <<
+      " WARNING: unable to find head object data pool for \"" <<
+      obj << "\", not updating version pool/epoch" << dendl;
+  }
+
+  if (astate->obj_tag.length() > 0) {
     list_state.tag = astate->obj_tag.c_str();
+  }
   list_state.meta.owner = owner.get_id().to_str();
   list_state.meta.owner_display_name = owner.get_display_name();
 
index 8a5ee7cfeefe5c1f0c664cfcec73b9ab4022df98..0ffe12785cc0bc76d44addd03af35ba2872a5775 100644 (file)
@@ -428,7 +428,7 @@ class RGWRados
   SafeTimer *timer;
 
   rgw::sal::RGWRadosStore *store;
-  RGWGC *gc;
+  RGWGC *gc = nullptr;
   RGWLC *lc;
   RGWObjectExpirer *obj_expirer;
   bool use_gc_thread;
@@ -507,6 +507,7 @@ protected:
   RGWIndexCompletionManager *index_completion_manager{nullptr};
 
   bool use_cache{false};
+  bool use_gc{true};
 public:
   RGWRados(): timer(NULL),
                gc(NULL), lc(NULL), obj_expirer(NULL), use_gc_thread(false), use_lc_thread(false), quota_threads(false),
@@ -526,6 +527,11 @@ public:
     return *this;
   }
 
+  RGWRados& set_use_gc(bool status) {
+    use_gc = status;
+    return *this;
+  }
+
   RGWLC *get_lc() {
     return lc;
   }
index b5733b240f325be8ed8ed1ee67b17f0cb2f7050a..b5a66e957cc29569286c359997f2f90f71216c23 100644 (file)
@@ -338,15 +338,15 @@ static int create_new_bucket_instance(rgw::sal::RGWRadosStore *store,
   new_bucket_info.new_bucket_instance_id.clear();
   new_bucket_info.reshard_status = cls_rgw_reshard_status::NOT_RESHARDING;
 
-  int ret = store->svc()->bi->init_index(new_bucket_info);
+  int ret = store->getRados()->put_bucket_instance_info(new_bucket_info, true, real_time(), &attrs);
   if (ret < 0) {
-    cerr << "ERROR: failed to init new bucket indexes: " << cpp_strerror(-ret) << std::endl;
+    cerr << "ERROR: failed to store new bucket instance info: " << cpp_strerror(-ret) << std::endl;
     return ret;
   }
 
-  ret = store->getRados()->put_bucket_instance_info(new_bucket_info, true, real_time(), &attrs);
+  ret = store->svc()->bi->init_index(new_bucket_info);
   if (ret < 0) {
-    cerr << "ERROR: failed to store new bucket instance info: " << cpp_strerror(-ret) << std::endl;
+    cerr << "ERROR: failed to init new bucket indexes: " << cpp_strerror(-ret) << std::endl;
     return ret;
   }
 
@@ -587,9 +587,10 @@ int RGWBucketReshard::do_reshard(int num_shards,
   for (int i = 0; i < num_source_shards; ++i) {
     bool is_truncated = true;
     marker.clear();
+    const std::string null_object_filter; // empty string since we're not filtering by object
     while (is_truncated) {
       entries.clear();
-      ret = store->getRados()->bi_list(bucket, i, string(), marker, max_entries, &entries, &is_truncated);
+      ret = store->getRados()->bi_list(bucket, i, null_object_filter, marker, max_entries, &entries, &is_truncated);
       if (ret < 0 && ret != -ENOENT) {
        derr << "ERROR: bi_list(): " << cpp_strerror(-ret) << dendl;
        return ret;
@@ -875,17 +876,17 @@ int RGWReshard::list(int logshard_num, string& marker, uint32_t max, std::list<c
 
   int ret = cls_rgw_reshard_list(store->getRados()->reshard_pool_ctx, logshard_oid, marker, max, entries, is_truncated);
 
-  if (ret < 0) {
-    if (ret == -ENOENT) {
-      *is_truncated = false;
-      ret = 0;
-    } else {
-      lderr(store->ctx()) << "ERROR: failed to list reshard log entries, oid=" << logshard_oid << dendl;
-      if (ret == -EACCES) {
-        lderr(store->ctx()) << "access denied to pool " << store->svc()->zone->get_zone_params().reshard_pool
-                          << ". Fix the pool access permissions of your client" << dendl;
-      }
-    } 
+  if (ret == -ENOENT) {
+    // these shard objects aren't created until we actually write something to
+    // them, so treat ENOENT as a successful empty listing
+    *is_truncated = false;
+    ret = 0;
+  } else if (ret == -EACCES) {
+    lderr(store->ctx()) << "ERROR: access denied to pool " << store->svc()->zone->get_zone_params().reshard_pool
+                      << ". Fix the pool access permissions of your client" << dendl;
+  } else if (ret < 0) {
+    lderr(store->ctx()) << "ERROR: failed to list reshard log entries, oid="
+        << logshard_oid << " marker=" << marker << " " << cpp_strerror(ret) << dendl;
   }
 
   return ret;
index 473e670d02ba4b382444ae3221537404806dccdf..662f997f3658552ba0b1ed0629dc338a81e25f74 100644 (file)
@@ -332,9 +332,6 @@ void RGWListRoles::execute()
 
   if (op_ret == 0) {
     s->formatter->open_array_section("ListRolesResponse");
-    s->formatter->open_object_section("ResponseMetadata");
-    s->formatter->dump_string("RequestId", s->trans_id);
-    s->formatter->close_section();
     s->formatter->open_array_section("ListRolesResult");
     s->formatter->open_object_section("Roles");
     for (const auto& it : result) {
@@ -344,6 +341,9 @@ void RGWListRoles::execute()
     }
     s->formatter->close_section();
     s->formatter->close_section();
+    s->formatter->open_object_section("ResponseMetadata");
+    s->formatter->dump_string("RequestId", s->trans_id);
+    s->formatter->close_section();
     s->formatter->close_section();
   }
 }
index 52071cf09a5938deb8f5c4e0faacf2fd024a4998..cb026714de397401cf457e766747251360fcb144 100644 (file)
@@ -386,7 +386,8 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs,
         try {
           decode(retention, iter->second);
           dump_header(s, "x-amz-object-lock-mode", retention.get_mode());
-          dump_time_header(s, "x-amz-object-lock-retain-until-date", retention.get_retain_until_date());
+          string date = ceph::to_iso_8601(retention.get_retain_until_date());
+          dump_header(s, "x-amz-object-lock-retain-until-date", date.c_str());
         } catch (buffer::error& err) {
           ldpp_dout(this, 0) << "ERROR: failed to decode RGWObjectRetention" << dendl;
         }
index db3bb717014d699411cdb98969657b992e35235a..358b8d7fc182eea764a674bb619b271452c5a5ed 100644 (file)
@@ -988,6 +988,8 @@ int RGWPutObj_ObjStore_SWIFT::get_params()
     }
 
     MD5 etag_sum;
+    // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+    etag_sum.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
     uint64_t total_size = 0;
     for (auto& entry : slo_info->entries) {
       etag_sum.Update((const unsigned char *)entry.etag.c_str(),
index 53079f66a783590795f7aaa6fd38ca30a813564a..ed2e6bfabfd10d2bb83bdeb2c136f30af915bfdd 100644 (file)
@@ -53,11 +53,17 @@ int RGWRadosUser::list_buckets(const string& marker, const string& end_marker,
 }
 
 RGWBucketList::~RGWBucketList()
+{
+  clear();
+}
+
+void RGWBucketList::clear()
 {
   for (auto itr = buckets.begin(); itr != buckets.end(); itr++) {
     delete itr->second;
   }
   buckets.clear();
+  truncated = false;
 }
 
 RGWBucket* RGWRadosUser::add_bucket(rgw_bucket& bucket,
@@ -301,7 +307,7 @@ int RGWRadosStore::get_bucket(RGWUser& u, const rgw_bucket& b, RGWBucket** bucke
 
 } // namespace rgw::sal
 
-rgw::sal::RGWRadosStore *RGWStoreManager::init_storage_provider(CephContext *cct, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_cache)
+rgw::sal::RGWRadosStore *RGWStoreManager::init_storage_provider(CephContext *cct, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_cache, bool use_gc)
 {
   RGWRados *rados = new RGWRados;
   rgw::sal::RGWRadosStore *store = new rgw::sal::RGWRadosStore();
@@ -310,6 +316,7 @@ rgw::sal::RGWRadosStore *RGWStoreManager::init_storage_provider(CephContext *cct
   rados->set_store(store);
 
   if ((*rados).set_use_cache(use_cache)
+              .set_use_gc(use_gc)
               .set_run_gc_thread(use_gc_thread)
               .set_run_lc_thread(use_lc_thread)
               .set_run_quota_threads(quota_threads)
index 542844d03924868770b2629e11559fafe7c25378..2af8d323f23a7e262f42cdfaeb2d43e9d6e6a481 100644 (file)
@@ -154,7 +154,7 @@ public:
     buckets[bucket->ent.bucket.name] = bucket;
   }
   size_t count() const { return buckets.size(); }
-  void clear() { buckets.clear(); truncated = false; }
+  void clear();
 }; // class RGWBucketList
 
 class RGWObject {
@@ -319,16 +319,16 @@ class RGWStoreManager {
 public:
   RGWStoreManager() {}
   static rgw::sal::RGWRadosStore *get_storage(CephContext *cct, bool use_gc_thread, bool use_lc_thread, bool quota_threads,
-                              bool run_sync_thread, bool run_reshard_thread, bool use_cache = true) {
+                              bool run_sync_thread, bool run_reshard_thread, bool use_cache = true, bool use_gc = true) {
     rgw::sal::RGWRadosStore *store = init_storage_provider(cct, use_gc_thread, use_lc_thread,
-       quota_threads, run_sync_thread, run_reshard_thread, use_cache);
+       quota_threads, run_sync_thread, run_reshard_thread, use_cache, use_gc);
     return store;
   }
   static rgw::sal::RGWRadosStore *get_raw_storage(CephContext *cct) {
     rgw::sal::RGWRadosStore *rados = init_raw_storage_provider(cct);
     return rados;
   }
-  static rgw::sal::RGWRadosStore *init_storage_provider(CephContext *cct, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_metadata_cache);
+  static rgw::sal::RGWRadosStore *init_storage_provider(CephContext *cct, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_metadata_cache, bool use_gc);
   static rgw::sal::RGWRadosStore *init_raw_storage_provider(CephContext *cct);
   static void close_storage(rgw::sal::RGWRadosStore *store);
 
index d49f39efa6eb9558fefad0c7f831482931bf4964..9e4449a50823107afa90a13b77c384a35cb90b70 100644 (file)
@@ -111,7 +111,12 @@ class RGWEtag
   H hash;
 
 public:
-  RGWEtag() {}
+  RGWEtag() {
+    if constexpr (std::is_same_v<H, MD5>) {
+      // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+      hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
+    }
+  }
 
   void update(const char *buf, size_t len) {
     hash.Update((const unsigned char *)buf, len);
index 58f7b5490538c36b26764047fdf606fe2a241c77..7fd4788d77c6d01500a3295d008fb1dc97914d60 100644 (file)
@@ -14,7 +14,7 @@ namespace {
   const std::string schema_re = "([[:alpha:]]+:\\/\\/)";
   const std::string user_pass_re = "(([^:\\s]+):([^@\\s]+)@)?";
   const std::string host_port_re = "([[:alnum:].:-]+)";
-  const std::string path_re = "(/[[:print:]]+)?";
+  const std::string path_re = "(/[[:print:]]*)?";
 }
 
 bool parse_url_authority(const std::string& url, std::string& host, std::string& user, std::string& password) {
index 34c00014ad31ee92a8069bc5127660ab8a3a73e0..c3bf462500ffc0780425cb1639211ada38c3102d 100644 (file)
@@ -1800,6 +1800,8 @@ static uint32_t gen_short_zone_id(const std::string zone_id)
 {
   unsigned char md5[CEPH_CRYPTO_MD5_DIGESTSIZE];
   MD5 hash;
+  // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+  hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
   hash.Update((const unsigned char *)zone_id.c_str(), zone_id.size());
   hash.Final(md5);
 
index 31d42588f683ff849892da4acb298fafc8b3f00c..b6ba628889d3701596ab9134602ae06c614ebccd 100644 (file)
@@ -940,7 +940,6 @@ int RGWSI_User_RADOS::read_stats_async(RGWSI_MetaBackend::Context *ctx,
   RGWGetUserStatsContext *cb = new RGWGetUserStatsContext(_cb);
   int r = cls_user_get_header_async(user_str, cb);
   if (r < 0) {
-    _cb->put();
     delete cb;
     return r;
   }
index df5386930512b693a59dbbe522aeef45bcb6d730..a30d2c9395314c4ee3772ce31be577d9c983c137 100644 (file)
@@ -434,6 +434,8 @@ int RGWSI_Zone::replace_region_with_zonegroup()
     unsigned char md5[CEPH_CRYPTO_MD5_DIGESTSIZE];
     char md5_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 1];
     MD5 hash;
+    // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes
+    hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
     hash.Update((const unsigned char *)new_realm_name.c_str(), new_realm_name.length());
     hash.Final(md5);
     buf_to_hex(md5, CEPH_CRYPTO_MD5_DIGESTSIZE, md5_str);
index 3a942854f5faa5f17efda023393a2381d9304869..0beb9ce09360c723d338590ccc8486d52e53a27e 100644 (file)
@@ -1660,15 +1660,17 @@ TEST(BufferList, rebuild_aligned_size_and_memory) {
      * scenario where the first bptr is both size and memory aligned and
      * the second is 0-length */
     bl.clear();
-    bufferptr ptr1(buffer::create_aligned(4096, 4096));
-    bl.append(ptr1);
-    bufferptr ptr(10);
-    /* bl.back().length() must be 0 */
-    bl.append(ptr, 0, 0);
+    bl.append(bufferptr{buffer::create_aligned(4096, 4096)});
+    bufferptr ptr(buffer::create_aligned(42, 4096));
+    /* bl.back().length() must be 0. offset set to 42 guarantees
+     * the entire list is unaligned. */
+    bl.append(ptr, 42, 0);
     EXPECT_EQ(bl.get_num_buffers(), 2);
     EXPECT_EQ(bl.back().length(), 0);
-    /* rebuild_aligned() calls rebuild_aligned_size_and_memory() */
-    bl.rebuild_aligned(4096);
+    EXPECT_FALSE(bl.is_aligned(4096));
+    /* rebuild_aligned() calls rebuild_aligned_size_and_memory().
+     * we assume the rebuild always happens. */
+    EXPECT_TRUE(bl.rebuild_aligned(4096));
     EXPECT_EQ(bl.get_num_buffers(), 1);
   }
 }
index e6f1ee869d1528d3f963f0fa5619f3423dfa5f99..3d11c0b0d9606bb44a4d72fe655c1561c95b8271 100644 (file)
   rbd help feature disable
   usage: rbd feature disable [--pool <pool>] [--namespace <namespace>] 
                              [--image <image>] 
-                             <image-spec> <features> [<features> ...]
+                             <image-spec> <features> [<features> ...] 
   
   Disable the specified image feature.
   
                             [--journal-splay-width <journal-splay-width>] 
                             [--journal-object-size <journal-object-size>] 
                             [--journal-pool <journal-pool>] 
-                            <image-spec> <features> [<features> ...]
+                            <image-spec> <features> [<features> ...] 
   
   Enable the specified image feature.
   
   rbd help mirror image enable
   usage: rbd mirror image enable [--pool <pool>] [--namespace <namespace>] 
                                  [--image <image>] 
-                                 <image-spec> <mode> 
+                                 <image-spec> [<mode>] 
   
   Enable RBD mirroring for an image.
   
                                         [--pool <pool>] 
                                         [--namespace <namespace>] 
                                         [--image <image>] 
-                                        <interval> <start-time> 
+                                        <interval> [<start-time>] 
   
   Add mirror snapshot schedule.
   
                                         [--pool <pool>] 
                                         [--namespace <namespace>] 
                                         [--image <image>] 
-                                        <interval> <start-time> 
+                                        [<interval>] [<start-time>] 
   
   Remove mirror snapshot schedule.
   
   
   rbd help trash purge schedule add
   usage: rbd trash purge schedule add [--pool <pool>] [--namespace <namespace>] 
-                                      <interval> <start-time> 
+                                      <interval> [<start-time>] 
   
   Add trash purge schedule.
   
   rbd help trash purge schedule remove
   usage: rbd trash purge schedule remove
                                         [--pool <pool>] [--namespace <namespace>] 
-                                        <interval> <start-time> 
+                                        [<interval>] [<start-time>] 
   
   Remove trash purge schedule.
   
index 3b340f7a3c4fd754ce5e1f257fd80f341c6b6f2b..f061c8f2043b9a6d6b1d230440c174831497864c 100644 (file)
@@ -262,7 +262,7 @@ TEST_F(cls_rgw, index_remove_object)
 
 TEST_F(cls_rgw, index_suggest)
 {
-  string bucket_oid = str_int("bucket", 3);
+  string bucket_oid = str_int("suggest", 1);
   {
     ObjectWriteOperation op;
     cls_rgw_bucket_init_index(op);
@@ -366,6 +366,71 @@ TEST_F(cls_rgw, index_suggest)
   test_stats(ioctx, bucket_oid, RGWObjCategory::None, num_objs / 2, total_size);
 }
 
+static void list_entries(librados::IoCtx& ioctx,
+                         const std::string& oid,
+                         uint32_t num_entries,
+                         std::map<int, rgw_cls_list_ret>& results)
+{
+  std::map<int, std::string> oids = { {0, oid} };
+  cls_rgw_obj_key start_key;
+  string empty_prefix;
+  string empty_delimiter;
+  ASSERT_EQ(0, CLSRGWIssueBucketList(ioctx, start_key, empty_prefix,
+                                     empty_delimiter, num_entries,
+                                     true, oids, results, 1)());
+}
+
+TEST_F(cls_rgw, index_suggest_complete)
+{
+  string bucket_oid = str_int("suggest", 2);
+  {
+    ObjectWriteOperation op;
+    cls_rgw_bucket_init_index(op);
+    ASSERT_EQ(0, ioctx.operate(bucket_oid, &op));
+  }
+
+  cls_rgw_obj_key obj = str_int("obj", 0);
+  string tag = str_int("tag-prepare", 0);
+  string loc = str_int("loc", 0);
+
+  // prepare entry
+  index_prepare(ioctx, bucket_oid, CLS_RGW_OP_ADD, tag, obj, loc);
+
+  // list entry before completion
+  rgw_bucket_dir_entry dirent;
+  {
+    std::map<int, rgw_cls_list_ret> listing;
+    list_entries(ioctx, bucket_oid, 1, listing);
+    ASSERT_EQ(1, listing.size());
+    const auto& entries = listing.begin()->second.dir.m;
+    ASSERT_EQ(1, entries.size());
+    dirent = entries.begin()->second;
+    ASSERT_EQ(obj, dirent.key);
+  }
+  // complete entry
+  {
+    rgw_bucket_dir_entry_meta meta;
+    index_complete(ioctx, bucket_oid, CLS_RGW_OP_ADD, tag, 1, obj, meta);
+  }
+  // suggest removal of listed entry
+  {
+    bufferlist updates;
+    cls_rgw_encode_suggestion(CEPH_RGW_REMOVE, dirent, updates);
+
+    ObjectWriteOperation op;
+    cls_rgw_suggest_changes(op, updates);
+    ASSERT_EQ(0, ioctx.operate(bucket_oid, &op));
+  }
+  // list entry again, verify that suggested removal was not applied
+  {
+    std::map<int, rgw_cls_list_ret> listing;
+    list_entries(ioctx, bucket_oid, 1, listing);
+    ASSERT_EQ(1, listing.size());
+    const auto& entries = listing.begin()->second.dir.m;
+    ASSERT_EQ(1, entries.size());
+    EXPECT_TRUE(entries.begin()->second.exists);
+  }
+}
 
 /*
  * This case is used to test whether get_obj_vals will
@@ -555,20 +620,20 @@ TEST_F(cls_rgw, bi_list)
 {
   string bucket_oid = str_int("bucket", 5);
 
- CephContext *cct = reinterpret_cast<CephContext *>(ioctx.cct());
 CephContext *cct = reinterpret_cast<CephContext *>(ioctx.cct());
 
   ObjectWriteOperation op;
   cls_rgw_bucket_init_index(op);
   ASSERT_EQ(0, ioctx.operate(bucket_oid, &op));
 
-  string name;
-  string marker;
+  const std::string empty_name_filter;
   uint64_t max = 10;
-  list<rgw_cls_bi_entry> entries;
+  std::list<rgw_cls_bi_entry> entries;
   bool is_truncated;
+  std::string marker;
 
-  int ret = cls_rgw_bi_list(ioctx, bucket_oid, name, marker, max, &entries,
-                           &is_truncated);
+  int ret = cls_rgw_bi_list(ioctx, bucket_oid, empty_name_filter, marker, max,
+                           &entries, &is_truncated);
   ASSERT_EQ(ret, 0);
   ASSERT_EQ(entries.size(), 0u) <<
     "The listing of an empty bucket as 0 entries.";
@@ -577,7 +642,7 @@ TEST_F(cls_rgw, bi_list)
 
   uint64_t epoch = 1;
   uint64_t obj_size = 1024;
-  uint64_t num_objs = 35;
+  const uint64_t num_objs = 35;
 
   for (uint64_t i = 0; i < num_objs; i++) {
     string obj = str_int(i % 4 ? "obj" : "об'єкт", i);
@@ -593,8 +658,8 @@ TEST_F(cls_rgw, bi_list)
                   RGW_BILOG_FLAG_VERSIONED_OP);
   }
 
-  ret = cls_rgw_bi_list(ioctx, bucket_oid, name, marker, num_objs + 10, &entries,
-                           &is_truncated);
+  ret = cls_rgw_bi_list(ioctx, bucket_oid, empty_name_filter, marker, num_objs + 10,
+                       &entries, &is_truncated);
   ASSERT_EQ(ret, 0);
   if (is_truncated) {
     ASSERT_LT(entries.size(), num_objs);
@@ -605,9 +670,10 @@ TEST_F(cls_rgw, bi_list)
   uint64_t num_entries = 0;
 
   is_truncated = true;
+  marker.clear();
   while(is_truncated) {
-    ret = cls_rgw_bi_list(ioctx, bucket_oid, name, marker, max, &entries,
-                         &is_truncated);
+    ret = cls_rgw_bi_list(ioctx, bucket_oid, empty_name_filter, marker, max,
+                         &entries, &is_truncated);
     ASSERT_EQ(ret, 0);
     if (is_truncated) {
       ASSERT_LT(entries.size(), num_objs - num_entries);
@@ -618,8 +684,9 @@ TEST_F(cls_rgw, bi_list)
     marker = entries.back().idx;
   }
 
-  ret = cls_rgw_bi_list(ioctx, bucket_oid, name, marker, max, &entries,
-                       &is_truncated);
+  // try with marker as final entry
+  ret = cls_rgw_bi_list(ioctx, bucket_oid, empty_name_filter, marker, max,
+                       &entries, &is_truncated);
   ASSERT_EQ(ret, 0);
   ASSERT_EQ(entries.size(), 0u);
   ASSERT_EQ(is_truncated, false);
@@ -630,8 +697,8 @@ TEST_F(cls_rgw, bi_list)
     is_truncated = true;
     marker.clear();
     while(is_truncated) {
-      ret = cls_rgw_bi_list(ioctx, bucket_oid, name, marker, max, &entries,
-                           &is_truncated);
+      ret = cls_rgw_bi_list(ioctx, bucket_oid, empty_name_filter, marker, max,
+                           &entries, &is_truncated);
       ASSERT_EQ(ret, 0);
       if (is_truncated) {
        ASSERT_LT(entries.size(), num_objs - num_entries);
@@ -641,13 +708,57 @@ TEST_F(cls_rgw, bi_list)
       num_entries += entries.size();
       marker = entries.back().idx;
     }
+
+    // try with marker as final entry
+    ret = cls_rgw_bi_list(ioctx, bucket_oid, empty_name_filter, marker, max,
+                         &entries, &is_truncated);
+    ASSERT_EQ(ret, 0);
+    ASSERT_EQ(entries.size(), 0u);
+    ASSERT_EQ(is_truncated, false);
   }
 
-  ret = cls_rgw_bi_list(ioctx, bucket_oid, name, marker, max, &entries,
-                       &is_truncated);
-  ASSERT_EQ(ret, 0);
-  ASSERT_EQ(entries.size(), 0u);
-  ASSERT_EQ(is_truncated, false);
+  // test with name filters; pairs contain filter and expected number of elements returned
+  const std::list<std::pair<const std::string,unsigned>> filters_results =
+    { { str_int("obj", 9), 1 },
+      { str_int("об'єкт", 8), 1 },
+      { str_int("obj", 8), 0 } };
+  for (const auto& filter_result : filters_results) {
+    is_truncated = true;
+    entries.clear();
+    marker.clear();
+
+    ret = cls_rgw_bi_list(ioctx, bucket_oid, filter_result.first, marker, max,
+                         &entries, &is_truncated);
+
+    ASSERT_EQ(ret, 0) << "bi list test with name filters should succeed";
+    ASSERT_EQ(entries.size(), filter_result.second) <<
+      "bi list test with filters should return the correct number of results";
+    ASSERT_EQ(is_truncated, false) <<
+      "bi list test with filters should return correct truncation indicator";
+  }
+
+  // test whether combined segment count is correcgt
+  is_truncated = false;
+  entries.clear();
+  marker.clear();
+
+  ret = cls_rgw_bi_list(ioctx, bucket_oid, empty_name_filter, marker, num_objs - 1,
+                       &entries, &is_truncated);
+  ASSERT_EQ(ret, 0) << "combined segment count should succeed";
+  ASSERT_EQ(entries.size(), num_objs - 1) <<
+    "combined segment count should return the correct number of results";
+  ASSERT_EQ(is_truncated, true) <<
+    "combined segment count should return correct truncation indicator";
+
+
+  marker = entries.back().idx; // advance marker
+  ret = cls_rgw_bi_list(ioctx, bucket_oid, empty_name_filter, marker, num_objs - 1,
+                       &entries, &is_truncated);
+  ASSERT_EQ(ret, 0) << "combined segment count should succeed";
+  ASSERT_EQ(entries.size(), 1) <<
+    "combined segment count should return the correct number of results";
+  ASSERT_EQ(is_truncated, false) <<
+    "combined segment count should return correct truncation indicator";
 }
 
 /* test garbage collection */
index 4b0a3cc0246a9b24a4a990b9b54d475178fe6c14..19a170ed27bf99b23816931120d39b8fa1f888c6 100644 (file)
@@ -63,6 +63,40 @@ TEST(LibRadosPools, PoolLookup2) {
   ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
 }
 
+TEST(LibRadosPools, PoolLookupOtherInstance) {
+  rados_t cluster1;
+  ASSERT_EQ("", connect_cluster(&cluster1));
+
+  rados_t cluster2;
+  std::string pool_name = get_temp_pool_name();
+  ASSERT_EQ("", create_one_pool(pool_name, &cluster2));
+  int64_t pool_id = rados_pool_lookup(cluster2, pool_name.c_str());
+  ASSERT_GT(pool_id, 0);
+
+  ASSERT_EQ(pool_id, rados_pool_lookup(cluster1, pool_name.c_str()));
+
+  ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster2));
+  rados_shutdown(cluster1);
+}
+
+TEST(LibRadosPools, PoolReverseLookupOtherInstance) {
+  rados_t cluster1;
+  ASSERT_EQ("", connect_cluster(&cluster1));
+
+  rados_t cluster2;
+  std::string pool_name = get_temp_pool_name();
+  ASSERT_EQ("", create_one_pool(pool_name, &cluster2));
+  int64_t pool_id = rados_pool_lookup(cluster2, pool_name.c_str());
+  ASSERT_GT(pool_id, 0);
+
+  char buf[100];
+  ASSERT_LT(0, rados_pool_reverse_lookup(cluster1, pool_id, buf, 100));
+  ASSERT_EQ(0, strcmp(buf, pool_name.c_str()));
+
+  ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster2));
+  rados_shutdown(cluster1);
+}
+
 TEST(LibRadosPools, PoolDelete) {
   rados_t cluster;
   std::string pool_name = get_temp_pool_name();
index 42c03c278e92ea875285c5059e56da66dcaa888f..54bf44ce2638525c084ca7ae6d13c27e6d9cad8a 100644 (file)
@@ -2435,56 +2435,31 @@ static int _get_pg_num(Rados& cluster, string pool_name)
   return -1;
 }
 
-TEST_F(LibRadosTwoPoolsPP, HitSetWrite) {
-  int num_pg = _get_pg_num(cluster, pool_name);
-  ceph_assert(num_pg > 0);
-
-  // make it a tier
-  bufferlist inbl;
-  ASSERT_EQ(0, cluster.mon_command(
-    "{\"prefix\": \"osd tier add\", \"pool\": \"" + pool_name +
-    "\", \"tierpool\": \"" + cache_pool_name +
-    "\", \"force_nonempty\": \"--force-nonempty\" }",
-    inbl, NULL, NULL));
-
-  // enable hitset tracking for this pool
-  ASSERT_EQ(0, cluster.mon_command(set_pool_str(cache_pool_name, "hit_set_count", 8),
-                                               inbl, NULL, NULL));
-  ASSERT_EQ(0, cluster.mon_command(set_pool_str(cache_pool_name, "hit_set_period", 600),
-                                               inbl, NULL, NULL));
-  ASSERT_EQ(0, cluster.mon_command(set_pool_str(cache_pool_name, "hit_set_type",
-                                               "explicit_hash"),
-                                  inbl, NULL, NULL));
-
-  // wait for maps to settle
-  cluster.wait_for_latest_osdmap();
-
-  cache_ioctx.set_namespace("");
-
-  int num = 200;
-
+int make_hitset(Rados& cluster, librados::IoCtx& cache_ioctx, int num_pg, 
+    int num, std::map<int, HitSet>& hitsets, std::string& cache_pool_name) 
+{
+  int pg = num_pg;
   // do a bunch of writes
   for (int i=0; i<num; ++i) {
     bufferlist bl;
     bl.append("a");
-    ASSERT_EQ(0, cache_ioctx.write(stringify(i), bl, 1, 0));
+    ceph_assert(0 == cache_ioctx.write(stringify(i), bl, 1, 0));
   }
 
   // get HitSets
-  std::map<int,HitSet> hitsets;
-  for (int i=0; i<num_pg; ++i) {
+  for (int i=0; i<pg; ++i) {
     list< pair<time_t,time_t> > ls;
     AioCompletion *c = librados::Rados::aio_create_completion();
-    ASSERT_EQ(0, cache_ioctx.hit_set_list(i, c, &ls));
+    ceph_assert(0 == cache_ioctx.hit_set_list(i, c, &ls));
     c->wait_for_complete();
     c->release();
     std::cout << "pg " << i << " ls " << ls << std::endl;
-    ASSERT_FALSE(ls.empty());
+    ceph_assert(!ls.empty());
 
     // get the latest
     c = librados::Rados::aio_create_completion();
     bufferlist bl;
-    ASSERT_EQ(0, cache_ioctx.hit_set_get(i, c, ls.back().first, &bl));
+    ceph_assert(0 == cache_ioctx.hit_set_get(i, c, ls.back().first, &bl));
     c->wait_for_complete();
     c->release();
 
@@ -2500,9 +2475,45 @@ TEST_F(LibRadosTwoPoolsPP, HitSetWrite) {
     }
 
     // cope with racing splits by refreshing pg_num
-    if (i == num_pg - 1)
-      num_pg = _get_pg_num(cluster, cache_pool_name);
+    if (i == pg - 1)
+      pg = _get_pg_num(cluster, cache_pool_name);
   }
+  return pg;
+}
+
+TEST_F(LibRadosTwoPoolsPP, HitSetWrite) {
+  int num_pg = _get_pg_num(cluster, pool_name);
+  ceph_assert(num_pg > 0);
+
+  // make it a tier
+  bufferlist inbl;
+  ASSERT_EQ(0, cluster.mon_command(
+    "{\"prefix\": \"osd tier add\", \"pool\": \"" + pool_name +
+    "\", \"tierpool\": \"" + cache_pool_name +
+    "\", \"force_nonempty\": \"--force-nonempty\" }",
+    inbl, NULL, NULL));
+
+  // enable hitset tracking for this pool
+  ASSERT_EQ(0, cluster.mon_command(set_pool_str(cache_pool_name, "hit_set_count", 8),
+                                               inbl, NULL, NULL));
+  ASSERT_EQ(0, cluster.mon_command(set_pool_str(cache_pool_name, "hit_set_period", 600),
+                                               inbl, NULL, NULL));
+  ASSERT_EQ(0, cluster.mon_command(set_pool_str(cache_pool_name, "hit_set_type",
+                                               "explicit_hash"),
+                                  inbl, NULL, NULL));
+
+  // wait for maps to settle
+  cluster.wait_for_latest_osdmap();
+
+  cache_ioctx.set_namespace("");
+
+  int num = 200;
+
+  std::map<int,HitSet> hitsets;
+
+  num_pg = make_hitset(cluster, cache_ioctx, num_pg, num, hitsets, cache_pool_name);
+
+  int retry = 0;
 
   for (int i=0; i<num; ++i) {
     string n = stringify(i);
@@ -2518,6 +2529,12 @@ TEST_F(LibRadosTwoPoolsPP, HitSetWrite) {
        break;
       }
     }
+    if (!found && retry < 5) {
+      num_pg = make_hitset(cluster, cache_ioctx, num_pg, num, hitsets, cache_pool_name);
+      i--;
+      retry++;
+      continue;
+    }
     ASSERT_TRUE(found);
   }
 }
index ee7cfc5fd3911a8aacaa9d0a52ca9b65047377be..5b3e5b956657297c9127638ec7bd617c17b45666 100644 (file)
@@ -632,7 +632,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, UnoptimizedIOBlockedIO) {
   finish_ctx_ptr2->complete(0);
 }
 
-TEST_F(TestMockCacheWriteAroundObjectDispatch, FUA) {
+TEST_F(TestMockCacheWriteAroundObjectDispatch, WriteFUA) {
   librbd::ImageCtx *ictx;
   ASSERT_EQ(0, open_image(m_image_name, &ictx));
 
@@ -655,5 +655,29 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, FUA) {
   ASSERT_EQ(finish_ctx_ptr, &finish_ctx);
 }
 
+TEST_F(TestMockCacheWriteAroundObjectDispatch, WriteSameFUA) {
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  MockTestImageCtx mock_image_ctx(*ictx);
+  MockWriteAroundObjectDispatch object_dispatch(&mock_image_ctx, 16384, false);
+
+  InSequence seq;
+
+  bufferlist data;
+  data.append(std::string(512, '1'));
+
+  io::DispatchResult dispatch_result;
+  MockContext finish_ctx;
+  MockContext dispatch_ctx;
+  Context* finish_ctx_ptr = &finish_ctx;
+  ASSERT_FALSE(object_dispatch.write_same(0, 0, 8192, {{0, 8192}},
+                                          std::move(data), {},
+                                          LIBRADOS_OP_FLAG_FADVISE_FUA, {},
+                                          nullptr, nullptr, &dispatch_result,
+                                          &finish_ctx_ptr, &dispatch_ctx));
+  ASSERT_EQ(finish_ctx_ptr, &finish_ctx);
+}
+
 } // namespace cache
 } // namespace librbd
index f1f59cf3d4e401568ea113d4fc07d81e2d0bef6c..1b05fa1ad0641f98ab81d52979c79711396059ac 100644 (file)
@@ -344,6 +344,7 @@ TEST_F(TestMockDeepCopyImageCopyRequest, FastDiff) {
 
   expect_get_image_size(mock_src_image_ctx, 1 << m_src_image_ctx->order);
   expect_get_image_size(mock_src_image_ctx, 0);
+  expect_op_work_queue(mock_src_image_ctx);
 
   librbd::deep_copy::NoOpHandler no_op;
   C_SaferCond ctx;
@@ -356,6 +357,82 @@ TEST_F(TestMockDeepCopyImageCopyRequest, FastDiff) {
   ASSERT_EQ(0, ctx.wait());
 }
 
+TEST_F(TestMockDeepCopyImageCopyRequest, FastDiffMix) {
+  librados::snap_t snap_id_end;
+  ASSERT_EQ(0, create_snap("copy", &snap_id_end));
+
+  uint64_t object_count = 12;
+
+  librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
+  librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
+  MockObjectCopyRequest mock_object_copy_request;
+
+  InSequence seq;
+
+  MockDiffRequest mock_diff_request;
+  BitVector<2> diff_state;
+  diff_state.resize(object_count);
+  diff_state[1] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[2] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[3] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[5] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[8] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[9] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[10] = object_map::DIFF_STATE_DATA_UPDATED;
+  expect_diff_send(mock_diff_request, diff_state, 0);
+
+  expect_get_image_size(mock_src_image_ctx,
+                        object_count * (1 << m_src_image_ctx->order));
+  expect_get_image_size(mock_src_image_ctx, 0);
+
+  expect_op_work_queue(mock_src_image_ctx);
+  expect_object_copy_send(mock_object_copy_request);
+  expect_object_copy_send(mock_object_copy_request);
+  expect_object_copy_send(mock_object_copy_request);
+  expect_op_work_queue(mock_src_image_ctx);
+  expect_object_copy_send(mock_object_copy_request);
+  expect_op_work_queue(mock_src_image_ctx);
+  expect_object_copy_send(mock_object_copy_request);
+  expect_object_copy_send(mock_object_copy_request);
+  expect_object_copy_send(mock_object_copy_request);
+  expect_op_work_queue(mock_src_image_ctx);
+
+  std::vector<bool> seen(object_count);
+  struct Handler : public librbd::deep_copy::NoOpHandler {
+    Handler(std::vector<bool>* seen) : m_seen(seen) {}
+
+    int update_progress(uint64_t object_no, uint64_t end_object_no) override {
+      EXPECT_THAT(object_no, ::testing::AllOf(::testing::Ge(1),
+                                              ::testing::Le(m_seen->size())));
+      EXPECT_EQ(end_object_no, m_seen->size());
+      EXPECT_FALSE((*m_seen)[object_no - 1]);
+      (*m_seen)[object_no - 1] = true;
+      return 0;
+    }
+
+    std::vector<bool>* m_seen;
+  } handler(&seen);
+
+  C_SaferCond ctx;
+  auto request = new MockImageCopyRequest(&mock_src_image_ctx,
+                                          &mock_dst_image_ctx,
+                                          0, snap_id_end, 0, false, boost::none,
+                                          m_snap_seqs, &handler, &ctx);
+  request->send();
+
+  ASSERT_EQ(m_snap_map, wait_for_snap_map(mock_object_copy_request));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 1, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 2, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 3, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 5, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 8, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 9, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 10, nullptr, 0));
+  ASSERT_EQ(0, ctx.wait());
+
+  EXPECT_THAT(seen, ::testing::Each(::testing::IsTrue()));
+}
+
 TEST_F(TestMockDeepCopyImageCopyRequest, OutOfOrder) {
   std::string max_ops_str;
   ASSERT_EQ(0, _rados.conf_get("rbd_concurrent_management_ops", max_ops_str));
@@ -592,6 +669,32 @@ TEST_F(TestMockDeepCopyImageCopyRequest, Cancel_Inflight_Sync) {
   ASSERT_EQ(5u, handler.object_number.get());
 }
 
+TEST_F(TestMockDeepCopyImageCopyRequest, CancelBeforeSend) {
+  librados::snap_t snap_id_end;
+  ASSERT_EQ(0, create_snap("copy", &snap_id_end));
+
+  librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
+  librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
+
+  InSequence seq;
+
+  MockDiffRequest mock_diff_request;
+  expect_diff_send(mock_diff_request, {}, -EINVAL);
+  expect_get_image_size(mock_src_image_ctx, 2 * (1 << m_src_image_ctx->order));
+  expect_get_image_size(mock_src_image_ctx, 0);
+
+  librbd::deep_copy::NoOpHandler no_op;
+  C_SaferCond ctx;
+  auto request = new MockImageCopyRequest(&mock_src_image_ctx,
+                                          &mock_dst_image_ctx,
+                                          0, snap_id_end, 0, false, boost::none,
+                                          m_snap_seqs, &no_op, &ctx);
+  request->cancel();
+  request->send();
+
+  ASSERT_EQ(-ECANCELED, ctx.wait());
+}
+
 TEST_F(TestMockDeepCopyImageCopyRequest, MissingSnap) {
   librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
   librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
index 754ef9727f95755582d1f04655b3ee8e75a5d4e5..5a44622610d2f6485a31af6f710c830af229a46d 100644 (file)
@@ -291,7 +291,7 @@ TEST_F(TestMockMirrorSnapshotCreatePrimaryRequest, SuccessUnlinkPeer) {
 
   librbd::ImageCtx *ictx;
   ASSERT_EQ(0, open_image(m_image_name, &ictx));
-  ictx->config.set_val("conf_rbd_mirroring_max_mirroring_snapshots", "3");
+  ictx->config.set_val("rbd_mirroring_max_mirroring_snapshots", "3");
 
   MockTestImageCtx mock_image_ctx(*ictx);
   for (int i = 0; i < 3; i++) {
@@ -326,7 +326,7 @@ TEST_F(TestMockMirrorSnapshotCreatePrimaryRequest, SuccessUnlinkNoPeer) {
 
   librbd::ImageCtx *ictx;
   ASSERT_EQ(0, open_image(m_image_name, &ictx));
-  ictx->config.set_val("conf_rbd_mirroring_max_mirroring_snapshots", "3");
+  ictx->config.set_val("rbd_mirroring_max_mirroring_snapshots", "3");
 
   MockTestImageCtx mock_image_ctx(*ictx);
   cls::rbd::MirrorSnapshotNamespace ns{
@@ -361,7 +361,7 @@ TEST_F(TestMockMirrorSnapshotCreatePrimaryRequest, SuccessUnlinkMultiplePeers) {
 
   librbd::ImageCtx *ictx;
   ASSERT_EQ(0, open_image(m_image_name, &ictx));
-  ictx->config.set_val("conf_rbd_mirroring_max_mirroring_snapshots", "3");
+  ictx->config.set_val("rbd_mirroring_max_mirroring_snapshots", "3");
 
   MockTestImageCtx mock_image_ctx(*ictx);
   for (int i = 0; i < 3; i++) {
index dffca086d3ddd8cadfb0f9b19e53963896dafadf..8e522715e6a3ac4d4deca663181e1f4f34c5b49d 100644 (file)
@@ -39,6 +39,7 @@
 #include <set>
 #include <thread>
 #include <vector>
+#include <limits>
 
 #include "test/librados/test.h"
 #include "test/librados/test_cxx.h"
@@ -2313,8 +2314,10 @@ TEST_F(TestLibRBD, TestScatterGatherIO)
   ASSERT_EQ(0, rbd_open(ioctx, name.c_str(), &image, NULL));
 
   std::string write_buffer("This is a test");
+  // These iovecs should produce a length overflow
   struct iovec bad_iovs[] = {
-    {.iov_base = NULL, .iov_len = static_cast<size_t>(-1)}
+    {.iov_base = &write_buffer[0], .iov_len = 5},
+    {.iov_base = NULL, .iov_len = std::numeric_limits<size_t>::max()}
   };
   struct iovec write_iovs[] = {
     {.iov_base = &write_buffer[0],  .iov_len = 5},
@@ -2326,7 +2329,7 @@ TEST_F(TestLibRBD, TestScatterGatherIO)
   rbd_completion_t comp;
   rbd_aio_create_completion(NULL, NULL, &comp);
   ASSERT_EQ(-EINVAL, rbd_aio_writev(image, write_iovs, 0, 0, comp));
-  ASSERT_EQ(-EINVAL, rbd_aio_writev(image, bad_iovs, 1, 0, comp));
+  ASSERT_EQ(-EINVAL, rbd_aio_writev(image, bad_iovs, 2, 0, comp));
   ASSERT_EQ(0, rbd_aio_writev(image, write_iovs,
                               sizeof(write_iovs) / sizeof(struct iovec),
                               1<<order, comp));
@@ -2343,7 +2346,7 @@ TEST_F(TestLibRBD, TestScatterGatherIO)
 
   rbd_aio_create_completion(NULL, NULL, &comp);
   ASSERT_EQ(-EINVAL, rbd_aio_readv(image, read_iovs, 0, 0, comp));
-  ASSERT_EQ(-EINVAL, rbd_aio_readv(image, bad_iovs, 1, 0, comp));
+  ASSERT_EQ(-EINVAL, rbd_aio_readv(image, bad_iovs, 2, 0, comp));
   ASSERT_EQ(0, rbd_aio_readv(image, read_iovs,
                              sizeof(read_iovs) / sizeof(struct iovec),
                              1<<order, comp));
@@ -3928,6 +3931,61 @@ interval_set<uint64_t> round_diff_interval(const interval_set<uint64_t>& diff,
   return rounded_diff;
 }
 
+TEST_F(TestLibRBD, SnapDiff)
+{
+  REQUIRE_FEATURE(RBD_FEATURE_FAST_DIFF);
+
+  rados_ioctx_t ioctx;
+  rados_ioctx_create(_cluster, m_pool_name.c_str(), &ioctx);
+
+  rbd_image_t image;
+  int order = 0;
+  std::string image_name = get_temp_image_name();
+  uint64_t size = 100 << 20;
+  ASSERT_EQ(0, create_image(ioctx, image_name.c_str(), size, &order));
+  ASSERT_EQ(0, rbd_open(ioctx, image_name.c_str(), &image, nullptr));
+
+  char test_data[TEST_IO_SIZE + 1];
+  for (size_t i = 0; i < TEST_IO_SIZE; ++i) {
+    test_data[i] = (char) (rand() % (126 - 33) + 33);
+  }
+  test_data[TEST_IO_SIZE] = '\0';
+
+  ASSERT_PASSED(write_test_data, image, test_data, 0,
+                TEST_IO_SIZE, LIBRADOS_OP_FLAG_FADVISE_NOCACHE);
+
+  interval_set<uint64_t> diff;
+  ASSERT_EQ(0, rbd_diff_iterate2(image, nullptr, 0, size, true, true,
+                                 iterate_cb, &diff));
+  EXPECT_EQ(1 << order, diff.size());
+
+  ASSERT_EQ(0, rbd_snap_create(image, "snap1"));
+  ASSERT_EQ(0, rbd_snap_create(image, "snap2"));
+
+  diff.clear();
+  ASSERT_EQ(0, rbd_diff_iterate2(image, nullptr, 0, size, true, true,
+                                 iterate_cb, &diff));
+  EXPECT_EQ(1 << order, diff.size());
+
+  diff.clear();
+  ASSERT_EQ(0, rbd_diff_iterate2(image, "snap1", 0, size, true, true,
+                                 iterate_cb, &diff));
+  EXPECT_EQ(0, diff.size());
+
+  diff.clear();
+  ASSERT_EQ(0, rbd_diff_iterate2(image, "snap2", 0, size, true, true,
+                                 iterate_cb, &diff));
+  EXPECT_EQ(0, diff.size());
+
+  ASSERT_EQ(0, rbd_snap_remove(image, "snap1"));
+  ASSERT_EQ(0, rbd_snap_remove(image, "snap2"));
+
+  ASSERT_EQ(0, rbd_close(image));
+  ASSERT_EQ(0, rbd_remove(ioctx, image_name.c_str()));
+
+  rados_ioctx_destroy(ioctx);
+}
+
 template <typename T>
 class DiffIterateTest : public TestLibRBD {
 public:
index 918b57f555ee345f4d87d499a3321dff0f38f69a..fc92817938dbcf2639ab0b72770f74cd90652c30 100644 (file)
@@ -1119,7 +1119,7 @@ TEST_F(TestMirroring, Snapshot)
   ASSERT_EQ(0, m_rbd.open(m_ioctx, image, image_name.c_str()));
 
   ASSERT_EQ(0, image.metadata_set(
-              "conf_rbd_mirroring_max_mirroring_snapshots", "3"));
+              "conf_rbd_mirroring_max_mirroring_snapshots", "5"));
 
   uint64_t snap_id;
 
@@ -1144,22 +1144,24 @@ TEST_F(TestMirroring, Snapshot)
   ASSERT_EQ(1U, snaps.size());
   ASSERT_EQ(snaps[0].id, snap_id);
 
-  ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
-  ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
-  ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
+  for (int i = 0; i < 5; i++) {
+    ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
+  }
   snaps.clear();
   ASSERT_EQ(0, image.snap_list(snaps));
-  ASSERT_EQ(3U, snaps.size());
-  ASSERT_EQ(snaps[2].id, snap_id);
+  ASSERT_EQ(5U, snaps.size());
+  ASSERT_EQ(snaps[4].id, snap_id);
 
   // automatic peer unlink on max_mirroring_snapshots reached
   ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
   vector<librbd::snap_info_t> snaps1;
   ASSERT_EQ(0, image.snap_list(snaps1));
-  ASSERT_EQ(3U, snaps1.size());
+  ASSERT_EQ(5U, snaps1.size());
   ASSERT_EQ(snaps1[0].id, snaps[0].id);
   ASSERT_EQ(snaps1[1].id, snaps[1].id);
-  ASSERT_EQ(snaps1[2].id, snap_id);
+  ASSERT_EQ(snaps1[2].id, snaps[2].id);
+  ASSERT_EQ(snaps1[3].id, snaps[3].id);
+  ASSERT_EQ(snaps1[4].id, snap_id);
 
   librbd::snap_namespace_type_t snap_ns_type;
   ASSERT_EQ(0, image.snap_get_namespace_type(snap_id, &snap_ns_type));
index 5a7b96dce0a603fb39f777eee5193075c683b36c..6043d21164dc1557df6cfd1edcee5e2aac8f2a43 100644 (file)
@@ -31,7 +31,8 @@ int main(int argc, char **argv) {
   return RUN_ALL_TESTS();
 }
 
-class OSDMapTest : public testing::Test {
+class OSDMapTest : public testing::Test,
+                   public ::testing::WithParamInterface<std::pair<int, int>> {
   int num_osds = 6;
 public:
   OSDMap osdmap;
@@ -1943,3 +1944,156 @@ TEST_F(OSDMapTest, BUG_48884)
     }
   }
 }
+
+TEST_P(OSDMapTest, BUG_51842) {
+    set_up_map(3, true);
+    OSDMap tmp; // use a tmpmap here, so we do not dirty origin map..
+    tmp.deepish_copy_from(osdmap);
+    for (int i = 0; i < (int)get_num_osds(); i++) {
+      stringstream osd_name;
+      stringstream host_name;
+      vector<string> move_to;
+      osd_name << "osd." << i;
+      host_name << "host=host-" << i;
+      move_to.push_back("root=infra-1706");
+      move_to.push_back(host_name.str());
+      auto r = crush_move(tmp, osd_name.str(), move_to);
+      ASSERT_EQ(0, r);
+    }
+
+    // build crush rule
+    CrushWrapper crush;
+    get_crush(tmp, crush);
+    string rule_name = "infra-1706";
+    int rule_type = pg_pool_t::TYPE_REPLICATED;
+    ASSERT_TRUE(!crush.rule_exists(rule_name));
+    int rno;
+    for (rno = 0; rno < crush.get_max_rules(); rno++) {
+      if (!crush.rule_exists(rno))
+        break;
+    }
+    string root_bucket = "infra-1706";
+    int root = crush.get_item_id(root_bucket);
+    int min_size = 1;
+    int max_size = 20;
+    int steps = 5;
+    crush_rule *rule = crush_make_rule(steps, rno, rule_type, min_size, max_size);
+    int step = 0;
+    crush_rule_set_step(rule, step++, CRUSH_RULE_SET_CHOOSELEAF_TRIES, 5, 0);
+    crush_rule_set_step(rule, step++, CRUSH_RULE_SET_CHOOSE_TRIES, 100, 0);
+    crush_rule_set_step(rule, step++, CRUSH_RULE_TAKE, root, 0);
+    // note: it's ok to set like 'step chooseleaf_firstn 0 host'
+    std::pair<int, int> param = GetParam();
+    int rep_num = std::get<0>(param);
+    int domain = std::get<1>(param);
+    crush_rule_set_step(rule, step++, CRUSH_RULE_CHOOSELEAF_FIRSTN, rep_num, domain);
+    crush_rule_set_step(rule, step++, CRUSH_RULE_EMIT, 0, 0);
+    ASSERT_TRUE(step == steps);
+    auto r = crush_add_rule(crush.get_crush_map(), rule, rno);
+    ASSERT_TRUE(r >= 0);
+    crush.set_rule_name(rno, rule_name);
+    {
+      OSDMap::Incremental pending_inc(tmp.get_epoch() + 1);
+      pending_inc.crush.clear();
+      crush.encode(pending_inc.crush, CEPH_FEATURES_SUPPORTED_DEFAULT);
+      tmp.apply_incremental(pending_inc);
+    }
+    {
+      stringstream oss;
+      crush.dump_tree(&oss, NULL);
+      std::cout << oss.str() << std::endl;
+      Formatter *f = Formatter::create("json-pretty");
+      f->open_object_section("crush_rules");
+      crush.dump_rules(f);
+      f->close_section();
+      f->flush(cout);
+      delete f;
+    }
+    // create a replicated pool referencing the above rule
+    int64_t pool_infra_1706;
+    {
+      OSDMap::Incremental new_pool_inc(tmp.get_epoch() + 1);
+      new_pool_inc.new_pool_max = tmp.get_pool_max();
+      new_pool_inc.fsid = tmp.get_fsid();
+      pg_pool_t empty;
+      pool_infra_1706 = ++new_pool_inc.new_pool_max;
+      pg_pool_t *p = new_pool_inc.get_new_pool(pool_infra_1706, &empty);
+      p->size = 3;
+      p->min_size = 1;
+      p->set_pg_num(256);
+      p->set_pgp_num(256);
+      p->type = pg_pool_t::TYPE_REPLICATED;
+      p->crush_rule = rno;
+      p->set_flag(pg_pool_t::FLAG_HASHPSPOOL);
+      new_pool_inc.new_pool_names[pool_infra_1706] = "pool_infra_1706";
+      tmp.apply_incremental(new_pool_inc);
+    }
+
+    // add upmaps
+    pg_t rep_pg(3, pool_infra_1706);
+    pg_t rep_pgid = tmp.raw_pg_to_pg(rep_pg);
+    pg_t rep_pg2(4, pool_infra_1706);
+    pg_t rep_pgid2 = tmp.raw_pg_to_pg(rep_pg2);
+    pg_t rep_pg3(6, pool_infra_1706);
+    pg_t rep_pgid3 = tmp.raw_pg_to_pg(rep_pg3);
+    {
+      OSDMap::Incremental pending_inc(tmp.get_epoch() + 1);
+      pending_inc.new_pg_upmap[rep_pgid] = mempool::osdmap::vector<int32_t>({1,0,2});
+      pending_inc.new_pg_upmap[rep_pgid2] = mempool::osdmap::vector<int32_t>({1,2,0});
+      pending_inc.new_pg_upmap[rep_pgid3] = mempool::osdmap::vector<int32_t>({1,2,0});
+      tmp.apply_incremental(pending_inc);
+      ASSERT_TRUE(tmp.have_pg_upmaps(rep_pgid));
+      ASSERT_TRUE(tmp.have_pg_upmaps(rep_pgid2));
+      ASSERT_TRUE(tmp.have_pg_upmaps(rep_pgid3));
+    }
+
+    {
+      // now, set pool size to 1
+      OSDMap tmpmap;
+      tmpmap.deepish_copy_from(tmp);
+      OSDMap::Incremental new_pool_inc(tmpmap.get_epoch() + 1);
+      pg_pool_t p = *tmpmap.get_pg_pool(pool_infra_1706);
+      p.size = 1;
+      p.last_change = new_pool_inc.epoch;
+      new_pool_inc.new_pools[pool_infra_1706] = p;
+      tmpmap.apply_incremental(new_pool_inc);
+
+      OSDMap::Incremental new_pending_inc(tmpmap.get_epoch() + 1);
+      clean_pg_upmaps(g_ceph_context, tmpmap, new_pending_inc);
+      tmpmap.apply_incremental(new_pending_inc);
+      // check pg upmaps
+      ASSERT_TRUE(!tmpmap.have_pg_upmaps(rep_pgid));
+      ASSERT_TRUE(!tmpmap.have_pg_upmaps(rep_pgid2));
+      ASSERT_TRUE(!tmpmap.have_pg_upmaps(rep_pgid3));
+    }
+    {
+      // now, set pool size to 4
+      OSDMap tmpmap;
+      tmpmap.deepish_copy_from(tmp);
+      OSDMap::Incremental new_pool_inc(tmpmap.get_epoch() + 1);
+      pg_pool_t p = *tmpmap.get_pg_pool(pool_infra_1706);
+      p.size = 4;
+      p.last_change = new_pool_inc.epoch;
+      new_pool_inc.new_pools[pool_infra_1706] = p;
+      tmpmap.apply_incremental(new_pool_inc);
+
+      OSDMap::Incremental new_pending_inc(tmpmap.get_epoch() + 1);
+      clean_pg_upmaps(g_ceph_context, tmpmap, new_pending_inc);
+      tmpmap.apply_incremental(new_pending_inc);
+      // check pg upmaps
+      ASSERT_TRUE(!tmpmap.have_pg_upmaps(rep_pgid));
+      ASSERT_TRUE(!tmpmap.have_pg_upmaps(rep_pgid2));
+      ASSERT_TRUE(!tmpmap.have_pg_upmaps(rep_pgid3));
+    }
+}
+
+INSTANTIATE_TEST_CASE_P(
+  OSDMap,
+  OSDMapTest,
+  ::testing::Values(
+    std::make_pair<int, int>(0, 1), // chooseleaf firstn 0 host
+    std::make_pair<int, int>(3, 1), // chooseleaf firstn 3 host
+    std::make_pair<int, int>(0, 0), // chooseleaf firstn 0 osd
+    std::make_pair<int, int>(3, 0)  // chooseleaf firstn 3 osd
+  )
+);
index 9f75e69e609a60f193251905947f0747adcb15f5..4aa9516294d0635d4a25f55a3c1f1f7ccb8b785a 100644 (file)
@@ -154,12 +154,11 @@ public:
 
   MockPrepareReplayRequest* create_request(
       MockStateBuilder& mock_state_builder,
-      librbd::mirror::PromotionState remote_promotion_state,
       const std::string& local_mirror_uuid,
       bool* resync_requested, bool* syncing, Context* on_finish) {
     return new MockPrepareReplayRequest(
-      local_mirror_uuid, remote_promotion_state, nullptr, &mock_state_builder,
-      resync_requested, syncing, on_finish);
+      local_mirror_uuid, nullptr, &mock_state_builder, resync_requested,
+      syncing, on_finish);
   }
 
   librbd::ImageCtx *m_local_image_ctx = nullptr;
@@ -204,9 +203,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, Success) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -228,9 +226,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, NoLocalJournal) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EINVAL, ctx.wait());
 }
@@ -257,9 +254,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, ResyncRequested) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_TRUE(resync_requested);
@@ -286,42 +282,12 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, ResyncRequestedError) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EINVAL, ctx.wait());
 }
 
-TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, UnlinkedRemoteNonPrimary) {
-  InSequence seq;
-
-  librbd::MockJournal mock_journal;
-  librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx);
-  mock_local_image_ctx.journal = &mock_journal;
-
-  // check initial state
-  expect_is_resync_requested(mock_journal, false, 0);
-  expect_journal_get_tag_tid(mock_journal, 345);
-  expect_journal_get_tag_data(mock_journal, {"blah"});
-
-  C_SaferCond ctx;
-  ::journal::MockJournaler mock_remote_journaler;
-  librbd::journal::MirrorPeerClientMeta mirror_peer_client_meta;
-  mirror_peer_client_meta.state = librbd::journal::MIRROR_PEER_STATE_REPLAYING;
-  mirror_peer_client_meta.image_id = mock_local_image_ctx.id;
-  MockStateBuilder mock_state_builder(mock_local_image_ctx,
-                                      mock_remote_journaler,
-                                      mirror_peer_client_meta);
-  bool resync_requested;
-  bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_NON_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
-  request->send();
-  ASSERT_EQ(-EREMOTEIO, ctx.wait());
-}
-
 TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, Syncing) {
   InSequence seq;
 
@@ -344,9 +310,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, Syncing) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -384,9 +349,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, GetRemoteTagClassError)
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EINVAL, ctx.wait());
 }
@@ -430,9 +394,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, GetRemoteTagsError) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EINVAL, ctx.wait());
 }
@@ -501,9 +464,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, LocalDemotedRemoteSynci
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -549,46 +511,14 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, UpdateClientError) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
   ASSERT_FALSE(syncing);
 }
 
-TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, NonPrimaryRemoteNotTagOwner) {
-  InSequence seq;
-
-  librbd::MockJournal mock_journal;
-  librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx);
-  mock_local_image_ctx.journal = &mock_journal;
-
-  // check initial state
-  expect_is_resync_requested(mock_journal, false, 0);
-  expect_journal_get_tag_tid(mock_journal, 345);
-  expect_journal_get_tag_data(mock_journal, {librbd::Journal<>::LOCAL_MIRROR_UUID,
-                                             librbd::Journal<>::ORPHAN_MIRROR_UUID,
-                                             true, 344, 0});
-
-  C_SaferCond ctx;
-  ::journal::MockJournaler mock_remote_journaler;
-  librbd::journal::MirrorPeerClientMeta mirror_peer_client_meta;
-  mirror_peer_client_meta.state = librbd::journal::MIRROR_PEER_STATE_REPLAYING;
-  mirror_peer_client_meta.image_id = mock_local_image_ctx.id;
-  MockStateBuilder mock_state_builder(mock_local_image_ctx,
-                                      mock_remote_journaler,
-                                      mirror_peer_client_meta);
-  bool resync_requested;
-  bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_NON_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
-  request->send();
-  ASSERT_EQ(-EREMOTEIO, ctx.wait());
-}
-
 TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, RemoteDemotePromote) {
   InSequence seq;
 
@@ -637,9 +567,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, RemoteDemotePromote) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -704,9 +633,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, MultipleRemoteDemotePro
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -759,9 +687,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, LocalDemoteRemotePromot
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -812,9 +739,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, SplitBrainForcePromote)
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EEXIST, ctx.wait());
 }
index 8990a6071909fdd21664921649976f548d835740..253d528c06aeac0f203fa4e3f6fc8a5780306890 100644 (file)
@@ -933,7 +933,7 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, SyncSnapshot) {
                                         mock_remote_image_ctx));
 }
 
-TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSync) {
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSyncInitial) {
   librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
   librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
 
@@ -965,7 +965,7 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSync) {
                                    mock_image_meta,
                                    &update_watch_ctx));
 
-  // inject a incomplete sync snapshot
+  // inject an incomplete sync snapshot with last_copied_object_number > 0
   mock_remote_image_ctx.snap_info = {
     {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
        cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
@@ -1018,6 +1018,588 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSync) {
                                         mock_remote_image_ctx));
 }
 
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSyncDelta) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number > 0
+  // after a complete snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}},
+    {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       1, true, 0, {{1, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}},
+    {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       2, false, 123, {{2, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // re-sync snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 12, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 1, 2, 11,
+                    librbd::deep_copy::ObjectNumber{123U},
+                    {{2, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 12, true, 123, 0);
+  expect_notify_update(mock_local_image_ctx);
+  MockUnlinkPeerRequest mock_unlink_peer_request;
+  expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
+                     0);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // prune non-primary snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_prune_non_primary_snapshot(mock_local_image_ctx, 11, 0);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSyncDeltaDemote) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number > 0
+  // after a primary demotion snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY_DEMOTED,
+       {"remote mirror peer uuid"}, "local mirror uuid", 11, true, 0,
+       {{11, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}},
+    {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+       {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}},
+    {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       2, false, 123, {{2, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // re-sync snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 12, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 1, 2, 11,
+                    librbd::deep_copy::ObjectNumber{123U},
+                    {{2, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 12, true, 123, 0);
+  expect_notify_update(mock_local_image_ctx);
+  MockUnlinkPeerRequest mock_unlink_peer_request;
+  expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
+                     0);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+         {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedPendingSyncInitial) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number == 0
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       1, false, 0, {{1, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // re-sync snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 11, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 0, 1, 0, {},
+                    {{1, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 11, true, 0, 0);
+  expect_notify_update(mock_local_image_ctx);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedPendingSyncDelta) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number == 0
+  // after a complete snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}},
+    {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       1, true, 0, {{1, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}},
+    {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       2, false, 0, {{2, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // prune non-primary snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  expect_prune_non_primary_snapshot(mock_local_image_ctx, 12, 0);
+
+  // sync snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {{1, CEPH_NOSNAP}}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockSnapshotCopyRequest mock_snapshot_copy_request;
+  expect_snapshot_copy(mock_snapshot_copy_request, 1, 2, 11,
+                       {{2, CEPH_NOSNAP}}, 0);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 2, 0);
+  MockCreateNonPrimaryRequest mock_create_non_primary_request;
+  expect_create_non_primary_request(mock_create_non_primary_request,
+                                    false, "remote mirror uuid", 2,
+                                    {{2, CEPH_NOSNAP}}, 13, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 1, 2, 11, {},
+                    {{2, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 13, true, 0, 0);
+  expect_notify_update(mock_local_image_ctx);
+  MockUnlinkPeerRequest mock_unlink_peer_request;
+  expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
+                     0);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // prune non-primary snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {13U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_prune_non_primary_snapshot(mock_local_image_ctx, 11, 0);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {13U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedPendingSyncDeltaDemote) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number == 0
+  // after a primary demotion snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY_DEMOTED,
+       {"remote mirror peer uuid"}, "local mirror uuid", 11, true, 0,
+       {{11, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}},
+    {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+       {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}},
+    {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       2, false, 0, {{2, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // prune non-primary snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  expect_prune_non_primary_snapshot(mock_local_image_ctx, 12, 0);
+
+  // sync snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+         {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockSnapshotCopyRequest mock_snapshot_copy_request;
+  expect_snapshot_copy(mock_snapshot_copy_request, 1, 2, 11,
+                       {{2, CEPH_NOSNAP}}, 0);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 2, 0);
+  MockCreateNonPrimaryRequest mock_create_non_primary_request;
+  expect_create_non_primary_request(mock_create_non_primary_request,
+                                    false, "remote mirror uuid", 2,
+                                    {{2, CEPH_NOSNAP}}, 13, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 1, 2, 11, {},
+                    {{2, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 13, true, 0, 0);
+  expect_notify_update(mock_local_image_ctx);
+  MockUnlinkPeerRequest mock_unlink_peer_request;
+  expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
+                     0);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+         {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {13U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
 TEST_F(TestMockImageReplayerSnapshotReplayer, RemoteImageDemoted) {
   librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
   librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
index 8175680ab6c86ec86865c896b4c9c4bd8cf23be3..ddb2a79e7db4d8e101d6a4b92997630500c444b4 100644 (file)
@@ -232,6 +232,7 @@ struct StateBuilder<librbd::MockTestImageCtx> {
 
   MOCK_CONST_METHOD0(is_disconnected, bool());
   MOCK_CONST_METHOD0(is_local_primary, bool());
+  MOCK_CONST_METHOD0(is_remote_primary, bool());
   MOCK_CONST_METHOD0(is_linked, bool());
 
   MOCK_CONST_METHOD0(replay_requires_remote_image, bool());
@@ -355,6 +356,17 @@ public:
       .WillOnce(Return(is_primary));
   }
 
+  void expect_is_remote_primary(MockStateBuilder& mock_state_builder,
+                                bool is_primary) {
+    EXPECT_CALL(mock_state_builder, is_remote_primary())
+      .WillOnce(Return(is_primary));
+  }
+
+  void expect_is_linked(MockStateBuilder& mock_state_builder, bool is_linked) {
+    EXPECT_CALL(mock_state_builder, is_linked())
+      .WillOnce(Return(is_linked));
+  }
+
   void expect_is_disconnected(MockStateBuilder& mock_state_builder,
                               bool is_disconnected) {
     EXPECT_CALL(mock_state_builder, is_disconnected())
@@ -492,6 +504,107 @@ TEST_F(TestMockImageReplayerBootstrapRequest, Success) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
+
+  // open the remote image
+  librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
+  MockOpenImageRequest mock_open_image_request;
+  expect_open_image(mock_open_image_request, m_remote_io_ctx,
+                    mock_remote_image_ctx.id, mock_remote_image_ctx, 0);
+
+  // open the local image
+  librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx);
+  MockOpenLocalImageRequest mock_open_local_image_request;
+  expect_open_local_image(mock_open_local_image_request, m_local_io_ctx,
+                          mock_local_image_ctx.id, &mock_local_image_ctx, 0);
+
+  // prepare replay
+  expect_prepare_replay(mock_state_builder, false, false, 0);
+  expect_is_disconnected(mock_state_builder, false);
+
+  // close remote image
+  expect_replay_requires_remote_image(mock_state_builder, false);
+  expect_close_remote_image(mock_state_builder, 0);
+
+  C_SaferCond ctx;
+  MockThreads mock_threads(m_threads);
+  MockInstanceWatcher mock_instance_watcher;
+  MockBootstrapRequest *request = create_request(
+    &mock_threads, &mock_instance_watcher, "global image id",
+    "local mirror uuid", &ctx);
+  request->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImageReplayerBootstrapRequest, PrepareRemoteImageNotPrimaryLocalDNE) {
+  InSequence seq;
+
+  // prepare local image
+  MockStateBuilder mock_state_builder;
+  MockPrepareLocalImageRequest mock_prepare_local_image_request;
+  expect_send(mock_prepare_local_image_request, mock_state_builder,
+              m_local_image_ctx->id, m_local_image_ctx->name, -ENOENT);
+
+  // prepare remote image
+  MockPrepareRemoteImageRequest mock_prepare_remote_image_request;
+  expect_send(mock_prepare_remote_image_request, mock_state_builder,
+              "remote mirror uuid", m_remote_image_ctx->id, 0);
+  expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, false);
+
+  C_SaferCond ctx;
+  MockThreads mock_threads(m_threads);
+  MockInstanceWatcher mock_instance_watcher;
+  MockBootstrapRequest *request = create_request(
+    &mock_threads, &mock_instance_watcher, "global image id",
+    "local mirror uuid", &ctx);
+  request->send();
+  ASSERT_EQ(-EREMOTEIO, ctx.wait());
+}
+
+TEST_F(TestMockImageReplayerBootstrapRequest, PrepareRemoteImageNotPrimaryLocalUnlinked) {
+  InSequence seq;
+
+  // prepare local image
+  MockStateBuilder mock_state_builder;
+  MockPrepareLocalImageRequest mock_prepare_local_image_request;
+  expect_send(mock_prepare_local_image_request, mock_state_builder,
+              m_local_image_ctx->id, m_local_image_ctx->name, 0);
+
+  // prepare remote image
+  MockPrepareRemoteImageRequest mock_prepare_remote_image_request;
+  expect_send(mock_prepare_remote_image_request, mock_state_builder,
+              "remote mirror uuid", m_remote_image_ctx->id, 0);
+  expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, false);
+  expect_is_linked(mock_state_builder, false);
+
+  C_SaferCond ctx;
+  MockThreads mock_threads(m_threads);
+  MockInstanceWatcher mock_instance_watcher;
+  MockBootstrapRequest *request = create_request(
+    &mock_threads, &mock_instance_watcher, "global image id",
+    "local mirror uuid", &ctx);
+  request->send();
+  ASSERT_EQ(-EREMOTEIO, ctx.wait());
+}
+
+TEST_F(TestMockImageReplayerBootstrapRequest, PrepareRemoteImageNotPrimaryLocalLinked) {
+  InSequence seq;
+
+  // prepare local image
+  MockStateBuilder mock_state_builder;
+  MockPrepareLocalImageRequest mock_prepare_local_image_request;
+  expect_send(mock_prepare_local_image_request, mock_state_builder,
+              m_local_image_ctx->id, m_local_image_ctx->name, 0);
+
+  // prepare remote image
+  MockPrepareRemoteImageRequest mock_prepare_remote_image_request;
+  expect_send(mock_prepare_remote_image_request, mock_state_builder,
+              "remote mirror uuid", m_remote_image_ctx->id, 0);
+  expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, false);
+  expect_is_linked(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -537,6 +650,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, OpenLocalImageError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -579,6 +693,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, OpenLocalImageDNE) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -632,6 +747,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, OpenLocalImagePrimary) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -674,6 +790,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, CreateLocalImageError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -712,6 +829,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplayError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -756,6 +874,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplayResyncRequested) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -801,6 +920,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplaySyncing) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -850,6 +970,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplayDisconnected) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -865,7 +986,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplayDisconnected) {
 
   // prepare replay
   expect_prepare_replay(mock_state_builder, false, false, 0);
-  expect_is_disconnected(mock_state_builder, false);
+  expect_is_disconnected(mock_state_builder, true);
 
   // close remote image
   expect_replay_requires_remote_image(mock_state_builder, false);
@@ -895,6 +1016,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, ImageSyncError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -944,6 +1066,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, ImageSyncCanceled) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -990,6 +1113,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, CloseRemoteImageError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -1035,6 +1159,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, ReplayRequiresRemoteImage) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
index e75fa0ac4907ccc79369deb59766e2440deec8b1..177b71a158484989bbfec725180fa086f3613513 100644 (file)
@@ -608,7 +608,7 @@ TEST_F(TestMockImageReplayer, BootstrapCancel) {
   MockStateBuilder mock_state_builder;
   EXPECT_CALL(mock_bootstrap_request, send())
     .WillOnce(Invoke([this, &mock_bootstrap_request]() {
-        m_image_replayer->stop();
+        m_image_replayer->stop(nullptr);
         mock_bootstrap_request.on_finish->complete(-ECANCELED);
       }));
   EXPECT_CALL(mock_bootstrap_request, cancel());
@@ -840,5 +840,111 @@ TEST_F(TestMockImageReplayer, ReplayerRenamed) {
   ASSERT_EQ(image_spec, m_image_replayer->get_name());
 }
 
+TEST_F(TestMockImageReplayer, StopJoinInterruptedReplayer) {
+  // START
+  create_local_image();
+  librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx);
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+  expect_add_event_after_repeatedly(mock_threads);
+
+  MockReplayer mock_replayer;
+  expect_get_replay_status(mock_replayer);
+  expect_set_mirror_image_status_repeatedly();
+
+  InSequence seq;
+  MockBootstrapRequest mock_bootstrap_request;
+  MockStateBuilder mock_state_builder;
+  expect_send(mock_bootstrap_request, mock_state_builder, mock_local_image_ctx,
+              false, false, 0);
+
+  expect_create_replayer(mock_state_builder, mock_replayer);
+  expect_init(mock_replayer, 0);
+
+  create_image_replayer(mock_threads);
+
+  C_SaferCond start_ctx;
+  m_image_replayer->start(&start_ctx);
+  ASSERT_EQ(0, start_ctx.wait());
+
+  // NOTIFY
+  EXPECT_CALL(mock_replayer, is_resync_requested())
+    .WillOnce(Return(false));
+  EXPECT_CALL(mock_replayer, is_replaying())
+    .WillOnce(Return(false));
+  EXPECT_CALL(mock_replayer, get_error_code())
+    .WillOnce(Return(-EINVAL));
+  EXPECT_CALL(mock_replayer, get_error_description())
+    .WillOnce(Return("INVALID"));
+  const double DELAY = 10;
+  EXPECT_CALL(mock_replayer, shut_down(_))
+    .WillOnce(Invoke([this, DELAY](Context* ctx) {
+               std::lock_guard l(m_threads->timer_lock);
+               m_threads->timer->add_event_after(DELAY, ctx);
+              }));
+  EXPECT_CALL(mock_replayer, destroy());
+  expect_close(mock_state_builder, 0);
+  expect_mirror_image_status_exists(false);
+
+  mock_replayer.replayer_listener->handle_notification();
+  ASSERT_FALSE(m_image_replayer->is_running());
+
+  C_SaferCond stop_ctx;
+  m_image_replayer->stop(&stop_ctx);
+  ASSERT_EQ(ETIMEDOUT, stop_ctx.wait_for(DELAY * 3 / 4));
+  ASSERT_EQ(0, stop_ctx.wait_for(DELAY));
+}
+
+TEST_F(TestMockImageReplayer, StopJoinRequestedStop) {
+  // START
+  create_local_image();
+  librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx);
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+  expect_add_event_after_repeatedly(mock_threads);
+
+  MockReplayer mock_replayer;
+  expect_get_replay_status(mock_replayer);
+  expect_set_mirror_image_status_repeatedly();
+
+  InSequence seq;
+  MockBootstrapRequest mock_bootstrap_request;
+  MockStateBuilder mock_state_builder;
+  expect_send(mock_bootstrap_request, mock_state_builder, mock_local_image_ctx,
+              false, false, 0);
+
+  expect_create_replayer(mock_state_builder, mock_replayer);
+  expect_init(mock_replayer, 0);
+
+  create_image_replayer(mock_threads);
+
+  C_SaferCond start_ctx;
+  m_image_replayer->start(&start_ctx);
+  ASSERT_EQ(0, start_ctx.wait());
+
+  // STOP
+  const double DELAY = 10;
+  EXPECT_CALL(mock_replayer, shut_down(_))
+    .WillOnce(Invoke([this, DELAY](Context* ctx) {
+               std::lock_guard l(m_threads->timer_lock);
+               m_threads->timer->add_event_after(DELAY, ctx);
+              }));
+  EXPECT_CALL(mock_replayer, destroy());
+  expect_close(mock_state_builder, 0);
+  expect_mirror_image_status_exists(false);
+
+  C_SaferCond stop_ctx1;
+  m_image_replayer->stop(&stop_ctx1);
+
+  C_SaferCond stop_ctx2;
+  m_image_replayer->stop(&stop_ctx2);
+  ASSERT_EQ(ETIMEDOUT, stop_ctx2.wait_for(DELAY * 3 / 4));
+  ASSERT_EQ(0, stop_ctx2.wait_for(DELAY));
+
+  ASSERT_EQ(0, stop_ctx1.wait_for(0));
+}
+
 } // namespace mirror
 } // namespace rbd
index d38457b815d2ea24ce7676d4e94dbf77389ad281..b61e1d5959210ec16dde06ec6b251e692114dc2a 100644 (file)
@@ -19,6 +19,18 @@ TEST(TestURL, SimpleAuthority)
     EXPECT_STREQ(host.c_str(), "example.com"); 
 }
 
+TEST(TestURL, SimpleAuthority_1)
+{
+    std::string host;
+    std::string user;
+    std::string password;
+    const std::string url = "http://example.com/";
+    ASSERT_TRUE(parse_url_authority(url, host, user, password));
+    ASSERT_TRUE(user.empty());
+    ASSERT_TRUE(password.empty());
+    EXPECT_STREQ(host.c_str(), "example.com");
+}
+
 TEST(TestURL, IPAuthority)
 {
     std::string host;
index 24146875a271ad58ed3e9a23c6fd65f7ece8ee7c..c4a0b3a9ed6c65cd8fe203bcbf7f3dfa998c666d 100644 (file)
 #include "rbd_replay/rbd_loc.hpp"
 
 
-using namespace rbd_replay;
-
+namespace rbd_replay {
 std::ostream& operator<<(std::ostream& o, const rbd_loc& name) {
   return o << "('" << name.pool << "', '" << name.image << "', '" << name.snap << "')";
 }
+}
+
+using namespace rbd_replay;
 
 static void add_mapping(ImageNameMap *map, std::string mapping_string) {
   ImageNameMap::Mapping mapping;
index 9b6dbdd2b0c59db43f956656624755cb25aced15..181448071de4252562d8eb29a3c9b9ce6aab0418 100644 (file)
@@ -499,6 +499,21 @@ public:
     }
   }
 
+  std::pair<std::string, ceph::buffer::list> to_raw(
+    const std::pair<snapid_t, hobject_t> &to_map) {
+    return mapper->to_raw(to_map);
+  }
+
+  std::string to_legacy_raw_key(
+    const std::pair<snapid_t, hobject_t> &to_map) {
+    return mapper->to_legacy_raw_key(to_map);
+  }
+
+  std::string to_raw_key(
+    const std::pair<snapid_t, hobject_t> &to_map) {
+    return mapper->to_raw_key(to_map);
+  }
+
   void trim_snap() {
     std::lock_guard l{lock};
     if (snap_to_hobject.empty())
@@ -655,3 +670,19 @@ TEST_F(SnapMapperTest, MultiPG) {
   init(50);
   run();
 }
+
+TEST_F(SnapMapperTest, LegacyKeyConvertion) {
+    init(1);
+    auto obj = get_tester().random_hobject();
+    snapid_t snapid = random() % 10;
+    auto snap_obj = make_pair(snapid, obj);
+    auto raw = get_tester().to_raw(snap_obj);
+    std::string old_key = get_tester().to_legacy_raw_key(snap_obj);
+    std::string converted_key =
+      SnapMapper::convert_legacy_key(old_key, raw.second);
+    std::string new_key = get_tester().to_raw_key(snap_obj);
+    std::cout << "Converted: " << old_key << "\nTo:        " << converted_key
+             << "\nNew key:   " << new_key << std::endl;
+    ASSERT_EQ(converted_key, new_key);
+}
+
index 2f92be8fad7df38de69f9917b10294e6f9f79d23..2f876f671813c4a78371cfa021fedf996f8d95df 100644 (file)
@@ -728,6 +728,82 @@ int do_trim_pg_log(ObjectStore *store, const coll_t &coll,
   return 0;
 }
 
+int do_trim_pg_log_dups(ObjectStore *store, const coll_t &coll,
+                  pg_info_t &info, const spg_t &pgid,
+                  epoch_t map_epoch,
+                  PastIntervals &past_intervals)
+{
+  ghobject_t oid = pgid.make_pgmeta_oid();
+  struct stat st;
+  auto ch = store->open_collection(coll);
+  int r = store->stat(ch, oid, &st);
+  ceph_assert(r == 0);
+  ceph_assert(st.st_size == 0);
+
+  const size_t max_dup_entries = g_ceph_context->_conf->osd_pg_log_dups_tracked;
+  ceph_assert(max_dup_entries > 0);
+  const size_t max_chunk_size = g_ceph_context->_conf->osd_pg_log_trim_max;
+  ceph_assert(max_chunk_size > 0);
+
+  cout << "max_dup_entries=" << max_dup_entries
+       << " max_chunk_size=" << max_chunk_size << std::endl;
+  if (dry_run) {
+    cout << "Dry run enabled, so when many chunks are needed,"
+        << " the trimming will never stop!" << std::endl;
+  }
+
+  set<string> keys_to_keep;
+  size_t num_removed = 0;
+  do {
+    set<string> keys_to_trim;
+    {
+    ObjectMap::ObjectMapIterator p = store->get_omap_iterator(ch, oid);
+    if (!p)
+      break;
+    for (p->seek_to_first(); p->valid(); p->next()) {
+      if (p->key()[0] == '_')
+       continue;
+      if (p->key() == "can_rollback_to")
+       continue;
+      if (p->key() == "divergent_priors")
+       continue;
+      if (p->key() == "rollback_info_trimmed_to")
+       continue;
+      if (p->key() == "may_include_deletes_in_missing")
+       continue;
+      if (p->key().substr(0, 7) == string("missing"))
+       continue;
+      if (p->key().substr(0, 4) != string("dup_"))
+       continue;
+      keys_to_keep.insert(p->key());
+      if (keys_to_keep.size() > max_dup_entries) {
+       auto oldest_to_keep = keys_to_keep.begin();
+       keys_to_trim.emplace(*oldest_to_keep);
+       keys_to_keep.erase(oldest_to_keep);
+      }
+      if (keys_to_trim.size() >= max_chunk_size) {
+       break;
+      }
+    }
+    } // deconstruct ObjectMapIterator
+    // delete the keys
+    num_removed = keys_to_trim.size();
+    if (!dry_run && !keys_to_trim.empty()) {
+      cout << "Removing keys " << *keys_to_trim.begin() << " - " << *keys_to_trim.rbegin() << std::endl;
+      ObjectStore::Transaction t;
+      t.omap_rmkeys(coll, oid, keys_to_trim);
+      store->queue_transaction(ch, std::move(t));
+      ch->flush();
+    }
+  } while (num_removed == max_chunk_size);
+
+  // compact the db since we just removed a bunch of data
+  cerr << "Finished trimming, now compacting..." << std::endl;
+  if (!dry_run)
+    store->compact();
+  return 0;
+}
+
 const int OMAP_BATCH_SIZE = 25;
 void get_omap_batch(ObjectMap::ObjectMapIterator &iter, map<string, bufferlist> &oset)
 {
@@ -3211,12 +3287,12 @@ int main(int argc, char **argv)
     ("journal-path", po::value<string>(&jpath),
      "path to journal, use if tool can't find it")
     ("pgid", po::value<string>(&pgidstr),
-     "PG id, mandatory for info, log, remove, export, export-remove, mark-complete, trim-pg-log, and mandatory for apply-layout-settings if --pool is not specified")
+     "PG id, mandatory for info, log, remove, export, export-remove, mark-complete, trim-pg-log, trim-pg-log-dups and mandatory for apply-layout-settings if --pool is not specified")
     ("pool", po::value<string>(&pool),
      "Pool name, mandatory for apply-layout-settings if --pgid is not specified")
     ("op", po::value<string>(&op),
      "Arg is one of [info, log, remove, mkfs, fsck, repair, fuse, dup, export, export-remove, import, list, list-slow-omap, fix-lost, list-pgs, dump-journal, dump-super, meta-list, "
-     "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, apply-layout-settings, update-mon-db, dump-export, trim-pg-log, statfs]")
+     "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, apply-layout-settings, update-mon-db, dump-export, trim-pg-log, trim-pg-log-dups statfs]")
     ("epoch", po::value<unsigned>(&epoch),
      "epoch# for get-osdmap and get-inc-osdmap, the current epoch in use if not specified")
     ("file", po::value<string>(&file),
@@ -3782,7 +3858,8 @@ int main(int argc, char **argv)
   if ((op == "info" || op == "log" || op == "remove" || op == "export"
       || op == "export-remove" || op == "mark-complete"
       || op == "reset-last-complete"
-      || op == "trim-pg-log") &&
+      || op == "trim-pg-log"
+      || op == "trim-pg-log-dups") &&
       pgidstr.length() == 0) {
     cerr << "Must provide pgid" << std::endl;
     usage(desc);
@@ -4009,9 +4086,9 @@ int main(int argc, char **argv)
 
   // If not an object command nor any of the ops handled below, then output this usage
   // before complaining about a bad pgid
-  if (!vm.count("objcmd") && op != "export" && op != "export-remove" && op != "info" && op != "log" && op != "mark-complete" && op != "trim-pg-log") {
+  if (!vm.count("objcmd") && op != "export" && op != "export-remove" && op != "info" && op != "log" && op != "mark-complete" && op != "trim-pg-log" && op != "trim-pg-log-dups") {
     cerr << "Must provide --op (info, log, remove, mkfs, fsck, repair, export, export-remove, import, list, fix-lost, list-pgs, dump-journal, dump-super, meta-list, "
-      "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, dump-export, trim-pg-log, statfs)"
+      "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, dump-export, trim-pg-log, trim-pg-log-dups statfs)"
         << std::endl;
     usage(desc);
     ret = 1;
@@ -4364,6 +4441,15 @@ int main(int argc, char **argv)
       }
       cout << "Finished trimming pg log" << std::endl;
       goto out;
+    } else if (op == "trim-pg-log-dups") {
+      ret = do_trim_pg_log_dups(fs, coll, info, pgid,
+                          map_epoch, past_intervals);
+      if (ret < 0) {
+       cerr << "Error trimming pg log dups: " << cpp_strerror(ret) << std::endl;
+       goto out;
+      }
+      cout << "Finished trimming pg log dups" << std::endl;
+      goto out;
     } else if (op == "reset-last-complete") {
       if (!force) {
         std::cerr << "WARNING: reset-last-complete is extremely dangerous and almost "
index 81e25d16dae9e273cdee9487681be64b549f3fa1..efcef35f845bba4e951de0409c25ccc9d9adbda6 100755 (executable)
@@ -97,10 +97,10 @@ def get_chunks(file_size):
     chunk_start = 0
     chunk_size = 0x20000  # 131072 bytes, default max ssl buffer size
     while chunk_start + chunk_size < file_size:
-        yield(chunk_start, chunk_size)
+        yield (chunk_start, chunk_size)
         chunk_start += chunk_size
     final_chunk_size = file_size - chunk_start
-    yield(chunk_start, final_chunk_size)
+    yield (chunk_start, final_chunk_size)
 
 
 def to_bytes(param):
index 14affb0b3bb85192e9f3d0ac8bbaebb55ee02b24..16bedf8ad92915d01b4337f97645cebd78299550 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "tools/rbd/OptionPrinter.h"
 #include "tools/rbd/IndentStream.h"
+#include "include/ceph_assert.h"
 
 namespace rbd {
 
@@ -19,38 +20,75 @@ OptionPrinter::OptionPrinter(const OptionsDescription &positional,
 }
 
 void OptionPrinter::print_short(std::ostream &os, size_t initial_offset) {
-  size_t name_width = std::min(initial_offset, MAX_DESCRIPTION_OFFSET) + 1;
-
-  IndentStream indent_stream(name_width, initial_offset, LINE_WIDTH, os);
-  indent_stream.set_delimiter("[");
+  size_t max_option_width = 0;
+  std::vector<std::string> optionals;
   for (size_t i = 0; i < m_optional.options().size(); ++i) {
+    std::stringstream option;
+
     bool required = m_optional.options()[i]->semantic()->is_required();
     if (!required) {
-      indent_stream << "[";
+      option << "[";
     }
-    indent_stream << "--" << m_optional.options()[i]->long_name();
+    option << "--" << m_optional.options()[i]->long_name();
     if (m_optional.options()[i]->semantic()->max_tokens() != 0) {
-      indent_stream << " <" << m_optional.options()[i]->long_name() << ">";
+      option << " <" << m_optional.options()[i]->long_name() << ">";
     }
     if (!required) {
-      indent_stream << "]";
+      option << "]";
     }
-    indent_stream << " ";
+    max_option_width = std::max(max_option_width, option.str().size());
+    optionals.emplace_back(option.str());
   }
 
-  if (m_optional.options().size() > 0 || m_positional.options().size() == 0) {
+  std::vector<std::string> positionals;
+  for (size_t i = 0; i < m_positional.options().size(); ++i) {
+    std::stringstream option;
+
+    // we overload po::value<std::string>()->default_value("") to signify
+    // an optional positional argument (purely for help printing purposes)
+    boost::any v;
+    bool required = !m_positional.options()[i]->semantic()->apply_default(v);
+    if (!required) {
+      auto ptr = boost::any_cast<std::string>(&v);
+      ceph_assert(ptr && ptr->empty());
+      option << "[";
+    }
+    option << "<" << m_positional.options()[i]->long_name() << ">";
+    if (m_positional.options()[i]->semantic()->max_tokens() > 1) {
+      option << " [<" << m_positional.options()[i]->long_name() << "> ...]";
+    }
+    if (!required) {
+      option << "]";
+    }
+
+    max_option_width = std::max(max_option_width, option.str().size());
+    positionals.emplace_back(option.str());
+
+    if (m_positional.options()[i]->semantic()->max_tokens() > 1) {
+      break;
+    }
+  }
+
+  size_t indent = std::min(initial_offset, MAX_DESCRIPTION_OFFSET) + 1;
+  if (indent + max_option_width + 2 > LINE_WIDTH) {
+    // decrease the indent so that we don't wrap past the end of the line
+    indent = LINE_WIDTH - max_option_width - 2;
+  }
+
+  IndentStream indent_stream(indent, initial_offset, LINE_WIDTH, os);
+  indent_stream.set_delimiter("[");
+  for (auto& option : optionals) {
+    indent_stream << option << " ";
+  }
+
+  if (optionals.size() > 0 || positionals.size() == 0) {
     indent_stream << std::endl;
   }
 
-  if (m_positional.options().size() > 0) {
+  if (positionals.size() > 0) {
     indent_stream.set_delimiter(" ");
-    for (size_t i = 0; i < m_positional.options().size(); ++i) {
-      indent_stream << "<" << m_positional.options()[i]->long_name() << "> ";
-      if (m_positional.options()[i]->semantic()->max_tokens() > 1) {
-        indent_stream << "[<" << m_positional.options()[i]->long_name()
-                      << "> ...]";
-        break;
-      }
+    for (auto& option : positionals) {
+      indent_stream << option << " ";
     }
     indent_stream << std::endl;
   }
index d7fcf1253deb6b95a05428777eb8e220892fc48f..15dda3aee7ef940941d2d89b9ee07d4d55824865 100644 (file)
@@ -152,11 +152,19 @@ void normalize_level_spec_args(std::map<std::string, std::string> *args) {
   }
 }
 
-void add_schedule_options(po::options_description *positional) {
-  positional->add_options()
-    ("interval", "schedule interval");
+void add_schedule_options(po::options_description *positional,
+                          bool mandatory) {
+  if (mandatory) {
+    positional->add_options()
+      ("interval", "schedule interval");
+  } else {
+    positional->add_options()
+      ("interval", po::value<std::string>()->default_value(""),
+       "schedule interval");
+  }
   positional->add_options()
-    ("start-time", "schedule start time");
+    ("start-time", po::value<std::string>()->default_value(""),
+     "schedule start time");
 }
 
 int get_schedule_args(const po::variables_map &vm, bool mandatory,
index 90e78eb7f682c734cfd6d4ca0f17b2ebf058c931..bf0964bb1e51b6fd948cf4c730b769cabc176fe1 100644 (file)
@@ -23,7 +23,7 @@ int get_level_spec_args(const boost::program_options::variables_map &vm,
 void normalize_level_spec_args(std::map<std::string, std::string> *args);
 
 void add_schedule_options(
-  boost::program_options::options_description *positional);
+  boost::program_options::options_description *positional, bool mandatory);
 int get_schedule_args(const boost::program_options::variables_map &vm,
                       bool mandatory, std::map<std::string, std::string> *args);
 
index 30eaccefc4ab81ecfabd13478831d985f1160065..e86b406eee5e6bb69277d616351819e24885b649 100644 (file)
@@ -194,8 +194,7 @@ std::string get_default_pool_name() {
 }
 
 int get_pool_and_namespace_names(
-    const boost::program_options::variables_map &vm,
-    bool default_empty_pool_name, bool validate_pool_name,
+    const boost::program_options::variables_map &vm, bool validate_pool_name,
     std::string* pool_name, std::string* namespace_name, size_t *arg_index) {
   if (namespace_name != nullptr && vm.count(at::NAMESPACE_NAME)) {
     *namespace_name = vm[at::NAMESPACE_NAME].as<std::string>();
index 476c229bec0e0b78f2e29e85cb9c3e7fe0f5a344..d92de0d838bd4bf90cb5a65c2e213a695cad38f9 100644 (file)
@@ -103,8 +103,7 @@ void normalize_pool_name(std::string* pool_name);
 std::string get_default_pool_name();
 
 int get_pool_and_namespace_names(
-    const boost::program_options::variables_map &vm,
-    bool default_empty_pool_name, bool validate_pool_name,
+    const boost::program_options::variables_map &vm, bool validate_pool_name,
     std::string* pool_name, std::string* namespace_name, size_t *arg_index);
 
 int get_pool_image_snapshot_names(
index 8554ae3b4ef03d852e218cbcd58b5d8e00ba849d..4e8217e4e10250213e07152326cb649efbeed047 100644 (file)
@@ -123,7 +123,7 @@ int execute_list(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index 6f967f9086ad9d6c3a5328b1081669157e7b3aa0..d4f8eadf1256abc49554d2bfb5393ca2ea3bf40f 100644 (file)
@@ -210,6 +210,8 @@ static int parse_map_options(const std::string &options_string,
       if (put_map_option_value("ms_mode", value_char, map_option_ms_mode_cb,
                                map_options))
         return -EINVAL;
+    } else if (!strcmp(this_char, "rxbounce")) {
+      put_map_option("rxbounce", this_char, map_options);
     } else if (!strcmp(this_char, "udev") || !strcmp(this_char, "noudev")) {
       put_map_option("udev", this_char, map_options);
     } else {
@@ -543,14 +545,33 @@ int execute_map(const po::variables_map &vm,
 
   utils::normalize_pool_name(&pool_name);
 
-  MapOptions default_map_options;
-  r = parse_map_options(
-      g_conf().get_val<std::string>("rbd_default_map_options"),
-      &default_map_options);
+  librados::IoCtx ioctx;
+  librbd::Image image;
+  r = utils::init_io_ctx(rados, pool_name, nspace_name, &ioctx);
+  if (r < 0) {
+    return r;
+  }
+
+  r = utils::open_image(ioctx, image_name, true, &image);
   if (r < 0) {
-    std::cerr << "rbd: couldn't parse default map options" << std::endl;
     return r;
   }
+
+  MapOptions default_map_options;
+  std::vector<librbd::config_option_t> options;
+  image.config_list(&options);
+  for (const auto &option : options) {
+    if (option.name == "rbd_default_map_options") {
+      r = parse_map_options(option.value, &default_map_options);
+      if (r < 0) {
+        std::cerr << "rbd: couldn't parse default map options" << std::endl;
+        return r;
+      }
+
+      break;
+    }
+  }
+
   for (auto& [key, value] : default_map_options) {
     if (map_options.count(key) == 0) {
       map_options[key] = value;
index 65ab03752adaf4bcc8df8c44075369c13b886a5b..8148ef9b456a4e2046e03f5712f63482cce0066c 100644 (file)
@@ -313,7 +313,7 @@ int execute(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index 02fdbf3a7e0b72f92ee30294b6ab24657100337f..0f244e5707092b4663b1afb2d00bb20a4a0afd1f 100644 (file)
@@ -77,7 +77,8 @@ void get_arguments_enable(po::options_description *positional,
                           po::options_description *options) {
   at::add_image_spec_options(positional, options, at::ARGUMENT_MODIFIER_NONE);
   positional->add_options()
-    ("mode", "mirror image mode (journal or snapshot) [default: journal]");
+    ("mode", po::value<std::string>()->default_value(""),
+     "mirror image mode (journal or snapshot) [default: journal]");
 }
 
 void get_arguments_disable(po::options_description *positional,
index 99902c72be81ecfd09a2df4777995aff096e71d8..212cac7cb2fe1f3adc6d12f0f23c0f10d649c47f 100644 (file)
@@ -826,7 +826,7 @@ int execute_peer_bootstrap_create(
     const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -885,7 +885,7 @@ int execute_peer_bootstrap_import(
     const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -978,7 +978,7 @@ int execute_peer_add(const po::variables_map &vm,
                      const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -1069,7 +1069,7 @@ int execute_peer_remove(const po::variables_map &vm,
                         const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -1117,7 +1117,7 @@ int execute_peer_set(const po::variables_map &vm,
                      const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -1288,7 +1288,7 @@ int execute_disable(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1311,7 +1311,7 @@ int execute_enable(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1367,7 +1367,7 @@ int execute_info(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1463,7 +1463,7 @@ int execute_status(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1653,7 +1653,7 @@ int execute_promote(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1692,7 +1692,7 @@ int execute_demote(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index af684944017d118d13e235874c154471443351ba..3f269c2ad8717b6d1df7a3fb1f5ead4dc00cb774 100644 (file)
@@ -121,7 +121,7 @@ std::ostream& operator<<(std::ostream& os, ScheduleStatus &s) {
 void get_arguments_add(po::options_description *positional,
                        po::options_description *options) {
   add_level_spec_options(options);
-  add_schedule_options(positional);
+  add_schedule_options(positional, true);
 }
 
 int execute_add(const po::variables_map &vm,
@@ -156,7 +156,7 @@ int execute_add(const po::variables_map &vm,
 void get_arguments_remove(po::options_description *positional,
                           po::options_description *options) {
   add_level_spec_options(options);
-  add_schedule_options(positional);
+  add_schedule_options(positional, false);
 }
 
 int execute_remove(const po::variables_map &vm,
index 746ab40c2b26cdecc419edc127557606a1d5c2db..12d92bff86e892643f231ebd5a01b01b2a4ffba2 100644 (file)
@@ -30,7 +30,7 @@ int execute_create(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -69,7 +69,7 @@ int execute_remove(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -115,7 +115,7 @@ int execute_list(const po::variables_map &vm,
                  const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
index 86df223dc751bf65b34dcd40b39b8bfa4fdc5678..4616f6040382e4df2e608a26724f407b0e2abea1 100644 (file)
@@ -580,7 +580,7 @@ int execute_iostat(const po::variables_map &vm,
   std::string pool;
   std::string pool_namespace;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, false, false, &pool,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool,
                                               &pool_namespace, &arg_index);
   if (r < 0) {
     return r;
@@ -617,7 +617,11 @@ int execute_iostat(const po::variables_map &vm,
     return r;
   }
 
-  utils::normalize_pool_name(&pool);
+  if (!pool_namespace.empty()) {
+    // default empty pool name only if namespace is specified to allow
+    // for an empty pool_spec (-> GLOBAL_POOL_KEY)
+    utils::normalize_pool_name(&pool);
+  }
   std::string pool_spec = format_pool_spec(pool, pool_namespace);
 
   // no point to refreshing faster than the stats period
@@ -662,7 +666,7 @@ int execute_iotop(const po::variables_map &vm,
   std::string pool;
   std::string pool_namespace;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, false, false, &pool,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool,
                                               &pool_namespace, &arg_index);
   if (r < 0) {
     return r;
@@ -680,7 +684,11 @@ int execute_iotop(const po::variables_map &vm,
     return r;
   }
 
-  utils::normalize_pool_name(&pool);
+  if (!pool_namespace.empty()) {
+    // default empty pool name only if namespace is specified to allow
+    // for an empty pool_spec (-> GLOBAL_POOL_KEY)
+    utils::normalize_pool_name(&pool);
+  }
   iotop::MainWindow mainWindow(rados, format_pool_spec(pool, pool_namespace));
   r = mainWindow.run();
   if (r < 0) {
index f1718eb1e1325a74bf5686dedc4b99f8c93fb32a..2ad8e17ff8e2488c25ac8076114517c512fd1f36 100644 (file)
@@ -29,7 +29,7 @@ int execute_init(const po::variables_map &vm,
                  const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -68,7 +68,7 @@ int execute_stats(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index a887f0d31da6c458c0a8b2824c1115107fed5ac6..2b9e6292b3d1a44065fd7f548017a6c49828d162 100644 (file)
@@ -353,7 +353,7 @@ int execute_list(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -404,7 +404,7 @@ int execute_purge(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index 0f92e762bc2fde054b36016278440de29a53dabb..5c133c29580492f557e5e4bda180b6b97cac85f9 100644 (file)
@@ -98,7 +98,7 @@ public:
     for (auto &item : scheduled) {
       f->open_object_section("item");
       f->dump_string("pool", item.pool_name);
-      f->dump_string("namespce", item.namespace_name);
+      f->dump_string("namespace", item.namespace_name);
       f->dump_string("schedule_time", item.schedule_time);
       f->close_section(); // item
     }
@@ -151,7 +151,7 @@ std::ostream& operator<<(std::ostream& os, ScheduleStatus &s) {
 void get_arguments_add(po::options_description *positional,
                        po::options_description *options) {
   add_level_spec_options(options, false);
-  add_schedule_options(positional);
+  add_schedule_options(positional, true);
 }
 
 int execute_add(const po::variables_map &vm,
@@ -186,7 +186,7 @@ int execute_add(const po::variables_map &vm,
 void get_arguments_remove(po::options_description *positional,
                           po::options_description *options) {
   add_level_spec_options(options, false);
-  add_schedule_options(positional);
+  add_schedule_options(positional, false);
 }
 
 int execute_remove(const po::variables_map &vm,
index afc980bd809efd7419b1e7343f80365f4c902ba3..33bb058ea8656f5bcd4e33a6b3e7b5d2caa4bec6 100644 (file)
@@ -244,7 +244,7 @@ ImageReplayer<I>::~ImageReplayer()
   unregister_admin_socket_hook();
   ceph_assert(m_state_builder == nullptr);
   ceph_assert(m_on_start_finish == nullptr);
-  ceph_assert(m_on_stop_finish == nullptr);
+  ceph_assert(m_on_stop_contexts.empty());
   ceph_assert(m_bootstrap_request == nullptr);
   ceph_assert(m_update_status_task == nullptr);
   delete m_replayer_listener;
@@ -316,7 +316,7 @@ void ImageReplayer<I>::start(Context *on_finish, bool manual, bool restart)
         ceph_assert(m_on_start_finish == nullptr);
         m_on_start_finish = on_finish;
       }
-      ceph_assert(m_on_stop_finish == nullptr);
+      ceph_assert(m_on_stop_contexts.empty());
     }
   }
 
@@ -385,8 +385,8 @@ void ImageReplayer<I>::handle_bootstrap(int r) {
     on_start_fail(0, "local image is primary");
     return;
   } else if (r == -EREMOTEIO) {
-    dout(5) << "remote image is non-primary" << dendl;
-    on_start_fail(-EREMOTEIO, "remote image is non-primary");
+    dout(5) << "remote image is noprimary" << dendl;
+    on_start_fail(-EREMOTEIO, "remote image is noprimary");
     return;
   } else if (r == -EEXIST) {
     on_start_fail(r, "split-brain detected");
@@ -522,39 +522,54 @@ void ImageReplayer<I>::stop(Context *on_finish, bool manual, bool restart)
 
   image_replayer::BootstrapRequest<I> *bootstrap_request = nullptr;
   bool shut_down_replay = false;
-  bool running = true;
+  bool is_stopped = false;
   {
     std::lock_guard locker{m_lock};
 
-    if (restart) {
-      m_restart_requested = true;
-    }
-
     if (!is_running_()) {
-      running = false;
+      if (manual && !m_manual_stop) {
+        dout(10) << "marking manual" << dendl;
+        m_manual_stop = true;
+      }
       if (!restart && m_restart_requested) {
         dout(10) << "canceling restart" << dendl;
         m_restart_requested = false;
       }
+      if (is_stopped_()) {
+        dout(10) << "already stopped" << dendl;
+        is_stopped = true;
+      } else {
+        dout(10) << "joining in-flight stop" << dendl;
+        if (on_finish != nullptr) {
+          m_on_stop_contexts.push_back(on_finish);
+        }
+      }
     } else {
-      if (!is_stopped_()) {
-       if (m_state == STATE_STARTING) {
-         dout(10) << "canceling start" << dendl;
-         if (m_bootstrap_request != nullptr) {
-            bootstrap_request = m_bootstrap_request;
-            bootstrap_request->get();
-         }
-       } else {
-         dout(10) << "interrupting replay" << dendl;
-         shut_down_replay = true;
-       }
-
-        ceph_assert(m_on_stop_finish == nullptr);
-        std::swap(m_on_stop_finish, on_finish);
-        m_stop_requested = true;
-        m_manual_stop = manual;
+      if (m_state == STATE_STARTING) {
+        dout(10) << "canceling start" << dendl;
+        if (m_bootstrap_request != nullptr) {
+          bootstrap_request = m_bootstrap_request;
+          bootstrap_request->get();
+        }
+      } else {
+        dout(10) << "interrupting replay" << dendl;
+        shut_down_replay = true;
       }
+
+      ceph_assert(m_on_stop_contexts.empty());
+      if (on_finish != nullptr) {
+        m_on_stop_contexts.push_back(on_finish);
+      }
+      m_stop_requested = true;
+      m_manual_stop = manual;
+    }
+  }
+
+  if (is_stopped) {
+    if (on_finish) {
+      on_finish->complete(-EINVAL);
     }
+    return;
   }
 
   // avoid holding lock since bootstrap request will update status
@@ -564,18 +579,8 @@ void ImageReplayer<I>::stop(Context *on_finish, bool manual, bool restart)
     bootstrap_request->put();
   }
 
-  if (!running) {
-    dout(20) << "not running" << dendl;
-    if (on_finish) {
-      on_finish->complete(-EINVAL);
-    }
-    return;
-  }
-
   if (shut_down_replay) {
     on_stop_journal_replay();
-  } else if (on_finish != nullptr) {
-    on_finish->complete(0);
   }
 }
 
@@ -984,11 +989,11 @@ void ImageReplayer<I>::handle_shut_down(int r) {
 
   dout(10) << "stop complete" << dendl;
   Context *on_start = nullptr;
-  Context *on_stop = nullptr;
+  Contexts on_stop_contexts;
   {
     std::lock_guard locker{m_lock};
     std::swap(on_start, m_on_start_finish);
-    std::swap(on_stop, m_on_stop_finish);
+    on_stop_contexts = std::move(m_on_stop_contexts);
     m_stop_requested = false;
     ceph_assert(m_state == STATE_STOPPING);
     m_state = STATE_STOPPED;
@@ -999,9 +1004,9 @@ void ImageReplayer<I>::handle_shut_down(int r) {
     on_start->complete(r);
     r = 0;
   }
-  if (on_stop != nullptr) {
-    dout(10) << "on stop finish complete, r=" << r << dendl;
-    on_stop->complete(r);
+  for (auto ctx : on_stop_contexts) {
+    dout(10) << "on stop finish " << ctx << " complete, r=" << r << dendl;
+    ctx->complete(r);
   }
 }
 
index 1fbf8db94d3dddb5601a72d16e78eec40488025a..cf0f7023ca281fd8bcc04c1b174621e5c0f6c4f1 100644 (file)
@@ -101,10 +101,8 @@ public:
     return m_global_image_id;
   }
 
-  void start(Context *on_finish = nullptr, bool manual = false,
-             bool restart = false);
-  void stop(Context *on_finish = nullptr, bool manual = false,
-            bool restart = false);
+  void start(Context *on_finish, bool manual = false, bool restart = false);
+  void stop(Context *on_finish, bool manual = false, bool restart = false);
   void restart(Context *on_finish = nullptr);
   void flush();
 
@@ -150,6 +148,7 @@ protected:
 
 private:
   typedef std::set<Peer<ImageCtxT>> Peers;
+  typedef std::list<Context *> Contexts;
 
   enum State {
     STATE_UNKNOWN,
@@ -216,7 +215,7 @@ private:
   ReplayerListener* m_replayer_listener = nullptr;
 
   Context *m_on_start_finish = nullptr;
-  Context *m_on_stop_finish = nullptr;
+  Contexts m_on_stop_contexts;
   bool m_stop_requested = false;
   bool m_manual_stop = false;
 
index 75067813aa59db992cd81d3309594e7210f0de66..76808c00661222c5e49936d2cb70d62e4717551c 100644 (file)
@@ -262,7 +262,7 @@ bool PoolReplayer<I>::is_leader() const {
 
 template <typename I>
 bool PoolReplayer<I>::is_running() const {
-  return m_pool_replayer_thread.is_started();
+  return m_pool_replayer_thread.is_started() && !m_stopping;
 }
 
 template <typename I>
index ca77d87f8fa64b9b7a737bce099bbe467d776239..8efe456f7c7d12dba5d6bfc373700b8693866b63 100644 (file)
@@ -135,7 +135,7 @@ void BootstrapRequest<I>::handle_prepare_local_image(int r) {
   if (r == -ENOENT) {
     dout(10) << "local image does not exist" << dendl;
   } else if (r < 0) {
-    derr << "error preparing local image for replay" << cpp_strerror(r)
+    derr << "error preparing local image for replay" << cpp_strerror(r)
          << dendl;
     finish(r);
     return;
@@ -177,10 +177,6 @@ void BootstrapRequest<I>::handle_prepare_remote_image(int r) {
     dout(5) << "local image is primary" << dendl;
     finish(-ENOMSG);
     return;
-  } else if (r == -EREMOTEIO) {
-    dout(10) << "remote-image is non-primary" << cpp_strerror(r) << dendl;
-    finish(r);
-    return;
   } else if (r == -ENOENT || state_builder == nullptr) {
     dout(10) << "remote image does not exist";
     if (state_builder != nullptr) {
@@ -204,11 +200,29 @@ void BootstrapRequest<I>::handle_prepare_remote_image(int r) {
     }
     return;
   } else if (r < 0) {
-    derr << "error retrieving remote image id" << cpp_strerror(r) << dendl;
+    derr << "error preparing remote image for replay: " << cpp_strerror(r)
+         << dendl;
     finish(r);
     return;
   }
 
+  if (!state_builder->is_remote_primary()) {
+    ceph_assert(!state_builder->remote_image_id.empty());
+    if (state_builder->local_image_id.empty()) {
+      dout(10) << "local image does not exist and remote image is not primary"
+               << dendl;
+      finish(-EREMOTEIO);
+      return;
+    } else if (!state_builder->is_linked()) {
+      dout(10) << "local image is unlinked and remote image is not primary"
+               << dendl;
+      finish(-EREMOTEIO);
+      return;
+    }
+    // if the local image is linked to the remote image, we ignore that
+    // the remote image is not primary so that we can replay demotion
+  }
+
   open_remote_image();
 }
 
@@ -314,9 +328,7 @@ void BootstrapRequest<I>::handle_prepare_replay(int r) {
   dout(10) << "r=" << r << dendl;
 
   if (r < 0) {
-    if (r != -EREMOTEIO) {
-      derr << "failed to prepare local replay: " << cpp_strerror(r) << dendl;
-    }
+    derr << "failed to prepare local replay: " << cpp_strerror(r) << dendl;
     m_ret_val = r;
     close_remote_image();
     return;
index 4b092ec7a98300db9102d6407c14efdc3b509663..8755574a8d703c1a7c4a569842ba15299f963cf1 100644 (file)
@@ -64,10 +64,7 @@ void PrepareRemoteImageRequest<I>::handle_get_remote_image_id(int r) {
   dout(10) << "r=" << r << ", "
            << "remote_image_id=" << m_remote_image_id << dendl;
 
-  if (r == -ENOENT) {
-    finish(r);
-    return;
-  } else if (r < 0) {
+  if (r < 0) {
     finish(r);
     return;
   }
@@ -115,15 +112,6 @@ void PrepareRemoteImageRequest<I>::handle_get_mirror_info(int r) {
     dout(5) << "remote image mirroring is being disabled" << dendl;
     finish(-ENOENT);
     return;
-  } else if (m_promotion_state != librbd::mirror::PROMOTION_STATE_PRIMARY &&
-             (state_builder == nullptr ||
-              state_builder->local_image_id.empty() ||
-              state_builder->local_promotion_state ==
-                librbd::mirror::PROMOTION_STATE_UNKNOWN)) {
-    // no local image and remote isn't primary -- don't sync it
-    dout(5) << "remote image is not primary -- not syncing" << dendl;
-    finish(-EREMOTEIO);
-    return;
   }
 
   switch (m_mirror_image.mode) {
index 3c7274ec56e56ce736c87f555dae865ad2bc1e89..55fb3509d19d20fa477e2abaaf3f5f05db2a889b 100644 (file)
@@ -36,16 +36,30 @@ StateBuilder<I>::~StateBuilder() {
 }
 
 template <typename I>
-bool StateBuilder<I>::is_local_primary() const  {
-  return (!local_image_id.empty() &&
-          local_promotion_state == librbd::mirror::PROMOTION_STATE_PRIMARY);
+bool StateBuilder<I>::is_local_primary() const {
+  if (local_promotion_state == librbd::mirror::PROMOTION_STATE_PRIMARY) {
+    ceph_assert(!local_image_id.empty());
+    return true;
+  }
+  return false;
+}
+
+template <typename I>
+bool StateBuilder<I>::is_remote_primary() const {
+  if (remote_promotion_state == librbd::mirror::PROMOTION_STATE_PRIMARY) {
+    ceph_assert(!remote_image_id.empty());
+    return true;
+  }
+  return false;
 }
 
 template <typename I>
 bool StateBuilder<I>::is_linked() const {
-  return ((local_promotion_state ==
-             librbd::mirror::PROMOTION_STATE_NON_PRIMARY) &&
-          is_linked_impl());
+  if (local_promotion_state == librbd::mirror::PROMOTION_STATE_NON_PRIMARY) {
+    ceph_assert(!local_image_id.empty());
+    return is_linked_impl();
+  }
+  return false;
 }
 
 template <typename I>
index 99007ba5e21a8b8469075cffe3070e6a7c3538fd..51cf8668c1eff3c612e007211a9520173672f49b 100644 (file)
@@ -44,6 +44,7 @@ public:
   virtual bool is_disconnected() const = 0;
 
   bool is_local_primary() const;
+  bool is_remote_primary() const;
   bool is_linked() const;
 
   virtual cls::rbd::MirrorImageMode get_mirror_image_mode() const = 0;
@@ -81,13 +82,13 @@ public:
 
   std::string local_image_id;
   librbd::mirror::PromotionState local_promotion_state =
-    librbd::mirror::PROMOTION_STATE_PRIMARY;
+    librbd::mirror::PROMOTION_STATE_UNKNOWN;
   ImageCtxT* local_image_ctx = nullptr;
 
   std::string remote_mirror_uuid;
   std::string remote_image_id;
   librbd::mirror::PromotionState remote_promotion_state =
-    librbd::mirror::PROMOTION_STATE_NON_PRIMARY;
+    librbd::mirror::PROMOTION_STATE_UNKNOWN;
   ImageCtxT* remote_image_ctx = nullptr;
 
 protected:
index 69631f27587ede2a4a9264a323b0bcfa347a829e..c8a96a4ad364c7d1fa4607f091e480b61ce83ff6 100644 (file)
@@ -68,17 +68,6 @@ void PrepareReplayRequest<I>::send() {
            << "local tag data=" << m_local_tag_data << dendl;
   image_locker.unlock();
 
-  if (m_local_tag_data.mirror_uuid != m_state_builder->remote_mirror_uuid &&
-      m_remote_promotion_state != librbd::mirror::PROMOTION_STATE_PRIMARY) {
-    // if the local mirror is not linked to the (now) non-primary image,
-    // stop the replay. Otherwise, we ignore that the remote is non-primary
-    // so that we can replay the demotion
-    dout(5) << "remote image is not primary -- skipping image replay"
-            << dendl;
-    finish(-EREMOTEIO);
-    return;
-  }
-
   if (*m_resync_requested) {
     finish(0);
     return;
index 4538c94a4ad94077365f177d2d70631c676983cb..2b6fb659be3434ae48c1f792e09ea61213d5d833 100644 (file)
@@ -30,20 +30,18 @@ class PrepareReplayRequest : public BaseRequest {
 public:
   static PrepareReplayRequest* create(
       const std::string& local_mirror_uuid,
-      librbd::mirror::PromotionState remote_promotion_state,
       ProgressContext* progress_ctx,
       StateBuilder<ImageCtxT>* state_builder,
       bool* resync_requested,
       bool* syncing,
       Context* on_finish) {
     return new PrepareReplayRequest(
-      local_mirror_uuid, remote_promotion_state, progress_ctx, state_builder,
-      resync_requested, syncing, on_finish);
+      local_mirror_uuid, progress_ctx, state_builder, resync_requested,
+      syncing, on_finish);
   }
 
   PrepareReplayRequest(
       const std::string& local_mirror_uuid,
-      librbd::mirror::PromotionState remote_promotion_state,
       ProgressContext* progress_ctx,
       StateBuilder<ImageCtxT>* state_builder,
       bool* resync_requested,
@@ -51,7 +49,6 @@ public:
       Context* on_finish)
     : BaseRequest(on_finish),
       m_local_mirror_uuid(local_mirror_uuid),
-      m_remote_promotion_state(remote_promotion_state),
       m_progress_ctx(progress_ctx),
       m_state_builder(state_builder),
       m_resync_requested(resync_requested),
@@ -83,7 +80,6 @@ private:
   typedef std::list<cls::journal::Tag> Tags;
 
   std::string m_local_mirror_uuid;
-  librbd::mirror::PromotionState m_remote_promotion_state;
   ProgressContext* m_progress_ctx;
   StateBuilder<ImageCtxT>* m_state_builder;
   bool* m_resync_requested;
index 2c95211d41e12e38501239a3608086e006563ff1..5f1fb0e2f09fc073fbe7567ac06275d1387cd00e 100644 (file)
@@ -97,8 +97,8 @@ BaseRequest* StateBuilder<I>::create_prepare_replay_request(
     bool* syncing,
     Context* on_finish) {
   return PrepareReplayRequest<I>::create(
-    local_mirror_uuid, this->remote_promotion_state, progress_ctx, this,
-    resync_requested, syncing, on_finish);
+    local_mirror_uuid, progress_ctx, this, resync_requested, syncing,
+    on_finish);
 }
 
 template <typename I>
index 315080238f7dcabce9000da3e8a59800695c1ab0..4e9246acd6a99aa2302c0c410fdfe7f0485b4314 100644 (file)
@@ -28,20 +28,18 @@ class PrepareReplayRequest : public BaseRequest {
 public:
   static PrepareReplayRequest* create(
       const std::string& local_mirror_uuid,
-      librbd::mirror::PromotionState remote_promotion_state,
       ProgressContext* progress_ctx,
       StateBuilder<ImageCtxT>* state_builder,
       bool* resync_requested,
       bool* syncing,
       Context* on_finish) {
     return new PrepareReplayRequest(
-      local_mirror_uuid, remote_promotion_state, progress_ctx, state_builder,
-      resync_requested, syncing, on_finish);
+      local_mirror_uuid, progress_ctx, state_builder, resync_requested,
+      syncing, on_finish);
   }
 
   PrepareReplayRequest(
       const std::string& local_mirror_uuid,
-      librbd::mirror::PromotionState remote_promotion_state,
       ProgressContext* progress_ctx,
       StateBuilder<ImageCtxT>* state_builder,
       bool* resync_requested,
@@ -49,7 +47,6 @@ public:
       Context* on_finish)
     : BaseRequest(on_finish),
       m_local_mirror_uuid(local_mirror_uuid),
-      m_remote_promotion_state(remote_promotion_state),
       m_progress_ctx(progress_ctx),
       m_state_builder(state_builder),
       m_resync_requested(resync_requested),
@@ -75,7 +72,6 @@ private:
    */
 
   std::string m_local_mirror_uuid;
-  librbd::mirror::PromotionState m_remote_promotion_state;
   ProgressContext* m_progress_ctx;
   StateBuilder<ImageCtxT>* m_state_builder;
   bool* m_resync_requested;
index 1c7a90167a2d09b328cef8ea34367631e09adc18..0270a11708edd5b728961b8c2f19ac07a0085142 100644 (file)
@@ -441,7 +441,6 @@ void Replayer<I>::scan_local_mirror_snapshots(
 
   std::set<uint64_t> prune_snap_ids;
 
-  bool completed_non_primary_snapshots_exist = false;
   auto local_image_ctx = m_state_builder->local_image_ctx;
   std::shared_lock image_locker{local_image_ctx->image_lock};
   for (auto snap_info_it = local_image_ctx->snap_info.begin();
@@ -462,8 +461,7 @@ void Replayer<I>::scan_local_mirror_snapshots(
       if (mirror_ns->complete) {
         // if remote has new snapshots, we would sync from here
         m_local_snap_id_start = local_snap_id;
-        m_local_snap_id_end = CEPH_NOSNAP;
-        completed_non_primary_snapshots_exist = true;
+        ceph_assert(m_local_snap_id_end == CEPH_NOSNAP);
 
         if (mirror_ns->mirror_peer_uuids.empty()) {
           // no other peer will attempt to sync to this snapshot so store as
@@ -472,15 +470,6 @@ void Replayer<I>::scan_local_mirror_snapshots(
         }
       } else if (mirror_ns->last_copied_object_number == 0 &&
                  m_local_snap_id_start > 0) {
-        // shouldn't be possible, but ensure that pruning this snapshot
-        // wouldn't leave this image w/o any non-primary snapshots
-        if (!completed_non_primary_snapshots_exist) {
-          derr << "incomplete local non-primary snapshot" << dendl;
-          handle_replay_complete(locker, -EINVAL,
-                                 "incomplete local non-primary snapshot");
-          return;
-        }
-
         // snapshot might be missing image state, object-map, etc, so just
         // delete and re-create it if we haven't started copying data
         // objects. Also only prune this snapshot since we will need the
@@ -500,7 +489,7 @@ void Replayer<I>::scan_local_mirror_snapshots(
     } else if (mirror_ns->is_primary()) {
       if (mirror_ns->complete) {
         m_local_snap_id_start = local_snap_id;
-        m_local_snap_id_end = CEPH_NOSNAP;
+        ceph_assert(m_local_snap_id_end == CEPH_NOSNAP);
       } else {
         derr << "incomplete local primary snapshot" << dendl;
         handle_replay_complete(locker, -EINVAL,
@@ -516,7 +505,7 @@ void Replayer<I>::scan_local_mirror_snapshots(
   }
   image_locker.unlock();
 
-  if (m_local_snap_id_start > 0 && m_local_snap_id_end == CEPH_NOSNAP) {
+  if (m_local_snap_id_start > 0) {
     // remove candidate that is required for delta snapshot sync
     prune_snap_ids.erase(m_local_snap_id_start);
   }
index 52e64e762f5f1e6b1deb145dbe43747804783ebf..ca3e6918babc8cf0f89e852ff4c598584402f9fe 100644 (file)
@@ -96,8 +96,8 @@ BaseRequest* StateBuilder<I>::create_prepare_replay_request(
     bool* syncing,
     Context* on_finish) {
   return PrepareReplayRequest<I>::create(
-    local_mirror_uuid, this->remote_promotion_state, progress_ctx, this,
-    resync_requested, syncing, on_finish);
+    local_mirror_uuid, progress_ctx, this, resync_requested, syncing,
+    on_finish);
 }
 
 template <typename I>
index d3121d59dcf06f8b5c697a0a4b173c9a37676917..8311ea6915ec59350285ae1e58d18a9c9b924ea2 100644 (file)
@@ -20,7 +20,10 @@ LockPersonality=true
 MemoryDenyWriteExecute=true
 # Need NewPrivileges via `sudo smartctl`
 NoNewPrivileges=false
-PrivateDevices=yes
+# We need access to block devices to check the health of the disk backing the
+# monitor DB store. It can be set to `true` if you're not interested in that
+# feature.
+PrivateDevices=false
 ProtectControlGroups=true
 ProtectHome=true
 ProtectKernelModules=true